@cueframe/kernel 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (815) hide show
  1. package/LICENSE +661 -0
  2. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +0 -59
  3. package/dist/_members/account-model/testing/index.d.ts +0 -5
  4. package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +0 -24
  5. package/dist/_members/account-model/validators/contextFile.d.ts +0 -6
  6. package/dist/_members/account-model/validators/conversation.d.ts +0 -96
  7. package/dist/_members/account-model/validators/dashboardInsight.d.ts +0 -6
  8. package/dist/_members/account-model/validators/sessionToken.d.ts +0 -29
  9. package/dist/_members/account-model/validators/uploadToken.d.ts +0 -4
  10. package/dist/_members/account-model/validators/userSettings.d.ts +0 -4
  11. package/dist/_members/account-model/validators/workingComposition.d.ts +0 -7
  12. package/dist/_members/animate/animations/Create.d.ts +0 -19
  13. package/dist/_members/animate/animations/FadeIn.d.ts +0 -17
  14. package/dist/_members/animate/animations/GrowArrow.d.ts +0 -19
  15. package/dist/_members/animate/animations/GrowFromCenter.d.ts +0 -12
  16. package/dist/_members/animate/animations/Indicate.d.ts +0 -17
  17. package/dist/_members/animate/animations/MoveAlongPath.d.ts +0 -18
  18. package/dist/_members/animate/animations/Transform.d.ts +0 -28
  19. package/dist/_members/animate/animations/Wiggle.d.ts +0 -18
  20. package/dist/_members/animate/animations/Write.d.ts +0 -20
  21. package/dist/_members/animate/composition/AnimationGroup.d.ts +0 -21
  22. package/dist/_members/animate/composition/LaggedStart.d.ts +0 -22
  23. package/dist/_members/animate/composition/Succession.d.ts +0 -17
  24. package/dist/_members/animate/easing/rush.d.ts +0 -14
  25. package/dist/_members/animate/easing/smooth.d.ts +0 -7
  26. package/dist/_members/animate/easing/smootherstep.d.ts +0 -6
  27. package/dist/_members/animate/index.d.ts +0 -2
  28. package/dist/_members/animate/mobjects/Arrow.d.ts +0 -25
  29. package/dist/_members/animate/mobjects/BrandBox.d.ts +0 -25
  30. package/dist/_members/animate/mobjects/DiGraph.d.ts +0 -18
  31. package/dist/_members/animate/mobjects/Graph.d.ts +0 -38
  32. package/dist/_members/animate/three/ThreeCanvas.d.ts +0 -23
  33. package/dist/_members/animate/three/drei.d.ts +0 -7
  34. package/dist/_members/authoring/agent/buildTools.d.ts +0 -37
  35. package/dist/_members/authoring/agent/contextManagement.d.ts +0 -65
  36. package/dist/_members/authoring/agent/errors.d.ts +0 -9
  37. package/dist/_members/authoring/agent/memoryTool.d.ts +0 -2
  38. package/dist/_members/authoring/agent/promptCache.d.ts +0 -31
  39. package/dist/_members/authoring/agent.d.ts +0 -34
  40. package/dist/_members/authoring/capabilities.d.ts +0 -145
  41. package/dist/_members/authoring/composer/scopes.d.ts +0 -19
  42. package/dist/_members/authoring/context/brand.d.ts +0 -4
  43. package/dist/_members/authoring/context/brandTokens.d.ts +0 -4
  44. package/dist/_members/authoring/context/index.d.ts +0 -1
  45. package/dist/_members/authoring/context/timeline.d.ts +0 -15
  46. package/dist/_members/authoring/context/transcript.d.ts +0 -11
  47. package/dist/_members/authoring/context/types.d.ts +0 -4
  48. package/dist/_members/authoring/decomposer.d.ts +0 -12
  49. package/dist/_members/authoring/evaluate.d.ts +0 -26
  50. package/dist/_members/authoring/evaluator.d.ts +0 -16
  51. package/dist/_members/authoring/models/modelFactory.d.ts +0 -77
  52. package/dist/_members/authoring/motion/applyMotionPreset.d.ts +0 -12
  53. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +0 -7
  54. package/dist/_members/authoring/motion/shell.d.ts +0 -20
  55. package/dist/_members/authoring/pipelineTrace.d.ts +0 -19
  56. package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +0 -4
  57. package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -16
  58. package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +0 -4
  59. package/dist/_members/authoring/prompts/graphics.d.ts +0 -5
  60. package/dist/_members/authoring/prompts/plannerPrompt.d.ts +0 -30
  61. package/dist/_members/authoring/providers/resourceApi.d.ts +1 -20
  62. package/dist/_members/authoring/resource-routing.d.ts +0 -121
  63. package/dist/_members/authoring/resources.d.ts +0 -34
  64. package/dist/_members/authoring/scope.d.ts +0 -24
  65. package/dist/_members/authoring/tools/brandTokens.d.ts +0 -22
  66. package/dist/_members/authoring/tools/composeRoleTools.d.ts +0 -79
  67. package/dist/_members/authoring/tools/index.d.ts +0 -1
  68. package/dist/_members/authoring/tools/toolSets.d.ts +0 -50
  69. package/dist/_members/authoring/transpileComponent.d.ts +0 -34
  70. package/dist/_members/authoring/transpileHelper.d.ts +0 -18
  71. package/dist/_members/authoring/types.d.ts +0 -149
  72. package/dist/_members/brand-derivation/constants.d.ts +0 -17
  73. package/dist/_members/brand-derivation/contrastSafe.d.ts +0 -23
  74. package/dist/_members/cloud-import/CloudImportService.d.ts +0 -15
  75. package/dist/_members/cloud-import/ImportProvider.d.ts +0 -45
  76. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -9
  77. package/dist/_members/cloud-import/cloudConfig.d.ts +0 -15
  78. package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
  79. package/dist/_members/compose/primitiveRegistry.d.ts +0 -64
  80. package/dist/_members/compose/sceneToRenderInput.d.ts +0 -26
  81. package/dist/_members/compose/schema.d.ts +0 -15
  82. package/dist/_members/compose/tokenResolver.d.ts +0 -11
  83. package/dist/_members/composition/audio/audioMix.d.ts +0 -34
  84. package/dist/_members/composition/audio/mixStaging.d.ts +0 -81
  85. package/dist/_members/composition/audio/musicPack.d.ts +0 -35
  86. package/dist/_members/composition/audio/musicPack.generated.d.ts +0 -6
  87. package/dist/_members/composition/audio/pack.d.ts +0 -43
  88. package/dist/_members/composition/audio/pack.generated.d.ts +0 -6
  89. package/dist/_members/composition/audio/palette.d.ts +0 -36
  90. package/dist/_members/composition/autozoom/index.d.ts +0 -32
  91. package/dist/_members/composition/brand-kit.d.ts +0 -8
  92. package/dist/_members/composition/brief/contract.d.ts +0 -90
  93. package/dist/_members/composition/color-grade.d.ts +0 -11
  94. package/dist/_members/composition/depth.d.ts +0 -19
  95. package/dist/_members/composition/fixtures/agentErrored.d.ts +0 -23
  96. package/dist/_members/composition/fonts.d.ts +0 -62
  97. package/dist/_members/composition/graphics-plan/compile.d.ts +0 -29
  98. package/dist/_members/composition/graphics-plan/index.d.ts +0 -5
  99. package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +0 -17
  100. package/dist/_members/composition/graphics-plan/motion.d.ts +0 -17
  101. package/dist/_members/composition/graphics-plan/schemas.d.ts +0 -171
  102. package/dist/_members/composition/graphics-plan/solve.d.ts +0 -19
  103. package/dist/_members/composition/invariants/clipPlacement.d.ts +0 -59
  104. package/dist/_members/composition/invariants/composition.d.ts +0 -5
  105. package/dist/_members/composition/invariants/etag.d.ts +0 -7
  106. package/dist/_members/composition/invariants/ids.d.ts +0 -6
  107. package/dist/_members/composition/invariants/keyframes.d.ts +0 -19
  108. package/dist/_members/composition/invariants/markers.d.ts +0 -6
  109. package/dist/_members/composition/invariants/time.d.ts +0 -8
  110. package/dist/_members/composition/invariants/tracks.d.ts +0 -48
  111. package/dist/_members/composition/ops/compositionOps.d.ts +5 -71
  112. package/dist/_members/composition/ops/compositionOps.shared.d.ts +30 -0
  113. package/dist/_members/composition/ops/headlessStore.d.ts +0 -24
  114. package/dist/_members/composition/ops/selectors.d.ts +0 -66
  115. package/dist/_members/composition/ops/timeline-word.d.ts +0 -5
  116. package/dist/_members/composition/ops/transcript.d.ts +0 -27
  117. package/dist/_members/composition/ops/types.d.ts +0 -51
  118. package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +0 -32
  119. package/dist/_members/composition/primitive-catalog/disabled.d.ts +0 -1
  120. package/dist/_members/composition/primitive-catalog/index.d.ts +0 -11
  121. package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +0 -50
  122. package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -39
  123. package/dist/_members/composition/primitive-catalog/types.d.ts +0 -78
  124. package/dist/_members/composition/projection/behind-placement.d.ts +0 -40
  125. package/dist/_members/composition/projection/behind-readiness.d.ts +52 -0
  126. package/dist/_members/composition/projection/brandKit.d.ts +0 -142
  127. package/dist/_members/composition/projection/cardTokens.d.ts +0 -65
  128. package/dist/_members/composition/projection/composition-floor.d.ts +0 -179
  129. package/dist/_members/composition/projection/cropProjection.d.ts +0 -75
  130. package/dist/_members/composition/projection/index.d.ts +2 -0
  131. package/dist/_members/composition/projection/occlusion-budget.d.ts +0 -37
  132. package/dist/_members/composition/projection/reframe-readiness.d.ts +49 -0
  133. package/dist/_members/composition/projection/safe-zones.d.ts +0 -29
  134. package/dist/_members/composition/reframe/aspectLoss.d.ts +12 -35
  135. package/dist/_members/composition/reframe/coverage.d.ts +0 -40
  136. package/dist/_members/composition/reframe/derive.d.ts +0 -21
  137. package/dist/_members/composition/reframe/index.d.ts +0 -60
  138. package/dist/_members/composition/reframe/kenBurns.d.ts +0 -37
  139. package/dist/_members/composition/reframe/shotScale.d.ts +0 -75
  140. package/dist/_members/composition/reframe/trajectory.d.ts +0 -65
  141. package/dist/_members/composition/timeline/compound.d.ts +0 -31
  142. package/dist/_members/composition/timeline/intent.d.ts +0 -29
  143. package/dist/_members/composition/timeline/keyframes.d.ts +0 -43
  144. package/dist/_members/composition/timeline/link.d.ts +0 -27
  145. package/dist/_members/composition/timeline/occupancy.d.ts +1 -42
  146. package/dist/_members/composition/timeline/placement.d.ts +5 -52
  147. package/dist/_members/composition/timeline/plan.d.ts +5 -53
  148. package/dist/_members/composition/timeline/resolve.d.ts +0 -36
  149. package/dist/_members/composition/timeline/trims.d.ts +0 -49
  150. package/dist/_members/composition/validators/brandKit.d.ts +0 -29
  151. package/dist/_members/composition/validators/composePlan.d.ts +0 -39
  152. package/dist/_members/composition/validators/composition.d.ts +63 -529
  153. package/dist/_members/composition/validators/graphicKinds.d.ts +0 -28
  154. package/dist/_members/composition/validators/render.d.ts +55 -23
  155. package/dist/_members/composition-ops/alphaLayers.d.ts +0 -56
  156. package/dist/_members/composition-ops/index.d.ts +27 -148
  157. package/dist/_members/composition-ops/materializeGrid.d.ts +0 -28
  158. package/dist/_members/composition-ops/opRecorder.d.ts +0 -34
  159. package/dist/_members/composition-ops/recordingStore.d.ts +0 -16
  160. package/dist/_members/composition-ops/replaceRegion.d.ts +0 -48
  161. package/dist/_members/composition-ops/testFixtures.d.ts +0 -14
  162. package/dist/_members/convex-api/api.d.ts +0 -3
  163. package/dist/_members/convex-api/dataModel.d.ts +0 -2
  164. package/dist/_members/core/index.d.ts +1 -1
  165. package/dist/_members/core/render/bookends.d.ts +0 -44
  166. package/dist/_members/core/render/captions.d.ts +0 -42
  167. package/dist/_members/core/render/compositionRender.d.ts +2 -165
  168. package/dist/_members/core/render/deriveTrajectory.d.ts +0 -140
  169. package/dist/_members/core/render/emphasis.d.ts +0 -6
  170. package/dist/_members/core/render/eval/cropBox.d.ts +0 -69
  171. package/dist/_members/core/render/eval/inclusion.d.ts +0 -39
  172. package/dist/_members/core/render/eval/index.d.ts +0 -58
  173. package/dist/_members/core/render/eval/metrics.d.ts +0 -36
  174. package/dist/_members/core/render/exportSettings.d.ts +4 -12
  175. package/dist/_members/core/render/index.d.ts +1 -1
  176. package/dist/_members/core/render/mapFaceToPerson.d.ts +0 -27
  177. package/dist/_members/core/render/types.d.ts +4 -156
  178. package/dist/_members/core/render/variantKeys.d.ts +1 -0
  179. package/dist/_members/core/render/vcam/cameraPath.d.ts +0 -44
  180. package/dist/_members/core/render/vcam/constants.d.ts +0 -93
  181. package/dist/_members/core/render/vcam/errorCodes.d.ts +0 -28
  182. package/dist/_members/core/render/vcam/framing.d.ts +0 -76
  183. package/dist/_members/core/render/vcam/requiredRegion.d.ts +0 -71
  184. package/dist/_members/core/render/vcam/shots.d.ts +0 -40
  185. package/dist/_members/core/render/vcam/subjectSet.d.ts +0 -85
  186. package/dist/_members/core/select/errorCodes.d.ts +0 -25
  187. package/dist/_members/core/select/index.d.ts +0 -20
  188. package/dist/_members/core/select/model.d.ts +0 -79
  189. package/dist/_members/core/select/select.d.ts +0 -49
  190. package/dist/_members/core/select/stabilize.d.ts +0 -102
  191. package/dist/_members/core/types.d.ts +0 -1
  192. package/dist/_members/director/ai-sdk/chunks.d.ts +14 -0
  193. package/dist/_members/director/ai-sdk/context.d.ts +6 -0
  194. package/dist/_members/director/ai-sdk/generationTool.d.ts +8 -0
  195. package/dist/_members/director/ai-sdk/index.d.ts +4 -0
  196. package/dist/_members/director/ai-sdk/messages.d.ts +292 -0
  197. package/dist/_members/director/domain/chat.d.ts +357 -0
  198. package/dist/_members/director/domain/generation.d.ts +1 -0
  199. package/dist/_members/director/domain/index.d.ts +3 -0
  200. package/dist/_members/director/domain/ports.d.ts +32 -0
  201. package/dist/_members/director/index.d.ts +2 -0
  202. package/dist/_members/director/testing/contract.d.ts +52 -0
  203. package/dist/_members/director/testing/index.d.ts +1 -0
  204. package/dist/_members/errors/registry.d.ts +0 -32
  205. package/dist/_members/foundation/codes/index.d.ts +0 -21
  206. package/dist/_members/mcp/adapter.d.ts +1 -84
  207. package/dist/_members/mcp/burnedNames.d.ts +0 -16
  208. package/dist/_members/mcp/core.d.ts +1 -81
  209. package/dist/_members/mcp/curation.d.ts +0 -112
  210. package/dist/_members/mcp/executor.d.ts +0 -49
  211. package/dist/_members/mcp/format.d.ts +0 -6
  212. package/dist/_members/mcp/generated/catalogPreviews.d.ts +0 -1
  213. package/dist/_members/mcp/generated/operations.d.ts +0 -23
  214. package/dist/_members/mcp/internalLoopTools.d.ts +0 -23
  215. package/dist/_members/mcp/prompts.d.ts +0 -16
  216. package/dist/_members/mcp/resources.d.ts +0 -13
  217. package/dist/_members/mcp/server.d.ts +0 -61
  218. package/dist/_members/mcp/wait.d.ts +0 -22
  219. package/dist/_members/mcp/x402Meta.d.ts +0 -44
  220. package/dist/_members/media-model/generation.d.ts +314 -0
  221. package/dist/_members/media-model/index.d.ts +1 -0
  222. package/dist/_members/media-model/media-kind.d.ts +0 -27
  223. package/dist/_members/media-model/transcriptSearch.d.ts +0 -42
  224. package/dist/_members/nle-export/fcpxml.d.ts +0 -13
  225. package/dist/_members/nle-export/index.d.ts +0 -6
  226. package/dist/_members/nle-export/types.d.ts +0 -26
  227. package/dist/_members/nle-export/xml/index.d.ts +0 -8
  228. package/dist/_members/nle-export/xml-utils.d.ts +0 -12
  229. package/dist/_members/perception/activeSpeaker.d.ts +0 -94
  230. package/dist/_members/perception/audioQuality.d.ts +0 -64
  231. package/dist/_members/perception/energyBeat.d.ts +0 -81
  232. package/dist/_members/perception/identityMatch.d.ts +0 -66
  233. package/dist/_members/perception/index.d.ts +0 -52
  234. package/dist/_members/perception/visualQuality.d.ts +0 -73
  235. package/dist/_members/plane/conformance.d.ts +0 -59
  236. package/dist/_members/plane/contract.d.ts +0 -29
  237. package/dist/_members/plane/index.d.ts +0 -15
  238. package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +0 -13
  239. package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +0 -14
  240. package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +0 -14
  241. package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +0 -8
  242. package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +0 -8
  243. package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +0 -8
  244. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +0 -8
  245. package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +0 -8
  246. package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +0 -17
  247. package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +0 -14
  248. package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +0 -18
  249. package/dist/_members/primitives/captions/Captions.d.ts +0 -24
  250. package/dist/_members/primitives/captions/index.d.ts +0 -15
  251. package/dist/_members/primitives/captions/paginate.d.ts +0 -21
  252. package/dist/_members/primitives/captions/placement.d.ts +0 -30
  253. package/dist/_members/primitives/effects/blur/index.d.ts +0 -16
  254. package/dist/_members/primitives/effects/color-grade/index.d.ts +0 -20
  255. package/dist/_members/primitives/effects/grain/index.d.ts +0 -12
  256. package/dist/_members/primitives/effects/parallax/index.d.ts +0 -13
  257. package/dist/_members/primitives/effects/particles/index.d.ts +0 -16
  258. package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +0 -10
  259. package/dist/_members/primitives/effects/spotlight-card/index.d.ts +0 -8
  260. package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +0 -10
  261. package/dist/_members/primitives/effects/success-confetti/index.d.ts +0 -8
  262. package/dist/_members/primitives/effects/vignette/index.d.ts +0 -12
  263. package/dist/_members/primitives/hero-text/HeroText.d.ts +0 -17
  264. package/dist/_members/primitives/hero-text/config.d.ts +0 -10
  265. package/dist/_members/primitives/hero-text/index.d.ts +0 -14
  266. package/dist/_members/primitives/index.d.ts +0 -8
  267. package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +0 -8
  268. package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +0 -8
  269. package/dist/_members/primitives/layouts/letterbox/index.d.ts +0 -15
  270. package/dist/_members/primitives/layouts/photo-grid/index.d.ts +0 -17
  271. package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +0 -21
  272. package/dist/_members/primitives/layouts/split-screen/index.d.ts +0 -15
  273. package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +0 -8
  274. package/dist/_members/primitives/lib/easings.d.ts +0 -27
  275. package/dist/_members/primitives/lib/palette.d.ts +0 -22
  276. package/dist/_members/primitives/lib/preview.d.ts +0 -22
  277. package/dist/_members/primitives/lib/schema.d.ts +0 -36
  278. package/dist/_members/primitives/lib/seeded-random.d.ts +0 -23
  279. package/dist/_members/primitives/lib/text/contrast.d.ts +0 -17
  280. package/dist/_members/primitives/lib/text/fill.d.ts +0 -5
  281. package/dist/_members/primitives/lib/text/fitText.d.ts +0 -37
  282. package/dist/_members/primitives/lib/text/marker.d.ts +0 -10
  283. package/dist/_members/primitives/lib/text/motion.d.ts +0 -46
  284. package/dist/_members/primitives/lib/text/recolor.d.ts +0 -11
  285. package/dist/_members/primitives/lib/text/spec.d.ts +0 -39
  286. package/dist/_members/primitives/lib/text/stage.d.ts +0 -17
  287. package/dist/_members/primitives/lib/text/typeface.d.ts +0 -11
  288. package/dist/_members/primitives/lib/tokens.d.ts +0 -87
  289. package/dist/_members/primitives/lib/types.d.ts +0 -141
  290. package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +0 -12
  291. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +0 -8
  292. package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +0 -8
  293. package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +0 -8
  294. package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +0 -8
  295. package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +0 -8
  296. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +0 -8
  297. package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +0 -38
  298. package/dist/_members/primitives/subject-foreground/index.d.ts +0 -21
  299. package/dist/_members/primitives/text/blur-reveal/index.d.ts +0 -9
  300. package/dist/_members/primitives/text/cinematic-title/index.d.ts +0 -14
  301. package/dist/_members/primitives/text/inline-highlight/index.d.ts +0 -11
  302. package/dist/_members/primitives/text/karaoke/index.d.ts +0 -13
  303. package/dist/_members/primitives/text/kinetic-type/index.d.ts +0 -15
  304. package/dist/_members/primitives/text/lower-third/index.d.ts +0 -14
  305. package/dist/_members/primitives/text/marker-highlight/index.d.ts +0 -10
  306. package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +0 -8
  307. package/dist/_members/primitives/text/matrix-decode/index.d.ts +0 -9
  308. package/dist/_members/primitives/text/quote-card/index.d.ts +0 -9
  309. package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +0 -13
  310. package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +0 -10
  311. package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +0 -8
  312. package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +0 -12
  313. package/dist/_members/primitives/text/stat-counter/index.d.ts +0 -13
  314. package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +0 -9
  315. package/dist/_members/primitives/text/text-effect/index.d.ts +0 -17
  316. package/dist/_members/primitives/text/text-fade-replace/index.d.ts +0 -8
  317. package/dist/_members/primitives/text/token-stream/index.d.ts +0 -11
  318. package/dist/_members/primitives/text/tracking-in/index.d.ts +0 -8
  319. package/dist/_members/primitives/text/typewriter/index.d.ts +0 -12
  320. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +0 -11
  321. package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +0 -8
  322. package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +0 -10
  323. package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +0 -10
  324. package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +0 -3
  325. package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +0 -14
  326. package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +0 -3
  327. package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +0 -12
  328. package/dist/_members/primitives/transitions/light-leak/index.d.ts +0 -3
  329. package/dist/_members/primitives/transitions/luma-matte/index.d.ts +0 -2
  330. package/dist/_members/primitives/transitions/morph/index.d.ts +0 -2
  331. package/dist/_members/primitives/transitions/spatial-push/index.d.ts +0 -10
  332. package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +0 -13
  333. package/dist/_members/primitives/transitions/zoom-through/index.d.ts +0 -2
  334. package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +0 -9
  335. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +0 -8
  336. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +0 -8
  337. package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +0 -11
  338. package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +0 -11
  339. package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +0 -11
  340. package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +0 -8
  341. package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +0 -8
  342. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +0 -18
  343. package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +0 -10
  344. package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +0 -8
  345. package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +0 -11
  346. package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +0 -11
  347. package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +0 -8
  348. package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +0 -9
  349. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +0 -8
  350. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +0 -8
  351. package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +0 -11
  352. package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +0 -8
  353. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +0 -8
  354. package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +0 -12
  355. package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +0 -8
  356. package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +0 -8
  357. package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +0 -8
  358. package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +0 -10
  359. package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +0 -8
  360. package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +0 -19
  361. package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +0 -8
  362. package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +0 -8
  363. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +0 -8
  364. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +0 -8
  365. package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +0 -11
  366. package/dist/_members/primitives/workspace.d.ts +0 -29
  367. package/dist/_members/render-harness/browserOptions.d.ts +11 -0
  368. package/dist/_members/render-harness/browserOptions.d.ts.map +1 -0
  369. package/dist/_members/render-harness/cardRender.d.ts +0 -40
  370. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  371. package/dist/_members/render-harness/contractRender.d.ts +0 -16
  372. package/dist/_members/render-harness/contractRender.d.ts.map +1 -1
  373. package/dist/_members/render-harness/extractSegments.d.ts +0 -37
  374. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  375. package/dist/_members/render-harness/index.d.ts +0 -12
  376. package/dist/_members/render-harness/index.d.ts.map +1 -1
  377. package/dist/_members/render-harness/localRender.d.ts +1 -110
  378. package/dist/_members/render-harness/localRender.d.ts.map +1 -1
  379. package/dist/_members/render-harness/materializeSources.d.ts +0 -22
  380. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  381. package/dist/_members/render-harness/mediaServer.d.ts +0 -16
  382. package/dist/_members/render-harness/mediaServer.d.ts.map +1 -1
  383. package/dist/_members/render-harness/renderInputAssets.d.ts +0 -45
  384. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  385. package/dist/_members/render-harness/resolveAssets.d.ts +0 -24
  386. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  387. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -14
  388. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -1
  389. package/dist/account-model/validators.js +1 -1
  390. package/dist/account-model.js +1 -1
  391. package/dist/animate.js +0 -15
  392. package/dist/authoring/build-tools.js +8 -8
  393. package/dist/authoring/composer.js +0 -20
  394. package/dist/authoring/context.js +6 -6
  395. package/dist/authoring/pipelineTrace.js +1 -1
  396. package/dist/authoring/prompts.js +1 -1
  397. package/dist/authoring/resource-routing.js +1 -1
  398. package/dist/authoring/resources.js +1 -1
  399. package/dist/authoring/tools.js +7 -7
  400. package/dist/authoring.js +16 -80
  401. package/dist/{chunk-TWQOKKAF.js → chunk-23HFEKV7.js} +0 -6
  402. package/dist/{chunk-EA6MYCYW.js → chunk-2B5VJZHL.js} +14 -25
  403. package/dist/chunk-73DQTUWY.js +131 -0
  404. package/dist/{chunk-HI4UTTPS.js → chunk-AO744WIK.js} +1 -43
  405. package/dist/chunk-BADZHXLR.js +0 -0
  406. package/dist/{chunk-GA23TRNR.js → chunk-BKHGL4MB.js} +5 -13
  407. package/dist/{chunk-VOO5FQSS.js → chunk-BZZTVOGG.js} +6 -55
  408. package/dist/{chunk-ODL7GQJG.js → chunk-CAJQ7H5A.js} +17 -17
  409. package/dist/{chunk-ZB3C3HM7.js → chunk-DCVJWGIA.js} +4 -9
  410. package/dist/{chunk-IBYQG46O.js → chunk-DWLNPNC4.js} +1 -4
  411. package/dist/{chunk-SW336CJP.js → chunk-DYZE7JZA.js} +3 -26
  412. package/dist/{chunk-HCCBDJLW.js → chunk-EP2Y6M2J.js} +0 -4
  413. package/dist/{chunk-ZE76SSRT.js → chunk-FMODQD5P.js} +0 -6
  414. package/dist/chunk-FTVZF4GO.js +0 -0
  415. package/dist/{chunk-PMY24FUD.js → chunk-G5BFI32U.js} +1 -1
  416. package/dist/{chunk-LD5ZOUFT.js → chunk-GF52TW4I.js} +0 -4
  417. package/dist/{chunk-ABL557OT.js → chunk-GMD33ZD7.js} +1 -8
  418. package/dist/{chunk-XWKZB5U5.js → chunk-ICSZF37W.js} +21 -150
  419. package/dist/chunk-IEXAKOEX.js +113 -0
  420. package/dist/{chunk-UY4SWJVE.js → chunk-K2IUBCND.js} +0 -12
  421. package/dist/chunk-LJ5W4ZBU.js +146 -0
  422. package/dist/chunk-LLUW26BS.js +255 -0
  423. package/dist/{chunk-GEA7E2FL.js → chunk-PIURX6IZ.js} +220 -2
  424. package/dist/{chunk-MMEJ3Y7E.js → chunk-QETYXKQQ.js} +1 -10
  425. package/dist/{chunk-YX2GSJK7.js → chunk-RP4SXXLJ.js} +1 -1
  426. package/dist/{chunk-P727GZVO.js → chunk-SAMQUUO5.js} +3 -5
  427. package/dist/{chunk-RF7U3SCL.js → chunk-TD347SSX.js} +3 -11
  428. package/dist/{chunk-NFEGPWGS.js → chunk-TFGKUWHY.js} +1 -88
  429. package/dist/{chunk-LM4WDUQJ.js → chunk-TPA6PYN2.js} +1 -11
  430. package/dist/{chunk-OLFOPQCA.js → chunk-UQSOS726.js} +4 -18
  431. package/dist/{chunk-GBRNYH7W.js → chunk-V24L35GM.js} +0 -11
  432. package/dist/{chunk-COYMZ76S.js → chunk-VFMW3JUY.js} +1 -1
  433. package/dist/{chunk-YIOY2XEO.js → chunk-VHF66LCQ.js} +22 -94
  434. package/dist/{chunk-JMURQODM.js → chunk-VZ7TYX6Z.js} +0 -1
  435. package/dist/{chunk-SIGGQRY2.js → chunk-W3SIWT7J.js} +5030 -4412
  436. package/dist/{chunk-W35ZMOXB.js → chunk-WPZKOVYF.js} +0 -5
  437. package/dist/chunk-WZH57M53.js +494 -0
  438. package/dist/{chunk-AYVJXDLB.js → chunk-XHGZ2E77.js} +0 -2
  439. package/dist/{chunk-JRQVPFLF.js → chunk-XQ72DZKJ.js} +1 -1
  440. package/dist/{chunk-7DHP4ESU.js → chunk-YLDMAZZE.js} +0 -10
  441. package/dist/{chunk-FYZVH3MC.js → chunk-YQ7FFW3G.js} +0 -11
  442. package/dist/chunk-ZPLJ24OV.js +93 -0
  443. package/dist/cloud-import/multipart.js +1 -1
  444. package/dist/cloud-import.js +9 -16
  445. package/dist/compose/renderer.js +18 -18
  446. package/dist/compose.js +21 -21
  447. package/dist/composition/audio.js +1 -1
  448. package/dist/composition/brand-kit.js +0 -5
  449. package/dist/composition/graphics-plan.js +4 -4
  450. package/dist/composition/ops.js +5 -5
  451. package/dist/composition/primitive-catalog.js +1 -1
  452. package/dist/composition/projection.js +28 -4
  453. package/dist/composition/reframe/kenBurns.js +0 -4
  454. package/dist/composition/reframe.js +4 -2
  455. package/dist/composition/timeline.js +1 -1
  456. package/dist/composition/validators/graphic-kinds.js +1 -1
  457. package/dist/composition/validators.js +8 -6
  458. package/dist/composition-ops.js +18 -135
  459. package/dist/composition.js +35 -9
  460. package/dist/context-JLLU3MYD.js +14 -0
  461. package/dist/core/render.js +9 -7
  462. package/dist/core/select.js +2 -6
  463. package/dist/core.js +5 -7
  464. package/dist/director/ai-sdk.d.ts +1 -0
  465. package/dist/director/ai-sdk.js +33 -0
  466. package/dist/director/domain.d.ts +1 -0
  467. package/dist/director/domain.js +62 -0
  468. package/dist/director/testing.d.ts +1 -0
  469. package/dist/director/testing.js +22 -0
  470. package/dist/director.d.ts +1 -0
  471. package/dist/director.js +86 -0
  472. package/dist/errors.js +1 -1
  473. package/dist/foundation.js +1 -0
  474. package/dist/mcp/adapter.js +5 -64
  475. package/dist/mcp/core.js +1 -1
  476. package/dist/mcp/curation.js +1 -1
  477. package/dist/mcp/server.js +4 -4
  478. package/dist/mcp.js +4 -4
  479. package/dist/media-model/generation.d.ts +1 -0
  480. package/dist/media-model/generation.js +40 -0
  481. package/dist/media-model/testing.js +1071 -718
  482. package/dist/media-model.js +38 -6
  483. package/dist/nle-export/server.js +328 -130
  484. package/dist/nle-export.js +22 -21
  485. package/dist/plane/contract.js +0 -3
  486. package/dist/primitives/backgrounds.js +2 -2
  487. package/dist/primitives/captions.js +0 -5
  488. package/dist/primitives/effects.js +2 -2
  489. package/dist/primitives/hero-text.js +2 -2
  490. package/dist/primitives/layouts.js +2 -2
  491. package/dist/primitives/lib/index.js +17 -17
  492. package/dist/primitives/lib/text/fitText.js +1 -1
  493. package/dist/primitives/lib/tokens.js +1 -1
  494. package/dist/primitives/lib.js +17 -17
  495. package/dist/primitives/scenes.js +2 -2
  496. package/dist/primitives/text.js +2 -2
  497. package/dist/primitives/ui-blocks.js +4 -4
  498. package/dist/primitives.js +21 -21
  499. package/dist/render-harness/sandboxGlobalSpecs.js +1 -1
  500. package/dist/render-harness.js +24 -41
  501. package/package.json +39 -24
  502. package/dist/_members/account-model/index.js +0 -4
  503. package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
  504. package/dist/_members/account-model/testing/index.js +0 -7
  505. package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
  506. package/dist/_members/account-model/types/index.js +0 -1
  507. package/dist/_members/account-model/validators/contextFile.js +0 -18
  508. package/dist/_members/account-model/validators/conversation.js +0 -95
  509. package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
  510. package/dist/_members/account-model/validators/index.js +0 -7
  511. package/dist/_members/account-model/validators/sessionToken.js +0 -49
  512. package/dist/_members/account-model/validators/uploadToken.js +0 -16
  513. package/dist/_members/account-model/validators/userSettings.js +0 -12
  514. package/dist/_members/account-model/validators/workingComposition.js +0 -20
  515. package/dist/_members/brand-derivation/constants.js +0 -20
  516. package/dist/_members/brand-derivation/contrastSafe.js +0 -114
  517. package/dist/_members/brand-derivation/index.js +0 -1
  518. package/dist/_members/cloud-import/chunk-XKO6ZSWI.js +0 -162
  519. package/dist/_members/cloud-import/chunk-XKO6ZSWI.js.map +0 -1
  520. package/dist/_members/cloud-import/index.js +0 -241
  521. package/dist/_members/cloud-import/index.js.map +0 -1
  522. package/dist/_members/cloud-import/multipartUpload.js +0 -7
  523. package/dist/_members/cloud-import/multipartUpload.js.map +0 -1
  524. package/dist/_members/composition/audio/audioMix.js +0 -61
  525. package/dist/_members/composition/audio/index.js +0 -5
  526. package/dist/_members/composition/audio/mixStaging.js +0 -195
  527. package/dist/_members/composition/audio/musicPack.generated.js +0 -136
  528. package/dist/_members/composition/audio/musicPack.js +0 -36
  529. package/dist/_members/composition/audio/pack.generated.js +0 -603
  530. package/dist/_members/composition/audio/pack.js +0 -48
  531. package/dist/_members/composition/audio/palette.js +0 -134
  532. package/dist/_members/composition/autozoom/index.js +0 -83
  533. package/dist/_members/composition/brand-kit.js +0 -45
  534. package/dist/_members/composition/brief/contract.js +0 -209
  535. package/dist/_members/composition/color-grade.js +0 -80
  536. package/dist/_members/composition/depth.js +0 -8
  537. package/dist/_members/composition/fixtures/index.js +0 -143
  538. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
  539. package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
  540. package/dist/_members/composition/fonts.js +0 -162
  541. package/dist/_members/composition/graphics-plan/compile.js +0 -221
  542. package/dist/_members/composition/graphics-plan/index.js +0 -10
  543. package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
  544. package/dist/_members/composition/graphics-plan/motion.js +0 -66
  545. package/dist/_members/composition/graphics-plan/schemas.js +0 -261
  546. package/dist/_members/composition/graphics-plan/solve.js +0 -145
  547. package/dist/_members/composition/index.js +0 -5
  548. package/dist/_members/composition/invariants/clipPlacement.js +0 -69
  549. package/dist/_members/composition/invariants/composition.js +0 -28
  550. package/dist/_members/composition/invariants/errors.js +0 -10
  551. package/dist/_members/composition/invariants/etag.js +0 -38
  552. package/dist/_members/composition/invariants/ids.js +0 -33
  553. package/dist/_members/composition/invariants/index.js +0 -9
  554. package/dist/_members/composition/invariants/keyframes.js +0 -45
  555. package/dist/_members/composition/invariants/markers.js +0 -29
  556. package/dist/_members/composition/invariants/time.js +0 -20
  557. package/dist/_members/composition/invariants/tracks.js +0 -304
  558. package/dist/_members/composition/ops/compositionOps.js +0 -1056
  559. package/dist/_members/composition/ops/headlessStore.js +0 -94
  560. package/dist/_members/composition/ops/index.js +0 -4
  561. package/dist/_members/composition/ops/selectors.js +0 -118
  562. package/dist/_members/composition/ops/timeline-word.js +0 -1
  563. package/dist/_members/composition/ops/transcript.js +0 -77
  564. package/dist/_members/composition/ops/types.js +0 -16
  565. package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
  566. package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
  567. package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
  568. package/dist/_members/composition/primitive-catalog/index.js +0 -46
  569. package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
  570. package/dist/_members/composition/primitive-catalog/projection.js +0 -164
  571. package/dist/_members/composition/primitive-catalog/types.js +0 -14
  572. package/dist/_members/composition/projection/behind-placement.js +0 -62
  573. package/dist/_members/composition/projection/brandKit.js +0 -482
  574. package/dist/_members/composition/projection/cardTokens.js +0 -209
  575. package/dist/_members/composition/projection/composition-floor.js +0 -582
  576. package/dist/_members/composition/projection/cropProjection.js +0 -257
  577. package/dist/_members/composition/projection/index.js +0 -7
  578. package/dist/_members/composition/projection/occlusion-budget.js +0 -104
  579. package/dist/_members/composition/projection/safe-zones.js +0 -99
  580. package/dist/_members/composition/reframe/aspectLoss.js +0 -115
  581. package/dist/_members/composition/reframe/coverage.js +0 -62
  582. package/dist/_members/composition/reframe/derive.js +0 -73
  583. package/dist/_members/composition/reframe/index.js +0 -109
  584. package/dist/_members/composition/reframe/kenBurns.js +0 -64
  585. package/dist/_members/composition/reframe/shotScale.js +0 -176
  586. package/dist/_members/composition/reframe/trajectory.js +0 -124
  587. package/dist/_members/composition/timeline/compound.js +0 -134
  588. package/dist/_members/composition/timeline/index.js +0 -9
  589. package/dist/_members/composition/timeline/intent.js +0 -228
  590. package/dist/_members/composition/timeline/keyframes.js +0 -121
  591. package/dist/_members/composition/timeline/link.js +0 -59
  592. package/dist/_members/composition/timeline/occupancy.js +0 -36
  593. package/dist/_members/composition/timeline/placement.js +0 -74
  594. package/dist/_members/composition/timeline/plan.js +0 -31
  595. package/dist/_members/composition/timeline/resolve.js +0 -170
  596. package/dist/_members/composition/timeline/trims.js +0 -278
  597. package/dist/_members/composition/types/index.js +0 -1
  598. package/dist/_members/composition/validators/brandKit.js +0 -295
  599. package/dist/_members/composition/validators/composePlan.js +0 -113
  600. package/dist/_members/composition/validators/composition.js +0 -703
  601. package/dist/_members/composition/validators/font.js +0 -34
  602. package/dist/_members/composition/validators/graphicKinds.js +0 -30
  603. package/dist/_members/composition/validators/index.js +0 -9
  604. package/dist/_members/composition/validators/project.js +0 -29
  605. package/dist/_members/composition/validators/registry.js +0 -41
  606. package/dist/_members/composition/validators/render.js +0 -139
  607. package/dist/_members/composition/validators/session.js +0 -37
  608. package/dist/_members/composition/validators/webhook.js +0 -72
  609. package/dist/_members/composition-ops/alphaLayers.js +0 -141
  610. package/dist/_members/composition-ops/index.js +0 -637
  611. package/dist/_members/composition-ops/materializeGrid.js +0 -99
  612. package/dist/_members/composition-ops/opRecorder.js +0 -196
  613. package/dist/_members/composition-ops/recordingStore.js +0 -14
  614. package/dist/_members/composition-ops/replaceRegion.js +0 -102
  615. package/dist/_members/composition-ops/testFixtures.js +0 -19
  616. package/dist/_members/core/index.js +0 -5
  617. package/dist/_members/core/render/bookends.js +0 -53
  618. package/dist/_members/core/render/captions.js +0 -127
  619. package/dist/_members/core/render/compositionRender.js +0 -1249
  620. package/dist/_members/core/render/deriveTrajectory.js +0 -889
  621. package/dist/_members/core/render/emphasis.js +0 -16
  622. package/dist/_members/core/render/eval/cropBox.js +0 -139
  623. package/dist/_members/core/render/eval/inclusion.js +0 -96
  624. package/dist/_members/core/render/eval/index.js +0 -146
  625. package/dist/_members/core/render/eval/metrics.js +0 -94
  626. package/dist/_members/core/render/exportSettings.js +0 -65
  627. package/dist/_members/core/render/index.js +0 -20
  628. package/dist/_members/core/render/mapFaceToPerson.js +0 -73
  629. package/dist/_members/core/render/types.js +0 -8
  630. package/dist/_members/core/render/vcam/cameraPath.js +0 -248
  631. package/dist/_members/core/render/vcam/constants.js +0 -115
  632. package/dist/_members/core/render/vcam/errorCodes.js +0 -39
  633. package/dist/_members/core/render/vcam/framing.js +0 -136
  634. package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
  635. package/dist/_members/core/render/vcam/shots.js +0 -53
  636. package/dist/_members/core/render/vcam/subjectSet.js +0 -388
  637. package/dist/_members/core/select/errorCodes.js +0 -38
  638. package/dist/_members/core/select/index.js +0 -26
  639. package/dist/_members/core/select/model.js +0 -18
  640. package/dist/_members/core/select/select.js +0 -244
  641. package/dist/_members/core/select/stabilize.js +0 -242
  642. package/dist/_members/core/types.js +0 -7
  643. package/dist/_members/errors/index.js +0 -1
  644. package/dist/_members/errors/registry.js +0 -560
  645. package/dist/_members/foundation/codes/index.js +0 -31
  646. package/dist/_members/foundation/index.js +0 -2
  647. package/dist/_members/foundation/primitives/index.js +0 -5
  648. package/dist/_members/mcp/adapter.js +0 -771
  649. package/dist/_members/mcp/burnedNames.js +0 -73
  650. package/dist/_members/mcp/core.js +0 -390
  651. package/dist/_members/mcp/curation.js +0 -792
  652. package/dist/_members/mcp/executor.js +0 -142
  653. package/dist/_members/mcp/format.js +0 -9
  654. package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
  655. package/dist/_members/mcp/generated/harness.js +0 -81
  656. package/dist/_members/mcp/generated/operations.js +0 -131
  657. package/dist/_members/mcp/index.js +0 -50
  658. package/dist/_members/mcp/internalLoopTools.js +0 -109
  659. package/dist/_members/mcp/prompts.js +0 -45
  660. package/dist/_members/mcp/resources.js +0 -166
  661. package/dist/_members/mcp/server.js +0 -340
  662. package/dist/_members/mcp/wait.js +0 -378
  663. package/dist/_members/mcp/x402Meta.js +0 -66
  664. package/dist/_members/media-model/api.js +0 -175
  665. package/dist/_members/media-model/index.js +0 -1
  666. package/dist/_members/media-model/media-kind.js +0 -116
  667. package/dist/_members/media-model/testing/index.js +0 -1
  668. package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
  669. package/dist/_members/media-model/transcriptSearch.js +0 -70
  670. package/dist/_members/media-model/transcriptSearchCases.json +0 -79
  671. package/dist/_members/nle-export/compact-timeline.js +0 -73
  672. package/dist/_members/nle-export/compact-timeline.js.map +0 -1
  673. package/dist/_members/nle-export/composition-to-input.js +0 -147
  674. package/dist/_members/nle-export/composition-to-input.js.map +0 -1
  675. package/dist/_members/nle-export/fcpxml.js +0 -159
  676. package/dist/_members/nle-export/fcpxml.js.map +0 -1
  677. package/dist/_members/nle-export/index.js +0 -12
  678. package/dist/_members/nle-export/index.js.map +0 -1
  679. package/dist/_members/nle-export/premiere.js +0 -161
  680. package/dist/_members/nle-export/premiere.js.map +0 -1
  681. package/dist/_members/nle-export/server/index.js +0 -2
  682. package/dist/_members/nle-export/server/index.js.map +0 -1
  683. package/dist/_members/nle-export/server/pack-zip.js +0 -38
  684. package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
  685. package/dist/_members/nle-export/srt.js +0 -50
  686. package/dist/_members/nle-export/srt.js.map +0 -1
  687. package/dist/_members/nle-export/types.js +0 -9
  688. package/dist/_members/nle-export/types.js.map +0 -1
  689. package/dist/_members/nle-export/xml/index.js +0 -11
  690. package/dist/_members/nle-export/xml/index.js.map +0 -1
  691. package/dist/_members/nle-export/xml-utils.js +0 -48
  692. package/dist/_members/nle-export/xml-utils.js.map +0 -1
  693. package/dist/_members/perception/activeSpeaker.js +0 -103
  694. package/dist/_members/perception/audioQuality.js +0 -76
  695. package/dist/_members/perception/energyBeat.js +0 -99
  696. package/dist/_members/perception/identityMatch.js +0 -91
  697. package/dist/_members/perception/index.js +0 -48
  698. package/dist/_members/perception/visualQuality.js +0 -95
  699. package/dist/_members/plane/conformance.js +0 -90
  700. package/dist/_members/plane/contract.js +0 -49
  701. package/dist/_members/plane/index.js +0 -16
  702. package/dist/_members/primitives/backgrounds/index.js +0 -32
  703. package/dist/_members/primitives/backgrounds/index.js.map +0 -1
  704. package/dist/_members/primitives/captions/index.js +0 -398
  705. package/dist/_members/primitives/captions/index.js.map +0 -1
  706. package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
  707. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
  708. package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
  709. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
  710. package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
  711. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
  712. package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
  713. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
  714. package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
  715. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
  716. package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
  717. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
  718. package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
  719. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
  720. package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
  721. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
  722. package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
  723. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
  724. package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
  725. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
  726. package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
  727. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
  728. package/dist/_members/primitives/chunk-IDAL6G3Y.js +0 -134
  729. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
  730. package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
  731. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
  732. package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
  733. package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
  734. package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
  735. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
  736. package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
  737. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
  738. package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
  739. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
  740. package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
  741. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
  742. package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
  743. package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
  744. package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
  745. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
  746. package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
  747. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
  748. package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
  749. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
  750. package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
  751. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
  752. package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
  753. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
  754. package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
  755. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
  756. package/dist/_members/primitives/effects/index.js +0 -30
  757. package/dist/_members/primitives/effects/index.js.map +0 -1
  758. package/dist/_members/primitives/hero-text/index.js +0 -14
  759. package/dist/_members/primitives/hero-text/index.js.map +0 -1
  760. package/dist/_members/primitives/index.js +0 -64
  761. package/dist/_members/primitives/index.js.map +0 -1
  762. package/dist/_members/primitives/layouts/index.js +0 -24
  763. package/dist/_members/primitives/layouts/index.js.map +0 -1
  764. package/dist/_members/primitives/lib/easings.js +0 -26
  765. package/dist/_members/primitives/lib/easings.js.map +0 -1
  766. package/dist/_members/primitives/lib/index.js +0 -74
  767. package/dist/_members/primitives/lib/index.js.map +0 -1
  768. package/dist/_members/primitives/lib/palette.js +0 -72
  769. package/dist/_members/primitives/lib/palette.js.map +0 -1
  770. package/dist/_members/primitives/lib/preview.js +0 -8
  771. package/dist/_members/primitives/lib/preview.js.map +0 -1
  772. package/dist/_members/primitives/lib/schema.js +0 -12
  773. package/dist/_members/primitives/lib/schema.js.map +0 -1
  774. package/dist/_members/primitives/lib/seeded-random.js +0 -14
  775. package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
  776. package/dist/_members/primitives/lib/text/contrast.js +0 -12
  777. package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
  778. package/dist/_members/primitives/lib/text/fill.js +0 -8
  779. package/dist/_members/primitives/lib/text/fill.js.map +0 -1
  780. package/dist/_members/primitives/lib/text/fitText.js +0 -10
  781. package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
  782. package/dist/_members/primitives/lib/text/marker.js +0 -8
  783. package/dist/_members/primitives/lib/text/marker.js.map +0 -1
  784. package/dist/_members/primitives/lib/text/motion.js +0 -16
  785. package/dist/_members/primitives/lib/text/motion.js.map +0 -1
  786. package/dist/_members/primitives/lib/text/recolor.js +0 -8
  787. package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
  788. package/dist/_members/primitives/lib/text/spec.js +0 -1
  789. package/dist/_members/primitives/lib/text/spec.js.map +0 -1
  790. package/dist/_members/primitives/lib/text/stage.js +0 -8
  791. package/dist/_members/primitives/lib/text/stage.js.map +0 -1
  792. package/dist/_members/primitives/lib/text/typeface.js +0 -8
  793. package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
  794. package/dist/_members/primitives/lib/tokens.js +0 -24
  795. package/dist/_members/primitives/lib/tokens.js.map +0 -1
  796. package/dist/_members/primitives/lib/types.js +0 -1
  797. package/dist/_members/primitives/lib/types.js.map +0 -1
  798. package/dist/_members/primitives/params-required.json +0 -153
  799. package/dist/_members/primitives/scenes/index.js +0 -25
  800. package/dist/_members/primitives/scenes/index.js.map +0 -1
  801. package/dist/_members/primitives/subject-foreground/index.js +0 -30
  802. package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
  803. package/dist/_members/primitives/text/index.js +0 -57
  804. package/dist/_members/primitives/text/index.js.map +0 -1
  805. package/dist/_members/primitives/transitions/index.js +0 -67
  806. package/dist/_members/primitives/transitions/index.js.map +0 -1
  807. package/dist/_members/primitives/ui-blocks/index.js +0 -76
  808. package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
  809. package/dist/_members/primitives/version-map.json +0 -105
  810. package/dist/_members/primitives/workspace.js +0 -60
  811. package/dist/_members/primitives/workspace.js.map +0 -1
  812. package/dist/chunk-37NJ27UU.js +0 -501
  813. package/dist/chunk-6EQXLEP6.js +0 -194
  814. package/dist/chunk-MXFAADCQ.js +0 -735
  815. package/dist/context-OKX3HHFS.js +0 -14
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui-blocks/glass-code-block/index.tsx","../src/ui-blocks/terminal-simulator/index.tsx","../src/ui-blocks/toast-notification/index.tsx","../src/ui-blocks/browser-flow/index.tsx","../src/ui-blocks/device-mockup-zoom/index.tsx","../src/ui-blocks/simulated-cursor/index.tsx","../src/ui-blocks/cursor-flow/index.tsx","../src/ui-blocks/morphing-modal/index.tsx","../src/ui-blocks/progress-steps/index.tsx","../src/ui-blocks/badge-pop/index.tsx","../src/ui-blocks/benchmark-bars/index.tsx","../src/ui-blocks/chat-exchange/index.tsx","../src/ui-blocks/context-meter/index.tsx","../src/ui-blocks/eval-scorecard/index.tsx","../src/ui-blocks/metric-gauge/index.tsx","../src/ui-blocks/reasoning-trace/index.tsx","../src/ui-blocks/tool-call-stack/index.tsx","../src/ui-blocks/voice-waveform/index.tsx","../src/ui-blocks/before-after-slider/index.tsx","../src/ui-blocks/bounding-box-selector/index.tsx","../src/ui-blocks/tool-menu-slide-in/index.tsx","../src/ui-blocks/code-accordion/index.tsx","../src/ui-blocks/ai-generation-canvas/index.tsx","../src/ui-blocks/ai-generate-overlay/index.tsx","../src/ui-blocks/drag-and-drop-flow/index.tsx","../src/ui-blocks/data-flow-pipes/index.tsx","../src/ui-blocks/pipeline-journey/index.tsx","../src/ui-blocks/visual-docs-snippet/index.tsx","../src/ui-blocks/brush-stroke-simulator/index.tsx","../src/ui-blocks/image-expand-to-fullscreen/index.tsx","../src/ui-blocks/glass-code-block/config.ts","../src/ui-blocks/terminal-simulator/config.ts","../src/ui-blocks/toast-notification/config.ts","../src/ui-blocks/browser-flow/config.ts","../src/ui-blocks/device-mockup-zoom/config.ts","../src/ui-blocks/simulated-cursor/config.ts","../src/ui-blocks/cursor-flow/config.ts","../src/ui-blocks/morphing-modal/config.ts","../src/ui-blocks/progress-steps/config.ts","../src/ui-blocks/badge-pop/config.ts","../src/ui-blocks/benchmark-bars/config.ts","../src/ui-blocks/chat-exchange/config.ts","../src/ui-blocks/context-meter/config.ts","../src/ui-blocks/eval-scorecard/config.ts","../src/ui-blocks/metric-gauge/config.ts","../src/ui-blocks/reasoning-trace/config.ts","../src/ui-blocks/tool-call-stack/config.ts","../src/ui-blocks/voice-waveform/config.ts","../src/ui-blocks/before-after-slider/config.ts","../src/ui-blocks/bounding-box-selector/config.ts","../src/ui-blocks/tool-menu-slide-in/config.ts","../src/ui-blocks/code-accordion/config.ts","../src/ui-blocks/ai-generation-canvas/config.ts","../src/ui-blocks/ai-generate-overlay/config.ts","../src/ui-blocks/drag-and-drop-flow/config.ts","../src/ui-blocks/dashboard-populate/config.ts","../src/ui-blocks/data-flow-pipes/config.ts","../src/ui-blocks/pipeline-journey/config.ts","../src/ui-blocks/visual-docs-snippet/config.ts","../src/ui-blocks/brush-stroke-simulator/config.ts","../src/ui-blocks/image-expand-to-fullscreen/config.ts","../src/ui-blocks/index.ts"],"sourcesContent":["/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { Sequence, interpolate, useCurrentFrame } from \"remotion\";\nimport * as palette from '../../lib/palette';\n\nexport interface GlassCodeBlockProps {\n code?: string;\n title?: string;\n width?: number;\n height?: number;\n fontSize?: number;\n background?: string;\n glassColor?: string;\n staggerFrames?: number;\n showTrafficLights?: boolean;\n speed?: number;\n className?: string;\n}\n\nconst FONT_MONO =\n \"monospace\";\n\nconst DEFAULT_CODE = `import { motion } from \"remotion\";\n\n// Generate a hero scene\nexport function Hero() {\n const frame = useCurrentFrame();\n const opacity = frame / 30;\n return <h1 style={{ opacity }}>Hello</h1>;\n}`;\n\n// Minimal regex tokenizer. NOT a real syntax highlighter — just enough to\n// give the eye color anchors. Order matters: comments → strings → keywords.\nconst KEYWORDS = new Set([\n \"import\",\n \"from\",\n \"export\",\n \"function\",\n \"const\",\n \"let\",\n \"var\",\n \"return\",\n \"if\",\n \"else\",\n \"for\",\n \"while\",\n \"new\",\n \"class\",\n \"extends\",\n \"default\",\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n]);\n\ntype Token = {\n text: string;\n kind: \"code\" | \"comment\" | \"string\" | \"keyword\" | \"number\";\n};\n\nfunction tokenizeLine(line: string): Token[] {\n // Whole-line comment.\n const trimmed = line.trimStart();\n if (trimmed.startsWith(\"//\")) {\n return [{ text: line, kind: \"comment\" }];\n }\n\n const tokens: Token[] = [];\n // Split keeping delimiters: words, strings, numbers, everything else.\n const re = /(\"[^\"]*\"|'[^']*'|`[^`]*`|\\b\\d+\\b|\\b[A-Za-z_$][\\w$]*\\b|[^\\w\"']+)/g;\n let match: RegExpExecArray | null;\n while ((match = re.exec(line)) !== null) {\n const t = match[0];\n const first = t[0];\n if (first === '\"' || first === \"'\" || first === \"`\") {\n tokens.push({ text: t, kind: \"string\" });\n } else if (/^\\d+$/.test(t)) {\n tokens.push({ text: t, kind: \"number\" });\n } else if (/^[A-Za-z_$][\\w$]*$/.test(t) && KEYWORDS.has(t)) {\n tokens.push({ text: t, kind: \"keyword\" });\n } else {\n tokens.push({ text: t, kind: \"code\" });\n }\n }\n return tokens;\n}\n\nconst TOKEN_COLORS: Record<Token[\"kind\"], string> = {\n code: palette.SYN_TEXT,\n comment: palette.SYN_COMMENT,\n string: palette.SYN_STRING,\n keyword: palette.SYN_KEYWORD,\n number: palette.SYN_NUMBER,\n};\n\nexport function GlassCodeBlock({\n code = DEFAULT_CODE,\n title = \"hero.tsx\",\n width = 760,\n height = 460,\n fontSize = 16,\n background = palette.BG,\n glassColor = `${palette.BG}99`,\n staggerFrames = 4,\n showTrafficLights = true,\n speed = 1,\n className,\n}: GlassCodeBlockProps) {\n const lines = code.split(\"\\n\");\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {/* Animated background hint behind the glass so the blur has something\n to chew on. Pure CSS — no extra deps. */}\n <BackdropAura />\n\n {/* 1px gradient ring acting as a microborder */}\n <div\n style={{\n position: \"relative\",\n padding: 1,\n borderRadius: 16,\n background:\n \"linear-gradient(180deg, rgba(255,255,255,0.18) 0%, rgba(255,255,255,0) 100%)\",\n width,\n height,\n }}\n >\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: 15,\n background: glassColor,\n backdropFilter: \"blur(16px)\",\n WebkitBackdropFilter: \"blur(16px)\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n fontFamily: FONT_MONO,\n }}\n >\n {/* Chrome */}\n <div\n style={{\n height: 40,\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0 16px\",\n borderBottom: \"1px solid rgba(255,255,255,0.06)\",\n }}\n >\n {showTrafficLights && (\n <>\n <Light color={palette.MAC_RED} />\n <Light color={palette.MAC_YELLOW} />\n <Light color={palette.MAC_GREEN} />\n </>\n )}\n <div\n style={{\n flex: 1,\n textAlign: \"center\",\n color: palette.TEXT_MUTED,\n fontSize: 12,\n letterSpacing: \"0.02em\",\n }}\n >\n {title}\n </div>\n </div>\n\n {/* Code body */}\n <div\n style={{\n flex: 1,\n padding: \"20px 24px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n fontSize,\n lineHeight: 1.55,\n }}\n >\n {lines.map((line, i) => (\n <Sequence\n key={i}\n from={Math.round((i * staggerFrames) / speed)}\n layout=\"none\"\n >\n <CodeLine line={line} index={i} fontSize={fontSize} />\n </Sequence>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction Light({ color }: { color: string }) {\n return (\n <div\n style={{\n width: 12,\n height: 12,\n borderRadius: \"50%\",\n background: color,\n opacity: 0.6,\n }}\n />\n );\n}\n\nfunction CodeLine({\n line,\n index,\n fontSize,\n}: {\n line: string;\n index: number;\n fontSize: number;\n}) {\n const frame = useCurrentFrame();\n const opacity = interpolate(frame, [0, 8], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const ty = interpolate(frame, [0, 8], [4, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n const tokens = tokenizeLine(line);\n // Render an empty line as a half-height spacer so blank lines still take\n // visual space without collapsing the gap.\n if (tokens.length === 0) {\n return <div style={{ height: fontSize * 0.8, opacity }} />;\n }\n return (\n <div\n style={{\n opacity,\n transform: `translateY(${ty}px)`,\n whiteSpace: \"pre\",\n display: \"flex\",\n gap: 0,\n }}\n >\n <span style={{ width: 28, color: palette.TEXT_FAINT, userSelect: \"none\" }}>\n {String(index + 1).padStart(2, \" \")}\n </span>\n <span>\n {tokens.map((t, i) => (\n <span key={i} style={{ color: TOKEN_COLORS[t.kind] }}>\n {t.text}\n </span>\n ))}\n </span>\n </div>\n );\n}\n\nfunction BackdropAura() {\n // Slow, low-amplitude blob behind the glass so the backdrop blur has\n // perceptible content to refract.\n const frame = useCurrentFrame();\n const t = frame / 60;\n const x = 50 + Math.sin(t) * 20;\n const y = 50 + Math.cos(t * 0.7) * 15;\n return (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n background: `radial-gradient(circle at ${x}% ${y}%, ${palette.ACCENT}38, transparent 50%), radial-gradient(circle at ${100 - x}% ${100 - y}%, ${palette.VIOLET}2e, transparent 55%)`,\n }}\n />\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport {\n Sequence,\n interpolate,\n useCurrentFrame,\n useVideoConfig,\n} from \"remotion\";\nimport * as palette from '../../lib/palette';\n\nexport type TerminalLineType = \"command\" | \"log\" | \"success\" | \"error\";\n\nexport interface TerminalLine {\n text: string;\n type: TerminalLineType;\n delay?: number;\n /**\n * Extra freeze-frame pause AFTER this line finishes typing, in frames.\n * Use this to build dramatic tension before the next batch of logs.\n * If omitted, lines whose text ends in \"...\" auto-freeze for 18 frames.\n */\n pause?: number;\n}\n\nexport interface TerminalSimulatorProps {\n lines?: TerminalLine[];\n prompt?: string;\n title?: string;\n background?: string;\n chromeColor?: string;\n fontSize?: number;\n /**\n * Reveal speed. Despite the name, the reveal is now CHUNKED — each\n * `1 / charsPerFrame` frames bumps the cursor by `chunkSize` characters,\n * so output appears in bursts instead of dripping char-by-char.\n */\n charsPerFrame?: number;\n /** Characters revealed per step. */\n chunkSize?: number;\n speed?: number;\n className?: string;\n}\n\nconst DEFAULT_LINES: TerminalLine[] = [\n { text: \"npm run build\", type: \"command\", delay: 0 },\n { text: \"Resolving dependencies...\", type: \"log\", delay: 6 },\n { text: \"> remocn@1.0.0 build\", type: \"log\", delay: 4 },\n { text: \"> next build\", type: \"log\", delay: 4 },\n { text: \"Compiling...\", type: \"log\", delay: 12 },\n { text: \"Compiled successfully in 4.2s\", type: \"success\", delay: 14 },\n { text: \"Generating static pages (24/24)\", type: \"log\", delay: 10 },\n { text: \"Build completed without errors\", type: \"success\", delay: 12 },\n];\n\nconst TYPE_COLORS: Record<TerminalLineType, string> = {\n command: palette.TEXT_HI,\n log: palette.TEXT_MUTED,\n success: palette.SUCCESS,\n error: palette.DANGER,\n};\n\n/** Auto freeze-frame heuristic: any line ending in \"...\" holds the camera. */\nfunction autoPause(line: TerminalLine): number {\n if (line.pause !== undefined) return line.pause;\n if (line.text.trimEnd().endsWith(\"...\")) return 18;\n return 0;\n}\n\nexport function TerminalSimulator({\n lines = DEFAULT_LINES,\n prompt = \"$\",\n title = \"~/projects/remocn\",\n background = palette.BG,\n chromeColor = palette.SURFACE,\n fontSize = 18,\n charsPerFrame = 1,\n chunkSize = 1,\n speed = 1,\n className,\n}: TerminalSimulatorProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n const lineHeight = Math.round(fontSize * 1.6);\n const visibleLines = 8;\n const windowWidth = 900;\n const windowHeight = 480;\n\n // Compute cumulative start frames for each line, including auto/explicit\n // pauses AFTER a line finishes typing.\n const starts: number[] = [];\n let acc = 10;\n for (let i = 0; i < lines.length; i++) {\n const delay = lines[i].delay ?? 8;\n acc += delay;\n starts.push(acc);\n // Approximate typing duration (in frames) for chunked output.\n const typingFrames = Math.ceil(\n lines[i].text.length / (chunkSize * charsPerFrame),\n );\n acc += typingFrames + autoPause(lines[i]);\n }\n\n // STEP-FUNCTION scroll. Each overflowing line snaps the buffer up by\n // exactly one lineHeight on the frame it begins. No interpolation, no\n // easing — terminals do not glide.\n let translateY = 0;\n for (let i = visibleLines; i < lines.length; i++) {\n if (frame >= starts[i]) {\n translateY -= lineHeight;\n }\n }\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: palette.BG_DEEP,\n }}\n >\n <div\n style={{\n width: windowWidth,\n height: windowHeight,\n background,\n borderRadius: 12,\n overflow: \"hidden\",\n border: `1px solid ${palette.BORDER}`,\n display: \"flex\",\n flexDirection: \"column\",\n fontFamily:\n \"monospace\",\n }}\n >\n {/* Chrome */}\n <div\n style={{\n height: 40,\n background: chromeColor,\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 16px\",\n gap: 8,\n borderBottom: `1px solid ${palette.BORDER_SOFT}`,\n }}\n >\n <Light color={palette.MAC_RED} />\n <Light color={palette.MAC_YELLOW} />\n <Light color={palette.MAC_GREEN} />\n <div\n style={{\n flex: 1,\n textAlign: \"center\",\n color: palette.TEXT_MUTED,\n fontSize: 13,\n }}\n >\n {title}\n </div>\n </div>\n\n {/* Content */}\n <div\n style={{\n flex: 1,\n padding: 20,\n overflow: \"hidden\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n left: 20,\n right: 20,\n top: 20,\n transform: `translateY(${translateY}px)`,\n }}\n >\n {lines.map((line, index) => (\n <Sequence\n key={index}\n from={Math.round(starts[index] / speed)}\n layout=\"none\"\n >\n <TerminalLineRow\n line={line}\n prompt={prompt}\n fontSize={fontSize}\n lineHeight={lineHeight}\n charsPerFrame={charsPerFrame}\n chunkSize={chunkSize}\n fps={fps}\n speed={speed}\n />\n </Sequence>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction Light({ color }: { color: string }) {\n return (\n <div\n style={{\n width: 12,\n height: 12,\n borderRadius: \"50%\",\n background: color,\n opacity: 0.85,\n }}\n />\n );\n}\n\nfunction TerminalLineRow({\n line,\n prompt,\n fontSize,\n lineHeight,\n charsPerFrame,\n chunkSize,\n fps,\n speed,\n}: {\n line: TerminalLine;\n prompt: string;\n fontSize: number;\n lineHeight: number;\n charsPerFrame: number;\n chunkSize: number;\n fps: number;\n speed: number;\n}) {\n const localFrame = useCurrentFrame() * speed;\n const totalChars = line.text.length;\n\n // Chunked reveal: Math.floor of an interpolated count, then snapped to the\n // nearest multiple of `chunkSize`. This is what gives the bursty terminal\n // feel — text doesn't drip, it lurches.\n const linearRevealed = Math.floor(\n interpolate(localFrame, [0, totalChars / charsPerFrame], [0, totalChars], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n }),\n );\n const revealed = Math.min(\n totalChars,\n Math.ceil(linearRevealed / chunkSize) * chunkSize,\n );\n const visible = line.text.substring(0, revealed);\n const typingDone = revealed >= totalChars;\n // 2 Hz blink at any framerate.\n const cursorVisible = Math.floor((localFrame / fps) * 2) % 2 === 0;\n\n return (\n <div\n style={{\n height: lineHeight,\n fontSize,\n color: TYPE_COLORS[line.type],\n display: \"flex\",\n alignItems: \"center\",\n whiteSpace: \"pre\",\n }}\n >\n {line.type === \"command\" && (\n <span style={{ color: palette.SUCCESS, marginRight: 8 }}>{prompt}</span>\n )}\n <span>{visible}</span>\n {!typingDone && cursorVisible && (\n <span\n style={{\n display: \"inline-block\",\n width: fontSize * 0.55,\n height: fontSize,\n background: TYPE_COLORS[line.type],\n marginLeft: 2,\n }}\n />\n )}\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport type ToastVariant = \"success\" | \"error\" | \"info\" | \"warning\";\n\nexport interface ToastNotificationProps {\n title?: string;\n message?: string;\n variant?: ToastVariant;\n background?: string;\n cardColor?: string;\n textColor?: string;\n mutedColor?: string;\n speed?: number;\n className?: string;\n}\n\nconst VARIANT_COLORS: Record<ToastVariant, string> = {\n success: palette.SUCCESS,\n error: palette.DANGER,\n info: palette.BLUE,\n warning: palette.WARNING,\n};\n\nfunction VariantIcon({\n variant,\n color,\n}: {\n variant: ToastVariant;\n color: string;\n}) {\n const common = {\n width: 22,\n height: 22,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: 2.4,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n };\n\n if (variant === \"success\") {\n return (\n <svg {...common}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M8 12.5l2.8 2.8L16 9.8\" />\n </svg>\n );\n }\n if (variant === \"error\") {\n return (\n <svg {...common}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M15 9l-6 6M9 9l6 6\" />\n </svg>\n );\n }\n if (variant === \"warning\") {\n return (\n <svg {...common}>\n <path d=\"M12 3l10 18H2L12 3z\" />\n <path d=\"M12 10v5M12 18v.01\" />\n </svg>\n );\n }\n return (\n <svg {...common}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 8v.01M12 12v5\" />\n </svg>\n );\n}\n\nexport function ToastNotification({\n title = \"Deployment successful\",\n message = \"Your changes are live at remocn.dev\",\n variant = \"success\",\n background = palette.BG,\n cardColor = palette.SURFACE,\n textColor = palette.TEXT_HI,\n mutedColor = palette.TEXT_MUTED,\n speed = 1,\n className,\n}: ToastNotificationProps) {\n const frame = useCurrentFrame() * speed;\n const { fps, durationInFrames } = useVideoConfig();\n\n const enterFrames = 15;\n const exitFrames = 15;\n const exitStart = Math.max(enterFrames, durationInFrames - exitFrames);\n\n const enterProgress = spring({\n frame,\n fps,\n config: { damping: 14, stiffness: 140, mass: 0.7 },\n durationInFrames: enterFrames,\n });\n\n const enterTranslate = interpolate(enterProgress, [0, 1], [40, 0]);\n const enterOpacity = interpolate(enterProgress, [0, 1], [0, 1], {\n extrapolateRight: \"clamp\",\n });\n\n const exitTranslate = interpolate(\n frame,\n [exitStart, exitStart + exitFrames],\n [0, 40],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n const exitOpacity = interpolate(\n frame,\n [exitStart, exitStart + exitFrames],\n [1, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n const translateY = enterTranslate + exitTranslate;\n const opacity = Math.min(enterOpacity, exitOpacity);\n\n const accent = VARIANT_COLORS[variant];\n\n return (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n fontFamily:\n \"inherit\",\n }}\n >\n <div\n className={className}\n style={{\n position: \"absolute\",\n right: 32,\n bottom: 32,\n transform: `translateY(${translateY}px)`,\n opacity,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 14,\n padding: \"16px 20px\",\n minWidth: 320,\n maxWidth: 420,\n background: cardColor,\n borderRadius: 14,\n border: `1px solid ${palette.BORDER}`,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 36,\n height: 36,\n borderRadius: 999,\n background: `${accent}1f`,\n flexShrink: 0,\n }}\n >\n <VariantIcon variant={variant} color={accent} />\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <span\n style={{\n fontSize: 16,\n fontWeight: 600,\n color: textColor,\n letterSpacing: \"-0.01em\",\n }}\n >\n {title}\n </span>\n <span style={{ fontSize: 14, color: mutedColor, lineHeight: 1.4 }}>\n {message}\n </span>\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport React from \"react\";\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { fitTextOnNLines } from \"@remotion/layout-utils\";\nimport { resolveFitFontSize } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface BrowserFlowProps {\n url?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\nconst MONO_FAMILY =\n \"monospace\";\n\n// Cap the typed-URL width to the address bar's inner width so a long URL shrinks\n// (then ellipsizes) instead of overflowing the chrome bar.\nconst ADDRESS_TEXT_WIDTH = 800;\n\nfunction MacDots({ size = 12 }: { size?: number }) {\n return (\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\n {[palette.MAC_RED, palette.MAC_YELLOW, palette.MAC_GREEN].map((c) => (\n <div\n key={c}\n style={{\n width: size,\n height: size,\n borderRadius: \"50%\",\n background: c,\n opacity: 0.85,\n }}\n />\n ))}\n </div>\n );\n}\n\nfunction CursorSVG() {\n return (\n <svg width=\"22\" height=\"28\" viewBox=\"0 0 22 28\" fill=\"none\">\n <path\n d=\"M2 2L2 22L7 17.5L10.5 25L13.5 23.5L10 16L17 16L2 2Z\"\n fill=\"white\"\n stroke=\"black\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction easeInOut(t: number) {\n return t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2;\n}\n\nexport function BrowserFlow({\n url = \"remocn.dev\",\n speed = 1,\n className,\n}: BrowserFlowProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // ── Browser dimensions ────────────────────────────\n const browserWidth = 1100;\n const browserHeight = 620;\n const chromeHeight = 56;\n const browserLeft = (1280 - browserWidth) / 2;\n const browserTop = (720 - browserHeight) / 2;\n\n // ── URL typing (frames 0..40) ─────────────────────\n const typingProgress = interpolate(frame, [4, 38], [0, url.length], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const typedChars = Math.floor(typingProgress);\n const typedUrl = url.slice(0, typedChars);\n const showCaret = frame < 50 && Math.floor(frame / 12) % 2 === 0;\n\n // Size the address text against the FULL url once (not the growing `typedUrl`) so the\n // already-typed characters don't reflow/shrink mid-type. Keyed on content, not frame,\n // so it measures once — mirrors typewriter/kinetic-type.\n const ADDRESS_FONT_SIZE = 13;\n const urlFontSize = React.useMemo(() => {\n if (url.trim().length === 0) return ADDRESS_FONT_SIZE;\n try {\n const { fontSize: fit } = fitTextOnNLines({\n text: url,\n maxLines: 1,\n maxBoxWidth: ADDRESS_TEXT_WIDTH,\n fontFamily: MONO_FAMILY,\n maxFontSize: ADDRESS_FONT_SIZE,\n validateFontIsLoaded: false,\n });\n return resolveFitFontSize({\n singleLineFitFontSize: fit,\n minFontSize: Math.round(ADDRESS_FONT_SIZE * 0.55),\n maxFontSize: ADDRESS_FONT_SIZE,\n }).fontSize;\n } catch {\n return ADDRESS_FONT_SIZE;\n }\n }, [url]);\n\n // Autocomplete suggestion appears once a few chars typed\n const showSuggestion = typedChars >= 2 && frame < 48;\n const suggestion = url;\n\n // ── Progress bar ──────────────────────────────────\n // 40..50: 0 -> 15\n // 50..65: hold at 15\n // 65..85: 15 -> 100\n // 85..95: fade out\n let progress = 0;\n if (frame < 40) progress = 0;\n else if (frame < 50)\n progress = interpolate(frame, [40, 50], [0, 15], {\n extrapolateRight: \"clamp\",\n });\n else if (frame < 65) progress = 15;\n else if (frame < 85)\n progress = interpolate(frame, [65, 85], [15, 100], {\n extrapolateRight: \"clamp\",\n });\n else progress = 100;\n\n const progressOpacity =\n frame < 40\n ? 0\n : frame < 85\n ? 1\n : interpolate(frame, [85, 95], [1, 0], {\n extrapolateRight: \"clamp\",\n });\n\n // ── Page render ───────────────────────────────────\n const pageStart = 95;\n const pageOpacity = interpolate(frame, [pageStart, pageStart + 12], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n // ── Page scroll & cursor motion ───────────────────\n const scrollStart = 115;\n const scrollEnd = 230;\n const scrollT = interpolate(frame, [scrollStart, scrollEnd], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const scrollEased = easeInOut(scrollT);\n const maxScroll = 600;\n const scrollY = scrollEased * maxScroll;\n\n // Cursor path: starts off the address bar area, moves down toward CTA inside viewport\n // Coordinates relative to the full 1280x720 frame.\n const cursorStartX = browserLeft + 380;\n const cursorStartY = browserTop + chromeHeight + 60;\n const cursorEndX = browserLeft + browserWidth / 2;\n const cursorEndY = browserTop + chromeHeight + 380;\n\n const cursorT = interpolate(frame, [pageStart + 5, scrollEnd], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const cursorEased = easeInOut(cursorT);\n // arc bias on Y for organic feel\n const arcOffset = Math.sin(cursorEased * Math.PI) * 30;\n const cursorX =\n cursorStartX + (cursorEndX - cursorStartX) * cursorEased + arcOffset * 0.6;\n const cursorY =\n cursorStartY + (cursorEndY - cursorStartY) * cursorEased - arcOffset;\n\n // Click animation near the end\n const clickFrame = scrollEnd + 4;\n const clickSpring = spring({\n frame: frame - clickFrame,\n fps,\n config: { mass: 0.4, damping: 12, stiffness: 220 },\n durationInFrames: 18,\n });\n const cursorClickScale = interpolate(clickSpring, [0, 0.4, 1], [1, 0.85, 1], {\n extrapolateRight: \"clamp\",\n });\n const buttonClickScale =\n frame >= clickFrame\n ? interpolate(clickSpring, [0, 0.4, 1], [1, 0.98, 1], {\n extrapolateRight: \"clamp\",\n })\n : 1;\n\n // Address bar focus state (highlighted while typing)\n const addressFocused = frame < 50;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n overflow: \"hidden\",\n background:\n `radial-gradient(ellipse at center, ${palette.BG} 0%, ${palette.BG_DEEP} 75%)`,\n fontFamily: FONT_FAMILY,\n }}\n >\n {/* Browser window */}\n <div\n style={{\n position: \"absolute\",\n left: browserLeft,\n top: browserTop,\n width: browserWidth,\n height: browserHeight,\n borderRadius: 16,\n overflow: \"hidden\",\n background: palette.BG,\n border: \"1px solid rgba(255,255,255,0.08)\",\n }}\n >\n {/* Chrome */}\n <div\n style={{\n position: \"relative\",\n height: chromeHeight,\n display: \"flex\",\n alignItems: \"center\",\n gap: 14,\n paddingLeft: 18,\n paddingRight: 18,\n background: \"rgba(20,20,24,0.95)\",\n borderBottom: \"1px solid rgba(255,255,255,0.06)\",\n }}\n >\n <MacDots />\n {/* nav arrows */}\n <div\n style={{\n display: \"flex\",\n gap: 6,\n marginLeft: 8,\n color: \"rgba(255,255,255,0.35)\",\n fontSize: 16,\n }}\n >\n <span>‹</span>\n <span>›</span>\n </div>\n {/* address bar */}\n <div\n style={{\n flex: 1,\n position: \"relative\",\n height: 32,\n borderRadius: 16,\n background: addressFocused\n ? \"rgba(255,255,255,0.08)\"\n : \"rgba(255,255,255,0.05)\",\n border: `1px solid ${\n addressFocused\n ? `${palette.BLUE}73`\n : \"rgba(255,255,255,0.07)\"\n }`,\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: 14,\n paddingRight: 14,\n fontFamily: MONO_FAMILY,\n fontSize: 13,\n color: \"rgba(255,255,255,0.85)\",\n boxShadow: addressFocused\n ? `0 0 0 3px ${palette.BLUE}1f`\n : \"none\",\n }}\n >\n <span style={{ color: \"rgba(255,255,255,0.4)\", marginRight: 8 }}>\n ⌕\n </span>\n <span\n style={{\n fontSize: urlFontSize,\n fontFamily: MONO_FAMILY,\n color: \"rgba(255,255,255,0.85)\",\n maxWidth: ADDRESS_TEXT_WIDTH,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {typedUrl}\n </span>\n {showCaret && (\n <span\n style={{\n display: \"inline-block\",\n width: 1.5,\n height: 16,\n background: \"rgba(255,255,255,0.85)\",\n marginLeft: 1,\n }}\n />\n )}\n\n {/* Autocomplete suggestion dropdown */}\n {showSuggestion && (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: \"calc(100% + 6px)\",\n background: \"rgba(22,22,26,0.98)\",\n border: \"1px solid rgba(255,255,255,0.08)\",\n borderRadius: 10,\n padding: \"10px 14px\",\n fontFamily: MONO_FAMILY,\n fontSize: 13,\n color: \"rgba(255,255,255,0.85)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n zIndex: 10,\n }}\n >\n <span style={{ color: \"rgba(255,255,255,0.4)\" }}>↗</span>\n <span>\n <span style={{ color: palette.TEXT_HI }}>{typedUrl}</span>\n <span style={{ color: \"rgba(255,255,255,0.4)\" }}>\n {suggestion.slice(typedChars)}\n </span>\n </span>\n </div>\n )}\n </div>\n <div style={{ width: 60 }} />\n\n {/* Progress bar */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: 2,\n opacity: progressOpacity,\n }}\n >\n <div\n style={{\n width: `${progress}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${palette.ACCENT_STRONG} 0%, ${palette.ACCENT} 100%)`,\n }}\n />\n </div>\n </div>\n\n {/* Page viewport */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: chromeHeight,\n bottom: 0,\n overflow: \"hidden\",\n background: palette.BG,\n opacity: pageOpacity,\n }}\n >\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n transform: `translateY(${-scrollY}px)`,\n willChange: \"transform\",\n }}\n >\n {/* Header */}\n <div\n style={{\n height: 68,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0 60px\",\n borderBottom: \"1px solid rgba(255,255,255,0.05)\",\n }}\n >\n <div\n style={{\n fontWeight: 700,\n fontSize: 18,\n color: palette.TEXT_HI,\n letterSpacing: \"-0.02em\",\n }}\n >\n remocn\n </div>\n <div\n style={{\n display: \"flex\",\n gap: 28,\n fontSize: 14,\n color: \"rgba(255,255,255,0.65)\",\n }}\n >\n <span>Components</span>\n <span>Docs</span>\n <span>GitHub</span>\n </div>\n </div>\n\n {/* Hero */}\n <div\n style={{\n padding: \"100px 60px 80px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 24,\n alignItems: \"center\",\n textAlign: \"center\",\n }}\n >\n <div\n style={{\n fontSize: 13,\n color: `${palette.BLUE}d9`,\n fontWeight: 500,\n letterSpacing: \"0.02em\",\n }}\n >\n shadcn registry for Remotion\n </div>\n <div\n style={{\n fontSize: 64,\n fontWeight: 700,\n letterSpacing: \"-0.04em\",\n color: palette.TEXT_HI,\n lineHeight: 1.05,\n maxWidth: 720,\n }}\n >\n Production-ready video blocks.\n </div>\n <div\n style={{\n fontSize: 17,\n color: \"rgba(255,255,255,0.6)\",\n maxWidth: 520,\n lineHeight: 1.5,\n }}\n >\n Drop-in animations, transitions, and backgrounds for Remotion.\n Own your code.\n </div>\n\n {/* CTA — clicked at the end */}\n <button\n type=\"button\"\n style={{\n marginTop: 12,\n padding: \"16px 32px\",\n borderRadius: 12,\n background: palette.TEXT_HI,\n color: palette.BG,\n fontFamily: FONT_FAMILY,\n fontSize: 15,\n fontWeight: 600,\n border: \"none\",\n transform: `scale(${buttonClickScale})`,\n willChange: \"transform\",\n }}\n >\n Browse components →\n </button>\n </div>\n\n {/* Sections */}\n {[\n { title: \"Typography\", color: palette.BLUE },\n { title: \"Backgrounds\", color: palette.VIOLET },\n { title: \"Transitions\", color: palette.SUCCESS },\n ].map((s) => (\n <div\n key={s.title}\n style={{\n margin: \"40px 60px\",\n padding: \"40px\",\n borderRadius: 16,\n background:\n \"linear-gradient(180deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.01) 100%)\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 28,\n }}\n >\n <div\n style={{\n width: 64,\n height: 64,\n borderRadius: 14,\n background: `${s.color}22`,\n border: `1px solid ${s.color}55`,\n }}\n />\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n }}\n >\n <div\n style={{\n fontSize: 22,\n fontWeight: 600,\n color: palette.TEXT_HI,\n letterSpacing: \"-0.02em\",\n }}\n >\n {s.title}\n </div>\n <div\n style={{\n fontSize: 14,\n color: \"rgba(255,255,255,0.55)\",\n }}\n >\n Hand-tuned primitives, copied straight into your project.\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n\n {/* Virtual cursor */}\n {frame >= pageStart && (\n <div\n style={{\n position: \"absolute\",\n left: cursorX,\n top: cursorY,\n transform: `scale(${cursorClickScale})`,\n transformOrigin: \"top left\",\n zIndex: 9999,\n willChange: \"transform\",\n }}\n >\n <CursorSVG />\n </div>\n )}\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport type { ReactNode } from \"react\";\nimport { Easing, interpolate, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from '../../lib/palette';\n\nexport interface DeviceMockupZoomProps {\n children?: ReactNode;\n device?: \"laptop\" | \"phone\";\n frameColor?: string;\n screenColor?: string;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nfunction DefaultScreen() {\n return (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: `linear-gradient(135deg, ${palette.ACCENT} 0%, ${palette.VIOLET} 100%)`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: palette.TEXT_HI,\n fontFamily: FONT_FAMILY,\n fontSize: 32,\n fontWeight: 700,\n letterSpacing: \"-0.03em\",\n }}\n >\n Your UI\n </div>\n );\n}\n\nexport function DeviceMockupZoom({\n children,\n device = \"laptop\",\n frameColor = palette.SURFACE,\n screenColor = palette.BG,\n background = palette.TEXT_HI,\n speed = 1,\n className,\n}: DeviceMockupZoomProps) {\n const frame = useCurrentFrame() * speed;\n const { durationInFrames } = useVideoConfig();\n\n const scale = interpolate(frame, [0, durationInFrames], [2, 1], {\n extrapolateRight: \"clamp\",\n easing: Easing.bezier(0.22, 1, 0.36, 1),\n });\n\n const screen = children ?? <DefaultScreen />;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n transform: `scale(${scale})`,\n transformOrigin: \"center center\",\n willChange: \"transform\",\n }}\n >\n {device === \"laptop\" ? (\n <div style={{ position: \"relative\" }}>\n {/* Screen body */}\n <div\n style={{\n width: 720,\n height: 440,\n background: frameColor,\n borderRadius: 16,\n padding: 16,\n border: '1px solid ' + palette.BORDER,\n }}\n >\n <div\n style={{\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n background: screenColor,\n borderRadius: 6,\n overflow: \"hidden\",\n }}\n >\n {screen}\n </div>\n </div>\n {/* Base */}\n <div\n style={{\n width: 820,\n height: 18,\n background: frameColor,\n borderBottomLeftRadius: 14,\n borderBottomRightRadius: 14,\n marginLeft: -50,\n marginTop: -2,\n }}\n />\n <div\n style={{\n width: 120,\n height: 6,\n background: palette.BG,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n borderBottomLeftRadius: 8,\n borderBottomRightRadius: 8,\n marginTop: -1,\n }}\n />\n </div>\n ) : (\n <div\n style={{\n width: 280,\n height: 560,\n background: frameColor,\n borderRadius: 44,\n padding: 14,\n border: '1px solid ' + palette.BORDER,\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n background: screenColor,\n borderRadius: 32,\n overflow: \"hidden\",\n }}\n >\n {screen}\n </div>\n <div\n style={{\n position: \"absolute\",\n top: 22,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n width: 90,\n height: 22,\n background: palette.BG,\n borderRadius: 14,\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from '../../lib/palette';\n\nexport interface CursorPoint {\n x: number;\n y: number;\n hold?: number;\n click?: boolean;\n}\n\nexport interface SimulatedCursorProps {\n points?: CursorPoint[];\n color?: string;\n size?: number;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nconst DEFAULT_POINTS: CursorPoint[] = [\n { x: 200, y: 150, hold: 20 },\n { x: 800, y: 360, hold: 25, click: true },\n { x: 1050, y: 560, hold: 20 },\n];\n\nexport function SimulatedCursor({\n points = DEFAULT_POINTS,\n color = palette.TEXT_HI,\n size = 32,\n background = palette.BG,\n speed = 1,\n className,\n}: SimulatedCursorProps) {\n const frame = useCurrentFrame() * speed;\n const { fps, durationInFrames } = useVideoConfig();\n\n const travelPerLeg = 24;\n const segments: Array<{\n start: number;\n end: number;\n holdEnd: number;\n from: CursorPoint;\n to: CursorPoint;\n }> = [];\n\n let cursor = 0;\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n const start = cursor;\n const end = start + travelPerLeg;\n const holdEnd = end + (to.hold ?? 15);\n segments.push({ start, end, holdEnd, from, to });\n cursor = holdEnd;\n }\n\n // Find current segment\n let x = points[0].x;\n let y = points[0].y;\n let activeClickFrame: number | null = null;\n let clickTarget: CursorPoint | null = null;\n\n if (segments.length === 0) {\n x = points[0].x;\n y = points[0].y;\n } else if (frame < segments[0].start + (points[0].hold ?? 0)) {\n x = points[0].x;\n y = points[0].y;\n } else {\n for (const seg of segments) {\n if (frame >= seg.start && frame < seg.holdEnd) {\n if (frame < seg.end) {\n // travelling\n x = interpolate(frame, [seg.start, seg.end], [seg.from.x, seg.to.x], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n y = interpolate(frame, [seg.start, seg.end], [seg.from.y, seg.to.y], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n } else {\n x = seg.to.x;\n y = seg.to.y;\n if (seg.to.click) {\n activeClickFrame = frame - seg.end;\n clickTarget = seg.to;\n }\n }\n break;\n }\n if (frame >= seg.holdEnd) {\n x = seg.to.x;\n y = seg.to.y;\n }\n }\n }\n\n // Click feedback\n let clickScale = 1;\n let rippleRadius = 0;\n let rippleOpacity = 0;\n if (activeClickFrame !== null && clickTarget) {\n const dip = spring({\n fps,\n frame: activeClickFrame,\n config: { damping: 10, stiffness: 200, mass: 0.6 },\n durationInFrames: 14,\n });\n clickScale = 1 - dip * 0.18;\n rippleRadius = interpolate(activeClickFrame, [0, 24], [4, 60], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n rippleOpacity = interpolate(activeClickFrame, [0, 24], [0.6, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n }\n\n // Suppress unused warning when durationInFrames not used directly\n void durationInFrames;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n overflow: \"hidden\",\n }}\n >\n {/* Click ripple */}\n {rippleOpacity > 0 && (\n <svg\n style={{\n position: \"absolute\",\n left: x - 80,\n top: y - 80,\n width: 160,\n height: 160,\n pointerEvents: \"none\",\n }}\n >\n <circle\n cx={80}\n cy={80}\n r={rippleRadius}\n fill=\"none\"\n stroke={color}\n strokeWidth={2}\n opacity={rippleOpacity}\n />\n </svg>\n )}\n\n {/* Cursor */}\n <div\n style={{\n position: \"absolute\",\n left: x,\n top: y,\n width: size,\n height: size,\n transform: `scale(${clickScale})`,\n transformOrigin: \"top left\",\n zIndex: 2147483647,\n pointerEvents: \"none\",\n willChange: \"transform, left, top\",\n }}\n >\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5 3L5 19L9.5 14.5L12.5 21L15 20L12 13.5L18.5 13.5L5 3Z\"\n fill={color}\n stroke={palette.BG_DEEP}\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface CursorWaypoint {\n x: number;\n y: number;\n /** If set, the cursor will pause here for this many frames before moving on. */\n hold?: number;\n /** If true, a click animation will fire when the cursor reaches this point. */\n click?: boolean;\n /** Optional label rendered next to the click target. */\n label?: string;\n}\n\nexport interface CursorFlowProps {\n waypoints?: CursorWaypoint[];\n cursorColor?: string;\n cursorSize?: number;\n segmentDuration?: number;\n background?: string;\n showTargets?: boolean;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\n// Cap the click-target label width so long labels shrink (then ellipsize) rather\n// than stretch the chip across the frame — replaces the old hard maxLength.\nconst LABEL_TEXT_WIDTH = 200;\n\nconst DEFAULT_WAYPOINTS: CursorWaypoint[] = [\n { x: 200, y: 180 },\n { x: 540, y: 240, click: true, label: \"Generate\" },\n { x: 880, y: 360, hold: 8 },\n { x: 1040, y: 520, click: true, label: \"Publish\" },\n];\n\n/**\n * Cubic Bezier evaluator. Two control points are derived per segment so the\n * trajectory always has a \"belly\" — straight lines between two points are\n * specifically the look we want to avoid.\n */\nfunction cubicBezier(\n t: number,\n p0: { x: number; y: number },\n p1: { x: number; y: number },\n p2: { x: number; y: number },\n p3: { x: number; y: number },\n) {\n const u = 1 - t;\n const tt = t * t;\n const uu = u * u;\n const uuu = uu * u;\n const ttt = tt * t;\n return {\n x: uuu * p0.x + 3 * uu * t * p1.x + 3 * u * tt * p2.x + ttt * p3.x,\n y: uuu * p0.y + 3 * uu * t * p1.y + 3 * u * tt * p2.y + ttt * p3.y,\n };\n}\n\n/** Apple-flavoured ease for in-segment motion: slow start, slow end. */\nfunction easeInOut(t: number) {\n return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;\n}\n\n/** Per-segment control points: midpoint perpendicular offset gives a natural arc. */\nfunction controlsFor(\n a: { x: number; y: number },\n b: { x: number; y: number },\n index: number,\n) {\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy) || 1;\n // Perpendicular unit vector. Alternate sign per segment so the path snakes\n // instead of always bulging the same way.\n const sign = index % 2 === 0 ? 1 : -1;\n const px = (-dy / len) * (len * 0.18) * sign;\n const py = (dx / len) * (len * 0.18) * sign;\n // Place control points at 1/3 and 2/3 along the chord, offset perpendicular.\n return [\n { x: a.x + dx / 3 + px, y: a.y + dy / 3 + py },\n { x: a.x + (2 * dx) / 3 + px, y: a.y + (2 * dy) / 3 + py },\n ];\n}\n\nexport function CursorFlow({\n waypoints = DEFAULT_WAYPOINTS,\n cursorColor = palette.TEXT_HI,\n cursorSize = 28,\n segmentDuration = 36,\n background = palette.BG,\n showTargets = true,\n speed = 1,\n className,\n}: CursorFlowProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // Build the timeline: each segment is segmentDuration frames, with optional\n // hold time at each waypoint.\n type SegmentTiming = {\n startFrame: number;\n endFrame: number;\n holdEnd: number;\n };\n const timings: SegmentTiming[] = [];\n let cursorFrame = 0;\n for (let i = 0; i < waypoints.length - 1; i++) {\n const start = cursorFrame;\n const end = start + segmentDuration;\n const holdEnd = end + (waypoints[i + 1].hold ?? 0);\n timings.push({ startFrame: start, endFrame: end, holdEnd });\n cursorFrame = holdEnd;\n }\n\n // Find the active segment.\n let pos = { x: waypoints[0].x, y: waypoints[0].y };\n let activeWaypointIndex = 0;\n for (let i = 0; i < timings.length; i++) {\n const { startFrame, endFrame, holdEnd } = timings[i];\n if (frame >= startFrame && frame < endFrame) {\n const t = easeInOut((frame - startFrame) / segmentDuration);\n const a = waypoints[i];\n const b = waypoints[i + 1];\n const [c1, c2] = controlsFor(a, b, i);\n pos = cubicBezier(t, a, c1, c2, b);\n activeWaypointIndex = i;\n break;\n } else if (frame >= endFrame && frame < holdEnd) {\n pos = { x: waypoints[i + 1].x, y: waypoints[i + 1].y };\n activeWaypointIndex = i + 1;\n break;\n } else if (frame >= holdEnd) {\n pos = { x: waypoints[i + 1].x, y: waypoints[i + 1].y };\n activeWaypointIndex = i + 1;\n }\n }\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n fontFamily: FONT_FAMILY,\n }}\n >\n {/* Click targets */}\n {showTargets &&\n waypoints.map((wp, i) => {\n if (!wp.click) return null;\n // Find when the cursor reaches this waypoint and trigger the press scale.\n const timing = timings[i - 1];\n const arrivalFrame = timing ? timing.endFrame : 0;\n return (\n <ClickTarget\n key={i}\n x={wp.x}\n y={wp.y}\n label={wp.label}\n arrivalFrame={arrivalFrame}\n currentFrame={frame}\n fps={fps}\n />\n );\n })}\n\n {/* Cursor */}\n <Cursor\n x={pos.x}\n y={pos.y}\n size={cursorSize}\n color={cursorColor}\n currentFrame={frame}\n fps={fps}\n clickFrames={timings\n .map((t, i) => (waypoints[i + 1].click ? t.endFrame : -1))\n .filter((f) => f >= 0)}\n />\n\n {/* Cursor active marker just for context — small dot at active waypoint */}\n <div\n style={{\n position: \"absolute\",\n width: 6,\n height: 6,\n left: waypoints[activeWaypointIndex].x - 3,\n top: waypoints[activeWaypointIndex].y - 3,\n borderRadius: \"50%\",\n background: \"rgba(255,255,255,0.04)\",\n pointerEvents: \"none\",\n }}\n />\n </div>\n );\n}\n\nfunction Cursor({\n x,\n y,\n size,\n color,\n currentFrame,\n fps,\n clickFrames,\n}: {\n x: number;\n y: number;\n size: number;\n color: string;\n currentFrame: number;\n fps: number;\n clickFrames: number[];\n}) {\n // Find nearest click moment within ±4 frames; press scale if so.\n let scale = 1;\n for (const cf of clickFrames) {\n const delta = currentFrame - cf;\n if (delta >= 0 && delta <= 4) {\n // 4-frame hard press: 1 → 0.85 → 1\n const press = spring({\n frame: delta,\n fps,\n config: { damping: 22, stiffness: 320, mass: 0.5 },\n });\n scale = interpolate(press, [0, 1], [0.85, 1]);\n break;\n }\n }\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n style={{\n position: \"absolute\",\n left: x,\n top: y,\n transform: `scale(${scale})`,\n transformOrigin: \"0 0\",\n zIndex: 9999,\n filter: \"drop-shadow(0 2px 6px rgba(15,11,7,0.5))\",\n pointerEvents: \"none\",\n }}\n >\n <path\n d=\"M3 2 L3 18 L7 14 L10 21 L13 20 L10 13 L17 13 Z\"\n fill={color}\n stroke={palette.BG}\n strokeWidth=\"1.2\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction ClickTarget({\n x,\n y,\n label,\n arrivalFrame,\n currentFrame,\n fps,\n}: {\n x: number;\n y: number;\n label?: string;\n arrivalFrame: number;\n currentFrame: number;\n fps: number;\n}) {\n // Synced press: when the cursor scales to 0.85, the target dips to 0.98.\n const delta = currentFrame - arrivalFrame;\n let pressScale = 1;\n if (delta >= 0 && delta <= 6) {\n const t = spring({\n frame: delta,\n fps,\n config: { damping: 18, stiffness: 280 },\n });\n pressScale = interpolate(t, [0, 1], [0.98, 1]);\n }\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: x - 70,\n top: y - 22,\n transform: `scale(${pressScale})`,\n transformOrigin: \"center\",\n padding: \"10px 18px\",\n borderRadius: 10,\n background: palette.TEXT_HI,\n color: palette.BG,\n fontSize: 14,\n fontWeight: 600,\n border: \"1px solid \" + palette.BORDER,\n pointerEvents: \"none\",\n }}\n >\n <FitText\n maxFontSize={14}\n maxWidth={LABEL_TEXT_WIDTH}\n maxLines={1}\n fontFamily={FONT_FAMILY}\n fontWeight={600}\n >\n {label ?? \"Click\"}\n </FitText>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport type { ReactNode } from \"react\";\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface MorphingModalRect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface MorphingModalProps {\n from?: MorphingModalRect;\n to?: MorphingModalRect;\n borderRadiusFrom?: number;\n borderRadiusTo?: number;\n morphAt?: number;\n background?: string;\n cardColor?: string;\n textColor?: string;\n mutedColor?: string;\n sourceTitle?: string;\n sourceBody?: string;\n modalTitle?: string;\n modalBody?: string;\n source?: ReactNode;\n modal?: ReactNode;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nconst VIEWPORT_W = 1280;\nconst VIEWPORT_H = 720;\n\nconst DEFAULT_FROM: MorphingModalRect = {\n left: 460,\n top: 260,\n width: 360,\n height: 200,\n};\n\nconst DEFAULT_TO: MorphingModalRect = {\n left: 80,\n top: 60,\n width: VIEWPORT_W - 160,\n height: VIEWPORT_H - 120,\n};\n\nexport function MorphingModal({\n from = DEFAULT_FROM,\n to = DEFAULT_TO,\n borderRadiusFrom = 24,\n borderRadiusTo = 0,\n morphAt = 30,\n background = palette.BG,\n cardColor = palette.SURFACE,\n textColor = palette.TEXT_HI,\n mutedColor = palette.TEXT_MUTED,\n sourceTitle = \"Compose video\",\n sourceBody = \"Click to start a new project\",\n modalTitle = \"New project\",\n modalBody = \"Pick a template, drop your assets, and ship a 30s video in under five minutes. Everything renders deterministically — no flicker, no flaky frames.\",\n source,\n modal,\n speed = 1,\n className,\n}: MorphingModalProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // ONE heavy spring drives all 5 morph properties at once. High mass +\n // low stiffness so the modal \"blooms\" instead of jumping.\n const morph = spring({\n frame: frame - morphAt,\n fps,\n config: { mass: 1.5, damping: 22, stiffness: 110 },\n });\n\n const left = interpolate(morph, [0, 1], [from.left, to.left]);\n const top = interpolate(morph, [0, 1], [from.top, to.top]);\n const width = interpolate(morph, [0, 1], [from.width, to.width]);\n const height = interpolate(morph, [0, 1], [from.height, to.height]);\n const radius = interpolate(morph, [0, 1], [borderRadiusFrom, borderRadiusTo]);\n\n // Backdrop fades in alongside the morph spring.\n const backdropAlpha = interpolate(morph, [0, 1], [0, 0.8]);\n\n // Source content vanishes in the FIRST third of the morph.\n const sourceOpacity = interpolate(morph, [0, 0.33], [1, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n // Modal content arrives in the LAST third with a translateY offset.\n const modalOpacity = interpolate(morph, [0.66, 1], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const modalTy = interpolate(morph, [0.66, 1], [20, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n fontFamily: FONT_FAMILY,\n overflow: \"hidden\",\n }}\n >\n {/* Backdrop dim layer */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: `rgba(0, 0, 0, ${backdropAlpha})`,\n pointerEvents: \"none\",\n }}\n />\n\n {/* Suggestion of a bento grid behind so the morph reads as\n \"card lifting off\". Very low contrast. */}\n <BackgroundGrid />\n\n {/* The morphing card */}\n <div\n style={{\n position: \"absolute\",\n left,\n top,\n width,\n height,\n background: cardColor,\n borderRadius: radius,\n border: `1px solid ${palette.BORDER}`,\n overflow: \"hidden\",\n }}\n >\n {/* Source layer (fades out first) */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n padding: 28,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n gap: 6,\n opacity: sourceOpacity,\n }}\n >\n {source ?? (\n <>\n <FitText\n maxFontSize={20}\n maxWidth={304}\n maxLines={2}\n fontFamily={FONT_FAMILY}\n fontWeight={700}\n letterSpacing=\"-0.01em\"\n style={{ color: textColor }}\n >\n {sourceTitle}\n </FitText>\n <FitText\n maxFontSize={14}\n maxWidth={304}\n maxLines={4}\n fontFamily={FONT_FAMILY}\n style={{ color: mutedColor }}\n >\n {sourceBody}\n </FitText>\n </>\n )}\n </div>\n\n {/* Modal layer (arrives last with translateY) */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n padding: 64,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 24,\n opacity: modalOpacity,\n transform: `translateY(${modalTy}px)`,\n }}\n >\n {modal ?? (\n <>\n <FitText\n maxFontSize={56}\n maxWidth={720}\n maxLines={2}\n fontFamily={FONT_FAMILY}\n fontWeight={700}\n letterSpacing=\"-0.03em\"\n style={{ color: textColor, lineHeight: 1.05 }}\n >\n {modalTitle}\n </FitText>\n <FitText\n maxFontSize={20}\n maxWidth={720}\n maxLines={6}\n fontFamily={FONT_FAMILY}\n style={{ lineHeight: 1.55, color: mutedColor }}\n >\n {modalBody}\n </FitText>\n <div\n style={{\n marginTop: 12,\n display: \"inline-flex\",\n alignSelf: \"flex-start\",\n background: textColor,\n color: cardColor,\n padding: \"12px 22px\",\n borderRadius: 12,\n fontSize: 16,\n fontWeight: 600,\n }}\n >\n Get started\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction BackgroundGrid() {\n // Decorative bento background — 3x2 cards, very low contrast.\n const cells = [\n { x: 80, y: 60, w: 360, h: 200 },\n { x: 460, y: 60, w: 360, h: 200 },\n { x: 840, y: 60, w: 360, h: 200 },\n { x: 80, y: 460, w: 360, h: 200 },\n { x: 840, y: 460, w: 360, h: 200 },\n ];\n return (\n <>\n {cells.map((c, i) => (\n <div\n key={i}\n style={{\n position: \"absolute\",\n left: c.x,\n top: c.y,\n width: c.w,\n height: c.h,\n background: palette.SURFACE,\n borderRadius: 24,\n border: `1px solid ${palette.BORDER_SOFT}`,\n }}\n />\n ))}\n </>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport {\n interpolate,\n interpolateColors,\n spring,\n useCurrentFrame,\n useVideoConfig,\n} from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface ProgressStepsProps {\n steps?: Array<{ label: string }>;\n orientation?: \"horizontal\" | \"vertical\";\n activeColor?: string;\n inactiveColor?: string;\n background?: string;\n textColor?: string;\n stepDuration?: number;\n speed?: number;\n className?: string;\n}\n\nexport function ProgressSteps({\n steps = [{ label: \"Connect\" }, { label: \"Process\" }, { label: \"Deploy\" }],\n orientation = \"horizontal\",\n activeColor = palette.SUCCESS,\n inactiveColor = palette.SURFACE_HI,\n background = palette.BG,\n textColor = palette.TEXT_HI,\n stepDuration = 30,\n speed = 1,\n className,\n}: ProgressStepsProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n const isHorizontal = orientation === \"horizontal\";\n const trackLength = isHorizontal ? 920 : 520;\n const segmentLength = trackLength / Math.max(steps.length - 1, 1);\n const nodeRadius = 22;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily:\n \"inherit\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: isHorizontal ? \"row\" : \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 0,\n }}\n >\n {/* SVG layer for connecting lines */}\n <svg\n style={{\n position: \"absolute\",\n left: isHorizontal ? nodeRadius : \"50%\",\n top: isHorizontal ? \"50%\" : nodeRadius,\n transform: isHorizontal ? \"translateY(-50%)\" : \"translateX(-50%)\",\n overflow: \"visible\",\n pointerEvents: \"none\",\n }}\n width={isHorizontal ? trackLength : 4}\n height={isHorizontal ? 4 : trackLength}\n >\n {steps.slice(0, -1).map((_, i) => {\n const lineStart = (i + 1) * stepDuration;\n const fillProgress = interpolate(\n frame,\n [lineStart, lineStart + stepDuration],\n [segmentLength, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n return (\n <line\n key={i}\n x1={isHorizontal ? i * segmentLength : 2}\n y1={isHorizontal ? 2 : i * segmentLength}\n x2={isHorizontal ? (i + 1) * segmentLength : 2}\n y2={isHorizontal ? 2 : (i + 1) * segmentLength}\n stroke={activeColor}\n strokeWidth={4}\n strokeLinecap=\"round\"\n strokeDasharray={segmentLength}\n strokeDashoffset={fillProgress}\n />\n );\n })}\n {/* Background track */}\n {steps.slice(0, -1).map((_, i) => (\n <line\n key={`bg-${i}`}\n x1={isHorizontal ? i * segmentLength : 2}\n y1={isHorizontal ? 2 : i * segmentLength}\n x2={isHorizontal ? (i + 1) * segmentLength : 2}\n y2={isHorizontal ? 2 : (i + 1) * segmentLength}\n stroke={inactiveColor}\n strokeWidth={4}\n strokeLinecap=\"round\"\n style={{ opacity: 0.6 }}\n />\n ))}\n </svg>\n\n {steps.map((step, i) => {\n const activateAt = i * stepDuration;\n const localFrame = frame - activateAt;\n const popScale = spring({\n frame: localFrame,\n fps,\n config: { damping: 10, stiffness: 180, mass: 0.6 },\n });\n const scale = interpolate(popScale, [0, 1], [0.8, 1]);\n const fill = interpolateColors(\n frame,\n [activateAt, activateAt + 8],\n [inactiveColor, activeColor],\n );\n const showCheck = interpolate(\n frame,\n [activateAt + 6, activateAt + 14],\n [0, 1],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n return (\n <div\n key={i}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: isHorizontal ? \"column\" : \"row\",\n alignItems: \"center\",\n gap: 14,\n width: isHorizontal ? segmentLength : \"auto\",\n height: isHorizontal ? \"auto\" : segmentLength,\n marginRight:\n isHorizontal && i === steps.length - 1 ? 0 : -segmentLength,\n marginBottom:\n !isHorizontal && i === steps.length - 1 ? 0 : -segmentLength,\n zIndex: 2,\n }}\n >\n <div\n style={{\n width: nodeRadius * 2,\n height: nodeRadius * 2,\n borderRadius: 999,\n background: fill,\n border: `2px solid ${activeColor}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: `scale(${scale})`,\n transformOrigin: \"center\",\n boxShadow: `0 0 0 6px ${activeColor}1a`,\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n style={{ opacity: showCheck }}\n >\n <path\n d=\"M5 12.5l4.5 4.5L19 7\"\n stroke={palette.TEXT_HI}\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n <FitText\n maxFontSize={15}\n maxWidth={isHorizontal ? segmentLength : 300}\n maxLines={2}\n fontFamily=\"inherit\"\n fontWeight={500}\n letterSpacing=\"-0.01em\"\n style={{\n color: textColor,\n textAlign: \"center\",\n position: isHorizontal ? \"absolute\" : \"static\",\n top: isHorizontal ? nodeRadius * 2 + 14 : undefined,\n }}\n >\n {step.label}\n </FitText>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport * as palette from '../../lib/palette';\n\nexport interface BadgePopProps {\n /** Badge copy ('NEW', 'v2.0', 'BETA'). Short + loud. */\n text?: string;\n /** Smaller line after the badge ('Now generally available'). */\n sublabel?: string;\n /** Badge fill. */\n accentColor?: string;\n /** Badge text color. */\n textColor?: string;\n /** Where the badge sits. */\n position?: 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n /** Base badge font size in px (default 44). */\n fontSize?: number;\n}\n\n/**\n * A release badge that ARRIVES: spring pop with overshoot, a shine sweep across\n * the pill as it settles, then an idle pulse ring every few seconds so it stays\n * alive without shouting. The \"NEW / v2.0 / BETA\" moment.\n */\nexport const BadgePop: React.FC<BadgePopProps> = ({\n text = 'NEW',\n sublabel = '',\n accentColor = palette.ACCENT,\n textColor = palette.BG,\n position = 'center',\n fontSize = 44,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const fontFamily = resolveTypeface('display');\n\n const pop = spring({ frame, fps, config: { damping: 10, stiffness: 160, mass: 0.7 } });\n const scale = interpolate(pop, [0, 1], [0.2, 1]);\n const opacity = interpolate(pop, [0, 0.25], [0, 1], { extrapolateRight: 'clamp' });\n\n // Shine sweep as it settles.\n const shineX = interpolate(frame, [8, 26], [-130, 130], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n\n // Idle pulse ring every ~2.5s after settle.\n const PULSE_PERIOD = 75;\n const settled = pop > 0.98;\n const pulseLocal = settled ? frame % PULSE_PERIOD : 0;\n const ringP = interpolate(pulseLocal, [0, 30], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n const showRing = settled && pulseLocal <= 30;\n\n const subIn = spring({\n frame: frame - 14,\n fps,\n config: { damping: 15, stiffness: 110, mass: 0.8 },\n });\n\n const place: React.CSSProperties =\n position === 'center'\n ? { justifyContent: 'center', alignItems: 'center' }\n : {\n justifyContent: position.includes('top') ? 'flex-start' : 'flex-end',\n alignItems: position.includes('left') ? 'flex-start' : 'flex-end',\n padding: 90,\n };\n\n return (\n <AbsoluteFill style={{ ...place, display: 'flex', flexDirection: 'column' }}>\n <div style={{ position: 'relative', opacity, transform: `scale(${scale})` }}>\n {showRing && (\n <div\n style={{\n position: 'absolute',\n inset: -6,\n borderRadius: 999,\n border: `2px solid ${accentColor}`,\n opacity: (1 - ringP) * 0.6,\n transform: `scale(${1 + ringP * 0.35})`,\n }}\n />\n )}\n <div\n style={{\n position: 'relative',\n overflow: 'hidden',\n background: accentColor,\n color: textColor,\n fontFamily,\n fontSize,\n fontWeight: 800,\n letterSpacing: '0.1em',\n padding: `${fontSize * 0.35}px ${fontSize * 0.75}px`,\n borderRadius: 999,\n }}\n >\n {text}\n <div\n style={{\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: `${shineX}%`,\n width: '40%',\n background:\n 'linear-gradient(105deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%)',\n }}\n />\n </div>\n </div>\n {sublabel && (\n <div\n style={{\n fontFamily,\n fontSize: fontSize * 0.5,\n fontWeight: 500,\n color: palette.TEXT,\n textShadow: '0 2px 12px rgba(0,0,0,0.9)',\n marginTop: fontSize * 0.45,\n opacity: interpolate(subIn, [0, 1], [0, 0.85]),\n transform: `translateY(${interpolate(subIn, [0, 1], [12, 0])}px)`,\n }}\n >\n {sublabel}\n </div>\n )}\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, Easing, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport { FLOOR_SHADOW } from '../../lib/text/contrast';\nimport * as palette from '../../lib/palette';\n\nexport interface BenchmarkItem {\n label: string;\n value: number;\n}\n\nexport interface BenchmarkBarsProps {\n /** Rows to compare. 3–6 reads best. */\n items?: BenchmarkItem[];\n /** Index of OUR row — accented, lands last, glows. */\n heroIndex?: number;\n /** Unit suffix on the values ('%', 'pts'). */\n unit?: string;\n /** Chart title. */\n title?: string;\n /** Hero bar accent. */\n accentColor?: string;\n /** Scale maximum; defaults to the max value + headroom. */\n maxValue?: number;\n}\n\n/**\n * The benchmark slide: horizontal bars race out with a stagger — the hero row\n * (ours) arrives LAST, overshoots, lands with a glow, and the other rows dim in\n * deference. Values count up in tabular numerals. Idle: the hero glow breathes.\n */\nexport const BenchmarkBars: React.FC<BenchmarkBarsProps> = ({\n items = [\n { label: 'atlas-1 (ours)', value: 94.2 },\n { label: 'orion-72b', value: 88.7 },\n { label: 'sable-large', value: 86.1 },\n { label: 'nimbus-2', value: 81.4 },\n ],\n heroIndex = 0,\n unit = '%',\n title = 'Reasoning benchmark',\n accentColor = palette.ACCENT,\n maxValue,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const fontFamily = resolveTypeface('display');\n\n const max = maxValue ?? Math.max(...items.map((i) => i.value)) * 1.08;\n\n // Non-hero rows enter first (staggered); the hero enters after them.\n const order = items.map((_, i) => i).sort((a, b) => (a === heroIndex ? 1 : b === heroIndex ? -1 : a - b));\n const startOf = (i: number) => 8 + order.indexOf(i) * 9 + (i === heroIndex ? 10 : 0);\n\n const heroStart = startOf(heroIndex);\n const heroLanded = frame > heroStart + 34;\n const dimOthers = interpolate(frame, [heroStart + 30, heroStart + 48], [1, 0.45], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n\n const titleIn = spring({ frame: frame - 2, fps, config: { damping: 15, stiffness: 120, mass: 0.8 } });\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div\n style={{\n width: '62%',\n background: 'rgba(10,10,16,0.62)',\n border: '1px solid rgba(255,255,255,0.12)',\n borderRadius: 24,\n padding: '44px 52px',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n }}\n >\n <div\n style={{\n fontFamily,\n fontSize: 30,\n fontWeight: 600,\n letterSpacing: '0.1em',\n textTransform: 'uppercase',\n color: palette.TEXT,\n opacity: interpolate(titleIn, [0, 1], [0, 0.65]),\n transform: `translateY(${interpolate(titleIn, [0, 1], [12, 0])}px)`,\n marginBottom: 34,\n textShadow: FLOOR_SHADOW,\n }}\n >\n {title}\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>\n {items.map((item, i) => {\n const isHero = i === heroIndex;\n const start = startOf(i);\n const p = interpolate(frame, [start, start + 30], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.out(Easing.exp),\n });\n const overshoot = isHero\n ? spring({ frame: frame - start, fps, config: { damping: 12, stiffness: 90, mass: 1 } })\n : p;\n const w = (item.value / max) * 100 * (isHero ? overshoot : p);\n const shown = (item.value * p).toFixed(item.value % 1 === 0 ? 0 : 1);\n const glow = isHero && heroLanded ? 0.5 + Math.sin(2 * Math.PI * 0.45 * t) * 0.25 : 0;\n const rowOpacity = isHero ? 1 : dimOthers;\n\n return (\n <div key={i} style={{ opacity: p > 0 ? rowOpacity : 0 }}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n fontFamily,\n fontSize: 26,\n marginBottom: 8,\n color: palette.TEXT,\n textShadow: FLOOR_SHADOW,\n }}\n >\n <span style={{ fontWeight: isHero ? 800 : 500 }}>{item.label}</span>\n <span\n style={{\n fontWeight: 800,\n fontVariantNumeric: 'tabular-nums',\n color: isHero ? accentColor : palette.TEXT,\n }}\n >\n {shown}\n {unit}\n </span>\n </div>\n <div\n style={{\n height: isHero ? 26 : 20,\n borderRadius: 999,\n background: 'rgba(255,255,255,0.08)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n height: '100%',\n width: `${Math.max(0, w)}%`,\n borderRadius: 999,\n background: isHero\n ? `linear-gradient(90deg, ${accentColor}aa, ${accentColor})`\n : 'linear-gradient(90deg, rgba(255,255,255,0.35), rgba(255,255,255,0.55))',\n boxShadow: isHero ? `0 0 ${10 + glow * 10}px ${accentColor}${heroLanded ? '88' : '44'}` : 'none',\n }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport * as palette from '../../lib/palette';\n\nexport interface ChatExchangeProps {\n /** The user's message. */\n userText?: string;\n /** The assistant's streamed reply. */\n assistantText?: string;\n userLabel?: string;\n assistantLabel?: string;\n /** Assistant avatar + cursor accent. */\n accentColor?: string;\n /** Average reply tokens per second (default 10). */\n tokensPerSecond?: number;\n}\n\nfunction jitter(i: number, seed: number): number {\n let h = Math.imul(i + 1, 374761393) + Math.imul(seed, 668265263);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n return ((h ^ (h >>> 16)) >>> 0) / 4294967295;\n}\n\n/**\n * The product IS a conversation: the user's bubble springs in from the right,\n * the assistant \"thinks\" (three breathing dots), then streams its reply token\n * by token in a left bubble that grows with the text. Idles with a settled\n * exchange and a softly breathing assistant avatar.\n */\nexport const ChatExchange: React.FC<ChatExchangeProps> = ({\n userText = 'Can you turn yesterday’s standup into action items?',\n assistantText = 'Done — 6 action items, 2 owners missing. I drafted assignments based on who spoke; review them on the board.',\n userLabel = 'You',\n assistantLabel = 'Assistant',\n accentColor = palette.ACCENT,\n tokensPerSecond = 10,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const fontFamily = resolveTypeface('display');\n\n const USER_AT = 4;\n const THINK_AT = USER_AT + 14;\n const REPLY_AT = THINK_AT + 26;\n\n const userIn = spring({ frame: frame - USER_AT, fps, config: { damping: 14, stiffness: 140, mass: 0.8 } });\n\n // Assistant token arrivals.\n const words = assistantText.split(' ').filter(Boolean);\n const base = fps / tokensPerSecond;\n const arrivals: number[] = [];\n let acc = REPLY_AT;\n for (let i = 0; i < words.length; i++) {\n acc += base * (0.6 + jitter(i, 11) * 0.8);\n arrivals.push(acc);\n }\n const replyStarted = frame >= REPLY_AT;\n const replyDone = arrivals.length ? frame > arrivals[arrivals.length - 1] + 4 : true;\n\n const thinkVisible = frame >= THINK_AT && !replyStarted;\n const assistantIn = spring({ frame: frame - THINK_AT, fps, config: { damping: 15, stiffness: 130, mass: 0.8 } });\n\n // Idle: avatar breathes once settled.\n const avatarPulse = replyDone ? 1 + Math.sin(2 * Math.PI * 0.5 * t) * 0.06 : 1;\n\n const bubbleBase: React.CSSProperties = {\n fontFamily,\n fontSize: 34,\n lineHeight: 1.4,\n fontWeight: 500,\n padding: '20px 26px',\n borderRadius: 20,\n maxWidth: '78%',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n };\n\n const roleLabel: React.CSSProperties = {\n fontFamily,\n fontSize: 18,\n fontWeight: 600,\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n opacity: 0.5,\n color: palette.TEXT,\n marginBottom: 8,\n };\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div style={{ width: '58%', display: 'flex', flexDirection: 'column', gap: 34 }}>\n {/* User bubble — right aligned */}\n <div\n style={{\n alignSelf: 'flex-end',\n textAlign: 'right',\n opacity: interpolate(userIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateX(${interpolate(userIn, [0, 1], [40, 0])}px)`,\n }}\n >\n <div style={roleLabel}>{userLabel}</div>\n <div\n style={{\n ...bubbleBase,\n background: `${palette.TEXT_HI}eb`,\n color: palette.BG,\n borderBottomRightRadius: 6,\n textAlign: 'left',\n }}\n >\n {userText}\n </div>\n </div>\n\n {/* Assistant row */}\n <div\n style={{\n alignSelf: 'flex-start',\n display: 'flex',\n gap: 18,\n opacity: interpolate(assistantIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateY(${interpolate(assistantIn, [0, 1], [24, 0])}px)`,\n maxWidth: '100%',\n }}\n >\n <div\n style={{\n width: 46,\n height: 46,\n borderRadius: '50%',\n flexShrink: 0,\n marginTop: 30,\n background: `radial-gradient(circle at 35% 30%, ${accentColor}, ${palette.ACCENT_DEEP})`,\n transform: `scale(${avatarPulse})`,\n }}\n />\n <div>\n <div style={roleLabel}>{assistantLabel}</div>\n <div\n style={{\n ...bubbleBase,\n background: 'rgba(13,13,20,0.72)',\n border: '1px solid rgba(255,255,255,0.14)',\n color: palette.TEXT,\n borderBottomLeftRadius: 6,\n }}\n >\n {thinkVisible ? (\n <span style={{ display: 'inline-flex', gap: 8, padding: '4px 2px' }}>\n {[0, 1, 2].map((d) => (\n <span\n key={d}\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n background: palette.TEXT,\n opacity: 0.35 + Math.sin(2 * Math.PI * 1.1 * t - d * 0.9) * 0.3 + 0.3,\n }}\n />\n ))}\n </span>\n ) : (\n <>\n {/* All words render at once (invisible until arrival) so the\n bubble takes its final size at reply start — no line-wrap\n jumps while streaming. The cursor rides the last-arrived\n word via absolute positioning (zero layout impact). */}\n {words.map((w, i) => {\n const o = interpolate(frame, [arrivals[i], arrivals[i] + 4], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n const arrivedCount = arrivals.filter((a) => frame >= a).length;\n const isCursorWord = i === Math.max(0, arrivedCount - 1);\n return (\n <span\n key={i}\n style={{ position: 'relative', display: 'inline-block', marginRight: '0.24em' }}\n >\n <span style={{ opacity: o }}>{w}</span>\n {isCursorWord && !replyDone && (\n <span\n style={{\n position: 'absolute',\n left: arrivedCount === 0 ? 0 : '100%',\n marginLeft: arrivedCount === 0 ? 0 : '0.12em',\n bottom: 2,\n width: 14,\n height: 30,\n background: accentColor,\n borderRadius: 2,\n opacity: 0.55 + Math.sin(2 * Math.PI * 2.2 * t) * 0.45,\n }}\n />\n )}\n </span>\n );\n })}\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, Easing, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport { FLOOR_SHADOW } from '../../lib/text/contrast';\nimport * as palette from '../../lib/palette';\n\nexport interface ContextMeterProps {\n /** Headline capacity ('1M'). */\n capacity?: string;\n /** Sub-unit after the capacity ('tokens of context'). */\n capacityLabel?: string;\n /** Where the fill settles, 0–1 (default 0.72 — big but not full). */\n fillTo?: number;\n /** Document chips that fly into the bar (default 7). */\n chips?: number;\n /** Fill + chip accent. */\n accentColor?: string;\n}\n\nfunction jitter(i: number, seed: number): number {\n let h = Math.imul(i + 1, 374761393) + Math.imul(seed, 668265263);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n return ((h ^ (h >>> 16)) >>> 0) / 4294967295;\n}\n\n/**\n * The context-window flex: document chips fly in from the right and compress\n * into a capacity bar as the fill rises; the headline capacity counts up above.\n * At idle a chip keeps drifting in every ~2.5s — the window is never \"done\"\n * swallowing your docs.\n */\nexport const ContextMeter: React.FC<ContextMeterProps> = ({\n capacity = '1M',\n capacityLabel = 'tokens of context',\n fillTo = 0.72,\n chips = 7,\n accentColor = palette.ACCENT,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const fontFamily = resolveTypeface('display');\n\n const FILL_START = 12;\n const FILL_FRAMES = 55;\n const fill = interpolate(frame, [FILL_START, FILL_START + FILL_FRAMES], [0, fillTo], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.out(Easing.cubic),\n });\n\n const headIn = spring({ frame: frame - 4, fps, config: { damping: 15, stiffness: 120, mass: 0.9 } });\n\n // Chips: initial wave during the fill + an idle drip afterwards (loop).\n const IDLE_PERIOD = 75;\n const chipEls: React.ReactNode[] = [];\n const totalChips = chips + Math.max(0, Math.floor((frame - (FILL_START + FILL_FRAMES)) / IDLE_PERIOD) + 1);\n for (let i = 0; i < totalChips; i++) {\n const isIdle = i >= chips;\n const start = isIdle\n ? FILL_START + FILL_FRAMES + (i - chips) * IDLE_PERIOD + 20\n : FILL_START + (i / chips) * FILL_FRAMES * 0.8 + jitter(i, 5) * 6;\n const life = frame - start;\n if (life < 0 || life > 34) continue;\n const p = interpolate(life, [0, 30], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.bezier(0.5, 0, 0.3, 1),\n });\n const lane = jitter(i, 9);\n chipEls.push(\n <div\n key={i}\n style={{\n position: 'absolute',\n right: `${p * 76}%`,\n top: `${-90 - lane * 70 + p * (110 + lane * 70)}px`,\n width: 54 * (1 - p * 0.55),\n height: 66 * (1 - p * 0.55),\n borderRadius: 8,\n background: 'rgba(255,255,255,0.14)',\n border: `1px solid rgba(255,255,255,0.35)`,\n opacity: p < 0.85 ? 0.9 : (1 - p) * 6,\n padding: 7,\n boxSizing: 'border-box',\n }}\n >\n {[0.9, 0.7, 0.8].map((w, li) => (\n <div\n key={li}\n style={{\n height: 4,\n width: `${w * 100}%`,\n background: 'rgba(255,255,255,0.5)',\n borderRadius: 2,\n marginBottom: 5,\n }}\n />\n ))}\n </div>,\n );\n }\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div\n style={{\n width: '58%',\n position: 'relative',\n background: 'rgba(20,16,12,0.62)',\n border: '1px solid rgba(255,255,255,0.12)',\n borderRadius: 24,\n padding: '44px 52px',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n }}\n >\n <div\n style={{\n fontFamily,\n textAlign: 'center',\n marginBottom: 54,\n opacity: interpolate(headIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateY(${interpolate(headIn, [0, 1], [16, 0])}px)`,\n }}\n >\n <span\n style={{\n fontSize: 150,\n fontWeight: 800,\n letterSpacing: '-0.03em',\n color: palette.TEXT,\n textShadow: FLOOR_SHADOW,\n }}\n >\n {capacity}\n </span>\n <span\n style={{\n fontSize: 40,\n fontWeight: 500,\n color: palette.TEXT,\n opacity: 0.65,\n marginLeft: 18,\n textShadow: FLOOR_SHADOW,\n }}\n >\n {capacityLabel}\n </span>\n </div>\n\n <div style={{ position: 'relative' }}>\n {chipEls}\n <div\n style={{\n height: 34,\n borderRadius: 999,\n background: 'rgba(255,255,255,0.09)',\n border: '1px solid rgba(255,255,255,0.16)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n height: '100%',\n width: `${fill * 100}%`,\n borderRadius: 999,\n background: `linear-gradient(90deg, ${accentColor}88, ${accentColor})`,\n }}\n />\n </div>\n <div\n style={{\n fontFamily,\n fontSize: 20,\n fontWeight: 600,\n letterSpacing: '0.1em',\n color: palette.TEXT,\n opacity: 0.5,\n marginTop: 14,\n display: 'flex',\n justifyContent: 'space-between',\n textShadow: FLOOR_SHADOW,\n }}\n >\n <span>{Math.round(fill * 100)}% USED</span>\n <span>ROOM FOR EVERYTHING</span>\n </div>\n </div>\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, Easing, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport * as palette from '../../lib/palette';\n\nexport interface EvalRow {\n name: string;\n /** Score 0–1. */\n score: number;\n}\n\nexport interface EvalScorecardProps {\n /** Eval rows. */\n rows?: EvalRow[];\n /** Pass threshold 0–1 (default 0.9) — at/above = green badge, below = amber. */\n threshold?: number;\n /** Card title. */\n title?: string;\n /** Pass accent. */\n accentColor?: string;\n}\n\n/**\n * Eval culture, cinematized: rows cascade in, each score bar fills to its value\n * with a counting percentage, and a pass badge pops — green at/above threshold,\n * amber below. The summary line lands last (\"11/12 passing\"). Idle: pass badges\n * shimmer faintly in sequence.\n */\nexport const EvalScorecard: React.FC<EvalScorecardProps> = ({\n rows = [\n { name: 'Instruction following', score: 0.97 },\n { name: 'Tool-use accuracy', score: 0.94 },\n { name: 'Long-context recall', score: 0.92 },\n { name: 'Refusal calibration', score: 0.88 },\n ],\n threshold = 0.9,\n title = 'Eval suite',\n accentColor = palette.SUCCESS,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const fontFamily = resolveTypeface('display');\n\n const START = 10;\n const ROW_FRAMES = 20;\n const summaryAt = START + rows.length * ROW_FRAMES + 12;\n const passing = rows.filter((r) => r.score >= threshold).length;\n\n const cardIn = spring({ frame, fps, config: { damping: 15, stiffness: 120, mass: 0.9 } });\n const summaryIn = spring({ frame: frame - summaryAt, fps, config: { damping: 13, stiffness: 140, mass: 0.8 } });\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div\n style={{\n width: 700,\n background: `${palette.BG}c7`,\n border: `1px solid ${palette.BORDER_SOFT}`,\n borderRadius: 22,\n padding: '34px 40px',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n opacity: interpolate(cardIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateY(${interpolate(cardIn, [0, 1], [26, 0])}px)`,\n }}\n >\n <div\n style={{\n fontFamily,\n fontSize: 22,\n fontWeight: 600,\n letterSpacing: '0.1em',\n textTransform: 'uppercase',\n color: palette.TEXT,\n opacity: 0.55,\n marginBottom: 26,\n }}\n >\n {title}\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 22 }}>\n {rows.map((row, i) => {\n // Rows always render (springs hold them invisible pre-start) so the\n // card is final-size from frame 0 — no re-center jump per row mount.\n const start = START + i * ROW_FRAMES;\n const rowIn = spring({ frame: frame - start, fps, config: { damping: 15, stiffness: 130, mass: 0.7 } });\n const fillP = interpolate(frame, [start + 4, start + 26], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.out(Easing.cubic),\n });\n const pct = Math.round(row.score * 100 * fillP);\n const pass = row.score >= threshold;\n const badgeAt = start + 26;\n const badgeIn = spring({ frame: frame - badgeAt, fps, config: { damping: 11, stiffness: 190, mass: 0.6 } });\n const badgeColor = pass ? accentColor : palette.WARNING;\n\n return (\n <div\n key={i}\n style={{\n opacity: interpolate(rowIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateX(${interpolate(rowIn, [0, 1], [-16, 0])}px)`,\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 9,\n }}\n >\n <span style={{ fontFamily, fontSize: 26, fontWeight: 500, color: palette.TEXT }}>\n {row.name}\n </span>\n <span style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <span\n style={{\n fontFamily,\n fontSize: 24,\n fontWeight: 800,\n fontVariantNumeric: 'tabular-nums',\n color: palette.TEXT,\n }}\n >\n {pct}%\n </span>\n <span\n style={{\n fontFamily,\n fontSize: 15,\n fontWeight: 800,\n letterSpacing: '0.06em',\n color: palette.BG,\n background: badgeColor,\n padding: '4px 12px',\n borderRadius: 999,\n opacity: interpolate(badgeIn, [0, 0.3], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `scale(${interpolate(badgeIn, [0, 1], [0.4, 1])})`,\n }}\n >\n {pass ? 'PASS' : 'NEAR'}\n </span>\n </span>\n </div>\n <div\n style={{\n height: 12,\n borderRadius: 999,\n background: palette.BORDER_SOFT,\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n height: '100%',\n width: `${row.score * 100 * fillP}%`,\n borderRadius: 999,\n background: pass\n ? `linear-gradient(90deg, ${accentColor}99, ${accentColor})`\n : `linear-gradient(90deg, ${palette.WARNING}99, ${palette.WARNING})`,\n }}\n />\n </div>\n </div>\n );\n })}\n </div>\n <div\n style={{\n fontFamily,\n fontSize: 24,\n fontWeight: 700,\n color: accentColor,\n marginTop: 28,\n paddingTop: 22,\n borderTop: `1px solid ${palette.BORDER_SOFT}`,\n opacity: interpolate(summaryIn, [0, 0.5], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateY(${interpolate(summaryIn, [0, 1], [10, 0])}px)`,\n fontVariantNumeric: 'tabular-nums',\n }}\n >\n {passing}/{rows.length} passing at {Math.round(threshold * 100)}% threshold\n </div>\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, Easing, interpolate, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport { FLOOR_SHADOW } from '../../lib/text/contrast';\nimport * as palette from '../../lib/palette';\n\nexport interface MetricGaugeProps {\n /** The measured value. */\n value?: number;\n /** Unit after the number ('ms', 'tok/s'). */\n unit?: string;\n /** Uppercase label under the readout. */\n label?: string;\n /** Gauge scale minimum/maximum. */\n min?: number;\n max?: number;\n /** Needle + fill accent. */\n accentColor?: string;\n /** Decimal places. */\n decimals?: number;\n}\n\nfunction jitter(i: number, seed: number): number {\n let h = Math.imul(i + 1, 374761393) + Math.imul(seed, 668265263);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n return ((h ^ (h >>> 16)) >>> 0) / 4294967295;\n}\n\n/**\n * The latency brag: a 240° arc gauge sweeps to the measured value with an expo\n * settle while the readout counts in tabular numerals. At idle the needle\n * micro-jitters like a live instrument (deterministic) and the arc glow\n * breathes. \"87ms time to first token.\"\n */\nexport const MetricGauge: React.FC<MetricGaugeProps> = ({\n value = 87,\n unit = 'ms',\n label = 'TIME TO FIRST TOKEN',\n min = 0,\n max = 500,\n accentColor = palette.ACCENT,\n decimals = 0,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const fontFamily = resolveTypeface('display');\n\n const SWEEP_FRAMES = 40;\n const p = interpolate(frame, [6, 6 + SWEEP_FRAMES], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.out(Easing.exp),\n });\n const settled = frame > 6 + SWEEP_FRAMES;\n\n // Live-instrument micro-jitter at idle: small deterministic wander.\n const wobble = settled\n ? (jitter(Math.floor(frame / 4), 3) - 0.5) * 0.012 +\n Math.sin(2 * Math.PI * 0.3 * t) * 0.004\n : 0;\n\n const frac = Math.min(1, Math.max(0, (value - min) / (max - min)));\n const shownFrac = frac * p + wobble;\n const shownValue = (value * p).toLocaleString('en-US', {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n\n // 240° arc: from 150° to 390° (opening faces down).\n const R = 210;\n const CX = 260;\n const CY = 260;\n const startDeg2 = 150;\n const spanDeg = 240;\n const degFor = (f: number) => startDeg2 + f * spanDeg;\n const arc = (fromFrac: number, toFrac: number): string => {\n const a0 = (degFor(fromFrac) * Math.PI) / 180;\n const a1 = (degFor(toFrac) * Math.PI) / 180;\n const large = (toFrac - fromFrac) * spanDeg > 180 ? 1 : 0;\n return `M ${CX + R * Math.cos(a0)} ${CY + R * Math.sin(a0)} A ${R} ${R} 0 ${large} 1 ${CX + R * Math.cos(a1)} ${CY + R * Math.sin(a1)}`;\n };\n\n const needleDeg = degFor(Math.min(1, Math.max(0, shownFrac))) ;\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div style={{ position: 'relative', width: 520, height: 470 }}>\n <svg width={520} height={470} viewBox=\"0 0 520 470\">\n {/* Track */}\n <path d={arc(0, 1)} fill=\"none\" stroke={palette.BORDER_SOFT} strokeWidth={18} strokeLinecap=\"round\" />\n {/* Fill */}\n <path\n d={arc(0, Math.min(1, Math.max(0.001, shownFrac)))}\n fill=\"none\"\n stroke={accentColor}\n strokeWidth={18}\n strokeLinecap=\"round\"\n />\n {/* Ticks */}\n {Array.from({ length: 9 }, (_, i) => {\n const a = ((startDeg2 + (i / 8) * spanDeg) * Math.PI) / 180;\n return (\n <line\n key={i}\n x1={CX + (R - 34) * Math.cos(a)}\n y1={CY + (R - 34) * Math.sin(a)}\n x2={CX + (R - 22) * Math.cos(a)}\n y2={CY + (R - 22) * Math.sin(a)}\n stroke={palette.TEXT_FAINT}\n strokeWidth={3}\n strokeLinecap=\"round\"\n />\n );\n })}\n {/* Needle */}\n <line\n x1={CX}\n y1={CY}\n x2={CX + (R - 48) * Math.cos((needleDeg * Math.PI) / 180)}\n y2={CY + (R - 48) * Math.sin((needleDeg * Math.PI) / 180)}\n stroke={palette.TEXT}\n strokeWidth={5}\n strokeLinecap=\"round\"\n />\n <circle cx={CX} cy={CY} r={12} fill={palette.TEXT} />\n </svg>\n <div style={{ position: 'absolute', left: 0, right: 0, top: 300, textAlign: 'center' }}>\n <div\n style={{\n fontFamily,\n fontSize: 96,\n fontWeight: 800,\n color: palette.TEXT,\n fontVariantNumeric: 'tabular-nums',\n letterSpacing: '-0.02em',\n textShadow: FLOOR_SHADOW,\n lineHeight: 1,\n }}\n >\n {shownValue}\n <span style={{ fontSize: 44, color: accentColor, fontWeight: 700, marginLeft: 6 }}>{unit}</span>\n </div>\n <div\n style={{\n fontFamily,\n fontSize: 22,\n fontWeight: 600,\n letterSpacing: '0.16em',\n textTransform: 'uppercase',\n color: palette.TEXT,\n opacity: interpolate(frame, [30, 45], [0, 0.6], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' }),\n marginTop: 16,\n textShadow: FLOOR_SHADOW,\n }}\n >\n {label}\n </div>\n </div>\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport * as palette from '../../lib/palette';\n\nexport interface ReasoningTraceProps {\n /** Steps in order. Each: spinner → label → check. */\n steps?: string[];\n /** Card title. */\n title?: string;\n /** Check + active-step accent. */\n accentColor?: string;\n /** Frames per step (default 26). */\n stepFrames?: number;\n}\n\n/**\n * The agent trace: steps cascade in — spinner ring turns while a step is\n * \"running\", then the label settles and a check pops with spring weight.\n * The final step lands in the accent color. Idle: a faint shimmer scans the\n * completed list so the card never freezes.\n */\nexport const ReasoningTrace: React.FC<ReasoningTraceProps> = ({\n steps = ['Reading the thread', 'Pulling related tickets', 'Drafting a fix plan', 'Ready for review'],\n title = 'Working on it',\n accentColor = palette.ACCENT,\n stepFrames = 26,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const fontFamily = resolveTypeface('display');\n\n const START = 8;\n const allDone = frame > START + steps.length * stepFrames + 10;\n const shimmerY = ((t * 0.35) % 1) * 100;\n\n const cardIn = spring({ frame, fps, config: { damping: 15, stiffness: 120, mass: 0.9 } });\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div\n style={{\n position: 'relative',\n width: 640,\n background: `${palette.BG}c7`,\n border: `1px solid ${palette.BORDER_SOFT}`,\n borderRadius: 22,\n padding: '34px 40px',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n overflow: 'hidden',\n opacity: interpolate(cardIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateY(${interpolate(cardIn, [0, 1], [26, 0])}px)`,\n }}\n >\n {allDone && (\n <div\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n top: `${shimmerY}%`,\n height: 90,\n background: `linear-gradient(180deg, transparent, ${palette.TEXT_HI}0b, transparent)`,\n pointerEvents: 'none',\n }}\n />\n )}\n <div\n style={{\n fontFamily,\n fontSize: 22,\n fontWeight: 600,\n letterSpacing: '0.1em',\n textTransform: 'uppercase',\n color: palette.TEXT,\n opacity: 0.55,\n marginBottom: 24,\n }}\n >\n {title}\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 20 }}>\n {steps.map((step, i) => {\n const start = START + i * stepFrames;\n const doneAt = start + stepFrames;\n const isLast = i === steps.length - 1;\n const running = frame >= start && frame < doneAt;\n const done = frame >= doneAt;\n const rowIn = spring({ frame: frame - start, fps, config: { damping: 15, stiffness: 130, mass: 0.7 } });\n const checkIn = spring({ frame: frame - doneAt, fps, config: { damping: 11, stiffness: 190, mass: 0.6 } });\n // Rows always render (invisible pre-start) so the card is final-size\n // from frame 0 — no re-center jump per step mount.\n\n return (\n <div\n key={i}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 16,\n opacity: interpolate(rowIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateX(${interpolate(rowIn, [0, 1], [-18, 0])}px)`,\n }}\n >\n <div style={{ width: 30, height: 30, position: 'relative', flexShrink: 0 }}>\n {running && (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n borderRadius: '50%',\n border: `3px solid ${palette.BORDER_SOFT}`,\n borderTopColor: accentColor,\n transform: `rotate(${(frame - start) * 14}deg)`,\n }}\n />\n )}\n {done && (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n borderRadius: '50%',\n background: isLast ? accentColor : palette.BORDER_SOFT,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: isLast ? palette.BG : palette.TEXT,\n fontSize: 17,\n fontWeight: 900,\n transform: `scale(${interpolate(checkIn, [0, 1], [0.3, 1])})`,\n }}\n >\n ✓\n </div>\n )}\n </div>\n <div\n style={{\n fontFamily,\n fontSize: 28,\n fontWeight: done && isLast ? 700 : 500,\n color: done && isLast ? accentColor : palette.TEXT,\n opacity: done && !isLast ? 0.72 : 1,\n }}\n >\n {step}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport * as palette from '../../lib/palette';\n\nexport interface ToolCall {\n name: string;\n args: string;\n result: string;\n}\n\nexport interface ToolCallStackProps {\n /** Calls in execution order. */\n calls?: ToolCall[];\n /** Result-chip + active-border accent. */\n accentColor?: string;\n /** Frames between call arrivals (default 34). */\n callFrames?: number;\n}\n\n/**\n * The agent's hands: monospace function-call cards slide into a stack — the\n * call line types fast, a beat passes, then the result chip pops green. The\n * newest card carries a breathing accent border so the stack idles alive.\n */\nexport const ToolCallStack: React.FC<ToolCallStackProps> = ({\n calls = [\n { name: 'search_issues', args: '{ query: \"login 500\" }', result: '14 matches' },\n { name: 'read_logs', args: '{ service: \"auth\", last: \"1h\" }', result: 'stack trace found' },\n { name: 'open_pr', args: '{ fix: \"token refresh race\" }', result: 'PR #482 opened' },\n ],\n accentColor = palette.ACCENT,\n callFrames = 34,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const displayFont = resolveTypeface('display');\n const monoFont = resolveTypeface('mono');\n\n const START = 6;\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div style={{ width: 700, display: 'flex', flexDirection: 'column', gap: 18 }}>\n {calls.map((call, i) => {\n // Cards always render (invisible pre-start) so the stack is final-size\n // from frame 0 — no re-center jump per card mount.\n const start = START + i * callFrames;\n const cardIn = spring({ frame: frame - start, fps, config: { damping: 14, stiffness: 140, mass: 0.8 } });\n\n // Call line types fast (3 chars/frame), then the result chip pops.\n const callLine = `${call.name}(${call.args})`;\n const typed = Math.min(callLine.length, Math.floor((frame - start) * 3));\n const resultAt = start + Math.ceil(callLine.length / 3) + 10;\n const resultIn = spring({ frame: frame - resultAt, fps, config: { damping: 11, stiffness: 180, mass: 0.6 } });\n const showResult = frame >= resultAt;\n\n const isNewest = i === calls.length - 1 || frame < start + callFrames;\n const borderPulse = isNewest ? 0.35 + Math.sin(2 * Math.PI * 0.6 * t) * 0.2 : 0.14;\n\n return (\n <div\n key={i}\n style={{\n background: `${palette.BG}cc`,\n border: `1px solid rgba(244,236,224,${borderPulse})`,\n borderRadius: 16,\n padding: '20px 24px',\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n opacity: interpolate(cardIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n transform: `translateY(${interpolate(cardIn, [0, 1], [30, 0])}px) scale(${interpolate(cardIn, [0, 1], [0.97, 1])})`,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 12, marginBottom: 14 }}>\n <div\n style={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n background: showResult ? palette.SUCCESS : accentColor,\n flexShrink: 0,\n }}\n />\n <div\n style={{\n fontFamily: monoFont,\n fontSize: 25,\n color: palette.TEXT,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'clip',\n }}\n >\n <span style={{ color: accentColor, fontWeight: 700 }}>\n {callLine.slice(0, typed).split('(')[0]}\n </span>\n <span style={{ opacity: 0.85 }}>\n {typed > call.name.length ? `(${callLine.slice(call.name.length + 1, typed)}` : ''}\n </span>\n </div>\n </div>\n {/* Fixed-height slot: the chip animates within reserved space so the\n card never grows (which would shift the cards below it). */}\n <div style={{ height: 44 }}>\n <div\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 10,\n fontFamily: displayFont,\n fontSize: 22,\n fontWeight: 600,\n color: palette.SUCCESS,\n background: `${palette.SUCCESS}1f`,\n border: `1px solid ${palette.SUCCESS}59`,\n padding: '7px 16px',\n borderRadius: 999,\n transform: `scale(${interpolate(resultIn, [0, 1], [0.6, 1])})`,\n transformOrigin: 'left center',\n opacity: interpolate(resultIn, [0, 0.4], [0, 1], { extrapolateRight: 'clamp' }),\n }}\n >\n ✓ {call.result}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { AbsoluteFill, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport { FLOOR_SHADOW } from '../../lib/text/contrast';\nimport * as palette from '../../lib/palette';\n\nexport interface VoiceWaveformProps {\n /** Bars in the waveform (default 36). */\n barCount?: number;\n /** Waveform accent. */\n accentColor?: string;\n /** 'speaking' = burst/pause phrase envelope · 'listening' = gentle breathing. */\n mode?: 'speaking' | 'listening';\n /** Label under the waveform. */\n label?: string;\n /** Pattern seed. */\n seed?: number;\n}\n\nfunction jitter(i: number, seed: number): number {\n let h = Math.imul(i + 1, 374761393) + Math.imul(seed, 668265263);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n return ((h ^ (h >>> 16)) >>> 0) / 4294967295;\n}\n\n/**\n * The voice-agent beat: a symmetric waveform speaks in phrases — deterministic\n * burst/pause envelopes (talk ~1s, breathe ~0.5s) with per-bar frequency\n * character, center bars leading. 'listening' mode breathes gently instead.\n * The idle IS the design; it loops seamlessly.\n */\nexport const VoiceWaveform: React.FC<VoiceWaveformProps> = ({\n barCount = 36,\n accentColor = palette.ACCENT,\n mode = 'speaking',\n label = 'Assistant is speaking',\n seed = 7,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const fontFamily = resolveTypeface('display');\n\n // Phrase envelope: alternating talk/pause windows from the seed, ~3.2s cycle.\n const CYCLE = 3.2;\n const ct = t % CYCLE;\n const phrases: Array<[number, number]> = [\n [0.15, 1.15 + jitter(1, seed) * 0.4],\n [1.75 + jitter(2, seed) * 0.3, 2.95],\n ];\n let envelope = 0.08;\n for (const [s, e] of phrases) {\n if (ct >= s && ct <= e) {\n const edge = Math.min(ct - s, e - ct, 0.18) / 0.18;\n envelope = 0.15 + 0.85 * edge;\n }\n }\n if (mode === 'listening') {\n // One full breath per cycle so the loop wraps exactly.\n envelope = 0.22 + Math.sin((2 * Math.PI * t) / CYCLE) * 0.1;\n }\n\n return (\n <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center' }}>\n <div style={{ textAlign: 'center' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 10,\n height: 260,\n }}\n >\n {Array.from({ length: barCount }, (_, i) => {\n const centerDist = Math.abs(i - (barCount - 1) / 2) / ((barCount - 1) / 2);\n const centerBoost = 1 - centerDist * 0.75;\n // Quantized to whole cycles per CYCLE so every bar's sine wraps\n // exactly at the loop boundary (the seamless-loop contract).\n const f = Math.max(1, Math.round((1.6 + jitter(i, seed) * 3.4) * CYCLE)) / CYCLE;\n const phase = jitter(i, seed + 50) * 6.28;\n const wave = Math.abs(Math.sin(2 * Math.PI * f * t + phase));\n const h = 14 + 220 * envelope * centerBoost * (0.35 + wave * 0.65);\n return (\n <div\n key={i}\n style={{\n width: 12,\n height: h,\n borderRadius: 8,\n background: accentColor,\n opacity: 0.45 + envelope * 0.55 * centerBoost,\n boxShadow: envelope > 0.4 ? `0 0 10px ${accentColor}33` : 'none',\n }}\n />\n );\n })}\n </div>\n {label && (\n <div\n style={{\n fontFamily,\n fontSize: 24,\n fontWeight: 600,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n color: palette.TEXT,\n opacity: 0.55 + (mode === 'speaking' ? envelope * 0.25 : 0),\n marginTop: 34,\n textShadow: FLOOR_SHADOW,\n }}\n >\n {label}\n </div>\n )}\n </div>\n </AbsoluteFill>\n );\n};\n","import React from 'react';\nimport { Easing, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion';\nimport { resolveTypeface } from '../../lib/text/typeface';\nimport * as palette from '../../lib/palette';\n\nexport interface BeforeAfterSliderProps {\n /** Two children: [before, after]. Without children, labeled gradient panels demo the sweep. */\n children?: React.ReactNode;\n /** Chip label over the left (before) side. */\n labelA?: string;\n /** Chip label over the right (after) side. */\n labelB?: string;\n /** Divider + handle accent. */\n accentColor?: string;\n /** Where the handle settles, 0–1 of frame width (default 0.5). */\n restAt?: number;\n}\n\n/**\n * The product-improvement shot: a comparison divider sweeps right revealing the\n * AFTER, overshoots, then springs back to rest near center — like a hand\n * flicking a comparison slider. Labels chip in at the corners; the handle\n * breathes at idle so the frame never freezes.\n */\nexport const BeforeAfterSlider: React.FC<BeforeAfterSliderProps> = ({\n children,\n labelA = 'Before',\n labelB = 'After',\n accentColor = palette.ACCENT,\n restAt = 0.5,\n}) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n const t = frame / fps;\n const fontFamily = resolveTypeface('display');\n\n // Sweep choreography: hold on BEFORE, sweep far right (show it all), spring\n // back to rest. Then idle drift ±2%.\n const sweep = interpolate(frame, [10, 45], [0.08, 0.94], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.bezier(0.5, 0, 0.2, 1),\n });\n const back = spring({\n frame: frame - 45,\n fps,\n config: { damping: 13, stiffness: 70, mass: 1 },\n });\n const idle = frame > 100 ? Math.sin(2 * Math.PI * 0.08 * t) * 0.02 : 0;\n const x = frame <= 45 ? sweep : sweep + (restAt - sweep) * back + idle;\n\n const kids = React.Children.toArray(children);\n const before = kids[0] ?? (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n background: `linear-gradient(140deg, ${palette.SURFACE_HI} 0%, ${palette.BG} 100%)`,\n filter: 'saturate(0.6) brightness(0.8)',\n }}\n />\n );\n const after = kids[1] ?? (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n background: `linear-gradient(140deg, ${palette.VIOLET} 0%, ${palette.BLUE} 60%, ${palette.TEAL} 100%)`,\n }}\n />\n );\n\n const labelIn = spring({ frame: frame - 6, fps, config: { damping: 14, stiffness: 120, mass: 0.8 } });\n\n const chip = (label: string, side: 'left' | 'right'): React.ReactNode => (\n <div\n style={{\n position: 'absolute',\n top: 40,\n [side]: 44,\n fontFamily,\n fontSize: 26,\n fontWeight: 700,\n letterSpacing: '0.08em',\n textTransform: 'uppercase',\n color: palette.TEXT,\n background: 'rgba(10,10,16,0.55)',\n border: '1px solid rgba(255,255,255,0.18)',\n padding: '10px 18px',\n borderRadius: 10,\n opacity: interpolate(labelIn, [0, 1], [0, 1]),\n transform: `translateY(${interpolate(labelIn, [0, 1], [-14, 0])}px)`,\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)',\n }}\n >\n {label}\n </div>\n );\n\n return (\n <div style={{ position: 'absolute', inset: 0, overflow: 'hidden' }}>\n {/* AFTER underneath, BEFORE clipped on top — divider reveals the after */}\n <div style={{ position: 'absolute', inset: 0 }}>{after}</div>\n <div\n style={{\n position: 'absolute',\n inset: 0,\n clipPath: `inset(0 ${(1 - x) * 100}% 0 0)`,\n WebkitClipPath: `inset(0 ${(1 - x) * 100}% 0 0)`,\n }}\n >\n {before}\n </div>\n\n {/* Divider + handle */}\n <div\n style={{\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: `${x * 100}%`,\n width: 3,\n marginLeft: -1.5,\n background: accentColor,\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: `${x * 100}%`,\n transform: 'translate(-50%, -50%)',\n width: 56,\n height: 56,\n borderRadius: '50%',\n background: accentColor,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: palette.BG,\n fontFamily,\n fontSize: 22,\n fontWeight: 800,\n }}\n >\n ⇄\n </div>\n\n {chip(labelA, 'left')}\n {chip(labelB, 'right')}\n </div>\n );\n};\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport type { ReactNode } from \"react\";\nimport { spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface BoundingBoxSelectorProps {\n children?: ReactNode;\n borderColor?: string;\n handleColor?: string;\n borderWidth?: number;\n appearAt?: number;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nfunction DefaultPlaceholder() {\n return (\n <div\n style={{\n width: 480,\n height: 280,\n background: palette.TEXT_HI,\n borderRadius: 16,\n border: \"1px solid \" + palette.BORDER,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: palette.TEXT_MUTED,\n fontFamily: FONT_FAMILY,\n fontSize: 24,\n fontWeight: 600,\n letterSpacing: \"-0.02em\",\n }}\n >\n Selected element\n </div>\n );\n}\n\nfunction Handle({\n color,\n style,\n}: {\n color: string;\n style: React.CSSProperties;\n}) {\n return (\n <div\n style={{\n position: \"absolute\",\n width: 10,\n height: 10,\n background: palette.TEXT_HI,\n border: `2px solid ${color}`,\n borderRadius: 2,\n ...style,\n }}\n />\n );\n}\n\nexport function BoundingBoxSelector({\n children,\n borderColor = palette.ACCENT,\n handleColor = palette.ACCENT,\n borderWidth = 2,\n appearAt = 15,\n background = palette.TEXT_HI,\n speed = 1,\n className,\n}: BoundingBoxSelectorProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n const progress = spring({\n frame: frame - appearAt,\n fps,\n config: { damping: 16, stiffness: 140, mass: 0.7 },\n });\n\n const opacity = progress;\n const scale = 0.96 + progress * 0.04;\n\n const content = children ?? <DefaultPlaceholder />;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div style={{ position: \"relative\", display: \"inline-block\" }}>\n {content}\n <div\n style={{\n position: \"absolute\",\n inset: -8,\n border: `${borderWidth}px solid ${borderColor}`,\n borderRadius: 4,\n opacity,\n transform: `scale(${scale})`,\n transformOrigin: \"center center\",\n pointerEvents: \"none\",\n willChange: \"transform, opacity\",\n }}\n >\n <Handle color={handleColor} style={{ top: -6, left: -6 }} />\n <Handle color={handleColor} style={{ top: -6, right: -6 }} />\n <Handle color={handleColor} style={{ bottom: -6, left: -6 }} />\n <Handle color={handleColor} style={{ bottom: -6, right: -6 }} />\n <Handle\n color={handleColor}\n style={{ top: -6, left: \"50%\", marginLeft: -5 }}\n />\n <Handle\n color={handleColor}\n style={{ bottom: -6, left: \"50%\", marginLeft: -5 }}\n />\n <Handle\n color={handleColor}\n style={{ left: -6, top: \"50%\", marginTop: -5 }}\n />\n <Handle\n color={handleColor}\n style={{ right: -6, top: \"50%\", marginTop: -5 }}\n />\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport {\n interpolate,\n Sequence,\n spring,\n useCurrentFrame,\n useVideoConfig,\n} from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface ToolMenuSlideInProps {\n panelStartFrame?: number;\n iconStagger?: number;\n iconCount?: number;\n accent?: string;\n panelColor?: string;\n background?: string;\n iconBg?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nconst ICON_GLYPHS = [\"B\", \"S\", \"C\", \"P\", \"E\", \"T\", \"M\", \"L\"];\nconst PANEL_SLIDE_DURATION = 22;\n\nexport function ToolMenuSlideIn({\n panelStartFrame = 18,\n iconStagger = 4,\n iconCount = 5,\n accent = palette.VIOLET,\n panelColor = `${palette.BG}b8`,\n background = palette.BG,\n iconBg = palette.SURFACE_HI,\n speed = 1,\n className,\n}: ToolMenuSlideInProps) {\n const rawFrame = useCurrentFrame();\n const frame = rawFrame * speed;\n const { fps } = useVideoConfig();\n\n const safeIconCount = Math.max(1, Math.min(8, Math.floor(iconCount)));\n\n // Snappy slide-in: high stiffness, moderate damping, low mass.\n const slide = spring({\n frame: frame - panelStartFrame,\n fps,\n config: { damping: 20, stiffness: 320, mass: 0.6 },\n });\n\n const panelTy = interpolate(slide, [0, 1], [120, 0]);\n const panelOpacity = interpolate(slide, [0, 0.4], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n // Icon sizing\n const ICON_SIZE = 64;\n const ICON_GAP = 14;\n const PANEL_PADDING = 14;\n const panelInnerWidth =\n safeIconCount * ICON_SIZE + (safeIconCount - 1) * ICON_GAP;\n const panelWidth = panelInnerWidth + PANEL_PADDING * 2;\n const panelHeight = ICON_SIZE + PANEL_PADDING * 2;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n overflow: \"hidden\",\n background,\n fontFamily: FONT_FAMILY,\n // subtle dot grid for editor-canvas feel\n backgroundImage:\n \"radial-gradient(rgba(255,255,255,0.045) 1px, transparent 1px)\",\n backgroundSize: \"22px 22px\",\n }}\n >\n {/* Top toolbar */}\n <div\n style={{\n position: \"absolute\",\n top: 24,\n left: 24,\n right: 24,\n height: 44,\n borderRadius: 12,\n background: \"rgba(255,255,255,0.04)\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 14px\",\n gap: 10,\n backdropFilter: \"blur(8px)\",\n }}\n >\n <div\n style={{\n width: 10,\n height: 10,\n borderRadius: 999,\n background: \"rgba(255,255,255,0.18)\",\n }}\n />\n <div\n style={{\n width: 10,\n height: 10,\n borderRadius: 999,\n background: \"rgba(255,255,255,0.12)\",\n }}\n />\n <div\n style={{\n width: 10,\n height: 10,\n borderRadius: 999,\n background: \"rgba(255,255,255,0.12)\",\n }}\n />\n <div\n style={{\n marginLeft: 16,\n fontSize: 12,\n color: \"rgba(255,255,255,0.42)\",\n letterSpacing: \"0.02em\",\n }}\n >\n editor — untitled.png\n </div>\n </div>\n\n {/* Centered placeholder canvas (the \"image being edited\") */}\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n width: 720,\n height: 420,\n transform: \"translate(-50%, -54%)\",\n borderRadius: 18,\n background:\n \"linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.015))\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n overflow: \"hidden\",\n }}\n >\n {/* Faux content block */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background:\n \"radial-gradient(60% 80% at 50% 40%, rgba(255,255,255,0.06), transparent 70%)\",\n }}\n />\n </div>\n\n {/* The slide-in tool menu */}\n <div\n style={{\n position: \"absolute\",\n bottom: 60,\n left: \"50%\",\n width: panelWidth,\n height: panelHeight,\n transform: `translateX(-50%) translateY(${panelTy}%)`,\n opacity: panelOpacity,\n background: panelColor,\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n border: `1px solid ${palette.BORDER_SOFT}`,\n borderRadius: panelHeight / 2,\n padding: PANEL_PADDING,\n display: \"flex\",\n alignItems: \"center\",\n gap: ICON_GAP,\n }}\n >\n {Array.from({ length: safeIconCount }).map((_, i) => {\n const startAt =\n panelStartFrame + PANEL_SLIDE_DURATION + iconStagger * i;\n const isActive = i === 0;\n return (\n <Sequence\n key={i}\n from={startAt}\n layout=\"none\"\n name={`tool-icon-${i}`}\n >\n <ToolIcon\n glyph={ICON_GLYPHS[i % ICON_GLYPHS.length]}\n size={ICON_SIZE}\n bg={iconBg}\n accent={accent}\n active={isActive}\n fps={fps}\n />\n </Sequence>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction ToolIcon({\n glyph,\n size,\n bg,\n accent,\n active,\n fps,\n}: {\n glyph: string;\n size: number;\n bg: string;\n accent: string;\n active: boolean;\n fps: number;\n}) {\n const frame = useCurrentFrame();\n const pop = spring({\n frame,\n fps,\n config: { damping: 14, stiffness: 260, mass: 0.7 },\n });\n const scale = interpolate(pop, [0, 1], [0, 1]);\n const opacity = interpolate(pop, [0, 0.6], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n return (\n <div\n style={{\n width: size,\n height: size,\n borderRadius: 14,\n background: active\n ? `linear-gradient(180deg, ${accent}33, ${accent}14)`\n : bg,\n border: active\n ? `1px solid ${accent}55`\n : \"1px solid rgba(255,255,255,0.06)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: active ? palette.TEXT_HI : palette.TEXT_MUTED,\n fontSize: 22,\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n transform: `scale(${scale})`,\n opacity,\n transformOrigin: \"center\",\n }}\n >\n {glyph}\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface CodeAccordionProps {\n lines?: string[];\n collapseRange?: [number, number];\n collapseAt?: number;\n title?: string;\n fontSize?: number;\n width?: number;\n background?: string;\n cardColor?: string;\n textColor?: string;\n mutedColor?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_MONO =\n \"monospace\";\n\nconst DEFAULT_LINES = [\n \"export function processOrders(orders) {\",\n \" const valid = [];\",\n \" for (const order of orders) {\",\n \" if (!order.id) continue;\",\n \" if (!order.customer) continue;\",\n \" if (!order.items?.length) continue;\",\n \" if (order.total <= 0) continue;\",\n \" if (order.status === 'cancelled') continue;\",\n \" if (order.status === 'refunded') continue;\",\n \" const enriched = enrich(order);\",\n \" const validated = validate(enriched);\",\n \" if (!validated.ok) continue;\",\n \" const priced = price(validated.value);\",\n \" const taxed = applyTax(priced);\",\n \" const shipped = applyShipping(taxed);\",\n \" valid.push(shipped);\",\n \" }\",\n \" return valid;\",\n \"}\",\n];\n\nexport function CodeAccordion({\n lines = DEFAULT_LINES,\n collapseRange = [3, 14],\n collapseAt = 30,\n title = \"process-orders.ts\",\n fontSize = 16,\n width = 720,\n background = palette.BG,\n cardColor = palette.BG_DEEP,\n textColor = palette.TEXT,\n mutedColor = palette.TEXT_FAINT,\n speed = 1,\n className,\n}: CodeAccordionProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n const lineHeight = Math.round(fontSize * 1.55);\n // Header title auto-fits within the chrome bar (card width minus the traffic\n // lights + padding) so long filenames shrink instead of overflowing.\n const titleMaxWidth = Math.max(80, width - 96);\n const [start, end] = collapseRange;\n const collapsedCount = Math.max(0, end - start + 1);\n\n // Spring drives BOTH the inner collapse height AND a tiny y-bounce on the\n // window so the accordion feels like it has weight.\n const collapseProgress = spring({\n frame: frame - collapseAt,\n fps,\n config: { damping: 10, stiffness: 110, mass: 1 },\n });\n\n const collapsedHeight = interpolate(\n collapseProgress,\n [0, 1],\n [collapsedCount * lineHeight, lineHeight], // collapses down to the placeholder bar's height\n );\n\n const collapsedOpacity = interpolate(collapseProgress, [0, 0.6], [1, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n const placeholderOpacity = interpolate(collapseProgress, [0.4, 1], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n const before = lines.slice(0, start);\n const collapsed = lines.slice(start, end + 1);\n const after = lines.slice(end + 1);\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: FONT_MONO,\n }}\n >\n <div\n style={{\n width,\n background: cardColor,\n borderRadius: 14,\n overflow: \"hidden\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n }}\n >\n {/* Chrome */}\n <div\n style={{\n height: 38,\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0 14px\",\n borderBottom: \"1px solid rgba(255,255,255,0.05)\",\n }}\n >\n <Light color={palette.MAC_RED} />\n <Light color={palette.MAC_YELLOW} />\n <Light color={palette.MAC_GREEN} />\n <div\n style={{\n flex: 1,\n display: \"flex\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n }}\n >\n <FitText\n maxFontSize={12}\n maxWidth={titleMaxWidth}\n maxLines={1}\n fontFamily={FONT_MONO}\n style={{ color: mutedColor }}\n >\n {title}\n </FitText>\n </div>\n </div>\n\n {/* Code body */}\n <div style={{ padding: \"16px 0\", fontSize, lineHeight: 1.55 }}>\n {before.map((line, i) => (\n <Line\n key={`b-${i}`}\n line={line}\n index={i}\n lineHeight={lineHeight}\n textColor={textColor}\n mutedColor={mutedColor}\n />\n ))}\n\n {/* Collapsing region */}\n <div\n style={{\n position: \"relative\",\n height: collapsedHeight,\n overflow: \"hidden\",\n transition: \"none\",\n }}\n >\n <div style={{ opacity: collapsedOpacity }}>\n {collapsed.map((line, i) => (\n <Line\n key={`c-${i}`}\n line={line}\n index={start + i}\n lineHeight={lineHeight}\n textColor={textColor}\n mutedColor={mutedColor}\n />\n ))}\n </div>\n\n {/* Placeholder bar — sits at the bottom so it sits on the same\n baseline as the collapsed-into row. */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: lineHeight,\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: 56,\n color: mutedColor,\n fontStyle: \"italic\",\n opacity: placeholderOpacity,\n }}\n >\n ⋯ {collapsedCount} lines collapsed\n </div>\n </div>\n\n {after.map((line, i) => (\n <Line\n key={`a-${i}`}\n line={line}\n index={end + 1 + i}\n lineHeight={lineHeight}\n textColor={textColor}\n mutedColor={mutedColor}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction Light({ color }: { color: string }) {\n return (\n <div\n style={{\n width: 11,\n height: 11,\n borderRadius: \"50%\",\n background: color,\n opacity: 0.6,\n }}\n />\n );\n}\n\nfunction Line({\n line,\n index,\n lineHeight,\n textColor,\n mutedColor,\n}: {\n line: string;\n index: number;\n lineHeight: number;\n textColor: string;\n mutedColor: string;\n}) {\n return (\n <div\n style={{\n height: lineHeight,\n display: \"flex\",\n alignItems: \"center\",\n whiteSpace: \"pre\",\n color: textColor,\n }}\n >\n <span\n style={{\n width: 56,\n textAlign: \"right\",\n paddingRight: 16,\n color: mutedColor,\n userSelect: \"none\",\n }}\n >\n {index + 1}\n </span>\n <span>{line}</span>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface AIGenerationCanvasProps {\n prompt?: string;\n accentColor?: string;\n cardCount?: number;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nfunction MiniBarChart({ accentColor }: { accentColor: string }) {\n const bars = [0.4, 0.7, 0.55, 0.85, 0.5, 0.95, 0.65];\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-end\",\n gap: 6,\n height: 60,\n marginTop: 12,\n }}\n >\n {bars.map((h, i) => (\n <div\n key={i}\n style={{\n flex: 1,\n height: `${h * 100}%`,\n background: accentColor,\n borderRadius: 3,\n opacity: 0.3 + h * 0.7,\n }}\n />\n ))}\n </div>\n );\n}\n\nfunction MiniRows() {\n return (\n <div\n style={{\n marginTop: 12,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n }}\n >\n {[0.9, 0.7, 0.85, 0.6].map((w, i) => (\n <div\n key={i}\n style={{\n height: 8,\n width: `${w * 100}%`,\n background: \"rgba(255,255,255,0.12)\",\n borderRadius: 4,\n }}\n />\n ))}\n </div>\n );\n}\n\nfunction StatBlock({\n accentColor,\n value,\n}: {\n accentColor: string;\n value: string;\n}) {\n return (\n <div style={{ marginTop: 8 }}>\n <div\n style={{\n fontSize: 36,\n fontWeight: 700,\n color: palette.TEXT_HI,\n letterSpacing: \"-0.03em\",\n fontFamily: FONT_FAMILY,\n }}\n >\n {value}\n </div>\n <div\n style={{\n fontSize: 12,\n color: accentColor,\n marginTop: 2,\n fontWeight: 500,\n }}\n >\n +12.4% this week\n </div>\n </div>\n );\n}\n\nfunction CardContent({\n index,\n accentColor,\n}: {\n index: number;\n accentColor: string;\n}) {\n const titles = [\n \"Revenue\",\n \"Active Users\",\n \"Sessions\",\n \"Conversion\",\n \"Retention\",\n \"Latency\",\n ];\n const values = [\"$48.2k\", \"12,840\", \"9.1k\", \"3.8%\", \"76%\", \"142ms\"];\n const variant = index % 3;\n return (\n <div style={{ width: \"100%\", height: \"100%\", padding: 18 }}>\n <div\n style={{\n fontSize: 12,\n color: \"rgba(255,255,255,0.55)\",\n fontWeight: 500,\n fontFamily: FONT_FAMILY,\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n }}\n >\n {titles[index % titles.length]}\n </div>\n {variant === 0 ? (\n <>\n <StatBlock\n accentColor={accentColor}\n value={values[index % values.length]}\n />\n <MiniBarChart accentColor={accentColor} />\n </>\n ) : variant === 1 ? (\n <>\n <StatBlock\n accentColor={accentColor}\n value={values[index % values.length]}\n />\n <MiniRows />\n </>\n ) : (\n <>\n <MiniBarChart accentColor={accentColor} />\n <MiniRows />\n </>\n )}\n </div>\n );\n}\n\nexport function AIGenerationCanvas({\n prompt = \"Generate a dashboard\",\n accentColor = palette.VIOLET,\n cardCount = 4,\n speed = 1,\n className,\n}: AIGenerationCanvasProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // Phase boundaries\n const P1_END = 40;\n const P2_END = 70;\n const P3_END = 100;\n\n // Phase 1: typewriter\n const charCount = Math.floor(\n interpolate(frame, [4, P1_END - 2], [0, prompt.length], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n }),\n );\n const typedText = prompt.substring(0, charCount);\n const cursorVisible = Math.floor(frame / 12) % 2 === 0;\n\n // Phase 2: input -> header transform\n const transformProgress = spring({\n frame: frame - P1_END,\n fps,\n config: { mass: 1, damping: 16, stiffness: 110 },\n durationInFrames: 30,\n });\n\n // Centered input dimensions\n const inputCenteredW = 640;\n const inputCenteredH = 80;\n const headerW = 1200;\n const headerH = 56;\n const inputW = interpolate(\n transformProgress,\n [0, 1],\n [inputCenteredW, headerW],\n );\n const inputH = interpolate(\n transformProgress,\n [0, 1],\n [inputCenteredH, headerH],\n );\n const inputTop = interpolate(transformProgress, [0, 1], [320, 40]);\n const inputRadius = interpolate(transformProgress, [0, 1], [16, 12]);\n const inputFontSize = interpolate(transformProgress, [0, 1], [24, 14]);\n\n // Phase 3: skeleton fade\n const skeletonOpacity = interpolate(frame, [P2_END, P3_END], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n // Shimmer position\n const shimmerPos = ((frame * 1.5) % 200) - 50;\n\n // Phase 4: card flip reveal (after frame 100)\n const cards = Array.from({ length: cardCount });\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background: palette.BG,\n overflow: \"hidden\",\n fontFamily: FONT_FAMILY,\n }}\n >\n {/* subtle grid backdrop */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n backgroundImage:\n \"linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px)\",\n backgroundSize: \"40px 40px\",\n maskImage:\n \"radial-gradient(ellipse at center, black 40%, transparent 80%)\",\n }}\n />\n\n {/* Skeleton + content cards grid (Phase 3 onward) */}\n {frame > P2_END && (\n <div\n style={{\n position: \"absolute\",\n top: 130,\n left: 40,\n right: 40,\n bottom: 40,\n display: \"grid\",\n gridTemplateColumns: `repeat(${Math.min(cardCount, 4)}, 1fr)`,\n gap: 20,\n }}\n >\n {cards.map((_, i) => {\n const cardStart = P3_END + i * 8;\n const flipProgress = spring({\n frame: frame - cardStart,\n fps,\n config: { mass: 0.9, damping: 14, stiffness: 100 },\n durationInFrames: 30,\n });\n const rotation = interpolate(flipProgress, [0, 1], [0, 180]);\n const showSkeleton = rotation < 90;\n\n return (\n <div\n key={i}\n style={{\n position: \"relative\",\n perspective: 1200,\n opacity: skeletonOpacity,\n }}\n >\n <div\n style={{\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n transformStyle: \"preserve-3d\",\n transform: `rotateY(${rotation}deg)`,\n }}\n >\n {/* Skeleton face */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: palette.SURFACE,\n border: \"1px solid \" + palette.BORDER_SOFT,\n borderRadius: 14,\n backfaceVisibility: \"hidden\",\n overflow: \"hidden\",\n visibility: showSkeleton ? \"visible\" : \"hidden\",\n }}\n >\n {/* shimmer overlay */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: `linear-gradient(110deg, transparent 0%, transparent ${shimmerPos}%, ${accentColor}22 ${shimmerPos + 15}%, transparent ${shimmerPos + 30}%)`,\n }}\n />\n <div style={{ padding: 18 }}>\n <div\n style={{\n width: \"40%\",\n height: 10,\n background: \"rgba(255,255,255,0.08)\",\n borderRadius: 4,\n }}\n />\n <div\n style={{\n width: \"70%\",\n height: 28,\n background: \"rgba(255,255,255,0.08)\",\n borderRadius: 6,\n marginTop: 14,\n }}\n />\n <div\n style={{\n width: \"100%\",\n height: 60,\n background: \"rgba(255,255,255,0.05)\",\n borderRadius: 6,\n marginTop: 16,\n }}\n />\n </div>\n </div>\n {/* Content face */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: palette.SURFACE,\n border: `1px solid ${accentColor}33`,\n borderRadius: 14,\n backfaceVisibility: \"hidden\",\n transform: \"rotateY(180deg)\",\n overflow: \"hidden\",\n }}\n >\n <CardContent index={i} accentColor={accentColor} />\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* Prompt input — centered then transforms to header */}\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: inputTop,\n width: inputW,\n height: inputH,\n marginLeft: -inputW / 2,\n background: \"rgba(20,20,22,0.85)\",\n border: `1px solid ${accentColor}55`,\n borderRadius: inputRadius,\n backdropFilter: \"blur(12px)\",\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 20px\",\n }}\n >\n {/* sparkle icon */}\n <div\n style={{\n width: 20,\n height: 20,\n marginRight: 12,\n color: accentColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n }}\n >\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\n <path d=\"M12 2l2.5 6.5L21 11l-6.5 2.5L12 20l-2.5-6.5L3 11l6.5-2.5L12 2z\" />\n </svg>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n minWidth: 0,\n overflow: \"hidden\",\n }}\n >\n {/* Prompt text auto-fits: shrinks then wraps to 3 lines as the input\n narrows/widens, instead of overflowing the (nowrap) bar. */}\n <FitText\n maxFontSize={inputFontSize}\n maxWidth={Math.max(1, inputW - 72)}\n maxLines={3}\n fontFamily={FONT_FAMILY}\n fontWeight={500}\n letterSpacing=\"-0.01em\"\n style={{ color: palette.TEXT_HI }}\n >\n {typedText}\n </FitText>\n {frame < P1_END && cursorVisible && (\n <span\n style={{\n display: \"inline-block\",\n flexShrink: 0,\n width: 2,\n height: inputFontSize,\n background: accentColor,\n marginLeft: 2,\n }}\n />\n )}\n </div>\n {transformProgress > 0.6 && (\n <div\n style={{\n marginLeft: \"auto\",\n display: \"flex\",\n gap: 8,\n alignItems: \"center\",\n opacity: (transformProgress - 0.6) / 0.4,\n }}\n >\n <div\n style={{\n width: 8,\n height: 8,\n borderRadius: 4,\n background: accentColor,\n boxShadow: `0 0 8px ${accentColor}`,\n }}\n />\n <div\n style={{\n fontSize: 12,\n color: \"rgba(255,255,255,0.6)\",\n fontWeight: 500,\n }}\n >\n Generating\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface AIGenerateOverlayProps {\n maxBlur?: number;\n blurStartFrame?: number;\n blurPeakFrame?: number;\n revealStartFrame?: number;\n pillText?: string;\n accent?: string;\n background?: string;\n sourceImageBg?: string;\n generatedImageBg?: string;\n dotColor?: string;\n dotSize?: number;\n dotSpacing?: number;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\n// Cap the pill text width so long copy shrinks (then ellipsizes) inside the centered\n// pill instead of stretching it off-frame — replaces the old hard maxLength.\nconst PILL_TEXT_WIDTH = 360;\n\nconst DEFAULT_SOURCE_BG =\n `linear-gradient(135deg, ${palette.BG_DEEP} 0%, ${palette.BLUE} 50%, ${palette.SURFACE} 100%)`;\n\nconst DEFAULT_GENERATED_BG =\n `radial-gradient(ellipse at center, ${palette.ACCENT_SOFT} 0%, ${palette.ACCENT_DEEP} 22%, ${palette.BG_DEEP} 42%), linear-gradient(180deg, ${palette.BG} 0%, ${palette.BG_DEEP} 50%, ${palette.BG} 100%)`;\n\nexport function AIGenerateOverlay({\n maxBlur = 20,\n blurStartFrame = 20,\n blurPeakFrame = 40,\n revealStartFrame = 110,\n pillText = \"Generating…\",\n accent = palette.VIOLET,\n background = palette.BG,\n sourceImageBg = DEFAULT_SOURCE_BG,\n generatedImageBg = DEFAULT_GENERATED_BG,\n dotColor = palette.TEXT_HI,\n dotSize = 1.2,\n dotSpacing = 20,\n speed = 1,\n className,\n}: AIGenerateOverlayProps) {\n const rawFrame = useCurrentFrame();\n const frame = rawFrame * speed;\n const { fps, durationInFrames } = useVideoConfig();\n\n // Phase 1 → 2: blur ramps up over [blurStartFrame, blurPeakFrame]\n const blur = interpolate(\n frame,\n [blurStartFrame, blurPeakFrame],\n [0, maxBlur],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n // Dot grid opacity follows blur, plus a subtle sine shimmer.\n const gridBaseOpacity = interpolate(\n frame,\n [blurStartFrame, blurPeakFrame],\n [0, 0.4],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n const gridShimmer = Math.sin(frame / 6) * 0.05;\n const gridOpacity = Math.max(0, gridBaseOpacity + gridShimmer);\n\n // Generated image fade-in from revealStartFrame.\n const reveal = spring({\n frame: frame - revealStartFrame,\n fps,\n config: { mass: 1, damping: 22, stiffness: 90 },\n });\n const generatedOpacity = interpolate(reveal, [0, 1], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n // Pill is visible during phases 2-3, fades out as the new image fades in.\n const pillIn = interpolate(frame, [blurStartFrame, blurPeakFrame], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const pillOut = interpolate(generatedOpacity, [0, 0.6], [1, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const pillOpacity = pillIn * pillOut;\n const pillScale = 1 + Math.sin(frame / 8) * 0.02;\n // Soft pulse for the live \"generating\" status dot (the primitive's live tell).\n const pillGlow = 0.35 + Math.sin(frame / 8) * 0.15;\n\n // Detached dot count animation for the pill text — three trailing dots.\n const dotPhase = Math.floor(frame / 10) % 4;\n const animatedPillText =\n pillText.replace(/[…\\.]+$/, \"\") + \".\".repeat(dotPhase);\n\n // Typed unused-suppression: keep durationInFrames referenced for IDEs.\n void durationInFrames;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n fontFamily: FONT_FAMILY,\n overflow: \"hidden\",\n }}\n >\n {/* Source (\"painting\") layer — blurs out as AI thinks. */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: sourceImageBg,\n filter: `blur(${blur}px)`,\n // Slight scale to hide the blur edge feathering at the viewport border.\n transform: \"scale(1.06)\",\n }}\n />\n\n {/* Generated image layer — fades in over the blurred source. */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: generatedImageBg,\n opacity: generatedOpacity,\n }}\n />\n\n {/* Dot grid overlay — pure SVG pattern with animated opacity + shimmer. */}\n <svg\n style={{\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n opacity: gridOpacity * (1 - generatedOpacity),\n pointerEvents: \"none\",\n mixBlendMode: \"screen\",\n }}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <defs>\n <pattern\n id=\"ai-generate-overlay-dots\"\n width={dotSpacing}\n height={dotSpacing}\n patternUnits=\"userSpaceOnUse\"\n >\n <circle\n cx={dotSpacing / 2}\n cy={dotSpacing / 2}\n r={dotSize}\n fill={dotColor}\n />\n </pattern>\n </defs>\n <rect\n width=\"100%\"\n height=\"100%\"\n fill=\"url(#ai-generate-overlay-dots)\"\n />\n </svg>\n\n {/* \"Generating…\" pill */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n opacity: pillOpacity,\n }}\n >\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 12,\n padding: \"14px 24px\",\n borderRadius: 999,\n background: \"rgba(10, 10, 10, 0.55)\",\n color: palette.TEXT_HI,\n fontSize: 18,\n fontWeight: 500,\n letterSpacing: \"-0.01em\",\n border: \"1px solid \" + palette.BORDER_SOFT,\n backdropFilter: \"blur(10px)\",\n WebkitBackdropFilter: \"blur(10px)\",\n transform: `scale(${pillScale})`,\n }}\n >\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: 999,\n background: accent,\n boxShadow: `0 0 8px ${hexWithAlpha(accent, pillGlow)}`,\n }}\n />\n <FitText\n maxFontSize={18}\n maxWidth={PILL_TEXT_WIDTH}\n fontFamily={FONT_FAMILY}\n fontWeight={500}\n letterSpacing=\"-0.01em\"\n >\n {animatedPillText}\n </FitText>\n </div>\n </div>\n </div>\n );\n}\n\n// Convert a #rrggbb to rgba(r, g, b, a). Falls back to the original string if\n// not a 6-digit hex (so users can pass a CSS color name and still get *some*\n// glow, just without alpha).\nfunction hexWithAlpha(hex: string, alpha: number): string {\n const m = /^#([0-9a-f]{6})$/i.exec(hex);\n if (!m) return hex;\n const int = parseInt(m[1], 16);\n const r = (int >> 16) & 255;\n const g = (int >> 8) & 255;\n const b = int & 255;\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport {\n Easing,\n interpolate,\n interpolateColors,\n useCurrentFrame,\n useVideoConfig,\n} from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface DragAndDropFlowProps {\n accent?: string;\n dropzoneLabel?: string;\n fileName?: string;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nfunction FileIcon({ color }: { color: string }) {\n return (\n <svg width=\"44\" height=\"56\" viewBox=\"0 0 44 56\" fill=\"none\">\n <path\n d=\"M6 4a4 4 0 014-4h18l12 12v40a4 4 0 01-4 4H10a4 4 0 01-4-4V4z\"\n fill={palette.TEXT_HI}\n stroke={color}\n strokeWidth=\"2\"\n />\n <path\n d=\"M28 0v8a4 4 0 004 4h8\"\n stroke={color}\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <rect\n x=\"12\"\n y=\"22\"\n width=\"20\"\n height=\"2\"\n rx=\"1\"\n fill={color}\n opacity=\"0.5\"\n />\n <rect\n x=\"12\"\n y=\"28\"\n width=\"16\"\n height=\"2\"\n rx=\"1\"\n fill={color}\n opacity=\"0.5\"\n />\n <rect\n x=\"12\"\n y=\"34\"\n width=\"18\"\n height=\"2\"\n rx=\"1\"\n fill={color}\n opacity=\"0.5\"\n />\n </svg>\n );\n}\n\nexport function DragAndDropFlow({\n accent = palette.ACCENT,\n dropzoneLabel = \"Drop file to upload\",\n fileName = \"design.fig\",\n background = palette.TEXT_HI,\n speed = 1,\n className,\n}: DragAndDropFlowProps) {\n const frame = useCurrentFrame() * speed;\n const { durationInFrames } = useVideoConfig();\n\n // Phase split\n const dragEnd = Math.round(durationInFrames * 0.45);\n const highlightEnd = Math.round(durationInFrames * 0.55);\n const progressEnd = durationInFrames;\n\n // Phase 1: file moves from start to center of dropzone\n const dragProgress = interpolate(frame, [0, dragEnd], [0, 1], {\n extrapolateRight: \"clamp\",\n easing: Easing.out(Easing.cubic),\n });\n\n const startX = -220;\n const startY = -120;\n const fileX = interpolate(dragProgress, [0, 1], [startX, 0]);\n const fileY = interpolate(dragProgress, [0, 1], [startY, 0]);\n\n // Phase 2: dropzone border highlights as file approaches\n const borderColor = interpolateColors(\n frame,\n [dragEnd - 10, highlightEnd],\n [palette.TEXT_MUTED, accent],\n );\n\n // Phase 3: file fades, progress bar grows\n const fileOpacity = interpolate(\n frame,\n [highlightEnd - 4, highlightEnd + 8],\n [1, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n const progressOpacity = interpolate(\n frame,\n [highlightEnd, highlightEnd + 6],\n [0, 1],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n const progress = interpolate(\n frame,\n [highlightEnd, progressEnd - 4],\n [0, 100],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n const dropzoneWidth = 420;\n const dropzoneHeight = 260;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily:\n \"inherit\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n width: dropzoneWidth,\n height: dropzoneHeight,\n borderRadius: 18,\n border: `2.5px dashed ${borderColor}`,\n background: palette.TEXT_HI,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"column\",\n gap: 14,\n color: palette.TEXT_MUTED,\n fontSize: 16,\n fontWeight: 500,\n transition: \"none\",\n }}\n >\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12\"\n stroke={borderColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <FitText\n maxFontSize={16}\n maxWidth={dropzoneWidth - 64}\n fontFamily=\"inherit\"\n fontWeight={500}\n style={{ color: palette.TEXT_MUTED, textAlign: \"center\" }}\n >\n {dropzoneLabel}\n </FitText>\n\n {/* Progress bar (after drop) */}\n <div\n style={{\n position: \"absolute\",\n left: 32,\n right: 32,\n bottom: 32,\n opacity: progressOpacity,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontSize: 13,\n color: palette.TEXT_FAINT,\n }}\n >\n <FitText\n maxFontSize={13}\n maxWidth={260}\n fontFamily=\"inherit\"\n fontWeight={500}\n style={{ color: palette.TEXT_FAINT }}\n >\n {fileName}\n </FitText>\n <span>{Math.round(progress)}%</span>\n </div>\n <div\n style={{\n height: 6,\n borderRadius: 999,\n background: palette.TEXT,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${progress}%`,\n height: \"100%\",\n background: accent,\n borderRadius: 999,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Animated file icon that moves into the dropzone */}\n <div\n style={{\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n marginLeft: -22,\n marginTop: -28,\n transform: `translate(${fileX}px, ${fileY}px)`,\n opacity: fileOpacity,\n filter: `drop-shadow(0 4px 10px ${palette.BG_DEEP}40)`,\n }}\n >\n <FileIcon color={accent} />\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, useCurrentFrame } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface DataFlowNode {\n id: string;\n x: number;\n y: number;\n label?: string;\n}\n\nexport interface DataFlowEdge {\n from: string;\n to: string;\n /** Frame when the pulse on this edge starts. */\n startFrame?: number;\n}\n\nexport interface DataFlowPipesProps {\n nodes?: DataFlowNode[];\n edges?: DataFlowEdge[];\n pipeColor?: string;\n pulseColor?: string;\n pulseLength?: number;\n pulseDuration?: number;\n background?: string;\n nodeColor?: string;\n textColor?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\n// Node cards are a fixed 120px wide; cap the label a touch narrower so long labels\n// shrink (then ellipsize) inside the card instead of overflowing it.\nconst NODE_LABEL_WIDTH = 104;\n\nconst DEFAULT_NODES: DataFlowNode[] = [\n { id: \"client\", x: 140, y: 360, label: \"Client\" },\n { id: \"api\", x: 460, y: 200, label: \"API\" },\n { id: \"queue\", x: 460, y: 520, label: \"Queue\" },\n { id: \"db\", x: 820, y: 360, label: \"Database\" },\n { id: \"cdn\", x: 1140, y: 200, label: \"CDN\" },\n { id: \"log\", x: 1140, y: 520, label: \"Logs\" },\n];\n\nconst DEFAULT_EDGES: DataFlowEdge[] = [\n { from: \"client\", to: \"api\", startFrame: 0 },\n { from: \"client\", to: \"queue\", startFrame: 12 },\n { from: \"api\", to: \"db\", startFrame: 24 },\n { from: \"queue\", to: \"db\", startFrame: 36 },\n { from: \"db\", to: \"cdn\", startFrame: 48 },\n { from: \"db\", to: \"log\", startFrame: 56 },\n];\n\n/**\n * Build a smooth cubic bezier path string between two points. The control\n * points are pulled toward the midpoint and offset perpendicular for natural\n * routing — straight lines look like circuit traces, curves look like data.\n */\nfunction bezierPath(a: { x: number; y: number }, b: { x: number; y: number }) {\n const dx = b.x - a.x;\n // Stronger horizontal handles → routes look like API/DB diagrams.\n const handle = Math.max(60, Math.abs(dx) * 0.5);\n const c1x = a.x + handle;\n const c1y = a.y;\n const c2x = b.x - handle;\n const c2y = b.y;\n return `M ${a.x} ${a.y} C ${c1x} ${c1y}, ${c2x} ${c2y}, ${b.x} ${b.y}`;\n}\n\n/**\n * Approximate arc length of a cubic bezier by sampling. Gives a stable number\n * to drive `strokeDashoffset` against — purely numeric, no DOM `getTotalLength`.\n */\nfunction bezierLength(\n a: { x: number; y: number },\n b: { x: number; y: number },\n) {\n const handle = Math.max(60, Math.abs(b.x - a.x) * 0.5);\n const c1 = { x: a.x + handle, y: a.y };\n const c2 = { x: b.x - handle, y: b.y };\n let len = 0;\n let prev = a;\n const steps = 32;\n for (let i = 1; i <= steps; i++) {\n const t = i / steps;\n const u = 1 - t;\n const p = {\n x:\n u * u * u * a.x +\n 3 * u * u * t * c1.x +\n 3 * u * t * t * c2.x +\n t * t * t * b.x,\n y:\n u * u * u * a.y +\n 3 * u * u * t * c1.y +\n 3 * u * t * t * c2.y +\n t * t * t * b.y,\n };\n len += Math.hypot(p.x - prev.x, p.y - prev.y);\n prev = p;\n }\n return len;\n}\n\nexport function DataFlowPipes({\n nodes = DEFAULT_NODES,\n edges = DEFAULT_EDGES,\n pipeColor = palette.SURFACE,\n pulseColor = palette.ACCENT,\n pulseLength = 60,\n pulseDuration = 36,\n background = palette.BG,\n nodeColor = palette.BG,\n textColor = palette.TEXT_HI,\n speed = 1,\n className,\n}: DataFlowPipesProps) {\n const frame = useCurrentFrame() * speed;\n const nodeMap = new Map(nodes.map((n) => [n.id, n]));\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n fontFamily: FONT_FAMILY,\n }}\n >\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 1280 720\"\n style={{ position: \"absolute\", inset: 0 }}\n >\n {/* Static pipes */}\n {edges.map((edge, i) => {\n const a = nodeMap.get(edge.from);\n const b = nodeMap.get(edge.to);\n if (!a || !b) return null;\n const path = bezierPath(a, b);\n return (\n <path\n key={`pipe-${i}`}\n d={path}\n fill=\"none\"\n stroke={pipeColor}\n strokeWidth={3}\n strokeLinecap=\"round\"\n />\n );\n })}\n\n {/* Pulses with trailing ghosts */}\n {edges.map((edge, i) => {\n const a = nodeMap.get(edge.from);\n const b = nodeMap.get(edge.to);\n if (!a || !b) return null;\n const path = bezierPath(a, b);\n const len = bezierLength(a, b);\n const startFrame = edge.startFrame ?? 0;\n // Looping traffic: each edge re-fires on its own staggered period —\n // the system stays alive instead of one pulse then freeze.\n const period = pulseDuration + 44 + (i % 3) * 16;\n const raw = frame - startFrame;\n const localFrame = raw < 0 ? raw : raw % period;\n\n // Pulse offset: starts above the path (out of view), travels down\n // until the dash sits past the end. We use a wide gap (9999) so the\n // dash pattern shows exactly one bright segment.\n const offset = interpolate(\n localFrame,\n [0, pulseDuration],\n [len + pulseLength, -pulseLength],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n // Hide before this edge's first firing and in the inter-pulse gap.\n if (localFrame < 0 || localFrame > pulseDuration + 6) {\n return null;\n }\n\n return (\n <g key={`pulse-${i}`}>\n {/* Trail copies — fading and offset back along the path. */}\n {[0.15, 0.3, 0.55].map((alpha, idx) => (\n <path\n key={`trail-${idx}`}\n d={path}\n fill=\"none\"\n stroke={pulseColor}\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeDasharray={`${pulseLength} 9999`}\n strokeDashoffset={offset + (idx + 1) * 8}\n opacity={alpha}\n />\n ))}\n {/* Bright head */}\n <path\n d={path}\n fill=\"none\"\n stroke={pulseColor}\n strokeWidth={3.5}\n strokeLinecap=\"round\"\n strokeDasharray={`${pulseLength} 9999`}\n strokeDashoffset={offset}\n style={{\n filter: `drop-shadow(0 0 4px ${pulseColor})`,\n }}\n />\n </g>\n );\n })}\n </svg>\n\n {/* Nodes */}\n {nodes.map((node) => (\n <div\n key={node.id}\n style={{\n position: \"absolute\",\n left: node.x - 60,\n top: node.y - 24,\n width: 120,\n height: 48,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: nodeColor,\n color: textColor,\n border: \"1px solid rgba(255,255,255,0.08)\",\n borderRadius: 10,\n fontSize: 14,\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n }}\n >\n <FitText\n maxFontSize={14}\n maxWidth={NODE_LABEL_WIDTH}\n maxLines={1}\n fontFamily={FONT_FAMILY}\n fontWeight={600}\n letterSpacing=\"-0.01em\"\n >\n {node.label ?? node.id}\n </FitText>\n </div>\n ))}\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface PipelineJourneyProps {\n cardLabel?: string;\n accentColor?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\nconst MONO_FAMILY =\n \"monospace\";\n\nconst COLUMNS = [\n { id: \"todo\", title: \"Todo\", count: 3 },\n { id: \"in_progress\", title: \"In Progress\", count: 2 },\n { id: \"done\", title: \"Done\", count: 4 },\n];\n\nconst COL_WIDTH = 320;\nconst COL_GAP = 40;\nconst BOARD_TOP = 120;\nconst BOARD_LEFT = 120;\nconst CARD_W = 280;\nconst CARD_H = 88;\n\nfunction colCenter(index: number) {\n const x = BOARD_LEFT + index * (COL_WIDTH + COL_GAP) + COL_WIDTH / 2;\n const y = BOARD_TOP + 90;\n return { x, y };\n}\n\nfunction pseudoRandom(i: number) {\n const v = Math.sin(i * 12.9898) * 43758.5453;\n return v - Math.floor(v);\n}\n\nfunction PlaceholderCard({ opacity = 1 }: { opacity?: number }) {\n return (\n <div\n style={{\n width: CARD_W,\n height: CARD_H,\n borderRadius: 12,\n background: \"rgba(244,236,224,0.04)\",\n border: \"1px solid rgba(244,236,224,0.08)\",\n marginBottom: 12,\n padding: 14,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n opacity,\n }}\n >\n <div\n style={{\n width: \"70%\",\n height: 10,\n borderRadius: 4,\n background: \"rgba(244,236,224,0.12)\",\n }}\n />\n <div\n style={{\n width: \"45%\",\n height: 8,\n borderRadius: 4,\n background: \"rgba(244,236,224,0.08)\",\n }}\n />\n <div style={{ flex: 1 }} />\n <div\n style={{\n width: 28,\n height: 28,\n borderRadius: 999,\n background: \"rgba(244,236,224,0.12)\",\n }}\n />\n </div>\n );\n}\n\nexport function PipelineJourney({\n cardLabel = \"Build pipeline\",\n accentColor = palette.SUCCESS,\n speed = 1,\n className,\n}: PipelineJourneyProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // Phases\n const flight1Start = 30;\n const flight1End = 70;\n const waitEnd = 110;\n const flight2Start = 110;\n const flight2End = 150;\n const confettiStart = 150;\n\n const todoCenter = colCenter(0);\n const progCenter = colCenter(1);\n const doneCenter = colCenter(2);\n\n // Card position interpolation\n let cx: number;\n let cy: number;\n let rotZ = 0;\n let scaleBoost = 1;\n\n if (frame < flight1Start) {\n cx = todoCenter.x;\n cy = todoCenter.y;\n } else if (frame < flight1End) {\n const p = (frame - flight1Start) / (flight1End - flight1Start);\n cx = interpolate(p, [0, 1], [todoCenter.x, progCenter.x]);\n // arc\n const arc = Math.sin(p * Math.PI) * 80;\n cy = interpolate(p, [0, 1], [todoCenter.y, progCenter.y]) - arc;\n rotZ = Math.sin(p * Math.PI) * 3;\n scaleBoost = 1 + Math.sin(p * Math.PI) * 0.15;\n } else if (frame < flight2Start) {\n cx = progCenter.x;\n cy = progCenter.y;\n } else if (frame < flight2End) {\n const p = (frame - flight2Start) / (flight2End - flight2Start);\n cx = interpolate(p, [0, 1], [progCenter.x, doneCenter.x]);\n const arc = Math.sin(p * Math.PI) * 80;\n cy = interpolate(p, [0, 1], [progCenter.y, doneCenter.y]) - arc;\n rotZ = Math.sin(p * Math.PI) * 3;\n scaleBoost = 1 + Math.sin(p * Math.PI) * 0.15;\n } else {\n cx = doneCenter.x;\n cy = doneCenter.y;\n }\n\n // Landing micro-spring on each arrival\n const land1 = spring({\n frame: frame - flight1End,\n fps,\n config: { damping: 10, stiffness: 180, mass: 0.7 },\n durationInFrames: 18,\n });\n const land2 = spring({\n frame: frame - flight2End,\n fps,\n config: { damping: 10, stiffness: 180, mass: 0.7 },\n durationInFrames: 18,\n });\n\n let landingScale = 1;\n if (frame >= flight1End && frame < flight2Start) {\n landingScale = interpolate(land1, [0, 1], [0.92, 1]);\n } else if (frame >= flight2End) {\n landingScale = interpolate(land2, [0, 1], [0.92, 1]);\n }\n\n // Column flash on landing\n const progFlash = interpolate(\n frame,\n [flight1End, flight1End + 4, flight1End + 18],\n [0, 1, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n const doneFlash = interpolate(\n frame,\n [flight2End, flight2End + 4, flight2End + 18],\n [0, 1, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n // Timer visibility (during in_progress wait)\n const timerOpacity = interpolate(\n frame,\n [flight1End + 4, flight1End + 12, waitEnd - 8, waitEnd],\n [0, 1, 1, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n const timerSecs = Math.floor(\n interpolate(frame, [flight1End, waitEnd], [0, 42], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n }),\n );\n\n // Confetti particles\n const PARTICLE_COUNT = 36;\n const confettiFrame = frame - confettiStart;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background: palette.BG,\n fontFamily: FONT_FAMILY,\n color: palette.TEXT_HI,\n overflow: \"hidden\",\n }}\n >\n {/* Subtle grid bg */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n backgroundImage:\n \"linear-gradient(rgba(244,236,224,0.025) 1px, transparent 1px), linear-gradient(90deg, rgba(244,236,224,0.025) 1px, transparent 1px)\",\n backgroundSize: \"40px 40px\",\n }}\n />\n\n {/* Title */}\n <div\n style={{\n position: \"absolute\",\n top: 48,\n left: BOARD_LEFT,\n fontSize: 24,\n fontWeight: 600,\n letterSpacing: \"-0.02em\",\n }}\n >\n Sprint board\n </div>\n\n {/* Columns */}\n {COLUMNS.map((col, i) => {\n const flash =\n col.id === \"in_progress\"\n ? progFlash\n : col.id === \"done\"\n ? doneFlash\n : 0;\n return (\n <div\n key={col.id}\n style={{\n position: \"absolute\",\n top: BOARD_TOP,\n left: BOARD_LEFT + i * (COL_WIDTH + COL_GAP),\n width: COL_WIDTH,\n height: 480,\n borderRadius: 16,\n background: `rgba(244,236,224,${0.02 + flash * 0.08})`,\n border: `1px solid rgba(244,236,224,${0.06 + flash * 0.2})`,\n padding: 20,\n transition: \"none\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 18,\n }}\n >\n <div style={{ fontSize: 14, fontWeight: 600, opacity: 0.85 }}>\n {col.title}\n </div>\n <div\n style={{\n fontSize: 12,\n fontFamily: MONO_FAMILY,\n opacity: 0.5,\n padding: \"2px 8px\",\n borderRadius: 999,\n background: \"rgba(244,236,224,0.06)\",\n }}\n >\n {col.count}\n </div>\n </div>\n {Array.from({ length: col.count }).map((_, k) => (\n <PlaceholderCard key={k} opacity={0.55 + ((k * 13) % 30) / 100} />\n ))}\n </div>\n );\n })}\n\n {/* Flying card */}\n <div\n style={{\n position: \"absolute\",\n left: cx - CARD_W / 2,\n top: cy - CARD_H / 2,\n width: CARD_W,\n height: CARD_H,\n borderRadius: 14,\n background: palette.SURFACE,\n border: `1px solid ${accentColor}`,\n transform: `rotate(${rotZ}deg) scale(${scaleBoost * landingScale})`,\n transformOrigin: \"center center\",\n padding: 16,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 10,\n willChange: \"transform\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div\n style={{\n fontFamily: MONO_FAMILY,\n fontSize: 11,\n opacity: 0.5,\n }}\n >\n REMO-128\n </div>\n <div\n style={{\n width: 8,\n height: 8,\n borderRadius: 999,\n background: accentColor,\n }}\n />\n </div>\n <FitText\n maxFontSize={16}\n maxWidth={CARD_W - 32}\n maxLines={2}\n fontFamily={FONT_FAMILY}\n fontWeight={600}\n letterSpacing=\"-0.01em\"\n >\n {cardLabel}\n </FitText>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"auto\",\n }}\n >\n <div\n style={{\n fontFamily: MONO_FAMILY,\n fontSize: 12,\n opacity: timerOpacity,\n color: accentColor,\n }}\n >\n 00:{String(timerSecs).padStart(2, \"0\")}\n </div>\n <div\n style={{\n fontSize: 11,\n opacity: 0.4,\n }}\n >\n assignee\n </div>\n </div>\n </div>\n\n {/* Confetti */}\n {confettiFrame > 0 &&\n Array.from({ length: PARTICLE_COUNT }).map((_, i) => {\n const angle = pseudoRandom(i + 1) * Math.PI * 2;\n const dist = 60 + pseudoRandom(i + 99) * 220;\n const drift = pseudoRandom(i + 7) * 40 - 20;\n const sizeR = pseudoRandom(i + 3);\n const size = 6 + sizeR * 8;\n const colorPick = pseudoRandom(i + 5);\n const color =\n colorPick < 0.33\n ? accentColor\n : colorPick < 0.66\n ? palette.WARNING\n : palette.BLUE;\n const lifespan = 50;\n const t = Math.min(confettiFrame / lifespan, 1);\n const eased = 1 - (1 - t) * (1 - t);\n const px = doneCenter.x + Math.cos(angle) * dist * eased + drift * t;\n const py =\n doneCenter.y +\n Math.sin(angle) * dist * eased +\n // gravity\n t * t * 220;\n const opacity = interpolate(t, [0, 0.7, 1], [1, 1, 0]);\n const rot = pseudoRandom(i + 11) * 360 + confettiFrame * 12;\n return (\n <div\n key={i}\n style={{\n position: \"absolute\",\n left: px - size / 2,\n top: py - size / 2,\n width: size,\n height: size * 0.6,\n background: color,\n borderRadius: 2,\n opacity,\n transform: `rotate(${rot}deg)`,\n willChange: \"transform\",\n }}\n />\n );\n })}\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport {\n AbsoluteFill,\n Easing,\n interpolate,\n spring,\n useCurrentFrame,\n useVideoConfig,\n} from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface VisualDocsSnippetProps {\n cursorStart?: { x: number; y: number };\n cursorTarget?: { x: number; y: number };\n clickFrame?: number;\n tooltipTitle?: string;\n tooltipBody?: string;\n buttonLabel?: string;\n accent?: string;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nconst SOFT = Easing.bezier(0.16, 1, 0.3, 1);\n\n// Browser frame layout — kept as constants so cursor coordinates are easy to\n// reason about against absolute frame coordinates.\nconst BROWSER = {\n left: 100,\n top: 90,\n width: 1080,\n height: 540,\n chromeHeight: 48,\n};\n\n// The \"Generate\" button sits inside the browser; bounding box is anchored\n// here. Coordinates are absolute (in the 1280x720 frame).\nconst BUTTON = {\n cx: 640,\n cy: 360,\n width: 220,\n height: 64,\n};\n\nexport function VisualDocsSnippet({\n cursorStart = { x: 980, y: 560 },\n cursorTarget = { x: BUTTON.cx, y: BUTTON.cy },\n clickFrame = 110,\n tooltipTitle = \"Generate runs\",\n tooltipBody = \"Click to start a new generation. The job will appear in the sidebar.\",\n buttonLabel = \"Generate\",\n accent = palette.ACCENT_SOFT,\n background = palette.BG,\n speed = 1,\n className,\n}: VisualDocsSnippetProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // ── Timing anchors derived from clickFrame ──────────────────────────────\n const cursorStartFrame = 30;\n const cursorEndFrame = clickFrame; // arrives exactly at click\n const boundingBoxFrame = clickFrame + 5;\n const tooltipFrame = clickFrame + 20;\n const settleFrame = clickFrame + 90;\n\n // ── Browser fade-in ─────────────────────────────────────────────────────\n const enter = interpolate(frame, [0, 30], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n easing: SOFT,\n });\n const enterScale = interpolate(frame, [0, 30], [0.98, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n easing: SOFT,\n });\n\n // ── Cursor motion: bezier arc from start to target ──────────────────────\n const cursorT = interpolate(\n frame,\n [cursorStartFrame, cursorEndFrame],\n [0, 1],\n {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n easing: SOFT,\n },\n );\n // After click, cursor exits down-right so it doesn't cover the new content.\n const exitT = interpolate(\n frame,\n [clickFrame + 6, clickFrame + 50],\n [0, 1],\n {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n easing: SOFT,\n },\n );\n const exitTarget = { x: 1180, y: 660 };\n\n const baseX = lerp(cursorStart.x, cursorTarget.x, cursorT);\n const baseY = lerp(cursorStart.y, cursorTarget.y, cursorT);\n // Soft arc bias on the way to the button (so the path feels organic).\n const arc = Math.sin(cursorT * Math.PI) * -36;\n const cursorX = lerp(baseX, exitTarget.x, exitT);\n const cursorY = lerp(baseY + arc, exitTarget.y, exitT);\n\n // ── Click micro-bounce ──────────────────────────────────────────────────\n const clickSpring = spring({\n frame: frame - clickFrame,\n fps,\n config: { damping: 10, stiffness: 200, mass: 0.6 },\n durationInFrames: 14,\n });\n const clickDip = interpolate(clickSpring, [0, 0.4, 1], [1, 0.94, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const buttonScale = frame >= clickFrame ? clickDip : 1;\n const cursorClickScale = frame >= clickFrame ? clickDip : 1;\n\n // Click ripple\n const ripple = interpolate(frame, [clickFrame, clickFrame + 24], [0, 60], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const rippleOpacity = interpolate(\n frame,\n [clickFrame, clickFrame + 24],\n [0.6, 0],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n // ── Bounding box draw-on (animated stroke-dashoffset) ───────────────────\n const boxPerimeter = (BUTTON.width + 24 + (BUTTON.height + 24)) * 2;\n const boxProgress = interpolate(\n frame,\n [boundingBoxFrame, boundingBoxFrame + 18],\n [0, 1],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\", easing: SOFT },\n );\n const boxOpacity = interpolate(\n frame,\n [boundingBoxFrame, boundingBoxFrame + 6, settleFrame, settleFrame + 10],\n [0, 1, 1, 0.6],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n return (\n <AbsoluteFill\n className={className}\n style={{\n background,\n fontFamily: FONT_FAMILY,\n }}\n >\n {/* Browser frame */}\n <div\n style={{\n position: \"absolute\",\n left: BROWSER.left,\n top: BROWSER.top,\n width: BROWSER.width,\n height: BROWSER.height,\n borderRadius: 18,\n overflow: \"hidden\",\n background: palette.BG_DEEP,\n border: `1px solid ${palette.BORDER_SOFT}`,\n opacity: enter,\n transform: `scale(${enterScale})`,\n transformOrigin: \"center 40%\",\n willChange: \"transform, opacity\",\n }}\n >\n <BrowserChrome chromeHeight={BROWSER.chromeHeight} />\n\n {/* Page viewport */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n top: BROWSER.chromeHeight,\n bottom: 0,\n background: palette.BG_DEEP,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n paddingTop: 60,\n gap: 22,\n }}\n >\n <div\n style={{\n fontSize: 13,\n color: palette.TEXT_MUTED,\n letterSpacing: \"0.04em\",\n }}\n >\n Generations · 2 active\n </div>\n <div\n style={{\n fontSize: 38,\n fontWeight: 600,\n color: palette.TEXT_HI,\n letterSpacing: \"-0.025em\",\n maxWidth: 720,\n textAlign: \"center\",\n lineHeight: 1.15,\n }}\n >\n Run a new generation\n </div>\n <div\n style={{\n fontSize: 15,\n color: palette.TEXT_MUTED,\n maxWidth: 480,\n textAlign: \"center\",\n lineHeight: 1.5,\n }}\n >\n Pick a model, set a seed, and start a job. Results stream into the\n sidebar as they finish.\n </div>\n </div>\n </div>\n\n {/* CTA button — sits OUTSIDE the browser DOM in absolute coords so the\n bounding box and cursor align to identical pixel anchors. */}\n <div\n style={{\n position: \"absolute\",\n left: BUTTON.cx - BUTTON.width / 2,\n top: BUTTON.cy - BUTTON.height / 2,\n width: BUTTON.width,\n height: BUTTON.height,\n borderRadius: 14,\n background: palette.TEXT_HI,\n color: palette.BG_DEEP,\n fontWeight: 600,\n fontSize: 17,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: `scale(${buttonScale})`,\n opacity: enter,\n willChange: \"transform\",\n }}\n >\n <FitText\n maxFontSize={17}\n maxWidth={BUTTON.width - 32}\n fontFamily={FONT_FAMILY}\n fontWeight={600}\n style={{ color: palette.BG_DEEP }}\n >\n {`${buttonLabel} →`}\n </FitText>\n </div>\n\n {/* Click ripple */}\n {rippleOpacity > 0 && (\n <svg\n style={{\n position: \"absolute\",\n left: BUTTON.cx - 80,\n top: BUTTON.cy - 80,\n width: 160,\n height: 160,\n pointerEvents: \"none\",\n }}\n >\n <circle\n cx={80}\n cy={80}\n r={ripple}\n fill=\"none\"\n stroke={accent}\n strokeWidth={2}\n opacity={rippleOpacity}\n />\n </svg>\n )}\n\n {/* Bounding box selector — animated draw-on via stroke-dashoffset */}\n {frame >= boundingBoxFrame && (\n <svg\n style={{\n position: \"absolute\",\n left: BUTTON.cx - BUTTON.width / 2 - 12,\n top: BUTTON.cy - BUTTON.height / 2 - 12,\n width: BUTTON.width + 24,\n height: BUTTON.height + 24,\n pointerEvents: \"none\",\n opacity: boxOpacity,\n }}\n >\n <rect\n x={1}\n y={1}\n width={BUTTON.width + 22}\n height={BUTTON.height + 22}\n rx={10}\n ry={10}\n fill=\"none\"\n stroke={accent}\n strokeOpacity={0.85}\n strokeWidth={2}\n strokeDasharray={`${boxPerimeter} ${boxPerimeter}`}\n strokeDashoffset={(1 - boxProgress) * boxPerimeter}\n />\n {/* Corner ticks */}\n {[\n [0, 0],\n [BUTTON.width + 24, 0],\n [0, BUTTON.height + 24],\n [BUTTON.width + 24, BUTTON.height + 24],\n ].map(([cx, cy], i) => (\n <circle\n key={i}\n cx={cx}\n cy={cy}\n r={4}\n fill={accent}\n opacity={boxProgress}\n />\n ))}\n </svg>\n )}\n\n {/* Tooltip card to the right of the bounding box */}\n {frame >= tooltipFrame && (\n <Tooltip\n frame={frame}\n tooltipFrame={tooltipFrame}\n settleFrame={settleFrame}\n accent={accent}\n title={tooltipTitle}\n body={tooltipBody}\n />\n )}\n\n {/* Cursor — drawn last so it sits above everything */}\n {frame >= cursorStartFrame && (\n <div\n style={{\n position: \"absolute\",\n left: cursorX,\n top: cursorY,\n transform: `translate(-2px, -2px) scale(${cursorClickScale})`,\n transformOrigin: \"top left\",\n zIndex: 9999,\n filter: `drop-shadow(0 3px 8px ${palette.BG_DEEP}66)`,\n willChange: \"transform, left, top\",\n }}\n >\n <CursorSVG />\n </div>\n )}\n </AbsoluteFill>\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Subviews */\n/* -------------------------------------------------------------------------- */\n\nfunction BrowserChrome({ chromeHeight }: { chromeHeight: number }) {\n return (\n <div\n style={{\n position: \"relative\",\n height: chromeHeight,\n display: \"flex\",\n alignItems: \"center\",\n gap: 14,\n paddingLeft: 18,\n paddingRight: 18,\n background: palette.SURFACE,\n borderBottom: `1px solid ${palette.BORDER_SOFT}`,\n }}\n >\n <div style={{ display: \"flex\", gap: 8 }}>\n {[palette.MAC_RED, palette.MAC_YELLOW, palette.MAC_GREEN].map((c) => (\n <div\n key={c}\n style={{\n width: 11,\n height: 11,\n borderRadius: \"50%\",\n background: c,\n opacity: 0.85,\n }}\n />\n ))}\n </div>\n <div\n style={{\n flex: 1,\n height: 28,\n marginLeft: 12,\n borderRadius: 14,\n background: palette.SURFACE_HI,\n border: `1px solid ${palette.BORDER_SOFT}`,\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: 14,\n color: palette.TEXT_MUTED,\n fontSize: 12,\n fontFamily:\n \"monospace\",\n }}\n >\n ⌕ remocn.dev/runs/new\n </div>\n </div>\n );\n}\n\nfunction Tooltip({\n frame,\n tooltipFrame,\n settleFrame,\n accent,\n title,\n body,\n}: {\n frame: number;\n tooltipFrame: number;\n settleFrame: number;\n accent: string;\n title: string;\n body: string;\n}) {\n // Two-line stagger fade-up\n const headT = interpolate(\n frame,\n [tooltipFrame, tooltipFrame + 14],\n [0, 1],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\", easing: SOFT },\n );\n const bodyT = interpolate(\n frame,\n [tooltipFrame + 6, tooltipFrame + 20],\n [0, 1],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\", easing: SOFT },\n );\n const settle = interpolate(\n frame,\n [settleFrame, settleFrame + 10],\n [1, 0.6],\n { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" },\n );\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: BUTTON.cx + BUTTON.width / 2 + 56,\n top: BUTTON.cy - 60,\n width: 320,\n padding: \"20px 22px\",\n borderRadius: 16,\n background: palette.SURFACE,\n border: `1px solid ${accent}55`,\n backdropFilter: \"blur(14px)\",\n WebkitBackdropFilter: \"blur(14px)\",\n opacity: settle,\n fontFamily: FONT_FAMILY,\n }}\n >\n <FitText\n maxFontSize={17}\n maxWidth={276}\n fontFamily={FONT_FAMILY}\n fontWeight={600}\n letterSpacing=\"-0.01em\"\n style={{\n opacity: headT,\n transform: `translateY(${(1 - headT) * 12}px)`,\n color: palette.TEXT_HI,\n marginBottom: 6,\n }}\n >\n {title}\n </FitText>\n <FitText\n maxFontSize={14}\n maxWidth={276}\n maxLines={4}\n fontFamily={FONT_FAMILY}\n style={{\n opacity: bodyT,\n transform: `translateY(${(1 - bodyT) * 12}px)`,\n color: palette.TEXT_MUTED,\n lineHeight: 1.5,\n }}\n >\n {body}\n </FitText>\n {/* Pointer toward bounding box */}\n <div\n style={{\n position: \"absolute\",\n left: -8,\n top: 70,\n width: 14,\n height: 14,\n background: palette.SURFACE,\n borderLeft: `1px solid ${accent}55`,\n borderBottom: `1px solid ${accent}55`,\n transform: \"rotate(45deg)\",\n }}\n />\n </div>\n );\n}\n\nfunction CursorSVG() {\n return (\n <svg width={28} height={28} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M5 3L5 19L9.5 14.5L12.5 21L15 20L12 13.5L18.5 13.5L5 3Z\"\n fill={palette.TEXT_HI}\n stroke={palette.BG_DEEP}\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\nfunction lerp(a: number, b: number, t: number) {\n return a + (b - a) * t;\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from '../../lib/palette';\n\nexport interface BrushStrokeSimulatorProps {\n /** Content the brush reveals (de-pixelates). Defaults to a clean gradient card. */\n children?: React.ReactNode;\n /** Brush stroke width in pixels. */\n brushSize?: number;\n /** Cursor fill color (semi-transparent). */\n cursorColor?: string;\n /** Outer page background. */\n background?: string;\n /** Primary tint of the simulated portrait base. */\n baseColorA?: string;\n /** Secondary tint of the revealed base layer. */\n baseColorB?: string;\n /** Tint of the obscured / pixelated overlay. */\n overlayColor?: string;\n /** Frame at which the brushing motion begins. */\n startFrame?: number;\n /** How many frames the brush takes to complete its sweep. */\n sweepDuration?: number;\n /** Playback speed multiplier. */\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nconst STAGE_W = 1280;\nconst STAGE_H = 720;\n\n/**\n * Two faces' worth of waypoints — sweeps left face, lifts, sweeps right face.\n * Y values cluster around the upper-middle of the frame so it reads like\n * brushing across the eyes/cheeks of a portrait.\n */\nconst WAYPOINTS: { x: number; y: number; press: boolean }[] = [\n { x: 280, y: 280, press: true },\n { x: 460, y: 260, press: true },\n { x: 460, y: 360, press: true },\n { x: 280, y: 380, press: true },\n // Lift between faces\n { x: 640, y: 220, press: false },\n // Right face\n { x: 820, y: 280, press: true },\n { x: 1000, y: 260, press: true },\n { x: 1000, y: 360, press: true },\n { x: 820, y: 380, press: true },\n];\n\nfunction cubicBezier(\n t: number,\n p0: { x: number; y: number },\n p1: { x: number; y: number },\n p2: { x: number; y: number },\n p3: { x: number; y: number },\n) {\n const u = 1 - t;\n const tt = t * t;\n const uu = u * u;\n const uuu = uu * u;\n const ttt = tt * t;\n return {\n x: uuu * p0.x + 3 * uu * t * p1.x + 3 * u * tt * p2.x + ttt * p3.x,\n y: uuu * p0.y + 3 * uu * t * p1.y + 3 * u * tt * p2.y + ttt * p3.y,\n };\n}\n\nfunction easeInOut(t: number) {\n return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;\n}\n\nfunction controlsFor(\n a: { x: number; y: number },\n b: { x: number; y: number },\n index: number,\n) {\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy) || 1;\n const sign = index % 2 === 0 ? 1 : -1;\n const px = (-dy / len) * (len * 0.18) * sign;\n const py = (dx / len) * (len * 0.18) * sign;\n return [\n { x: a.x + dx / 3 + px, y: a.y + dy / 3 + py },\n { x: a.x + (2 * dx) / 3 + px, y: a.y + (2 * dy) / 3 + py },\n ];\n}\n\n/**\n * Walks the bezier path up to the given progress (0..1) and returns:\n * - the active position\n * - whether the brush is currently \"pressed\" (between two press waypoints)\n * - a sampled trail of every position visited so far (for the reveal mask)\n */\nfunction sampleBrushPath(progress: number) {\n const segments = WAYPOINTS.length - 1;\n const samplesPerSegment = 14;\n const totalSamples = segments * samplesPerSegment;\n const reachedSamples = Math.max(\n 1,\n Math.min(totalSamples, Math.floor(progress * totalSamples)),\n );\n\n const trail: { x: number; y: number; press: boolean }[] = [];\n let pos = { x: WAYPOINTS[0].x, y: WAYPOINTS[0].y };\n let pressed = WAYPOINTS[0].press;\n\n for (let i = 0; i < reachedSamples; i++) {\n const segIdx = Math.min(segments - 1, Math.floor(i / samplesPerSegment));\n const localT = (i % samplesPerSegment) / samplesPerSegment;\n const a = WAYPOINTS[segIdx];\n const b = WAYPOINTS[segIdx + 1];\n const [c1, c2] = controlsFor(a, b, segIdx);\n const t = easeInOut(localT);\n pos = cubicBezier(t, a, c1, c2, b);\n pressed = a.press && b.press;\n trail.push({ x: pos.x, y: pos.y, press: pressed });\n }\n\n return { pos, pressed, trail };\n}\n\nexport function BrushStrokeSimulator({\n children,\n brushSize = 70,\n cursorColor = \"rgba(255,255,255,0.45)\",\n background = palette.BG,\n baseColorA = palette.BLUE,\n baseColorB = palette.TEAL,\n overlayColor = palette.SURFACE,\n startFrame = 12,\n sweepDuration = 150,\n speed = 1,\n className,\n}: BrushStrokeSimulatorProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n const localFrame = Math.max(0, frame - startFrame);\n const progress = Math.min(1, localFrame / sweepDuration);\n\n const { pos, pressed, trail } = sampleBrushPath(progress);\n\n // Press scale: cursor shrinks slightly while pressing onto the surface.\n const pressTarget = pressed ? 0.86 : 1;\n const pressSpring = spring({\n frame: localFrame,\n fps,\n config: { damping: 18, stiffness: 220, mass: 0.6 },\n });\n const cursorScale = interpolate(pressSpring, [0, 1], [1, pressTarget]);\n\n // Build SVG path d-attribute from the accumulated trail.\n const maskPathD =\n trail.length === 0\n ? \"\"\n : trail\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x.toFixed(2)} ${p.y.toFixed(2)}`)\n .join(\" \");\n\n // Tiny intro fade so the scene \"lands\" before the brush starts.\n const introOpacity = interpolate(frame, [0, 8], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n overflow: \"hidden\",\n background,\n fontFamily: FONT_FAMILY,\n opacity: introOpacity,\n }}\n >\n {/* Sharp base layer — the content the brush reveals */}\n <div style={{ position: \"absolute\", inset: 0 }}>\n {children ?? (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: `linear-gradient(140deg, ${baseColorA} 0%, ${baseColorB} 55%, ${palette.BG} 100%)`,\n }}\n />\n )}\n </div>\n\n {/* Pixelated overlay — the layer the brush \"reveals\" through the mask */}\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${STAGE_W} ${STAGE_H}`}\n style={{ position: \"absolute\", inset: 0, pointerEvents: \"none\" }}\n >\n <defs>\n <mask id=\"brush-reveal-mask\" maskUnits=\"userSpaceOnUse\">\n <rect width={STAGE_W} height={STAGE_H} fill=\"white\" />\n {maskPathD && (\n <path\n d={maskPathD}\n stroke=\"black\"\n strokeWidth={brushSize}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n )}\n </mask>\n <pattern\n id=\"pixel-overlay\"\n x=\"0\"\n y=\"0\"\n width=\"32\"\n height=\"32\"\n patternUnits=\"userSpaceOnUse\"\n >\n <rect width=\"32\" height=\"32\" fill={overlayColor} />\n <rect width=\"16\" height=\"16\" fill=\"rgba(255,255,255,0.04)\" />\n <rect x=\"16\" y=\"16\" width=\"16\" height=\"16\" fill=\"rgba(0,0,0,0.25)\" />\n </pattern>\n </defs>\n <rect\n width={STAGE_W}\n height={STAGE_H}\n fill=\"url(#pixel-overlay)\"\n mask=\"url(#brush-reveal-mask)\"\n />\n </svg>\n\n {/* Cursor / fingertip */}\n <div\n style={{\n position: \"absolute\",\n left: pos.x - brushSize / 2,\n top: pos.y - brushSize / 2,\n width: brushSize,\n height: brushSize,\n borderRadius: \"50%\",\n background: cursorColor,\n border: \"1.5px solid rgba(255,255,255,0.85)\",\n transform: `scale(${cursorScale})`,\n transformOrigin: \"center\",\n pointerEvents: \"none\",\n zIndex: 9999,\n }}\n />\n </div>\n );\n}\n\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport { FitText } from \"../../lib/text/fitText\";\nimport * as palette from '../../lib/palette';\n\nexport interface ImageExpandRect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface ImageExpandToFullscreenProps {\n from?: ImageExpandRect;\n to?: ImageExpandRect;\n borderRadiusFrom?: number;\n borderRadiusTo?: number;\n morphAt?: number;\n imageColorA?: string;\n imageColorB?: string;\n imageColorC?: string;\n feedBackground?: string;\n editorBackground?: string;\n accent?: string;\n postAuthor?: string;\n postBody?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nconst DEFAULT_FROM: ImageExpandRect = {\n left: 460,\n top: 280,\n width: 360,\n height: 200,\n};\n\nconst DEFAULT_TO: ImageExpandRect = {\n left: 200,\n top: 120,\n width: 880,\n height: 480,\n};\n\nexport function ImageExpandToFullscreen({\n from = DEFAULT_FROM,\n to = DEFAULT_TO,\n borderRadiusFrom = 12,\n borderRadiusTo = 16,\n morphAt = 30,\n imageColorA = palette.DANGER,\n imageColorB = palette.VIOLET,\n imageColorC = palette.BLUE,\n feedBackground = palette.TEXT,\n editorBackground = palette.BG,\n accent = palette.TEXT_HI,\n postAuthor = \"Maya Larsson\",\n postBody = \"Sunset over the old harbor — color graded straight out of camera.\",\n speed = 1,\n className,\n}: ImageExpandToFullscreenProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n // ONE spring drives the entire shared-element transition. Slightly more\n // critically damped than the morphing modal — the image lands with a\n // tight settle rather than a heavy bloom.\n const morph = spring({\n frame: frame - morphAt,\n fps,\n config: { mass: 1.4, damping: 24, stiffness: 130 },\n });\n\n const left = interpolate(morph, [0, 1], [from.left, to.left]);\n const top = interpolate(morph, [0, 1], [from.top, to.top]);\n const width = interpolate(morph, [0, 1], [from.width, to.width]);\n const height = interpolate(morph, [0, 1], [from.height, to.height]);\n const radius = interpolate(morph, [0, 1], [borderRadiusFrom, borderRadiusTo]);\n\n // Feed UI fades fully out in the FIRST half of the morph; the dark\n // editor background fades in across the same window.\n const feedOpacity = interpolate(morph, [0, 0.5], [1, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const editorOpacity = interpolate(morph, [0, 0.5], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n // Toolbars slide in during the LAST third of the morph — they should\n // feel called in by the image landing at fullscreen.\n const toolbarOpacity = interpolate(morph, [0.5, 1], [0, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const topToolbarTy = interpolate(morph, [0.5, 1], [-100, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n const bottomToolbarTy = interpolate(morph, [0.5, 1], [100, 0], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n\n const imageGradient = `linear-gradient(135deg, ${imageColorA}, ${imageColorB}, ${imageColorC})`;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n overflow: \"hidden\",\n fontFamily: FONT_FAMILY,\n }}\n >\n {/* Feed background (light page) */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: feedBackground,\n opacity: feedOpacity,\n }}\n />\n\n {/* Editor background (dark canvas) */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background: editorBackground,\n opacity: editorOpacity,\n }}\n />\n\n {/* Fake post card living on the feed */}\n <div\n style={{\n position: \"absolute\",\n left: 380,\n top: 140,\n width: 520,\n padding: 24,\n background: palette.TEXT_HI,\n borderRadius: 20,\n border: `1px solid ${palette.BORDER}`,\n opacity: feedOpacity,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n }}\n >\n {/* Author row */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <div\n style={{\n width: 44,\n height: 44,\n borderRadius: 999,\n background: imageGradient,\n }}\n />\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <FitText\n maxFontSize={15}\n maxWidth={416}\n fontFamily={FONT_FAMILY}\n fontWeight={600}\n letterSpacing=\"-0.005em\"\n style={{ color: palette.BG }}\n >\n {postAuthor}\n </FitText>\n <div style={{ fontSize: 12, color: palette.TEXT_MUTED }}>2h ago</div>\n </div>\n </div>\n\n {/* Body text */}\n <FitText\n maxFontSize={14}\n maxWidth={472}\n maxLines={4}\n fontFamily={FONT_FAMILY}\n style={{ lineHeight: 1.5, color: palette.SURFACE_HI }}\n >\n {postBody}\n </FitText>\n\n {/* Spacer where the thumbnail visually lives — the actual\n morphing image is rendered absolutely below so it can lift\n cleanly off the card. */}\n <div\n style={{\n width: \"100%\",\n height: 200,\n borderRadius: 12,\n background: \"transparent\",\n }}\n />\n\n {/* Action row */}\n <div style={{ display: \"flex\", gap: 16 }}>\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: 28,\n height: 28,\n borderRadius: 8,\n background: palette.TEXT,\n }}\n />\n ))}\n </div>\n </div>\n\n {/* The morphing image — driven entirely by the single spring */}\n <div\n style={{\n position: \"absolute\",\n left,\n top,\n width,\n height,\n borderRadius: radius,\n background: imageGradient,\n border: `1px solid ${palette.BORDER_SOFT}`,\n overflow: \"hidden\",\n }}\n />\n\n {/* Top toolbar */}\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: 64,\n padding: \"0 24px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n background: palette.SURFACE,\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n borderBottom: `1px solid ${palette.BORDER_SOFT}`,\n opacity: toolbarOpacity,\n transform: `translateY(${topToolbarTy}%)`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: 8,\n background: palette.SURFACE_HI,\n }}\n />\n <div\n style={{\n fontSize: 14,\n fontWeight: 500,\n color: accent,\n letterSpacing: \"-0.005em\",\n }}\n >\n Editor\n </div>\n </div>\n <div style={{ display: \"flex\", gap: 10 }}>\n {[0, 1, 2, 3].map((i) => (\n <div\n key={i}\n style={{\n width: 32,\n height: 32,\n borderRadius: 8,\n background: palette.SURFACE_HI,\n }}\n />\n ))}\n </div>\n </div>\n\n {/* Bottom toolbar */}\n <div\n style={{\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n height: 80,\n padding: \"0 24px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 14,\n background: palette.SURFACE,\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n borderTop: `1px solid ${palette.BORDER_SOFT}`,\n opacity: toolbarOpacity,\n transform: `translateY(${bottomToolbarTy}%)`,\n }}\n >\n {[0, 1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n style={{\n width: 44,\n height: 44,\n borderRadius: 12,\n background:\n i === 2\n ? accent\n : palette.SURFACE_HI,\n border: `1px solid ${palette.BORDER_SOFT}`,\n }}\n />\n ))}\n </div>\n </div>\n );\n}\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { GlassCodeBlock } from './index';\n\nconst paramsSchema = z.object({\n code: z.string().default('// Example\\nimport { Typewriter } from \"@cueframe/primitives/text\";\\n\\nexport const App = () => <Typewriter text=\"Hello\" />;').describe('Code content. Newlines preserved; basic syntax highlighting applied.'),\n title: z.string().default('App.tsx').describe('Filename in the window chrome.'),\n width: z.number().int().min(200).max(2000).optional().describe('Block width in pixels. Defaults to fit container.'),\n height: z.number().int().min(120).max(1400).optional().describe('Block height in pixels. Defaults to fit content.'),\n fontSize: z.number().min(10).max(48).default(16).describe('Code font size in pixels.'),\n background: z.string().default('rgba(20, 20, 30, 0.7)').describe('Glass tint color (low alpha for the glassmorphism look).'),\n glassColor: z.string().default('rgba(255, 255, 255, 0.05)').describe('Highlight gradient over the glass.'),\n staggerFrames: z.number().int().min(0).max(20).default(3).describe('Frames between each line\\'s entrance.'),\n showTrafficLights: z.boolean().default(true).describe('Show macOS-style red/yellow/green dots in the chrome.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'glass-code-block',\n component: GlassCodeBlock,\n name: 'Glass Code Block',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'show-code',\n description:\n 'Glassmorphic code window with macOS-style traffic lights, syntax highlighting, and per-line staggered entrance. Premium polish for showing code on screen — softer than terminal-simulator.',\n useWhen:\n 'Code-heavy demos, snippet showcase, library landing pages, before-the-typing-finishes \"look at this\" beats. Pair with mesh-gradient-bg or dynamic-grid behind. Avoid for >15 lines — the stagger reveal gets long.',\n pairsWith: ['mesh-gradient-bg', 'dynamic-grid', 'shimmer-sweep'],\n avoidWith: ['terminal-simulator'],\n tier: 'recommended',\n useCase: ['title-over-footage', 'full-scene'],\n tags: ['ui', 'code', 'block', 'glass', 'snippet', 'developer'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { title: 'App.tsx', fontSize: 16, background: 'rgba(20, 20, 30, 0.7)', glassColor: 'rgba(255, 255, 255, 0.05)', staggerFrames: 3, showTrafficLights: true, speed: 1 },\n\n examples: [\n {\n name: 'cueframe-snippet',\n mood: ['tech-demo'],\n params: {\n code: 'import { Typewriter } from \"@cueframe/primitives/text\";\\n\\nexport const App = () => (\\n <Typewriter text=\"Hello, world.\" />\\n);',\n title: 'App.tsx', fontSize: 18, staggerFrames: 4,\n },\n },\n ],\n\n textParam: 'code',\n subtextParam: 'title',\n tokens: [],\n\n durationInFrames: 180,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 120, mode: 'oneshot', defaultExample: 'cueframe-snippet' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { TerminalSimulator } from './index';\n\nconst lineSchema = z.object({\n type: z.enum(['command', 'log', 'success', 'error']),\n text: z.string(),\n}).passthrough();\n\nconst paramsSchema = z.object({\n lines: z.array(lineSchema).optional().describe('Typed terminal lines. Each line has a type + text. Defaults to a sample npm install run.'),\n prompt: z.string().default('$').describe('Prompt character before each command line.'),\n title: z.string().default('Terminal').describe('Window title in the chrome.'),\n background: z.string().default('#0a0a0a').describe('Window background.'),\n chromeColor: z.string().default('#1f2937').describe('Window chrome (title-bar) color.'),\n fontSize: z.number().min(10).max(48).default(18).describe('Font size in pixels.'),\n charsPerFrame: z.number().min(0.5).max(20).default(2).describe('Reveal rate (cps multiplier on the underlying chunk timer).'),\n chunkSize: z.number().int().min(1).max(40).default(3).describe('Characters revealed per step. Higher = burstier output.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'terminal-simulator',\n component: TerminalSimulator,\n name: 'Terminal Simulator',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'show-terminal',\n description:\n 'Simulated terminal/console window with typed lines, prompt, and macOS-style chrome. Lines reveal in chunks (configurable chunkSize) and color by type (command/log/success/error).',\n useWhen:\n 'Developer demos, CLI tutorials, \"look how easy this install is\" content, cueframe self-promo (`npx shadcn add @cueframe/...`). Avoid for non-technical audiences — the chrome reads as nerdy.',\n pairsWith: ['dynamic-grid', 'pulsing-indicator', 'success-confetti', 'glitch-cut'],\n avoidWith: ['glass-code-block'],\n tier: 'standard',\n useCase: ['full-scene'],\n tags: ['ui', 'terminal', 'cli', 'console', 'shell', 'developer'],\n mood: ['tech-demo', 'minimal'],\n\n paramsSchema,\n propDefaults: { prompt: '$', title: 'Terminal', background: '#0a0a0a', chromeColor: '#1f2937', fontSize: 18, charsPerFrame: 2, chunkSize: 3, speed: 1 },\n\n examples: [\n {\n name: 'npm-install',\n mood: ['tech-demo'],\n params: {\n lines: [\n { type: 'command', text: 'npx shadcn@latest add @cueframe/typewriter' },\n { type: 'log', text: 'Installing components...' },\n { type: 'success', text: '✓ Created components/cueframe/typewriter.tsx' },\n { type: 'log', text: 'Done in 2.3s' },\n ],\n title: 'cueframe', prompt: '$',\n },\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg-terminal', fallback: '#0a0a0a', brandKitPath: 'colors.terminal' },\n { propPath: 'chromeColor', cssVar: '--cf-chrome', fallback: '#1f2937', brandKitPath: 'colors.chrome' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 100, mode: 'oneshot', defaultExample: 'npm-install' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ToastNotification } from './index';\n\nconst paramsSchema = z.object({\n title: z.string().default('Saved').describe('Toast title (1–4 words).'),\n message: z.string().default('Your changes are now live.').describe('Toast body message (1 short sentence).'),\n variant: z.enum(['success', 'error', 'info', 'warning']).default('success').describe('Variant. Drives icon color and accent.'),\n background: z.string().optional().describe('Frame background. Defaults to a subtle gradient.'),\n cardColor: z.string().optional().describe('Toast card color.'),\n textColor: z.string().optional().describe('Title color.'),\n mutedColor: z.string().optional().describe('Message body color.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'toast-notification',\n component: ToastNotification,\n name: 'Toast Notification',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'simulate-app-ui',\n description:\n 'Macos-style toast notification slide-in. Variant-driven icon + accent (success/error/info/warning), spring-animated entry, configurable card and text colors.',\n useWhen:\n 'Demo \"the action succeeded\" beats, \"alert/error\" shots, app-walkthrough confirmations. Pair with terminal-simulator or chat-to-preview-layout. Avoid for editorial/cinematic content.',\n pairsWith: ['terminal-simulator', 'chat-to-preview-layout', 'pulsing-indicator', 'success-confetti'],\n avoidWith: [],\n tier: 'standard',\n useCase: ['emphasis', 'title-over-footage'],\n tags: ['ui', 'toast', 'notification', 'badge', 'feedback', 'macos'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { title: 'Saved', message: 'Your changes are now live.', variant: 'success', speed: 1 },\n\n examples: [\n { name: 'success-saved', mood: ['tech-demo'], params: { title: 'Saved', message: 'Your changes are now live.', variant: 'success' } },\n { name: 'error-failed', mood: ['breaking-news'], params: { title: 'Failed to deploy', message: 'Check the build logs for details.', variant: 'error' } },\n { name: 'info-update', mood: ['minimal'], params: { title: 'Update available', message: 'Version 2.1 is ready to install.', variant: 'info' } },\n ],\n\n textParam: 'title',\n subtextParam: 'message',\n tokens: [\n { propPath: 'cardColor', cssVar: '--cf-card', fallback: '#1c1611', brandKitPath: 'colors.card' },\n { propPath: 'textColor', cssVar: '--cf-text', fallback: '#f4ece0', brandKitPath: 'colors.textOnSurface' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 60, mode: 'oneshot', defaultExample: 'success-saved' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { BrowserFlow } from './index';\n\nconst paramsSchema = z.object({\n url: z.string().min(1).max(140).default('remocn.dev').describe(\n 'URL the simulated browser navigates to. Typed character-by-character into the address bar — keep under ~30 chars so the typing finishes inside the first second.',\n ),\n speed: z.number().min(0.25).max(4).default(1).describe(\n 'Playback speed multiplier. >1 for time-lapse navigations; <1 for slower demo pacing.',\n ),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'browser-flow',\n component: BrowserFlow,\n name: 'Browser Flow',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'mock-browser',\n description:\n 'End-to-end simulated browser navigation: address-bar URL typing, autocomplete suggestion, progress bar, page render, scroll, virtual cursor traversal, and CTA click. Effectively a turnkey \"show the user discovering the product\" beat.',\n useWhen:\n 'Product launch demos, landing-page walkthroughs, \"ship a website in 30 seconds\" beats, agency reels showing the deployed result. Avoid when you only need a static browser frame (use device-mockup-zoom instead) or when the cursor logic should differ from URL→scroll→click (use cursor-flow + a custom page).',\n pairsWith: ['device-mockup-zoom', 'mesh-gradient-bg', 'success-confetti', 'pulsing-indicator'],\n avoidWith: ['cursor-flow', 'simulated-cursor'],\n tier: 'standard',\n useCase: ['outro', 'full-scene'],\n tags: ['ui', 'browser', 'web', 'navigation', 'address-bar', 'cursor', 'demo'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { url: 'remocn.dev', speed: 1 },\n\n examples: [\n {\n name: 'product-launch',\n mood: ['tech-demo', 'corporate'],\n params: { url: 'cueframe.ai', speed: 1 },\n description: 'Default cadence: type URL, load, scroll, click hero CTA.',\n },\n {\n name: 'fast-demo',\n mood: ['tech-demo'],\n params: { url: 'shadcn.com', speed: 1.5 },\n description: 'Sped up for rapid montage cuts.',\n },\n ],\n\n textParam: 'url',\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 270,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 150, mode: 'oneshot', defaultExample: 'product-launch' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { DeviceMockupZoom } from './index';\n\nconst paramsSchema = z.object({\n device: z.enum(['laptop', 'phone']).default('laptop').describe(\n 'Device chrome shell. `laptop` for product/web demos; `phone` for mobile-app reveals.',\n ),\n frameColor: z.string().default(palette.SURFACE).describe('Bezel/frame color of the device chrome.'),\n screenColor: z.string().default(palette.BG).describe('Inner screen background behind any children.'),\n background: z.string().default(palette.TEXT_HI).describe('Outer page background behind the device.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier on the zoom-out.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'device-mockup-zoom',\n component: DeviceMockupZoom,\n name: 'Device Mockup Zoom',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'mock-device',\n description:\n 'Laptop or phone bezel that starts at 2× zoom and eases down to 1× over the duration. Wraps any child content as the screen, so it doubles as a \"this is your UI\" reveal frame.',\n useWhen:\n 'App/product reveal hooks, hero shots, \"the new dashboard\" intros, mockup heroes for marketing. Pair with a dashboard or static screen as children. Avoid for kinetic browser navigation flows (use browser-flow) or when the screen content needs cursor interaction (use a separate component composed inside).',\n pairsWith: ['browser-flow', 'mesh-gradient-bg', 'glass-code-block', 'dashboard-populate'],\n avoidWith: [],\n tier: 'standard',\n useCase: ['full-scene', 'emphasis'],\n tags: ['ui', 'device', 'mockup', 'laptop', 'phone', 'zoom', 'reveal'],\n mood: ['corporate', 'tech-demo', 'minimal', 'editorial'],\n\n paramsSchema,\n propDefaults: { device: 'laptop', frameColor: palette.SURFACE, screenColor: palette.BG, background: palette.TEXT_HI, speed: 1 },\n\n examples: [\n {\n name: 'laptop-light',\n mood: ['corporate', 'minimal'],\n params: { device: 'laptop', frameColor: palette.SURFACE, screenColor: palette.BG, background: palette.TEXT_HI },\n description: 'Default: dark laptop on a light page.',\n },\n {\n name: 'phone-dark',\n mood: ['editorial', 'cinematic'],\n params: { device: 'phone', frameColor: palette.BG, screenColor: palette.BG_DEEP, background: palette.BG },\n description: 'Dark phone on dark background — moody mobile-app reveal.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'frameColor', cssVar: '--cf-fg', fallback: palette.SURFACE, brandKitPath: 'colors.text' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.TEXT_HI, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 90, mode: 'oneshot', defaultExample: 'laptop-light' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { SimulatedCursor } from './index';\n\nconst cursorPointSchema = z.object({\n x: z.number().describe('X coordinate in pixels (canonical 1280-wide stage).'),\n y: z.number().describe('Y coordinate in pixels (canonical 720-tall stage).'),\n hold: z.number().int().min(0).max(120).optional().describe('Frames to hold here before moving on. Defaults to 15.'),\n click: z.boolean().optional().describe('Fire a click ripple + dip when arriving at this point.'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n points: z.array(cursorPointSchema).min(1).optional().describe(\n 'Ordered cursor waypoints. Each leg takes ~24 frames to traverse plus the destination\\'s `hold`. Defaults to a 3-point sample path.',\n ),\n color: z.string().default('#f4ece0').describe('Cursor fill color.'),\n size: z.number().int().min(12).max(96).default(32).describe('Cursor SVG size in pixels.'),\n background: z.string().default('#14100c').describe('Stage background — typically a dark canvas the cursor traverses.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier on the entire path.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'simulated-cursor',\n component: SimulatedCursor,\n name: 'Simulated Cursor',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'simulate-cursor',\n description:\n 'Lightweight cursor traveller across a list of waypoints with linear travel + spring-driven click feedback (ripple + dip). The minimal, no-curves variant of cursor-flow — drop it on top of any other layer to \"operate\" the UI.',\n useWhen:\n 'Quickly annotating a static UI with cursor moves; pointing at on-screen targets across a screen recording; lightweight overlay-on-top pattern. Avoid when you need curved/organic paths or click-target labels (use cursor-flow). Avoid when the cursor should drive a self-contained scene like browser-flow.',\n pairsWith: ['toast-notification', 'glass-code-block', 'pulsing-indicator', 'bounding-box-selector'],\n avoidWith: ['cursor-flow', 'browser-flow'],\n tier: 'niche',\n useCase: ['explainer'],\n tags: ['ui', 'cursor', 'pointer', 'click', 'overlay'],\n mood: ['tech-demo', 'minimal'],\n\n paramsSchema,\n propDefaults: { color: '#f4ece0', size: 32, background: '#14100c', speed: 1 },\n\n examples: [\n {\n name: 'three-stop-tour',\n mood: ['tech-demo'],\n params: {\n points: [\n { x: 200, y: 150, hold: 20 },\n { x: 800, y: 360, hold: 25, click: true },\n { x: 1050, y: 560, hold: 20 },\n ],\n color: '#f4ece0',\n },\n description: 'Default 3-point tour with one click in the middle.',\n },\n {\n name: 'click-and-exit',\n mood: ['minimal'],\n params: {\n points: [\n { x: 100, y: 600, hold: 10 },\n { x: 640, y: 360, hold: 30, click: true },\n { x: 1180, y: 100, hold: 5 },\n ],\n color: '#f4ece0',\n size: 28,\n },\n description: 'Enter, click center, exit upper-right.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'color', cssVar: '--cf-fg', fallback: '#f4ece0', brandKitPath: 'colors.text' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: '#14100c', brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 80, mode: 'oneshot', defaultExample: 'three-stop-tour' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { CursorFlow } from './index';\n\nconst waypointSchema = z.object({\n x: z.number().describe('X coordinate in pixels.'),\n y: z.number().describe('Y coordinate in pixels.'),\n hold: z.number().int().min(0).max(120).optional().describe('Frames to dwell at this waypoint after arrival.'),\n click: z.boolean().optional().describe('Fire a press dip on the cursor and pulse on the click target.'),\n label: z.string().max(60).optional().describe('Label drawn next to the waypoint (only when `click` and `showTargets`). Auto-fits (shrinks) to the chip.'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n waypoints: z.array(waypointSchema).min(2).optional().describe(\n 'Ordered waypoint list. Cursor follows a perpendicular-offset cubic bezier between each pair so the path arcs organically. Defaults to a 4-point sample tour.',\n ),\n cursorColor: z.string().default(palette.TEXT_HI).describe('Cursor fill color.'),\n cursorSize: z.number().int().min(12).max(96).default(28).describe('Cursor SVG size in pixels.'),\n segmentDuration: z.number().int().min(8).max(120).default(36).describe('Frames per leg. Higher = slower, more deliberate motion.'),\n background: z.string().default(palette.BG).describe('Stage background.'),\n showTargets: z.boolean().default(true).describe('Render labelled click-target chips at waypoints with `click: true`.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'cursor-flow',\n component: CursorFlow,\n name: 'Cursor Flow',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'simulate-cursor',\n description:\n 'Curved-path cursor tour with labelled click targets. Each leg follows a perpendicular-offset bezier so the trajectory snakes naturally; arrivals trigger a synchronized cursor dip + target press.',\n useWhen:\n 'Multi-step product tours where the cursor \"performs\" a workflow with named steps (Generate → Publish, etc.). Pair with toast-notification or progress-steps for narrative confirmation. Avoid when you only need straight-line cursor travel (use simulated-cursor) or when a full browser frame is needed (use browser-flow).',\n pairsWith: ['toast-notification', 'progress-steps', 'glass-code-block', 'bounding-box-selector'],\n avoidWith: ['simulated-cursor', 'browser-flow'],\n tier: 'niche',\n useCase: ['explainer'],\n tags: ['ui', 'cursor', 'pointer', 'tour', 'path', 'bezier', 'click'],\n mood: ['tech-demo', 'minimal', 'corporate'],\n\n paramsSchema,\n propDefaults: { cursorColor: palette.TEXT_HI, cursorSize: 28, segmentDuration: 36, background: palette.BG, showTargets: true, speed: 1 },\n\n examples: [\n {\n name: 'generate-publish',\n mood: ['tech-demo'],\n params: {\n waypoints: [\n { x: 200, y: 180 },\n { x: 540, y: 240, click: true, label: 'Generate' },\n { x: 880, y: 360, hold: 8 },\n { x: 1040, y: 520, click: true, label: 'Publish' },\n ],\n showTargets: true,\n },\n description: 'Default 4-stop tour with two labelled clicks.',\n },\n {\n name: 'silent-sweep',\n mood: ['minimal'],\n params: {\n waypoints: [\n { x: 120, y: 600 },\n { x: 640, y: 360 },\n { x: 1160, y: 120 },\n ],\n showTargets: false,\n cursorSize: 24,\n },\n description: 'No click targets — pure motion across the frame.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'cursorColor', cssVar: '--cf-fg', fallback: palette.TEXT_HI, brandKitPath: 'colors.text' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 110, mode: 'oneshot', defaultExample: 'generate-publish' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { MorphingModal } from './index';\n\nconst rectSchema = z.object({\n top: z.number().describe('Top offset in pixels.'),\n left: z.number().describe('Left offset in pixels.'),\n width: z.number().describe('Width in pixels.'),\n height: z.number().describe('Height in pixels.'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n from: rectSchema.optional().describe('Source rect — the \"card\" position before opening. Defaults to a 360×200 card centered.'),\n to: rectSchema.optional().describe('Destination rect — the \"modal\" position after opening. Defaults to near-fullscreen.'),\n borderRadiusFrom: z.number().min(0).max(80).default(24).describe('Corner radius before morph.'),\n borderRadiusTo: z.number().min(0).max(80).default(0).describe('Corner radius after morph (0 for sheet/full-bleed).'),\n morphAt: z.number().int().min(0).max(300).default(30).describe('Frame at which the morph spring fires.'),\n background: z.string().default('#14100c').describe('Stage background behind the modal + bento grid.'),\n cardColor: z.string().default('#1c1611').describe('Card/modal fill color.'),\n textColor: z.string().default('#f4ece0').describe('Title text color.'),\n mutedColor: z.string().default('#b8a894').describe('Body / supporting text color.'),\n sourceTitle: z.string().max(120).default('Compose video').describe('Title shown on the source card (pre-morph). Auto-fits (shrinks + wraps to 2 lines).'),\n sourceBody: z.string().max(220).default('Click to start a new project').describe('Body shown on the source card. Auto-fits (shrinks + wraps to 4 lines).'),\n modalTitle: z.string().max(140).default('New project').describe('Hero title shown in the modal (post-morph). Auto-fits (shrinks + wraps to 2 lines).'),\n modalBody: z.string().max(640).default('Pick a template, drop your assets, and ship a 30s video in under five minutes. Everything renders deterministically — no flicker, no flaky frames.').describe('Body shown in the modal. Auto-fits (shrinks + wraps to 6 lines).'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'morphing-modal',\n component: MorphingModal,\n name: 'Morphing Modal',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'show-modal',\n description:\n 'A small card morphs into a near-fullscreen modal — one heavy spring drives all five animatable properties (left/top/width/height/radius) for a true shared-element feel. Source content fades out in the first third, modal content arrives in the last third with a translateY offset.',\n useWhen:\n 'Onboarding/intro hero beats, \"click → expand → details\" reveals, app-walkthrough open-modal moments. Pair with simulated-cursor that clicks the source card right before `morphAt`. Avoid for image-specific lifts (use image-expand-to-fullscreen, which maintains an image gradient through the morph).',\n pairsWith: ['simulated-cursor', 'cursor-flow', 'mesh-gradient-bg', 'typewriter'],\n avoidWith: ['image-expand-to-fullscreen'],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['ui', 'modal', 'sheet', 'shared-element', 'morph', 'expand'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: {\n borderRadiusFrom: 24, borderRadiusTo: 0, morphAt: 30,\n background: '#14100c', cardColor: '#1c1611', textColor: '#f4ece0', mutedColor: '#b8a894',\n sourceTitle: 'Compose video', sourceBody: 'Click to start a new project',\n modalTitle: 'New project',\n modalBody: 'Pick a template, drop your assets, and ship a 30s video in under five minutes. Everything renders deterministically — no flicker, no flaky frames.',\n speed: 1,\n },\n\n examples: [\n {\n name: 'compose-flow',\n mood: ['tech-demo'],\n params: {\n sourceTitle: 'Compose video', sourceBody: 'Click to start a new project',\n modalTitle: 'New project', morphAt: 30,\n },\n description: 'Default product onboarding open-modal.',\n },\n {\n name: 'settings-sheet',\n mood: ['minimal', 'corporate'],\n params: {\n sourceTitle: 'Settings', sourceBody: 'Customize your workspace',\n modalTitle: 'Workspace settings',\n modalBody: 'Theme, defaults, exports, integrations — everything in one place.',\n morphAt: 24, borderRadiusTo: 16,\n },\n description: 'Settings card → sheet (rounded corners preserved).',\n },\n ],\n\n textParam: 'modalTitle',\n subtextParam: 'modalBody',\n tokens: [\n { propPath: 'cardColor', cssVar: '--cf-bg', fallback: '#1c1611', brandKitPath: 'colors.background' },\n { propPath: 'textColor', cssVar: '--cf-fg', fallback: '#f4ece0', brandKitPath: 'colors.textOnSurface' },\n { propPath: 'mutedColor', cssVar: '--cf-muted', fallback: '#b8a894', brandKitPath: 'colors.textMuted' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 100, mode: 'oneshot', defaultExample: 'compose-flow' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ProgressSteps } from './index';\n\nconst stepSchema = z.object({\n label: z.string().min(1).max(60).describe('Short step label rendered next to the node (≤2 words ideal). Auto-fits (shrinks + wraps to 2 lines).'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n steps: z.array(stepSchema).min(2).max(8).optional().describe(\n 'Ordered list of steps. Each activates sequentially with a check-mark pop, color fade, and connecting-line fill.',\n ),\n orientation: z.enum(['horizontal', 'vertical']).default('horizontal').describe('Layout direction.'),\n activeColor: z.string().default('#7fae7a').describe('Color of completed nodes + connecting line fill.'),\n inactiveColor: z.string().default('#241d16').describe('Color of pending nodes + background track.'),\n background: z.string().default('#14100c').describe('Stage background.'),\n textColor: z.string().default('#f4ece0').describe('Step label color.'),\n stepDuration: z.number().int().min(10).max(120).default(30).describe('Frames between successive step activations.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'progress-steps',\n component: ProgressSteps,\n name: 'Progress Steps',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'show-progress',\n description:\n 'Sequential stepper with circular nodes that pop, fill with the active color, and reveal a check mark — connecting lines fill in between. Great for \"this is the workflow\" or post-action confirmation chains.',\n useWhen:\n 'Onboarding or pipeline status visuals (Connect → Process → Deploy), API/SaaS demo confirmations, multi-stage success beats. Pair with terminal-simulator for \"the command ran\" stories. Avoid when there\\'s no notion of sequential completion — use data-flow-pipes for branching topologies, pipeline-journey for kanban-style movement.',\n pairsWith: ['terminal-simulator', 'toast-notification', 'success-confetti', 'pulsing-indicator'],\n avoidWith: ['data-flow-pipes', 'pipeline-journey'],\n tier: 'standard',\n useCase: ['explainer'],\n tags: ['ui', 'steps', 'progress', 'stepper', 'workflow', 'check', 'sequential'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { orientation: 'horizontal', activeColor: '#7fae7a', inactiveColor: '#241d16', background: '#14100c', textColor: '#f4ece0', stepDuration: 30, speed: 1 },\n\n examples: [\n {\n name: 'three-step-deploy',\n mood: ['tech-demo'],\n params: {\n steps: [{ label: 'Connect' }, { label: 'Process' }, { label: 'Deploy' }],\n orientation: 'horizontal', activeColor: '#7fae7a',\n },\n description: 'Default deploy workflow stepper.',\n },\n {\n name: 'vertical-onboarding',\n mood: ['corporate', 'minimal'],\n params: {\n steps: [{ label: 'Sign up' }, { label: 'Verify' }, { label: 'Invite team' }, { label: 'Launch' }],\n orientation: 'vertical', activeColor: '#7b93b0', stepDuration: 40,\n },\n description: 'Vertical onboarding chain in blue.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'activeColor', cssVar: '--cf-accent', fallback: '#7fae7a', brandKitPath: 'colors.accent' },\n { propPath: 'inactiveColor', cssVar: '--cf-muted', fallback: '#241d16', brandKitPath: 'colors.textMuted' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: '#14100c', brandKitPath: 'colors.background' },\n { propPath: 'textColor', cssVar: '--cf-fg', fallback: '#f4ece0', brandKitPath: 'colors.text' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 140, mode: 'oneshot', defaultExample: 'three-step-deploy' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { BadgePop } from './index';\n\nconst paramsSchema = z.object({\n text: z.string().min(1).max(16).default('NEW').describe(\"Badge copy ('NEW', 'v2.0', 'BETA'). Short + loud.\"),\n sublabel: z.string().max(60).default('').describe(\"Smaller line under the badge ('Now generally available').\"),\n accentColor: z.string().default(palette.ACCENT).describe('Badge fill.'),\n textColor: z.string().default(palette.BG).describe('Badge text color — dark-on-accent by default.'),\n position: z.enum(['center', 'top-left', 'top-right', 'bottom-left', 'bottom-right']).default('center').describe('Placement.'),\n fontSize: z.number().min(20).max(120).default(44).describe('Badge font size in px.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'badge-pop',\n component: BadgePop,\n name: 'Badge Pop',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'particle-overlay',\n description:\n 'A release badge that ARRIVES: spring pop with overshoot, a shine sweep as it settles, then an idle pulse ring every ~2.5s. The \"NEW / v2.0 / BETA / GA\" moment, over footage or a scene.',\n useWhen:\n 'Version announcements, feature flags flipping public, pricing-tier callouts. Corner placement over product footage; center for a dedicated beat. One badge per beat.',\n pairsWith: ['stat-counter', 'toast-notification', 'device-mockup-zoom', 'dither-gradient-bg'],\n avoidWith: ['pulsing-indicator', 'success-confetti'],\n tier: 'standard',\n useCase: ['emphasis', 'title-over-footage'],\n tags: ['ui', 'badge', 'pill', 'release', 'version', 'announcement'],\n mood: ['tech-demo', 'playful', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n text: 'NEW',\n sublabel: '',\n accentColor: palette.ACCENT,\n textColor: palette.BG,\n position: 'center',\n fontSize: 44,\n },\n\n examples: [\n { name: 'release-ga', mood: ['corporate'], params: { text: 'v2.0', sublabel: 'Now generally available', accentColor: palette.ACCENT, position: 'center', fontSize: 52 } },\n { name: 'corner-new', mood: ['tech-demo'], params: { text: 'NEW', accentColor: palette.SUCCESS, position: 'top-right', fontSize: 38 } },\n ],\n\n textParam: 'text',\n subtextParam: 'sublabel',\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 30, mode: 'loop', defaultExample: 'release-ga' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { BenchmarkBars } from './index';\n\nconst paramsSchema = z.object({\n items: z.array(z.object({ label: z.string().max(40), value: z.number().min(0) })).min(2).max(8).default([\n { label: 'atlas-1 (ours)', value: 94.2 },\n { label: 'orion-72b', value: 88.7 },\n { label: 'sable-large', value: 86.1 },\n { label: 'nimbus-2', value: 81.4 },\n ]).describe('Rows to compare. Use NEUTRAL/invented model names unless the customer supplies real ones.'),\n heroIndex: z.number().int().min(0).max(7).default(0).describe('Index of OUR row — enters last, overshoots, glows; others dim in deference.'),\n unit: z.string().max(6).default('%').describe(\"Value suffix ('%', 'pts').\"),\n title: z.string().max(60).default('Reasoning benchmark').describe('Uppercase title above the chart.'),\n accentColor: z.string().default(palette.ACCENT).describe('Hero bar accent.'),\n maxValue: z.number().min(1).optional().describe('Scale max; defaults to max value + 8% headroom.'),\n}).passthrough().superRefine((v, ctx) => {\n if (v.heroIndex >= v.items.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['heroIndex'],\n message: `heroIndex ${v.heroIndex} is out of range for ${v.items.length} items`,\n });\n }\n});\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'benchmark-bars',\n component: BenchmarkBars,\n name: 'Benchmark Bars',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'render-chart',\n description:\n 'The benchmark slide every model launch needs: horizontal bars race out staggered, the hero row (ours) arrives LAST, overshoots, lands with a glow — and the competition dims in deference. Values count in tabular numerals. Idle: the hero glow breathes.',\n useWhen:\n 'Model comparison beats, eval headline numbers, \"state of the art\" claims. 3–6 rows. For a single number landing use stat-counter; for many pass/fail rows use eval-scorecard.',\n pairsWith: ['stat-counter', 'dither-gradient-bg', 'eval-scorecard'],\n avoidWith: ['animated-bar-chart', 'dashboard-populate'],\n tier: 'recommended',\n useCase: ['full-scene', 'explainer'],\n tags: ['ui', 'ai', 'benchmark', 'comparison', 'bars', 'eval', 'sota'],\n mood: ['tech-demo', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n items: [\n { label: 'atlas-1 (ours)', value: 94.2 },\n { label: 'orion-72b', value: 88.7 },\n { label: 'sable-large', value: 86.1 },\n { label: 'nimbus-2', value: 81.4 },\n ],\n heroIndex: 0,\n unit: '%',\n title: 'Reasoning benchmark',\n accentColor: palette.ACCENT,\n },\n\n examples: [\n { name: 'sota-claim', mood: ['tech-demo'], params: { title: 'Reasoning benchmark', unit: '%', heroIndex: 0, accentColor: palette.ACCENT, items: [ { label: 'atlas-1 (ours)', value: 94.2 }, { label: 'orion-72b', value: 88.7 }, { label: 'sable-large', value: 86.1 }, { label: 'nimbus-2', value: 81.4 } ] } },\n ],\n\n textParam: 'title',\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 80, mode: 'oneshot', defaultExample: 'sota-claim' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { ChatExchange } from './index';\n\nconst paramsSchema = z.object({\n userText: z.string().min(1).max(200).default('Can you turn yesterday’s standup into action items?').describe('The user message (right bubble).'),\n assistantText: z.string().min(1).max(320).default('Done — 6 action items, 2 owners missing. I drafted assignments based on who spoke; review them on the board.').describe('The assistant reply — streams token-by-token after a thinking beat.'),\n userLabel: z.string().max(24).default('You').describe('Role label over the user bubble.'),\n assistantLabel: z.string().max(24).default('Assistant').describe('Role label over the assistant bubble.'),\n accentColor: z.string().default(palette.ACCENT).describe('Assistant avatar + streaming cursor accent.'),\n tokensPerSecond: z.number().min(3).max(30).default(10).describe('Reply streaming cadence.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'chat-exchange',\n component: ChatExchange,\n name: 'Chat Exchange',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n 'The product IS a conversation: user bubble springs in, the assistant thinks (breathing dots), then streams its reply token-by-token in a growing bubble. Settles with a softly breathing avatar. Translucent bubbles keep footage readable behind.',\n useWhen:\n 'Copilot/agent product demos, \"ask it anything\" beats, onboarding explainers. One exchange per beat — for a bare streaming response without the chat chrome use token-stream.',\n pairsWith: ['dither-gradient-bg', 'reasoning-trace', 'tool-call-stack', 'vignette'],\n avoidWith: ['token-stream', 'chat-to-preview-layout'],\n tier: 'recommended',\n useCase: ['full-scene', 'explainer'],\n tags: ['ui', 'ai', 'chat', 'assistant', 'conversation', 'streaming'],\n mood: ['tech-demo', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n userText: 'Can you turn yesterday’s standup into action items?',\n assistantText: 'Done — 6 action items, 2 owners missing. I drafted assignments based on who spoke; review them on the board.',\n userLabel: 'You',\n assistantLabel: 'Assistant',\n accentColor: palette.ACCENT,\n tokensPerSecond: 10,\n },\n\n examples: [\n { name: 'copilot-beat', mood: ['tech-demo'], params: { userText: 'Can you turn yesterday’s standup into action items?', assistantText: 'Done — 6 action items, 2 owners missing. I drafted assignments based on who spoke; review them on the board.', accentColor: palette.ACCENT } },\n { name: 'support-agent', mood: ['corporate'], params: { userText: 'My invoice shows the old plan price.', assistantText: 'You’re right — the proration missed the upgrade. I’ve issued a corrected invoice and a $14 credit.', userLabel: 'Customer', assistantLabel: 'Support AI', accentColor: palette.SUCCESS } },\n ],\n\n textParam: 'assistantText',\n subtextParam: 'userText',\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 210,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 150, mode: 'oneshot', defaultExample: 'copilot-beat' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { ContextMeter } from './index';\n\nconst paramsSchema = z.object({\n capacity: z.string().min(1).max(8).default('1M').describe(\"Headline capacity ('1M', '200K').\"),\n capacityLabel: z.string().max(40).default('tokens of context').describe('Sub-unit after the capacity.'),\n fillTo: z.number().min(0.1).max(1).default(0.72).describe('Where the fill settles. ~0.7 reads \"vast with headroom\"; 1.0 reads full.'),\n chips: z.number().int().min(3).max(14).default(7).describe('Document chips that fly into the bar during the fill.'),\n accentColor: z.string().default(palette.ACCENT).describe('Fill accent.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'context-meter',\n component: ContextMeter,\n name: 'Context Meter',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n 'The context-window flex: document chips fly in and compress into a capacity bar as the fill rises under a huge capacity headline (\"1M tokens of context\"). At idle a chip keeps drifting in every ~2.5s — the window never stops swallowing docs.',\n useWhen:\n 'Context-length announcements, \"bring your whole codebase\" beats, memory-capacity claims. For a bare number use stat-counter; this one tells the ingestion story.',\n pairsWith: ['stat-counter', 'token-stream', 'dither-gradient-bg'],\n avoidWith: ['progress-steps'],\n tier: 'standard',\n useCase: ['explainer', 'emphasis'],\n tags: ['ui', 'ai', 'context', 'tokens', 'capacity', 'ingestion'],\n mood: ['tech-demo'],\n\n paramsSchema,\n propDefaults: {\n capacity: '1M',\n capacityLabel: 'tokens of context',\n fillTo: 0.72,\n chips: 7,\n accentColor: palette.ACCENT,\n },\n\n examples: [\n { name: 'million-tokens', mood: ['tech-demo'], params: { capacity: '1M', capacityLabel: 'tokens of context', fillTo: 0.72, chips: 7, accentColor: palette.ACCENT } },\n ],\n\n textParam: 'capacity',\n subtextParam: 'capacityLabel',\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 60, mode: 'oneshot', defaultExample: 'million-tokens' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { EvalScorecard } from './index';\n\nconst paramsSchema = z.object({\n rows: z.array(z.object({\n name: z.string().min(1).max(40),\n score: z.number().min(0).max(1),\n })).min(2).max(7).default([\n { name: 'Instruction following', score: 0.97 },\n { name: 'Tool-use accuracy', score: 0.94 },\n { name: 'Long-context recall', score: 0.92 },\n { name: 'Refusal calibration', score: 0.88 },\n ]).describe('Eval rows with 0–1 scores.'),\n threshold: z.number().min(0).max(1).default(0.9).describe('Pass threshold — at/above gets a green PASS badge, below an amber NEAR.'),\n title: z.string().max(40).default('Eval suite').describe('Uppercase card header.'),\n accentColor: z.string().default('#7fae7a').describe('Pass accent.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'eval-scorecard',\n component: EvalScorecard,\n name: 'Eval Scorecard',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n 'Eval culture, cinematized: rows cascade in, score bars fill with counting percentages, pass badges pop (green at threshold, amber NEAR below — honesty reads as confidence), and the summary line lands last. Idle: badges shimmer in sequence.',\n useWhen:\n '\"We measure everything\" beats, model-quality claims with receipts, safety/reliability stories. 3–5 rows; include one NEAR row — a perfect card reads fake. For head-to-head model comparison use benchmark-bars.',\n pairsWith: ['benchmark-bars', 'reasoning-trace', 'dither-gradient-bg'],\n avoidWith: ['benchmark-bars', 'dashboard-populate'],\n tier: 'recommended',\n useCase: ['explainer', 'full-scene'],\n tags: ['ui', 'ai', 'evals', 'scorecard', 'testing', 'quality', 'pass'],\n mood: ['tech-demo', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n rows: [\n { name: 'Instruction following', score: 0.97 },\n { name: 'Tool-use accuracy', score: 0.94 },\n { name: 'Long-context recall', score: 0.92 },\n { name: 'Refusal calibration', score: 0.88 },\n ],\n threshold: 0.9,\n title: 'Eval suite',\n accentColor: '#7fae7a',\n },\n\n examples: [\n { name: 'receipts', mood: ['tech-demo'], params: { title: 'Eval suite', threshold: 0.9, accentColor: '#7fae7a', rows: [ { name: 'Instruction following', score: 0.97 }, { name: 'Tool-use accuracy', score: 0.94 }, { name: 'Long-context recall', score: 0.92 }, { name: 'Refusal calibration', score: 0.88 } ] } },\n ],\n\n textParam: 'title',\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: '#7fae7a', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 110, mode: 'oneshot', defaultExample: 'receipts' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { MetricGauge } from './index';\n\nconst paramsSchema = z.object({\n value: z.number().min(0).default(87).describe('The measured value the gauge sweeps to.'),\n unit: z.string().max(8).default('ms').describe(\"Unit after the number ('ms', 'tok/s', 'GB').\"),\n label: z.string().max(48).default('TIME TO FIRST TOKEN').describe('Uppercase label under the readout.'),\n min: z.number().default(0).describe('Gauge scale minimum.'),\n max: z.number().default(500).describe('Gauge scale maximum. Put value in the lower third for a \"fast\" read.'),\n accentColor: z.string().default('#f2913c').describe('Arc fill + unit accent.'),\n decimals: z.number().int().min(0).max(2).default(0).describe('Decimal places on the readout.'),\n}).passthrough().superRefine((v, ctx) => {\n if (v.max <= v.min) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['max'],\n message: `max (${v.max}) must be greater than min (${v.min})`,\n });\n }\n});\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'metric-gauge',\n component: MetricGauge,\n name: 'Metric Gauge',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n 'The latency brag: a 240° instrument gauge sweeps to the value with an expo settle while the readout counts in tabular numerals. At idle the needle micro-jitters like a LIVE meter and the arc glow breathes. \"87ms time to first token.\"',\n useWhen:\n 'Latency/throughput claims, performance beats, infra product launches. One gauge per beat. For a plain number landing (no instrument framing) use stat-counter.',\n pairsWith: ['stat-counter', 'dither-gradient-bg', 'token-stream'],\n avoidWith: ['stat-counter'],\n tier: 'recommended',\n useCase: ['emphasis', 'explainer'],\n tags: ['ui', 'ai', 'gauge', 'latency', 'meter', 'performance', 'instrument'],\n mood: ['tech-demo'],\n\n paramsSchema,\n propDefaults: {\n value: 87,\n unit: 'ms',\n label: 'TIME TO FIRST TOKEN',\n min: 0,\n max: 500,\n accentColor: '#f2913c',\n decimals: 0,\n },\n\n examples: [\n { name: 'ttft', mood: ['tech-demo'], params: { value: 87, unit: 'ms', label: 'TIME TO FIRST TOKEN', min: 0, max: 500, accentColor: '#f2913c' } },\n { name: 'throughput', mood: ['tech-demo'], params: { value: 412, unit: 'tok/s', label: 'THROUGHPUT PER GPU', min: 0, max: 500, accentColor: '#7fae7a' } },\n ],\n\n textParam: 'label',\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: '#f2913c', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 60, mode: 'oneshot', defaultExample: 'ttft' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ReasoningTrace } from './index';\n\nconst paramsSchema = z.object({\n steps: z.array(z.string().min(1).max(60)).min(2).max(7).default(['Reading the thread', 'Pulling related tickets', 'Drafting a fix plan', 'Ready for review']).describe('Trace steps in order. Present-tense verbs read as live work.'),\n title: z.string().max(40).default('Working on it').describe('Uppercase card header.'),\n accentColor: z.string().default('#f2913c').describe('Spinner + final-step accent.'),\n stepFrames: z.number().int().min(12).max(60).default(26).describe('Frames each step runs before its check lands.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'reasoning-trace',\n component: ReasoningTrace,\n name: 'Reasoning Trace',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n 'The agent trace: steps cascade in with a live spinner while each \"runs\", then a spring-weighted check lands — the final step in accent. A faint shimmer scans the completed card so it idles alive. The chain-of-thought made cinematic.',\n useWhen:\n 'Agent product demos (\"watch it work\"), autonomy claims, multi-step task beats. 3–5 steps. For tool/function-call detail use tool-call-stack; for a chat reply use chat-exchange.',\n pairsWith: ['chat-exchange', 'tool-call-stack', 'dither-gradient-bg', 'vignette'],\n avoidWith: ['progress-steps'],\n tier: 'recommended',\n useCase: ['explainer', 'full-scene'],\n tags: ['ui', 'ai', 'agent', 'trace', 'steps', 'chain-of-thought', 'working'],\n mood: ['tech-demo'],\n\n paramsSchema,\n propDefaults: {\n steps: ['Reading the thread', 'Pulling related tickets', 'Drafting a fix plan', 'Ready for review'],\n title: 'Working on it',\n accentColor: '#f2913c',\n stepFrames: 26,\n },\n\n examples: [\n { name: 'agent-at-work', mood: ['tech-demo'], params: { steps: ['Reading the thread', 'Pulling related tickets', 'Drafting a fix plan', 'Ready for review'], title: 'Working on it', accentColor: '#f2913c' } },\n { name: 'research-run', mood: ['tech-demo'], params: { steps: ['Scanning 214 sources', 'Ranking by relevance', 'Cross-checking claims', 'Writing the brief'], title: 'Deep research', accentColor: '#9b8bb0', stepFrames: 22 } },\n ],\n\n textParam: 'title',\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: '#f2913c', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 90, mode: 'oneshot', defaultExample: 'agent-at-work' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ToolCallStack } from './index';\n\nconst paramsSchema = z.object({\n calls: z.array(z.object({\n name: z.string().min(1).max(32),\n args: z.string().max(80),\n result: z.string().min(1).max(48),\n })).min(1).max(5).default([\n { name: 'search_issues', args: '{ query: \"login 500\" }', result: '14 matches' },\n { name: 'read_logs', args: '{ service: \"auth\", last: \"1h\" }', result: 'stack trace found' },\n { name: 'open_pr', args: '{ fix: \"token refresh race\" }', result: 'PR #482 opened' },\n ]).describe('Function calls in execution order: name(args) types in, then the result chip pops.'),\n accentColor: z.string().default('#f2913c').describe('Function-name + active-border accent.'),\n callFrames: z.number().int().min(16).max(80).default(34).describe('Frames between call arrivals.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'tool-call-stack',\n component: ToolCallStack,\n name: 'Tool Call Stack',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n \"The agent's hands: monospace function-call cards slide into a stack — each call line types fast, then its result chip pops green. The newest card breathes an accent border. The tool-use aesthetic of modern agent demos.\",\n useWhen:\n 'Agent capability beats (\"it uses your tools\"), API/MCP integration stories, autonomy sequences. 2–4 calls. For step labels without call syntax use reasoning-trace.',\n pairsWith: ['reasoning-trace', 'chat-exchange', 'dither-gradient-bg', 'terminal-simulator'],\n avoidWith: ['code-accordion'],\n tier: 'recommended',\n useCase: ['explainer', 'full-scene'],\n tags: ['ui', 'ai', 'agent', 'tools', 'function-calling', 'mcp'],\n mood: ['tech-demo'],\n\n paramsSchema,\n propDefaults: {\n calls: [\n { name: 'search_issues', args: '{ query: \"login 500\" }', result: '14 matches' },\n { name: 'read_logs', args: '{ service: \"auth\", last: \"1h\" }', result: 'stack trace found' },\n { name: 'open_pr', args: '{ fix: \"token refresh race\" }', result: 'PR #482 opened' },\n ],\n accentColor: '#f2913c',\n callFrames: 34,\n },\n\n examples: [\n { name: 'bug-hunt', mood: ['tech-demo'], params: { accentColor: '#f2913c', calls: [ { name: 'search_issues', args: '{ query: \"login 500\" }', result: '14 matches' }, { name: 'read_logs', args: '{ service: \"auth\", last: \"1h\" }', result: 'stack trace found' }, { name: 'open_pr', args: '{ fix: \"token refresh race\" }', result: 'PR #482 opened' } ] } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: '#f2913c', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 110, mode: 'oneshot', defaultExample: 'bug-hunt' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { VoiceWaveform } from './index';\n\nconst paramsSchema = z.object({\n barCount: z.number().int().min(12).max(72).default(36).describe('Bars in the waveform.'),\n accentColor: z.string().default('#f2913c').describe('Waveform accent.'),\n mode: z.enum(['speaking', 'listening']).default('speaking').describe(\"'speaking' = phrase bursts with breaths · 'listening' = gentle uniform breathing.\"),\n label: z.string().max(48).default('Assistant is speaking').describe('Uppercase label under the waveform. Empty hides it.'),\n seed: z.number().int().min(0).max(9999).default(7).describe('Pattern seed — different phrase rhythms.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'voice-waveform',\n component: VoiceWaveform,\n name: 'Voice Waveform',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'particle-overlay',\n description:\n 'The voice-agent beat: a symmetric waveform SPEAKS in phrases — deterministic burst/pause envelopes with per-bar frequency character and center bars leading — or breathes gently in listening mode. Loops seamlessly; the idle is the design.',\n useWhen:\n 'Voice agent launches, call-automation demos, TTS/STT product beats. Pair with chat-exchange for a call-then-transcript sequence. Note: stylized, not audio-reactive — sync to real VO by cutting on its phrase cycle (~3.2s).',\n pairsWith: ['chat-exchange', 'lower-third', 'silk-flow-bg', 'vignette'],\n avoidWith: ['particles'],\n tier: 'standard',\n useCase: ['emphasis', 'full-scene'],\n tags: ['ui', 'ai', 'voice', 'waveform', 'speech', 'audio', 'agent'],\n mood: ['tech-demo', 'minimal'],\n\n paramsSchema,\n propDefaults: {\n barCount: 36,\n accentColor: '#f2913c',\n mode: 'speaking',\n label: 'Assistant is speaking',\n seed: 7,\n },\n\n examples: [\n { name: 'agent-speaking', mood: ['tech-demo'], params: { barCount: 36, accentColor: '#f2913c', mode: 'speaking', label: 'Assistant is speaking', seed: 7 } },\n { name: 'listening', mood: ['minimal'], params: { barCount: 36, accentColor: '#9b8bb0', mode: 'listening', label: 'Listening', seed: 3 } },\n ],\n\n textParam: 'label',\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: '#f2913c', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 192,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 30, mode: 'loop', defaultExample: 'agent-speaking' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { BeforeAfterSlider } from './index';\n\nconst paramsSchema = z.object({\n labelA: z.string().max(24).default('Before').describe('Chip label over the left (before) side.'),\n labelB: z.string().max(24).default('After').describe('Chip label over the right (after) side.'),\n accentColor: z.string().default(palette.ACCENT).describe('Divider + handle accent.'),\n restAt: z.number().min(0.15).max(0.85).default(0.5).describe('Where the handle settles after the sweep, 0–1 of frame width.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'before-after-slider',\n component: BeforeAfterSlider,\n name: 'Before / After Slider',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-text',\n description:\n 'The product-improvement shot: a comparison divider sweeps right to reveal the AFTER, overshoots, springs back to rest near center, and breathes at idle. Corner chips label both sides. In code use, pass two children [before, after]; via params it demos with a dim slate vs. an indigo gradient.',\n useWhen:\n 'Feature improvements, quality comparisons, redesign reveals, pricing old-vs-new. The divider hand-flick reads instantly as \"we made this better.\"',\n pairsWith: ['stat-counter', 'badge-pop', 'device-mockup-zoom'],\n avoidWith: ['split-screen', 'code-diff-wipe'],\n tier: 'standard',\n useCase: ['full-scene', 'explainer'],\n tags: ['ui', 'comparison', 'before-after', 'slider', 'reveal'],\n mood: ['tech-demo', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n labelA: 'Before',\n labelB: 'After',\n accentColor: palette.ACCENT,\n restAt: 0.5,\n },\n\n examples: [\n { name: 'improvement', mood: ['tech-demo'], params: { labelA: 'Before', labelB: 'After', accentColor: palette.ACCENT, restAt: 0.5 } },\n { name: 'v1-v2', mood: ['corporate'], params: { labelA: 'v1', labelB: 'v2', accentColor: palette.SUCCESS, restAt: 0.45 } },\n ],\n\n textParam: 'labelB',\n subtextParam: 'labelA',\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 40, mode: 'oneshot', defaultExample: 'improvement' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { BoundingBoxSelector } from './index';\n\nconst paramsSchema = z.object({\n borderColor: z.string().default(palette.ACCENT).describe('Border color of the selection rectangle.'),\n handleColor: z.string().default(palette.ACCENT).describe('Stroke color of the 8 white-fill resize handles.'),\n borderWidth: z.number().min(1).max(8).default(2).describe('Selection border width in pixels.'),\n appearAt: z.number().int().min(0).max(120).default(15).describe('Frame at which the selection rectangle springs into view.'),\n background: z.string().default(palette.TEXT_HI).describe('Stage background.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'bounding-box-selector',\n component: BoundingBoxSelector,\n name: 'Bounding Box Selector',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'highlight-region',\n description:\n 'Selection rectangle with 8 resize handles that springs into existence around a centered placeholder (or any children). Reads as a Figma/Photoshop \"I just clicked an element\" beat.',\n useWhen:\n 'Design-tool walkthroughs, \"the AI is selecting this region\" beats, before/after editor demos. Pair with simulated-cursor that arrives at the box just before `appearAt`. Avoid when you need an annotation/tooltip alongside the selection (use visual-docs-snippet, which combines both).',\n pairsWith: ['simulated-cursor', 'cursor-flow', 'tool-menu-slide-in', 'image-expand-to-fullscreen'],\n avoidWith: ['visual-docs-snippet'],\n tier: 'niche',\n useCase: ['emphasis'],\n tags: ['ui', 'selection', 'bounding-box', 'handles', 'editor', 'design-tool'],\n mood: ['tech-demo', 'minimal', 'corporate'],\n\n paramsSchema,\n propDefaults: { borderColor: palette.ACCENT, handleColor: palette.ACCENT, borderWidth: 2, appearAt: 15, background: palette.TEXT_HI, speed: 1 },\n\n examples: [\n {\n name: 'figma-blue',\n mood: ['tech-demo'],\n params: { borderColor: palette.ACCENT, handleColor: palette.ACCENT, appearAt: 15 },\n description: 'Default Figma-blue selection on a light canvas.',\n },\n {\n name: 'late-violet',\n mood: ['minimal'],\n params: { borderColor: palette.VIOLET, handleColor: palette.VIOLET, appearAt: 30, background: palette.BG },\n description: 'Violet selection on dark; appears later for narrative pacing.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'borderColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.TEXT_HI, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 60, mode: 'oneshot', defaultExample: 'figma-blue' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ToolMenuSlideIn } from './index';\n\nconst paramsSchema = z.object({\n panelStartFrame: z.number().int().min(0).max(120).default(18).describe('Frame at which the floating tool panel slides up from the bottom.'),\n iconStagger: z.number().int().min(0).max(30).default(4).describe('Frames between successive icon pop-ins after the panel arrives.'),\n iconCount: z.number().int().min(1).max(8).default(5).describe('How many icons to render (clamped 1–8). The first is shown as active.'),\n accent: z.string().default('#9b8bb0').describe('Accent color used by the active icon glow + gradient fill.'),\n panelColor: z.string().default('#14100cb8').describe('Glassmorphic panel fill (low alpha for the blur to read).'),\n background: z.string().default('#14100c').describe('Stage background — also receives a subtle dot grid.'),\n iconBg: z.string().default('#241d16').describe('Background of inactive icons.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'tool-menu-slide-in',\n component: ToolMenuSlideIn,\n name: 'Tool Menu Slide-In',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-ui',\n description:\n 'Floating glassmorphic tool palette slides up from the bottom of an editor canvas, then icon glyphs pop in one-by-one. The first icon is shown as the active tool. Built around an editor-style frame with top toolbar + centered placeholder image.',\n useWhen:\n 'Design-tool / image-editor demos, \"look at this tool palette\" reveals, software unboxing intros. Pair with bounding-box-selector or brush-stroke-simulator inside the canvas area. Avoid for general \"panel slide-in\" generic UI — this primitive is opinionated about being an editor frame.',\n pairsWith: ['bounding-box-selector', 'brush-stroke-simulator', 'simulated-cursor', 'mesh-gradient-bg'],\n avoidWith: [],\n tier: 'niche',\n useCase: ['explainer'],\n tags: ['ui', 'toolbar', 'menu', 'palette', 'editor', 'slide-in', 'glassmorphism'],\n mood: ['tech-demo', 'minimal', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n panelStartFrame: 18, iconStagger: 4, iconCount: 5,\n accent: '#9b8bb0', panelColor: '#14100cb8', background: '#14100c',\n iconBg: '#241d16', speed: 1,\n },\n\n examples: [\n {\n name: 'violet-palette',\n mood: ['tech-demo'],\n params: { panelStartFrame: 18, iconStagger: 4, iconCount: 5, accent: '#9b8bb0' },\n description: 'Default violet 5-tool palette.',\n },\n {\n name: 'dense-tools',\n mood: ['minimal'],\n params: { panelStartFrame: 12, iconStagger: 3, iconCount: 8, accent: '#5fa5a0' },\n description: 'Cyan accent, all 8 icons, fast stagger.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'accent', cssVar: '--cf-accent', fallback: '#9b8bb0', brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: '#14100c', brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 90, mode: 'oneshot', defaultExample: 'violet-palette' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { CodeAccordion } from './index';\n\nconst paramsSchema = z.object({\n lines: z.array(z.string()).min(2).optional().describe('Code lines (one per array entry). Defaults to a 19-line process-orders sample.'),\n collapseRange: z.tuple([z.number().int().nonnegative(), z.number().int().nonnegative()]).default([3, 14]).describe(\n '[start, end] inclusive line indices to collapse. The collapsed region animates down to a single ⋯-line placeholder.',\n ),\n collapseAt: z.number().int().min(0).max(300).default(30).describe('Frame at which the collapse spring fires.'),\n title: z.string().max(120).default('process-orders.ts').describe('Filename in the window chrome. Auto-fits (shrinks) to the chrome bar.'),\n fontSize: z.number().min(10).max(36).default(16).describe('Code font size in pixels.'),\n width: z.number().min(360).max(1600).default(720).describe('Card width in pixels.'),\n background: z.string().default(palette.BG).describe('Stage background.'),\n cardColor: z.string().default(palette.BG_DEEP).describe('Code window fill color.'),\n textColor: z.string().default(palette.TEXT).describe('Code text color.'),\n mutedColor: z.string().default(palette.TEXT_FAINT).describe('Line-number + placeholder color.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'code-accordion',\n component: CodeAccordion,\n name: 'Code Accordion',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'show-code',\n description:\n 'Code window with a slice of lines that collapses on cue into a single \"⋯ N lines collapsed\" placeholder, driven by one heavy spring. Built for \"the messy version → the clean version\" reveals.',\n useWhen:\n 'Refactor demos, before/after comparisons, \"we removed all this complexity\" beats, library promo where the new API replaces a long block. Avoid when you need general code display (use glass-code-block) or progressive line-by-line typing (use typewriter inside glass-code-block).',\n pairsWith: ['glass-code-block', 'terminal-simulator', 'mesh-gradient-bg', 'typewriter'],\n avoidWith: ['glass-code-block'],\n tier: 'standard',\n useCase: ['explainer', 'full-scene'],\n tags: ['ui', 'code', 'accordion', 'collapse', 'refactor', 'before-after'],\n mood: ['tech-demo', 'minimal', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n collapseRange: [3, 14], collapseAt: 30, title: 'process-orders.ts',\n fontSize: 16, width: 720, background: palette.BG, cardColor: palette.BG_DEEP,\n textColor: palette.TEXT, mutedColor: palette.TEXT_FAINT, speed: 1,\n },\n\n examples: [\n {\n name: 'process-orders',\n mood: ['tech-demo'],\n params: { collapseRange: [3, 14], collapseAt: 30, title: 'process-orders.ts' },\n description: 'Default process-orders sample.',\n },\n {\n name: 'late-collapse',\n mood: ['minimal'],\n params: { collapseRange: [2, 12], collapseAt: 60, title: 'before.ts' },\n description: 'Hold the verbose code longer before collapsing.',\n },\n ],\n\n textParam: 'title',\n subtextParam: null,\n tokens: [\n { propPath: 'cardColor', cssVar: '--cf-bg', fallback: palette.BG_DEEP, brandKitPath: 'colors.background' },\n { propPath: 'textColor', cssVar: '--cf-fg', fallback: palette.TEXT, brandKitPath: 'colors.textOnSurface' },\n { propPath: 'mutedColor', cssVar: '--cf-muted', fallback: palette.TEXT_FAINT, brandKitPath: 'colors.textMuted' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 90, mode: 'oneshot', defaultExample: 'process-orders' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { AIGenerationCanvas } from './index';\n\nconst paramsSchema = z.object({\n prompt: z.string().min(1).max(220).default('Generate a dashboard').describe('Prompt text typed into the input. Auto-fits (shrinks + wraps to 3 lines). Surfaces in the input then promotes to the header bar.'),\n accentColor: z.string().default(palette.VIOLET).describe('Accent color used by the input border, shimmer overlay, and content card frame.'),\n cardCount: z.number().int().min(1).max(8).default(4).describe('How many skeleton-then-content cards to flip in. Grid is up to 4 columns wide.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'ai-generation-canvas',\n component: AIGenerationCanvas,\n name: 'AI Generation Canvas',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'animate-ai-generation',\n description:\n 'Four-phase narrative scene: typewriter prompt in centered input → input transforms into header bar → skeleton cards fade in with shimmer → cards 3D-flip to reveal generated dashboard tiles (KPI / bar / line / rows mix).',\n useWhen:\n 'AI product hero/demo beats: \"type a prompt and watch it generate\". Pair with the same accent in toast-notification or success-confetti for a wrap. Avoid for source-→-output image/painting transitions (use ai-generate-overlay) or when you only need the prompt-typing part (use typewriter alone).',\n pairsWith: ['toast-notification', 'success-confetti', 'mesh-gradient-bg', 'pulsing-indicator'],\n avoidWith: ['ai-generate-overlay'],\n tier: 'niche',\n useCase: ['explainer'],\n tags: ['ui', 'ai', 'generation', 'dashboard', 'skeleton', 'flip', 'prompt'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { prompt: 'Generate a dashboard', accentColor: palette.VIOLET, cardCount: 4, speed: 1 },\n\n examples: [\n {\n name: 'violet-dashboard',\n mood: ['tech-demo'],\n params: { prompt: 'Generate a dashboard', accentColor: palette.VIOLET, cardCount: 4 },\n description: 'Default violet 4-card dashboard.',\n },\n {\n name: 'green-analytics',\n mood: ['corporate'],\n params: { prompt: 'Build a sales report for Q3', accentColor: palette.SUCCESS, cardCount: 3 },\n description: 'Green analytics, 3 cards.',\n },\n ],\n\n textParam: 'prompt',\n subtextParam: null,\n // `prompt` is a param (it types into the input); the generated dashboard card\n // labels are BAKED faux-data — no param changes them.\n fixedCopy: [\n 'Revenue', 'Active Users', 'Sessions', 'Conversion', 'Retention', 'Latency',\n ],\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.VIOLET, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 160, mode: 'oneshot', defaultExample: 'violet-dashboard' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { AIGenerateOverlay } from './index';\n\nconst paramsSchema = z.object({\n maxBlur: z.number().min(0).max(60).default(20).describe('Peak blur applied to the source image (px).'),\n blurStartFrame: z.number().int().min(0).max(240).default(20).describe('Frame at which the source begins to blur.'),\n blurPeakFrame: z.number().int().min(0).max(240).default(40).describe('Frame at which blur, dot grid, and pill reach full intensity.'),\n revealStartFrame: z.number().int().min(0).max(360).default(110).describe('Frame at which the generated image fades in over the blurred source.'),\n pillText: z.string().max(80).default('Generating…').describe('Text inside the centered pill. Auto-fits (shrinks) to the pill. Trailing dots animate automatically.'),\n accent: z.string().default(palette.VIOLET).describe('Accent color for the pill dot, glow, and overall AI vibe.'),\n background: z.string().default(palette.BG).describe('Stage background behind the source image.'),\n sourceImageBg: z.string().describe('Source image — any CSS background value (gradient, color, url). Defaults to a warm portrait gradient.').optional(),\n generatedImageBg: z.string().describe('Generated image that fades in. Any CSS background value. Defaults to a richer focused-painting gradient.').optional(),\n dotColor: z.string().default(palette.TEXT_HI).describe('Color of the SVG dot-grid overlay.'),\n dotSize: z.number().min(0.5).max(4).default(1.2).describe('Dot radius in pixels.'),\n dotSpacing: z.number().int().min(8).max(60).default(20).describe('Distance between dot centers in pixels.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'ai-generate-overlay',\n component: AIGenerateOverlay,\n name: 'AI Generate Overlay',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.2',\n\n intent: 'animate-ai-generation',\n description:\n 'Source-image → AI-generated-image transition with three layers: source blurs out, dot-grid overlay shimmers on top, \"Generating…\" pill pulses, then the generated image fades in. Built for image-editing or upscale-style \"what AI just did\" beats.',\n useWhen:\n 'Image-AI product demos (upscale, restyle, generative fill), before/after with a clear \"AI is working\" middle phase. Pair with bounding-box-selector to indicate the region being processed. Avoid for prompt-→-dashboard structural reveals (use ai-generation-canvas) or simple before/after without the AI middle (use a transition primitive).',\n pairsWith: ['bounding-box-selector', 'brush-stroke-simulator', 'pulsing-indicator', 'tool-menu-slide-in'],\n avoidWith: ['ai-generation-canvas'],\n tier: 'niche',\n useCase: ['title-over-footage'],\n tags: ['ui', 'ai', 'generate', 'overlay', 'blur', 'before-after', 'image'],\n mood: ['tech-demo', 'cinematic', 'editorial'],\n\n paramsSchema,\n propDefaults: {\n maxBlur: 20, blurStartFrame: 20, blurPeakFrame: 40, revealStartFrame: 110,\n pillText: 'Generating…', accent: palette.VIOLET, background: palette.BG,\n dotColor: palette.TEXT_HI, dotSize: 1.2, dotSpacing: 20, speed: 1,\n },\n\n examples: [\n {\n name: 'portrait-upscale',\n mood: ['tech-demo', 'cinematic'],\n params: { pillText: 'Generating…', accent: palette.VIOLET, maxBlur: 20 },\n description: 'Default warm-portrait upscale narrative.',\n },\n {\n name: 'fast-restyle',\n mood: ['tech-demo'],\n params: { pillText: 'Restyling', accent: palette.ACCENT, maxBlur: 28, blurPeakFrame: 30, revealStartFrame: 80 },\n description: 'Tighter timing for a snappy restyle beat.',\n },\n ],\n\n textParam: 'pillText',\n subtextParam: null,\n tokens: [\n { propPath: 'accent', cssVar: '--cf-accent', fallback: palette.VIOLET, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 60, mode: 'oneshot', defaultExample: 'portrait-upscale' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { DragAndDropFlow } from './index';\n\nconst paramsSchema = z.object({\n accent: z.string().default(palette.ACCENT).describe('Accent used by the file icon, dropzone highlight, and progress bar fill.'),\n dropzoneLabel: z.string().min(1).max(120).default('Drop file to upload').describe('Label inside the dropzone before the drop happens. Auto-fits (shrinks) to the dropzone.'),\n fileName: z.string().min(1).max(120).default('design.fig').describe('Filename rendered with the upload progress after the drop. Auto-fits (shrinks) to the file chip.'),\n background: z.string().default(palette.TEXT_HI).describe('Stage background.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'drag-and-drop-flow',\n component: DragAndDropFlow,\n name: 'Drag and Drop Flow',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'simulate-upload',\n description:\n 'Three-phase upload narrative: file icon arcs into a dashed dropzone, the dropzone border highlights as it nears, the file fades and a progress bar fills to 100%. End-to-end \"the user uploaded a thing\".',\n useWhen:\n 'File-upload product demos, asset-import beats, \"drag your design in\" SaaS reveals. Pair with toast-notification (success variant) at the end of the timeline. Avoid for non-upload file flows (use cursor-flow + glass-code-block to show the file open instead).',\n pairsWith: ['toast-notification', 'success-confetti', 'progress-steps', 'pulsing-indicator'],\n avoidWith: [],\n tier: 'niche',\n useCase: ['explainer'],\n tags: ['ui', 'upload', 'drag', 'drop', 'file', 'progress', 'dropzone'],\n mood: ['tech-demo', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { accent: palette.ACCENT, dropzoneLabel: 'Drop file to upload', fileName: 'design.fig', background: palette.TEXT_HI, speed: 1 },\n\n examples: [\n {\n name: 'figma-import',\n mood: ['tech-demo'],\n params: { dropzoneLabel: 'Drop file to upload', fileName: 'design.fig', accent: palette.ACCENT },\n description: 'Default figma-import dropzone.',\n },\n {\n name: 'video-upload-dark',\n mood: ['corporate'],\n params: { dropzoneLabel: 'Drop video to begin', fileName: 'demo.mp4', accent: palette.SUCCESS, background: palette.BG },\n description: 'Dark variant for media-upload reveal.',\n },\n ],\n\n textParam: 'dropzoneLabel',\n subtextParam: 'fileName',\n tokens: [\n { propPath: 'accent', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.TEXT_HI, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 150,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 100, mode: 'oneshot', defaultExample: 'figma-import' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { DashboardPopulate } from './index';\n\nconst paramsSchema = z.object({\n accentColor: z.string().default(palette.SUCCESS).describe('Accent color for KPI delta, bars, line, donut stroke.'),\n kpiTarget: z.number().int().min(0).max(99999999).default(128400).describe('Target value the KPI counts up to. Formatted as $-prefixed locale string.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'dashboard-populate',\n component: DashboardPopulate,\n name: 'Dashboard Populate',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'animate-dashboard',\n description:\n 'Empty 2×2 dashboard structure fades in, then four tiles populate in sequence: KPI counts up, bars stagger up, line chart draws on with dot reveals, donut sweeps to its target. Pure SVG — no chart library.',\n useWhen:\n 'Analytics product reveals, post-launch metrics beats, \"your numbers go up\" hero shots, fundraising/yc demo intros. Pair with device-mockup-zoom as a wrapper for hero shots. Avoid when the data flow is a topology (use data-flow-pipes) or when the focus is workflow status (use pipeline-journey).',\n pairsWith: ['device-mockup-zoom', 'mesh-gradient-bg', 'toast-notification', 'success-confetti'],\n avoidWith: ['data-flow-pipes', 'pipeline-journey'],\n tier: 'standard',\n useCase: ['explainer'],\n tags: ['ui', 'dashboard', 'analytics', 'kpi', 'chart', 'populate', 'count-up'],\n mood: ['corporate', 'tech-demo', 'minimal'],\n\n paramsSchema,\n propDefaults: { accentColor: palette.SUCCESS, kpiTarget: 128400, speed: 1 },\n\n examples: [\n {\n name: 'green-revenue',\n mood: ['corporate', 'tech-demo'],\n params: { accentColor: palette.SUCCESS, kpiTarget: 128400 },\n description: 'Default green-on-dark revenue dashboard.',\n },\n {\n name: 'blue-saas',\n mood: ['corporate'],\n params: { accentColor: palette.BLUE, kpiTarget: 482310 },\n description: 'Blue accent, larger ARR-style number.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.SUCCESS, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 150, mode: 'oneshot', defaultExample: 'green-revenue' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { DataFlowPipes } from './index';\n\nconst nodeSchema = z.object({\n id: z.string().min(1).describe('Unique node id, referenced by edge `from`/`to`.'),\n x: z.number().describe('X coordinate in pixels (canonical 1280-wide stage).'),\n y: z.number().describe('Y coordinate in pixels.'),\n label: z.string().max(80).optional().describe('Display label. Falls back to `id`. Auto-fits (shrinks) to the node card.'),\n}).passthrough();\n\nconst edgeSchema = z.object({\n from: z.string().describe('Source node id.'),\n to: z.string().describe('Target node id.'),\n startFrame: z.number().int().min(0).max(600).optional().describe('Frame when this edge\\'s pulse fires. Stagger across edges to feel like real data routing.'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n nodes: z.array(nodeSchema).min(2).optional().describe('Graph nodes. Defaults to a 6-node Client/API/Queue/DB/CDN/Logs topology.'),\n edges: z.array(edgeSchema).min(1).optional().describe('Directed edges with optional staggered pulse start frames.'),\n pipeColor: z.string().default(palette.SURFACE).describe('Color of the static (un-pulsing) pipe stroke.'),\n pulseColor: z.string().default(palette.ACCENT).describe('Color of the bright pulse head + trailing ghosts.'),\n pulseLength: z.number().int().min(20).max(200).default(60).describe('Pulse length in pixels along the path.'),\n pulseDuration: z.number().int().min(12).max(120).default(36).describe('Frames a pulse takes to traverse one edge.'),\n background: z.string().default(palette.BG).describe('Stage background.'),\n nodeColor: z.string().default(palette.BG).describe('Node card fill color.'),\n textColor: z.string().default(palette.TEXT_HI).describe('Node label color.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'data-flow-pipes',\n component: DataFlowPipes,\n name: 'Data Flow Pipes',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.2',\n\n intent: 'animate-pipeline',\n description:\n 'Architecture-diagram-style graph: cubic-bezier pipes between named nodes, with bright pulse heads + fading ghost trails travelling along each edge on its scheduled startFrame. Reads as \"data flowing through your stack\".',\n useWhen:\n 'Architecture diagrams, infra/integration demos, \"this is how your stack works\" beats, fundraising slides, infra product reveals. Pair with terminal-simulator below to show resulting log lines. Avoid for sequential workflows (use progress-steps) or kanban-style state movement (use pipeline-journey).',\n pairsWith: ['terminal-simulator', 'glass-code-block', 'pulsing-indicator', 'mesh-gradient-bg'],\n avoidWith: ['progress-steps', 'pipeline-journey'],\n tier: 'standard',\n useCase: ['explainer'],\n tags: ['ui', 'architecture', 'diagram', 'graph', 'pipes', 'data-flow', 'pulse'],\n mood: ['tech-demo', 'corporate', 'cinematic'],\n\n paramsSchema,\n propDefaults: {\n pipeColor: palette.SURFACE, pulseColor: palette.ACCENT, pulseLength: 60, pulseDuration: 36,\n background: palette.BG, nodeColor: palette.BG, textColor: palette.TEXT_HI, speed: 1,\n },\n\n examples: [\n {\n name: 'web-stack',\n mood: ['tech-demo', 'corporate'],\n params: { pulseColor: palette.ACCENT },\n description: 'Default Client → API/Queue → DB → CDN/Logs topology.',\n },\n {\n name: 'simple-three-tier',\n mood: ['minimal', 'tech-demo'],\n params: {\n nodes: [\n { id: 'app', x: 200, y: 360, label: 'App' },\n { id: 'api', x: 640, y: 360, label: 'API' },\n { id: 'db', x: 1080, y: 360, label: 'Database' },\n ],\n edges: [\n { from: 'app', to: 'api', startFrame: 0 },\n { from: 'api', to: 'db', startFrame: 18 },\n ],\n pulseColor: palette.VIOLET,\n },\n description: 'Three-tier app/api/db with a violet pulse.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'pulseColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'textColor', cssVar: '--cf-fg', fallback: palette.TEXT_HI, brandKitPath: 'colors.textOnSurface' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 60, mode: 'loop', defaultExample: 'web-stack' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { PipelineJourney } from './index';\n\nconst paramsSchema = z.object({\n cardLabel: z.string().min(1).max(120).default('Build pipeline').describe('Title text on the flying ticket card. Auto-fits (shrinks + wraps to 2 lines).'),\n accentColor: z.string().default('#7fae7a').describe('Accent for card border, status dot, timer, and one of the confetti colors.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'pipeline-journey',\n component: PipelineJourney,\n name: 'Pipeline Journey',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'animate-pipeline',\n description:\n 'Kanban board (Todo → In Progress → Done) where one ticket card flies between columns on an arc, lands with a spring + column flash, dwells in In Progress with a running timer, then flies to Done and explodes confetti.',\n useWhen:\n 'CI/CD demos, \"ticket moved to done\" beats, project-management product reveals, satisfying-completion intros. Pair with terminal-simulator below to show the build log. Avoid for architecture/data-flow visuals (use data-flow-pipes) or when no kanban metaphor exists (use progress-steps).',\n pairsWith: ['terminal-simulator', 'success-confetti', 'toast-notification', 'glass-code-block'],\n avoidWith: ['data-flow-pipes', 'progress-steps'],\n tier: 'niche',\n useCase: ['explainer'],\n tags: ['ui', 'kanban', 'pipeline', 'workflow', 'ticket', 'journey', 'confetti'],\n mood: ['tech-demo', 'corporate', 'playful'],\n\n paramsSchema,\n propDefaults: { cardLabel: 'Build pipeline', accentColor: '#7fae7a', speed: 1 },\n\n examples: [\n {\n name: 'build-pipeline',\n mood: ['tech-demo'],\n params: { cardLabel: 'Build pipeline', accentColor: '#7fae7a' },\n description: 'Default green-accent build ticket.',\n },\n {\n name: 'feature-shipped',\n mood: ['playful'],\n params: { cardLabel: 'Ship onboarding v2', accentColor: '#9b8bb0' },\n description: 'Violet feature ticket with confetti payoff.',\n },\n ],\n\n textParam: 'cardLabel',\n subtextParam: null,\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: '#7fae7a', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 170, mode: 'oneshot', defaultExample: 'build-pipeline' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { VisualDocsSnippet } from './index';\n\nconst pointSchema = z.object({\n x: z.number().describe('X coordinate in pixels.'),\n y: z.number().describe('Y coordinate in pixels.'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n cursorStart: pointSchema.optional().describe('Cursor entry point. Defaults to bottom-right of the browser frame.'),\n cursorTarget: pointSchema.optional().describe('Cursor click target. Defaults to the centered Generate button.'),\n clickFrame: z.number().int().min(30).max(360).default(110).describe('Frame at which the cursor clicks the target. Bounding box + tooltip schedule off this anchor.'),\n tooltipTitle: z.string().min(1).max(120).default('Generate runs').describe('Tooltip heading shown right of the bounding box. Auto-fits (shrinks) to the tooltip.'),\n tooltipBody: z.string().min(1).max(320).default('Click to start a new generation. The job will appear in the sidebar.').describe('Tooltip body copy explaining the action. Auto-fits (shrinks + wraps to 4 lines).'),\n buttonLabel: z.string().min(1).max(80).default('Generate').describe('Label on the call-to-action button. Auto-fits (shrinks) to the button.'),\n accent: z.string().default('#ffb38e').describe('Accent for the bounding box stroke, ripple, and tooltip border.'),\n background: z.string().default('#14100c').describe('Stage background behind the browser.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'visual-docs-snippet',\n component: VisualDocsSnippet,\n name: 'Visual Docs Snippet',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'annotate-ui',\n description:\n 'Documentation-style scene: browser frame fades in, cursor arcs to a CTA and clicks, a bounding box draws on around it (animated stroke-dashoffset + corner ticks), then a tooltip card stagger-fades in pointing at the box. The all-in-one \"documenting a button\" composition.',\n useWhen:\n 'Product docs hero animations, onboarding tooltip explainers, \"here\\'s what this button does\" beats, help-center entrypoints. Avoid when you need only the bounding box (use bounding-box-selector) or only the cursor flow (use cursor-flow). Avoid pairing with another full browser scene (browser-flow) — they will fight for visual hierarchy.',\n pairsWith: ['typewriter', 'toast-notification', 'pulsing-indicator', 'mesh-gradient-bg'],\n avoidWith: ['browser-flow', 'bounding-box-selector', 'cursor-flow'],\n tier: 'niche',\n useCase: ['explainer', 'title-over-footage'],\n tags: ['ui', 'docs', 'tooltip', 'annotation', 'bounding-box', 'cursor', 'tutorial'],\n mood: ['tech-demo', 'corporate', 'editorial'],\n\n paramsSchema,\n propDefaults: {\n clickFrame: 110, tooltipTitle: 'Generate runs',\n tooltipBody: 'Click to start a new generation. The job will appear in the sidebar.',\n buttonLabel: 'Generate', accent: '#ffb38e', background: '#14100c', speed: 1,\n },\n\n examples: [\n {\n name: 'generate-runs',\n mood: ['tech-demo'],\n params: {\n tooltipTitle: 'Generate runs',\n tooltipBody: 'Click to start a new generation. The job will appear in the sidebar.',\n buttonLabel: 'Generate', accent: '#ffb38e',\n },\n description: 'Default docs annotation for a Generate button.',\n },\n {\n name: 'deploy-explainer',\n mood: ['corporate'],\n params: {\n tooltipTitle: 'Deploy your project',\n tooltipBody: 'Pushes your build to production. Roll back any time from the dashboard.',\n buttonLabel: 'Deploy', accent: '#7fae7a', clickFrame: 130,\n },\n description: 'Deploy-button explainer in green.',\n },\n ],\n\n textParam: 'tooltipTitle',\n subtextParam: 'tooltipBody',\n tokens: [\n { propPath: 'accent', cssVar: '--cf-accent', fallback: '#ffb38e', brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: '#14100c', brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 160, mode: 'oneshot', defaultExample: 'generate-runs' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { BrushStrokeSimulator } from './index';\n\nconst paramsSchema = z.object({\n brushSize: z.number().min(20).max(200).default(70).describe('Brush diameter in pixels (also the SVG mask stroke width).'),\n cursorColor: z.string().default('rgba(255,255,255,0.45)').describe('Cursor/fingertip fill color (semi-transparent for soft touch feel).'),\n background: z.string().default(palette.BG).describe('Outer stage background (visible at the edges).'),\n baseColorA: z.string().default(palette.BLUE).describe('Primary tint of the revealed base layer.'),\n baseColorB: z.string().default(palette.TEAL).describe('Secondary tint of the revealed base layer.'),\n overlayColor: z.string().default(palette.SURFACE).describe('Tint of the pixelated overlay that the brush wipes through.'),\n startFrame: z.number().int().min(0).max(120).default(12).describe('Frame at which the brushing motion begins.'),\n sweepDuration: z.number().int().min(60).max(360).default(150).describe('Frames to complete the full two-face sweep.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'brush-stroke-simulator',\n component: BrushStrokeSimulator,\n name: 'Brush Stroke Simulator',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.2.1',\n\n intent: 'reveal-ui',\n description:\n 'Pixelated/censored overlay is wiped away by a soft brush cursor that traces a fixed path across two simulated faces — the warm base layer reveals through an SVG mask built from the brush trail. Doubles as a \"blur off / unmask\" beat.',\n useWhen:\n 'Privacy-tool reveals, \"your photos, deblurred\" demos, magic-eraser/inpaint product hooks, mosaic-removal narratives. Pair with ai-generate-overlay for an AI-magic angle, or tool-menu-slide-in below for editor framing. Avoid for pure cursor demos (use simulated-cursor) or when no reveal/mask is involved.',\n pairsWith: ['ai-generate-overlay', 'tool-menu-slide-in', 'bounding-box-selector', 'pulsing-indicator'],\n avoidWith: [],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['ui', 'brush', 'mask', 'reveal', 'censor', 'unblur', 'cursor'],\n mood: ['tech-demo', 'cinematic', 'editorial'],\n\n paramsSchema,\n propDefaults: {\n brushSize: 70, cursorColor: 'rgba(255,255,255,0.45)', background: palette.BG,\n baseColorA: palette.BLUE, baseColorB: palette.TEAL, overlayColor: palette.SURFACE,\n startFrame: 12, sweepDuration: 150, speed: 1,\n },\n\n examples: [\n {\n name: 'warm-portraits',\n mood: ['tech-demo', 'cinematic'],\n params: { brushSize: 70, baseColorA: palette.BLUE, baseColorB: palette.TEAL },\n description: 'Default warm-tone portrait reveal.',\n },\n {\n name: 'big-brush-fast',\n mood: ['playful'],\n params: { brushSize: 110, sweepDuration: 90, baseColorA: palette.TEAL, baseColorB: palette.VIOLET },\n description: 'Larger brush, faster sweep, cool palette.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'baseColorA', cssVar: '--cf-accent', fallback: palette.BLUE, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 110, mode: 'oneshot', defaultExample: 'warm-portraits' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ImageExpandToFullscreen } from './index';\n\nconst rectSchema = z.object({\n top: z.number().describe('Top offset in pixels.'),\n left: z.number().describe('Left offset in pixels.'),\n width: z.number().describe('Width in pixels.'),\n height: z.number().describe('Height in pixels.'),\n}).passthrough();\n\nconst paramsSchema = z.object({\n from: rectSchema.optional().describe('Source rect — the image\\'s position inside the feed-card thumbnail. Defaults to a 360×200 thumb area.'),\n to: rectSchema.optional().describe('Destination rect — the editor canvas position. Defaults to 880×480 centered with toolbar room.'),\n borderRadiusFrom: z.number().min(0).max(60).default(12).describe('Corner radius before morph.'),\n borderRadiusTo: z.number().min(0).max(60).default(16).describe('Corner radius after morph.'),\n morphAt: z.number().int().min(0).max(300).default(30).describe('Frame at which the morph spring fires.'),\n imageColorA: z.string().default('#d1685e').describe('First gradient stop for the simulated image.'),\n imageColorB: z.string().default('#9b8bb0').describe('Second gradient stop for the simulated image.'),\n imageColorC: z.string().default('#7b93b0').describe('Third gradient stop for the simulated image.'),\n feedBackground: z.string().default('#e4dccf').describe('Light feed/page background that fades out during morph.'),\n editorBackground: z.string().default('#14100c').describe('Dark editor canvas background that fades in during morph.'),\n accent: z.string().default('#f4ece0').describe('Toolbar accent (active tool tile + Editor label color).'),\n postAuthor: z.string().min(1).max(120).default('Maya Larsson').describe('Feed-card author name shown pre-morph. Auto-fits (shrinks) to the card.'),\n postBody: z.string().min(1).max(320).default('Sunset over the old harbor — color graded straight out of camera.').describe('Feed-card body copy shown pre-morph. Auto-fits (shrinks + wraps to 4 lines).'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'image-expand-to-fullscreen',\n component: ImageExpandToFullscreen,\n name: 'Image Expand to Fullscreen',\n category: 'ui-blocks',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'expand-image',\n description:\n 'Shared-element transition: a feed-card image lifts off, expands toward fullscreen, and lands inside an editor frame as light page fades to dark canvas and top/bottom toolbars slide in. One spring drives all the morph properties.',\n useWhen:\n 'Photo-editor product reveals, \"tap to edit\" beats, before/after where the after is the editor itself, image-tool launch animations. Pair with bounding-box-selector or tool-menu-slide-in to populate the editor after morph. Avoid for non-image card→modal lifts (use morphing-modal, which keeps a structural card).',\n pairsWith: ['bounding-box-selector', 'tool-menu-slide-in', 'brush-stroke-simulator', 'simulated-cursor'],\n avoidWith: ['morphing-modal'],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['ui', 'image', 'expand', 'shared-element', 'editor', 'morph', 'fullscreen'],\n mood: ['tech-demo', 'cinematic', 'editorial'],\n\n paramsSchema,\n propDefaults: {\n borderRadiusFrom: 12, borderRadiusTo: 16, morphAt: 30,\n imageColorA: '#d1685e', imageColorB: '#9b8bb0', imageColorC: '#7b93b0',\n feedBackground: '#e4dccf', editorBackground: '#14100c', accent: '#f4ece0',\n postAuthor: 'Maya Larsson',\n postBody: 'Sunset over the old harbor — color graded straight out of camera.',\n speed: 1,\n },\n\n examples: [\n {\n name: 'sunset-edit',\n mood: ['cinematic', 'editorial'],\n params: {\n postAuthor: 'Maya Larsson',\n postBody: 'Sunset over the old harbor — color graded straight out of camera.',\n morphAt: 30,\n },\n description: 'Default warm-gradient sunset post → editor.',\n },\n {\n name: 'cool-portrait',\n mood: ['tech-demo'],\n params: {\n imageColorA: '#5fa5a0', imageColorB: '#7b93b0', imageColorC: '#9b8bb0',\n postAuthor: 'Renji Tanaka', postBody: 'Studio portrait, midday light.',\n morphAt: 24,\n },\n description: 'Cool-tone portrait variant.',\n },\n ],\n\n textParam: 'postBody',\n subtextParam: 'postAuthor',\n tokens: [\n { propPath: 'editorBackground', cssVar: '--cf-bg', fallback: '#14100c', brandKitPath: 'colors.background' },\n { propPath: 'accent', cssVar: '--cf-accent', fallback: '#f4ece0', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 180,\n fps: 30,\n width: 1280,\n height: 720,\n\n preview: { thumbnailFrame: 120, mode: 'oneshot', defaultExample: 'sunset-edit' },\n};\n","// @cueframe/primitives/ui-blocks — domain-specific composed UI\n\nimport type { Catalog } from '../lib/types';\n\nexport { GlassCodeBlock } from './glass-code-block';\nexport { TerminalSimulator } from './terminal-simulator';\nexport { ToastNotification } from './toast-notification';\n\nexport { BrowserFlow } from './browser-flow';\nexport { DeviceMockupZoom } from './device-mockup-zoom';\nexport { SimulatedCursor } from './simulated-cursor';\nexport { CursorFlow } from './cursor-flow';\nexport { MorphingModal } from './morphing-modal';\nexport { ProgressSteps } from './progress-steps';\nexport { BadgePop } from './badge-pop';\nexport { BenchmarkBars } from './benchmark-bars';\nexport { ChatExchange } from './chat-exchange';\nexport { ContextMeter } from './context-meter';\nexport { EvalScorecard } from './eval-scorecard';\nexport { MetricGauge } from './metric-gauge';\nexport { ReasoningTrace } from './reasoning-trace';\nexport { ToolCallStack } from './tool-call-stack';\nexport { VoiceWaveform } from './voice-waveform';\nexport { BeforeAfterSlider } from './before-after-slider';\nexport { BoundingBoxSelector } from './bounding-box-selector';\nexport { ToolMenuSlideIn } from './tool-menu-slide-in';\nexport { CodeAccordion } from './code-accordion';\nexport { AIGenerationCanvas } from './ai-generation-canvas';\nexport { AIGenerateOverlay } from './ai-generate-overlay';\nexport { DragAndDropFlow } from './drag-and-drop-flow';\nexport { DashboardPopulate } from './dashboard-populate';\nexport { DataFlowPipes } from './data-flow-pipes';\nexport { PipelineJourney } from './pipeline-journey';\nexport { VisualDocsSnippet } from './visual-docs-snippet';\nexport { BrushStrokeSimulator } from './brush-stroke-simulator';\nexport { ImageExpandToFullscreen } from './image-expand-to-fullscreen';\n\nimport { config as glassCodeBlock } from './glass-code-block/config';\nimport { config as terminalSimulator } from './terminal-simulator/config';\nimport { config as toastNotification } from './toast-notification/config';\n\nimport { config as browserFlow } from './browser-flow/config';\nimport { config as deviceMockupZoom } from './device-mockup-zoom/config';\nimport { config as simulatedCursor } from './simulated-cursor/config';\nimport { config as cursorFlow } from './cursor-flow/config';\nimport { config as morphingModal } from './morphing-modal/config';\nimport { config as progressSteps } from './progress-steps/config';\nimport { config as badgePop } from './badge-pop/config';\nimport { config as benchmarkBars } from './benchmark-bars/config';\nimport { config as chatExchange } from './chat-exchange/config';\nimport { config as contextMeter } from './context-meter/config';\nimport { config as evalScorecard } from './eval-scorecard/config';\nimport { config as metricGauge } from './metric-gauge/config';\nimport { config as reasoningTrace } from './reasoning-trace/config';\nimport { config as toolCallStack } from './tool-call-stack/config';\nimport { config as voiceWaveform } from './voice-waveform/config';\nimport { config as beforeAfterSlider } from './before-after-slider/config';\nimport { config as boundingBoxSelector } from './bounding-box-selector/config';\nimport { config as toolMenuSlideIn } from './tool-menu-slide-in/config';\nimport { config as codeAccordion } from './code-accordion/config';\nimport { config as aiGenerationCanvas } from './ai-generation-canvas/config';\nimport { config as aiGenerateOverlay } from './ai-generate-overlay/config';\nimport { config as dragAndDropFlow } from './drag-and-drop-flow/config';\nimport { config as dashboardPopulate } from './dashboard-populate/config';\nimport { config as dataFlowPipes } from './data-flow-pipes/config';\nimport { config as pipelineJourney } from './pipeline-journey/config';\nimport { config as visualDocsSnippet } from './visual-docs-snippet/config';\nimport { config as brushStrokeSimulator } from './brush-stroke-simulator/config';\nimport { config as imageExpandToFullscreen } from './image-expand-to-fullscreen/config';\n\nexport const catalog: Catalog = [\n glassCodeBlock,\n terminalSimulator,\n toastNotification,\n browserFlow,\n deviceMockupZoom,\n simulatedCursor,\n cursorFlow,\n morphingModal,\n progressSteps,\n boundingBoxSelector,\n toolMenuSlideIn,\n codeAccordion,\n aiGenerationCanvas,\n aiGenerateOverlay,\n dragAndDropFlow,\n dashboardPopulate,\n dataFlowPipes,\n pipelineJourney,\n visualDocsSnippet,\n brushStrokeSimulator,\n imageExpandToFullscreen, badgePop, beforeAfterSlider, benchmarkBars, chatExchange, contextMeter, evalScorecard, metricGauge, reasoningTrace, toolCallStack, voiceWaveform,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,SAAS,UAAU,aAAa,uBAAuB;AA2HjD,SAwCQ,UAxCR,KAwCQ,YAxCR;AA1GN,IAAM,YACJ;AAEF,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrB,IAAM,WAAW,oBAAI,IAAI;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAOD,SAAS,aAAa,MAAuB;AAE3C,QAAM,UAAU,KAAK,UAAU;AAC/B,MAAI,QAAQ,WAAW,IAAI,GAAG;AAC5B,WAAO,CAAC,EAAE,MAAM,MAAM,MAAM,UAAU,CAAC;AAAA,EACzC;AAEA,QAAM,SAAkB,CAAC;AAEzB,QAAM,KAAK;AACX,MAAI;AACJ,UAAQ,QAAQ,GAAG,KAAK,IAAI,OAAO,MAAM;AACvC,UAAM,IAAI,MAAM,CAAC;AACjB,UAAM,QAAQ,EAAE,CAAC;AACjB,QAAI,UAAU,OAAO,UAAU,OAAO,UAAU,KAAK;AACnD,aAAO,KAAK,EAAE,MAAM,GAAG,MAAM,SAAS,CAAC;AAAA,IACzC,WAAW,QAAQ,KAAK,CAAC,GAAG;AAC1B,aAAO,KAAK,EAAE,MAAM,GAAG,MAAM,SAAS,CAAC;AAAA,IACzC,WAAW,qBAAqB,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG;AAC1D,aAAO,KAAK,EAAE,MAAM,GAAG,MAAM,UAAU,CAAC;AAAA,IAC1C,OAAO;AACL,aAAO,KAAK,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC;AAAA,IACvC;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,eAA8C;AAAA,EAClD,MAAc;AAAA,EACd,SAAiB;AAAA,EACjB,QAAgB;AAAA,EAChB,SAAiB;AAAA,EACjB,QAAgB;AAClB;AAEO,SAAS,eAAe;AAAA,EAC7B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAqB;AAAA,EACrB,aAAa,GAAW,EAAE;AAAA,EAC1B,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,QAAQ;AAAA,EACR;AACF,GAAwB;AACtB,QAAM,QAAQ,KAAK,MAAM,IAAI;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,MAClB;AAAA,MAIA;AAAA,4BAAC,gBAAa;AAAA,QAGd;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,SAAS;AAAA,cACT,cAAc;AAAA,cACd,YACE;AAAA,cACF;AAAA,cACA;AAAA,YACF;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,gBAAgB;AAAA,kBAChB,sBAAsB;AAAA,kBACtB,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,UAAU;AAAA,kBACV,YAAY;AAAA,gBACd;AAAA,gBAGA;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,QAAQ;AAAA,wBACR,SAAS;AAAA,wBACT,YAAY;AAAA,wBACZ,KAAK;AAAA,wBACL,SAAS;AAAA,wBACT,cAAc;AAAA,sBAChB;AAAA,sBAEC;AAAA,6CACC,iCACE;AAAA,8CAAC,SAAM,OAAe,SAAS;AAAA,0BAC/B,oBAAC,SAAM,OAAe,YAAY;AAAA,0BAClC,oBAAC,SAAM,OAAe,WAAW;AAAA,2BACnC;AAAA,wBAEF;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,MAAM;AAAA,8BACN,WAAW;AAAA,8BACX,OAAe;AAAA,8BACf,UAAU;AAAA,8BACV,eAAe;AAAA,4BACjB;AAAA,4BAEC;AAAA;AAAA,wBACH;AAAA;AAAA;AAAA,kBACF;AAAA,kBAGA;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,MAAM;AAAA,wBACN,SAAS;AAAA,wBACT,SAAS;AAAA,wBACT,eAAe;AAAA,wBACf,KAAK;AAAA,wBACL;AAAA,wBACA,YAAY;AAAA,sBACd;AAAA,sBAEC,gBAAM,IAAI,CAAC,MAAM,MAChB;AAAA,wBAAC;AAAA;AAAA,0BAEC,MAAM,KAAK,MAAO,IAAI,gBAAiB,KAAK;AAAA,0BAC5C,QAAO;AAAA,0BAEP,8BAAC,YAAS,MAAY,OAAO,GAAG,UAAoB;AAAA;AAAA,wBAJ/C;AAAA,sBAKP,CACD;AAAA;AAAA,kBACH;AAAA;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,MAAM,EAAE,MAAM,GAAsB;AAC3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,SAAS;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,UAAU,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACjD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,KAAK,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC5C,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,SAAS,aAAa,IAAI;AAGhC,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,oBAAC,SAAI,OAAO,EAAE,QAAQ,WAAW,KAAK,QAAQ,GAAG;AAAA,EAC1D;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA,WAAW,cAAc,EAAE;AAAA,QAC3B,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,KAAK;AAAA,MACP;AAAA,MAEA;AAAA,4BAAC,UAAK,OAAO,EAAE,OAAO,IAAI,OAAe,YAAY,YAAY,OAAO,GACrE,iBAAO,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,GACpC;AAAA,QACA,oBAAC,UACE,iBAAO,IAAI,CAAC,GAAG,MACd,oBAAC,UAAa,OAAO,EAAE,OAAO,aAAa,EAAE,IAAI,EAAE,GAChD,YAAE,QADM,CAEX,CACD,GACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,eAAe;AAGtB,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,IAAI,QAAQ;AAClB,QAAM,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI;AAC7B,QAAM,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI;AACnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,eAAe;AAAA,QACf,YAAY,6BAA6B,CAAC,KAAK,CAAC,MAAc,MAAM,mDAAmD,MAAM,CAAC,KAAK,MAAM,CAAC,MAAc,MAAM;AAAA,MAChK;AAAA;AAAA,EACF;AAEJ;;;AClSA;AAAA,EACE,YAAAA;AAAA,EACA,eAAAC;AAAA,EACA,mBAAAC;AAAA,EACA;AAAA,OACK;AAqIC,SAWE,OAAAC,MAXF,QAAAC,aAAA;AAjGR,IAAM,gBAAgC;AAAA,EACpC,EAAE,MAAM,iBAAiB,MAAM,WAAW,OAAO,EAAE;AAAA,EACnD,EAAE,MAAM,6BAA6B,MAAM,OAAO,OAAO,EAAE;AAAA,EAC3D,EAAE,MAAM,wBAAwB,MAAM,OAAO,OAAO,EAAE;AAAA,EACtD,EAAE,MAAM,gBAAgB,MAAM,OAAO,OAAO,EAAE;AAAA,EAC9C,EAAE,MAAM,gBAAgB,MAAM,OAAO,OAAO,GAAG;AAAA,EAC/C,EAAE,MAAM,iCAAiC,MAAM,WAAW,OAAO,GAAG;AAAA,EACpE,EAAE,MAAM,mCAAmC,MAAM,OAAO,OAAO,GAAG;AAAA,EAClE,EAAE,MAAM,kCAAkC,MAAM,WAAW,OAAO,GAAG;AACvE;AAEA,IAAM,cAAgD;AAAA,EACpD,SAAiB;AAAA,EACjB,KAAa;AAAA,EACb,SAAiB;AAAA,EACjB,OAAe;AACjB;AAGA,SAAS,UAAU,MAA4B;AAC7C,MAAI,KAAK,UAAU,OAAW,QAAO,KAAK;AAC1C,MAAI,KAAK,KAAK,QAAQ,EAAE,SAAS,KAAK,EAAG,QAAO;AAChD,SAAO;AACT;AAEO,SAAS,kBAAkB;AAAA,EAChC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAqB;AAAA,EACrB,cAAsB;AAAA,EACtB,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AACF,GAA2B;AACzB,QAAM,QAAQC,iBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAI,eAAe;AAE/B,QAAM,aAAa,KAAK,MAAM,WAAW,GAAG;AAC5C,QAAM,eAAe;AACrB,QAAM,cAAc;AACpB,QAAM,eAAe;AAIrB,QAAM,SAAmB,CAAC;AAC1B,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,QAAQ,MAAM,CAAC,EAAE,SAAS;AAChC,WAAO;AACP,WAAO,KAAK,GAAG;AAEf,UAAM,eAAe,KAAK;AAAA,MACxB,MAAM,CAAC,EAAE,KAAK,UAAU,YAAY;AAAA,IACtC;AACA,WAAO,eAAe,UAAU,MAAM,CAAC,CAAC;AAAA,EAC1C;AAKA,MAAI,aAAa;AACjB,WAAS,IAAI,cAAc,IAAI,MAAM,QAAQ,KAAK;AAChD,QAAI,SAAS,OAAO,CAAC,GAAG;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,YAAoB;AAAA,MACtB;AAAA,MAEA,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR;AAAA,YACA,cAAc;AAAA,YACd,UAAU;AAAA,YACV,QAAQ,aAAqB,MAAM;AAAA,YACnC,SAAS;AAAA,YACT,eAAe;AAAA,YACf,YACE;AAAA,UACJ;AAAA,UAGA;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,QAAQ;AAAA,kBACR,YAAY;AAAA,kBACZ,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,SAAS;AAAA,kBACT,KAAK;AAAA,kBACL,cAAc,aAAqB,WAAW;AAAA,gBAChD;AAAA,gBAEA;AAAA,kCAAAD,KAACG,QAAA,EAAM,OAAe,SAAS;AAAA,kBAC/B,gBAAAH,KAACG,QAAA,EAAM,OAAe,YAAY;AAAA,kBAClC,gBAAAH,KAACG,QAAA,EAAM,OAAe,WAAW;AAAA,kBACjC,gBAAAH;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,MAAM;AAAA,wBACN,WAAW;AAAA,wBACX,OAAe;AAAA,wBACf,UAAU;AAAA,sBACZ;AAAA,sBAEC;AAAA;AAAA,kBACH;AAAA;AAAA;AAAA,YACF;AAAA,YAGA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,SAAS;AAAA,kBACT,UAAU;AAAA,kBACV,UAAU;AAAA,gBACZ;AAAA,gBAEA,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,KAAK;AAAA,sBACL,WAAW,cAAc,UAAU;AAAA,oBACrC;AAAA,oBAEC,gBAAM,IAAI,CAAC,MAAM,UAChB,gBAAAA;AAAA,sBAACI;AAAA,sBAAA;AAAA,wBAEC,MAAM,KAAK,MAAM,OAAO,KAAK,IAAI,KAAK;AAAA,wBACtC,QAAO;AAAA,wBAEP,0BAAAJ;AAAA,0BAAC;AAAA;AAAA,4BACC;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA;AAAA,wBACF;AAAA;AAAA,sBAbK;AAAA,oBAcP,CACD;AAAA;AAAA,gBACH;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,SAASG,OAAM,EAAE,MAAM,GAAsB;AAC3C,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,SAAS;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,QAAM,aAAaE,iBAAgB,IAAI;AACvC,QAAM,aAAa,KAAK,KAAK;AAK7B,QAAM,iBAAiB,KAAK;AAAA,IAC1BG,aAAY,YAAY,CAAC,GAAG,aAAa,aAAa,GAAG,CAAC,GAAG,UAAU,GAAG;AAAA,MACxE,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACA,QAAM,WAAW,KAAK;AAAA,IACpB;AAAA,IACA,KAAK,KAAK,iBAAiB,SAAS,IAAI;AAAA,EAC1C;AACA,QAAM,UAAU,KAAK,KAAK,UAAU,GAAG,QAAQ;AAC/C,QAAM,aAAa,YAAY;AAE/B,QAAM,gBAAgB,KAAK,MAAO,aAAa,MAAO,CAAC,IAAI,MAAM;AAEjE,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,QACA,OAAO,YAAY,KAAK,IAAI;AAAA,QAC5B,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,YAAY;AAAA,MACd;AAAA,MAEC;AAAA,aAAK,SAAS,aACb,gBAAAD,KAAC,UAAK,OAAO,EAAE,OAAe,SAAS,aAAa,EAAE,GAAI,kBAAO;AAAA,QAEnE,gBAAAA,KAAC,UAAM,mBAAQ;AAAA,QACd,CAAC,cAAc,iBACd,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,OAAO,WAAW;AAAA,cAClB,QAAQ;AAAA,cACR,YAAY,YAAY,KAAK,IAAI;AAAA,cACjC,YAAY;AAAA,YACd;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACjSA,SAAS,eAAAM,cAAa,QAAQ,mBAAAC,kBAAiB,kBAAAC,uBAAsB;AA4C/D,SACE,OAAAC,MADF,QAAAC,aAAA;AA3BN,IAAM,iBAA+C;AAAA,EACnD,SAAiB;AAAA,EACjB,OAAe;AAAA,EACf,MAAc;AAAA,EACd,SAAiB;AACnB;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,SAAS;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AAEA,MAAI,YAAY,WAAW;AACzB,WACE,gBAAAA,MAAC,SAAK,GAAG,QACP;AAAA,sBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,MAC/B,gBAAAA,KAAC,UAAK,GAAE,0BAAyB;AAAA,OACnC;AAAA,EAEJ;AACA,MAAI,YAAY,SAAS;AACvB,WACE,gBAAAC,MAAC,SAAK,GAAG,QACP;AAAA,sBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,MAC/B,gBAAAA,KAAC,UAAK,GAAE,sBAAqB;AAAA,OAC/B;AAAA,EAEJ;AACA,MAAI,YAAY,WAAW;AACzB,WACE,gBAAAC,MAAC,SAAK,GAAG,QACP;AAAA,sBAAAD,KAAC,UAAK,GAAE,uBAAsB;AAAA,MAC9B,gBAAAA,KAAC,UAAK,GAAE,sBAAqB;AAAA,OAC/B;AAAA,EAEJ;AACA,SACE,gBAAAC,MAAC,SAAK,GAAG,QACP;AAAA,oBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,IAC/B,gBAAAA,KAAC,UAAK,GAAE,qBAAoB;AAAA,KAC9B;AAEJ;AAEO,SAAS,kBAAkB;AAAA,EAChC,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAqB;AAAA,EACrB,YAAoB;AAAA,EACpB,YAAoB;AAAA,EACpB,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAA2B;AACzB,QAAM,QAAQE,iBAAgB,IAAI;AAClC,QAAM,EAAE,KAAK,iBAAiB,IAAIC,gBAAe;AAEjD,QAAM,cAAc;AACpB,QAAM,aAAa;AACnB,QAAM,YAAY,KAAK,IAAI,aAAa,mBAAmB,UAAU;AAErE,QAAM,gBAAgB,OAAO;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,IACjD,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,iBAAiBC,aAAY,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjE,QAAM,eAAeA,aAAY,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC9D,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,gBAAgBA;AAAA,IACpB;AAAA,IACA,CAAC,WAAW,YAAY,UAAU;AAAA,IAClC,CAAC,GAAG,EAAE;AAAA,IACN,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AACA,QAAM,cAAcA;AAAA,IAClB;AAAA,IACA,CAAC,WAAW,YAAY,UAAU;AAAA,IAClC,CAAC,GAAG,CAAC;AAAA,IACL,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAEA,QAAM,aAAa,iBAAiB;AACpC,QAAM,UAAU,KAAK,IAAI,cAAc,WAAW;AAElD,QAAM,SAAS,eAAe,OAAO;AAErC,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,YACE;AAAA,MACJ;AAAA,MAEA,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,OAAO;AAAA,YACL,UAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW,cAAc,UAAU;AAAA,YACnC;AAAA,YACA,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,KAAK;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,QAAQ,aAAqB,MAAM;AAAA,UACrC;AAAA,UAEA;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,gBAAgB;AAAA,kBAChB,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,YAAY,GAAG,MAAM;AAAA,kBACrB,YAAY;AAAA,gBACd;AAAA,gBAEA,0BAAAA,KAAC,eAAY,SAAkB,OAAO,QAAQ;AAAA;AAAA,YAChD;AAAA,YACA,gBAAAC,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC7D;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,YAAY;AAAA,oBACZ,OAAO;AAAA,oBACP,eAAe;AAAA,kBACjB;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,cACA,gBAAAA,KAAC,UAAK,OAAO,EAAE,UAAU,IAAI,OAAO,YAAY,YAAY,IAAI,GAC7D,mBACH;AAAA,eACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACvLA,OAAO,WAAW;AAClB,SAAS,eAAAK,cAAa,UAAAC,SAAQ,mBAAAC,kBAAiB,kBAAAC,uBAAsB;AACrE,SAAS,uBAAuB;AAuBxB,gBAAAC,MAqNE,QAAAC,aArNF;AAbR,IAAM,cACJ;AACF,IAAM,cACJ;AAIF,IAAM,qBAAqB;AAE3B,SAAS,QAAQ,EAAE,OAAO,GAAG,GAAsB;AACjD,SACE,gBAAAD,KAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,GAAG,YAAY,SAAS,GACzD,WAAS,SAAiB,YAAoB,SAAS,EAAE,IAAI,CAAC,MAC7D,gBAAAA;AAAA,IAAC;AAAA;AAAA,MAEC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,SAAS;AAAA,MACX;AAAA;AAAA,IAPK;AAAA,EAQP,CACD,GACH;AAEJ;AAEA,SAAS,YAAY;AACnB,SACE,gBAAAA,KAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,gBAAe;AAAA;AAAA,EACjB,GACF;AAEJ;AAEA,SAAS,UAAU,GAAW;AAC5B,SAAO,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI;AACvD;AAEO,SAAS,YAAY;AAAA,EAC1B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR;AACF,GAAqB;AACnB,QAAM,QAAQE,iBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,gBAAe;AAG/B,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,eAAe,OAAO,gBAAgB;AAC5C,QAAM,cAAc,MAAM,iBAAiB;AAG3C,QAAM,iBAAiBC,aAAY,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,MAAM,GAAG;AAAA,IAClE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,QAAM,WAAW,IAAI,MAAM,GAAG,UAAU;AACxC,QAAM,YAAY,QAAQ,MAAM,KAAK,MAAM,QAAQ,EAAE,IAAI,MAAM;AAK/D,QAAM,oBAAoB;AAC1B,QAAM,cAAc,MAAM,QAAQ,MAAM;AACtC,QAAI,IAAI,KAAK,EAAE,WAAW,EAAG,QAAO;AACpC,QAAI;AACF,YAAM,EAAE,UAAU,IAAI,IAAI,gBAAgB;AAAA,QACxC,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,sBAAsB;AAAA,MACxB,CAAC;AACD,aAAO,mBAAmB;AAAA,QACxB,uBAAuB;AAAA,QACvB,aAAa,KAAK,MAAM,oBAAoB,IAAI;AAAA,QAChD,aAAa;AAAA,MACf,CAAC,EAAE;AAAA,IACL,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAGR,QAAM,iBAAiB,cAAc,KAAK,QAAQ;AAClD,QAAM,aAAa;AAOnB,MAAI,WAAW;AACf,MAAI,QAAQ,GAAI,YAAW;AAAA,WAClB,QAAQ;AACf,eAAWA,aAAY,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG;AAAA,MAC/C,kBAAkB;AAAA,IACpB,CAAC;AAAA,WACM,QAAQ,GAAI,YAAW;AAAA,WACvB,QAAQ;AACf,eAAWA,aAAY,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG;AAAA,MACjD,kBAAkB;AAAA,IACpB,CAAC;AAAA,MACE,YAAW;AAEhB,QAAM,kBACJ,QAAQ,KACJ,IACA,QAAQ,KACN,IACAA,aAAY,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACnC,kBAAkB;AAAA,EACpB,CAAC;AAGT,QAAM,YAAY;AAClB,QAAM,cAAcA,aAAY,OAAO,CAAC,WAAW,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC1E,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,cAAc;AACpB,QAAM,YAAY;AAClB,QAAM,UAAUA,aAAY,OAAO,CAAC,aAAa,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACnE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,cAAc,UAAU,OAAO;AACrC,QAAM,YAAY;AAClB,QAAM,UAAU,cAAc;AAI9B,QAAM,eAAe,cAAc;AACnC,QAAM,eAAe,aAAa,eAAe;AACjD,QAAM,aAAa,cAAc,eAAe;AAChD,QAAM,aAAa,aAAa,eAAe;AAE/C,QAAM,UAAUA,aAAY,OAAO,CAAC,YAAY,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACrE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,cAAc,UAAU,OAAO;AAErC,QAAM,YAAY,KAAK,IAAI,cAAc,KAAK,EAAE,IAAI;AACpD,QAAM,UACJ,gBAAgB,aAAa,gBAAgB,cAAc,YAAY;AACzE,QAAM,UACJ,gBAAgB,aAAa,gBAAgB,cAAc;AAG7D,QAAM,aAAa,YAAY;AAC/B,QAAM,cAAcC,QAAO;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,WAAW,IAAI;AAAA,IACjD,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,mBAAmBD,aAAY,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IAC3E,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,mBACJ,SAAS,aACLA,aAAY,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IAClD,kBAAkB;AAAA,EACpB,CAAC,IACD;AAGN,QAAM,iBAAiB,QAAQ;AAE/B,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YACE,sCAA8C,EAAE,QAAgB,OAAO;AAAA,QACzE,YAAY;AAAA,MACd;AAAA,MAGA;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,UAAU;AAAA,cACV,YAAoB;AAAA,cACpB,QAAQ;AAAA,YACV;AAAA,YAGA;AAAA,8BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,KAAK;AAAA,oBACL,aAAa;AAAA,oBACb,cAAc;AAAA,oBACd,YAAY;AAAA,oBACZ,cAAc;AAAA,kBAChB;AAAA,kBAEA;AAAA,oCAAAD,KAAC,WAAQ;AAAA,oBAET,gBAAAC;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,SAAS;AAAA,0BACT,KAAK;AAAA,0BACL,YAAY;AAAA,0BACZ,OAAO;AAAA,0BACP,UAAU;AAAA,wBACZ;AAAA,wBAEA;AAAA,0CAAAD,KAAC,UAAK,oBAAC;AAAA,0BACP,gBAAAA,KAAC,UAAK,oBAAC;AAAA;AAAA;AAAA,oBACT;AAAA,oBAEA,gBAAAC;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,MAAM;AAAA,0BACN,UAAU;AAAA,0BACV,QAAQ;AAAA,0BACR,cAAc;AAAA,0BACd,YAAY,iBACR,2BACA;AAAA,0BACJ,QAAQ,aACN,iBACI,GAAW,IAAI,OACf,wBACN;AAAA,0BACA,SAAS;AAAA,0BACT,YAAY;AAAA,0BACZ,aAAa;AAAA,0BACb,cAAc;AAAA,0BACd,YAAY;AAAA,0BACZ,UAAU;AAAA,0BACV,OAAO;AAAA,0BACP,WAAW,iBACP,aAAqB,IAAI,OACzB;AAAA,wBACN;AAAA,wBAEA;AAAA,0CAAAD,KAAC,UAAK,OAAO,EAAE,OAAO,yBAAyB,aAAa,EAAE,GAAG,oBAEjE;AAAA,0BACA,gBAAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,OAAO;AAAA,gCACL,UAAU;AAAA,gCACV,YAAY;AAAA,gCACZ,OAAO;AAAA,gCACP,UAAU;AAAA,gCACV,YAAY;AAAA,gCACZ,UAAU;AAAA,gCACV,cAAc;AAAA,8BAChB;AAAA,8BAEC;AAAA;AAAA,0BACH;AAAA,0BACC,aACC,gBAAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,OAAO;AAAA,gCACL,SAAS;AAAA,gCACT,OAAO;AAAA,gCACP,QAAQ;AAAA,gCACR,YAAY;AAAA,gCACZ,YAAY;AAAA,8BACd;AAAA;AAAA,0BACF;AAAA,0BAID,kBACC,gBAAAC;AAAA,4BAAC;AAAA;AAAA,8BACC,OAAO;AAAA,gCACL,UAAU;AAAA,gCACV,MAAM;AAAA,gCACN,OAAO;AAAA,gCACP,KAAK;AAAA,gCACL,YAAY;AAAA,gCACZ,QAAQ;AAAA,gCACR,cAAc;AAAA,gCACd,SAAS;AAAA,gCACT,YAAY;AAAA,gCACZ,UAAU;AAAA,gCACV,OAAO;AAAA,gCACP,SAAS;AAAA,gCACT,YAAY;AAAA,gCACZ,KAAK;AAAA,gCACL,QAAQ;AAAA,8BACV;AAAA,8BAEA;AAAA,gDAAAD,KAAC,UAAK,OAAO,EAAE,OAAO,wBAAwB,GAAG,oBAAC;AAAA,gCAClD,gBAAAC,MAAC,UACC;AAAA,kDAAAD,KAAC,UAAK,OAAO,EAAE,OAAe,QAAQ,GAAI,oBAAS;AAAA,kCACnD,gBAAAA,KAAC,UAAK,OAAO,EAAE,OAAO,wBAAwB,GAC3C,qBAAW,MAAM,UAAU,GAC9B;AAAA,mCACF;AAAA;AAAA;AAAA,0BACF;AAAA;AAAA;AAAA,oBAEJ;AAAA,oBACA,gBAAAA,KAAC,SAAI,OAAO,EAAE,OAAO,GAAG,GAAG;AAAA,oBAG3B,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,QAAQ;AAAA,0BACR,SAAS;AAAA,wBACX;AAAA,wBAEA,0BAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,OAAO,GAAG,QAAQ;AAAA,8BAClB,QAAQ;AAAA,8BACR,YAAY,0BAAkC,aAAa,QAAgB,MAAM;AAAA,4BACnF;AAAA;AAAA,wBACF;AAAA;AAAA,oBACF;AAAA;AAAA;AAAA,cACF;AAAA,cAGA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,KAAK;AAAA,oBACL,QAAQ;AAAA,oBACR,UAAU;AAAA,oBACV,YAAoB;AAAA,oBACpB,SAAS;AAAA,kBACX;AAAA,kBAEA,0BAAAC;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,UAAU;AAAA,wBACV,MAAM;AAAA,wBACN,OAAO;AAAA,wBACP,KAAK;AAAA,wBACL,WAAW,cAAc,CAAC,OAAO;AAAA,wBACjC,YAAY;AAAA,sBACd;AAAA,sBAGA;AAAA,wCAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,QAAQ;AAAA,8BACR,SAAS;AAAA,8BACT,YAAY;AAAA,8BACZ,gBAAgB;AAAA,8BAChB,SAAS;AAAA,8BACT,cAAc;AAAA,4BAChB;AAAA,4BAEA;AAAA,8CAAAD;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,YAAY;AAAA,oCACZ,UAAU;AAAA,oCACV,OAAe;AAAA,oCACf,eAAe;AAAA,kCACjB;AAAA,kCACD;AAAA;AAAA,8BAED;AAAA,8BACA,gBAAAC;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,SAAS;AAAA,oCACT,KAAK;AAAA,oCACL,UAAU;AAAA,oCACV,OAAO;AAAA,kCACT;AAAA,kCAEA;AAAA,oDAAAD,KAAC,UAAK,wBAAU;AAAA,oCAChB,gBAAAA,KAAC,UAAK,kBAAI;AAAA,oCACV,gBAAAA,KAAC,UAAK,oBAAM;AAAA;AAAA;AAAA,8BACd;AAAA;AAAA;AAAA,wBACF;AAAA,wBAGA,gBAAAC;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,SAAS;AAAA,8BACT,SAAS;AAAA,8BACT,eAAe;AAAA,8BACf,KAAK;AAAA,8BACL,YAAY;AAAA,8BACZ,WAAW;AAAA,4BACb;AAAA,4BAEA;AAAA,8CAAAD;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,UAAU;AAAA,oCACV,OAAO,GAAW,IAAI;AAAA,oCACtB,YAAY;AAAA,oCACZ,eAAe;AAAA,kCACjB;AAAA,kCACD;AAAA;AAAA,8BAED;AAAA,8BACA,gBAAAA;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,UAAU;AAAA,oCACV,YAAY;AAAA,oCACZ,eAAe;AAAA,oCACf,OAAe;AAAA,oCACf,YAAY;AAAA,oCACZ,UAAU;AAAA,kCACZ;AAAA,kCACD;AAAA;AAAA,8BAED;AAAA,8BACA,gBAAAA;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,UAAU;AAAA,oCACV,OAAO;AAAA,oCACP,UAAU;AAAA,oCACV,YAAY;AAAA,kCACd;AAAA,kCACD;AAAA;AAAA,8BAGD;AAAA,8BAGA,gBAAAA;AAAA,gCAAC;AAAA;AAAA,kCACC,MAAK;AAAA,kCACL,OAAO;AAAA,oCACL,WAAW;AAAA,oCACX,SAAS;AAAA,oCACT,cAAc;AAAA,oCACd,YAAoB;AAAA,oCACpB,OAAe;AAAA,oCACf,YAAY;AAAA,oCACZ,UAAU;AAAA,oCACV,YAAY;AAAA,oCACZ,QAAQ;AAAA,oCACR,WAAW,SAAS,gBAAgB;AAAA,oCACpC,YAAY;AAAA,kCACd;AAAA,kCACD;AAAA;AAAA,8BAED;AAAA;AAAA;AAAA,wBACF;AAAA,wBAGC;AAAA,0BACC,EAAE,OAAO,cAAc,OAAe,KAAK;AAAA,0BAC3C,EAAE,OAAO,eAAe,OAAe,OAAO;AAAA,0BAC9C,EAAE,OAAO,eAAe,OAAe,QAAQ;AAAA,wBACjD,EAAE,IAAI,CAAC,MACL,gBAAAC;AAAA,0BAAC;AAAA;AAAA,4BAEC,OAAO;AAAA,8BACL,QAAQ;AAAA,8BACR,SAAS;AAAA,8BACT,cAAc;AAAA,8BACd,YACE;AAAA,8BACF,QAAQ;AAAA,8BACR,SAAS;AAAA,8BACT,YAAY;AAAA,8BACZ,KAAK;AAAA,4BACP;AAAA,4BAEA;AAAA,8CAAAD;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,OAAO;AAAA,oCACP,QAAQ;AAAA,oCACR,cAAc;AAAA,oCACd,YAAY,GAAG,EAAE,KAAK;AAAA,oCACtB,QAAQ,aAAa,EAAE,KAAK;AAAA,kCAC9B;AAAA;AAAA,8BACF;AAAA,8BACA,gBAAAC;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,SAAS;AAAA,oCACT,eAAe;AAAA,oCACf,KAAK;AAAA,kCACP;AAAA,kCAEA;AAAA,oDAAAD;AAAA,sCAAC;AAAA;AAAA,wCACC,OAAO;AAAA,0CACL,UAAU;AAAA,0CACV,YAAY;AAAA,0CACZ,OAAe;AAAA,0CACf,eAAe;AAAA,wCACjB;AAAA,wCAEC,YAAE;AAAA;AAAA,oCACL;AAAA,oCACA,gBAAAA;AAAA,sCAAC;AAAA;AAAA,wCACC,OAAO;AAAA,0CACL,UAAU;AAAA,0CACV,OAAO;AAAA,wCACT;AAAA,wCACD;AAAA;AAAA,oCAED;AAAA;AAAA;AAAA,8BACF;AAAA;AAAA;AAAA,0BA/CK,EAAE;AAAA,wBAgDT,CACD;AAAA;AAAA;AAAA,kBACH;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QAGC,SAAS,aACR,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,WAAW,SAAS,gBAAgB;AAAA,cACpC,iBAAiB;AAAA,cACjB,QAAQ;AAAA,cACR,YAAY;AAAA,YACd;AAAA,YAEA,0BAAAA,KAAC,aAAU;AAAA;AAAA,QACb;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACjjBA,SAAS,QAAQ,eAAAM,cAAa,mBAAAC,kBAAiB,kBAAAC,uBAAsB;AAkBjE,gBAAAC,MA4DM,QAAAC,aA5DN;AALJ,IAAMC,eACJ;AAEF,SAAS,gBAAgB;AACvB,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,2BAAmC,MAAM,QAAgB,MAAM;AAAA,QAC3E,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,OAAe;AAAA,QACf,YAAYE;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,MACjB;AAAA,MACD;AAAA;AAAA,EAED;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,SAAS;AAAA,EACT,aAAqB;AAAA,EACrB,cAAsB;AAAA,EACtB,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAA0B;AACxB,QAAM,QAAQC,iBAAgB,IAAI;AAClC,QAAM,EAAE,iBAAiB,IAAIC,gBAAe;AAE5C,QAAM,QAAQC,aAAY,OAAO,CAAC,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC9D,kBAAkB;AAAA,IAClB,QAAQ,OAAO,OAAO,MAAM,GAAG,MAAM,CAAC;AAAA,EACxC,CAAC;AAED,QAAM,SAAS,YAAY,gBAAAL,KAAC,iBAAc;AAE1C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,UAAU;AAAA,MACZ;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,WAAW,SAAS,KAAK;AAAA,YACzB,iBAAiB;AAAA,YACjB,YAAY;AAAA,UACd;AAAA,UAEC,qBAAW,WACV,gBAAAC,MAAC,SAAI,OAAO,EAAE,UAAU,WAAW,GAEjC;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,YAAY;AAAA,kBACZ,cAAc;AAAA,kBACd,SAAS;AAAA,kBACT,QAAQ,eAAuB;AAAA,gBACjC;AAAA,gBAEA,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,YAAY;AAAA,sBACZ,cAAc;AAAA,sBACd,UAAU;AAAA,oBACZ;AAAA,oBAEC;AAAA;AAAA,gBACH;AAAA;AAAA,YACF;AAAA,YAEA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,YAAY;AAAA,kBACZ,wBAAwB;AAAA,kBACxB,yBAAyB;AAAA,kBACzB,YAAY;AAAA,kBACZ,WAAW;AAAA,gBACb;AAAA;AAAA,YACF;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,YAAoB;AAAA,kBACpB,YAAY;AAAA,kBACZ,aAAa;AAAA,kBACb,wBAAwB;AAAA,kBACxB,yBAAyB;AAAA,kBACzB,WAAW;AAAA,gBACb;AAAA;AAAA,YACF;AAAA,aACF,IAEA,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,YAAY;AAAA,gBACZ,cAAc;AAAA,gBACd,SAAS;AAAA,gBACT,QAAQ,eAAuB;AAAA,gBAC/B,UAAU;AAAA,cACZ;AAAA,cAEA;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,YAAY;AAAA,sBACZ,cAAc;AAAA,sBACd,UAAU;AAAA,oBACZ;AAAA,oBAEC;AAAA;AAAA,gBACH;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,KAAK;AAAA,sBACL,MAAM;AAAA,sBACN,WAAW;AAAA,sBACX,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,YAAoB;AAAA,sBACpB,cAAc;AAAA,oBAChB;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,UACF;AAAA;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;AC1KA,SAAS,eAAAM,cAAa,UAAAC,SAAQ,mBAAAC,kBAAiB,kBAAAC,uBAAsB;AA4HjE,SAqBM,OAAAC,MArBN,QAAAC,aAAA;AAzGJ,IAAM,iBAAgC;AAAA,EACpC,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,GAAG;AAAA,EAC3B,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK;AAAA,EACxC,EAAE,GAAG,MAAM,GAAG,KAAK,MAAM,GAAG;AAC9B;AAEO,SAAS,gBAAgB;AAAA,EAC9B,SAAS;AAAA,EACT,QAAgB;AAAA,EAChB,OAAO;AAAA,EACP,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAAyB;AACvB,QAAM,QAAQC,iBAAgB,IAAI;AAClC,QAAM,EAAE,KAAK,iBAAiB,IAAIC,gBAAe;AAEjD,QAAM,eAAe;AACrB,QAAM,WAMD,CAAC;AAEN,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,OAAO,SAAS,GAAG,KAAK;AAC1C,UAAM,OAAO,OAAO,CAAC;AACrB,UAAM,KAAK,OAAO,IAAI,CAAC;AACvB,UAAM,QAAQ;AACd,UAAM,MAAM,QAAQ;AACpB,UAAM,UAAU,OAAO,GAAG,QAAQ;AAClC,aAAS,KAAK,EAAE,OAAO,KAAK,SAAS,MAAM,GAAG,CAAC;AAC/C,aAAS;AAAA,EACX;AAGA,MAAI,IAAI,OAAO,CAAC,EAAE;AAClB,MAAI,IAAI,OAAO,CAAC,EAAE;AAClB,MAAI,mBAAkC;AACtC,MAAI,cAAkC;AAEtC,MAAI,SAAS,WAAW,GAAG;AACzB,QAAI,OAAO,CAAC,EAAE;AACd,QAAI,OAAO,CAAC,EAAE;AAAA,EAChB,WAAW,QAAQ,SAAS,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,QAAQ,IAAI;AAC5D,QAAI,OAAO,CAAC,EAAE;AACd,QAAI,OAAO,CAAC,EAAE;AAAA,EAChB,OAAO;AACL,eAAW,OAAO,UAAU;AAC1B,UAAI,SAAS,IAAI,SAAS,QAAQ,IAAI,SAAS;AAC7C,YAAI,QAAQ,IAAI,KAAK;AAEnB,cAAIC,aAAY,OAAO,CAAC,IAAI,OAAO,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG;AAAA,YACnE,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,UACpB,CAAC;AACD,cAAIA,aAAY,OAAO,CAAC,IAAI,OAAO,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG;AAAA,YACnE,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,UACpB,CAAC;AAAA,QACH,OAAO;AACL,cAAI,IAAI,GAAG;AACX,cAAI,IAAI,GAAG;AACX,cAAI,IAAI,GAAG,OAAO;AAChB,+BAAmB,QAAQ,IAAI;AAC/B,0BAAc,IAAI;AAAA,UACpB;AAAA,QACF;AACA;AAAA,MACF;AACA,UAAI,SAAS,IAAI,SAAS;AACxB,YAAI,IAAI,GAAG;AACX,YAAI,IAAI,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAGA,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,gBAAgB;AACpB,MAAI,qBAAqB,QAAQ,aAAa;AAC5C,UAAM,MAAMC,QAAO;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,MACP,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,MACjD,kBAAkB;AAAA,IACpB,CAAC;AACD,iBAAa,IAAI,MAAM;AACvB,mBAAeD,aAAY,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG;AAAA,MAC7D,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AACD,oBAAgBA,aAAY,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG;AAAA,MAC/D,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AAGA,OAAK;AAEL,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,MAGC;AAAA,wBAAgB,KACf,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,IAAI;AAAA,cACV,KAAK,IAAI;AAAA,cACT,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,eAAe;AAAA,YACjB;AAAA,YAEA,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,GAAG;AAAA,gBACH,MAAK;AAAA,gBACL,QAAQ;AAAA,gBACR,aAAa;AAAA,gBACb,SAAS;AAAA;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QAIF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW,SAAS,UAAU;AAAA,cAC9B,iBAAiB;AAAA,cACjB,QAAQ;AAAA,cACR,eAAe;AAAA,cACf,YAAY;AAAA,YACd;AAAA,YAEA,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBAEN,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,GAAE;AAAA,oBACF,MAAM;AAAA,oBACN,QAAgB;AAAA,oBAChB,aAAa;AAAA,oBACb,gBAAe;AAAA;AAAA,gBACjB;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC9LA,SAAS,eAAAM,cAAa,UAAAC,SAAQ,mBAAAC,kBAAiB,kBAAAC,uBAAsB;AA+IjE,SAiBQ,OAAAC,MAjBR,QAAAC,aAAA;AArHJ,IAAMC,eACJ;AAIF,IAAM,mBAAmB;AAEzB,IAAM,oBAAsC;AAAA,EAC1C,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACjB,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM,OAAO,WAAW;AAAA,EACjD,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,EAAE;AAAA,EAC1B,EAAE,GAAG,MAAM,GAAG,KAAK,OAAO,MAAM,OAAO,UAAU;AACnD;AAOA,SAAS,YACP,GACA,IACA,IACA,IACA,IACA;AACA,QAAM,IAAI,IAAI;AACd,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,IAAI;AACf,QAAM,MAAM,KAAK;AACjB,QAAM,MAAM,KAAK;AACjB,SAAO;AAAA,IACL,GAAG,MAAM,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,GAAG;AAAA,IACjE,GAAG,MAAM,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,GAAG;AAAA,EACnE;AACF;AAGA,SAASC,WAAU,GAAW;AAC5B,SAAO,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI;AAC7D;AAGA,SAAS,YACP,GACA,GACA,OACA;AACA,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,MAAM,KAAK,MAAM,IAAI,EAAE,KAAK;AAGlC,QAAM,OAAO,QAAQ,MAAM,IAAI,IAAI;AACnC,QAAM,KAAM,CAAC,KAAK,OAAQ,MAAM,QAAQ;AACxC,QAAM,KAAM,KAAK,OAAQ,MAAM,QAAQ;AAEvC,SAAO;AAAA,IACL,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG;AAAA,IAC7C,EAAE,GAAG,EAAE,IAAK,IAAI,KAAM,IAAI,IAAI,GAAG,EAAE,IAAK,IAAI,KAAM,IAAI,GAAG;AAAA,EAC3D;AACF;AAEO,SAAS,WAAW;AAAA,EACzB,YAAY;AAAA,EACZ,cAAsB;AAAA,EACtB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,aAAqB;AAAA,EACrB,cAAc;AAAA,EACd,QAAQ;AAAA,EACR;AACF,GAAoB;AAClB,QAAM,QAAQC,iBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,gBAAe;AAS/B,QAAM,UAA2B,CAAC;AAClC,MAAI,cAAc;AAClB,WAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC7C,UAAM,QAAQ;AACd,UAAM,MAAM,QAAQ;AACpB,UAAM,UAAU,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ;AAChD,YAAQ,KAAK,EAAE,YAAY,OAAO,UAAU,KAAK,QAAQ,CAAC;AAC1D,kBAAc;AAAA,EAChB;AAGA,MAAI,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE;AACjD,MAAI,sBAAsB;AAC1B,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,EAAE,YAAY,UAAU,QAAQ,IAAI,QAAQ,CAAC;AACnD,QAAI,SAAS,cAAc,QAAQ,UAAU;AAC3C,YAAM,IAAIF,YAAW,QAAQ,cAAc,eAAe;AAC1D,YAAM,IAAI,UAAU,CAAC;AACrB,YAAM,IAAI,UAAU,IAAI,CAAC;AACzB,YAAM,CAAC,IAAI,EAAE,IAAI,YAAY,GAAG,GAAG,CAAC;AACpC,YAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC;AACjC,4BAAsB;AACtB;AAAA,IACF,WAAW,SAAS,YAAY,QAAQ,SAAS;AAC/C,YAAM,EAAE,GAAG,UAAU,IAAI,CAAC,EAAE,GAAG,GAAG,UAAU,IAAI,CAAC,EAAE,EAAE;AACrD,4BAAsB,IAAI;AAC1B;AAAA,IACF,WAAW,SAAS,SAAS;AAC3B,YAAM,EAAE,GAAG,UAAU,IAAI,CAAC,EAAE,GAAG,GAAG,UAAU,IAAI,CAAC,EAAE,EAAE;AACrD,4BAAsB,IAAI;AAAA,IAC5B;AAAA,EACF;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,YAAYC;AAAA,MACd;AAAA,MAGC;AAAA,uBACC,UAAU,IAAI,CAAC,IAAI,MAAM;AACvB,cAAI,CAAC,GAAG,MAAO,QAAO;AAEtB,gBAAM,SAAS,QAAQ,IAAI,CAAC;AAC5B,gBAAM,eAAe,SAAS,OAAO,WAAW;AAChD,iBACE,gBAAAF;AAAA,YAAC;AAAA;AAAA,cAEC,GAAG,GAAG;AAAA,cACN,GAAG,GAAG;AAAA,cACN,OAAO,GAAG;AAAA,cACV;AAAA,cACA,cAAc;AAAA,cACd;AAAA;AAAA,YANK;AAAA,UAOP;AAAA,QAEJ,CAAC;AAAA,QAGH,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAG,IAAI;AAAA,YACP,GAAG,IAAI;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,cAAc;AAAA,YACd;AAAA,YACA,aAAa,QACV,IAAI,CAAC,GAAG,MAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAG,EACxD,OAAO,CAAC,MAAM,KAAK,CAAC;AAAA;AAAA,QACzB;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM,UAAU,mBAAmB,EAAE,IAAI;AAAA,cACzC,KAAK,UAAU,mBAAmB,EAAE,IAAI;AAAA,cACxC,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,eAAe;AAAA,YACjB;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQG;AAED,MAAI,QAAQ;AACZ,aAAW,MAAM,aAAa;AAC5B,UAAM,QAAQ,eAAe;AAC7B,QAAI,SAAS,KAAK,SAAS,GAAG;AAE5B,YAAM,QAAQM,QAAO;AAAA,QACnB,OAAO;AAAA,QACP;AAAA,QACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,MACnD,CAAC;AACD,cAAQC,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5C;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,OAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM;AAAA,QACN,KAAK;AAAA,QACL,WAAW,SAAS,KAAK;AAAA,QACzB,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAM;AAAA,UACN,QAAgB;AAAA,UAChB,aAAY;AAAA,UACZ,gBAAe;AAAA;AAAA,MACjB;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AAED,QAAM,QAAQ,eAAe;AAC7B,MAAI,aAAa;AACjB,MAAI,SAAS,KAAK,SAAS,GAAG;AAC5B,UAAM,IAAIM,QAAO;AAAA,MACf,OAAO;AAAA,MACP;AAAA,MACA,QAAQ,EAAE,SAAS,IAAI,WAAW,IAAI;AAAA,IACxC,CAAC;AACD,iBAAaC,aAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAA,EAC/C;AAEA,SACE,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM,IAAI;AAAA,QACV,KAAK,IAAI;AAAA,QACT,WAAW,SAAS,UAAU;AAAA,QAC9B,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,cAAc;AAAA,QACd,YAAoB;AAAA,QACpB,OAAe;AAAA,QACf,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,QAAQ,eAAuB;AAAA,QAC/B,eAAe;AAAA,MACjB;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,UAAU;AAAA,UACV,UAAU;AAAA,UACV,YAAYE;AAAA,UACZ,YAAY;AAAA,UAEX,mBAAS;AAAA;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;;;AC7TA,SAAS,eAAAM,cAAa,UAAAC,SAAQ,mBAAAC,kBAAiB,kBAAAC,uBAAsB;AAsH/D,SAyCM,YAAAC,WAzCN,OAAAC,MAyCM,QAAAC,aAzCN;AAvFN,IAAMC,eACJ;AAEF,IAAM,aAAa;AACnB,IAAM,aAAa;AAEnB,IAAM,eAAkC;AAAA,EACtC,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AACV;AAEA,IAAM,aAAgC;AAAA,EACpC,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO,aAAa;AAAA,EACpB,QAAQ,aAAa;AACvB;AAEO,SAAS,cAAc;AAAA,EAC5B,OAAO;AAAA,EACP,KAAK;AAAA,EACL,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAqB;AAAA,EACrB,YAAoB;AAAA,EACpB,YAAoB;AAAA,EACpB,aAAqB;AAAA,EACrB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AACF,GAAuB;AACrB,QAAM,QAAQC,iBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,gBAAe;AAI/B,QAAM,QAAQC,QAAO;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,WAAW,IAAI;AAAA,EACnD,CAAC;AAED,QAAM,OAAOC,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;AAC5D,QAAM,MAAMA,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AACzD,QAAM,QAAQA,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC;AAC/D,QAAM,SAASA,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC;AAClE,QAAM,SAASA,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,cAAc,CAAC;AAG5E,QAAM,gBAAgBA,aAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAGzD,QAAM,gBAAgBA,aAAY,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC1D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,eAAeA,aAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACzD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,UAAUA,aAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AAAA,IACrD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,YAAYC;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,MAGA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY,iBAAiB,aAAa;AAAA,cAC1C,eAAe;AAAA,YACjB;AAAA;AAAA,QACF;AAAA,QAIA,gBAAAA,KAAC,kBAAe;AAAA,QAGhB,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,cAAc;AAAA,cACd,QAAQ,aAAqB,MAAM;AAAA,cACnC,UAAU;AAAA,YACZ;AAAA,YAGA;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,SAAS;AAAA,oBACT,eAAe;AAAA,oBACf,gBAAgB;AAAA,oBAChB,KAAK;AAAA,oBACL,SAAS;AAAA,kBACX;AAAA,kBAEC,oBACC,gBAAAC,MAAAF,WAAA,EACE;AAAA,oCAAAC;AAAA,sBAAC;AAAA;AAAA,wBACC,aAAa;AAAA,wBACb,UAAU;AAAA,wBACV,UAAU;AAAA,wBACV,YAAYE;AAAA,wBACZ,YAAY;AAAA,wBACZ,eAAc;AAAA,wBACd,OAAO,EAAE,OAAO,UAAU;AAAA,wBAEzB;AAAA;AAAA,oBACH;AAAA,oBACA,gBAAAF;AAAA,sBAAC;AAAA;AAAA,wBACC,aAAa;AAAA,wBACb,UAAU;AAAA,wBACV,UAAU;AAAA,wBACV,YAAYE;AAAA,wBACZ,OAAO,EAAE,OAAO,WAAW;AAAA,wBAE1B;AAAA;AAAA,oBACH;AAAA,qBACF;AAAA;AAAA,cAEJ;AAAA,cAGA,gBAAAF;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,SAAS;AAAA,oBACT,eAAe;AAAA,oBACf,KAAK;AAAA,oBACL,SAAS;AAAA,oBACT,WAAW,cAAc,OAAO;AAAA,kBAClC;AAAA,kBAEC,mBACC,gBAAAC,MAAAF,WAAA,EACE;AAAA,oCAAAC;AAAA,sBAAC;AAAA;AAAA,wBACC,aAAa;AAAA,wBACb,UAAU;AAAA,wBACV,UAAU;AAAA,wBACV,YAAYE;AAAA,wBACZ,YAAY;AAAA,wBACZ,eAAc;AAAA,wBACd,OAAO,EAAE,OAAO,WAAW,YAAY,KAAK;AAAA,wBAE3C;AAAA;AAAA,oBACH;AAAA,oBACA,gBAAAF;AAAA,sBAAC;AAAA;AAAA,wBACC,aAAa;AAAA,wBACb,UAAU;AAAA,wBACV,UAAU;AAAA,wBACV,YAAYE;AAAA,wBACZ,OAAO,EAAE,YAAY,MAAM,OAAO,WAAW;AAAA,wBAE5C;AAAA;AAAA,oBACH;AAAA,oBACA,gBAAAF;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,WAAW;AAAA,0BACX,SAAS;AAAA,0BACT,WAAW;AAAA,0BACX,YAAY;AAAA,0BACZ,OAAO;AAAA,0BACP,SAAS;AAAA,0BACT,cAAc;AAAA,0BACd,UAAU;AAAA,0BACV,YAAY;AAAA,wBACd;AAAA,wBACD;AAAA;AAAA,oBAED;AAAA,qBACF;AAAA;AAAA,cAEJ;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,iBAAiB;AAExB,QAAM,QAAQ;AAAA,IACZ,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;AAAA,IAC/B,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;AAAA,IAChC,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;AAAA,IAChC,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI;AAAA,IAChC,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI;AAAA,EACnC;AACA,SACE,gBAAAA,KAAAD,WAAA,EACG,gBAAM,IAAI,CAAC,GAAG,MACb,gBAAAC;AAAA,IAAC;AAAA;AAAA,MAEC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM,EAAE;AAAA,QACR,KAAK,EAAE;AAAA,QACP,OAAO,EAAE;AAAA,QACT,QAAQ,EAAE;AAAA,QACV,YAAoB;AAAA,QACpB,cAAc;AAAA,QACd,QAAQ,aAAqB,WAAW;AAAA,MAC1C;AAAA;AAAA,IAVK;AAAA,EAWP,CACD,GACH;AAEJ;;;AC/QA;AAAA,EACE,eAAAO;AAAA,EACA;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AA4DC,SAqBM,OAAAC,MArBN,QAAAC,aAAA;AA5CD,SAAS,cAAc;AAAA,EAC5B,QAAQ,CAAC,EAAE,OAAO,UAAU,GAAG,EAAE,OAAO,UAAU,GAAG,EAAE,OAAO,SAAS,CAAC;AAAA,EACxE,cAAc;AAAA,EACd,cAAsB;AAAA,EACtB,gBAAwB;AAAA,EACxB,aAAqB;AAAA,EACrB,YAAoB;AAAA,EACpB,eAAe;AAAA,EACf,QAAQ;AAAA,EACR;AACF,GAAuB;AACrB,QAAM,QAAQC,iBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,gBAAe;AAE/B,QAAM,eAAe,gBAAgB;AACrC,QAAM,cAAc,eAAe,MAAM;AACzC,QAAM,gBAAgB,cAAc,KAAK,IAAI,MAAM,SAAS,GAAG,CAAC;AAChE,QAAM,aAAa;AAEnB,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,YACE;AAAA,MACJ;AAAA,MAEA,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,UAAU;AAAA,YACV,SAAS;AAAA,YACT,eAAe,eAAe,QAAQ;AAAA,YACtC,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,KAAK;AAAA,UACP;AAAA,UAGA;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,MAAM,eAAe,aAAa;AAAA,kBAClC,KAAK,eAAe,QAAQ;AAAA,kBAC5B,WAAW,eAAe,qBAAqB;AAAA,kBAC/C,UAAU;AAAA,kBACV,eAAe;AAAA,gBACjB;AAAA,gBACA,OAAO,eAAe,cAAc;AAAA,gBACpC,QAAQ,eAAe,IAAI;AAAA,gBAE1B;AAAA,wBAAM,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM;AAChC,0BAAM,aAAa,IAAI,KAAK;AAC5B,0BAAM,eAAeG;AAAA,sBACnB;AAAA,sBACA,CAAC,WAAW,YAAY,YAAY;AAAA,sBACpC,CAAC,eAAe,CAAC;AAAA,sBACjB,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,oBACxD;AACA,2BACE,gBAAAJ;AAAA,sBAAC;AAAA;AAAA,wBAEC,IAAI,eAAe,IAAI,gBAAgB;AAAA,wBACvC,IAAI,eAAe,IAAI,IAAI;AAAA,wBAC3B,IAAI,gBAAgB,IAAI,KAAK,gBAAgB;AAAA,wBAC7C,IAAI,eAAe,KAAK,IAAI,KAAK;AAAA,wBACjC,QAAQ;AAAA,wBACR,aAAa;AAAA,wBACb,eAAc;AAAA,wBACd,iBAAiB;AAAA,wBACjB,kBAAkB;AAAA;AAAA,sBATb;AAAA,oBAUP;AAAA,kBAEJ,CAAC;AAAA,kBAEA,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,MAC1B,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBAEC,IAAI,eAAe,IAAI,gBAAgB;AAAA,sBACvC,IAAI,eAAe,IAAI,IAAI;AAAA,sBAC3B,IAAI,gBAAgB,IAAI,KAAK,gBAAgB;AAAA,sBAC7C,IAAI,eAAe,KAAK,IAAI,KAAK;AAAA,sBACjC,QAAQ;AAAA,sBACR,aAAa;AAAA,sBACb,eAAc;AAAA,sBACd,OAAO,EAAE,SAAS,IAAI;AAAA;AAAA,oBARjB,MAAM,CAAC;AAAA,kBASd,CACD;AAAA;AAAA;AAAA,YACH;AAAA,YAEC,MAAM,IAAI,CAAC,MAAM,MAAM;AACtB,oBAAM,aAAa,IAAI;AACvB,oBAAM,aAAa,QAAQ;AAC3B,oBAAM,WAAWK,QAAO;AAAA,gBACtB,OAAO;AAAA,gBACP;AAAA,gBACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,cACnD,CAAC;AACD,oBAAM,QAAQD,aAAY,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpD,oBAAM,OAAO;AAAA,gBACX;AAAA,gBACA,CAAC,YAAY,aAAa,CAAC;AAAA,gBAC3B,CAAC,eAAe,WAAW;AAAA,cAC7B;AACA,oBAAM,YAAYA;AAAA,gBAChB;AAAA,gBACA,CAAC,aAAa,GAAG,aAAa,EAAE;AAAA,gBAChC,CAAC,GAAG,CAAC;AAAA,gBACL,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,cACxD;AAEA,qBACE,gBAAAH;AAAA,gBAAC;AAAA;AAAA,kBAEC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,SAAS;AAAA,oBACT,eAAe,eAAe,WAAW;AAAA,oBACzC,YAAY;AAAA,oBACZ,KAAK;AAAA,oBACL,OAAO,eAAe,gBAAgB;AAAA,oBACtC,QAAQ,eAAe,SAAS;AAAA,oBAChC,aACE,gBAAgB,MAAM,MAAM,SAAS,IAAI,IAAI,CAAC;AAAA,oBAChD,cACE,CAAC,gBAAgB,MAAM,MAAM,SAAS,IAAI,IAAI,CAAC;AAAA,oBACjD,QAAQ;AAAA,kBACV;AAAA,kBAEA;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,OAAO,aAAa;AAAA,0BACpB,QAAQ,aAAa;AAAA,0BACrB,cAAc;AAAA,0BACd,YAAY;AAAA,0BACZ,QAAQ,aAAa,WAAW;AAAA,0BAChC,SAAS;AAAA,0BACT,YAAY;AAAA,0BACZ,gBAAgB;AAAA,0BAChB,WAAW,SAAS,KAAK;AAAA,0BACzB,iBAAiB;AAAA,0BACjB,WAAW,aAAa,WAAW;AAAA,wBACrC;AAAA,wBAEA,0BAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAM;AAAA,4BACN,QAAO;AAAA,4BACP,SAAQ;AAAA,4BACR,MAAK;AAAA,4BACL,OAAO,EAAE,SAAS,UAAU;AAAA,4BAE5B,0BAAAA;AAAA,8BAAC;AAAA;AAAA,gCACC,GAAE;AAAA,gCACF,QAAgB;AAAA,gCAChB,aAAY;AAAA,gCACZ,eAAc;AAAA,gCACd,gBAAe;AAAA;AAAA,4BACjB;AAAA;AAAA,wBACF;AAAA;AAAA,oBACF;AAAA,oBACA,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,aAAa;AAAA,wBACb,UAAU,eAAe,gBAAgB;AAAA,wBACzC,UAAU;AAAA,wBACV,YAAW;AAAA,wBACX,YAAY;AAAA,wBACZ,eAAc;AAAA,wBACd,OAAO;AAAA,0BACL,OAAO;AAAA,0BACP,WAAW;AAAA,0BACX,UAAU,eAAe,aAAa;AAAA,0BACtC,KAAK,eAAe,aAAa,IAAI,KAAK;AAAA,wBAC5C;AAAA,wBAEC,eAAK;AAAA;AAAA,oBACR;AAAA;AAAA;AAAA,gBA9DK;AAAA,cA+DP;AAAA,YAEJ,CAAC;AAAA;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;ACzNA,SAAS,cAAc,eAAAM,eAAa,UAAAC,SAAQ,mBAAAC,mBAAiB,kBAAAC,uBAAsB;AA2EzE,gBAAAC,OAWF,QAAAC,cAXE;AAnDH,IAAM,WAAoC,CAAC;AAAA,EAChD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,cAAsB;AAAA,EACtB,YAAoB;AAAA,EACpB,WAAW;AAAA,EACX,WAAW;AACb,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,gBAAe;AAC/B,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,MAAMC,QAAO,EAAE,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AACrF,QAAM,QAAQC,cAAY,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAM,UAAUA,cAAY,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAGjF,QAAM,SAASA,cAAY,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG;AAAA,IACtD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,eAAe;AACrB,QAAM,UAAU,MAAM;AACtB,QAAM,aAAa,UAAU,QAAQ,eAAe;AACpD,QAAM,QAAQA,cAAY,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACrD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,WAAW,WAAW,cAAc;AAE1C,QAAM,QAAQD,QAAO;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,EACnD,CAAC;AAED,QAAM,QACJ,aAAa,WACT,EAAE,gBAAgB,UAAU,YAAY,SAAS,IACjD;AAAA,IACE,gBAAgB,SAAS,SAAS,KAAK,IAAI,eAAe;AAAA,IAC1D,YAAY,SAAS,SAAS,MAAM,IAAI,eAAe;AAAA,IACvD,SAAS;AAAA,EACX;AAEN,SACE,gBAAAH,OAAC,gBAAa,OAAO,EAAE,GAAG,OAAO,SAAS,QAAQ,eAAe,SAAS,GACxE;AAAA,oBAAAA,OAAC,SAAI,OAAO,EAAE,UAAU,YAAY,SAAS,WAAW,SAAS,KAAK,IAAI,GACvE;AAAA,kBACC,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,UAAU;AAAA,YACV,OAAO;AAAA,YACP,cAAc;AAAA,YACd,QAAQ,aAAa,WAAW;AAAA,YAChC,UAAU,IAAI,SAAS;AAAA,YACvB,WAAW,SAAS,IAAI,QAAQ,IAAI;AAAA,UACtC;AAAA;AAAA,MACF;AAAA,MAEF,gBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,SAAS,GAAG,WAAW,IAAI,MAAM,WAAW,IAAI;AAAA,YAChD,cAAc;AAAA,UAChB;AAAA,UAEC;AAAA;AAAA,YACD,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,KAAK;AAAA,kBACL,QAAQ;AAAA,kBACR,MAAM,GAAG,MAAM;AAAA,kBACf,OAAO;AAAA,kBACP,YACE;AAAA,gBACJ;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IACC,YACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL;AAAA,UACA,UAAU,WAAW;AAAA,UACrB,YAAY;AAAA,UACZ,OAAe;AAAA,UACf,YAAY;AAAA,UACZ,WAAW,WAAW;AAAA,UACtB,SAASK,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAAA,UAC7C,WAAW,cAAcA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,QAC9D;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;;;ACpIA,SAAS,gBAAAC,eAAc,UAAAC,SAAQ,eAAAC,eAAa,UAAAC,SAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AA4EnF,gBAAAC,OA+CU,QAAAC,cA/CV;AA9CD,IAAM,gBAA8C,CAAC;AAAA,EAC1D,QAAQ;AAAA,IACN,EAAE,OAAO,kBAAkB,OAAO,KAAK;AAAA,IACvC,EAAE,OAAO,aAAa,OAAO,KAAK;AAAA,IAClC,EAAE,OAAO,eAAe,OAAO,KAAK;AAAA,IACpC,EAAE,OAAO,YAAY,OAAO,KAAK;AAAA,EACnC;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAsB;AAAA,EACtB;AACF,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,MAAM,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;AAGjE,QAAM,QAAQ,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAO,MAAM,YAAY,IAAI,MAAM,YAAY,KAAK,IAAI,CAAE;AACxG,QAAM,UAAU,CAAC,MAAc,IAAI,MAAM,QAAQ,CAAC,IAAI,KAAK,MAAM,YAAY,KAAK;AAElF,QAAM,YAAY,QAAQ,SAAS;AACnC,QAAM,aAAa,QAAQ,YAAY;AACvC,QAAM,YAAYC,cAAY,OAAO,CAAC,YAAY,IAAI,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG;AAAA,IAChF,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,UAAUC,QAAO,EAAE,OAAO,QAAQ,GAAG,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAEpG,SACE,gBAAAL,MAACM,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAL;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,MACxB;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL;AAAA,cACA,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,eAAe;AAAA,cACf,OAAe;AAAA,cACf,SAASI,cAAY,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAAA,cAC/C,WAAW,cAAcA,cAAY,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,cAC9D,cAAc;AAAA,cACd,YAAY;AAAA,YACd;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAJ,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,GAAG,GAC7D,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,gBAAM,SAAS,MAAM;AACrB,gBAAM,QAAQ,QAAQ,CAAC;AACvB,gBAAM,IAAII,cAAY,OAAO,CAAC,OAAO,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,YACxD,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,YAClB,QAAQG,QAAO,IAAIA,QAAO,GAAG;AAAA,UAC/B,CAAC;AACD,gBAAM,YAAY,SACdF,QAAO,EAAE,OAAO,QAAQ,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,IAAI,MAAM,EAAE,EAAE,CAAC,IACrF;AACJ,gBAAM,IAAK,KAAK,QAAQ,MAAO,OAAO,SAAS,YAAY;AAC3D,gBAAM,SAAS,KAAK,QAAQ,GAAG,QAAQ,KAAK,QAAQ,MAAM,IAAI,IAAI,CAAC;AACnE,gBAAM,OAAO,UAAU,aAAa,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,CAAC,IAAI,OAAO;AACpF,gBAAM,aAAa,SAAS,IAAI;AAEhC,iBACE,gBAAAJ,OAAC,SAAY,OAAO,EAAE,SAAS,IAAI,IAAI,aAAa,EAAE,GACpD;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,SAAS;AAAA,kBACT,gBAAgB;AAAA,kBAChB;AAAA,kBACA,UAAU;AAAA,kBACV,cAAc;AAAA,kBACd,OAAe;AAAA,kBACf,YAAY;AAAA,gBACd;AAAA,gBAEA;AAAA,kCAAAD,MAAC,UAAK,OAAO,EAAE,YAAY,SAAS,MAAM,IAAI,GAAI,eAAK,OAAM;AAAA,kBAC7D,gBAAAC;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,YAAY;AAAA,wBACZ,oBAAoB;AAAA,wBACpB,OAAO,SAAS,cAAsB;AAAA,sBACxC;AAAA,sBAEC;AAAA;AAAA,wBACA;AAAA;AAAA;AAAA,kBACH;AAAA;AAAA;AAAA,YACF;AAAA,YACA,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,QAAQ,SAAS,KAAK;AAAA,kBACtB,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,UAAU;AAAA,gBACZ;AAAA,gBAEA,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,QAAQ;AAAA,sBACR,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,sBACxB,cAAc;AAAA,sBACd,YAAY,SACR,0BAA0B,WAAW,OAAO,WAAW,MACvD;AAAA,sBACJ,WAAW,SAAS,OAAO,KAAK,OAAO,EAAE,MAAM,WAAW,GAAG,aAAa,OAAO,IAAI,KAAK;AAAA,oBAC5F;AAAA;AAAA,gBACF;AAAA;AAAA,YACF;AAAA,eA3CQ,CA4CV;AAAA,QAEJ,CAAC,GACH;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;ACjKA,SAAS,gBAAAQ,eAAc,eAAAC,eAAa,UAAAC,SAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AA6F3E,SAuEQ,YAAAC,WA/DN,OAAAC,OARF,QAAAC,cAAA;AA5ER,SAAS,OAAO,GAAW,MAAsB;AAC/C,MAAI,IAAI,KAAK,KAAK,IAAI,GAAG,SAAS,IAAI,KAAK,KAAK,MAAM,SAAS;AAC/D,MAAI,KAAK,KAAK,IAAK,MAAM,IAAK,UAAU;AACxC,WAAS,IAAK,MAAM,QAAS,KAAK;AACpC;AAQO,IAAM,eAA4C,CAAC;AAAA,EACxD,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB,kBAAkB;AACpB,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,UAAU;AAChB,QAAM,WAAW,UAAU;AAC3B,QAAM,WAAW,WAAW;AAE5B,QAAM,SAASC,QAAO,EAAE,OAAO,QAAQ,SAAS,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAGzG,QAAM,QAAQ,cAAc,MAAM,GAAG,EAAE,OAAO,OAAO;AACrD,QAAM,OAAO,MAAM;AACnB,QAAM,WAAqB,CAAC;AAC5B,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,WAAO,QAAQ,MAAM,OAAO,GAAG,EAAE,IAAI;AACrC,aAAS,KAAK,GAAG;AAAA,EACnB;AACA,QAAM,eAAe,SAAS;AAC9B,QAAM,YAAY,SAAS,SAAS,QAAQ,SAAS,SAAS,SAAS,CAAC,IAAI,IAAI;AAEhF,QAAM,eAAe,SAAS,YAAY,CAAC;AAC3C,QAAM,cAAcA,QAAO,EAAE,OAAO,QAAQ,UAAU,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAG/G,QAAM,cAAc,YAAY,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,OAAO;AAE7E,QAAM,aAAkC;AAAA,IACtC;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB;AAEA,QAAM,YAAiC;AAAA,IACrC;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,eAAe;AAAA,IACf,SAAS;AAAA,IACT,OAAe;AAAA,IACf,cAAc;AAAA,EAChB;AAEA,SACE,gBAAAJ,MAACK,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAJ,OAAC,SAAI,OAAO,EAAE,OAAO,OAAO,SAAS,QAAQ,eAAe,UAAU,KAAK,GAAG,GAE5E;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,WAAW;AAAA,UACX,WAAW;AAAA,UACX,SAASK,cAAY,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,UAC5E,WAAW,cAAcA,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,QAC/D;AAAA,QAEA;AAAA,0BAAAN,MAAC,SAAI,OAAO,WAAY,qBAAU;AAAA,UAClC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,GAAG;AAAA,gBACH,YAAY,GAAW,OAAO;AAAA,gBAC9B,OAAe;AAAA,gBACf,yBAAyB;AAAA,gBACzB,WAAW;AAAA,cACb;AAAA,cAEC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACF;AAAA,IAGA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,WAAW;AAAA,UACX,SAAS;AAAA,UACT,KAAK;AAAA,UACL,SAASK,cAAY,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,UACjF,WAAW,cAAcA,cAAY,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,UAClE,UAAU;AAAA,QACZ;AAAA,QAEA;AAAA,0BAAAN;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,WAAW;AAAA,gBACX,YAAY,sCAAsC,WAAW,KAAa,WAAW;AAAA,gBACrF,WAAW,SAAS,WAAW;AAAA,cACjC;AAAA;AAAA,UACF;AAAA,UACA,gBAAAC,OAAC,SACC;AAAA,4BAAAD,MAAC,SAAI,OAAO,WAAY,0BAAe;AAAA,YACvC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,GAAG;AAAA,kBACH,YAAY;AAAA,kBACZ,QAAQ;AAAA,kBACR,OAAe;AAAA,kBACf,wBAAwB;AAAA,gBAC1B;AAAA,gBAEC,yBACC,gBAAAA,MAAC,UAAK,OAAO,EAAE,SAAS,eAAe,KAAK,GAAG,SAAS,UAAU,GAC/D,WAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACd,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBAEC,OAAO;AAAA,sBACL,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,cAAc;AAAA,sBACd,YAAoB;AAAA,sBACpB,SAAS,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,GAAG,IAAI,MAAM;AAAA,oBACpE;AAAA;AAAA,kBAPK;AAAA,gBAQP,CACD,GACH,IAEA,gBAAAA,MAAAD,WAAA,EAKG,gBAAM,IAAI,CAAC,GAAG,MAAM;AACnB,wBAAM,IAAIO,cAAY,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,oBACnE,iBAAiB;AAAA,oBACjB,kBAAkB;AAAA,kBACpB,CAAC;AACD,wBAAM,eAAe,SAAS,OAAO,CAAC,MAAM,SAAS,CAAC,EAAE;AACxD,wBAAM,eAAe,MAAM,KAAK,IAAI,GAAG,eAAe,CAAC;AACvD,yBACE,gBAAAL;AAAA,oBAAC;AAAA;AAAA,sBAEC,OAAO,EAAE,UAAU,YAAY,SAAS,gBAAgB,aAAa,SAAS;AAAA,sBAE9E;AAAA,wCAAAD,MAAC,UAAK,OAAO,EAAE,SAAS,EAAE,GAAI,aAAE;AAAA,wBAC/B,gBAAgB,CAAC,aAChB,gBAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,UAAU;AAAA,8BACV,MAAM,iBAAiB,IAAI,IAAI;AAAA,8BAC/B,YAAY,iBAAiB,IAAI,IAAI;AAAA,8BACrC,QAAQ;AAAA,8BACR,OAAO;AAAA,8BACP,QAAQ;AAAA,8BACR,YAAY;AAAA,8BACZ,cAAc;AAAA,8BACd,SAAS,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI;AAAA,4BACpD;AAAA;AAAA,wBACF;AAAA;AAAA;AAAA,oBAjBG;AAAA,kBAmBP;AAAA,gBAEJ,CAAC,GACH;AAAA;AAAA,YAEJ;AAAA,aACF;AAAA;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;;;AChNA,SAAS,gBAAAO,eAAc,UAAAC,SAAQ,eAAAC,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAsFjF,gBAAAC,OA6BF,QAAAC,cA7BE;AApEV,SAASC,QAAO,GAAW,MAAsB;AAC/C,MAAI,IAAI,KAAK,KAAK,IAAI,GAAG,SAAS,IAAI,KAAK,KAAK,MAAM,SAAS;AAC/D,MAAI,KAAK,KAAK,IAAK,MAAM,IAAK,UAAU;AACxC,WAAS,IAAK,MAAM,QAAS,KAAK;AACpC;AAQO,IAAM,eAA4C,CAAC;AAAA,EACxD,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAsB;AACxB,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,aAAa;AACnB,QAAM,cAAc;AACpB,QAAM,OAAOC,cAAY,OAAO,CAAC,YAAY,aAAa,WAAW,GAAG,CAAC,GAAG,MAAM,GAAG;AAAA,IACnF,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,QAAQC,QAAO,IAAIA,QAAO,KAAK;AAAA,EACjC,CAAC;AAED,QAAM,SAASC,SAAO,EAAE,OAAO,QAAQ,GAAG,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAGnG,QAAM,cAAc;AACpB,QAAM,UAA6B,CAAC;AACpC,QAAM,aAAa,QAAQ,KAAK,IAAI,GAAG,KAAK,OAAO,SAAS,aAAa,gBAAgB,WAAW,IAAI,CAAC;AACzG,WAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,UAAM,SAAS,KAAK;AACpB,UAAM,QAAQ,SACV,aAAa,eAAe,IAAI,SAAS,cAAc,KACvD,aAAc,IAAI,QAAS,cAAc,MAAML,QAAO,GAAG,CAAC,IAAI;AAClE,UAAM,OAAO,QAAQ;AACrB,QAAI,OAAO,KAAK,OAAO,GAAI;AAC3B,UAAM,IAAIG,cAAY,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,MAC3C,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,QAAQC,QAAO,OAAO,KAAK,GAAG,KAAK,CAAC;AAAA,IACtC,CAAC;AACD,UAAM,OAAOJ,QAAO,GAAG,CAAC;AACxB,YAAQ;AAAA,MACN,gBAAAF;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO;AAAA,YACL,UAAU;AAAA,YACV,OAAO,GAAG,IAAI,EAAE;AAAA,YAChB,KAAK,GAAG,MAAM,OAAO,KAAK,KAAK,MAAM,OAAO,GAAG;AAAA,YAC/C,OAAO,MAAM,IAAI,IAAI;AAAA,YACrB,QAAQ,MAAM,IAAI,IAAI;AAAA,YACtB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,SAAS,IAAI,OAAO,OAAO,IAAI,KAAK;AAAA,YACpC,SAAS;AAAA,YACT,WAAW;AAAA,UACb;AAAA,UAEC,WAAC,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,GAAG,OACvB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO;AAAA,gBACL,QAAQ;AAAA,gBACR,OAAO,GAAG,IAAI,GAAG;AAAA,gBACjB,YAAY;AAAA,gBACZ,cAAc;AAAA,gBACd,cAAc;AAAA,cAChB;AAAA;AAAA,YAPK;AAAA,UAQP,CACD;AAAA;AAAA,QA1BI;AAAA,MA2BP;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAA,MAACQ,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAP;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,MACxB;AAAA,MAEA;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL;AAAA,cACA,WAAW;AAAA,cACX,cAAc;AAAA,cACd,SAASI,cAAY,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,cAC5E,WAAW,cAAcA,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,YAC/D;AAAA,YAEA;AAAA,8BAAAL;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,YAAY;AAAA,oBACZ,eAAe;AAAA,oBACf,OAAe;AAAA,oBACf,YAAY;AAAA,kBACd;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,YAAY;AAAA,oBACZ,OAAe;AAAA,oBACf,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,YAAY;AAAA,kBACd;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA;AAAA;AAAA,QACF;AAAA,QAEA,gBAAAC,OAAC,SAAI,OAAO,EAAE,UAAU,WAAW,GAChC;AAAA;AAAA,UACD,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,QAAQ;AAAA,gBACR,UAAU;AAAA,cACZ;AAAA,cAEA,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,QAAQ;AAAA,oBACR,OAAO,GAAG,OAAO,GAAG;AAAA,oBACpB,cAAc;AAAA,oBACd,YAAY,0BAA0B,WAAW,OAAO,WAAW;AAAA,kBACrE;AAAA;AAAA,cACF;AAAA;AAAA,UACF;AAAA,UACA,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL;AAAA,gBACA,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,eAAe;AAAA,gBACf,OAAe;AAAA,gBACf,SAAS;AAAA,gBACT,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,YAAY;AAAA,cACd;AAAA,cAEA;AAAA,gCAAAA,OAAC,UAAM;AAAA,uBAAK,MAAM,OAAO,GAAG;AAAA,kBAAE;AAAA,mBAAM;AAAA,gBACpC,gBAAAD,MAAC,UAAK,iCAAmB;AAAA;AAAA;AAAA,UAC3B;AAAA,WACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AC9LA,SAAS,gBAAAS,eAAc,UAAAC,SAAQ,eAAAC,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAiEnF,gBAAAC,OAmDY,QAAAC,cAnDZ;AAtCD,IAAM,gBAA8C,CAAC;AAAA,EAC1D,OAAO;AAAA,IACL,EAAE,MAAM,yBAAyB,OAAO,KAAK;AAAA,IAC7C,EAAE,MAAM,qBAAqB,OAAO,KAAK;AAAA,IACzC,EAAE,MAAM,uBAAuB,OAAO,KAAK;AAAA,IAC3C,EAAE,MAAM,uBAAuB,OAAO,KAAK;AAAA,EAC7C;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,cAAsB;AACxB,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,YAAY,QAAQ,KAAK,SAAS,aAAa;AACrD,QAAM,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE;AAEzD,QAAM,SAASC,SAAO,EAAE,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AACxF,QAAM,YAAYA,SAAO,EAAE,OAAO,QAAQ,WAAW,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAE9G,SACE,gBAAAJ,MAACK,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,YAAY,GAAW,EAAE;AAAA,QACzB,QAAQ,aAAqB,WAAW;AAAA,QACxC,cAAc;AAAA,QACd,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,SAASK,cAAY,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,QAC5E,WAAW,cAAcA,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,MAC/D;AAAA,MAEA;AAAA,wBAAAN;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL;AAAA,cACA,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,eAAe;AAAA,cACf,OAAe;AAAA,cACf,SAAS;AAAA,cACT,cAAc;AAAA,YAChB;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAA,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,GAAG,GAC7D,eAAK,IAAI,CAAC,KAAK,MAAM;AAGpB,gBAAM,QAAQ,QAAQ,IAAI;AAC1B,gBAAM,QAAQI,SAAO,EAAE,OAAO,QAAQ,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AACtG,gBAAM,QAAQE,cAAY,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,YAChE,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,YAClB,QAAQC,QAAO,IAAIA,QAAO,KAAK;AAAA,UACjC,CAAC;AACD,gBAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,MAAM,KAAK;AAC9C,gBAAM,OAAO,IAAI,SAAS;AAC1B,gBAAM,UAAU,QAAQ;AACxB,gBAAM,UAAUH,SAAO,EAAE,OAAO,QAAQ,SAAS,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAC1G,gBAAM,aAAa,OAAO,cAAsB;AAEhD,iBACE,gBAAAH;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO;AAAA,gBACL,SAASK,cAAY,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,gBAC3E,WAAW,cAAcA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,cAC/D;AAAA,cAEA;AAAA,gCAAAL;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,SAAS;AAAA,sBACT,gBAAgB;AAAA,sBAChB,YAAY;AAAA,sBACZ,cAAc;AAAA,oBAChB;AAAA,oBAEA;AAAA,sCAAAD,MAAC,UAAK,OAAO,EAAE,YAAY,UAAU,IAAI,YAAY,KAAK,OAAe,KAAK,GAC3E,cAAI,MACP;AAAA,sBACA,gBAAAC,OAAC,UAAK,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,GAC5D;AAAA,wCAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL;AAAA,8BACA,UAAU;AAAA,8BACV,YAAY;AAAA,8BACZ,oBAAoB;AAAA,8BACpB,OAAe;AAAA,4BACjB;AAAA,4BAEC;AAAA;AAAA,8BAAI;AAAA;AAAA;AAAA,wBACP;AAAA,wBACA,gBAAAD;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL;AAAA,8BACA,UAAU;AAAA,8BACV,YAAY;AAAA,8BACZ,eAAe;AAAA,8BACf,OAAe;AAAA,8BACf,YAAY;AAAA,8BACZ,SAAS;AAAA,8BACT,cAAc;AAAA,8BACd,SAASM,cAAY,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,8BAC7E,WAAW,SAASA,cAAY,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,4BAC5D;AAAA,4BAEC,iBAAO,SAAS;AAAA;AAAA,wBACnB;AAAA,yBACF;AAAA;AAAA;AAAA,gBACF;AAAA,gBACA,gBAAAN;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,QAAQ;AAAA,sBACR,cAAc;AAAA,sBACd,YAAoB;AAAA,sBACpB,UAAU;AAAA,oBACZ;AAAA,oBAEA,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,QAAQ;AAAA,0BACR,OAAO,GAAG,IAAI,QAAQ,MAAM,KAAK;AAAA,0BACjC,cAAc;AAAA,0BACd,YAAY,OACR,0BAA0B,WAAW,OAAO,WAAW,MACvD,0BAAkC,OAAO,OAAe,OAAO;AAAA,wBACrE;AAAA;AAAA,oBACF;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,YAjEK;AAAA,UAkEP;AAAA,QAEJ,CAAC,GACH;AAAA,QACA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL;AAAA,cACA,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,WAAW;AAAA,cACX,YAAY;AAAA,cACZ,WAAW,aAAqB,WAAW;AAAA,cAC3C,SAASK,cAAY,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,cAC/E,WAAW,cAAcA,cAAY,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,cAChE,oBAAoB;AAAA,YACtB;AAAA,YAEC;AAAA;AAAA,cAAQ;AAAA,cAAE,KAAK;AAAA,cAAO;AAAA,cAAa,KAAK,MAAM,YAAY,GAAG;AAAA,cAAE;AAAA;AAAA;AAAA,QAClE;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AC3LA,SAAS,gBAAAE,eAAc,UAAAC,SAAQ,eAAAC,eAAa,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAuF3E,SAEE,OAAAC,OAFF,QAAAC,cAAA;AAlER,SAASC,QAAO,GAAW,MAAsB;AAC/C,MAAI,IAAI,KAAK,KAAK,IAAI,GAAG,SAAS,IAAI,KAAK,KAAK,MAAM,SAAS;AAC/D,MAAI,KAAK,KAAK,IAAK,MAAM,IAAK,UAAU;AACxC,WAAS,IAAK,MAAM,QAAS,KAAK;AACpC;AAQO,IAAM,cAA0C,CAAC;AAAA,EACtD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,cAAsB;AAAA,EACtB,WAAW;AACb,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,eAAe;AACrB,QAAM,IAAIC,cAAY,OAAO,CAAC,GAAG,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC1D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,QAAQC,QAAO,IAAIA,QAAO,GAAG;AAAA,EAC/B,CAAC;AACD,QAAM,UAAU,QAAQ,IAAI;AAG5B,QAAM,SAAS,WACVJ,QAAO,KAAK,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,QAC3C,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,OAClC;AAEJ,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,QAAQ,MAAM,IAAI,CAAC;AACjE,QAAM,YAAY,OAAO,IAAI;AAC7B,QAAM,cAAc,QAAQ,GAAG,eAAe,SAAS;AAAA,IACrD,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,CAAC;AAGD,QAAM,IAAI;AACV,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,QAAM,SAAS,CAAC,MAAc,YAAY,IAAI;AAC9C,QAAM,MAAM,CAAC,UAAkB,WAA2B;AACxD,UAAM,KAAM,OAAO,QAAQ,IAAI,KAAK,KAAM;AAC1C,UAAM,KAAM,OAAO,MAAM,IAAI,KAAK,KAAM;AACxC,UAAM,SAAS,SAAS,YAAY,UAAU,MAAM,IAAI;AACxD,WAAO,KAAK,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC;AAAA,EACvI;AAEA,QAAM,YAAY,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,SAAS,CAAC,CAAC;AAE5D,SACE,gBAAAF,MAACO,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAN,OAAC,SAAI,OAAO,EAAE,UAAU,YAAY,OAAO,KAAK,QAAQ,IAAI,GAC1D;AAAA,oBAAAA,OAAC,SAAI,OAAO,KAAK,QAAQ,KAAK,SAAQ,eAEpC;AAAA,sBAAAD,MAAC,UAAK,GAAG,IAAI,GAAG,CAAC,GAAG,MAAK,QAAO,QAAgB,aAAa,aAAa,IAAI,eAAc,SAAQ;AAAA,MAEpG,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,GAAG,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,MAAO,SAAS,CAAC,CAAC;AAAA,UACjD,MAAK;AAAA,UACL,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,eAAc;AAAA;AAAA,MAChB;AAAA,MAEC,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM;AACnC,cAAM,KAAM,YAAa,IAAI,IAAK,WAAW,KAAK,KAAM;AACxD,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YAEC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AAAA,YAC9B,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AAAA,YAC9B,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AAAA,YAC9B,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AAAA,YAC9B,QAAgB;AAAA,YAChB,aAAa;AAAA,YACb,eAAc;AAAA;AAAA,UAPT;AAAA,QAQP;AAAA,MAEJ,CAAC;AAAA,MAED,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI,MAAM,IAAI,MAAM,KAAK,IAAK,YAAY,KAAK,KAAM,GAAG;AAAA,UACxD,IAAI,MAAM,IAAI,MAAM,KAAK,IAAK,YAAY,KAAK,KAAM,GAAG;AAAA,UACxD,QAAgB;AAAA,UAChB,aAAa;AAAA,UACb,eAAc;AAAA;AAAA,MAChB;AAAA,MACA,gBAAAA,MAAC,YAAO,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,MAAc,MAAM;AAAA,OACrD;AAAA,IACA,gBAAAC,OAAC,SAAI,OAAO,EAAE,UAAU,YAAY,MAAM,GAAG,OAAO,GAAG,KAAK,KAAK,WAAW,SAAS,GACnF;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,OAAe;AAAA,YACf,oBAAoB;AAAA,YACpB,eAAe;AAAA,YACf,YAAY;AAAA,YACZ,YAAY;AAAA,UACd;AAAA,UAEC;AAAA;AAAA,YACD,gBAAAD,MAAC,UAAK,OAAO,EAAE,UAAU,IAAI,OAAO,aAAa,YAAY,KAAK,YAAY,EAAE,GAAI,gBAAK;AAAA;AAAA;AAAA,MAC3F;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,eAAe;AAAA,YACf,OAAe;AAAA,YACf,SAASK,cAAY,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ,CAAC;AAAA,YACvG,WAAW;AAAA,YACX,YAAY;AAAA,UACd;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,OACF;AAAA,KACF,GACF;AAEJ;;;ACjKA,SAAS,gBAAAG,eAAc,eAAAC,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAwDzE,gBAAAC,OAiDM,QAAAC,cAjDN;AAnCH,IAAM,iBAAgD,CAAC;AAAA,EAC5D,QAAQ,CAAC,sBAAsB,2BAA2B,uBAAuB,kBAAkB;AAAA,EACnG,QAAQ;AAAA,EACR,cAAsB;AAAA,EACtB,aAAa;AACf,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,aAAa,gBAAgB,SAAS;AAE5C,QAAM,QAAQ;AACd,QAAM,UAAU,QAAQ,QAAQ,MAAM,SAAS,aAAa;AAC5D,QAAM,WAAa,IAAI,OAAQ,IAAK;AAEpC,QAAM,SAASC,SAAO,EAAE,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAExF,SACE,gBAAAJ,MAACK,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,GAAW,EAAE;AAAA,QACzB,QAAQ,aAAqB,WAAW;AAAA,QACxC,cAAc;AAAA,QACd,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,UAAU;AAAA,QACV,SAASK,cAAY,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,QAC5E,WAAW,cAAcA,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,MAC/D;AAAA,MAEC;AAAA,mBACC,gBAAAN;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,OAAO;AAAA,cACP,KAAK,GAAG,QAAQ;AAAA,cAChB,QAAQ;AAAA,cACR,YAAY,wCAAgD,OAAO;AAAA,cACnE,eAAe;AAAA,YACjB;AAAA;AAAA,QACF;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL;AAAA,cACA,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,eAAe;AAAA,cACf,OAAe;AAAA,cACf,SAAS;AAAA,cACT,cAAc;AAAA,YAChB;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAA,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,GAAG,GAC7D,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,gBAAM,QAAQ,QAAQ,IAAI;AAC1B,gBAAM,SAAS,QAAQ;AACvB,gBAAM,SAAS,MAAM,MAAM,SAAS;AACpC,gBAAM,UAAU,SAAS,SAAS,QAAQ;AAC1C,gBAAM,OAAO,SAAS;AACtB,gBAAM,QAAQI,SAAO,EAAE,OAAO,QAAQ,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AACtG,gBAAM,UAAUA,SAAO,EAAE,OAAO,QAAQ,QAAQ,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAIzG,iBACE,gBAAAH;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,SAASK,cAAY,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,gBAC3E,WAAW,cAAcA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,cAC/D;AAAA,cAEA;AAAA,gCAAAL,OAAC,SAAI,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,UAAU,YAAY,YAAY,EAAE,GACtE;AAAA,6BACC,gBAAAD;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,UAAU;AAAA,wBACV,OAAO;AAAA,wBACP,cAAc;AAAA,wBACd,QAAQ,aAAqB,WAAW;AAAA,wBACxC,gBAAgB;AAAA,wBAChB,WAAW,WAAW,QAAQ,SAAS,EAAE;AAAA,sBAC3C;AAAA;AAAA,kBACF;AAAA,kBAED,QACC,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,UAAU;AAAA,wBACV,OAAO;AAAA,wBACP,cAAc;AAAA,wBACd,YAAY,SAAS,cAAsB;AAAA,wBAC3C,SAAS;AAAA,wBACT,YAAY;AAAA,wBACZ,gBAAgB;AAAA,wBAChB,OAAO,SAAiB,KAAa;AAAA,wBACrC,UAAU;AAAA,wBACV,YAAY;AAAA,wBACZ,WAAW,SAASM,cAAY,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,sBAC5D;AAAA,sBACD;AAAA;AAAA,kBAED;AAAA,mBAEJ;AAAA,gBACA,gBAAAN;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL;AAAA,sBACA,UAAU;AAAA,sBACV,YAAY,QAAQ,SAAS,MAAM;AAAA,sBACnC,OAAO,QAAQ,SAAS,cAAsB;AAAA,sBAC9C,SAAS,QAAQ,CAAC,SAAS,OAAO;AAAA,oBACpC;AAAA,oBAEC;AAAA;AAAA,gBACH;AAAA;AAAA;AAAA,YApDK;AAAA,UAqDP;AAAA,QAEJ,CAAC,GACH;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AC5JA,SAAS,gBAAAO,eAAc,eAAAC,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AA2EnE,gBAAAC,OASA,QAAAC,cATA;AAnDT,IAAM,gBAA8C,CAAC;AAAA,EAC1D,QAAQ;AAAA,IACN,EAAE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ,aAAa;AAAA,IAC9E,EAAE,MAAM,aAAa,MAAM,mCAAmC,QAAQ,oBAAoB;AAAA,IAC1F,EAAE,MAAM,WAAW,MAAM,iCAAiC,QAAQ,iBAAiB;AAAA,EACrF;AAAA,EACA,cAAsB;AAAA,EACtB,aAAa;AACf,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,cAAc,gBAAgB,SAAS;AAC7C,QAAM,WAAW,gBAAgB,MAAM;AAEvC,QAAM,QAAQ;AAEd,SACE,gBAAAH,MAACI,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAJ,MAAC,SAAI,OAAO,EAAE,OAAO,KAAK,SAAS,QAAQ,eAAe,UAAU,KAAK,GAAG,GACzE,gBAAM,IAAI,CAAC,MAAM,MAAM;AAGtB,UAAM,QAAQ,QAAQ,IAAI;AAC1B,UAAM,SAASK,SAAO,EAAE,OAAO,QAAQ,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAGvG,UAAM,WAAW,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI;AAC1C,UAAM,QAAQ,KAAK,IAAI,SAAS,QAAQ,KAAK,OAAO,QAAQ,SAAS,CAAC,CAAC;AACvE,UAAM,WAAW,QAAQ,KAAK,KAAK,SAAS,SAAS,CAAC,IAAI;AAC1D,UAAM,WAAWA,SAAO,EAAE,OAAO,QAAQ,UAAU,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAC5G,UAAM,aAAa,SAAS;AAE5B,UAAM,WAAW,MAAM,MAAM,SAAS,KAAK,QAAQ,QAAQ;AAC3D,UAAM,cAAc,WAAW,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,MAAM;AAE9E,WACE,gBAAAJ;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO;AAAA,UACL,YAAY,GAAW,EAAE;AAAA,UACzB,QAAQ,8BAA8B,WAAW;AAAA,UACjD,cAAc;AAAA,UACd,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,sBAAsB;AAAA,UACtB,SAASK,cAAY,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,UAC5E,WAAW,cAAcA,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAaA,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,QAClH;AAAA,QAEA;AAAA,0BAAAL,OAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,IAAI,cAAc,GAAG,GAC7E;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,YAAY,aAAqB,UAAU;AAAA,kBAC3C,YAAY;AAAA,gBACd;AAAA;AAAA,YACF;AAAA,YACA,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,OAAe;AAAA,kBACf,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,cAAc;AAAA,gBAChB;AAAA,gBAEA;AAAA,kCAAAD,MAAC,UAAK,OAAO,EAAE,OAAO,aAAa,YAAY,IAAI,GAChD,mBAAS,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,GACxC;AAAA,kBACA,gBAAAA,MAAC,UAAK,OAAO,EAAE,SAAS,KAAK,GAC1B,kBAAQ,KAAK,KAAK,SAAS,IAAI,SAAS,MAAM,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC,KAAK,IAClF;AAAA;AAAA;AAAA,YACF;AAAA,aACF;AAAA,UAGA,gBAAAA,MAAC,SAAI,OAAO,EAAE,QAAQ,GAAG,GACvB,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,OAAe;AAAA,gBACf,YAAY,GAAW,OAAO;AAAA,gBAC9B,QAAQ,aAAqB,OAAO;AAAA,gBACpC,SAAS;AAAA,gBACT,cAAc;AAAA,gBACd,WAAW,SAASK,cAAY,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,gBAC3D,iBAAiB;AAAA,gBACjB,SAASA,cAAY,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC;AAAA,cAChF;AAAA,cACD;AAAA;AAAA,gBACI,KAAK;AAAA;AAAA;AAAA,UACV,GACF;AAAA;AAAA;AAAA,MA/DK;AAAA,IAgEP;AAAA,EAEJ,CAAC,GACH,GACF;AAEJ;;;ACpIA,SAAS,gBAAAC,eAAc,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AA+DxD,SAoBQ,OAAAC,OApBR,QAAAC,cAAA;AA7CN,SAASC,QAAO,GAAW,MAAsB;AAC/C,MAAI,IAAI,KAAK,KAAK,IAAI,GAAG,SAAS,IAAI,KAAK,KAAK,MAAM,SAAS;AAC/D,MAAI,KAAK,KAAK,IAAK,MAAM,IAAK,UAAU;AACxC,WAAS,IAAK,MAAM,QAAS,KAAK;AACpC;AAQO,IAAM,gBAA8C,CAAC;AAAA,EAC1D,WAAW;AAAA,EACX,cAAsB;AAAA,EACtB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,aAAa,gBAAgB,SAAS;AAG5C,QAAM,QAAQ;AACd,QAAM,KAAK,IAAI;AACf,QAAM,UAAmC;AAAA,IACvC,CAAC,MAAM,OAAOF,QAAO,GAAG,IAAI,IAAI,GAAG;AAAA,IACnC,CAAC,OAAOA,QAAO,GAAG,IAAI,IAAI,KAAK,IAAI;AAAA,EACrC;AACA,MAAI,WAAW;AACf,aAAW,CAAC,GAAG,CAAC,KAAK,SAAS;AAC5B,QAAI,MAAM,KAAK,MAAM,GAAG;AACtB,YAAM,OAAO,KAAK,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI;AAC9C,iBAAW,OAAO,OAAO;AAAA,IAC3B;AAAA,EACF;AACA,MAAI,SAAS,aAAa;AAExB,eAAW,OAAO,KAAK,IAAK,IAAI,KAAK,KAAK,IAAK,KAAK,IAAI;AAAA,EAC1D;AAEA,SACE,gBAAAF,MAACK,eAAA,EAAa,OAAO,EAAE,gBAAgB,UAAU,YAAY,SAAS,GACpE,0BAAAJ,OAAC,SAAI,OAAO,EAAE,WAAW,SAAS,GAChC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,KAAK;AAAA,UACL,QAAQ;AAAA,QACV;AAAA,QAEC,gBAAM,KAAK,EAAE,QAAQ,SAAS,GAAG,CAAC,GAAG,MAAM;AAC1C,gBAAM,aAAa,KAAK,IAAI,KAAK,WAAW,KAAK,CAAC,MAAM,WAAW,KAAK;AACxE,gBAAM,cAAc,IAAI,aAAa;AAGrC,gBAAM,IAAI,KAAK,IAAI,GAAG,KAAK,OAAO,MAAME,QAAO,GAAG,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI;AAC3E,gBAAM,QAAQA,QAAO,GAAG,OAAO,EAAE,IAAI;AACrC,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC;AAC3D,gBAAM,IAAI,KAAK,MAAM,WAAW,eAAe,OAAO,OAAO;AAC7D,iBACE,gBAAAF;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,SAAS,OAAO,WAAW,OAAO;AAAA,gBAClC,WAAW,WAAW,MAAM,YAAY,WAAW,OAAO;AAAA,cAC5D;AAAA;AAAA,YARK;AAAA,UASP;AAAA,QAEJ,CAAC;AAAA;AAAA,IACH;AAAA,IACC,SACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL;AAAA,UACA,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,eAAe;AAAA,UACf,eAAe;AAAA,UACf,OAAe;AAAA,UACf,SAAS,QAAQ,SAAS,aAAa,WAAW,OAAO;AAAA,UACzD,WAAW;AAAA,UACX,YAAY;AAAA,QACd;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KAEJ,GACF;AAEJ;;;ACtHA,OAAOM,YAAW;AAClB,SAAS,UAAAC,SAAQ,eAAAC,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAoDzE,gBAAAC,OAgDA,QAAAC,cAhDA;AA7BG,IAAM,oBAAsD,CAAC;AAAA,EAClE;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,EACT,cAAsB;AAAA,EACtB,SAAS;AACX,MAAM;AACJ,QAAM,QAAQC,kBAAgB;AAC9B,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAC/B,QAAM,IAAI,QAAQ;AAClB,QAAM,aAAa,gBAAgB,SAAS;AAI5C,QAAM,QAAQC,cAAY,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;AAAA,IACvD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,QAAQC,QAAO,OAAO,KAAK,GAAG,KAAK,CAAC;AAAA,EACtC,CAAC;AACD,QAAM,OAAOC,SAAO;AAAA,IAClB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,IAAI,MAAM,EAAE;AAAA,EAChD,CAAC;AACD,QAAM,OAAO,QAAQ,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,CAAC,IAAI,OAAO;AACrE,QAAM,IAAI,SAAS,KAAK,QAAQ,SAAS,SAAS,SAAS,OAAO;AAElE,QAAM,OAAOC,OAAM,SAAS,QAAQ,QAAQ;AAC5C,QAAM,SAAS,KAAK,CAAC,KACnB,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,2BAAmC,UAAU,QAAgB,EAAE;AAAA,QAC3E,QAAQ;AAAA,MACV;AAAA;AAAA,EACF;AAEF,QAAM,QAAQ,KAAK,CAAC,KAClB,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,2BAAmC,MAAM,QAAgB,IAAI,SAAiB,IAAI;AAAA,MAChG;AAAA;AAAA,EACF;AAGF,QAAM,UAAUM,SAAO,EAAE,OAAO,QAAQ,GAAG,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC;AAEpG,QAAM,OAAO,CAAC,OAAe,SAC3B,gBAAAN;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,KAAK;AAAA,QACL,CAAC,IAAI,GAAG;AAAA,QACR;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,eAAe;AAAA,QACf,OAAe;AAAA,QACf,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,cAAc;AAAA,QACd,SAASI,cAAY,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAAA,QAC5C,WAAW,cAAcA,cAAY,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,QAC/D,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,MACxB;AAAA,MAEC;AAAA;AAAA,EACH;AAGF,SACE,gBAAAH,OAAC,SAAI,OAAO,EAAE,UAAU,YAAY,OAAO,GAAG,UAAU,SAAS,GAE/D;AAAA,oBAAAD,MAAC,SAAI,OAAO,EAAE,UAAU,YAAY,OAAO,EAAE,GAAI,iBAAM;AAAA,IACvD,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,OAAO;AAAA,UACP,UAAU,YAAY,IAAI,KAAK,GAAG;AAAA,UAClC,gBAAgB,YAAY,IAAI,KAAK,GAAG;AAAA,QAC1C;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IAGA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,MAAM,GAAG,IAAI,GAAG;AAAA,UAChB,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,YAAY;AAAA,QACd;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK;AAAA,UACL,MAAM,GAAG,IAAI,GAAG;AAAA,UAChB,WAAW;AAAA,UACX,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,OAAe;AAAA,UACf;AAAA,UACA,UAAU;AAAA,UACV,YAAY;AAAA,QACd;AAAA,QACD;AAAA;AAAA,IAED;AAAA,IAEC,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,QAAQ,OAAO;AAAA,KACvB;AAEJ;;;AC/IA,SAAS,UAAAQ,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAmBpD,gBAAAC,OAkFI,QAAAC,cAlFJ;AALJ,IAAMC,eACJ;AAEF,SAAS,qBAAqB;AAC5B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAoB;AAAA,QACpB,cAAc;AAAA,QACd,QAAQ,eAAuB;AAAA,QAC/B,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,OAAe;AAAA,QACf,YAAYE;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,MACjB;AAAA,MACD;AAAA;AAAA,EAED;AAEJ;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AACF,GAGG;AACD,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAoB;AAAA,QACpB,QAAQ,aAAa,KAAK;AAAA,QAC1B,cAAc;AAAA,QACd,GAAG;AAAA,MACL;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA,cAAsB;AAAA,EACtB,cAAsB;AAAA,EACtB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAA6B;AAC3B,QAAM,QAAQG,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAE/B,QAAM,WAAWC,SAAO;AAAA,IACtB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,EACnD,CAAC;AAED,QAAM,UAAU;AAChB,QAAM,QAAQ,OAAO,WAAW;AAEhC,QAAM,UAAU,YAAY,gBAAAL,MAAC,sBAAmB;AAEhD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,MAClB;AAAA,MAEA,0BAAAC,OAAC,SAAI,OAAO,EAAE,UAAU,YAAY,SAAS,eAAe,GACzD;AAAA;AAAA,QACD,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,QAAQ,GAAG,WAAW,YAAY,WAAW;AAAA,cAC7C,cAAc;AAAA,cACd;AAAA,cACA,WAAW,SAAS,KAAK;AAAA,cACzB,iBAAiB;AAAA,cACjB,eAAe;AAAA,cACf,YAAY;AAAA,YACd;AAAA,YAEA;AAAA,8BAAAD,MAAC,UAAO,OAAO,aAAa,OAAO,EAAE,KAAK,IAAI,MAAM,GAAG,GAAG;AAAA,cAC1D,gBAAAA,MAAC,UAAO,OAAO,aAAa,OAAO,EAAE,KAAK,IAAI,OAAO,GAAG,GAAG;AAAA,cAC3D,gBAAAA,MAAC,UAAO,OAAO,aAAa,OAAO,EAAE,QAAQ,IAAI,MAAM,GAAG,GAAG;AAAA,cAC7D,gBAAAA,MAAC,UAAO,OAAO,aAAa,OAAO,EAAE,QAAQ,IAAI,OAAO,GAAG,GAAG;AAAA,cAC9D,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,OAAO,EAAE,KAAK,IAAI,MAAM,OAAO,YAAY,GAAG;AAAA;AAAA,cAChD;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,OAAO,EAAE,QAAQ,IAAI,MAAM,OAAO,YAAY,GAAG;AAAA;AAAA,cACnD;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,OAAO,EAAE,MAAM,IAAI,KAAK,OAAO,WAAW,GAAG;AAAA;AAAA,cAC/C;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,OAAO,EAAE,OAAO,IAAI,KAAK,OAAO,WAAW,GAAG;AAAA;AAAA,cAChD;AAAA;AAAA;AAAA,QACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;;;AC3IA;AAAA,EACE,eAAAM;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AA4ED,SAiBE,OAAAC,OAjBF,QAAAC,cAAA;AA7DN,IAAMC,eACJ;AAEF,IAAM,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAC3D,IAAM,uBAAuB;AAEtB,SAAS,gBAAgB;AAAA,EAC9B,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,SAAiB;AAAA,EACjB,aAAa,GAAW,EAAE;AAAA,EAC1B,aAAqB;AAAA,EACrB,SAAiB;AAAA,EACjB,QAAQ;AAAA,EACR;AACF,GAAyB;AACvB,QAAM,WAAWC,kBAAgB;AACjC,QAAM,QAAQ,WAAW;AACzB,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAE/B,QAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC,CAAC;AAGpE,QAAM,QAAQC,SAAO;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,EACnD,CAAC;AAED,QAAM,UAAUC,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnD,QAAM,eAAeA,cAAY,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACxD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,YAAY;AAClB,QAAM,WAAW;AACjB,QAAM,gBAAgB;AACtB,QAAM,kBACJ,gBAAgB,aAAa,gBAAgB,KAAK;AACpD,QAAM,aAAa,kBAAkB,gBAAgB;AACrD,QAAM,cAAc,YAAY,gBAAgB;AAEhD,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,YAAYC;AAAA;AAAA,QAEZ,iBACE;AAAA,QACF,gBAAgB;AAAA,MAClB;AAAA,MAGA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,KAAK;AAAA,cACL,gBAAgB;AAAA,YAClB;AAAA,YAEA;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,YAAY;AAAA,oBACZ,UAAU;AAAA,oBACV,OAAO;AAAA,oBACP,eAAe;AAAA,kBACjB;AAAA,kBACD;AAAA;AAAA,cAED;AAAA;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,cAAc;AAAA,cACd,YACE;AAAA,cACF,QAAQ;AAAA,cACR,UAAU;AAAA,YACZ;AAAA,YAGA,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,YACE;AAAA,gBACJ;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW,+BAA+B,OAAO;AAAA,cACjD,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,sBAAsB;AAAA,cACtB,QAAQ,aAAqB,WAAW;AAAA,cACxC,cAAc,cAAc;AAAA,cAC5B,SAAS;AAAA,cACT,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,KAAK;AAAA,YACP;AAAA,YAEC,gBAAM,KAAK,EAAE,QAAQ,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM;AACnD,oBAAM,UACJ,kBAAkB,uBAAuB,cAAc;AACzD,oBAAM,WAAW,MAAM;AACvB,qBACE,gBAAAA;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBAEC,MAAM;AAAA,kBACN,QAAO;AAAA,kBACP,MAAM,aAAa,CAAC;AAAA,kBAEpB,0BAAAP;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO,YAAY,IAAI,YAAY,MAAM;AAAA,sBACzC,MAAM;AAAA,sBACN,IAAI;AAAA,sBACJ;AAAA,sBACA,QAAQ;AAAA,sBACR;AAAA;AAAA,kBACF;AAAA;AAAA,gBAZK;AAAA,cAaP;AAAA,YAEJ,CAAC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,QAAQG,kBAAgB;AAC9B,QAAM,MAAME,SAAO;AAAA,IACjB;AAAA,IACA;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,EACnD,CAAC;AACD,QAAM,QAAQC,cAAY,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAM,UAAUA,cAAY,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACjD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,SACE,gBAAAN;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,YAAY,SACR,2BAA2B,MAAM,OAAO,MAAM,QAC9C;AAAA,QACJ,QAAQ,SACJ,aAAa,MAAM,OACnB;AAAA,QACJ,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,OAAO,SAAiB,UAAkB;AAAA,QAC1C,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,WAAW,SAAS,KAAK;AAAA,QACzB;AAAA,QACA,iBAAiB;AAAA,MACnB;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACxQA,SAAS,eAAAQ,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAuH7D,SAUE,OAAAC,OAVF,QAAAC,cAAA;AApGR,IAAMC,aACJ;AAEF,IAAMC,iBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,cAAc;AAAA,EAC5B,QAAQA;AAAA,EACR,gBAAgB,CAAC,GAAG,EAAE;AAAA,EACtB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,aAAqB;AAAA,EACrB,YAAoB;AAAA,EACpB,YAAoB;AAAA,EACpB,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAAuB;AACrB,QAAM,QAAQC,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAE/B,QAAM,aAAa,KAAK,MAAM,WAAW,IAAI;AAG7C,QAAM,gBAAgB,KAAK,IAAI,IAAI,QAAQ,EAAE;AAC7C,QAAM,CAAC,OAAO,GAAG,IAAI;AACrB,QAAM,iBAAiB,KAAK,IAAI,GAAG,MAAM,QAAQ,CAAC;AAIlD,QAAM,mBAAmBC,SAAO;AAAA,IAC9B,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,EAAE;AAAA,EACjD,CAAC;AAED,QAAM,kBAAkBC;AAAA,IACtB;AAAA,IACA,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,iBAAiB,YAAY,UAAU;AAAA;AAAA,EAC1C;AAEA,QAAM,mBAAmBA,cAAY,kBAAkB,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACvE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,qBAAqBA,cAAY,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACzE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,SAAS,MAAM,MAAM,GAAG,KAAK;AACnC,QAAM,YAAY,MAAM,MAAM,OAAO,MAAM,CAAC;AAC5C,QAAM,QAAQ,MAAM,MAAM,MAAM,CAAC;AAEjC,SACE,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,YAAYE;AAAA,MACd;AAAA,MAEA,0BAAAD;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,UAAU;AAAA,YACV,QAAQ;AAAA,UACV;AAAA,UAGA;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,QAAQ;AAAA,kBACR,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,KAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAc;AAAA,gBAChB;AAAA,gBAEA;AAAA,kCAAAD,MAACQ,QAAA,EAAM,OAAe,SAAS;AAAA,kBAC/B,gBAAAR,MAACQ,QAAA,EAAM,OAAe,YAAY;AAAA,kBAClC,gBAAAR,MAACQ,QAAA,EAAM,OAAe,WAAW;AAAA,kBACjC,gBAAAR;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,MAAM;AAAA,wBACN,SAAS;AAAA,wBACT,gBAAgB;AAAA,wBAChB,UAAU;AAAA,sBACZ;AAAA,sBAEA,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,aAAa;AAAA,0BACb,UAAU;AAAA,0BACV,UAAU;AAAA,0BACV,YAAYE;AAAA,0BACZ,OAAO,EAAE,OAAO,WAAW;AAAA,0BAE1B;AAAA;AAAA,sBACH;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,YACF;AAAA,YAGA,gBAAAD,OAAC,SAAI,OAAO,EAAE,SAAS,UAAU,UAAU,YAAY,KAAK,GACzD;AAAA,qBAAO,IAAI,CAAC,MAAM,MACjB,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBAEC;AAAA,kBACA,OAAO;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA,gBALK,KAAK,CAAC;AAAA,cAMb,CACD;AAAA,cAGD,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,QAAQ;AAAA,oBACR,UAAU;AAAA,oBACV,YAAY;AAAA,kBACd;AAAA,kBAEA;AAAA,oCAAAD,MAAC,SAAI,OAAO,EAAE,SAAS,iBAAiB,GACrC,oBAAU,IAAI,CAAC,MAAM,MACpB,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBAEC;AAAA,wBACA,OAAO,QAAQ;AAAA,wBACf;AAAA,wBACA;AAAA,wBACA;AAAA;AAAA,sBALK,KAAK,CAAC;AAAA,oBAMb,CACD,GACH;AAAA,oBAIA,gBAAAC;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,QAAQ;AAAA,0BACR,SAAS;AAAA,0BACT,YAAY;AAAA,0BACZ,aAAa;AAAA,0BACb,OAAO;AAAA,0BACP,WAAW;AAAA,0BACX,SAAS;AAAA,wBACX;AAAA,wBACD;AAAA;AAAA,0BACI;AAAA,0BAAe;AAAA;AAAA;AAAA,oBACpB;AAAA;AAAA;AAAA,cACF;AAAA,cAEC,MAAM,IAAI,CAAC,MAAM,MAChB,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBAEC;AAAA,kBACA,OAAO,MAAM,IAAI;AAAA,kBACjB;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA,gBALK,KAAK,CAAC;AAAA,cAMb,CACD;AAAA,eACH;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,SAASQ,OAAM,EAAE,MAAM,GAAsB;AAC3C,SACE,gBAAAR;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,SAAS;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,KAAK;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,WAAW;AAAA,cACX,cAAc;AAAA,cACd,OAAO;AAAA,cACP,YAAY;AAAA,YACd;AAAA,YAEC,kBAAQ;AAAA;AAAA,QACX;AAAA,QACA,gBAAAA,MAAC,UAAM,gBAAK;AAAA;AAAA;AAAA,EACd;AAEJ;;;ACnRA,SAAS,eAAAS,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AA4B7D,SA0GA,YAAAC,WA1GA,OAAAC,OAgDJ,QAAAC,cAhDI;AAhBR,IAAMC,eACJ;AAEF,SAAS,aAAa,EAAE,YAAY,GAA4B;AAC9D,QAAM,OAAO,CAAC,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,IAAI;AACnD,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA,MAEC,eAAK,IAAI,CAAC,GAAG,MACZ,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ,GAAG,IAAI,GAAG;AAAA,YAClB,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,SAAS,MAAM,IAAI;AAAA,UACrB;AAAA;AAAA,QAPK;AAAA,MAQP,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,WAAW;AAClB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,WAAW;AAAA,QACX,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,MACP;AAAA,MAEC,WAAC,KAAK,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,MAC7B,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,OAAO,GAAG,IAAI,GAAG;AAAA,YACjB,YAAY;AAAA,YACZ,cAAc;AAAA,UAChB;AAAA;AAAA,QANK;AAAA,MAOP,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA;AACF,GAGG;AACD,SACE,gBAAAC,OAAC,SAAI,OAAO,EAAE,WAAW,EAAE,GACzB;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAe;AAAA,UACf,eAAe;AAAA,UACf,YAAYE;AAAA,QACd;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IACA,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,OAAO;AAAA,UACP,WAAW;AAAA,UACX,YAAY;AAAA,QACd;AAAA,QACD;AAAA;AAAA,IAED;AAAA,KACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,SAAS,CAAC,UAAU,UAAU,QAAQ,QAAQ,OAAO,OAAO;AAClE,QAAM,UAAU,QAAQ;AACxB,SACE,gBAAAC,OAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,SAAS,GAAG,GACvD;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,YAAYE;AAAA,UACZ,eAAe;AAAA,UACf,eAAe;AAAA,QACjB;AAAA,QAEC,iBAAO,QAAQ,OAAO,MAAM;AAAA;AAAA,IAC/B;AAAA,IACC,YAAY,IACX,gBAAAD,OAAAF,WAAA,EACE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA;AAAA,MACrC;AAAA,MACA,gBAAAA,MAAC,gBAAa,aAA0B;AAAA,OAC1C,IACE,YAAY,IACd,gBAAAC,OAAAF,WAAA,EACE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA;AAAA,MACrC;AAAA,MACA,gBAAAA,MAAC,YAAS;AAAA,OACZ,IAEA,gBAAAC,OAAAF,WAAA,EACE;AAAA,sBAAAC,MAAC,gBAAa,aAA0B;AAAA,MACxC,gBAAAA,MAAC,YAAS;AAAA,OACZ;AAAA,KAEJ;AAEJ;AAEO,SAAS,mBAAmB;AAAA,EACjC,SAAS;AAAA,EACT,cAAsB;AAAA,EACtB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AACF,GAA4B;AAC1B,QAAM,QAAQG,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAG/B,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,SAAS;AAGf,QAAM,YAAY,KAAK;AAAA,IACrBC,cAAY,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,MAAM,GAAG;AAAA,MACtD,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACA,QAAM,YAAY,OAAO,UAAU,GAAG,SAAS;AAC/C,QAAM,gBAAgB,KAAK,MAAM,QAAQ,EAAE,IAAI,MAAM;AAGrD,QAAM,oBAAoBC,SAAO;AAAA,IAC/B,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,MAAM,GAAG,SAAS,IAAI,WAAW,IAAI;AAAA,IAC/C,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,iBAAiB;AACvB,QAAM,iBAAiB;AACvB,QAAM,UAAU;AAChB,QAAM,UAAU;AAChB,QAAM,SAASD;AAAA,IACb;AAAA,IACA,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,gBAAgB,OAAO;AAAA,EAC1B;AACA,QAAM,SAASA;AAAA,IACb;AAAA,IACA,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,gBAAgB,OAAO;AAAA,EAC1B;AACA,QAAM,WAAWA,cAAY,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACjE,QAAM,cAAcA,cAAY,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACnE,QAAM,gBAAgBA,cAAY,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAGrE,QAAM,kBAAkBA,cAAY,OAAO,CAAC,QAAQ,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACnE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,aAAe,QAAQ,MAAO,MAAO;AAG3C,QAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,UAAU,CAAC;AAE9C,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAoB;AAAA,QACpB,UAAU;AAAA,QACV,YAAYC;AAAA,MACd;AAAA,MAGA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,iBACE;AAAA,cACF,gBAAgB;AAAA,cAChB,WACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA,QAGC,QAAQ,UACP,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,qBAAqB,UAAU,KAAK,IAAI,WAAW,CAAC,CAAC;AAAA,cACrD,KAAK;AAAA,YACP;AAAA,YAEC,gBAAM,IAAI,CAAC,GAAG,MAAM;AACnB,oBAAM,YAAY,SAAS,IAAI;AAC/B,oBAAM,eAAeM,SAAO;AAAA,gBAC1B,OAAO,QAAQ;AAAA,gBACf;AAAA,gBACA,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,WAAW,IAAI;AAAA,gBACjD,kBAAkB;AAAA,cACpB,CAAC;AACD,oBAAM,WAAWD,cAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAM,eAAe,WAAW;AAEhC,qBACE,gBAAAL;AAAA,gBAAC;AAAA;AAAA,kBAEC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,aAAa;AAAA,oBACb,SAAS;AAAA,kBACX;AAAA,kBAEA,0BAAAC;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,UAAU;AAAA,wBACV,OAAO;AAAA,wBACP,QAAQ;AAAA,wBACR,gBAAgB;AAAA,wBAChB,WAAW,WAAW,QAAQ;AAAA,sBAChC;AAAA,sBAGA;AAAA,wCAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,UAAU;AAAA,8BACV,OAAO;AAAA,8BACP,YAAoB;AAAA,8BACpB,QAAQ,eAAuB;AAAA,8BAC/B,cAAc;AAAA,8BACd,oBAAoB;AAAA,8BACpB,UAAU;AAAA,8BACV,YAAY,eAAe,YAAY;AAAA,4BACzC;AAAA,4BAGA;AAAA,8CAAAD;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAO;AAAA,oCACL,UAAU;AAAA,oCACV,OAAO;AAAA,oCACP,YAAY,uDAAuD,UAAU,MAAM,WAAW,MAAM,aAAa,EAAE,kBAAkB,aAAa,EAAE;AAAA,kCACtJ;AAAA;AAAA,8BACF;AAAA,8BACA,gBAAAC,OAAC,SAAI,OAAO,EAAE,SAAS,GAAG,GACxB;AAAA,gDAAAD;AAAA,kCAAC;AAAA;AAAA,oCACC,OAAO;AAAA,sCACL,OAAO;AAAA,sCACP,QAAQ;AAAA,sCACR,YAAY;AAAA,sCACZ,cAAc;AAAA,oCAChB;AAAA;AAAA,gCACF;AAAA,gCACA,gBAAAA;AAAA,kCAAC;AAAA;AAAA,oCACC,OAAO;AAAA,sCACL,OAAO;AAAA,sCACP,QAAQ;AAAA,sCACR,YAAY;AAAA,sCACZ,cAAc;AAAA,sCACd,WAAW;AAAA,oCACb;AAAA;AAAA,gCACF;AAAA,gCACA,gBAAAA;AAAA,kCAAC;AAAA;AAAA,oCACC,OAAO;AAAA,sCACL,OAAO;AAAA,sCACP,QAAQ;AAAA,sCACR,YAAY;AAAA,sCACZ,cAAc;AAAA,sCACd,WAAW;AAAA,oCACb;AAAA;AAAA,gCACF;AAAA,iCACF;AAAA;AAAA;AAAA,wBACF;AAAA,wBAEA,gBAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,UAAU;AAAA,8BACV,OAAO;AAAA,8BACP,YAAoB;AAAA,8BACpB,QAAQ,aAAa,WAAW;AAAA,8BAChC,cAAc;AAAA,8BACd,oBAAoB;AAAA,8BACpB,WAAW;AAAA,8BACX,UAAU;AAAA,4BACZ;AAAA,4BAEA,0BAAAA,MAAC,eAAY,OAAO,GAAG,aAA0B;AAAA;AAAA,wBACnD;AAAA;AAAA;AAAA,kBACF;AAAA;AAAA,gBAjFK;AAAA,cAkFP;AAAA,YAEJ,CAAC;AAAA;AAAA,QACH;AAAA,QAIF,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,YAAY,CAAC,SAAS;AAAA,cACtB,YAAY;AAAA,cACZ,QAAQ,aAAa,WAAW;AAAA,cAChC,cAAc;AAAA,cACd,gBAAgB;AAAA,cAChB,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA,YAGA;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,aAAa;AAAA,oBACb,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,gBAAgB;AAAA,oBAChB,YAAY;AAAA,kBACd;AAAA,kBAEA,0BAAAA,MAAC,SAAI,SAAQ,aAAY,OAAM,MAAK,QAAO,MAAK,MAAK,gBACnD,0BAAAA,MAAC,UAAK,GAAE,kEAAiE,GAC3E;AAAA;AAAA,cACF;AAAA,cACA,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,UAAU;AAAA,oBACV,UAAU;AAAA,kBACZ;AAAA,kBAIA;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,aAAa;AAAA,wBACb,UAAU,KAAK,IAAI,GAAG,SAAS,EAAE;AAAA,wBACjC,UAAU;AAAA,wBACV,YAAYE;AAAA,wBACZ,YAAY;AAAA,wBACZ,eAAc;AAAA,wBACd,OAAO,EAAE,OAAe,QAAQ;AAAA,wBAE/B;AAAA;AAAA,oBACH;AAAA,oBACC,QAAQ,UAAU,iBACjB,gBAAAF;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,SAAS;AAAA,0BACT,YAAY;AAAA,0BACZ,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,YAAY;AAAA,0BACZ,YAAY;AAAA,wBACd;AAAA;AAAA,oBACF;AAAA;AAAA;AAAA,cAEJ;AAAA,cACC,oBAAoB,OACnB,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,YAAY;AAAA,oBACZ,SAAS;AAAA,oBACT,KAAK;AAAA,oBACL,YAAY;AAAA,oBACZ,UAAU,oBAAoB,OAAO;AAAA,kBACvC;AAAA,kBAEA;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,cAAc;AAAA,0BACd,YAAY;AAAA,0BACZ,WAAW,WAAW,WAAW;AAAA,wBACnC;AAAA;AAAA,oBACF;AAAA,oBACA,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,OAAO;AAAA,0BACP,YAAY;AAAA,wBACd;AAAA,wBACD;AAAA;AAAA,oBAED;AAAA;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;;;AChdA,SAAS,eAAAO,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAqH/D,gBAAAC,OAsBA,QAAAC,cAtBA;AAhGN,IAAMC,eACJ;AAIF,IAAM,kBAAkB;AAExB,IAAM,oBACJ,2BAAmC,OAAO,QAAgB,IAAI,SAAiB,OAAO;AAExF,IAAM,uBACJ,sCAA8C,WAAW,QAAgB,WAAW,SAAiB,OAAO,kCAA0C,EAAE,QAAgB,OAAO,SAAiB,EAAE;AAE7L,SAAS,kBAAkB;AAAA,EAChC,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,SAAiB;AAAA,EACjB,aAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,WAAmB;AAAA,EACnB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,QAAQ;AAAA,EACR;AACF,GAA2B;AACzB,QAAM,WAAWC,kBAAgB;AACjC,QAAM,QAAQ,WAAW;AACzB,QAAM,EAAE,KAAK,iBAAiB,IAAIC,iBAAe;AAGjD,QAAM,OAAOC;AAAA,IACX;AAAA,IACA,CAAC,gBAAgB,aAAa;AAAA,IAC9B,CAAC,GAAG,OAAO;AAAA,IACX,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAGA,QAAM,kBAAkBA;AAAA,IACtB;AAAA,IACA,CAAC,gBAAgB,aAAa;AAAA,IAC9B,CAAC,GAAG,GAAG;AAAA,IACP,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AACA,QAAM,cAAc,KAAK,IAAI,QAAQ,CAAC,IAAI;AAC1C,QAAM,cAAc,KAAK,IAAI,GAAG,kBAAkB,WAAW;AAG7D,QAAM,SAASC,SAAO;AAAA,IACpB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,MAAM,GAAG,SAAS,IAAI,WAAW,GAAG;AAAA,EAChD,CAAC;AACD,QAAM,mBAAmBD,cAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC3D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAGD,QAAM,SAASA,cAAY,OAAO,CAAC,gBAAgB,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACzE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,UAAUA,cAAY,kBAAkB,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC9D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,cAAc,SAAS;AAC7B,QAAM,YAAY,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI;AAE5C,QAAM,WAAW,OAAO,KAAK,IAAI,QAAQ,CAAC,IAAI;AAG9C,QAAM,WAAW,KAAK,MAAM,QAAQ,EAAE,IAAI;AAC1C,QAAM,mBACJ,SAAS,QAAQ,WAAW,EAAE,IAAI,IAAI,OAAO,QAAQ;AAGvD,OAAK;AAEL,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,YAAYC;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,MAGA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,QAAQ,QAAQ,IAAI;AAAA;AAAA,cAEpB,WAAW;AAAA,YACb;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS,eAAe,IAAI;AAAA,cAC5B,eAAe;AAAA,cACf,cAAc;AAAA,YAChB;AAAA,YACA,OAAM;AAAA,YAEN;AAAA,8BAAAD,MAAC,UACC,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAG;AAAA,kBACH,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,cAAa;AAAA,kBAEb,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAI,aAAa;AAAA,sBACjB,IAAI,aAAa;AAAA,sBACjB,GAAG;AAAA,sBACH,MAAM;AAAA;AAAA,kBACR;AAAA;AAAA,cACF,GACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAM;AAAA,kBACN,QAAO;AAAA,kBACP,MAAK;AAAA;AAAA,cACP;AAAA;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,eAAe;AAAA,cACf,SAAS;AAAA,YACX;AAAA,YAEA,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,kBACL,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,KAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,OAAe;AAAA,kBACf,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,eAAe;AAAA,kBACf,QAAQ,eAAuB;AAAA,kBAC/B,gBAAgB;AAAA,kBAChB,sBAAsB;AAAA,kBACtB,WAAW,SAAS,SAAS;AAAA,gBAC/B;AAAA,gBAEA;AAAA,kCAAAD;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,wBACL,OAAO;AAAA,wBACP,QAAQ;AAAA,wBACR,cAAc;AAAA,wBACd,YAAY;AAAA,wBACZ,WAAW,WAAW,aAAa,QAAQ,QAAQ,CAAC;AAAA,sBACtD;AAAA;AAAA,kBACF;AAAA,kBACA,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,aAAa;AAAA,sBACb,UAAU;AAAA,sBACV,YAAYE;AAAA,sBACZ,YAAY;AAAA,sBACZ,eAAc;AAAA,sBAEb;AAAA;AAAA,kBACH;AAAA;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAKA,SAAS,aAAa,KAAa,OAAuB;AACxD,QAAM,IAAI,oBAAoB,KAAK,GAAG;AACtC,MAAI,CAAC,EAAG,QAAO;AACf,QAAM,MAAM,SAAS,EAAE,CAAC,GAAG,EAAE;AAC7B,QAAM,IAAK,OAAO,KAAM;AACxB,QAAM,IAAK,OAAO,IAAK;AACvB,QAAM,IAAI,MAAM;AAChB,SAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK;AACxC;;;AC9OA;AAAA,EACE,UAAAK;AAAA,EACA,eAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AAeH,SACE,OAAAC,OADF,QAAAC,cAAA;AAFJ,SAAS,SAAS,EAAE,MAAM,GAAsB;AAC9C,SACE,gBAAAA,OAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAc;AAAA,QACd,QAAQ;AAAA,QACR,aAAY;AAAA;AAAA,IACd;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,QAAQ;AAAA,QACR,aAAY;AAAA,QACZ,MAAK;AAAA;AAAA,IACP;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,GAAE;AAAA,QACF,OAAM;AAAA,QACN,QAAO;AAAA,QACP,IAAG;AAAA,QACH,MAAM;AAAA,QACN,SAAQ;AAAA;AAAA,IACV;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,GAAE;AAAA,QACF,OAAM;AAAA,QACN,QAAO;AAAA,QACP,IAAG;AAAA,QACH,MAAM;AAAA,QACN,SAAQ;AAAA;AAAA,IACV;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,GAAE;AAAA,QACF,OAAM;AAAA,QACN,QAAO;AAAA,QACP,IAAG;AAAA,QACH,MAAM;AAAA,QACN,SAAQ;AAAA;AAAA,IACV;AAAA,KACF;AAEJ;AAEO,SAAS,gBAAgB;AAAA,EAC9B,SAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAAyB;AACvB,QAAM,QAAQE,kBAAgB,IAAI;AAClC,QAAM,EAAE,iBAAiB,IAAIC,iBAAe;AAG5C,QAAM,UAAU,KAAK,MAAM,mBAAmB,IAAI;AAClD,QAAM,eAAe,KAAK,MAAM,mBAAmB,IAAI;AACvD,QAAM,cAAc;AAGpB,QAAM,eAAeC,cAAY,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC5D,kBAAkB;AAAA,IAClB,QAAQC,QAAO,IAAIA,QAAO,KAAK;AAAA,EACjC,CAAC;AAED,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,QAAQD,cAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3D,QAAM,QAAQA,cAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAG3D,QAAM,cAAcE;AAAA,IAClB;AAAA,IACA,CAAC,UAAU,IAAI,YAAY;AAAA,IAC3B,CAAS,YAAY,MAAM;AAAA,EAC7B;AAGA,QAAM,cAAcF;AAAA,IAClB;AAAA,IACA,CAAC,eAAe,GAAG,eAAe,CAAC;AAAA,IACnC,CAAC,GAAG,CAAC;AAAA,IACL,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAEA,QAAM,kBAAkBA;AAAA,IACtB;AAAA,IACA,CAAC,cAAc,eAAe,CAAC;AAAA,IAC/B,CAAC,GAAG,CAAC;AAAA,IACL,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAEA,QAAM,WAAWA;AAAA,IACf;AAAA,IACA,CAAC,cAAc,cAAc,CAAC;AAAA,IAC9B,CAAC,GAAG,GAAG;AAAA,IACP,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAEA,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AAEvB,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,YACE;AAAA,MACJ;AAAA,MAEA;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,QAAQ,gBAAgB,WAAW;AAAA,cACnC,YAAoB;AAAA,cACpB,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,eAAe;AAAA,cACf,KAAK;AAAA,cACL,OAAe;AAAA,cACf,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,YAAY;AAAA,YACd;AAAA,YAEA;AAAA,8BAAAD,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,GAAE;AAAA,kBACF,QAAQ;AAAA,kBACR,aAAY;AAAA,kBACZ,eAAc;AAAA,kBACd,gBAAe;AAAA;AAAA,cACjB,GACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,aAAa;AAAA,kBACb,UAAU,gBAAgB;AAAA,kBAC1B,YAAW;AAAA,kBACX,YAAY;AAAA,kBACZ,OAAO,EAAE,OAAe,YAAY,WAAW,SAAS;AAAA,kBAEvD;AAAA;AAAA,cACH;AAAA,cAGA,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,SAAS;AAAA,oBACT,eAAe;AAAA,oBACf,KAAK;AAAA,kBACP;AAAA,kBAEA;AAAA,oCAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,SAAS;AAAA,0BACT,gBAAgB;AAAA,0BAChB,UAAU;AAAA,0BACV,OAAe;AAAA,wBACjB;AAAA,wBAEA;AAAA,0CAAAD;AAAA,4BAAC;AAAA;AAAA,8BACC,aAAa;AAAA,8BACb,UAAU;AAAA,8BACV,YAAW;AAAA,8BACX,YAAY;AAAA,8BACZ,OAAO,EAAE,OAAe,WAAW;AAAA,8BAElC;AAAA;AAAA,0BACH;AAAA,0BACA,gBAAAC,OAAC,UAAM;AAAA,iCAAK,MAAM,QAAQ;AAAA,4BAAE;AAAA,6BAAC;AAAA;AAAA;AAAA,oBAC/B;AAAA,oBACA,gBAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,QAAQ;AAAA,0BACR,cAAc;AAAA,0BACd,YAAoB;AAAA,0BACpB,UAAU;AAAA,wBACZ;AAAA,wBAEA,0BAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAO;AAAA,8BACL,OAAO,GAAG,QAAQ;AAAA,8BAClB,QAAQ;AAAA,8BACR,YAAY;AAAA,8BACZ,cAAc;AAAA,4BAChB;AAAA;AAAA,wBACF;AAAA;AAAA,oBACF;AAAA;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,WAAW,aAAa,KAAK,OAAO,KAAK;AAAA,cACzC,SAAS;AAAA,cACT,QAAQ,0BAAkC,OAAO;AAAA,YACnD;AAAA,YAEA,0BAAAA,MAAC,YAAS,OAAO,QAAQ;AAAA;AAAA,QAC3B;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACrPA,SAAS,eAAAO,eAAa,mBAAAC,yBAAuB;AAmJjC,gBAAAC,OAyCA,QAAAC,cAzCA;AAnHZ,IAAMC,eACJ;AAIF,IAAM,mBAAmB;AAEzB,IAAM,gBAAgC;AAAA,EACpC,EAAE,IAAI,UAAU,GAAG,KAAK,GAAG,KAAK,OAAO,SAAS;AAAA,EAChD,EAAE,IAAI,OAAO,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM;AAAA,EAC1C,EAAE,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK,OAAO,QAAQ;AAAA,EAC9C,EAAE,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,OAAO,WAAW;AAAA,EAC9C,EAAE,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,OAAO,MAAM;AAAA,EAC3C,EAAE,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,OAAO,OAAO;AAC9C;AAEA,IAAM,gBAAgC;AAAA,EACpC,EAAE,MAAM,UAAU,IAAI,OAAO,YAAY,EAAE;AAAA,EAC3C,EAAE,MAAM,UAAU,IAAI,SAAS,YAAY,GAAG;AAAA,EAC9C,EAAE,MAAM,OAAO,IAAI,MAAM,YAAY,GAAG;AAAA,EACxC,EAAE,MAAM,SAAS,IAAI,MAAM,YAAY,GAAG;AAAA,EAC1C,EAAE,MAAM,MAAM,IAAI,OAAO,YAAY,GAAG;AAAA,EACxC,EAAE,MAAM,MAAM,IAAI,OAAO,YAAY,GAAG;AAC1C;AAOA,SAAS,WAAW,GAA6B,GAA6B;AAC5E,QAAM,KAAK,EAAE,IAAI,EAAE;AAEnB,QAAM,SAAS,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,IAAI,GAAG;AAC9C,QAAM,MAAM,EAAE,IAAI;AAClB,QAAM,MAAM,EAAE;AACd,QAAM,MAAM,EAAE,IAAI;AAClB,QAAM,MAAM,EAAE;AACd,SAAO,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AACtE;AAMA,SAAS,aACP,GACA,GACA;AACA,QAAM,SAAS,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AACrD,QAAM,KAAK,EAAE,GAAG,EAAE,IAAI,QAAQ,GAAG,EAAE,EAAE;AACrC,QAAM,KAAK,EAAE,GAAG,EAAE,IAAI,QAAQ,GAAG,EAAE,EAAE;AACrC,MAAI,MAAM;AACV,MAAI,OAAO;AACX,QAAM,QAAQ;AACd,WAAS,IAAI,GAAG,KAAK,OAAO,KAAK;AAC/B,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,UAAM,IAAI;AAAA,MACR,GACE,IAAI,IAAI,IAAI,EAAE,IACd,IAAI,IAAI,IAAI,IAAI,GAAG,IACnB,IAAI,IAAI,IAAI,IAAI,GAAG,IACnB,IAAI,IAAI,IAAI,EAAE;AAAA,MAChB,GACE,IAAI,IAAI,IAAI,EAAE,IACd,IAAI,IAAI,IAAI,IAAI,GAAG,IACnB,IAAI,IAAI,IAAI,IAAI,GAAG,IACnB,IAAI,IAAI,IAAI,EAAE;AAAA,IAClB;AACA,WAAO,KAAK,MAAM,EAAE,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC;AAC5C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,cAAc;AAAA,EAC5B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAoB;AAAA,EACpB,aAAqB;AAAA,EACrB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,aAAqB;AAAA,EACrB,YAAoB;AAAA,EACpB,YAAoB;AAAA,EACpB,QAAQ;AAAA,EACR;AACF,GAAuB;AACrB,QAAM,QAAQC,kBAAgB,IAAI;AAClC,QAAM,UAAU,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnD,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,YAAYC;AAAA,MACd;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,OAAO,EAAE,UAAU,YAAY,OAAO,EAAE;AAAA,YAGvC;AAAA,oBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,sBAAM,IAAI,QAAQ,IAAI,KAAK,IAAI;AAC/B,sBAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;AAC7B,oBAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AACrB,sBAAM,OAAO,WAAW,GAAG,CAAC;AAC5B,uBACE,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBAEC,GAAG;AAAA,oBACH,MAAK;AAAA,oBACL,QAAQ;AAAA,oBACR,aAAa;AAAA,oBACb,eAAc;AAAA;AAAA,kBALT,QAAQ,CAAC;AAAA,gBAMhB;AAAA,cAEJ,CAAC;AAAA,cAGA,MAAM,IAAI,CAAC,MAAM,MAAM;AACtB,sBAAM,IAAI,QAAQ,IAAI,KAAK,IAAI;AAC/B,sBAAM,IAAI,QAAQ,IAAI,KAAK,EAAE;AAC7B,oBAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AACrB,sBAAM,OAAO,WAAW,GAAG,CAAC;AAC5B,sBAAM,MAAM,aAAa,GAAG,CAAC;AAC7B,sBAAM,aAAa,KAAK,cAAc;AAGtC,sBAAM,SAAS,gBAAgB,KAAM,IAAI,IAAK;AAC9C,sBAAM,MAAM,QAAQ;AACpB,sBAAM,aAAa,MAAM,IAAI,MAAM,MAAM;AAKzC,sBAAM,SAASI;AAAA,kBACb;AAAA,kBACA,CAAC,GAAG,aAAa;AAAA,kBACjB,CAAC,MAAM,aAAa,CAAC,WAAW;AAAA,kBAChC,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,gBACxD;AAGA,oBAAI,aAAa,KAAK,aAAa,gBAAgB,GAAG;AACpD,yBAAO;AAAA,gBACT;AAEA,uBACE,gBAAAH,OAAC,OAEE;AAAA,mBAAC,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,QAC7B,gBAAAD;AAAA,oBAAC;AAAA;AAAA,sBAEC,GAAG;AAAA,sBACH,MAAK;AAAA,sBACL,QAAQ;AAAA,sBACR,aAAa;AAAA,sBACb,eAAc;AAAA,sBACd,iBAAiB,GAAG,WAAW;AAAA,sBAC/B,kBAAkB,UAAU,MAAM,KAAK;AAAA,sBACvC,SAAS;AAAA;AAAA,oBARJ,SAAS,GAAG;AAAA,kBASnB,CACD;AAAA,kBAED,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,GAAG;AAAA,sBACH,MAAK;AAAA,sBACL,QAAQ;AAAA,sBACR,aAAa;AAAA,sBACb,eAAc;AAAA,sBACd,iBAAiB,GAAG,WAAW;AAAA,sBAC/B,kBAAkB;AAAA,sBAClB,OAAO;AAAA,wBACL,QAAQ,uBAAuB,UAAU;AAAA,sBAC3C;AAAA;AAAA,kBACF;AAAA,qBA3BM,SAAS,CAAC,EA4BlB;AAAA,cAEJ,CAAC;AAAA;AAAA;AAAA,QACH;AAAA,QAGC,MAAM,IAAI,CAAC,SACV,gBAAAA;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,KAAK,IAAI;AAAA,cACf,KAAK,KAAK,IAAI;AAAA,cACd,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,eAAe;AAAA,YACjB;AAAA,YAEA,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,aAAa;AAAA,gBACb,UAAU;AAAA,gBACV,UAAU;AAAA,gBACV,YAAYE;AAAA,gBACZ,YAAY;AAAA,gBACZ,eAAc;AAAA,gBAEb,eAAK,SAAS,KAAK;AAAA;AAAA,YACtB;AAAA;AAAA,UA5BK,KAAK;AAAA,QA6BZ,CACD;AAAA;AAAA;AAAA,EACH;AAEJ;;;ACjQA,SAAS,eAAAG,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AA0CjE,SAeE,OAAAC,OAfF,QAAAC,cAAA;AA/BJ,IAAMC,gBACJ;AACF,IAAMC,eACJ;AAEF,IAAM,UAAU;AAAA,EACd,EAAE,IAAI,QAAQ,OAAO,QAAQ,OAAO,EAAE;AAAA,EACtC,EAAE,IAAI,eAAe,OAAO,eAAe,OAAO,EAAE;AAAA,EACpD,EAAE,IAAI,QAAQ,OAAO,QAAQ,OAAO,EAAE;AACxC;AAEA,IAAM,YAAY;AAClB,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAM,SAAS;AACf,IAAM,SAAS;AAEf,SAAS,UAAU,OAAe;AAChC,QAAM,IAAI,aAAa,SAAS,YAAY,WAAW,YAAY;AACnE,QAAM,IAAI,YAAY;AACtB,SAAO,EAAE,GAAG,EAAE;AAChB;AAEA,SAAS,aAAa,GAAW;AAC/B,QAAM,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI;AAClC,SAAO,IAAI,KAAK,MAAM,CAAC;AACzB;AAEA,SAAS,gBAAgB,EAAE,UAAU,EAAE,GAAyB;AAC9D,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,QACT,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,YACd;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,YACd;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA,MAAC,SAAI,OAAO,EAAE,MAAM,EAAE,GAAG;AAAA,QACzB,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,YACd;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,gBAAgB;AAAA,EAC9B,YAAY;AAAA,EACZ,cAAsB;AAAA,EACtB,QAAQ;AAAA,EACR;AACF,GAAyB;AACvB,QAAM,QAAQI,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAG/B,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,QAAM,gBAAgB;AAEtB,QAAM,aAAa,UAAU,CAAC;AAC9B,QAAM,aAAa,UAAU,CAAC;AAC9B,QAAM,aAAa,UAAU,CAAC;AAG9B,MAAI;AACJ,MAAI;AACJ,MAAI,OAAO;AACX,MAAI,aAAa;AAEjB,MAAI,QAAQ,cAAc;AACxB,SAAK,WAAW;AAChB,SAAK,WAAW;AAAA,EAClB,WAAW,QAAQ,YAAY;AAC7B,UAAM,KAAK,QAAQ,iBAAiB,aAAa;AACjD,SAAKC,cAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;AAExD,UAAM,MAAM,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AACpC,SAAKA,cAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,IAAI;AAC5D,WAAO,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AAC/B,iBAAa,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AAAA,EAC3C,WAAW,QAAQ,cAAc;AAC/B,SAAK,WAAW;AAChB,SAAK,WAAW;AAAA,EAClB,WAAW,QAAQ,YAAY;AAC7B,UAAM,KAAK,QAAQ,iBAAiB,aAAa;AACjD,SAAKA,cAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;AACxD,UAAM,MAAM,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AACpC,SAAKA,cAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,IAAI;AAC5D,WAAO,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AAC/B,iBAAa,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AAAA,EAC3C,OAAO;AACL,SAAK,WAAW;AAChB,SAAK,WAAW;AAAA,EAClB;AAGA,QAAM,QAAQC,SAAO;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,IACjD,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,QAAQA,SAAO;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,IACjD,kBAAkB;AAAA,EACpB,CAAC;AAED,MAAI,eAAe;AACnB,MAAI,SAAS,cAAc,QAAQ,cAAc;AAC/C,mBAAeD,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAA,EACrD,WAAW,SAAS,YAAY;AAC9B,mBAAeA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAA,EACrD;AAGA,QAAM,YAAYA;AAAA,IAChB;AAAA,IACA,CAAC,YAAY,aAAa,GAAG,aAAa,EAAE;AAAA,IAC5C,CAAC,GAAG,GAAG,CAAC;AAAA,IACR,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AACA,QAAM,YAAYA;AAAA,IAChB;AAAA,IACA,CAAC,YAAY,aAAa,GAAG,aAAa,EAAE;AAAA,IAC5C,CAAC,GAAG,GAAG,CAAC;AAAA,IACR,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAGA,QAAM,eAAeA;AAAA,IACnB;AAAA,IACA,CAAC,aAAa,GAAG,aAAa,IAAI,UAAU,GAAG,OAAO;AAAA,IACtD,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACX,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AACA,QAAM,YAAY,KAAK;AAAA,IACrBA,cAAY,OAAO,CAAC,YAAY,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG;AAAA,MACjD,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AAGA,QAAM,iBAAiB;AACvB,QAAM,gBAAgB,QAAQ;AAE9B,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAoB;AAAA,QACpB,YAAYC;AAAA,QACZ,OAAe;AAAA,QACf,UAAU;AAAA,MACZ;AAAA,MAGA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,iBACE;AAAA,cACF,gBAAgB;AAAA,YAClB;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,eAAe;AAAA,YACjB;AAAA,YACD;AAAA;AAAA,QAED;AAAA,QAGC,QAAQ,IAAI,CAAC,KAAK,MAAM;AACvB,gBAAM,QACJ,IAAI,OAAO,gBACP,YACA,IAAI,OAAO,SACT,YACA;AACR,iBACE,gBAAAC;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,KAAK;AAAA,gBACL,MAAM,aAAa,KAAK,YAAY;AAAA,gBACpC,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,YAAY,oBAAoB,OAAO,QAAQ,IAAI;AAAA,gBACnD,QAAQ,8BAA8B,OAAO,QAAQ,GAAG;AAAA,gBACxD,SAAS;AAAA,gBACT,YAAY;AAAA,cACd;AAAA,cAEA;AAAA,gCAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,SAAS;AAAA,sBACT,YAAY;AAAA,sBACZ,gBAAgB;AAAA,sBAChB,cAAc;AAAA,oBAChB;AAAA,oBAEA;AAAA,sCAAAD,MAAC,SAAI,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,SAAS,KAAK,GACxD,cAAI,OACP;AAAA,sBACA,gBAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,OAAO;AAAA,4BACL,UAAU;AAAA,4BACV,YAAYG;AAAA,4BACZ,SAAS;AAAA,4BACT,SAAS;AAAA,4BACT,cAAc;AAAA,4BACd,YAAY;AAAA,0BACd;AAAA,0BAEC,cAAI;AAAA;AAAA,sBACP;AAAA;AAAA;AAAA,gBACF;AAAA,gBACC,MAAM,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACzC,gBAAAH,MAAC,mBAAwB,SAAS,OAAS,IAAI,KAAM,KAAM,OAArC,CAA0C,CACjE;AAAA;AAAA;AAAA,YAxCI,IAAI;AAAA,UAyCX;AAAA,QAEJ,CAAC;AAAA,QAGD,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,KAAK,SAAS;AAAA,cACpB,KAAK,KAAK,SAAS;AAAA,cACnB,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAoB;AAAA,cACpB,QAAQ,aAAa,WAAW;AAAA,cAChC,WAAW,UAAU,IAAI,cAAc,aAAa,YAAY;AAAA,cAChE,iBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAK;AAAA,cACL,YAAY;AAAA,YACd;AAAA,YAEA;AAAA,8BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,gBAAgB;AAAA,kBAClB;AAAA,kBAEA;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,YAAYG;AAAA,0BACZ,UAAU;AAAA,0BACV,SAAS;AAAA,wBACX;AAAA,wBACD;AAAA;AAAA,oBAED;AAAA,oBACA,gBAAAH;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,OAAO;AAAA,0BACP,QAAQ;AAAA,0BACR,cAAc;AAAA,0BACd,YAAY;AAAA,wBACd;AAAA;AAAA,oBACF;AAAA;AAAA;AAAA,cACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,aAAa;AAAA,kBACb,UAAU,SAAS;AAAA,kBACnB,UAAU;AAAA,kBACV,YAAYE;AAAA,kBACZ,YAAY;AAAA,kBACZ,eAAc;AAAA,kBAEb;AAAA;AAAA,cACH;AAAA,cACA,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,gBAAgB;AAAA,oBAChB,WAAW;AAAA,kBACb;AAAA,kBAEA;AAAA,oCAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,YAAYE;AAAA,0BACZ,UAAU;AAAA,0BACV,SAAS;AAAA,0BACT,OAAO;AAAA,wBACT;AAAA,wBACD;AAAA;AAAA,0BACK,OAAO,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA;AAAA;AAAA,oBACvC;AAAA,oBACA,gBAAAH;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,SAAS;AAAA,wBACX;AAAA,wBACD;AAAA;AAAA,oBAED;AAAA;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QAGC,gBAAgB,KACf,MAAM,KAAK,EAAE,QAAQ,eAAe,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM;AACnD,gBAAM,QAAQ,aAAa,IAAI,CAAC,IAAI,KAAK,KAAK;AAC9C,gBAAM,OAAO,KAAK,aAAa,IAAI,EAAE,IAAI;AACzC,gBAAM,QAAQ,aAAa,IAAI,CAAC,IAAI,KAAK;AACzC,gBAAM,QAAQ,aAAa,IAAI,CAAC;AAChC,gBAAM,OAAO,IAAI,QAAQ;AACzB,gBAAM,YAAY,aAAa,IAAI,CAAC;AACpC,gBAAM,QACJ,YAAY,OACR,cACA,YAAY,OACF,UACA;AAChB,gBAAM,WAAW;AACjB,gBAAM,IAAI,KAAK,IAAI,gBAAgB,UAAU,CAAC;AAC9C,gBAAM,QAAQ,KAAK,IAAI,MAAM,IAAI;AACjC,gBAAM,KAAK,WAAW,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,QAAQ,QAAQ;AACnE,gBAAM,KACJ,WAAW,IACX,KAAK,IAAI,KAAK,IAAI,OAAO;AAAA,UAEzB,IAAI,IAAI;AACV,gBAAM,UAAUM,cAAY,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACrD,gBAAM,MAAM,aAAa,IAAI,EAAE,IAAI,MAAM,gBAAgB;AACzD,iBACE,gBAAAN;AAAA,YAAC;AAAA;AAAA,cAEC,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,MAAM,KAAK,OAAO;AAAA,gBAClB,KAAK,KAAK,OAAO;AAAA,gBACjB,OAAO;AAAA,gBACP,QAAQ,OAAO;AAAA,gBACf,YAAY;AAAA,gBACZ,cAAc;AAAA,gBACd;AAAA,gBACA,WAAW,UAAU,GAAG;AAAA,gBACxB,YAAY;AAAA,cACd;AAAA;AAAA,YAZK;AAAA,UAaP;AAAA,QAEJ,CAAC;AAAA;AAAA;AAAA,EACL;AAEJ;;;AC9ZA;AAAA,EACE,gBAAAQ;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AA6KC,gBAAAC,OAGA,QAAAC,cAHA;AA5JR,IAAMC,gBACJ;AAEF,IAAM,OAAOC,QAAO,OAAO,MAAM,GAAG,KAAK,CAAC;AAI1C,IAAM,UAAU;AAAA,EACd,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAChB;AAIA,IAAM,SAAS;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,SAAS,kBAAkB;AAAA,EAChC,cAAc,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EAC/B,eAAe,EAAE,GAAG,OAAO,IAAI,GAAG,OAAO,GAAG;AAAA,EAC5C,aAAa;AAAA,EACb,eAAe;AAAA,EACf,cAAc;AAAA,EACd,cAAc;AAAA,EACd,SAAiB;AAAA,EACjB,aAAqB;AAAA,EACrB,QAAQ;AAAA,EACR;AACF,GAA2B;AACzB,QAAM,QAAQC,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAG/B,QAAM,mBAAmB;AACzB,QAAM,iBAAiB;AACvB,QAAM,mBAAmB,aAAa;AACtC,QAAM,eAAe,aAAa;AAClC,QAAM,cAAc,aAAa;AAGjC,QAAM,QAAQC,cAAY,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAChD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,aAAaA,cAAY,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG;AAAA,IACxD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,QAAQ;AAAA,EACV,CAAC;AAGD,QAAM,UAAUA;AAAA,IACd;AAAA,IACA,CAAC,kBAAkB,cAAc;AAAA,IACjC,CAAC,GAAG,CAAC;AAAA,IACL;AAAA,MACE,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,QAAQA;AAAA,IACZ;AAAA,IACA,CAAC,aAAa,GAAG,aAAa,EAAE;AAAA,IAChC,CAAC,GAAG,CAAC;AAAA,IACL;AAAA,MACE,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,QAAQ;AAAA,IACV;AAAA,EACF;AACA,QAAM,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI;AAErC,QAAM,QAAQ,KAAK,YAAY,GAAG,aAAa,GAAG,OAAO;AACzD,QAAM,QAAQ,KAAK,YAAY,GAAG,aAAa,GAAG,OAAO;AAEzD,QAAM,MAAM,KAAK,IAAI,UAAU,KAAK,EAAE,IAAI;AAC1C,QAAM,UAAU,KAAK,OAAO,WAAW,GAAG,KAAK;AAC/C,QAAM,UAAU,KAAK,QAAQ,KAAK,WAAW,GAAG,KAAK;AAGrD,QAAM,cAAcC,SAAO;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,IACjD,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,WAAWD,cAAY,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AAAA,IACnE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,cAAc,SAAS,aAAa,WAAW;AACrD,QAAM,mBAAmB,SAAS,aAAa,WAAW;AAG1D,QAAM,SAASA,cAAY,OAAO,CAAC,YAAY,aAAa,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG;AAAA,IACxE,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,gBAAgBA;AAAA,IACpB;AAAA,IACA,CAAC,YAAY,aAAa,EAAE;AAAA,IAC5B,CAAC,KAAK,CAAC;AAAA,IACP,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAGA,QAAM,gBAAgB,OAAO,QAAQ,MAAM,OAAO,SAAS,OAAO;AAClE,QAAM,cAAcA;AAAA,IAClB;AAAA,IACA,CAAC,kBAAkB,mBAAmB,EAAE;AAAA,IACxC,CAAC,GAAG,CAAC;AAAA,IACL,EAAE,iBAAiB,SAAS,kBAAkB,SAAS,QAAQ,KAAK;AAAA,EACtE;AACA,QAAM,aAAaA;AAAA,IACjB;AAAA,IACA,CAAC,kBAAkB,mBAAmB,GAAG,aAAa,cAAc,EAAE;AAAA,IACtE,CAAC,GAAG,GAAG,GAAG,GAAG;AAAA,IACb,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAEA,SACE,gBAAAL;AAAA,IAACO;AAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA,YAAYN;AAAA,MACd;AAAA,MAGA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,QAAQ;AAAA,cACd,KAAK,QAAQ;AAAA,cACb,OAAO,QAAQ;AAAA,cACf,QAAQ,QAAQ;AAAA,cAChB,cAAc;AAAA,cACd,UAAU;AAAA,cACV,YAAoB;AAAA,cACpB,QAAQ,aAAqB,WAAW;AAAA,cACxC,SAAS;AAAA,cACT,WAAW,SAAS,UAAU;AAAA,cAC9B,iBAAiB;AAAA,cACjB,YAAY;AAAA,YACd;AAAA,YAEA;AAAA,8BAAAD,MAAC,iBAAc,cAAc,QAAQ,cAAc;AAAA,cAGnD,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,KAAK,QAAQ;AAAA,oBACb,QAAQ;AAAA,oBACR,YAAoB;AAAA,oBACpB,SAAS;AAAA,oBACT,eAAe;AAAA,oBACf,YAAY;AAAA,oBACZ,YAAY;AAAA,oBACZ,KAAK;AAAA,kBACP;AAAA,kBAEA;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,OAAe;AAAA,0BACf,eAAe;AAAA,wBACjB;AAAA,wBACD;AAAA;AAAA,oBAED;AAAA,oBACA,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,YAAY;AAAA,0BACZ,OAAe;AAAA,0BACf,eAAe;AAAA,0BACf,UAAU;AAAA,0BACV,WAAW;AAAA,0BACX,YAAY;AAAA,wBACd;AAAA,wBACD;AAAA;AAAA,oBAED;AAAA,oBACA,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO;AAAA,0BACL,UAAU;AAAA,0BACV,OAAe;AAAA,0BACf,UAAU;AAAA,0BACV,WAAW;AAAA,0BACX,YAAY;AAAA,wBACd;AAAA,wBACD;AAAA;AAAA,oBAGD;AAAA;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QAIA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,OAAO,KAAK,OAAO,QAAQ;AAAA,cACjC,KAAK,OAAO,KAAK,OAAO,SAAS;AAAA,cACjC,OAAO,OAAO;AAAA,cACd,QAAQ,OAAO;AAAA,cACf,cAAc;AAAA,cACd,YAAoB;AAAA,cACpB,OAAe;AAAA,cACf,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,WAAW,SAAS,WAAW;AAAA,cAC/B,SAAS;AAAA,cACT,YAAY;AAAA,YACd;AAAA,YAEA,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,aAAa;AAAA,gBACb,UAAU,OAAO,QAAQ;AAAA,gBACzB,YAAYE;AAAA,gBACZ,YAAY;AAAA,gBACZ,OAAO,EAAE,OAAe,QAAQ;AAAA,gBAE/B,aAAG,WAAW;AAAA;AAAA,YACjB;AAAA;AAAA,QACF;AAAA,QAGC,gBAAgB,KACf,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,OAAO,KAAK;AAAA,cAClB,KAAK,OAAO,KAAK;AAAA,cACjB,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,eAAe;AAAA,YACjB;AAAA,YAEA,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,GAAG;AAAA,gBACH,MAAK;AAAA,gBACL,QAAQ;AAAA,gBACR,aAAa;AAAA,gBACb,SAAS;AAAA;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QAID,SAAS,oBACR,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,OAAO,KAAK,OAAO,QAAQ,IAAI;AAAA,cACrC,KAAK,OAAO,KAAK,OAAO,SAAS,IAAI;AAAA,cACrC,OAAO,OAAO,QAAQ;AAAA,cACtB,QAAQ,OAAO,SAAS;AAAA,cACxB,eAAe;AAAA,cACf,SAAS;AAAA,YACX;AAAA,YAEA;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,GAAG;AAAA,kBACH,GAAG;AAAA,kBACH,OAAO,OAAO,QAAQ;AAAA,kBACtB,QAAQ,OAAO,SAAS;AAAA,kBACxB,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,MAAK;AAAA,kBACL,QAAQ;AAAA,kBACR,eAAe;AAAA,kBACf,aAAa;AAAA,kBACb,iBAAiB,GAAG,YAAY,IAAI,YAAY;AAAA,kBAChD,mBAAmB,IAAI,eAAe;AAAA;AAAA,cACxC;AAAA,cAEC;AAAA,gBACC,CAAC,GAAG,CAAC;AAAA,gBACL,CAAC,OAAO,QAAQ,IAAI,CAAC;AAAA,gBACrB,CAAC,GAAG,OAAO,SAAS,EAAE;AAAA,gBACtB,CAAC,OAAO,QAAQ,IAAI,OAAO,SAAS,EAAE;AAAA,cACxC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,MACf,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC;AAAA,kBACA;AAAA,kBACA,GAAG;AAAA,kBACH,MAAM;AAAA,kBACN,SAAS;AAAA;AAAA,gBALJ;AAAA,cAMP,CACD;AAAA;AAAA;AAAA,QACH;AAAA,QAID,SAAS,gBACR,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,MAAM;AAAA;AAAA,QACR;AAAA,QAID,SAAS,oBACR,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,WAAW,+BAA+B,gBAAgB;AAAA,cAC1D,iBAAiB;AAAA,cACjB,QAAQ;AAAA,cACR,QAAQ,yBAAiC,OAAO;AAAA,cAChD,YAAY;AAAA,YACd;AAAA,YAEA,0BAAAA,MAACS,YAAA,EAAU;AAAA;AAAA,QACb;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAMA,SAAS,cAAc,EAAE,aAAa,GAA6B;AACjE,SACE,gBAAAR;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,aAAa;AAAA,QACb,cAAc;AAAA,QACd,YAAoB;AAAA,QACpB,cAAc,aAAqB,WAAW;AAAA,MAChD;AAAA,MAEA;AAAA,wBAAAD,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,EAAE,GACnC,WAAS,SAAiB,YAAoB,SAAS,EAAE,IAAI,CAAC,MAC7D,gBAAAA;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA;AAAA,UAPK;AAAA,QAQP,CACD,GACH;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,cAAc;AAAA,cACd,YAAoB;AAAA,cACpB,QAAQ,aAAqB,WAAW;AAAA,cACxC,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,aAAa;AAAA,cACb,OAAe;AAAA,cACf,UAAU;AAAA,cACV,YACE;AAAA,YACJ;AAAA,YACD;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,QAAQ;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AAED,QAAM,QAAQM;AAAA,IACZ;AAAA,IACA,CAAC,cAAc,eAAe,EAAE;AAAA,IAChC,CAAC,GAAG,CAAC;AAAA,IACL,EAAE,iBAAiB,SAAS,kBAAkB,SAAS,QAAQ,KAAK;AAAA,EACtE;AACA,QAAM,QAAQA;AAAA,IACZ;AAAA,IACA,CAAC,eAAe,GAAG,eAAe,EAAE;AAAA,IACpC,CAAC,GAAG,CAAC;AAAA,IACL,EAAE,iBAAiB,SAAS,kBAAkB,SAAS,QAAQ,KAAK;AAAA,EACtE;AACA,QAAM,SAASA;AAAA,IACb;AAAA,IACA,CAAC,aAAa,cAAc,EAAE;AAAA,IAC9B,CAAC,GAAG,GAAG;AAAA,IACP,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ;AAAA,EACxD;AAEA,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM,OAAO,KAAK,OAAO,QAAQ,IAAI;AAAA,QACrC,KAAK,OAAO,KAAK;AAAA,QACjB,OAAO;AAAA,QACP,SAAS;AAAA,QACT,cAAc;AAAA,QACd,YAAoB;AAAA,QACpB,QAAQ,aAAa,MAAM;AAAA,QAC3B,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,SAAS;AAAA,QACT,YAAYC;AAAA,MACd;AAAA,MAEA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb,UAAU;AAAA,YACV,YAAYE;AAAA,YACZ,YAAY;AAAA,YACZ,eAAc;AAAA,YACd,OAAO;AAAA,cACL,SAAS;AAAA,cACT,WAAW,eAAe,IAAI,SAAS,EAAE;AAAA,cACzC,OAAe;AAAA,cACf,cAAc;AAAA,YAChB;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb,UAAU;AAAA,YACV,UAAU;AAAA,YACV,YAAYE;AAAA,YACZ,OAAO;AAAA,cACL,SAAS;AAAA,cACT,WAAW,eAAe,IAAI,SAAS,EAAE;AAAA,cACzC,OAAe;AAAA,cACf,YAAY;AAAA,YACd;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QAEA,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,YAAoB;AAAA,cACpB,YAAY,aAAa,MAAM;AAAA,cAC/B,cAAc,aAAa,MAAM;AAAA,cACjC,WAAW;AAAA,YACb;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAASS,aAAY;AACnB,SACE,gBAAAT,MAAC,SAAI,OAAO,IAAI,QAAQ,IAAI,SAAQ,aAAY,MAAK,QACnD,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,GAAE;AAAA,MACF,MAAc;AAAA,MACd,QAAgB;AAAA,MAChB,aAAa;AAAA,MACb,gBAAe;AAAA;AAAA,EACjB,GACF;AAEJ;AAMA,SAAS,KAAK,GAAW,GAAW,GAAW;AAC7C,SAAO,KAAK,IAAI,KAAK;AACvB;;;ACliBA,SAAS,eAAAU,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAwL3D,gBAAAC,OAkBA,QAAAC,cAlBA;AA7JV,IAAMC,gBACJ;AAEF,IAAM,UAAU;AAChB,IAAM,UAAU;AAOhB,IAAM,YAAwD;AAAA,EAC5D,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK;AAAA,EAC9B,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK;AAAA,EAC9B,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK;AAAA,EAC9B,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK;AAAA;AAAA,EAE9B,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM;AAAA;AAAA,EAE/B,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK;AAAA,EAC9B,EAAE,GAAG,KAAM,GAAG,KAAK,OAAO,KAAK;AAAA,EAC/B,EAAE,GAAG,KAAM,GAAG,KAAK,OAAO,KAAK;AAAA,EAC/B,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK;AAChC;AAEA,SAASC,aACP,GACA,IACA,IACA,IACA,IACA;AACA,QAAM,IAAI,IAAI;AACd,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,IAAI;AACf,QAAM,MAAM,KAAK;AACjB,QAAM,MAAM,KAAK;AACjB,SAAO;AAAA,IACL,GAAG,MAAM,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,GAAG;AAAA,IACjE,GAAG,MAAM,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,GAAG;AAAA,EACnE;AACF;AAEA,SAASC,WAAU,GAAW;AAC5B,SAAO,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI;AAC7D;AAEA,SAASC,aACP,GACA,GACA,OACA;AACA,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,MAAM,KAAK,MAAM,IAAI,EAAE,KAAK;AAClC,QAAM,OAAO,QAAQ,MAAM,IAAI,IAAI;AACnC,QAAM,KAAM,CAAC,KAAK,OAAQ,MAAM,QAAQ;AACxC,QAAM,KAAM,KAAK,OAAQ,MAAM,QAAQ;AACvC,SAAO;AAAA,IACL,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG;AAAA,IAC7C,EAAE,GAAG,EAAE,IAAK,IAAI,KAAM,IAAI,IAAI,GAAG,EAAE,IAAK,IAAI,KAAM,IAAI,GAAG;AAAA,EAC3D;AACF;AAQA,SAAS,gBAAgB,UAAkB;AACzC,QAAM,WAAW,UAAU,SAAS;AACpC,QAAM,oBAAoB;AAC1B,QAAM,eAAe,WAAW;AAChC,QAAM,iBAAiB,KAAK;AAAA,IAC1B;AAAA,IACA,KAAK,IAAI,cAAc,KAAK,MAAM,WAAW,YAAY,CAAC;AAAA,EAC5D;AAEA,QAAM,QAAoD,CAAC;AAC3D,MAAI,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE;AACjD,MAAI,UAAU,UAAU,CAAC,EAAE;AAE3B,WAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,UAAM,SAAS,KAAK,IAAI,WAAW,GAAG,KAAK,MAAM,IAAI,iBAAiB,CAAC;AACvE,UAAM,SAAU,IAAI,oBAAqB;AACzC,UAAM,IAAI,UAAU,MAAM;AAC1B,UAAM,IAAI,UAAU,SAAS,CAAC;AAC9B,UAAM,CAAC,IAAI,EAAE,IAAIA,aAAY,GAAG,GAAG,MAAM;AACzC,UAAM,IAAID,WAAU,MAAM;AAC1B,UAAMD,aAAY,GAAG,GAAG,IAAI,IAAI,CAAC;AACjC,cAAU,EAAE,SAAS,EAAE;AACvB,UAAM,KAAK,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,OAAO,QAAQ,CAAC;AAAA,EACnD;AAEA,SAAO,EAAE,KAAK,SAAS,MAAM;AAC/B;AAEO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAqB;AAAA,EACrB,aAAqB;AAAA,EACrB,aAAqB;AAAA,EACrB,eAAuB;AAAA,EACvB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR;AACF,GAA8B;AAC5B,QAAM,QAAQG,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAE/B,QAAM,aAAa,KAAK,IAAI,GAAG,QAAQ,UAAU;AACjD,QAAM,WAAW,KAAK,IAAI,GAAG,aAAa,aAAa;AAEvD,QAAM,EAAE,KAAK,SAAS,MAAM,IAAI,gBAAgB,QAAQ;AAGxD,QAAM,cAAc,UAAU,OAAO;AACrC,QAAM,cAAcC,SAAO;AAAA,IACzB,OAAO;AAAA,IACP;AAAA,IACA,QAAQ,EAAE,SAAS,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,EACnD,CAAC;AACD,QAAM,cAAcC,cAAY,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;AAGrE,QAAM,YACJ,MAAM,WAAW,IACb,KACA,MACG,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,EAC1E,KAAK,GAAG;AAGjB,QAAM,eAAeA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACtD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,SACE,gBAAAR;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,YAAYC;AAAA,QACZ,SAAS;AAAA,MACX;AAAA,MAGA;AAAA,wBAAAF,MAAC,SAAI,OAAO,EAAE,UAAU,YAAY,OAAO,EAAE,GAC1C,sBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY,2BAA2B,UAAU,QAAQ,UAAU,SAAiB,EAAE;AAAA,YACxF;AAAA;AAAA,QACF,GAEJ;AAAA,QAGA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAS,OAAO,OAAO,IAAI,OAAO;AAAA,YAClC,OAAO,EAAE,UAAU,YAAY,OAAO,GAAG,eAAe,OAAO;AAAA,YAE/D;AAAA,8BAAAA,OAAC,UACC;AAAA,gCAAAA,OAAC,UAAK,IAAG,qBAAoB,WAAU,kBACrC;AAAA,kCAAAD,MAAC,UAAK,OAAO,SAAS,QAAQ,SAAS,MAAK,SAAQ;AAAA,kBACnD,aACC,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,GAAG;AAAA,sBACH,QAAO;AAAA,sBACP,aAAa;AAAA,sBACb,eAAc;AAAA,sBACd,gBAAe;AAAA,sBACf,MAAK;AAAA;AAAA,kBACP;AAAA,mBAEJ;AAAA,gBACA,gBAAAC;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,GAAE;AAAA,oBACF,GAAE;AAAA,oBACF,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,cAAa;AAAA,oBAEb;AAAA,sCAAAD,MAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAM,cAAc;AAAA,sBACjD,gBAAAA,MAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,0BAAyB;AAAA,sBAC3D,gBAAAA,MAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,MAAK,oBAAmB;AAAA;AAAA;AAAA,gBACrE;AAAA,iBACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,MAAK;AAAA;AAAA,cACP;AAAA;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM,IAAI,IAAI,YAAY;AAAA,cAC1B,KAAK,IAAI,IAAI,YAAY;AAAA,cACzB,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,WAAW,SAAS,WAAW;AAAA,cAC/B,iBAAiB;AAAA,cACjB,eAAe;AAAA,cACf,QAAQ;AAAA,YACV;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC/PA,SAAS,eAAAU,eAAa,UAAAC,UAAQ,mBAAAC,mBAAiB,kBAAAC,wBAAsB;AAwH/D,gBAAAC,OA8CI,QAAAC,cA9CJ;AA3FN,IAAMC,gBACJ;AAEF,IAAMC,gBAAgC;AAAA,EACpC,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AACV;AAEA,IAAMC,cAA8B;AAAA,EAClC,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,SAAS,wBAAwB;AAAA,EACtC,OAAOD;AAAA,EACP,KAAKC;AAAA,EACL,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,cAAsB;AAAA,EACtB,cAAsB;AAAA,EACtB,cAAsB;AAAA,EACtB,iBAAyB;AAAA,EACzB,mBAA2B;AAAA,EAC3B,SAAiB;AAAA,EACjB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AACF,GAAiC;AAC/B,QAAM,QAAQC,kBAAgB,IAAI;AAClC,QAAM,EAAE,IAAI,IAAIC,iBAAe;AAK/B,QAAM,QAAQC,SAAO;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,WAAW,IAAI;AAAA,EACnD,CAAC;AAED,QAAM,OAAOC,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;AAC5D,QAAM,MAAMA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AACzD,QAAM,QAAQA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC;AAC/D,QAAM,SAASA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC;AAClE,QAAM,SAASA,cAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,cAAc,CAAC;AAI5E,QAAM,cAAcA,cAAY,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACvD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,gBAAgBA,cAAY,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACzD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAID,QAAM,iBAAiBA,cAAY,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IAC1D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,eAAeA,cAAY,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AAAA,IAC3D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AACD,QAAM,kBAAkBA,cAAY,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AAAA,IAC7D,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,gBAAgB,2BAA2B,WAAW,KAAK,WAAW,KAAK,WAAW;AAE5F,SACE,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAYC;AAAA,MACd;AAAA,MAGA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,OAAO;AAAA,cACP,SAAS;AAAA,cACT,YAAoB;AAAA,cACpB,cAAc;AAAA,cACd,QAAQ,aAAqB,MAAM;AAAA,cACnC,SAAS;AAAA,cACT,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAK;AAAA,YACP;AAAA,YAGA;AAAA,8BAAAA,OAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,GAC3D;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,cAAc;AAAA,sBACd,YAAY;AAAA,oBACd;AAAA;AAAA,gBACF;AAAA,gBACA,gBAAAC,OAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC7D;AAAA,kCAAAD;AAAA,oBAAC;AAAA;AAAA,sBACC,aAAa;AAAA,sBACb,UAAU;AAAA,sBACV,YAAYE;AAAA,sBACZ,YAAY;AAAA,sBACZ,eAAc;AAAA,sBACd,OAAO,EAAE,OAAe,GAAG;AAAA,sBAE1B;AAAA;AAAA,kBACH;AAAA,kBACA,gBAAAF,MAAC,SAAI,OAAO,EAAE,UAAU,IAAI,OAAe,WAAW,GAAG,oBAAM;AAAA,mBACjE;AAAA,iBACF;AAAA,cAGA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,aAAa;AAAA,kBACb,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,YAAYE;AAAA,kBACZ,OAAO,EAAE,YAAY,KAAK,OAAe,WAAW;AAAA,kBAEnD;AAAA;AAAA,cACH;AAAA,cAKA,gBAAAF;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cAGA,gBAAAA,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,GAAG,GACpC,WAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACd,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAoB;AAAA,kBACtB;AAAA;AAAA,gBANK;AAAA,cAOP,CACD,GACH;AAAA;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,QAAQ,aAAqB,WAAW;AAAA,cACxC,UAAU;AAAA,YACZ;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,YAAoB;AAAA,cACpB,gBAAgB;AAAA,cAChB,sBAAsB;AAAA,cACtB,cAAc,aAAqB,WAAW;AAAA,cAC9C,SAAS;AAAA,cACT,WAAW,cAAc,YAAY;AAAA,YACvC;AAAA,YAEA;AAAA,8BAAAA,OAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,GAC3D;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,cAAc;AAAA,sBACd,YAAoB;AAAA,oBACtB;AAAA;AAAA,gBACF;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO;AAAA,sBACL,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,eAAe;AAAA,oBACjB;AAAA,oBACD;AAAA;AAAA,gBAED;AAAA,iBACF;AAAA,cACA,gBAAAA,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,GAAG,GACpC,WAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACjB,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAoB;AAAA,kBACtB;AAAA;AAAA,gBANK;AAAA,cAOP,CACD,GACH;AAAA;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,KAAK;AAAA,cACL,YAAoB;AAAA,cACpB,gBAAgB;AAAA,cAChB,sBAAsB;AAAA,cACtB,WAAW,aAAqB,WAAW;AAAA,cAC3C,SAAS;AAAA,cACT,WAAW,cAAc,eAAe;AAAA,YAC1C;AAAA,YAEC,WAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACvB,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,YACE,MAAM,IACF,SACQ;AAAA,kBACd,QAAQ,aAAqB,WAAW;AAAA,gBAC1C;AAAA;AAAA,cAVK;AAAA,YAWP,CACD;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;;;AClVA,SAAS,SAAS;AAIlB,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,MAAM,EAAE,OAAO,EAAE,QAAQ,8HAA8H,EAAE,SAAS,sEAAsE;AAAA,EACxO,OAAO,EAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,gCAAgC;AAAA,EAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAI,EAAE,SAAS,EAAE,SAAS,mDAAmD;AAAA,EAClH,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,SAAS,EAAE,SAAS,kDAAkD;AAAA,EAClH,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,2BAA2B;AAAA,EACrF,YAAY,EAAE,OAAO,EAAE,QAAQ,uBAAuB,EAAE,SAAS,0DAA0D;AAAA,EAC3H,YAAY,EAAE,OAAO,EAAE,QAAQ,2BAA2B,EAAE,SAAS,oCAAoC;AAAA,EACzG,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,sCAAuC;AAAA,EAC1G,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,SAAS,uDAAuD;AAAA,EAC7G,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAM,SAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,oBAAoB,gBAAgB,eAAe;AAAA,EAC/D,WAAW,CAAC,oBAAoB;AAAA,EAChC,MAAM;AAAA,EACN,SAAS,CAAC,sBAAsB,YAAY;AAAA,EAC5C,MAAM,CAAC,MAAM,QAAQ,SAAS,SAAS,WAAW,WAAW;AAAA,EAC7D,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C;AAAA,EACA,cAAc,EAAE,OAAO,WAAW,UAAU,IAAI,YAAY,yBAAyB,YAAY,6BAA6B,eAAe,GAAG,mBAAmB,MAAM,OAAO,EAAE;AAAA,EAElL,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QAAW,UAAU;AAAA,QAAI,eAAe;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ,CAAC;AAAA,EAET,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,mBAAmB;AACtF;;;AC/DA,SAAS,KAAAS,UAAS;AAIlB,IAAM,aAAaC,GAAE,OAAO;AAAA,EAC1B,MAAMA,GAAE,KAAK,CAAC,WAAW,OAAO,WAAW,OAAO,CAAC;AAAA,EACnD,MAAMA,GAAE,OAAO;AACjB,CAAC,EAAE,YAAY;AAEf,IAAMC,gBAAeD,GAAE,OAAO;AAAA,EAC5B,OAAOA,GAAE,MAAM,UAAU,EAAE,SAAS,EAAE,SAAS,0FAA0F;AAAA,EACzI,QAAQA,GAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,4CAA4C;AAAA,EACrF,OAAOA,GAAE,OAAO,EAAE,QAAQ,UAAU,EAAE,SAAS,6BAA6B;AAAA,EAC5E,YAAYA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,oBAAoB;AAAA,EACvE,aAAaA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,kCAAkC;AAAA,EACtF,UAAUA,GAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,sBAAsB;AAAA,EAChF,eAAeA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,6DAA6D;AAAA,EAC5H,WAAWA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,yDAAyD;AAAA,EACxH,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,qBAAqB,oBAAoB,YAAY;AAAA,EACjF,WAAW,CAAC,kBAAkB;AAAA,EAC9B,MAAM;AAAA,EACN,SAAS,CAAC,YAAY;AAAA,EACtB,MAAM,CAAC,MAAM,YAAY,OAAO,WAAW,SAAS,WAAW;AAAA,EAC/D,MAAM,CAAC,aAAa,SAAS;AAAA,EAE7B,cAAAD;AAAA,EACA,cAAc,EAAE,QAAQ,KAAK,OAAO,YAAY,YAAY,WAAW,aAAa,WAAW,UAAU,IAAI,eAAe,GAAG,WAAW,GAAG,OAAO,EAAE;AAAA,EAEtJ,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,EAAE,MAAM,WAAW,MAAM,6CAA6C;AAAA,UACtE,EAAE,MAAM,OAAO,MAAM,2BAA2B;AAAA,UAChD,EAAE,MAAM,WAAW,MAAM,oDAA+C;AAAA,UACxE,EAAE,MAAM,OAAO,MAAM,eAAe;AAAA,QACtC;AAAA,QACA,OAAO;AAAA,QAAY,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,cAAc,QAAQ,oBAAoB,UAAU,WAAW,cAAc,kBAAkB;AAAA,IAC3G,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,cAAc;AACjF;;;AC3EA,SAAS,KAAAE,UAAS;AAIlB,IAAMC,gBAAeC,GAAE,OAAO;AAAA,EAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ,OAAO,EAAE,SAAS,+BAA0B;AAAA,EACtE,SAASA,GAAE,OAAO,EAAE,QAAQ,4BAA4B,EAAE,SAAS,wCAAwC;AAAA,EAC3G,SAASA,GAAE,KAAK,CAAC,WAAW,SAAS,QAAQ,SAAS,CAAC,EAAE,QAAQ,SAAS,EAAE,SAAS,wCAAwC;AAAA,EAC7H,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,kDAAkD;AAAA,EAC7F,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,mBAAmB;AAAA,EAC7D,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,cAAc;AAAA,EACxD,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,qBAAqB;AAAA,EAChE,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,0BAA0B,qBAAqB,kBAAkB;AAAA,EACnG,WAAW,CAAC;AAAA,EACZ,MAAM;AAAA,EACN,SAAS,CAAC,YAAY,oBAAoB;AAAA,EAC1C,MAAM,CAAC,MAAM,SAAS,gBAAgB,SAAS,YAAY,OAAO;AAAA,EAClE,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,OAAO,SAAS,SAAS,8BAA8B,SAAS,WAAW,OAAO,EAAE;AAAA,EAEpG,UAAU;AAAA,IACR,EAAE,MAAM,iBAAiB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,SAAS,SAAS,8BAA8B,SAAS,UAAU,EAAE;AAAA,IACpI,EAAE,MAAM,gBAAgB,MAAM,CAAC,eAAe,GAAG,QAAQ,EAAE,OAAO,oBAAoB,SAAS,qCAAqC,SAAS,QAAQ,EAAE;AAAA,IACvJ,EAAE,MAAM,eAAe,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,OAAO,oBAAoB,SAAS,oCAAoC,SAAS,OAAO,EAAE;AAAA,EAChJ;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,aAAa,QAAQ,aAAa,UAAU,WAAW,cAAc,cAAc;AAAA,IAC/F,EAAE,UAAU,aAAa,QAAQ,aAAa,UAAU,WAAW,cAAc,uBAAuB;AAAA,EAC1G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,gBAAgB;AAClF;;;AC3DA,SAAS,KAAAG,UAAS;AAIlB,IAAMC,gBAAeC,GAAE,OAAO;AAAA,EAC5B,KAAKA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,YAAY,EAAE;AAAA,IACpD;AAAA,EACF;AAAA,EACA,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE;AAAA,IAC5C;AAAA,EACF;AACF,CAAC,EAAE,YAAY;AAIR,IAAMC,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,oBAAoB,mBAAmB;AAAA,EAC7F,WAAW,CAAC,eAAe,kBAAkB;AAAA,EAC7C,MAAM;AAAA,EACN,SAAS,CAAC,SAAS,YAAY;AAAA,EAC/B,MAAM,CAAC,MAAM,WAAW,OAAO,cAAc,eAAe,UAAU,MAAM;AAAA,EAC5E,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,KAAK,cAAc,OAAO,EAAE;AAAA,EAE5C,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ,EAAE,KAAK,eAAe,OAAO,EAAE;AAAA,MACvC,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,KAAK,cAAc,OAAO,IAAI;AAAA,MACxC,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ,CAAC;AAAA,EAET,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,iBAAiB;AACpF;;;AC/DA,SAAS,KAAAG,UAAS;AAKlB,IAAMC,gBAAeC,GAAE,OAAO;AAAA,EAC5B,QAAQA,GAAE,KAAK,CAAC,UAAU,OAAO,CAAC,EAAE,QAAQ,QAAQ,EAAE;AAAA,IACpD;AAAA,EACF;AAAA,EACA,YAAYA,GAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,yCAAyC;AAAA,EAClG,aAAaA,GAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,8CAA8C;AAAA,EACnG,YAAYA,GAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,0CAA0C;AAAA,EACnG,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4CAA4C;AACrG,CAAC,EAAE,YAAY;AAIR,IAAMC,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,oBAAoB,oBAAoB,oBAAoB;AAAA,EACxF,WAAW,CAAC;AAAA,EACZ,MAAM;AAAA,EACN,SAAS,CAAC,cAAc,UAAU;AAAA,EAClC,MAAM,CAAC,MAAM,UAAU,UAAU,UAAU,SAAS,QAAQ,QAAQ;AAAA,EACpE,MAAM,CAAC,aAAa,aAAa,WAAW,WAAW;AAAA,EAEvD,cAAAF;AAAA,EACA,cAAc,EAAE,QAAQ,UAAU,YAAoB,SAAS,aAAqB,IAAI,YAAoB,SAAS,OAAO,EAAE;AAAA,EAE9H,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,SAAS;AAAA,MAC7B,QAAQ,EAAE,QAAQ,UAAU,YAAoB,SAAS,aAAqB,IAAI,YAAoB,QAAQ;AAAA,MAC9G,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ,EAAE,QAAQ,SAAS,YAAoB,IAAI,aAAqB,SAAS,YAAoB,GAAG;AAAA,MACxG,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,SAAS,cAAc,cAAc;AAAA,IACpG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,SAAS,cAAc,oBAAoB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,eAAe;AACjF;;;ACpEA,SAAS,KAAAG,UAAS;AAIlB,IAAM,oBAAoBC,GAAE,OAAO;AAAA,EACjC,GAAGA,GAAE,OAAO,EAAE,SAAS,qDAAqD;AAAA,EAC5E,GAAGA,GAAE,OAAO,EAAE,SAAS,oDAAoD;AAAA,EAC3E,MAAMA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,uDAAuD;AAAA,EAClH,OAAOA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,wDAAwD;AACjG,CAAC,EAAE,YAAY;AAEf,IAAMC,gBAAeD,GAAE,OAAO;AAAA,EAC5B,QAAQA,GAAE,MAAM,iBAAiB,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE;AAAA,IACnD;AAAA,EACF;AAAA,EACA,OAAOA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,oBAAoB;AAAA,EAClE,MAAMA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,4BAA4B;AAAA,EACxF,YAAYA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,uEAAkE;AAAA,EACrH,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,+CAA+C;AACxG,CAAC,EAAE,YAAY;AAIR,IAAME,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,qBAAqB,uBAAuB;AAAA,EAClG,WAAW,CAAC,eAAe,cAAc;AAAA,EACzC,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,UAAU,WAAW,SAAS,SAAS;AAAA,EACpD,MAAM,CAAC,aAAa,SAAS;AAAA,EAE7B,cAAAD;AAAA,EACA,cAAc,EAAE,OAAO,WAAW,MAAM,IAAI,YAAY,WAAW,OAAO,EAAE;AAAA,EAE5E,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,QAAQ;AAAA,UACN,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,GAAG;AAAA,UAC3B,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK;AAAA,UACxC,EAAE,GAAG,MAAM,GAAG,KAAK,MAAM,GAAG;AAAA,QAC9B;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ;AAAA,QACN,QAAQ;AAAA,UACN,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,GAAG;AAAA,UAC3B,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK;AAAA,UACxC,EAAE,GAAG,MAAM,GAAG,KAAK,MAAM,EAAE;AAAA,QAC7B;AAAA,QACA,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,SAAS,QAAQ,WAAW,UAAU,WAAW,cAAc,cAAc;AAAA,IACzF,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAU,WAAW,cAAc,oBAAoB;AAAA,EACtG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,kBAAkB;AACpF;;;ACzFA,SAAS,KAAAE,UAAS;AAKlB,IAAM,iBAAiBC,GAAE,OAAO;AAAA,EAC9B,GAAGA,GAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,EAChD,GAAGA,GAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,EAChD,MAAMA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,iDAAiD;AAAA,EAC5G,OAAOA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,+DAA+D;AAAA,EACtG,OAAOA,GAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,0GAA0G;AAC1J,CAAC,EAAE,YAAY;AAEf,IAAMC,gBAAeD,GAAE,OAAO;AAAA,EAC5B,WAAWA,GAAE,MAAM,cAAc,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE;AAAA,IACnD;AAAA,EACF;AAAA,EACA,aAAaA,GAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,oBAAoB;AAAA,EAC9E,YAAYA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,4BAA4B;AAAA,EAC9F,iBAAiBA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,0DAA0D;AAAA,EACjI,YAAYA,GAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,mBAAmB;AAAA,EACvE,aAAaA,GAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,SAAS,qEAAqE;AAAA,EACrH,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,kBAAkB,oBAAoB,uBAAuB;AAAA,EAC/F,WAAW,CAAC,oBAAoB,cAAc;AAAA,EAC9C,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,UAAU,WAAW,QAAQ,QAAQ,UAAU,OAAO;AAAA,EACnE,MAAM,CAAC,aAAa,WAAW,WAAW;AAAA,EAE1C,cAAAD;AAAA,EACA,cAAc,EAAE,aAAqB,SAAS,YAAY,IAAI,iBAAiB,IAAI,YAAoB,IAAI,aAAa,MAAM,OAAO,EAAE;AAAA,EAEvI,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,WAAW;AAAA,UACT,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,UACjB,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM,OAAO,WAAW;AAAA,UACjD,EAAE,GAAG,KAAK,GAAG,KAAK,MAAM,EAAE;AAAA,UAC1B,EAAE,GAAG,MAAM,GAAG,KAAK,OAAO,MAAM,OAAO,UAAU;AAAA,QACnD;AAAA,QACA,aAAa;AAAA,MACf;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ;AAAA,QACN,WAAW;AAAA,UACT,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,UACjB,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,UACjB,EAAE,GAAG,MAAM,GAAG,IAAI;AAAA,QACpB;AAAA,QACA,aAAa;AAAA,QACb,YAAY;AAAA,MACd;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,WAAW,UAAkB,SAAS,cAAc,cAAc;AAAA,IACrG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,IAAI,cAAc,oBAAoB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,mBAAmB;AACtF;;;AC9FA,SAAS,KAAAE,UAAS;AAIlB,IAAM,aAAaC,GAAE,OAAO;AAAA,EAC1B,KAAKA,GAAE,OAAO,EAAE,SAAS,uBAAuB;AAAA,EAChD,MAAMA,GAAE,OAAO,EAAE,SAAS,wBAAwB;AAAA,EAClD,OAAOA,GAAE,OAAO,EAAE,SAAS,kBAAkB;AAAA,EAC7C,QAAQA,GAAE,OAAO,EAAE,SAAS,mBAAmB;AACjD,CAAC,EAAE,YAAY;AAEf,IAAMC,gBAAeD,GAAE,OAAO;AAAA,EAC5B,MAAM,WAAW,SAAS,EAAE,SAAS,gGAAwF;AAAA,EAC7H,IAAI,WAAW,SAAS,EAAE,SAAS,0FAAqF;AAAA,EACxH,kBAAkBA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,6BAA6B;AAAA,EAC9F,gBAAgBA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,qDAAqD;AAAA,EACnH,SAASA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,wCAAwC;AAAA,EACvG,YAAYA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,iDAAiD;AAAA,EACpG,WAAWA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,wBAAwB;AAAA,EAC1E,WAAWA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,mBAAmB;AAAA,EACrE,YAAYA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,+BAA+B;AAAA,EAClF,aAAaA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,QAAQ,eAAe,EAAE,SAAS,qFAAqF;AAAA,EACxJ,YAAYA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,QAAQ,8BAA8B,EAAE,SAAS,wEAAwE;AAAA,EACzJ,YAAYA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,QAAQ,aAAa,EAAE,SAAS,qFAAqF;AAAA,EACrJ,WAAWA,GAAE,OAAO,EAAE,IAAI,GAAG,EAAE,QAAQ,yJAAoJ,EAAE,SAAS,kEAAkE;AAAA,EACxQ,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,oBAAoB,eAAe,oBAAoB,YAAY;AAAA,EAC/E,WAAW,CAAC,4BAA4B;AAAA,EACxC,MAAM;AAAA,EACN,SAAS,CAAC,YAAY;AAAA,EACtB,MAAM,CAAC,MAAM,SAAS,SAAS,kBAAkB,SAAS,QAAQ;AAAA,EAClE,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAD;AAAA,EACA,cAAc;AAAA,IACZ,kBAAkB;AAAA,IAAI,gBAAgB;AAAA,IAAG,SAAS;AAAA,IAClD,YAAY;AAAA,IAAW,WAAW;AAAA,IAAW,WAAW;AAAA,IAAW,YAAY;AAAA,IAC/E,aAAa;AAAA,IAAiB,YAAY;AAAA,IAC1C,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,aAAa;AAAA,QAAiB,YAAY;AAAA,QAC1C,YAAY;AAAA,QAAe,SAAS;AAAA,MACtC;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW,WAAW;AAAA,MAC7B,QAAQ;AAAA,QACN,aAAa;AAAA,QAAY,YAAY;AAAA,QACrC,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,SAAS;AAAA,QAAI,gBAAgB;AAAA,MAC/B;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,aAAa,QAAQ,WAAW,UAAU,WAAW,cAAc,oBAAoB;AAAA,IACnG,EAAE,UAAU,aAAa,QAAQ,WAAW,UAAU,WAAW,cAAc,uBAAuB;AAAA,IACtG,EAAE,UAAU,cAAc,QAAQ,cAAc,UAAU,WAAW,cAAc,mBAAmB;AAAA,EACxG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,eAAe;AAClF;;;ACjGA,SAAS,KAAAE,UAAS;AAIlB,IAAM,aAAaC,GAAE,OAAO;AAAA,EAC1B,OAAOA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,2GAAsG;AAClJ,CAAC,EAAE,YAAY;AAEf,IAAMC,gBAAeD,GAAE,OAAO;AAAA,EAC5B,OAAOA,GAAE,MAAM,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE;AAAA,IAClD;AAAA,EACF;AAAA,EACA,aAAaA,GAAE,KAAK,CAAC,cAAc,UAAU,CAAC,EAAE,QAAQ,YAAY,EAAE,SAAS,mBAAmB;AAAA,EAClG,aAAaA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,kDAAkD;AAAA,EACtG,eAAeA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,4CAA4C;AAAA,EAClG,YAAYA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,mBAAmB;AAAA,EACtE,WAAWA,GAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,mBAAmB;AAAA,EACrE,cAAcA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,6CAA6C;AAAA,EAClH,OAAOA,GAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,UAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,sBAAsB,oBAAoB,mBAAmB;AAAA,EAC/F,WAAW,CAAC,mBAAmB,kBAAkB;AAAA,EACjD,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,SAAS,YAAY,WAAW,YAAY,SAAS,YAAY;AAAA,EAC9E,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAD;AAAA,EACA,cAAc,EAAE,aAAa,cAAc,aAAa,WAAW,eAAe,WAAW,YAAY,WAAW,WAAW,WAAW,cAAc,IAAI,OAAO,EAAE;AAAA,EAErK,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,OAAO,CAAC,EAAE,OAAO,UAAU,GAAG,EAAE,OAAO,UAAU,GAAG,EAAE,OAAO,SAAS,CAAC;AAAA,QACvE,aAAa;AAAA,QAAc,aAAa;AAAA,MAC1C;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,SAAS;AAAA,MAC7B,QAAQ;AAAA,QACN,OAAO,CAAC,EAAE,OAAO,UAAU,GAAG,EAAE,OAAO,SAAS,GAAG,EAAE,OAAO,cAAc,GAAG,EAAE,OAAO,SAAS,CAAC;AAAA,QAChG,aAAa;AAAA,QAAY,aAAa;AAAA,QAAW,cAAc;AAAA,MACjE;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,IACrG,EAAE,UAAU,iBAAiB,QAAQ,cAAc,UAAU,WAAW,cAAc,mBAAmB;AAAA,IACzG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAU,WAAW,cAAc,oBAAoB;AAAA,IACpG,EAAE,UAAU,aAAa,QAAQ,WAAW,UAAU,WAAW,cAAc,cAAc;AAAA,EAC/F;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,oBAAoB;AACvF;;;AClFA,SAAS,KAAAE,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,KAAK,EAAE,SAAS,mDAAmD;AAAA,EAC3G,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,2DAA2D;AAAA,EAC7G,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,aAAa;AAAA,EACtE,WAAWA,IAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,oDAA+C;AAAA,EAClG,UAAUA,IAAE,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EAAE,QAAQ,QAAQ,EAAE,SAAS,YAAY;AAAA,EAC5H,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,wBAAwB;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,sBAAsB,sBAAsB,oBAAoB;AAAA,EAC5F,WAAW,CAAC,qBAAqB,kBAAkB;AAAA,EACnD,MAAM;AAAA,EACN,SAAS,CAAC,YAAY,oBAAoB;AAAA,EAC1C,MAAM,CAAC,MAAM,SAAS,QAAQ,WAAW,WAAW,cAAc;AAAA,EAClE,MAAM,CAAC,aAAa,WAAW,WAAW;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAqB;AAAA,IACrB,WAAmB;AAAA,IACnB,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,cAAc,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,MAAM,QAAQ,UAAU,2BAA2B,aAAqB,QAAQ,UAAU,UAAU,UAAU,GAAG,EAAE;AAAA,IACxK,EAAE,MAAM,cAAc,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,MAAM,OAAO,aAAqB,SAAS,UAAU,aAAa,UAAU,GAAG,EAAE;AAAA,EACxI;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,QAAQ,gBAAgB,aAAa;AAC5E;;;AC/DA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,OAAOA,IAAE,MAAMA,IAAE,OAAO,EAAE,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ;AAAA,IACtG,EAAE,OAAO,kBAAkB,OAAO,KAAK;AAAA,IACvC,EAAE,OAAO,aAAa,OAAO,KAAK;AAAA,IAClC,EAAE,OAAO,eAAe,OAAO,KAAK;AAAA,IACpC,EAAE,OAAO,YAAY,OAAO,KAAK;AAAA,EACnC,CAAC,EAAE,SAAS,2FAA2F;AAAA,EACvG,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,kFAA6E;AAAA,EAC3I,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,EAAE,SAAS,4BAA4B;AAAA,EAC1E,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,qBAAqB,EAAE,SAAS,kCAAkC;AAAA,EACpG,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,kBAAkB;AAAA,EAC3E,UAAUA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,iDAAiD;AACnG,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,QAAQ;AACvC,MAAI,EAAE,aAAa,EAAE,MAAM,QAAQ;AACjC,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,MAAM,CAAC,WAAW;AAAA,MAClB,SAAS,aAAa,EAAE,SAAS,wBAAwB,EAAE,MAAM,MAAM;AAAA,IACzE,CAAC;AAAA,EACH;AACF,CAAC;AAIM,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,sBAAsB,gBAAgB;AAAA,EAClE,WAAW,CAAC,sBAAsB,oBAAoB;AAAA,EACtD,MAAM;AAAA,EACN,SAAS,CAAC,cAAc,WAAW;AAAA,EACnC,MAAM,CAAC,MAAM,MAAM,aAAa,cAAc,QAAQ,QAAQ,MAAM;AAAA,EACpE,MAAM,CAAC,aAAa,WAAW;AAAA,EAE/B,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,OAAO;AAAA,MACL,EAAE,OAAO,kBAAkB,OAAO,KAAK;AAAA,MACvC,EAAE,OAAO,aAAa,OAAO,KAAK;AAAA,MAClC,EAAE,OAAO,eAAe,OAAO,KAAK;AAAA,MACpC,EAAE,OAAO,YAAY,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAqB;AAAA,EACvB;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,cAAc,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,uBAAuB,MAAM,KAAK,WAAW,GAAG,aAAqB,QAAQ,OAAO,CAAE,EAAE,OAAO,kBAAkB,OAAO,KAAK,GAAG,EAAE,OAAO,aAAa,OAAO,KAAK,GAAG,EAAE,OAAO,eAAe,OAAO,KAAK,GAAG,EAAE,OAAO,YAAY,OAAO,KAAK,CAAE,EAAE,EAAE;AAAA,EACjT;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,aAAa;AAC/E;;;AC/EA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,UAAUA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,0DAAqD,EAAE,SAAS,kCAAkC;AAAA,EAC/I,eAAeA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,mHAA8G,EAAE,SAAS,0EAAqE;AAAA,EAChP,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,KAAK,EAAE,SAAS,kCAAkC;AAAA,EACxF,gBAAgBA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,WAAW,EAAE,SAAS,uCAAuC;AAAA,EACxG,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,6CAA6C;AAAA,EACtG,iBAAiBA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,0BAA0B;AAC5F,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,mBAAmB,mBAAmB,UAAU;AAAA,EAClF,WAAW,CAAC,gBAAgB,wBAAwB;AAAA,EACpD,MAAM;AAAA,EACN,SAAS,CAAC,cAAc,WAAW;AAAA,EACnC,MAAM,CAAC,MAAM,MAAM,QAAQ,aAAa,gBAAgB,WAAW;AAAA,EACnE,MAAM,CAAC,aAAa,WAAW;AAAA,EAE/B,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,eAAe;AAAA,IACf,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,aAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,gBAAgB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,UAAU,4DAAuD,eAAe,qHAAgH,aAAqB,OAAO,EAAE;AAAA,IACrR,EAAE,MAAM,iBAAiB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,UAAU,wCAAwC,eAAe,qHAAsG,WAAW,YAAY,gBAAgB,cAAc,aAAqB,QAAQ,EAAE;AAAA,EACrT;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,eAAe;AAClF;;;AC/DA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,UAAUA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE,SAAS,mCAAmC;AAAA,EAC7F,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,mBAAmB,EAAE,SAAS,8BAA8B;AAAA,EACtG,QAAQA,IAAE,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE,SAAS,0EAA0E;AAAA,EACpI,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,uDAAuD;AAAA,EAClH,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,cAAc;AACzE,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,gBAAgB,oBAAoB;AAAA,EAChE,WAAW,CAAC,gBAAgB;AAAA,EAC5B,MAAM;AAAA,EACN,SAAS,CAAC,aAAa,UAAU;AAAA,EACjC,MAAM,CAAC,MAAM,MAAM,WAAW,UAAU,YAAY,WAAW;AAAA,EAC/D,MAAM,CAAC,WAAW;AAAA,EAElB,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,aAAqB;AAAA,EACvB;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,kBAAkB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,UAAU,MAAM,eAAe,qBAAqB,QAAQ,MAAM,OAAO,GAAG,aAAqB,OAAO,EAAE;AAAA,EACrK;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,iBAAiB;AACnF;;;AC5DA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,MAAMA,IAAE,MAAMA,IAAE,OAAO;AAAA,IACrB,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,IAC9B,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,EAChC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ;AAAA,IACxB,EAAE,MAAM,yBAAyB,OAAO,KAAK;AAAA,IAC7C,EAAE,MAAM,qBAAqB,OAAO,KAAK;AAAA,IACzC,EAAE,MAAM,uBAAuB,OAAO,KAAK;AAAA,IAC3C,EAAE,MAAM,uBAAuB,OAAO,KAAK;AAAA,EAC7C,CAAC,EAAE,SAAS,iCAA4B;AAAA,EACxC,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,EAAE,SAAS,8EAAyE;AAAA,EACnI,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,YAAY,EAAE,SAAS,wBAAwB;AAAA,EACjF,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,cAAc;AACpE,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,kBAAkB,mBAAmB,oBAAoB;AAAA,EACrE,WAAW,CAAC,kBAAkB,oBAAoB;AAAA,EAClD,MAAM;AAAA,EACN,SAAS,CAAC,aAAa,YAAY;AAAA,EACnC,MAAM,CAAC,MAAM,MAAM,SAAS,aAAa,WAAW,WAAW,MAAM;AAAA,EACrE,MAAM,CAAC,aAAa,WAAW;AAAA,EAE/B,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,MACJ,EAAE,MAAM,yBAAyB,OAAO,KAAK;AAAA,MAC7C,EAAE,MAAM,qBAAqB,OAAO,KAAK;AAAA,MACzC,EAAE,MAAM,uBAAuB,OAAO,KAAK;AAAA,MAC3C,EAAE,MAAM,uBAAuB,OAAO,KAAK;AAAA,IAC7C;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,YAAY,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,cAAc,WAAW,KAAK,aAAa,WAAW,MAAM,CAAE,EAAE,MAAM,yBAAyB,OAAO,KAAK,GAAG,EAAE,MAAM,qBAAqB,OAAO,KAAK,GAAG,EAAE,MAAM,uBAAuB,OAAO,KAAK,GAAG,EAAE,MAAM,uBAAuB,OAAO,KAAK,CAAE,EAAE,EAAE;AAAA,EACrT;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,WAAW;AAC9E;;;ACtEA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,yCAAyC;AAAA,EACvF,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE,SAAS,8CAA8C;AAAA,EAC7F,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,qBAAqB,EAAE,SAAS,oCAAoC;AAAA,EACtG,KAAKA,IAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,sBAAsB;AAAA,EAC1D,KAAKA,IAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,SAAS,sEAAsE;AAAA,EAC5G,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,yBAAyB;AAAA,EAC7E,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,gCAAgC;AAC/F,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,QAAQ;AACvC,MAAI,EAAE,OAAO,EAAE,KAAK;AAClB,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS,QAAQ,EAAE,GAAG,+BAA+B,EAAE,GAAG;AAAA,IAC5D,CAAC;AAAA,EACH;AACF,CAAC;AAIM,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,sBAAsB,cAAc;AAAA,EAChE,WAAW,CAAC,cAAc;AAAA,EAC1B,MAAM;AAAA,EACN,SAAS,CAAC,YAAY,WAAW;AAAA,EACjC,MAAM,CAAC,MAAM,MAAM,SAAS,WAAW,SAAS,eAAe,YAAY;AAAA,EAC3E,MAAM,CAAC,WAAW;AAAA,EAElB,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,QAAQ,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,IAAI,MAAM,MAAM,OAAO,uBAAuB,KAAK,GAAG,KAAK,KAAK,aAAa,UAAU,EAAE;AAAA,IAC/I,EAAE,MAAM,cAAc,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,KAAK,MAAM,SAAS,OAAO,sBAAsB,KAAK,GAAG,KAAK,KAAK,aAAa,UAAU,EAAE;AAAA,EAC1J;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,OAAO;AACzE;;;ACxEA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,OAAOA,IAAE,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,sBAAsB,2BAA2B,uBAAuB,kBAAkB,CAAC,EAAE,SAAS,8DAA8D;AAAA,EACrO,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,eAAe,EAAE,SAAS,wBAAwB;AAAA,EACpF,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,8BAA8B;AAAA,EAClF,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,+CAA+C;AACnH,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,iBAAiB,mBAAmB,sBAAsB,UAAU;AAAA,EAChF,WAAW,CAAC,gBAAgB;AAAA,EAC5B,MAAM;AAAA,EACN,SAAS,CAAC,aAAa,YAAY;AAAA,EACnC,MAAM,CAAC,MAAM,MAAM,SAAS,SAAS,SAAS,oBAAoB,SAAS;AAAA,EAC3E,MAAM,CAAC,WAAW;AAAA,EAElB,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,OAAO,CAAC,sBAAsB,2BAA2B,uBAAuB,kBAAkB;AAAA,IAClG,OAAO;AAAA,IACP,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,iBAAiB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,CAAC,sBAAsB,2BAA2B,uBAAuB,kBAAkB,GAAG,OAAO,iBAAiB,aAAa,UAAU,EAAE;AAAA,IAC9M,EAAE,MAAM,gBAAgB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,CAAC,wBAAwB,wBAAwB,yBAAyB,mBAAmB,GAAG,OAAO,iBAAiB,aAAa,WAAW,YAAY,GAAG,EAAE;AAAA,EACjO;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,gBAAgB;AAClF;;;AC1DA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,OAAOA,IAAE,MAAMA,IAAE,OAAO;AAAA,IACtB,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,IAC9B,MAAMA,IAAE,OAAO,EAAE,IAAI,EAAE;AAAA,IACvB,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,EAClC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ;AAAA,IACxB,EAAE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ,aAAa;AAAA,IAC9E,EAAE,MAAM,aAAa,MAAM,mCAAmC,QAAQ,oBAAoB;AAAA,IAC1F,EAAE,MAAM,WAAW,MAAM,iCAAiC,QAAQ,iBAAiB;AAAA,EACrF,CAAC,EAAE,SAAS,oFAAoF;AAAA,EAChG,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,uCAAuC;AAAA,EAC3F,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,+BAA+B;AACnG,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,mBAAmB,iBAAiB,sBAAsB,oBAAoB;AAAA,EAC1F,WAAW,CAAC,gBAAgB;AAAA,EAC5B,MAAM;AAAA,EACN,SAAS,CAAC,aAAa,YAAY;AAAA,EACnC,MAAM,CAAC,MAAM,MAAM,SAAS,SAAS,oBAAoB,KAAK;AAAA,EAC9D,MAAM,CAAC,WAAW;AAAA,EAElB,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,OAAO;AAAA,MACL,EAAE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ,aAAa;AAAA,MAC9E,EAAE,MAAM,aAAa,MAAM,mCAAmC,QAAQ,oBAAoB;AAAA,MAC1F,EAAE,MAAM,WAAW,MAAM,iCAAiC,QAAQ,iBAAiB;AAAA,IACrF;AAAA,IACA,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,YAAY,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,aAAa,WAAW,OAAO,CAAE,EAAE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ,aAAa,GAAG,EAAE,MAAM,aAAa,MAAM,mCAAmC,QAAQ,oBAAoB,GAAG,EAAE,MAAM,WAAW,MAAM,iCAAiC,QAAQ,iBAAiB,CAAE,EAAE,EAAE;AAAA,EAC7V;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,WAAW;AAC9E;;;ACnEA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,uBAAuB;AAAA,EACvF,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,kBAAkB;AAAA,EACtE,MAAMA,IAAE,KAAK,CAAC,YAAY,WAAW,CAAC,EAAE,QAAQ,UAAU,EAAE,SAAS,sFAAmF;AAAA,EACxJ,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,uBAAuB,EAAE,SAAS,qDAAqD;AAAA,EACzH,MAAMA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,+CAA0C;AACxG,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,iBAAiB,eAAe,gBAAgB,UAAU;AAAA,EACtE,WAAW,CAAC,WAAW;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,CAAC,YAAY,YAAY;AAAA,EAClC,MAAM,CAAC,MAAM,MAAM,SAAS,YAAY,UAAU,SAAS,OAAO;AAAA,EAClE,MAAM,CAAC,aAAa,SAAS;AAAA,EAE7B,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,kBAAkB,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,UAAU,IAAI,aAAa,WAAW,MAAM,YAAY,OAAO,yBAAyB,MAAM,EAAE,EAAE;AAAA,IAC3J,EAAE,MAAM,aAAa,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,UAAU,IAAI,aAAa,WAAW,MAAM,aAAa,OAAO,aAAa,MAAM,EAAE,EAAE;AAAA,EAC3I;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,QAAQ,gBAAgB,iBAAiB;AAChF;;;AC5DA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,QAAQA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,QAAQ,EAAE,SAAS,yCAAyC;AAAA,EAC/F,QAAQA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,OAAO,EAAE,SAAS,yCAAyC;AAAA,EAC9F,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,0BAA0B;AAAA,EACnF,QAAQA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,QAAQ,GAAG,EAAE,SAAS,oEAA+D;AAC9H,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,gBAAgB,aAAa,oBAAoB;AAAA,EAC7D,WAAW,CAAC,gBAAgB,gBAAgB;AAAA,EAC5C,MAAM;AAAA,EACN,SAAS,CAAC,cAAc,WAAW;AAAA,EACnC,MAAM,CAAC,MAAM,cAAc,gBAAgB,UAAU,QAAQ;AAAA,EAC7D,MAAM,CAAC,aAAa,WAAW;AAAA,EAE/B,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAqB;AAAA,IACrB,QAAQ;AAAA,EACV;AAAA,EAEA,UAAU;AAAA,IACR,EAAE,MAAM,eAAe,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,QAAQ,UAAU,QAAQ,SAAS,aAAqB,QAAQ,QAAQ,IAAI,EAAE;AAAA,IACpI,EAAE,MAAM,SAAS,MAAM,CAAC,WAAW,GAAG,QAAQ,EAAE,QAAQ,MAAM,QAAQ,MAAM,aAAqB,SAAS,QAAQ,KAAK,EAAE;AAAA,EAC3H;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,cAAc;AAChF;;;AC3DA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,0CAA0C;AAAA,EACnG,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,kDAAkD;AAAA,EAC3G,aAAaA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,mCAAmC;AAAA,EAC7F,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,2DAA2D;AAAA,EAC3H,YAAYA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,mBAAmB;AAAA,EAC5E,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,oBAAoB,eAAe,sBAAsB,4BAA4B;AAAA,EACjG,WAAW,CAAC,qBAAqB;AAAA,EACjC,MAAM;AAAA,EACN,SAAS,CAAC,UAAU;AAAA,EACpB,MAAM,CAAC,MAAM,aAAa,gBAAgB,WAAW,UAAU,aAAa;AAAA,EAC5E,MAAM,CAAC,aAAa,WAAW,WAAW;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,aAAqB,QAAQ,aAAqB,QAAQ,aAAa,GAAG,UAAU,IAAI,YAAoB,SAAS,OAAO,EAAE;AAAA,EAE9I,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,aAAqB,QAAQ,aAAqB,QAAQ,UAAU,GAAG;AAAA,MACjF,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ,EAAE,aAAqB,QAAQ,aAAqB,QAAQ,UAAU,IAAI,YAAoB,GAAG;AAAA,MACzG,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,IAC1G,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,SAAS,cAAc,oBAAoB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,aAAa;AAC/E;;;ACnEA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,iBAAiBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,mEAAmE;AAAA,EAC1I,aAAaA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,SAAS,iEAAiE;AAAA,EAClI,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4EAAuE;AAAA,EACrI,QAAQA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,4DAA4D;AAAA,EAC3G,YAAYA,IAAE,OAAO,EAAE,QAAQ,WAAW,EAAE,SAAS,2DAA2D;AAAA,EAChH,YAAYA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,0DAAqD;AAAA,EACxG,QAAQA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,+BAA+B;AAAA,EAC9E,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,yBAAyB,0BAA0B,oBAAoB,kBAAkB;AAAA,EACrG,WAAW,CAAC;AAAA,EACZ,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,WAAW,QAAQ,WAAW,UAAU,YAAY,eAAe;AAAA,EAChF,MAAM,CAAC,aAAa,WAAW,WAAW;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,iBAAiB;AAAA,IAAI,aAAa;AAAA,IAAG,WAAW;AAAA,IAChD,QAAQ;AAAA,IAAW,YAAY;AAAA,IAAa,YAAY;AAAA,IACxD,QAAQ;AAAA,IAAW,OAAO;AAAA,EAC5B;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,iBAAiB,IAAI,aAAa,GAAG,WAAW,GAAG,QAAQ,UAAU;AAAA,MAC/E,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ,EAAE,iBAAiB,IAAI,aAAa,GAAG,WAAW,GAAG,QAAQ,UAAU;AAAA,MAC/E,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,UAAU,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,IAChG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAU,WAAW,cAAc,oBAAoB;AAAA,EACtG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,iBAAiB;AACnF;;;ACxEA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,OAAOA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,gFAAgF;AAAA,EACtI,eAAeA,IAAE,MAAM,CAACA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAGA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE;AAAA,IACxG;AAAA,EACF;AAAA,EACA,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,2CAA2C;AAAA,EAC7G,OAAOA,IAAE,OAAO,EAAE,IAAI,GAAG,EAAE,QAAQ,mBAAmB,EAAE,SAAS,uEAAuE;AAAA,EACxI,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,2BAA2B;AAAA,EACrF,OAAOA,IAAE,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,QAAQ,GAAG,EAAE,SAAS,uBAAuB;AAAA,EAClF,YAAYA,IAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,mBAAmB;AAAA,EACvE,WAAWA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,yBAAyB;AAAA,EACjF,WAAWA,IAAE,OAAO,EAAE,QAAgB,IAAI,EAAE,SAAS,kBAAkB;AAAA,EACvE,YAAYA,IAAE,OAAO,EAAE,QAAgB,UAAU,EAAE,SAAS,kCAAkC;AAAA,EAC9F,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,oBAAoB,sBAAsB,oBAAoB,YAAY;AAAA,EACtF,WAAW,CAAC,kBAAkB;AAAA,EAC9B,MAAM;AAAA,EACN,SAAS,CAAC,aAAa,YAAY;AAAA,EACnC,MAAM,CAAC,MAAM,QAAQ,aAAa,YAAY,YAAY,cAAc;AAAA,EACxE,MAAM,CAAC,aAAa,WAAW,WAAW;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,eAAe,CAAC,GAAG,EAAE;AAAA,IAAG,YAAY;AAAA,IAAI,OAAO;AAAA,IAC/C,UAAU;AAAA,IAAI,OAAO;AAAA,IAAK,YAAoB;AAAA,IAAI,WAAmB;AAAA,IACrE,WAAmB;AAAA,IAAM,YAAoB;AAAA,IAAY,OAAO;AAAA,EAClE;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,OAAO,oBAAoB;AAAA,MAC7E,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,OAAO,YAAY;AAAA,MACrE,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,aAAa,QAAQ,WAAW,UAAkB,SAAS,cAAc,oBAAoB;AAAA,IACzG,EAAE,UAAU,aAAa,QAAQ,WAAW,UAAkB,MAAM,cAAc,uBAAuB;AAAA,IACzG,EAAE,UAAU,cAAc,QAAQ,cAAc,UAAkB,YAAY,cAAc,mBAAmB;AAAA,EACjH;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,iBAAiB;AACnF;;;AC/EA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,sBAAsB,EAAE,SAAS,kIAAkI;AAAA,EAC9M,aAAaA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,iFAAiF;AAAA,EAC1I,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,gFAAgF;AAAA,EAC9I,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,oBAAoB,mBAAmB;AAAA,EAC7F,WAAW,CAAC,qBAAqB;AAAA,EACjC,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,MAAM,cAAc,aAAa,YAAY,QAAQ,QAAQ;AAAA,EAC1E,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,QAAQ,wBAAwB,aAAqB,QAAQ,WAAW,GAAG,OAAO,EAAE;AAAA,EAEpG,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,QAAQ,wBAAwB,aAAqB,QAAQ,WAAW,EAAE;AAAA,MACpF,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,QAAQ,+BAA+B,aAAqB,SAAS,WAAW,EAAE;AAAA,MAC5F,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA;AAAA;AAAA,EAGd,WAAW;AAAA,IACT;AAAA,IAAW;AAAA,IAAgB;AAAA,IAAY;AAAA,IAAc;AAAA,IAAa;AAAA,EACpE;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,mBAAmB;AACtF;;;ACrEA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,SAASA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,6CAA6C;AAAA,EACrG,gBAAgBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,2CAA2C;AAAA,EACjH,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,+DAA+D;AAAA,EACpI,kBAAkBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,GAAG,EAAE,SAAS,sEAAsE;AAAA,EAC/I,UAAUA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,kBAAa,EAAE,SAAS,sGAAsG;AAAA,EACnK,QAAQA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,2DAA2D;AAAA,EAC/G,YAAYA,IAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,2CAA2C;AAAA,EAC/F,eAAeA,IAAE,OAAO,EAAE,SAAS,4GAAuG,EAAE,SAAS;AAAA,EACrJ,kBAAkBA,IAAE,OAAO,EAAE,SAAS,0GAA0G,EAAE,SAAS;AAAA,EAC3J,UAAUA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,oCAAoC;AAAA,EAC3F,SAASA,IAAE,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,EAAE,SAAS,uBAAuB;AAAA,EACjF,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,yCAAyC;AAAA,EAC1G,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,yBAAyB,0BAA0B,qBAAqB,oBAAoB;AAAA,EACxG,WAAW,CAAC,sBAAsB;AAAA,EAClC,MAAM;AAAA,EACN,SAAS,CAAC,oBAAoB;AAAA,EAC9B,MAAM,CAAC,MAAM,MAAM,YAAY,WAAW,QAAQ,gBAAgB,OAAO;AAAA,EACzE,MAAM,CAAC,aAAa,aAAa,WAAW;AAAA,EAE5C,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,SAAS;AAAA,IAAI,gBAAgB;AAAA,IAAI,eAAe;AAAA,IAAI,kBAAkB;AAAA,IACtE,UAAU;AAAA,IAAe,QAAgB;AAAA,IAAQ,YAAoB;AAAA,IACrE,UAAkB;AAAA,IAAS,SAAS;AAAA,IAAK,YAAY;AAAA,IAAI,OAAO;AAAA,EAClE;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ,EAAE,UAAU,oBAAe,QAAgB,QAAQ,SAAS,GAAG;AAAA,MACvE,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,UAAU,aAAa,QAAgB,QAAQ,SAAS,IAAI,eAAe,IAAI,kBAAkB,GAAG;AAAA,MAC9G,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,UAAU,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,IACrG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,IAAI,cAAc,oBAAoB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,WAAW,gBAAgB,mBAAmB;AACrF;;;AC9EA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,QAAQA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,0EAA0E;AAAA,EAC9H,eAAeA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,qBAAqB,EAAE,SAAS,yFAAyF;AAAA,EAC3K,UAAUA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,YAAY,EAAE,SAAS,kGAAkG;AAAA,EACtK,YAAYA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,mBAAmB;AAAA,EAC5E,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,kBAAkB,mBAAmB;AAAA,EAC3F,WAAW,CAAC;AAAA,EACZ,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,UAAU,QAAQ,QAAQ,QAAQ,YAAY,UAAU;AAAA,EACrE,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,QAAgB,QAAQ,eAAe,uBAAuB,UAAU,cAAc,YAAoB,SAAS,OAAO,EAAE;AAAA,EAE5I,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,eAAe,uBAAuB,UAAU,cAAc,QAAgB,OAAO;AAAA,MAC/F,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,eAAe,uBAAuB,UAAU,YAAY,QAAgB,SAAS,YAAoB,GAAG;AAAA,MACtH,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,UAAU,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,IACrG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,SAAS,cAAc,oBAAoB;AAAA,EAC5G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,eAAe;AAClF;;;AClEA,SAAS,KAAAG,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,aAAaA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,uDAAuD;AAAA,EACjH,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,QAAQ,MAAM,EAAE,SAAS,2EAA2E;AAAA,EACrJ,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,sBAAsB,kBAAkB;AAAA,EAC9F,WAAW,CAAC,mBAAmB,kBAAkB;AAAA,EACjD,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,aAAa,aAAa,OAAO,SAAS,YAAY,UAAU;AAAA,EAC7E,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,aAAqB,SAAS,WAAW,QAAQ,OAAO,EAAE;AAAA,EAE1E,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ,EAAE,aAAqB,SAAS,WAAW,OAAO;AAAA,MAC1D,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,aAAqB,MAAM,WAAW,OAAO;AAAA,MACvD,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAkB,SAAS,cAAc,gBAAgB;AAAA,EAC7G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,gBAAgB;AACnF;;;AC/DA,SAAS,KAAAG,WAAS;AAKlB,IAAM,aAAaC,IAAE,OAAO;AAAA,EAC1B,IAAIA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,iDAAiD;AAAA,EAChF,GAAGA,IAAE,OAAO,EAAE,SAAS,qDAAqD;AAAA,EAC5E,GAAGA,IAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,EAChD,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,0EAA0E;AAC1H,CAAC,EAAE,YAAY;AAEf,IAAM,aAAaA,IAAE,OAAO;AAAA,EAC1B,MAAMA,IAAE,OAAO,EAAE,SAAS,iBAAiB;AAAA,EAC3C,IAAIA,IAAE,OAAO,EAAE,SAAS,iBAAiB;AAAA,EACzC,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,0FAA2F;AAC9J,CAAC,EAAE,YAAY;AAEf,IAAMC,iBAAeD,IAAE,OAAO;AAAA,EAC5B,OAAOA,IAAE,MAAM,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,0EAA0E;AAAA,EAChI,OAAOA,IAAE,MAAM,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,4DAA4D;AAAA,EAClH,WAAWA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,+CAA+C;AAAA,EACvG,YAAYA,IAAE,OAAO,EAAE,QAAgB,MAAM,EAAE,SAAS,mDAAmD;AAAA,EAC3G,aAAaA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,wCAAwC;AAAA,EAC5G,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,4CAA4C;AAAA,EAClH,YAAYA,IAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,mBAAmB;AAAA,EACvE,WAAWA,IAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,uBAAuB;AAAA,EAC1E,WAAWA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,mBAAmB;AAAA,EAC3E,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,qBAAqB,kBAAkB;AAAA,EAC7F,WAAW,CAAC,kBAAkB,kBAAkB;AAAA,EAChD,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,gBAAgB,WAAW,SAAS,SAAS,aAAa,OAAO;AAAA,EAC9E,MAAM,CAAC,aAAa,aAAa,WAAW;AAAA,EAE5C,cAAAD;AAAA,EACA,cAAc;AAAA,IACZ,WAAmB;AAAA,IAAS,YAAoB;AAAA,IAAQ,aAAa;AAAA,IAAI,eAAe;AAAA,IACxF,YAAoB;AAAA,IAAI,WAAmB;AAAA,IAAI,WAAmB;AAAA,IAAS,OAAO;AAAA,EACpF;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ,EAAE,YAAoB,OAAO;AAAA,MACrC,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW,WAAW;AAAA,MAC7B,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,EAAE,IAAI,OAAO,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM;AAAA,UAC1C,EAAE,IAAI,OAAO,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM;AAAA,UAC1C,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,KAAK,OAAO,WAAW;AAAA,QACjD;AAAA,QACA,OAAO;AAAA,UACL,EAAE,MAAM,OAAO,IAAI,OAAO,YAAY,EAAE;AAAA,UACxC,EAAE,MAAM,OAAO,IAAI,MAAM,YAAY,GAAG;AAAA,QAC1C;AAAA,QACA,YAAoB;AAAA,MACtB;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,cAAc,QAAQ,eAAe,UAAkB,QAAQ,cAAc,gBAAgB;AAAA,IACzG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,IAAI,cAAc,oBAAoB;AAAA,IACrG,EAAE,UAAU,aAAa,QAAQ,WAAW,UAAkB,SAAS,cAAc,uBAAuB;AAAA,EAC9G;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,IAAI,MAAM,QAAQ,gBAAgB,YAAY;AAC3E;;;ACnGA,SAAS,KAAAE,WAAS;AAIlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,gBAAgB,EAAE,SAAS,+EAA+E;AAAA,EACxJ,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,4EAA4E;AAAA,EAChI,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,sBAAsB,oBAAoB,sBAAsB,kBAAkB;AAAA,EAC9F,WAAW,CAAC,mBAAmB,gBAAgB;AAAA,EAC/C,MAAM;AAAA,EACN,SAAS,CAAC,WAAW;AAAA,EACrB,MAAM,CAAC,MAAM,UAAU,YAAY,YAAY,UAAU,WAAW,UAAU;AAAA,EAC9E,MAAM,CAAC,aAAa,aAAa,SAAS;AAAA,EAE1C,cAAAF;AAAA,EACA,cAAc,EAAE,WAAW,kBAAkB,aAAa,WAAW,OAAO,EAAE;AAAA,EAE9E,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ,EAAE,WAAW,kBAAkB,aAAa,UAAU;AAAA,MAC9D,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ,EAAE,WAAW,sBAAsB,aAAa,UAAU;AAAA,MAClE,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,eAAe,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,iBAAiB;AACpF;;;AC9DA,SAAS,KAAAG,WAAS;AAIlB,IAAM,cAAcC,IAAE,OAAO;AAAA,EAC3B,GAAGA,IAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,EAChD,GAAGA,IAAE,OAAO,EAAE,SAAS,yBAAyB;AAClD,CAAC,EAAE,YAAY;AAEf,IAAMC,iBAAeD,IAAE,OAAO;AAAA,EAC5B,aAAa,YAAY,SAAS,EAAE,SAAS,oEAAoE;AAAA,EACjH,cAAc,YAAY,SAAS,EAAE,SAAS,gEAAgE;AAAA,EAC9G,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,GAAG,EAAE,SAAS,+FAA+F;AAAA,EACnK,cAAcA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,eAAe,EAAE,SAAS,sFAAsF;AAAA,EACjK,aAAaA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,sEAAsE,EAAE,SAAS,kFAAkF;AAAA,EACnN,aAAaA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,UAAU,EAAE,SAAS,wEAAwE;AAAA,EAC5I,QAAQA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,iEAAiE;AAAA,EAChH,YAAYA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,sCAAsC;AAAA,EACzF,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,cAAc,sBAAsB,qBAAqB,kBAAkB;AAAA,EACvF,WAAW,CAAC,gBAAgB,yBAAyB,aAAa;AAAA,EAClE,MAAM;AAAA,EACN,SAAS,CAAC,aAAa,oBAAoB;AAAA,EAC3C,MAAM,CAAC,MAAM,QAAQ,WAAW,cAAc,gBAAgB,UAAU,UAAU;AAAA,EAClF,MAAM,CAAC,aAAa,aAAa,WAAW;AAAA,EAE5C,cAAAD;AAAA,EACA,cAAc;AAAA,IACZ,YAAY;AAAA,IAAK,cAAc;AAAA,IAC/B,aAAa;AAAA,IACb,aAAa;AAAA,IAAY,QAAQ;AAAA,IAAW,YAAY;AAAA,IAAW,OAAO;AAAA,EAC5E;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,cAAc;AAAA,QACd,aAAa;AAAA,QACb,aAAa;AAAA,QAAY,QAAQ;AAAA,MACnC;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,cAAc;AAAA,QACd,aAAa;AAAA,QACb,aAAa;AAAA,QAAU,QAAQ;AAAA,QAAW,YAAY;AAAA,MACxD;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,UAAU,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,IAChG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAU,WAAW,cAAc,oBAAoB;AAAA,EACtG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,gBAAgB;AACnF;;;ACtFA,SAAS,KAAAE,WAAS;AAKlB,IAAMC,iBAAeC,IAAE,OAAO;AAAA,EAC5B,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,4DAA4D;AAAA,EACxH,aAAaA,IAAE,OAAO,EAAE,QAAQ,wBAAwB,EAAE,SAAS,qEAAqE;AAAA,EACxI,YAAYA,IAAE,OAAO,EAAE,QAAgB,EAAE,EAAE,SAAS,gDAAgD;AAAA,EACpG,YAAYA,IAAE,OAAO,EAAE,QAAgB,IAAI,EAAE,SAAS,0CAA0C;AAAA,EAChG,YAAYA,IAAE,OAAO,EAAE,QAAgB,IAAI,EAAE,SAAS,4CAA4C;AAAA,EAClG,cAAcA,IAAE,OAAO,EAAE,QAAgB,OAAO,EAAE,SAAS,6DAA6D;AAAA,EACxH,YAAYA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,4CAA4C;AAAA,EAC9G,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,QAAQ,GAAG,EAAE,SAAS,6CAA6C;AAAA,EACpH,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAMC,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,uBAAuB,sBAAsB,yBAAyB,mBAAmB;AAAA,EACrG,WAAW,CAAC;AAAA,EACZ,MAAM;AAAA,EACN,SAAS,CAAC,YAAY;AAAA,EACtB,MAAM,CAAC,MAAM,SAAS,QAAQ,UAAU,UAAU,UAAU,QAAQ;AAAA,EACpE,MAAM,CAAC,aAAa,aAAa,WAAW;AAAA,EAE5C,cAAAF;AAAA,EACA,cAAc;AAAA,IACZ,WAAW;AAAA,IAAI,aAAa;AAAA,IAA0B,YAAoB;AAAA,IAC1E,YAAoB;AAAA,IAAM,YAAoB;AAAA,IAAM,cAAsB;AAAA,IAC1E,YAAY;AAAA,IAAI,eAAe;AAAA,IAAK,OAAO;AAAA,EAC7C;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ,EAAE,WAAW,IAAI,YAAoB,MAAM,YAAoB,KAAK;AAAA,MAC5E,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,QAAQ,EAAE,WAAW,KAAK,eAAe,IAAI,YAAoB,MAAM,YAAoB,OAAO;AAAA,MAClG,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,cAAc,QAAQ,eAAe,UAAkB,MAAM,cAAc,gBAAgB;AAAA,IACvG,EAAE,UAAU,cAAc,QAAQ,WAAW,UAAkB,IAAI,cAAc,oBAAoB;AAAA,EACvG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,iBAAiB;AACpF;;;AC1EA,SAAS,KAAAG,WAAS;AAIlB,IAAMC,cAAaC,IAAE,OAAO;AAAA,EAC1B,KAAKA,IAAE,OAAO,EAAE,SAAS,uBAAuB;AAAA,EAChD,MAAMA,IAAE,OAAO,EAAE,SAAS,wBAAwB;AAAA,EAClD,OAAOA,IAAE,OAAO,EAAE,SAAS,kBAAkB;AAAA,EAC7C,QAAQA,IAAE,OAAO,EAAE,SAAS,mBAAmB;AACjD,CAAC,EAAE,YAAY;AAEf,IAAMC,iBAAeD,IAAE,OAAO;AAAA,EAC5B,MAAMD,YAAW,SAAS,EAAE,SAAS,8GAAuG;AAAA,EAC5I,IAAIA,YAAW,SAAS,EAAE,SAAS,wGAAgG;AAAA,EACnI,kBAAkBC,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,6BAA6B;AAAA,EAC9F,gBAAgBA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,4BAA4B;AAAA,EAC3F,SAASA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,wCAAwC;AAAA,EACvG,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,8CAA8C;AAAA,EAClG,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,+CAA+C;AAAA,EACnG,aAAaA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,8CAA8C;AAAA,EAClG,gBAAgBA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,yDAAyD;AAAA,EAChH,kBAAkBA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,2DAA2D;AAAA,EACpH,QAAQA,IAAE,OAAO,EAAE,QAAQ,SAAS,EAAE,SAAS,yDAAyD;AAAA,EACxG,YAAYA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,cAAc,EAAE,SAAS,yEAAyE;AAAA,EACjJ,UAAUA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,wEAAmE,EAAE,SAAS,8EAA8E;AAAA,EACzM,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,4BAA4B;AACrF,CAAC,EAAE,YAAY;AAIR,IAAME,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EAET,QAAQ;AAAA,EACR,aACE;AAAA,EACF,SACE;AAAA,EACF,WAAW,CAAC,yBAAyB,sBAAsB,0BAA0B,kBAAkB;AAAA,EACvG,WAAW,CAAC,gBAAgB;AAAA,EAC5B,MAAM;AAAA,EACN,SAAS,CAAC,YAAY;AAAA,EACtB,MAAM,CAAC,MAAM,SAAS,UAAU,kBAAkB,UAAU,SAAS,YAAY;AAAA,EACjF,MAAM,CAAC,aAAa,aAAa,WAAW;AAAA,EAE5C,cAAAD;AAAA,EACA,cAAc;AAAA,IACZ,kBAAkB;AAAA,IAAI,gBAAgB;AAAA,IAAI,SAAS;AAAA,IACnD,aAAa;AAAA,IAAW,aAAa;AAAA,IAAW,aAAa;AAAA,IAC7D,gBAAgB;AAAA,IAAW,kBAAkB;AAAA,IAAW,QAAQ;AAAA,IAChE,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EAEA,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,QAAQ;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,MAClB,QAAQ;AAAA,QACN,aAAa;AAAA,QAAW,aAAa;AAAA,QAAW,aAAa;AAAA,QAC7D,YAAY;AAAA,QAAgB,UAAU;AAAA,QACtC,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,QAAQ;AAAA,IACN,EAAE,UAAU,oBAAoB,QAAQ,WAAW,UAAU,WAAW,cAAc,oBAAoB;AAAA,IAC1G,EAAE,UAAU,UAAU,QAAQ,eAAe,UAAU,WAAW,cAAc,gBAAgB;AAAA,EAClG;AAAA,EAEA,kBAAkB;AAAA,EAClB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EAER,SAAS,EAAE,gBAAgB,KAAK,MAAM,WAAW,gBAAgB,cAAc;AACjF;;;AC1BO,IAAM,UAAmB;AAAA,EAC9B;AAAA,EACAE;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EAAyBA;AAAA,EAAUA;AAAA,EAAmBA;AAAA,EAAeA;AAAA,EAAcA;AAAA,EAAcA;AAAA,EAAeA;AAAA,EAAaA;AAAA,EAAgBA;AAAA,EAAeA;AAC9J;","names":["Sequence","interpolate","useCurrentFrame","jsx","jsxs","useCurrentFrame","Light","Sequence","interpolate","interpolate","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","spring","interpolate","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useVideoConfig","interpolate","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","spring","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","easeInOut","useCurrentFrame","useVideoConfig","spring","interpolate","interpolate","spring","useCurrentFrame","useVideoConfig","Fragment","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useVideoConfig","spring","interpolate","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","spring","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","spring","interpolate","AbsoluteFill","Easing","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","spring","AbsoluteFill","Easing","AbsoluteFill","interpolate","spring","useCurrentFrame","useVideoConfig","Fragment","jsx","jsxs","useCurrentFrame","useVideoConfig","spring","AbsoluteFill","interpolate","AbsoluteFill","Easing","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","jitter","useCurrentFrame","useVideoConfig","interpolate","Easing","spring","AbsoluteFill","AbsoluteFill","Easing","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","spring","AbsoluteFill","interpolate","Easing","AbsoluteFill","Easing","interpolate","useCurrentFrame","useVideoConfig","jsx","jsxs","jitter","useCurrentFrame","useVideoConfig","interpolate","Easing","AbsoluteFill","AbsoluteFill","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","spring","AbsoluteFill","interpolate","AbsoluteFill","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","AbsoluteFill","spring","interpolate","AbsoluteFill","useCurrentFrame","useVideoConfig","jsx","jsxs","jitter","useCurrentFrame","useVideoConfig","AbsoluteFill","React","Easing","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","Easing","spring","React","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useVideoConfig","spring","interpolate","Sequence","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useVideoConfig","spring","interpolate","Sequence","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_MONO","DEFAULT_LINES","useCurrentFrame","useVideoConfig","spring","interpolate","Light","interpolate","spring","useCurrentFrame","useVideoConfig","Fragment","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useVideoConfig","interpolate","spring","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useVideoConfig","interpolate","spring","Easing","interpolate","interpolateColors","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","interpolate","Easing","interpolateColors","interpolate","useCurrentFrame","jsx","jsxs","FONT_FAMILY","useCurrentFrame","interpolate","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","MONO_FAMILY","useCurrentFrame","useVideoConfig","interpolate","spring","AbsoluteFill","Easing","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","Easing","useCurrentFrame","useVideoConfig","interpolate","spring","AbsoluteFill","CursorSVG","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","cubicBezier","easeInOut","controlsFor","useCurrentFrame","useVideoConfig","spring","interpolate","interpolate","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","FONT_FAMILY","DEFAULT_FROM","DEFAULT_TO","useCurrentFrame","useVideoConfig","spring","interpolate","z","z","paramsSchema","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","z","paramsSchema","config","z","z","paramsSchema","config","z","z","paramsSchema","config","z","z","paramsSchema","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","z","paramsSchema","config","z","paramsSchema","z","config","z","z","paramsSchema","config","z","paramsSchema","z","config","z","rectSchema","z","paramsSchema","config","config"]}