@mieweb/ui 0.10.0-dev.43 → 0.10.0-dev.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deck.cjs +1 -1
- package/dist/deck.cjs.map +1 -1
- package/dist/deck.js +1 -1
- package/dist/deck.js.map +1 -1
- package/dist/{hey-buddy-INNUFFJJ.cjs → hey-buddy-5WOBYZRJ.cjs} +22 -11
- package/dist/hey-buddy-5WOBYZRJ.cjs.map +1 -0
- package/dist/{hey-buddy-V6FC5UKB.js → hey-buddy-AHUHCDBC.js} +22 -11
- package/dist/hey-buddy-AHUHCDBC.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/hey-buddy-INNUFFJJ.cjs.map +0 -1
- package/dist/hey-buddy-V6FC5UKB.js.map +0 -1
package/dist/deck.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Deck/DeckChrome.tsx","../src/components/Deck/tones.ts","../src/components/Deck/DeckContext.tsx","../src/components/Deck/labels.ts","../src/components/Deck/primitives.tsx","../src/components/Deck/graphics.tsx","../src/components/Deck/SlideFrame.tsx","../src/components/Deck/slides/data.tsx","../src/components/Deck/slides/diagrams.tsx","../src/components/Deck/slides/grids.tsx","../src/components/Deck/slides/narrative.tsx","../src/components/Deck/registry.tsx","../src/components/Deck/Deck.tsx"],"names":["React","React2","jsx","jsxs","React3","accent","React4","Fragment","React5","React6","React7","ExternalLink","React8"],"mappings":"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","file":"deck.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport {\n ChevronDown,\n ChevronUp,\n List,\n Maximize2,\n Minimize2,\n Printer,\n X,\n} from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DeckLabels } from './labels';\nimport type { Slide } from './types';\n\ntype Labels = Required<DeckLabels>;\n\nconst chrome = 'mie-deck-chrome print:hidden';\nconst iconButton =\n 'flex size-9 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/70 backdrop-blur transition-colors hover:bg-white/10 hover:text-white focus-visible:ring-2 focus-visible:ring-accent focus-visible:outline-none';\n\nexport const slideLabel = (s: Slide) =>\n s.navLabel ?? ('title' in s ? s.title : undefined) ?? '';\n\nexport function ProgressBar({ progress }: { progress: number }) {\n return (\n <div\n className={cn(\n chrome,\n 'pointer-events-none absolute inset-x-0 top-0 z-40 h-[3px] bg-white/5'\n )}\n >\n <div\n className=\"bg-accent h-full transition-[width] duration-500 ease-out\"\n style={{ width: `${progress}%` }}\n />\n </div>\n );\n}\n\nexport function SlideCounter({\n active,\n total,\n section,\n}: {\n active: number;\n total: number;\n section?: string;\n}) {\n return (\n <div\n className={cn(\n chrome,\n 'pointer-events-none absolute start-5 bottom-5 z-40 hidden select-none md:block'\n )}\n >\n <div className=\"text-sm font-semibold text-white/80 tabular-nums\">\n {String(active + 1).padStart(2, '0')}\n <span className=\"text-white/70\">\n {' '}\n / {String(total).padStart(2, '0')}\n </span>\n </div>\n {section && (\n <div className=\"text-accent mt-0.5 text-[0.7rem] tracking-[0.18em] uppercase\">\n {section}\n </div>\n )}\n </div>\n );\n}\n\nexport function DotNav({\n slides,\n active,\n goTo,\n labels,\n}: {\n slides: Slide[];\n active: number;\n goTo: (i: number) => void;\n labels: Labels;\n}) {\n return (\n <nav\n aria-label={labels.slideNavigation}\n className={cn(\n chrome,\n 'absolute end-3 top-1/2 z-40 hidden -translate-y-1/2 flex-col items-center gap-2 md:flex'\n )}\n >\n {slides.map((s, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n aria-label={labels.goToSlide(i + 1, slideLabel(s))}\n aria-current={i === active ? 'true' : undefined}\n className=\"group relative flex size-4 items-center justify-center\"\n >\n <span\n className={cn(\n 'block rounded-full transition-all duration-300',\n i === active\n ? 'bg-accent size-2.5'\n : 'size-1.5 bg-white/30 group-hover:bg-white/60'\n )}\n />\n <span className=\"pointer-events-none absolute end-6 rounded-md border border-white/10 bg-neutral-900/95 px-2 py-1 text-xs whitespace-nowrap text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100\">\n {slideLabel(s)}\n </span>\n </button>\n ))}\n </nav>\n );\n}\n\nexport function Controls({\n isFullscreen,\n onToggleFullscreen,\n onOpenOutline,\n labels,\n}: {\n isFullscreen: boolean;\n onToggleFullscreen: () => void;\n onOpenOutline: () => void;\n labels: Labels;\n}) {\n return (\n <div\n className={cn(\n chrome,\n 'absolute end-5 bottom-5 z-40 hidden items-center gap-2 md:flex'\n )}\n >\n <button\n type=\"button\"\n className={iconButton}\n onClick={onOpenOutline}\n aria-label={labels.openOutline}\n >\n <List aria-hidden=\"true\" className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n className={iconButton}\n onClick={() => window.print()}\n aria-label={labels.print}\n >\n <Printer aria-hidden=\"true\" className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n className={iconButton}\n onClick={onToggleFullscreen}\n aria-label={\n isFullscreen ? labels.exitFullscreen : labels.enterFullscreen\n }\n >\n {isFullscreen ? (\n <Minimize2 aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <Maximize2 aria-hidden=\"true\" className=\"size-4\" />\n )}\n </button>\n </div>\n );\n}\n\nfunction Kbd({ children }: { children: React.ReactNode }) {\n return (\n <kbd className=\"inline-flex min-w-5 items-center justify-center rounded border border-white/15 bg-white/5 px-1 py-0.5 text-[0.65rem] text-white/80\">\n {children}\n </kbd>\n );\n}\n\nexport function KeyboardHints({\n pulse,\n labels,\n}: {\n pulse: number;\n labels: Labels;\n}) {\n const [visible, setVisible] = React.useState(true);\n React.useEffect(() => {\n setVisible(true);\n const t = setTimeout(() => setVisible(false), 5000);\n return () => clearTimeout(t);\n }, [pulse]);\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n chrome,\n 'pointer-events-none absolute bottom-5 left-1/2 z-40 hidden -translate-x-1/2 items-center gap-3 rounded-full border border-white/10 bg-neutral-900/80 px-4 py-1.5 text-xs text-white/70 backdrop-blur transition-opacity duration-500 select-none md:flex',\n visible ? 'opacity-100' : 'opacity-0'\n )}\n >\n <span className=\"flex items-center gap-1\">\n <Kbd>↑</Kbd>\n <Kbd>↓</Kbd> {labels.navigateHint}\n </span>\n <span className=\"text-white/20\">·</span>\n <span>\n <Kbd>F</Kbd> {labels.fullscreenHint}\n </span>\n <span className=\"text-white/20\">·</span>\n <span>\n <Kbd>?</Kbd> {labels.helpHint}\n </span>\n </div>\n );\n}\n\nexport function MobileNav({\n active,\n total,\n onPrev,\n onNext,\n onOpenOutline,\n labels,\n}: {\n active: number;\n total: number;\n onPrev: () => void;\n onNext: () => void;\n onOpenOutline: () => void;\n labels: Labels;\n}) {\n const btn =\n 'flex size-10 items-center justify-center rounded-full text-white/80 transition-colors hover:bg-white/10 disabled:opacity-30';\n return (\n <div\n className={cn(\n chrome,\n 'absolute inset-x-0 bottom-0 z-40 flex items-center justify-between border-t border-white/10 bg-neutral-950/90 px-3 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] backdrop-blur md:hidden'\n )}\n >\n <button\n type=\"button\"\n className={btn}\n onClick={onPrev}\n disabled={active === 0}\n aria-label={labels.previous}\n >\n <ChevronUp aria-hidden=\"true\" className=\"size-5\" />\n </button>\n <button\n type=\"button\"\n onClick={onOpenOutline}\n className=\"flex items-center gap-2 rounded-full px-4 py-1.5 text-sm font-semibold text-white/80 tabular-nums\"\n aria-label={labels.openOutline}\n >\n <List aria-hidden=\"true\" className=\"text-accent size-4\" />\n {active + 1} / {total}\n </button>\n <button\n type=\"button\"\n className={btn}\n onClick={onNext}\n disabled={active === total - 1}\n aria-label={labels.next}\n >\n <ChevronDown aria-hidden=\"true\" className=\"size-5\" />\n </button>\n </div>\n );\n}\n\n/** Focus-trapped slide list. */\nexport function OutlineDialog({\n open,\n onClose,\n slides,\n active,\n goTo,\n labels,\n}: {\n open: boolean;\n onClose: () => void;\n slides: Slide[];\n active: number;\n goTo: (i: number) => void;\n labels: Labels;\n}) {\n const panelRef = React.useRef<HTMLDivElement>(null);\n const titleId = React.useId();\n\n React.useEffect(() => {\n if (!open) return;\n const previous = document.activeElement as HTMLElement | null;\n const panel = panelRef.current;\n const focusables = () =>\n Array.from(\n panel?.querySelectorAll<HTMLElement>('button:not([disabled])') ?? []\n );\n (focusables()[1] ?? focusables()[0])?.focus();\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n return;\n }\n if (e.key !== 'Tab') return;\n const items = focusables();\n const first = items[0];\n const last = items[items.length - 1];\n if (e.shiftKey && document.activeElement === first) {\n e.preventDefault();\n last?.focus();\n } else if (!e.shiftKey && document.activeElement === last) {\n e.preventDefault();\n first?.focus();\n }\n };\n document.addEventListener('keydown', onKey, true);\n return () => {\n document.removeEventListener('keydown', onKey, true);\n previous?.focus?.();\n };\n }, [open, onClose]);\n\n if (!open || typeof document === 'undefined') return null;\n\n return createPortal(\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className=\"mie-deck-chrome fixed inset-0 z-[80] flex flex-col bg-neutral-950/95 text-white backdrop-blur-md\"\n >\n <div className=\"flex items-center justify-between border-b border-white/10 px-5 py-4\">\n <h2 id={titleId} className=\"text-lg font-bold text-white\">\n {labels.outline}\n </h2>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={labels.closeOutline}\n className={iconButton}\n >\n <X aria-hidden=\"true\" className=\"size-5\" />\n </button>\n </div>\n <ol className=\"flex-1 overflow-y-auto px-3 py-3\">\n {slides.map((s, i) => (\n <li key={i}>\n <button\n type=\"button\"\n onClick={() => {\n goTo(i);\n onClose();\n }}\n aria-current={i === active ? 'true' : undefined}\n className={cn(\n 'flex w-full items-baseline gap-3 rounded-lg px-4 py-3 text-start transition-colors',\n i === active ? 'bg-accent/15' : 'hover:bg-white/5'\n )}\n >\n <span className=\"text-accent text-sm font-semibold tabular-nums\">\n {String(i + 1).padStart(2, '0')}\n </span>\n <span className={i === active ? 'text-white' : 'text-white/75'}>\n {slideLabel(s)}\n </span>\n </button>\n </li>\n ))}\n </ol>\n </div>,\n document.body\n );\n}\n","import type { AccentName, SlideTone } from './types';\n\nexport interface ToneSpec {\n isLight: boolean;\n /** Slide ground. */\n surface: string;\n text: string;\n muted: string;\n hairline: string;\n card: string;\n}\n\nconst dark = {\n isLight: false,\n text: 'text-white',\n muted: 'text-white/70',\n hairline: 'border-white/10',\n card: 'bg-white/5',\n} as const;\n\nexport const TONES: Record<SlideTone, ToneSpec> = {\n brand: {\n ...dark,\n surface:\n 'bg-gradient-to-br from-primary-900 via-primary-950 to-primary-950',\n },\n deep: {\n ...dark,\n surface: 'bg-gradient-to-b from-neutral-900 to-neutral-950',\n },\n ink: { ...dark, surface: 'bg-neutral-950' },\n glow: {\n ...dark,\n surface: 'bg-gradient-to-br from-primary-950 via-primary-800 to-accent/70',\n },\n light: {\n isLight: true,\n surface: 'bg-white',\n text: 'text-neutral-900',\n muted: 'text-neutral-600',\n hairline: 'border-neutral-200',\n card: 'bg-neutral-50',\n },\n};\n\nexport interface AccentSpec {\n text: string;\n soft: string;\n border: string;\n /** Solid fill for bars and dots. */\n fill: string;\n /** SVG fill / stroke utilities. */\n svgFill: string;\n svgStroke: string;\n}\n\nconst onDark: Record<AccentName, AccentSpec> = {\n primary: {\n text: 'text-primary-300',\n soft: 'bg-primary-400/15',\n border: 'border-primary-400/30',\n fill: 'bg-primary-400',\n svgFill: 'fill-primary-400',\n svgStroke: 'stroke-primary-400',\n },\n secondary: {\n text: 'text-secondary-300',\n soft: 'bg-secondary-400/15',\n border: 'border-secondary-400/30',\n fill: 'bg-secondary-400',\n svgFill: 'fill-secondary-400',\n svgStroke: 'stroke-secondary-400',\n },\n accent: {\n text: 'text-accent',\n soft: 'bg-accent/15',\n border: 'border-accent/30',\n fill: 'bg-accent',\n svgFill: 'fill-accent',\n svgStroke: 'stroke-accent',\n },\n success: {\n text: 'text-success',\n soft: 'bg-success/15',\n border: 'border-success/30',\n fill: 'bg-success',\n svgFill: 'fill-success',\n svgStroke: 'stroke-success',\n },\n warning: {\n text: 'text-warning',\n soft: 'bg-warning/15',\n border: 'border-warning/30',\n fill: 'bg-warning',\n svgFill: 'fill-warning',\n svgStroke: 'stroke-warning',\n },\n danger: {\n text: 'text-destructive',\n soft: 'bg-destructive/15',\n border: 'border-destructive/30',\n fill: 'bg-destructive',\n svgFill: 'fill-destructive',\n svgStroke: 'stroke-destructive',\n },\n};\n\n// Light grounds need darker text shades for contrast; fills stay the same.\nconst lightText: Record<AccentName, string> = {\n primary: 'text-primary-800',\n secondary: 'text-secondary-800',\n accent: 'text-neutral-900',\n success: 'text-neutral-900',\n warning: 'text-neutral-900',\n danger: 'text-destructive',\n};\n\nexport function accent(\n name: AccentName = 'accent',\n isLight = false\n): AccentSpec {\n const spec = onDark[name];\n return isLight ? { ...spec, text: lightText[name] } : spec;\n}\n\n/** A slide's resolved tone \\u2014 for renderers, which sit outside the `SlideFrame` that provides it to children. */\nexport const toneOf = (slide: { tone?: SlideTone }, fallback: SlideTone) =>\n TONES[slide.tone ?? fallback];\n\n/** Cycled when a series of items has no accents of its own. */\nexport const ACCENT_CYCLE: AccentName[] = [\n 'accent',\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n];\n","import * as React from 'react';\nimport type { TemplateIconRegistry } from '../../templates/icons';\nimport type { TemplateComponents } from '../../templates/types';\nimport type { DeckLabels } from './labels';\nimport type { Slide, SlideRendererProps } from './types';\nimport { TONES, type ToneSpec } from './tones';\n\nexport interface DeckContextValue {\n slides: Slide[];\n activeSlide: number;\n goTo: (index: number) => void;\n labels: Required<DeckLabels>;\n components?: TemplateComponents;\n icons?: TemplateIconRegistry;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each site graphic owns its props\n graphics?: Record<string, React.ComponentType<any>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each site slide owns its props\n renderers?: Record<string, React.ComponentType<SlideRendererProps<any>>>;\n locale?: string;\n}\n\nconst DeckContext = React.createContext<DeckContextValue | null>(null);\n\nexport const DeckProvider = DeckContext.Provider;\n\nexport function useDeck(): DeckContextValue {\n const ctx = React.useContext(DeckContext);\n if (!ctx) throw new Error('Slide renderers must be rendered inside <Deck>.');\n return ctx;\n}\n\n/** The tone of the slide being rendered, so primitives pick matching text colours. */\nexport const ToneContext = React.createContext<ToneSpec>(TONES.brand);\n\nexport const useTone = () => React.useContext(ToneContext);\n","/** Every string the deck chrome renders, for translation. */\nexport interface DeckLabels {\n /** `aria-roledescription` of the deck region. */\n presentation?: string;\n /** `aria-roledescription` of each slide. */\n slide?: string;\n slideNavigation?: string;\n goToSlide?: (n: number, title: string) => string;\n outline?: string;\n openOutline?: string;\n closeOutline?: string;\n print?: string;\n enterFullscreen?: string;\n exitFullscreen?: string;\n previous?: string;\n next?: string;\n navigateHint?: string;\n fullscreenHint?: string;\n helpHint?: string;\n copy?: string;\n copied?: string;\n statusNow?: string;\n statusNext?: string;\n statusLater?: string;\n watchVideo?: string;\n lines?: string;\n bars?: string;\n more?: (n: number) => string;\n less?: string;\n}\n\nexport const defaultDeckLabels: Required<DeckLabels> = {\n presentation: 'slide presentation',\n slide: 'slide',\n slideNavigation: 'Slide navigation',\n goToSlide: (n, title) => `Go to slide ${n}${title ? `: ${title}` : ''}`,\n outline: 'Slides',\n openOutline: 'Open slide outline',\n closeOutline: 'Close outline',\n print: 'Print or save as PDF',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n previous: 'Previous slide',\n next: 'Next slide',\n navigateHint: 'Navigate',\n fullscreenHint: 'Fullscreen',\n helpHint: 'Help',\n copy: 'Copy link',\n copied: 'Copied',\n statusNow: 'Now',\n statusNext: 'Next',\n statusLater: 'Later',\n watchVideo: 'Watch the video',\n lines: 'Lines',\n bars: 'Bars',\n more: (n) => `Show ${n} more`,\n less: 'Show less',\n};\n","import * as React from 'react';\nimport { ExternalLink } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { safeHref } from '../../templates/Section';\nimport { TemplateIcon } from '../../templates/icons';\nimport { useDeck, useTone } from './DeckContext';\nimport { accent as accentSpec } from './tones';\nimport type { AccentName, BulletItem, SourceRef } from './types';\n\n/** Props for an element that fades up as its slide scrolls into view; `i` staggers it. */\nexport function reveal(i = 0): {\n className: string;\n style: React.CSSProperties;\n} {\n return {\n className: 'mie-deck-reveal',\n style: { '--mie-reveal-i': i } as React.CSSProperties,\n };\n}\n\nexport function Eyebrow({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n const tone = useTone();\n const r = reveal(0);\n return (\n <p\n className={cn(\n r.className,\n 'mb-4 text-xs font-semibold tracking-[0.2em] uppercase',\n accentSpec('accent', tone.isLight).text,\n className\n )}\n style={r.style}\n >\n {children}\n </p>\n );\n}\n\nexport function SlideTitle({\n children,\n className,\n size = 'md',\n}: {\n children: React.ReactNode;\n className?: string;\n size?: 'md' | 'lg' | 'xl';\n}) {\n const tone = useTone();\n const r = reveal(1);\n return (\n <h2\n className={cn(\n r.className,\n 'font-bold tracking-tight text-balance',\n tone.text,\n size === 'xl'\n ? 'text-5xl sm:text-6xl lg:text-7xl'\n : size === 'lg'\n ? 'text-4xl sm:text-5xl lg:text-6xl'\n : 'text-3xl sm:text-4xl lg:text-5xl',\n className\n )}\n style={r.style}\n >\n {children}\n </h2>\n );\n}\n\nexport function Subtitle({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n const tone = useTone();\n const r = reveal(2);\n return (\n <p\n className={cn(\n r.className,\n 'mt-4 max-w-2xl text-base leading-relaxed text-pretty sm:text-lg',\n tone.muted,\n className\n )}\n style={r.style}\n >\n {children}\n </p>\n );\n}\n\n/** The heading block most slides open with. */\nexport function SlideHeader({\n eyebrow,\n title,\n subtitle,\n center,\n}: {\n eyebrow?: string;\n title: string;\n subtitle?: string;\n center?: boolean;\n}) {\n return (\n <div className={cn(center && 'mx-auto text-center')}>\n {eyebrow && <Eyebrow>{eyebrow}</Eyebrow>}\n <SlideTitle>{title}</SlideTitle>\n {subtitle && (\n <Subtitle className={cn(center && 'mx-auto')}>{subtitle}</Subtitle>\n )}\n </div>\n );\n}\n\n/**\n * Splits a figure such as `$1.2M` into prefix, number and suffix by scanning\n * for the first digit run (a regex here is flagged for polynomial backtracking).\n */\nfunction splitFigure(value: string): [string, string, string] | null {\n const start = value.search(/\\d/);\n if (start === -1) return null;\n let end = start;\n while (end < value.length && /[\\d,.]/.test(value[end])) end += 1;\n return [value.slice(0, start), value.slice(start, end), value.slice(end)];\n}\n\n/** Counts a figure such as `$1.2M` or `94%` up from zero when it scrolls into view. */\nexport function CountUp({\n value,\n duration = 1400,\n}: {\n value: string;\n duration?: number;\n}) {\n const ref = React.useRef<HTMLSpanElement>(null);\n const match = splitFigure(value);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el || !match) return;\n if (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) return;\n const [prefix, digits, suffix] = match;\n const target = parseFloat(digits.replace(/,/g, ''));\n if (Number.isNaN(target)) return;\n const decimals = digits.split('.')[1]?.length ?? 0;\n const grouped = digits.includes(',');\n const render = (n: number) => {\n let out = n.toFixed(decimals);\n if (grouped) {\n const [whole, frac] = out.split('.');\n out =\n whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') +\n (frac ? `.${frac}` : '');\n }\n el.textContent = `${prefix}${out}${suffix}`;\n };\n render(0);\n let frame = 0;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry.isIntersecting) return;\n observer.disconnect();\n const start = performance.now();\n const tick = (now: number) => {\n const t = Math.min(1, (now - start) / duration);\n render(target * (1 - Math.pow(1 - t, 3)));\n if (t < 1) frame = requestAnimationFrame(tick);\n else el.textContent = value;\n };\n frame = requestAnimationFrame(tick);\n },\n { threshold: 0.1 }\n );\n observer.observe(el);\n return () => {\n observer.disconnect();\n cancelAnimationFrame(frame);\n el.textContent = value;\n };\n // `match` is derived from `value`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, duration]);\n\n return (\n <span ref={ref} className=\"tabular-nums\">\n {value}\n </span>\n );\n}\n\nexport function DeckIcon({\n name,\n className,\n}: {\n name?: string;\n className?: string;\n}) {\n const { icons } = useDeck();\n if (!name) return null;\n return <TemplateIcon name={name} icons={icons} className={className} />;\n}\n\nexport function IconChip({\n icon,\n accent = 'accent',\n}: {\n icon?: string;\n accent?: AccentName;\n}) {\n const tone = useTone();\n if (!icon) return null;\n const a = accentSpec(accent, tone.isLight);\n return (\n <span\n className={cn(\n 'inline-flex size-11 items-center justify-center rounded-xl border',\n a.soft,\n a.border,\n a.text\n )}\n >\n <DeckIcon name={icon} />\n </span>\n );\n}\n\nexport function Bullet({\n item,\n depth = 0,\n}: {\n item: BulletItem | string;\n depth?: number;\n}) {\n const tone = useTone();\n const a = accentSpec('accent', tone.isLight);\n const b = typeof item === 'string' ? { text: item } : item;\n return (\n <li className={cn('flex flex-col', depth > 0 && 'ms-5 sm:ms-7')}>\n <div className=\"flex items-start gap-3\">\n <span aria-hidden=\"true\" className={cn('mt-2 flex-none', a.text)}>\n {b.icon ? (\n <DeckIcon name={b.icon} className=\"size-[1.1em]\" />\n ) : (\n <span\n className={cn(\n 'block rounded-full',\n depth === 0\n ? cn('size-1.5', a.fill)\n : 'size-1 bg-current opacity-60'\n )}\n />\n )}\n </span>\n <span\n className={cn(\n 'leading-snug',\n depth === 0\n ? cn('text-lg sm:text-xl', tone.text)\n : cn('text-base', tone.muted)\n )}\n >\n {b.lead && (\n <span className={cn('font-semibold', a.text)}>{b.lead} </span>\n )}\n {b.text}\n </span>\n </div>\n {b.children && b.children.length > 0 && (\n <ul className=\"mt-2 flex flex-col gap-2\">\n {b.children.map((child, i) => (\n <Bullet key={i} item={child} depth={depth + 1} />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\nexport function SourceLink({\n source,\n className,\n}: {\n source: SourceRef;\n className?: string;\n}) {\n const tone = useTone();\n // Slide JSON is content data; an executable scheme renders as plain text.\n const href = safeHref(source.url);\n if (!href)\n return (\n <span className={cn('text-xs', tone.muted, className)}>\n {source.label}\n </span>\n );\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'inline-flex items-center gap-1 text-xs underline underline-offset-2 hover:opacity-100',\n tone.muted,\n className\n )}\n >\n {source.label}\n <ExternalLink aria-hidden=\"true\" className=\"size-3\" />\n </a>\n );\n}\n\n/** A figure with its label, used by covers, conclusions and callouts. */\nexport function HighlightFigure({\n value,\n label,\n size = 'md',\n}: {\n value: string;\n label: string;\n size?: 'md' | 'lg';\n}) {\n const tone = useTone();\n return (\n <div className=\"text-center\">\n <div\n className={cn(\n 'font-bold',\n accentSpec('accent', tone.isLight).text,\n size === 'lg' ? 'text-4xl sm:text-5xl' : 'text-3xl sm:text-4xl'\n )}\n >\n <CountUp value={value} />\n </div>\n <div className={cn('mt-1 text-xs tracking-wider uppercase', tone.muted)}>\n {label}\n </div>\n </div>\n );\n}\n\nexport function Card({\n children,\n className,\n i,\n}: {\n children: React.ReactNode;\n className?: string;\n /** Reveal stagger index. */\n i?: number;\n}) {\n const tone = useTone();\n const r = reveal(i ?? 3);\n return (\n <div\n className={cn(\n r.className,\n 'rounded-2xl border p-6',\n tone.card,\n tone.hairline,\n className\n )}\n style={r.style}\n >\n {children}\n </div>\n );\n}\n","import * as React from 'react';\nimport { Minus, TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { useDeck, useTone } from './DeckContext';\nimport { reveal } from './primitives';\nimport { ACCENT_CYCLE, accent as accentSpec } from './tones';\nimport type {\n BarGraphic,\n DeckGraphic,\n HorizontalBarGraphic,\n KpiRowGraphic,\n MultiLineGraphic,\n SparkGraphic,\n} from './types';\n\n/** Screen-reader copy of a chart's numbers; the drawing itself is decorative. */\nfunction ChartTable({\n caption,\n headers,\n rows,\n}: {\n caption: string;\n headers: string[];\n rows: Array<Array<string | number>>;\n}) {\n return (\n <table className=\"sr-only\">\n <caption>{caption}</caption>\n <thead>\n <tr>\n {headers.map((h, i) =>\n h ? (\n <th key={i} scope=\"col\">\n {h}\n </th>\n ) : (\n // The row-label corner cell has no caption of its own.\n <td key={i} />\n )\n )}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, r) => (\n <tr key={r}>\n {row.map((cell, c) =>\n c === 0 ? (\n <th key={c} scope=\"row\">\n {cell}\n </th>\n ) : (\n <td key={c}>{cell}</td>\n )\n )}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nfunction useFormat() {\n const { locale } = useDeck();\n return React.useMemo(\n () => new Intl.NumberFormat(locale, { notation: 'compact' }),\n [locale]\n );\n}\n\nexport function BarChart({ graphic }: { graphic: BarGraphic }) {\n const tone = useTone();\n const format = useFormat();\n const max = Math.max(1, ...graphic.bars.map((b) => b.value));\n const hi = accentSpec('accent', tone.isLight);\n return (\n <figure data-slot=\"deck-bar-chart\" className=\"w-full\">\n <div aria-hidden=\"true\" className=\"flex h-56 items-end gap-2 sm:h-64\">\n {graphic.bars.map((bar, i) => (\n <React.Fragment key={bar.label}>\n {graphic.marker?.atIndex === i && (\n <div className=\"relative h-full w-px flex-none border-s border-dashed border-current opacity-40\">\n <span className=\"absolute start-1/2 -top-6 -translate-x-1/2 text-[0.65rem] font-semibold tracking-wide whitespace-nowrap uppercase opacity-100\">\n {graphic.marker.label}\n </span>\n </div>\n )}\n <div className=\"flex h-full min-w-0 flex-1 flex-col items-center gap-1\">\n {/* Bars share one track height, so labels align regardless of value. */}\n <div className=\"w-full flex-1 pt-5\">\n <div className=\"relative h-full\">\n <div\n className={cn(\n 'mie-deck-grow absolute inset-x-0 bottom-0 rounded-t-md',\n bar.highlight\n ? hi.fill\n : tone.isLight\n ? 'bg-neutral-300'\n : 'bg-white/25'\n )}\n style={\n {\n height: `${(bar.value / max) * 100}%`,\n '--mie-reveal-i': i,\n } as React.CSSProperties\n }\n >\n <span\n className={cn(\n 'absolute inset-x-0 bottom-full mb-1 text-center text-xs font-semibold tabular-nums',\n tone.muted\n )}\n >\n {format.format(bar.value)}\n </span>\n </div>\n </div>\n </div>\n <span\n className={cn(\n 'w-full truncate text-center text-xs',\n tone.muted\n )}\n >\n {bar.label}\n </span>\n </div>\n </React.Fragment>\n ))}\n </div>\n {graphic.yAxisLabel && (\n <figcaption className={cn('mt-2 text-xs', tone.muted)}>\n {graphic.yAxisLabel}\n </figcaption>\n )}\n <ChartTable\n caption={graphic.yAxisLabel ?? 'Values'}\n headers={['', graphic.yAxisLabel ?? 'Value']}\n rows={graphic.bars.map((b) => [b.label, b.value])}\n />\n </figure>\n );\n}\n\nexport function HorizontalBars({ graphic }: { graphic: HorizontalBarGraphic }) {\n const tone = useTone();\n const format = useFormat();\n const max = Math.max(1, ...graphic.bars.map((b) => b.value));\n const a = accentSpec('accent', tone.isLight);\n return (\n <ul data-slot=\"deck-horizontal-bars\" className=\"w-full space-y-3\">\n {graphic.bars.map((bar, i) => {\n const r = reveal(3 + i);\n return (\n <li key={bar.label} className={r.className} style={r.style}>\n <div className=\"mb-1 flex justify-between gap-3 text-sm\">\n <span className=\"truncate\">{bar.label}</span>\n <span className=\"font-semibold tabular-nums\">\n {bar.display ?? format.format(bar.value)}\n </span>\n </div>\n <div\n aria-hidden=\"true\"\n className={cn(\n 'h-2 overflow-hidden rounded-full',\n tone.isLight ? 'bg-neutral-200' : 'bg-white/10'\n )}\n >\n <div\n className={cn('h-full rounded-full', a.fill)}\n style={{ width: `${(bar.value / max) * 100}%` }}\n />\n </div>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function KpiRow({ graphic }: { graphic: KpiRowGraphic }) {\n const tone = useTone();\n return (\n <dl\n data-slot=\"deck-kpi-row\"\n className=\"grid w-full grid-cols-2 gap-4 sm:grid-cols-4\"\n >\n {graphic.kpis.map((kpi, i) => {\n const Trend =\n kpi.trend === 'up'\n ? TrendingUp\n : kpi.trend === 'down'\n ? TrendingDown\n : Minus;\n const r = reveal(3 + i);\n return (\n <div\n key={kpi.label}\n className={cn(\n r.className,\n 'flex flex-col-reverse rounded-xl border p-4',\n tone.card,\n tone.hairline\n )}\n style={r.style}\n >\n <dt className={cn('text-xs', tone.muted)}>{kpi.label}</dt>\n <dd className=\"flex items-center gap-2 text-2xl font-bold tabular-nums\">\n {kpi.value}\n {kpi.trend && (\n <Trend\n aria-hidden=\"true\"\n className={cn(\n 'size-4',\n kpi.trend === 'up'\n ? 'text-success'\n : kpi.trend === 'down'\n ? 'text-destructive'\n : tone.muted\n )}\n />\n )}\n </dd>\n </div>\n );\n })}\n </dl>\n );\n}\n\nfunction points(\n values: number[],\n w: number,\n h: number,\n y: (v: number) => number\n) {\n const step = values.length > 1 ? w / (values.length - 1) : 0;\n return values\n .map((v, i) => `${(i * step).toFixed(1)},${(h - y(v) * h).toFixed(1)}`)\n .join(' ');\n}\n\nexport function Spark({ graphic }: { graphic: SparkGraphic }) {\n const tone = useTone();\n const a = accentSpec('accent', tone.isLight);\n const max = Math.max(1, ...graphic.values);\n const last = graphic.values[graphic.values.length - 1];\n return (\n <figure data-slot=\"deck-spark\" className=\"w-full\">\n <figcaption\n className={cn(\n 'flex items-baseline justify-between text-sm',\n tone.muted\n )}\n >\n <span>{graphic.label}</span>\n <span className={cn('text-2xl font-bold tabular-nums', a.text)}>\n {last}\n {graphic.suffix}\n </span>\n </figcaption>\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 100 30\"\n preserveAspectRatio=\"none\"\n className=\"mt-2 h-12 w-full overflow-visible\"\n >\n <polyline\n points={points(graphic.values, 100, 30, (v) => v / max)}\n fill=\"none\"\n strokeWidth={2}\n vectorEffect=\"non-scaling-stroke\"\n className={a.svgStroke}\n />\n </svg>\n <ChartTable\n caption={graphic.label}\n headers={['#', graphic.label]}\n rows={graphic.values.map((v, i) => [i + 1, v])}\n />\n </figure>\n );\n}\n\nexport function MultiLine({ graphic }: { graphic: MultiLineGraphic }) {\n const tone = useTone();\n const { labels } = useDeck();\n const format = useFormat();\n const [view, setView] = React.useState<'lines' | 'bars'>('lines');\n const all = graphic.series.flatMap((s) => s.values);\n const log = (graphic.scale ?? 'log') === 'log';\n const tx = (v: number) => (log ? Math.log10(Math.max(1, v)) : v);\n const lo = Math.min(...all.map(tx));\n const hi = Math.max(...all.map(tx));\n const y = (v: number) => (hi === lo ? 0.5 : (tx(v) - lo) / (hi - lo));\n const colours = graphic.series.map((_, i) =>\n accentSpec(ACCENT_CYCLE[i % ACCENT_CYCLE.length], tone.isLight)\n );\n const toggle = (active: boolean) =>\n cn(\n 'rounded-full px-3 py-1 text-xs font-semibold transition-colors',\n active\n ? tone.isLight\n ? 'bg-neutral-900 text-white'\n : 'bg-white text-neutral-900'\n : cn(tone.muted, 'hover:opacity-100')\n );\n return (\n <figure data-slot=\"deck-multi-line\" className=\"w-full\">\n <div\n role=\"group\"\n aria-label={graphic.caption}\n className=\"mb-3 flex gap-1\"\n >\n <button\n type=\"button\"\n aria-pressed={view === 'lines'}\n className={toggle(view === 'lines')}\n onClick={() => setView('lines')}\n >\n {labels.lines}\n </button>\n <button\n type=\"button\"\n aria-pressed={view === 'bars'}\n className={toggle(view === 'bars')}\n onClick={() => setView('bars')}\n >\n {labels.bars}\n </button>\n </div>\n {view === 'lines' ? (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 100 50\"\n preserveAspectRatio=\"none\"\n className=\"h-56 w-full overflow-visible\"\n >\n {graphic.series.map((s, i) => (\n <polyline\n key={s.label}\n points={points(s.values, 100, 50, y)}\n fill=\"none\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n className={colours[i].svgStroke}\n />\n ))}\n </svg>\n ) : (\n <div aria-hidden=\"true\" className=\"grid gap-4 sm:grid-cols-2\">\n {graphic.series.map((s, i) => {\n const max = Math.max(1, ...s.values);\n return (\n <div key={s.label}>\n <p\n className={cn('mb-1 text-xs font-semibold', colours[i].text)}\n >\n {s.label}\n </p>\n <div className=\"flex h-20 items-end gap-1\">\n {s.values.map((v, j) => (\n <div\n key={j}\n className={cn('flex-1 rounded-t-sm', colours[i].fill)}\n style={{ height: `${(v / max) * 100}%` }}\n />\n ))}\n </div>\n </div>\n );\n })}\n </div>\n )}\n <div\n aria-hidden=\"true\"\n className={cn('mt-2 flex justify-between text-xs', tone.muted)}\n >\n {graphic.xLabels.map((l) => (\n <span key={l}>{l}</span>\n ))}\n </div>\n <ul className=\"mt-4 flex flex-wrap gap-x-6 gap-y-2 text-sm\">\n {graphic.series.map((s, i) => (\n <li key={s.label} className=\"flex items-center gap-2\">\n <span\n aria-hidden=\"true\"\n className={cn('size-2.5 rounded-full', colours[i].fill)}\n />\n <span className=\"font-medium\">{s.label}</span>\n {s.summary && <span className={tone.muted}>{s.summary}</span>}\n </li>\n ))}\n </ul>\n {graphic.caption && (\n <figcaption className={cn('mt-2 text-xs', tone.muted)}>\n {graphic.caption}\n </figcaption>\n )}\n <ChartTable\n caption={\n graphic.caption ?? graphic.series.map((s) => s.label).join(', ')\n }\n headers={['', ...graphic.series.map((s) => s.label)]}\n rows={graphic.xLabels.map((x, i) => [\n x,\n ...graphic.series.map((s) => format.format(s.values[i] ?? 0)),\n ])}\n />\n </figure>\n );\n}\n\n/** Renders any `DeckGraphic`; `custom` graphics come from `Deck`'s `graphics` map. */\nexport function Graphic({ graphic }: { graphic: DeckGraphic }) {\n const { graphics } = useDeck();\n switch (graphic.type) {\n case 'bar':\n return <BarChart graphic={graphic} />;\n case 'horizontal-bar':\n return <HorizontalBars graphic={graphic} />;\n case 'multi-line':\n return <MultiLine graphic={graphic} />;\n case 'kpi-row':\n return <KpiRow graphic={graphic} />;\n case 'spark':\n return <Spark graphic={graphic} />;\n case 'custom': {\n const Custom = graphics?.[graphic.component];\n return Custom ? <Custom {...graphic.props} /> : null;\n }\n }\n}\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { ToneContext, useDeck } from './DeckContext';\nimport { TONES } from './tones';\nimport type { Slide, SlideTone } from './types';\n\nexport const slideAnchor = (slide: Slide, index: number) =>\n slide.id ?? `slide-${index}`;\n\nexport interface SlideFrameProps {\n slide: Slide;\n index: number;\n /** Default tone for this slide type; the slide's own `tone` wins. */\n tone: SlideTone;\n children: React.ReactNode;\n width?: 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n}\n\nconst widthClass = {\n sm: 'max-w-3xl',\n md: 'max-w-4xl',\n lg: 'max-w-5xl',\n xl: 'max-w-6xl',\n} as const;\n\n/** The full-viewport snap target every slide renders into. */\nexport function SlideFrame({\n slide,\n index,\n tone: fallback,\n children,\n width = 'xl',\n className,\n}: SlideFrameProps) {\n const { labels } = useDeck();\n const toneName = slide.tone ?? fallback;\n const tone = TONES[toneName];\n const title = 'title' in slide ? slide.title : undefined;\n return (\n <ToneContext.Provider value={tone}>\n <section\n id={slideAnchor(slide, index)}\n data-slot=\"deck-slide\"\n data-index={index}\n data-tone={toneName}\n role=\"group\"\n aria-roledescription={labels.slide}\n aria-label={slide.navLabel ?? title ?? `${index + 1}`}\n className={cn(\n 'mie-deck-slide relative isolate flex min-h-dvh w-full snap-start snap-always flex-col items-center justify-center overflow-hidden px-5 py-12 sm:px-8 sm:py-14 md:px-12 lg:px-20',\n tone.surface,\n tone.text,\n className\n )}\n >\n {!tone.isLight && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 -z-10 overflow-hidden print:hidden\"\n >\n <div className=\"bg-accent/15 absolute -end-24 -top-24 size-[28rem] rounded-full blur-3xl\" />\n <div className=\"bg-primary-500/15 absolute -start-24 -bottom-32 size-[32rem] rounded-full blur-3xl\" />\n </div>\n )}\n <div className={cn('relative w-full', widthClass[width])}>\n {children}\n </div>\n </section>\n </ToneContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { ArrowDown, ArrowUp } from 'lucide-react';\nimport { cn } from '../../../utils/cn';\nimport { useDeck, useTone } from '../DeckContext';\nimport { Graphic } from '../graphics';\nimport {\n Card,\n CountUp,\n DeckIcon,\n IconChip,\n SlideHeader,\n SourceLink,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { accent } from '../tones';\nimport type {\n BreakdownSlide,\n CardsSlide,\n ChartSlide,\n ComparisonTableSlide,\n FeatureHighlightSlide,\n ImpactTableSlide,\n MetricsSlide,\n RankedListSlide,\n SlideRendererProps,\n TabsSlide,\n} from '../types';\n\nconst gridCols = (n: number) =>\n n >= 4\n ? 'sm:grid-cols-2 lg:grid-cols-4'\n : n === 3\n ? 'md:grid-cols-3'\n : 'md:grid-cols-2';\n\ntype Body<T> = Omit<T, 'type' | 'id' | 'navLabel' | 'tone' | 'section'>;\n\n// --- metrics -----------------------------------------------------------------\n\nfunction MetricsBody({ slide }: { slide: Body<MetricsSlide> }) {\n const tone = useTone();\n return (\n <>\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div\n className={cn(\n 'mt-10 grid grid-cols-1 gap-5',\n gridCols(slide.metrics.length)\n )}\n >\n {slide.metrics.map((m, i) => (\n <Card key={m.label} i={3 + i}>\n {m.icon && (\n <div className=\"mb-4\">\n <IconChip icon={m.icon} accent={m.accent} />\n </div>\n )}\n <div\n className={cn(\n 'text-4xl font-bold',\n accent(m.accent, tone.isLight).text\n )}\n >\n <CountUp value={m.value} />\n </div>\n <div className=\"mt-2 text-sm font-semibold\">{m.label}</div>\n {m.description && (\n <div className={cn('mt-1 text-sm leading-snug', tone.muted)}>\n {m.description}\n </div>\n )}\n </Card>\n ))}\n </div>\n </>\n );\n}\n\nexport function MetricsRenderer({\n slide,\n index,\n}: SlideRendererProps<MetricsSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <MetricsBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- chart -------------------------------------------------------------------\n\nfunction ChartBody({ slide }: { slide: Body<ChartSlide> }) {\n const tone = useTone();\n return (\n <>\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div {...reveal(3)} className=\"mie-deck-reveal mt-10\">\n <Graphic graphic={slide.graphic} />\n </div>\n {slide.description && (\n <p className={cn('mt-6 max-w-3xl text-sm', tone.muted)}>\n {slide.description}\n </p>\n )}\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </>\n );\n}\n\nexport function ChartRenderer({\n slide,\n index,\n}: SlideRendererProps<ChartSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <ChartBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- feature highlight ---------------------------------------------------------\n\nfunction FeatureHighlightBody({\n slide,\n}: {\n slide: Body<FeatureHighlightSlide>;\n}) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n const hasGraphic = !!slide.graphic;\n return (\n <div\n className={cn(hasGraphic && 'grid items-center gap-10 lg:grid-cols-2')}\n >\n <div>\n <SlideHeader eyebrow={slide.eyebrow} title={slide.title} />\n <p\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal mt-4 text-lg leading-relaxed',\n tone.muted\n )}\n >\n {slide.body}\n </p>\n {slide.stat && (\n <div {...reveal(3)} className=\"mie-deck-reveal mt-8\">\n <div className={cn('text-5xl font-bold', a.text)}>\n <CountUp value={slide.stat.value} />\n </div>\n <div className={cn('mt-1 text-sm', tone.muted)}>\n {slide.stat.label}\n </div>\n </div>\n )}\n {slide.bullets && slide.bullets.length > 0 && (\n <ul {...reveal(4)} className=\"mie-deck-reveal mt-6 space-y-2\">\n {slide.bullets.map((b) => (\n <li key={b} className=\"flex items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className={cn('mt-2 size-1.5 flex-none rounded-full', a.fill)}\n />\n {b}\n </li>\n ))}\n </ul>\n )}\n {slide.pullQuote && (\n <blockquote\n {...reveal(5)}\n className={cn(\n 'mie-deck-reveal mt-8 border-s-2 ps-4 italic',\n a.border,\n tone.muted\n )}\n >\n {slide.pullQuote}\n </blockquote>\n )}\n </div>\n {hasGraphic && (\n <div {...reveal(3)} className=\"mie-deck-reveal flex flex-col gap-8\">\n <Graphic graphic={slide.graphic!} />\n {slide.secondaryGraphic && (\n <Graphic graphic={slide.secondaryGraphic} />\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport function FeatureHighlightRenderer({\n slide,\n index,\n}: SlideRendererProps<FeatureHighlightSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <FeatureHighlightBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- tables --------------------------------------------------------------------\n\nfunction DeckTable({\n headers,\n rows,\n}: {\n headers: string[];\n rows: React.ReactNode[][];\n}) {\n const tone = useTone();\n return (\n <div\n {...reveal(3)}\n className={cn(\n 'mie-deck-reveal mt-10 overflow-x-auto rounded-2xl border',\n tone.hairline,\n tone.card\n )}\n >\n <table className=\"min-w-full text-start text-sm sm:text-base\">\n <thead>\n <tr className={cn('border-b', tone.hairline)}>\n {headers.map((h, i) => (\n <th\n key={h}\n scope=\"col\"\n className={cn(\n 'px-5 py-3 font-semibold',\n i === 0 ? 'text-start' : 'text-end',\n tone.muted\n )}\n >\n {h}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, r) => (\n <tr key={r} className={cn(r > 0 && 'border-t', tone.hairline)}>\n {row.map((cell, c) =>\n c === 0 ? (\n <th\n key={c}\n scope=\"row\"\n className=\"px-5 py-3 text-start font-medium\"\n >\n {cell}\n </th>\n ) : (\n <td key={c} className=\"px-5 py-3 text-end tabular-nums\">\n {cell}\n </td>\n )\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport function ComparisonTableRenderer({\n slide,\n index,\n}: SlideRendererProps<ComparisonTableSlide>) {\n const a = accent('accent', (slide.tone ?? 'deep') === 'light');\n const [metric, before, after, change] = slide.headers ?? [\n 'Metric',\n 'Before',\n 'After',\n 'Change',\n ];\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <DeckTable\n headers={[metric, before, after, change]}\n rows={slide.rows.map((r) => [\n r.label,\n <span key=\"b\" className=\"opacity-70\">\n {r.before}\n </span>,\n r.after,\n <span key=\"c\" className={cn('font-semibold', a.text)}>\n {r.change}\n </span>,\n ])}\n />\n </SlideFrame>\n );\n}\n\nexport function ImpactTableRenderer({\n slide,\n index,\n}: SlideRendererProps<ImpactTableSlide>) {\n const [item, impact] = slide.headers ?? ['Investment', 'Impact'];\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <DeckTable\n headers={[item, impact]}\n rows={slide.rows.map((r) => [\n <span key=\"i\">\n {r.item}\n {r.detail && (\n <span className=\"block text-sm font-normal opacity-70\">\n {r.detail}\n </span>\n )}\n </span>,\n <span key=\"m\" className=\"block text-start sm:text-end\">\n {r.impact}\n </span>,\n ])}\n />\n </SlideFrame>\n );\n}\n\n// --- cards -------------------------------------------------------------------\n\nfunction CardsBody({ slide }: { slide: Body<CardsSlide> }) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n return (\n <>\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div\n className={cn(\n 'mt-10 grid grid-cols-1 gap-5',\n gridCols(slide.cards.length)\n )}\n >\n {slide.cards.map((card, i) => (\n <Card key={card.title} i={3 + i}>\n {card.icon && (\n <div className=\"mb-4\">\n <IconChip icon={card.icon} />\n </div>\n )}\n <h3 className=\"text-lg font-semibold\">{card.title}</h3>\n <p className={cn('mt-2 leading-relaxed', tone.muted)}>\n {card.body}\n </p>\n {card.stat && (\n <div className=\"mt-6\">\n <div className={cn('text-3xl font-bold', a.text)}>\n <CountUp value={card.stat} />\n </div>\n {card.statLabel && (\n <div className={cn('text-sm', tone.muted)}>\n {card.statLabel}\n </div>\n )}\n </div>\n )}\n </Card>\n ))}\n </div>\n {slide.note && (\n <p className={cn('mt-8 text-sm italic', tone.muted)}>{slide.note}</p>\n )}\n </>\n );\n}\n\nexport function CardsRenderer({\n slide,\n index,\n}: SlideRendererProps<CardsSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <CardsBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- ranked list -----------------------------------------------------------------\n\nfunction RankedListBody({ slide }: { slide: Body<RankedListSlide> }) {\n const tone = useTone();\n const { locale } = useDeck();\n const a = accent('accent', tone.isLight);\n const format = new Intl.NumberFormat(locale);\n const max = Math.max(1, ...slide.entries.map((e) => e.value));\n return (\n <>\n <div className=\"flex flex-wrap items-end justify-between gap-4\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n {slide.outOf && (\n <p className={cn('text-sm', tone.muted)}>{slide.outOf}</p>\n )}\n </div>\n <ol className=\"mt-8 flex flex-col gap-2\">\n {slide.entries.map((e, i) => {\n const r = reveal(3 + i);\n return (\n <li\n key={e.label}\n className={cn(\n r.className,\n 'grid grid-cols-[2rem_minmax(0,1fr)_auto] items-center gap-4 rounded-xl border px-4 py-3',\n e.highlighted\n ? cn(a.soft, a.border)\n : cn(tone.card, tone.hairline)\n )}\n style={r.style}\n >\n <span\n className={cn(\n 'text-sm font-bold tabular-nums',\n e.highlighted ? a.text : tone.muted\n )}\n >\n {i + 1}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block truncate font-medium\">{e.label}</span>\n {e.sublabel && (\n <span className={cn('block truncate text-xs', tone.muted)}>\n {e.sublabel}\n </span>\n )}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mt-2 block h-1.5 overflow-hidden rounded-full',\n tone.isLight ? 'bg-neutral-200' : 'bg-white/10'\n )}\n >\n <span\n className={cn(\n 'block h-full rounded-full',\n e.highlighted\n ? a.fill\n : tone.isLight\n ? 'bg-neutral-400'\n : 'bg-white/40'\n )}\n style={{ width: `${(e.value / max) * 100}%` }}\n />\n </span>\n </span>\n <span className=\"text-end\">\n <span className=\"block font-semibold tabular-nums\">\n {e.display ?? format.format(e.value)}\n </span>\n {e.secondary && (\n <span className={cn('block text-xs', tone.muted)}>\n {e.secondary}\n </span>\n )}\n {e.change != null && e.change !== 0 && (\n <span\n className={cn(\n 'inline-flex items-center text-xs font-semibold',\n e.change > 0 ? 'text-success' : 'text-destructive'\n )}\n >\n {e.change > 0 ? (\n <ArrowUp aria-hidden=\"true\" className=\"size-3\" />\n ) : (\n <ArrowDown aria-hidden=\"true\" className=\"size-3\" />\n )}\n <span className=\"sr-only\">\n {e.change > 0 ? '+' : '\\u2212'}\n </span>\n {Math.abs(e.change)}\n </span>\n )}\n </span>\n </li>\n );\n })}\n </ol>\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </>\n );\n}\n\nexport function RankedListRenderer({\n slide,\n index,\n}: SlideRendererProps<RankedListSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\" width=\"lg\">\n <RankedListBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- breakdown -----------------------------------------------------------------\n\nexport function BreakdownRenderer({\n slide,\n index,\n}: SlideRendererProps<BreakdownSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <BreakdownBody slide={slide} />\n </SlideFrame>\n );\n}\n\nfunction BreakdownBody({ slide }: { slide: BreakdownSlide }) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n const total = slide.breakdown?.reduce((s, b) => s + b.count, 0) || 1;\n return (\n <div className=\"grid gap-10 lg:grid-cols-2\">\n <div>\n <SlideHeader eyebrow={slide.eyebrow} title={slide.title} />\n {slide.body && (\n <p\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal mt-4 text-lg leading-relaxed',\n tone.muted\n )}\n >\n {slide.body}\n </p>\n )}\n {slide.callout && (\n <div\n {...reveal(3)}\n className={cn(\n 'mie-deck-reveal mt-8 inline-flex items-baseline gap-3 rounded-2xl border px-5 py-3',\n a.soft,\n a.border\n )}\n >\n <span className={cn('text-4xl font-bold', a.text)}>\n <CountUp value={slide.callout.value} />\n </span>\n <span className=\"text-sm\">{slide.callout.label}</span>\n </div>\n )}\n {slide.talkingPoint && (\n <p className={cn('mt-6 text-sm italic', tone.muted)}>\n “{slide.talkingPoint}”\n </p>\n )}\n {slide.pullQuote && (\n <blockquote\n className={cn(\n 'mt-6 border-s-2 ps-4 text-lg font-semibold',\n a.border\n )}\n >\n {slide.pullQuote}\n </blockquote>\n )}\n </div>\n <div {...reveal(3)} className=\"mie-deck-reveal flex flex-col gap-8\">\n {slide.series && <Graphic graphic={slide.series} />}\n {slide.breakdown && slide.breakdown.length > 0 && (\n <ul className=\"space-y-2\">\n {slide.breakdown.map((b) => (\n <li key={b.label} className=\"flex items-center gap-3 text-sm\">\n <span className=\"w-36 flex-none truncate\">{b.label}</span>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'h-2 flex-1 overflow-hidden rounded-full',\n tone.isLight ? 'bg-neutral-200' : 'bg-white/10'\n )}\n >\n <span\n className={cn('block h-full rounded-full', a.fill)}\n style={{ width: `${(b.count / total) * 100}%` }}\n />\n </span>\n <span className=\"w-10 flex-none text-end font-semibold tabular-nums\">\n {b.count}\n </span>\n </li>\n ))}\n </ul>\n )}\n {slide.entries && slide.entries.length > 0 && (\n <ul\n className={cn(\n 'max-h-64 divide-y overflow-y-auto rounded-xl border',\n tone.hairline,\n tone.card\n )}\n >\n {slide.entries.map((e) => (\n <li\n key={`${e.title}-${e.date ?? ''}`}\n className={cn(\n 'flex items-center justify-between gap-3 px-4 py-2 text-sm',\n tone.hairline\n )}\n >\n <span className=\"min-w-0\">\n <span className=\"block truncate font-medium\">{e.title}</span>\n {e.meta && (\n <span className={cn('block truncate text-xs', tone.muted)}>\n {e.meta}\n </span>\n )}\n </span>\n {e.date && (\n <span\n className={cn('flex-none text-xs tabular-nums', tone.muted)}\n >\n {e.date}\n </span>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n );\n}\n\n// --- tabs ----------------------------------------------------------------------\n\nexport function TabsRenderer({ slide, index }: SlideRendererProps<TabsSlide>) {\n const [active, setActive] = React.useState(0);\n const baseId = React.useId();\n const tabs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const current = slide.tabs[active]?.slide;\n const onKey = (e: React.KeyboardEvent) => {\n const n = slide.tabs.length;\n const next =\n e.key === 'ArrowRight'\n ? (active + 1) % n\n : e.key === 'ArrowLeft'\n ? (active - 1 + n) % n\n : e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? n - 1\n : -1;\n if (next < 0) return;\n e.preventDefault();\n e.stopPropagation();\n setActive(next);\n tabs.current[next]?.focus();\n };\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <SlideHeader eyebrow={slide.eyebrow} title={slide.title} />\n <div\n role=\"tablist\"\n aria-label={slide.title}\n className=\"mt-6 flex flex-wrap gap-2\"\n >\n {slide.tabs.map((tab, i) => (\n <TabButton\n key={tab.label}\n ref={(el) => {\n tabs.current[i] = el;\n }}\n id={`${baseId}-tab-${i}`}\n panelId={`${baseId}-panel`}\n selected={i === active}\n icon={tab.icon}\n onClick={() => setActive(i)}\n onKeyDown={onKey}\n >\n {tab.label}\n </TabButton>\n ))}\n </div>\n <div\n role=\"tabpanel\"\n id={`${baseId}-panel`}\n aria-labelledby={`${baseId}-tab-${active}`}\n className=\"mt-8\"\n >\n {current?.type === 'metrics' && <MetricsBody slide={current} />}\n {current?.type === 'chart' && <ChartBody slide={current} />}\n {current?.type === 'feature-highlight' && (\n <FeatureHighlightBody slide={current} />\n )}\n {current?.type === 'cards' && <CardsBody slide={current} />}\n {current?.type === 'ranked-list' && <RankedListBody slide={current} />}\n </div>\n </SlideFrame>\n );\n}\n\nconst TabButton = React.forwardRef<\n HTMLButtonElement,\n {\n id: string;\n panelId: string;\n selected: boolean;\n icon?: string;\n onClick: () => void;\n onKeyDown: (e: React.KeyboardEvent) => void;\n children: React.ReactNode;\n }\n>(({ id, panelId, selected, icon, onClick, onKeyDown, children }, ref) => {\n const tone = useTone();\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-selected={selected}\n aria-controls={panelId}\n tabIndex={selected ? 0 : -1}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={cn(\n 'inline-flex items-center gap-2 rounded-full border px-4 py-1.5 text-sm font-semibold transition-colors',\n selected\n ? tone.isLight\n ? 'border-neutral-900 bg-neutral-900 text-white'\n : 'border-white bg-white text-neutral-900'\n : cn(\n tone.hairline,\n tone.muted,\n tone.isLight ? 'hover:bg-neutral-100' : 'hover:bg-white/10'\n )\n )}\n >\n {icon && <DeckIcon name={icon} className=\"size-4\" />}\n {children}\n </button>\n );\n});\nTabButton.displayName = 'TabButton';\n","import * as React from 'react';\nimport { cn } from '../../../utils/cn';\nimport { TemplateImg } from '../../../templates/Section';\nimport { useDeck, useTone } from '../DeckContext';\nimport {\n Card,\n DeckIcon,\n Eyebrow,\n IconChip,\n SlideHeader,\n SlideTitle,\n SourceLink,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { ACCENT_CYCLE, accent, toneOf } from '../tones';\nimport type {\n AdoptionCurveSlide,\n CycleSlide,\n DiagramSlide,\n RoadmapSlide,\n SlideRendererProps,\n} from '../types';\n\n// --- cycle ---------------------------------------------------------------------\n\nexport function CycleRenderer({\n slide,\n index,\n}: SlideRendererProps<CycleSlide>) {\n const tone = toneOf(slide, 'deep');\n const n = slide.nodes.length;\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <div className=\"grid items-center gap-10 lg:grid-cols-2\">\n <div>\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n <SlideTitle>{slide.title}</SlideTitle>\n {slide.body && (\n <p\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal mt-6 text-lg leading-relaxed',\n tone.muted\n )}\n >\n {slide.body}\n </p>\n )}\n {slide.talkingPoint && (\n <p className={cn('mt-6 italic', tone.muted)}>\n “{slide.talkingPoint}”\n </p>\n )}\n </div>\n <CycleWheel nodes={slide.nodes} n={n} />\n </div>\n </SlideFrame>\n );\n}\n\nfunction CycleWheel({ nodes, n }: { nodes: CycleSlide['nodes']; n: number }) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n return (\n <ol\n {...reveal(3)}\n className=\"mie-deck-reveal relative mx-auto aspect-square w-64 sm:w-80 md:w-96\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 400 400\"\n className=\"mie-deck-spin absolute inset-0 size-full\"\n >\n <circle\n cx=\"200\"\n cy=\"200\"\n r=\"150\"\n fill=\"none\"\n strokeWidth=\"2\"\n className={tone.isLight ? 'stroke-neutral-200' : 'stroke-white/10'}\n />\n <circle\n cx=\"200\"\n cy=\"200\"\n r=\"150\"\n fill=\"none\"\n strokeWidth=\"2\"\n strokeDasharray=\"50 200\"\n strokeLinecap=\"round\"\n className={a.svgStroke}\n />\n {nodes.map((_, i) => (\n <polygon\n key={i}\n points=\"200,47 207,60 193,60\"\n transform={`rotate(${(360 / n) * i + 180 / n} 200 200)`}\n className={a.svgFill}\n opacity={0.8}\n />\n ))}\n </svg>\n {nodes.map((node, i) => {\n const angle = (2 * Math.PI * i) / n - Math.PI / 2;\n return (\n <li\n key={node.label}\n className={cn(\n 'absolute z-10 w-28 -translate-x-1/2 -translate-y-1/2 rounded-xl border px-3 py-2 text-center shadow-lg backdrop-blur sm:w-32',\n tone.hairline,\n tone.isLight ? 'bg-white' : 'bg-neutral-900/90'\n )}\n style={{\n // rtl-ignore -- orbit nodes use trig coordinates; diagram stays LTR\n left: `${50 + 37.5 * Math.cos(angle)}%`,\n top: `${50 + 37.5 * Math.sin(angle)}%`,\n }}\n >\n {node.icon && (\n <DeckIcon\n name={node.icon}\n className={cn('mx-auto mb-1 size-4', a.text)}\n />\n )}\n <p className=\"text-xs font-bold sm:text-sm\">{node.label}</p>\n {node.metric && (\n <p className={cn('text-sm font-bold sm:text-lg', a.text)}>\n {node.metric}\n </p>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n\n// --- roadmap -------------------------------------------------------------------\n\nexport function RoadmapRenderer({\n slide,\n index,\n}: SlideRendererProps<RoadmapSlide>) {\n const { labels } = useDeck();\n const tone = toneOf(slide, 'ink');\n const a = accent('accent', tone.isLight);\n const status = {\n now: labels.statusNow,\n next: labels.statusNext,\n later: labels.statusLater,\n };\n const statusTag = {\n now: cn(a.soft, a.border, a.text),\n next: cn(\n accent('primary', tone.isLight).soft,\n accent('primary', tone.isLight).border,\n accent('primary', tone.isLight).text\n ),\n later: cn(tone.hairline, tone.muted),\n };\n return (\n <SlideFrame slide={slide} index={index} tone=\"ink\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <ol\n className={cn(\n 'relative mt-10 flex flex-col gap-6 border-s ps-8',\n a.border\n )}\n >\n {slide.items.map((item, i) => {\n const r = reveal(3 + i);\n return (\n <li\n key={item.title}\n className={cn(r.className, 'relative')}\n style={r.style}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'absolute -start-[2.35rem] top-1.5 flex size-4 items-center justify-center rounded-full border-2',\n a.border,\n tone.isLight ? 'bg-white' : 'bg-neutral-950'\n )}\n >\n <span className={cn('size-1.5 rounded-full', a.fill)} />\n </span>\n <div className=\"flex flex-wrap items-center gap-3\">\n {item.icon && (\n <IconChip\n icon={item.icon}\n accent={item.status === 'later' ? 'primary' : 'accent'}\n />\n )}\n <h3 className=\"text-lg font-semibold sm:text-xl\">\n {item.title}\n </h3>\n {item.status && (\n <span\n className={cn(\n 'rounded-full border px-2.5 py-0.5 text-[0.65rem] font-semibold tracking-wider uppercase',\n statusTag[item.status]\n )}\n >\n {status[item.status]}\n </span>\n )}\n </div>\n {item.children && item.children.length > 0 && (\n <ul className=\"mt-2 flex flex-wrap gap-x-6 gap-y-1.5\">\n {item.children.map((child) => (\n <li\n key={child}\n className={cn(\n 'flex items-center gap-2 text-sm',\n tone.muted\n )}\n >\n <span\n aria-hidden=\"true\"\n className=\"size-1 rounded-full bg-current\"\n />\n {child}\n </li>\n ))}\n </ul>\n )}\n </li>\n );\n })}\n </ol>\n </SlideFrame>\n );\n}\n\n// --- adoption curve --------------------------------------------------------------\n\nconst BASE = 50;\nconst PEAK = 6;\nconst SIGMA = 15;\nconst gaussY = (x: number) =>\n BASE - (BASE - PEAK) * Math.exp(-((x - 50) ** 2) / (2 * SIGMA * SIGMA));\n\nexport function AdoptionCurveRenderer({\n slide,\n index,\n}: SlideRendererProps<AdoptionCurveSlide>) {\n const tone = toneOf(slide, 'ink');\n const clipId = React.useId();\n const pts: string[] = [];\n for (let x = 0; x <= 100; x += 1.5) pts.push(`${x},${gaussY(x).toFixed(2)}`);\n const area = `M 0,${BASE} L ${pts.join(' L ')} L 100,${BASE} Z`;\n const values = slide.segments.map((s) => parseFloat(s.pct) || 0);\n const sum = values.reduce((x, y) => x + y, 0) || 1;\n const widths = values.map((v) => (v / sum) * 100);\n const bands = slide.segments.map((s, i) => ({\n ...s,\n x0: widths.slice(0, i).reduce((x, y) => x + y, 0),\n w: widths[i],\n spec: accent(\n s.accent ?? ACCENT_CYCLE[i % ACCENT_CYCLE.length],\n tone.isLight\n ),\n }));\n const hi = accent('accent', tone.isLight);\n return (\n <SlideFrame slide={slide} index={index} tone=\"ink\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div {...reveal(3)} className=\"mie-deck-reveal relative mt-8 pb-10\">\n {slide.annotations?.map((note) => (\n <span\n key={note.text}\n className={cn(\n 'absolute z-20 w-40 max-w-[42vw] -translate-x-1/2 rounded-lg border px-3 py-1.5 text-center text-xs leading-snug font-semibold',\n note.emphasis\n ? cn(hi.soft, hi.border, hi.text)\n : cn(tone.hairline, tone.card)\n )}\n style={{\n // rtl-ignore -- annotation anchored to LTR timeline axis coordinates\n left: `${note.atPct}%`,\n [note.side === 'bottom' ? 'bottom' : 'top']: 0,\n }}\n >\n {note.text}\n </span>\n ))}\n <div className=\"h-[clamp(180px,30vh,300px)] w-full\">\n <svg\n viewBox=\"0 0 100 56\"\n preserveAspectRatio=\"none\"\n className=\"size-full overflow-visible\"\n role=\"img\"\n aria-label={slide.segments\n .map((s) => `${s.label} ${s.pct}`)\n .join(', ')}\n >\n <defs>\n <clipPath id={clipId}>\n <path d={area} />\n </clipPath>\n </defs>\n <g clipPath={`url(#${clipId})`}>\n {bands.map((b) => (\n <rect\n key={b.label}\n x={b.x0}\n y={0}\n width={b.w}\n height={BASE}\n className={b.spec.svgFill}\n opacity={0.8}\n />\n ))}\n </g>\n <path\n d={`M ${pts.join(' L ')}`}\n fill=\"none\"\n strokeWidth={1}\n vectorEffect=\"non-scaling-stroke\"\n className={tone.isLight ? 'stroke-neutral-900' : 'stroke-white'}\n />\n <line\n x1={0}\n y1={BASE}\n x2={100}\n y2={BASE}\n strokeWidth={0.5}\n vectorEffect=\"non-scaling-stroke\"\n className={\n tone.isLight ? 'stroke-neutral-400' : 'stroke-white/25'\n }\n />\n </svg>\n </div>\n <div aria-hidden=\"true\" className=\"mt-2 flex w-full\">\n {bands.map((b) => (\n <div\n key={b.label}\n className=\"min-w-0 px-1 text-center\"\n style={{ flexBasis: `${b.w}%` }}\n >\n <div\n className={cn('text-sm font-bold sm:text-base', b.spec.text)}\n >\n {b.pct}\n </div>\n <div\n className={cn(\n 'truncate text-[0.7rem] tracking-wide uppercase sm:text-xs',\n tone.muted\n )}\n >\n {b.label}\n </div>\n </div>\n ))}\n </div>\n {slide.marker && (\n <div\n className=\"absolute bottom-0 z-20 -translate-x-1/2 text-center\"\n // rtl-ignore -- marker anchored to LTR bar-chart axis coordinates\n style={{ left: `${slide.marker.atPct}%` }}\n >\n <div\n aria-hidden=\"true\"\n className={cn('mx-auto h-4 w-px', hi.fill)}\n />\n <span\n className={cn(\n 'mt-1 inline-block rounded-full border px-2.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase',\n hi.soft,\n hi.border,\n hi.text\n )}\n >\n {slide.marker.label}\n </span>\n </div>\n )}\n </div>\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </SlideFrame>\n );\n}\n\n// --- architecture diagram ----------------------------------------------------------\n\nexport function DiagramRenderer({\n slide,\n index,\n}: SlideRendererProps<DiagramSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'deep');\n const center = new Map(slide.nodes.map((n) => [n.id, n]));\n const left = slide.callouts?.filter((c) => c.side === 'left') ?? [];\n const right = slide.callouts?.filter((c) => c.side === 'right') ?? [];\n const cols =\n left.length && right.length\n ? 'lg:grid-cols-[minmax(0,1fr)_minmax(0,2.4fr)_minmax(0,1fr)]'\n : right.length\n ? 'lg:grid-cols-[minmax(0,2.7fr)_minmax(0,1.25fr)]'\n : left.length\n ? 'lg:grid-cols-[minmax(0,1.25fr)_minmax(0,2.7fr)]'\n : '';\n const stageBg = tone.isLight ? 'bg-white' : 'bg-neutral-900';\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div className={cn('mt-8', cols && cn('grid items-center gap-6', cols))}>\n {left.length > 0 && <Callouts callouts={left} end />}\n <div\n {...reveal(3)}\n className=\"mie-deck-reveal relative mx-auto h-[clamp(260px,40vh,440px)] w-full max-w-3xl\"\n >\n {slide.boundaries?.map((b) => {\n const xs = b.nodes.map((id) => center.get(id)?.x ?? 50);\n const ys = b.nodes.map((id) => center.get(id)?.y ?? 50);\n const l = Math.min(...xs) - 13;\n const t = Math.min(...ys) - 17;\n const spec = accent(b.accent ?? 'primary', tone.isLight);\n return (\n <div\n key={b.label}\n className={cn(\n 'absolute rounded-2xl border border-dashed',\n tone.hairline\n )}\n style={{\n // rtl-ignore -- group outline shares the SVG edge coordinate space\n left: `${l}%`,\n top: `${t}%`,\n width: `${Math.max(...xs) + 13 - l}%`,\n height: `${Math.max(...ys) + 17 - t}%`,\n }}\n >\n <span\n className={cn(\n 'absolute start-4 -top-3 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-semibold tracking-wide uppercase',\n stageBg,\n spec.border,\n spec.text\n )}\n >\n {b.label}\n </span>\n </div>\n );\n })}\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n className=\"absolute inset-0 size-full\"\n >\n {slide.edges.map((e) => {\n const a = center.get(e.from);\n const b = center.get(e.to);\n if (!a || !b) return null;\n return (\n <line\n key={`${e.from}-${e.to}`}\n x1={a.x}\n y1={a.y}\n x2={b.x}\n y2={b.y}\n strokeWidth={1.2}\n strokeDasharray={e.dashed ? '4 3' : undefined}\n vectorEffect=\"non-scaling-stroke\"\n className={\n e.accent\n ? accent(e.accent, tone.isLight).svgStroke\n : tone.isLight\n ? 'stroke-neutral-400'\n : 'stroke-white/30'\n }\n />\n );\n })}\n </svg>\n {slide.edges.map((e, i) => {\n const a = center.get(e.from);\n const b = center.get(e.to);\n if (!a || !b || !e.flow) return null;\n return (\n <span\n key={`flow-${e.from}-${e.to}`}\n aria-hidden=\"true\"\n className={cn(\n 'mie-deck-flow absolute size-2 -translate-x-1/2 -translate-y-1/2 rounded-full',\n accent(e.accent ?? 'accent', tone.isLight).fill\n )}\n style={\n {\n '--mie-from-x': `${a.x}%`,\n '--mie-from-y': `${a.y}%`,\n '--mie-to-x': `${b.x}%`,\n '--mie-to-y': `${b.y}%`,\n animationDelay: `${i * 0.5}s`,\n } as React.CSSProperties\n }\n />\n );\n })}\n {slide.edges.map((e) => {\n const a = center.get(e.from);\n const b = center.get(e.to);\n if (!a || !b || !e.label) return null;\n const at = e.labelAt ?? 0.5;\n return (\n <span\n key={`label-${e.from}-${e.to}`}\n className={cn(\n 'absolute z-10 -translate-x-1/2 -translate-y-1/2 rounded-md border px-1.5 py-0.5 text-[0.6rem] font-medium whitespace-nowrap',\n stageBg,\n tone.hairline,\n tone.muted\n )}\n style={{\n // rtl-ignore -- edge label interpolated in the SVG line coordinate space\n left: `${a.x + (b.x - a.x) * at}%`,\n top: `${a.y + (b.y - a.y) * at}%`,\n }}\n >\n {e.label}\n </span>\n );\n })}\n {slide.nodes.map((node) => {\n const spec = accent(node.accent ?? 'primary', tone.isLight);\n return (\n <div\n key={node.id}\n className=\"absolute z-[5] -translate-x-1/2 -translate-y-1/2\"\n style={{\n // rtl-ignore -- node positioned in the SVG edge coordinate space\n left: `${node.x}%`,\n top: `${node.y}%`,\n width: `${node.w ?? 20}%`,\n }}\n >\n <div\n className={cn(\n 'flex flex-col items-center gap-1.5 rounded-xl border px-2 py-3 text-center shadow-lg',\n stageBg,\n spec.border\n )}\n >\n {node.image ? (\n <TemplateImg\n {...node.image}\n components={components}\n className=\"h-7 w-auto object-contain sm:h-9\"\n />\n ) : (\n node.icon && (\n <DeckIcon\n name={node.icon}\n className={cn('size-5 sm:size-6', spec.text)}\n />\n )\n )}\n <span className=\"text-[0.62rem] leading-tight font-semibold sm:text-xs\">\n {node.label}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n {right.length > 0 && <Callouts callouts={right} />}\n </div>\n </SlideFrame>\n );\n}\n\nfunction Callouts({\n callouts,\n end,\n}: {\n callouts: NonNullable<DiagramSlide['callouts']>;\n end?: boolean;\n}) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n return (\n <div className={cn('flex flex-col gap-4', end && 'lg:text-end')}>\n {callouts.map((c, i) => (\n <Card key={c.text} i={4 + i} className=\"p-4\">\n {c.lead && (\n <div className={cn('text-sm font-bold', a.text)}>{c.lead}</div>\n )}\n <p className={cn('mt-1 text-sm leading-snug', tone.muted)}>\n {c.text}\n </p>\n </Card>\n ))}\n </div>\n );\n}\n","import * as React from 'react';\nimport { ChevronRight, ExternalLink, Play } from 'lucide-react';\nimport { cn } from '../../../utils/cn';\nimport { TemplateImg, safeHref } from '../../../templates/Section';\nimport { useDeck, useTone } from '../DeckContext';\nimport {\n Card,\n CountUp,\n DeckIcon,\n SlideHeader,\n SourceLink,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { accent, toneOf } from '../tones';\nimport type {\n Certification,\n CertificationGridSlide,\n ShowcaseSlide,\n SlideRendererProps,\n} from '../types';\n\n// --- certification grid ------------------------------------------------------------\n\nfunction BadgeCard({ cert, i }: { cert: Certification; i: number }) {\n const { components } = useDeck();\n const tone = useTone();\n const a = accent(cert.accent ?? 'accent', tone.isLight);\n return (\n <Card i={i} className=\"flex flex-col items-center p-3 text-center\">\n {cert.image ? (\n <div className=\"mb-2 flex h-11 items-center justify-center rounded-lg bg-white px-2.5\">\n <TemplateImg\n {...cert.image}\n components={components}\n className=\"h-7 w-auto max-w-[72px] object-contain\"\n />\n </div>\n ) : (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'mb-2 flex size-10 items-center justify-center rounded-lg border text-sm font-extrabold',\n a.soft,\n a.border,\n a.text\n )}\n >\n {cert.badge ?? cert.name.slice(0, 3).toUpperCase()}\n </div>\n )}\n <div className=\"text-[0.8rem] leading-tight font-bold\">{cert.name}</div>\n {cert.issuer && (\n <div\n className={cn(\n 'mt-0.5 text-[0.62rem] tracking-wide uppercase',\n tone.muted\n )}\n >\n {cert.issuer}\n </div>\n )}\n {cert.source && <SourceLink source={cert.source} className=\"mt-1.5\" />}\n </Card>\n );\n}\n\nexport function CertificationGridRenderer({\n slide,\n index,\n}: SlideRendererProps<CertificationGridSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'deep');\n const count = slide.certifications.length;\n const featured = slide.featured;\n const cols = featured\n ? 'sm:grid-cols-3 lg:grid-cols-4'\n : count >= 5\n ? 'sm:grid-cols-3 lg:grid-cols-5'\n : count === 4\n ? 'sm:grid-cols-2 lg:grid-cols-4'\n : 'sm:grid-cols-3';\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div\n className={\n featured\n ? 'mt-7 grid items-center gap-8 lg:grid-cols-[auto_minmax(0,1fr)] lg:gap-12'\n : 'mt-6'\n }\n >\n {featured && (\n <div\n {...reveal(3)}\n className=\"mie-deck-reveal flex flex-col items-center text-center\"\n >\n <div className=\"flex size-40 items-center justify-center rounded-full bg-white p-2 shadow-2xl sm:size-48\">\n {featured.image ? (\n <TemplateImg\n {...featured.image}\n components={components}\n className=\"size-full object-contain\"\n />\n ) : (\n <span className=\"text-2xl font-extrabold text-neutral-900\">\n {featured.badge ?? featured.name}\n </span>\n )}\n </div>\n <p className=\"mt-4 font-semibold\">{featured.name}</p>\n {featured.description && (\n <p\n className={cn(\n 'mt-1 max-w-[15rem] text-sm leading-snug',\n tone.muted\n )}\n >\n {featured.description}\n </p>\n )}\n {featured.source && (\n <SourceLink source={featured.source} className=\"mt-2.5\" />\n )}\n </div>\n )}\n <div className={cn('grid grid-cols-2 gap-3', cols)}>\n {slide.certifications.map((cert, i) => (\n <BadgeCard key={cert.name} cert={cert} i={4 + i} />\n ))}\n </div>\n </div>\n {slide.footnote && (\n <SourceLink source={slide.footnote} className=\"mt-6\" />\n )}\n </SlideFrame>\n );\n}\n\n// --- showcase ----------------------------------------------------------------------\n\nconst VISIBLE = 3;\n\nfunction ShowcaseCategory({\n category,\n i,\n}: {\n category: ShowcaseSlide['categories'][number];\n i: number;\n}) {\n const { labels } = useDeck();\n const tone = useTone();\n const a = accent('primary', tone.isLight);\n const [open, setOpen] = React.useState(false);\n const listId = React.useId();\n const hidden = category.items.length - VISIBLE;\n return (\n <Card i={i} className=\"p-4\">\n <h3\n className={cn(\n 'mb-3 flex items-center gap-2 text-xs font-bold tracking-wider uppercase',\n a.text\n )}\n >\n {category.icon && <DeckIcon name={category.icon} className=\"size-4\" />}\n {category.title}\n <span className={cn('ms-auto tabular-nums', tone.muted)}>\n {category.items.length}\n </span>\n </h3>\n <ul id={listId} className=\"space-y-1\">\n {(open ? category.items : category.items.slice(0, VISIBLE)).map(\n (item) => (\n <li\n key={item}\n className={cn('flex gap-2 text-xs leading-relaxed', tone.muted)}\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"mt-0.5 size-3 flex-none rtl:-scale-x-100\"\n />\n {item}\n </li>\n )\n )}\n </ul>\n {hidden > 0 && (\n <button\n type=\"button\"\n aria-expanded={open}\n aria-controls={listId}\n onClick={() => setOpen((o) => !o)}\n className={cn(\n 'mt-2 text-xs font-medium underline-offset-2 hover:underline',\n a.text\n )}\n >\n {open ? labels.less : labels.more(hidden)}\n </button>\n )}\n </Card>\n );\n}\n\nexport function ShowcaseRenderer({\n slide,\n index,\n}: SlideRendererProps<ShowcaseSlide>) {\n const { components, labels } = useDeck();\n const tone = toneOf(slide, 'deep');\n const a = accent('accent', tone.isLight);\n const video = slide.video;\n // Slide JSON is content data; a video link with an executable scheme is dropped.\n const videoHref = video ? safeHref(video.href) : undefined;\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <div className=\"mb-6 flex flex-col items-start gap-4 sm:flex-row sm:items-end sm:justify-between\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n {slide.total && (\n <div\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal flex flex-none items-baseline gap-2 rounded-full border px-5 py-2',\n a.soft,\n a.border\n )}\n >\n <span className={cn('text-3xl font-bold', a.text)}>\n <CountUp value={slide.total.value} />\n </span>\n <span className={cn('text-sm', tone.muted)}>\n {slide.total.label}\n </span>\n </div>\n )}\n </div>\n <div\n className={cn('grid gap-6', videoHref && 'lg:grid-cols-[1fr_300px]')}\n >\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {slide.categories.map((cat, i) => (\n <ShowcaseCategory key={cat.title} category={cat} i={3 + i} />\n ))}\n </div>\n {video && videoHref && (\n <a\n href={videoHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...reveal(5)}\n className={cn(\n 'mie-deck-reveal group flex flex-col overflow-hidden rounded-xl border lg:self-start',\n tone.hairline,\n tone.card\n )}\n >\n <div className=\"relative flex aspect-video items-center justify-center overflow-hidden bg-neutral-900\">\n {video.thumbnail && (\n <TemplateImg\n {...video.thumbnail}\n components={components}\n className=\"absolute inset-0 size-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n )}\n <div className=\"absolute inset-0 bg-black/30\" />\n <span className=\"bg-primary-600 relative flex size-14 items-center justify-center rounded-full border-2 border-white/30 shadow-xl transition-transform group-hover:scale-110\">\n <Play\n aria-hidden=\"true\"\n className=\"ms-1 size-6 fill-white text-white\"\n />\n </span>\n {video.duration && (\n <span className=\"absolute end-2 bottom-2 rounded bg-black/60 px-2 py-0.5 font-mono text-xs text-white tabular-nums\">\n {video.duration}\n </span>\n )}\n </div>\n <div className=\"p-4\">\n <p className=\"mb-1 text-sm font-semibold\">{video.title}</p>\n {video.speaker && (\n <p className={cn('mb-2 text-xs', tone.muted)}>\n {video.speaker}\n </p>\n )}\n <span\n className={cn(\n 'inline-flex items-center gap-1 text-xs font-medium',\n a.text\n )}\n >\n {video.cta ?? labels.watchVideo}\n <ExternalLink aria-hidden=\"true\" className=\"size-3\" />\n </span>\n </div>\n </a>\n )}\n </div>\n </SlideFrame>\n );\n}\n","import * as React from 'react';\nimport { ArrowRight, Check, Copy } from 'lucide-react';\nimport { cn } from '../../../utils/cn';\nimport { TemplateAnchor, TemplateImg } from '../../../templates/Section';\nimport { useDeck, useTone } from '../DeckContext';\nimport {\n Bullet,\n Eyebrow,\n HighlightFigure,\n SlideHeader,\n SlideTitle,\n SourceLink,\n Subtitle,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { accent, toneOf } from '../tones';\nimport type {\n BulletListSlide,\n ConclusionSlide,\n CoverSlide,\n DeckLink,\n DefinitionListSlide,\n ImageSlide,\n OutlineEntry,\n QuoteSlide,\n SectionDividerSlide,\n SlideRendererProps,\n TableOfContentsSlide,\n} from '../types';\n\nfunction Highlights({\n items,\n}: {\n items: Array<{ value: string; label: string }>;\n}) {\n const r = reveal(3);\n return (\n <div\n className={cn(\n r.className,\n 'mt-10 flex flex-wrap items-center justify-center gap-x-10 gap-y-6'\n )}\n style={r.style}\n >\n {items.map((h) => (\n <HighlightFigure key={h.label} value={h.value} label={h.label} />\n ))}\n </div>\n );\n}\n\nexport function CoverRenderer({\n slide,\n index,\n}: SlideRendererProps<CoverSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'brand');\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\" width=\"md\">\n <div className=\"flex flex-col items-center text-center\">\n {slide.image && (\n <TemplateImg\n {...slide.image}\n priority={index === 0}\n components={components}\n className=\"mb-8 h-32 w-auto object-contain sm:h-40\"\n />\n )}\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n <SlideTitle size=\"xl\">{slide.title}</SlideTitle>\n {slide.subtitle && (\n <Subtitle className=\"mx-auto sm:text-xl\">{slide.subtitle}</Subtitle>\n )}\n {slide.highlights && slide.highlights.length > 0 && (\n <Highlights items={slide.highlights} />\n )}\n {(slide.dateline || slide.preparedBy) && (\n <p className={cn('mt-10 text-sm', tone.muted)}>\n {[slide.preparedBy, slide.dateline].filter(Boolean).join(' · ')}\n </p>\n )}\n </div>\n </SlideFrame>\n );\n}\n\nexport function SectionDividerRenderer({\n slide,\n index,\n}: SlideRendererProps<SectionDividerSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'glow');\n const a = accent('accent', tone.isLight);\n const hasImage = !!slide.image;\n return (\n <SlideFrame slide={slide} index={index} tone=\"glow\">\n <div\n className={\n hasImage\n ? 'grid items-center gap-10 md:grid-cols-2 lg:gap-16'\n : 'flex flex-col items-center text-center'\n }\n >\n {slide.image && (\n <div {...reveal(0)} className=\"mie-deck-reveal order-2 md:order-1\">\n <TemplateImg\n {...slide.image}\n components={components}\n className=\"mx-auto aspect-[3/4] w-full max-w-sm rounded-2xl object-cover\"\n />\n </div>\n )}\n <div className={hasImage ? 'order-1 md:order-2' : 'max-w-4xl'}>\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n {slide.statement && (\n <p\n {...reveal(1)}\n className=\"mie-deck-reveal text-6xl font-extrabold tracking-tight text-balance sm:text-7xl lg:text-8xl\"\n >\n {slide.statement}\n </p>\n )}\n <SlideTitle\n size={slide.statement ? 'md' : 'lg'}\n className={cn(slide.statement && 'mt-3 font-semibold opacity-80')}\n >\n {slide.title}\n </SlideTitle>\n {slide.description && (\n <Subtitle className={cn(!hasImage && 'mx-auto')}>\n {slide.description}\n </Subtitle>\n )}\n <div\n aria-hidden=\"true\"\n className={cn(\n 'mt-8 h-1 w-24 rounded-full',\n a.fill,\n !hasImage && 'mx-auto'\n )}\n />\n </div>\n </div>\n </SlideFrame>\n );\n}\n\nexport function TableOfContentsRenderer({\n slide,\n index,\n}: SlideRendererProps<TableOfContentsSlide>) {\n const { slides, activeSlide, goTo, labels } = useDeck();\n const tone = toneOf(slide, 'brand');\n const a = accent('accent', tone.isLight);\n const sections =\n slide.sections ??\n Object.entries(\n slides.reduce<Record<string, OutlineEntry[]>>((acc, s, i) => {\n if (i === index || !('title' in s) || !s.title) return acc;\n (acc[s.section ?? ''] ??= []).push({\n number: i + 1,\n title: s.navLabel ?? s.title,\n });\n return acc;\n }, {})\n ).map(([heading, items]) => ({ heading: heading || undefined, items }));\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.description}\n />\n <nav aria-label={labels.outline} className=\"mt-6 md:columns-2 md:gap-12\">\n {sections.map((section, s) => (\n <div\n key={section.heading ?? s}\n {...reveal(3 + s)}\n className=\"mie-deck-reveal mb-5 break-inside-avoid\"\n >\n {section.heading && (\n <h3\n className={cn(\n 'mb-1.5 text-xs font-semibold tracking-[0.2em] uppercase',\n a.text\n )}\n >\n {section.heading}\n </h3>\n )}\n <ul className=\"flex flex-col gap-0.5\">\n {section.items.map((entry) => {\n const target = entry.number - 1;\n const current = target === activeSlide;\n return (\n <li key={entry.number}>\n <button\n type=\"button\"\n onClick={() => goTo(target)}\n aria-current={current ? 'true' : undefined}\n className={cn(\n 'flex w-full items-baseline gap-3 rounded-lg px-3 py-1 text-start transition-colors',\n current\n ? a.soft\n : tone.isLight\n ? 'hover:bg-neutral-100'\n : 'hover:bg-white/5'\n )}\n >\n <span\n className={cn(\n 'text-sm font-semibold tabular-nums',\n a.text\n )}\n >\n {String(entry.number).padStart(2, '0')}\n </span>\n <span>\n {entry.title}\n {entry.subtitle && (\n <span className={cn('block text-xs', tone.muted)}>\n {entry.subtitle}\n </span>\n )}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </nav>\n </SlideFrame>\n );\n}\n\nexport function BulletListRenderer({\n slide,\n index,\n}: SlideRendererProps<BulletListSlide>) {\n const tone = toneOf(slide, 'brand');\n const r = reveal(3);\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <ul\n className={cn(r.className, 'mt-10 flex flex-col gap-4')}\n style={r.style}\n >\n {slide.items.map((item, i) => (\n <Bullet key={i} item={item} />\n ))}\n </ul>\n {slide.note && (\n <p className={cn('mt-8 text-sm italic', tone.muted)}>{slide.note}</p>\n )}\n </SlideFrame>\n );\n}\n\nexport function QuoteRenderer({\n slide,\n index,\n}: SlideRendererProps<QuoteSlide>) {\n const tone = toneOf(slide, 'brand');\n const a = accent('accent', tone.isLight);\n return (\n <SlideFrame\n slide={{\n ...slide,\n navLabel: slide.navLabel ?? slide.title ?? slide.attribution,\n }}\n index={index}\n tone=\"brand\"\n width=\"md\"\n >\n <figure className=\"flex flex-col items-center text-center\">\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n {slide.title && (\n <SlideTitle size=\"md\" className=\"mb-6\">\n {slide.title}\n </SlideTitle>\n )}\n <span\n aria-hidden=\"true\"\n className={cn('text-7xl leading-none sm:text-8xl', a.text)}\n >\n “\n </span>\n <blockquote\n {...reveal(2)}\n className=\"mie-deck-reveal -mt-4 text-2xl leading-snug font-semibold text-balance sm:text-3xl lg:text-4xl\"\n >\n {slide.quote}\n </blockquote>\n {(slide.attribution || slide.role) && (\n <figcaption {...reveal(3)} className=\"mie-deck-reveal mt-8\">\n {slide.attribution && (\n <span className={cn('text-lg font-semibold', a.text)}>\n {slide.attribution}\n </span>\n )}\n {slide.role && (\n <span className={cn('block text-sm', tone.muted)}>\n {slide.role}\n </span>\n )}\n </figcaption>\n )}\n {slide.source && <SourceLink source={slide.source} className=\"mt-5\" />}\n </figure>\n </SlideFrame>\n );\n}\n\nexport function ImageRenderer({\n slide,\n index,\n}: SlideRendererProps<ImageSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'ink');\n return (\n <SlideFrame slide={slide} index={index} tone=\"ink\">\n <SlideTitle className=\"mb-8 text-center\">{slide.title}</SlideTitle>\n <figure {...reveal(2)} className=\"mie-deck-reveal\">\n <TemplateImg\n {...slide.image}\n components={components}\n className=\"mx-auto max-h-[65dvh] w-auto rounded-2xl object-contain shadow-2xl\"\n />\n {slide.caption && (\n <figcaption className={cn('mt-4 text-center text-sm', tone.muted)}>\n {slide.caption}\n </figcaption>\n )}\n </figure>\n </SlideFrame>\n );\n}\n\nexport function DefinitionListRenderer({\n slide,\n index,\n}: SlideRendererProps<DefinitionListSlide>) {\n const tone = toneOf(slide, 'brand');\n const a = accent('accent', tone.isLight);\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <dl className=\"mt-6 flex flex-col gap-2\">\n {slide.terms.map((term, i) => {\n const initial = term.term.charAt(0);\n const r = reveal(3 + i);\n return (\n // A <dl> group div may contain only <dt>/<dd> (axe dlitem).\n <div\n key={term.term}\n className={cn(\n r.className,\n 'rounded-xl border p-3',\n tone.card,\n tone.hairline\n )}\n style={r.style}\n >\n <dt className=\"flex items-center gap-4 text-base font-bold sm:text-lg\">\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-10 flex-none items-center justify-center rounded-lg border text-xl font-extrabold',\n a.soft,\n a.border,\n a.text\n )}\n >\n {initial}\n </span>\n {term.term}\n </dt>\n <dd\n className={cn(\n 'ms-14 mt-0.5 text-sm leading-relaxed',\n tone.muted\n )}\n >\n {term.lead && (\n <span className={cn('font-semibold', tone.text)}>\n {term.lead}{' '}\n </span>\n )}\n {term.definition}\n </dd>\n </div>\n );\n })}\n </dl>\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </SlideFrame>\n );\n}\n\nfunction CopyLink({ url }: { url: string }) {\n const { labels } = useDeck();\n const tone = useTone();\n const [copied, setCopied] = React.useState(false);\n React.useEffect(() => {\n if (!copied) return;\n const t = setTimeout(() => setCopied(false), 2000);\n return () => clearTimeout(t);\n }, [copied]);\n return (\n <div\n className={cn(\n 'mt-8 flex w-full max-w-xl items-center gap-2 rounded-xl border p-2',\n tone.card,\n tone.hairline\n )}\n >\n <code className=\"min-w-0 flex-1 truncate px-2 text-start text-sm\">\n {url}\n </code>\n <button\n type=\"button\"\n onClick={() =>\n navigator.clipboard?.writeText(url).then(\n () => setCopied(true),\n () => {}\n )\n }\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm font-semibold',\n tone.isLight\n ? 'bg-neutral-900 text-white'\n : 'bg-white text-neutral-900'\n )}\n >\n {copied ? (\n <Check aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <Copy aria-hidden=\"true\" className=\"size-4\" />\n )}\n <span aria-live=\"polite\">{copied ? labels.copied : labels.copy}</span>\n </button>\n </div>\n );\n}\n\nfunction CtaButton({ link, primary }: { link: DeckLink; primary?: boolean }) {\n const { components } = useDeck();\n const tone = useTone();\n return (\n <TemplateAnchor\n href={link.href}\n trackingId={link.trackingId}\n components={components}\n className={cn(\n 'inline-flex items-center gap-2 rounded-full px-6 py-3 text-sm font-semibold transition-colors',\n primary\n ? 'bg-accent text-neutral-950 hover:opacity-90'\n : cn(\n 'border',\n tone.hairline,\n tone.isLight ? 'hover:bg-neutral-100' : 'hover:bg-white/10'\n )\n )}\n >\n {link.label}\n {primary && (\n <ArrowRight aria-hidden=\"true\" className=\"size-4 rtl:-scale-x-100\" />\n )}\n </TemplateAnchor>\n );\n}\n\nexport function ConclusionRenderer({\n slide,\n index,\n}: SlideRendererProps<ConclusionSlide>) {\n const tone = toneOf(slide, 'brand');\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\" width=\"sm\">\n <div className=\"flex flex-col items-center text-center\">\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n <SlideTitle>{slide.title}</SlideTitle>\n {slide.body && <Subtitle className=\"mx-auto\">{slide.body}</Subtitle>}\n {slide.highlights && slide.highlights.length > 0 && (\n <Highlights items={slide.highlights} />\n )}\n {slide.takeaways && slide.takeaways.length > 0 && (\n <ul\n {...reveal(4)}\n className=\"mie-deck-reveal mt-10 flex flex-col gap-3 text-start\"\n >\n {slide.takeaways.map((t) => (\n <Bullet key={t} item={t} />\n ))}\n </ul>\n )}\n {slide.share && (\n <>\n {slide.share.instructions && (\n <p className={cn('mt-10 text-sm', tone.muted)}>\n {slide.share.instructions}\n </p>\n )}\n <CopyLink url={slide.share.url} />\n </>\n )}\n {(slide.cta || slide.secondaryCta) && (\n <div\n {...reveal(5)}\n className=\"mie-deck-reveal mt-12 flex flex-wrap items-center justify-center gap-4\"\n >\n {slide.cta && <CtaButton link={slide.cta} primary />}\n {slide.secondaryCta && <CtaButton link={slide.secondaryCta} />}\n </div>\n )}\n {(slide.preparedBy || slide.dateline) && (\n <p className={cn('mt-10 text-sm', tone.muted)}>\n {[slide.preparedBy, slide.dateline].filter(Boolean).join(' · ')}\n </p>\n )}\n {slide.confidentiality && (\n <p\n className={cn('mt-3 text-xs tracking-wider uppercase', tone.muted)}\n >\n {slide.confidentiality}\n </p>\n )}\n </div>\n </SlideFrame>\n );\n}\n","import type * as React from 'react';\nimport {\n BreakdownRenderer,\n CardsRenderer,\n ChartRenderer,\n ComparisonTableRenderer,\n FeatureHighlightRenderer,\n ImpactTableRenderer,\n MetricsRenderer,\n RankedListRenderer,\n TabsRenderer,\n} from './slides/data';\nimport {\n AdoptionCurveRenderer,\n CycleRenderer,\n DiagramRenderer,\n RoadmapRenderer,\n} from './slides/diagrams';\nimport { CertificationGridRenderer, ShowcaseRenderer } from './slides/grids';\nimport {\n BulletListRenderer,\n ConclusionRenderer,\n CoverRenderer,\n DefinitionListRenderer,\n ImageRenderer,\n QuoteRenderer,\n SectionDividerRenderer,\n TableOfContentsRenderer,\n} from './slides/narrative';\nimport type { SlideRendererProps, SlideType } from './types';\n\n/** The built-in renderer for every slide type except `custom`. */\nexport const slideRenderers = {\n cover: CoverRenderer,\n 'section-divider': SectionDividerRenderer,\n 'table-of-contents': TableOfContentsRenderer,\n 'bullet-list': BulletListRenderer,\n quote: QuoteRenderer,\n image: ImageRenderer,\n 'definition-list': DefinitionListRenderer,\n conclusion: ConclusionRenderer,\n metrics: MetricsRenderer,\n chart: ChartRenderer,\n 'feature-highlight': FeatureHighlightRenderer,\n 'comparison-table': ComparisonTableRenderer,\n 'impact-table': ImpactTableRenderer,\n cards: CardsRenderer,\n 'ranked-list': RankedListRenderer,\n breakdown: BreakdownRenderer,\n cycle: CycleRenderer,\n roadmap: RoadmapRenderer,\n 'adoption-curve': AdoptionCurveRenderer,\n diagram: DiagramRenderer,\n 'certification-grid': CertificationGridRenderer,\n showcase: ShowcaseRenderer,\n tabs: TabsRenderer,\n} satisfies Record<\n Exclude<SlideType, 'custom'>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each renderer narrows its slide\n React.ComponentType<SlideRendererProps<any>>\n>;\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { TemplateAnchor, TemplateImg } from '../../templates/Section';\nimport type { TemplateIconRegistry } from '../../templates/icons';\nimport type { TemplateComponents } from '../../templates/types';\nimport {\n Controls,\n DotNav,\n KeyboardHints,\n MobileNav,\n OutlineDialog,\n ProgressBar,\n SlideCounter,\n} from './DeckChrome';\nimport { DeckProvider, type DeckContextValue } from './DeckContext';\nimport { defaultDeckLabels, type DeckLabels } from './labels';\nimport { slideRenderers } from './registry';\nimport { slideAnchor } from './SlideFrame';\nimport type {\n DeckImage,\n DeckLink,\n DeckMeta,\n Slide,\n SlideRendererProps,\n} from './types';\n\nexport interface DeckProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n slides: Slide[];\n meta: DeckMeta;\n /** A way back to the site, since a full-screen deck hides the site's navigation. */\n home?: DeckLink & { logo?: DeckImage };\n /** Fires when the visible slide changes \\u2014 wire analytics here. */\n onSlideChange?: (slide: Slide, index: number) => void;\n /**\n * Site renderers: a slide type's name overrides the built-in renderer, and\n * any other name serves `{ type: 'custom', component }` slides.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each renderer narrows its slide\n renderers?: Record<string, React.ComponentType<SlideRendererProps<any>>>;\n /** Components for `{ type: 'custom', component }` graphics, e.g. a map. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each graphic owns its props\n graphics?: Record<string, React.ComponentType<any>>;\n /** Site image and link components (e.g. `next/image`, `next/link`). */\n components?: TemplateComponents;\n /** Extra icon tokens for slide `icon` fields. */\n icons?: TemplateIconRegistry;\n labels?: DeckLabels;\n /** BCP 47 locale for number formatting. */\n locale?: string;\n /** Mirror the visible slide in `location.hash` so it can be linked. Default `true`. */\n syncHash?: boolean;\n}\n\nconst typingTarget = (el: globalThis.EventTarget | null) =>\n el instanceof HTMLElement &&\n (['INPUT', 'TEXTAREA', 'SELECT'].includes(el.tagName) ||\n el.isContentEditable ||\n el.getAttribute('role') === 'tab');\n\n/** Space must activate a focused button, not advance the deck. */\nconst spaceActivates = (el: globalThis.EventTarget | null) =>\n el instanceof HTMLElement &&\n (el.tagName === 'BUTTON' || el.getAttribute('role') === 'button');\n\n/**\n * A full-viewport, scroll-snapping slide deck built from plain JSON slides:\n * keyboard, swipe, dot and outline navigation, deep links, fullscreen and\n * print. Each slide type has a built-in renderer; sites add their own through\n * `renderers` and `graphics`.\n */\nexport const Deck = React.forwardRef<HTMLDivElement, DeckProps>(\n (\n {\n slides,\n meta,\n home,\n onSlideChange,\n renderers,\n graphics,\n components,\n icons,\n labels: labelOverrides,\n locale,\n syncHash = true,\n className,\n ...rest\n },\n ref\n ) => {\n const rootRef = React.useRef<HTMLDivElement>(null);\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const touchStart = React.useRef<number | null>(null);\n const [active, setActive] = React.useState(0);\n const [ready, setReady] = React.useState(false);\n const [outline, setOutline] = React.useState(false);\n const [fullscreen, setFullscreen] = React.useState(false);\n const [hintPulse, setHintPulse] = React.useState(0);\n const labels = React.useMemo(\n () => ({ ...defaultDeckLabels, ...labelOverrides }),\n [labelOverrides]\n );\n const total = slides.length;\n React.useImperativeHandle(ref, () => rootRef.current as HTMLDivElement);\n\n const slideEl = React.useCallback(\n (i: number) =>\n scrollRef.current?.querySelector<HTMLElement>(\n `[data-slot=\"deck-slide\"][data-index=\"${i}\"]`\n ),\n []\n );\n\n const goTo = React.useCallback(\n (i: number) => {\n const clamped = Math.max(0, Math.min(i, total - 1));\n const reduce = window.matchMedia?.(\n '(prefers-reduced-motion: reduce)'\n ).matches;\n slideEl(clamped)?.scrollIntoView({\n behavior: reduce ? 'auto' : 'smooth',\n });\n },\n [slideEl, total]\n );\n\n // Track the visible slide; mark slides seen so their content reveals once.\n React.useEffect(() => {\n const root = scrollRef.current;\n if (!root) return;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n // A slide taller than twice the viewport never reaches ratio\n // 0.5; covering half the viewport also counts as visible.\n const rootHeight = root.clientHeight || window.innerHeight;\n if (\n entry.intersectionRatio < 0.5 &&\n entry.intersectionRect.height < rootHeight / 2\n )\n continue;\n const el = entry.target as HTMLElement;\n el.dataset.seen = '';\n setActive(Number(el.dataset.index));\n }\n },\n { root, threshold: [0.1, 0.25, 0.5] }\n );\n root\n .querySelectorAll('[data-slot=\"deck-slide\"]')\n .forEach((el) => observer.observe(el));\n setReady(true);\n return () => observer.disconnect();\n }, [total]);\n\n // Open at the slide named in the URL hash.\n React.useEffect(() => {\n const raw = window.location.hash.slice(1);\n let hash = raw;\n try {\n hash = decodeURIComponent(raw);\n } catch {\n // Malformed percent-encoding: match against the raw hash.\n }\n if (!hash) return;\n const i = slides.findIndex((s, n) => slideAnchor(s, n) === hash);\n if (i > 0) requestAnimationFrame(() => slideEl(i)?.scrollIntoView());\n // Only on mount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const reportedSlide = React.useRef(-1);\n React.useEffect(() => {\n const slide = slides[active];\n if (!slide) return;\n if (syncHash && ready) {\n const hash = `#${slideAnchor(slide, active)}`;\n if (window.location.hash !== hash)\n window.history.replaceState(window.history.state, '', hash);\n }\n // The effect reruns when `ready` flips; report each slide once.\n if (reportedSlide.current !== active) {\n reportedSlide.current = active;\n onSlideChange?.(slide, active);\n }\n // Report changes of slide, not of callback identity.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active, slides, syncHash, ready]);\n\n const toggleFullscreen = React.useCallback(() => {\n if (!document.fullscreenElement)\n rootRef.current?.requestFullscreen?.().catch(() => {});\n else document.exitFullscreen?.().catch(() => {});\n }, []);\n\n React.useEffect(() => {\n const onChange = () => setFullscreen(!!document.fullscreenElement);\n document.addEventListener('fullscreenchange', onChange);\n return () => document.removeEventListener('fullscreenchange', onChange);\n }, []);\n\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (outline || e.defaultPrevented || e.metaKey || e.ctrlKey || e.altKey)\n return;\n if (typingTarget(e.target)) return;\n const key = e.key;\n if (key === ' ' && spaceActivates(e.target)) return;\n if (['ArrowDown', 'ArrowRight', 'PageDown', ' '].includes(key)) {\n e.preventDefault();\n goTo(active + 1);\n } else if (['ArrowUp', 'ArrowLeft', 'PageUp'].includes(key)) {\n e.preventDefault();\n goTo(active - 1);\n } else if (key === 'Home') {\n e.preventDefault();\n goTo(0);\n } else if (key === 'End') {\n e.preventDefault();\n goTo(total - 1);\n } else if (/^[1-9]$/.test(key)) {\n goTo(Number(key) - 1);\n } else if (key.toLowerCase() === 'f') {\n toggleFullscreen();\n } else if (key === '?') {\n setHintPulse((p) => p + 1);\n }\n };\n window.addEventListener('keydown', onKey);\n return () => window.removeEventListener('keydown', onKey);\n }, [active, goTo, outline, toggleFullscreen, total]);\n\n const onTouchEnd = (e: React.TouchEvent) => {\n if (touchStart.current === null) return;\n const delta = touchStart.current - e.changedTouches[0].clientY;\n touchStart.current = null;\n const el = slideEl(active);\n // A slide taller than the viewport scrolls natively instead.\n if (\n el &&\n scrollRef.current &&\n el.scrollHeight > scrollRef.current.clientHeight + 20\n )\n return;\n if (Math.abs(delta) > 120) goTo(active + (delta > 0 ? 1 : -1));\n };\n\n const context = React.useMemo<DeckContextValue>(\n () => ({\n slides,\n activeSlide: active,\n goTo,\n labels,\n components,\n icons,\n graphics,\n renderers,\n locale,\n }),\n [\n slides,\n active,\n goTo,\n labels,\n components,\n icons,\n graphics,\n renderers,\n locale,\n ]\n );\n\n const closeOutline = React.useCallback(() => setOutline(false), []);\n const progress = total > 1 ? (active / (total - 1)) * 100 : 0;\n\n return (\n <DeckProvider value={context}>\n <div\n ref={rootRef}\n role=\"region\"\n aria-roledescription={labels.presentation}\n aria-label={meta.title}\n data-slot=\"deck\"\n data-ready={ready || undefined}\n className={cn(\n 'mie-deck relative h-dvh w-full overflow-hidden bg-neutral-950 text-white',\n className\n )}\n {...rest}\n >\n <h1 className=\"sr-only\">\n {meta.title}\n {meta.period ? ` \\u2014 ${meta.period}` : ''}\n </h1>\n {home && (\n <TemplateAnchor\n href={home.href}\n trackingId={home.trackingId}\n components={components}\n className=\"mie-deck-chrome absolute start-3 top-3 z-50 inline-flex items-center gap-2 rounded-full border border-white/10 bg-black/25 py-1.5 ps-2 pe-3 text-xs font-semibold text-white/80 backdrop-blur transition-colors hover:bg-white/10 hover:text-white print:hidden\"\n >\n {home.logo && (\n <TemplateImg\n {...home.logo}\n alt=\"\"\n components={components}\n className=\"size-[18px] object-contain\"\n />\n )}\n {home.label}\n </TemplateAnchor>\n )}\n <ProgressBar progress={progress} />\n <DotNav slides={slides} active={active} goTo={goTo} labels={labels} />\n <SlideCounter\n active={active}\n total={total}\n section={slides[active]?.section}\n />\n <KeyboardHints pulse={hintPulse} labels={labels} />\n <Controls\n isFullscreen={fullscreen}\n onToggleFullscreen={toggleFullscreen}\n onOpenOutline={() => setOutline(true)}\n labels={labels}\n />\n <div\n ref={scrollRef}\n onTouchStart={(e) => {\n touchStart.current = e.touches[0].clientY;\n }}\n onTouchEnd={onTouchEnd}\n className=\"mie-deck-scroll size-full snap-y snap-mandatory overflow-y-auto\"\n >\n {slides.map((slide, i) => {\n // Each renderer narrows its own slide; the type-keyed lookup can't express that.\n const Renderer = (\n slide.type === 'custom'\n ? renderers?.[slide.component]\n : (renderers?.[slide.type] ?? slideRenderers[slide.type])\n ) as React.ComponentType<SlideRendererProps> | undefined;\n return Renderer ? (\n <Renderer key={slideAnchor(slide, i)} slide={slide} index={i} />\n ) : null;\n })}\n </div>\n <MobileNav\n active={active}\n total={total}\n onPrev={() => goTo(active - 1)}\n onNext={() => goTo(active + 1)}\n onOpenOutline={() => setOutline(true)}\n labels={labels}\n />\n <OutlineDialog\n open={outline}\n onClose={closeOutline}\n slides={slides}\n active={active}\n goTo={goTo}\n labels={labels}\n />\n </div>\n </DeckProvider>\n );\n }\n);\nDeck.displayName = 'Deck';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Deck/DeckChrome.tsx","../src/components/Deck/tones.ts","../src/components/Deck/DeckContext.tsx","../src/components/Deck/labels.ts","../src/components/Deck/primitives.tsx","../src/components/Deck/graphics.tsx","../src/components/Deck/SlideFrame.tsx","../src/components/Deck/slides/data.tsx","../src/components/Deck/slides/diagrams.tsx","../src/components/Deck/slides/grids.tsx","../src/components/Deck/slides/narrative.tsx","../src/components/Deck/registry.tsx","../src/components/Deck/Deck.tsx"],"names":["React","React2","jsx","jsxs","React3","accent","React4","Fragment","React5","React6","React7","ExternalLink","React8"],"mappings":";;;;;;;;;AAiBA,IAAM,MAAA,GAAS,8BAAA;AACf,IAAM,UAAA,GACJ,iPAAA;AAEK,IAAM,UAAA,GAAa,CAAC,CAAA,KACzB,CAAA,CAAE,aAAa,OAAA,IAAW,CAAA,GAAI,CAAA,CAAE,KAAA,GAAQ,MAAA,CAAA,IAAc,EAAA;AAEjD,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAAyB;AAC9D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,2DAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA;AAAI;AAAA;AACjC;AAAA,GACF;AAEJ;AAEO,SAAS,YAAA,CAAa;AAAA,EAC3B,MAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kDAAA,EACZ,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAAA,0BACnC,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAAI,IAAA;AAAA,YACF,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG;AAAA,WAAA,EAClC;AAAA,SAAA,EACF,CAAA;AAAA,QACC,OAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gEACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,cAAY,MAAA,CAAO,eAAA;AAAA,MACnB,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACd,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,IAAA,CAAK,CAAC,CAAA;AAAA,UACrB,cAAY,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,UACjD,cAAA,EAAc,CAAA,KAAM,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,UACtC,SAAA,EAAU,wDAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,gDAAA;AAAA,kBACA,CAAA,KAAM,SACF,oBAAA,GACA;AAAA;AACN;AAAA,aACF;AAAA,gCACC,MAAA,EAAA,EAAK,SAAA,EAAU,sOAAA,EACb,QAAA,EAAA,UAAA,CAAW,CAAC,CAAA,EACf;AAAA;AAAA,SAAA;AAAA,QAjBK;AAAA,OAmBR;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,UAAA;AAAA,YACX,OAAA,EAAS,aAAA;AAAA,YACT,cAAY,MAAA,CAAO,WAAA;AAAA,YAEnB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA,SAC9C;AAAA,wBACA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,UAAA;AAAA,YACX,OAAA,EAAS,MAAM,MAAA,CAAO,KAAA,EAAM;AAAA,YAC5B,cAAY,MAAA,CAAO,KAAA;AAAA,YAEnB,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA,SACjD;AAAA,wBACA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,UAAA;AAAA,YACX,OAAA,EAAS,kBAAA;AAAA,YACT,YAAA,EACE,YAAA,GAAe,MAAA,CAAO,cAAA,GAAiB,MAAA,CAAO,eAAA;AAAA,YAG/C,QAAA,EAAA,YAAA,mBACC,GAAA,CAAC,SAAA,EAAA,EAAU,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,QAAA,EAAS,CAAA,mBAEjD,GAAA,CAAC,SAAA,EAAA,EAAU,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA;AAErD;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,GAAA,CAAI,EAAE,QAAA,EAAS,EAAkC;AACxD,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oIAAA,EACZ,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,gBAAS,IAAI,CAAA;AACjD,EAAMA,iBAAU,MAAM;AACpB,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,MAAM,IAAI,UAAA,CAAW,MAAM,UAAA,CAAW,KAAK,GAAG,GAAI,CAAA;AAClD,IAAA,OAAO,MAAM,aAAa,CAAC,CAAA;AAAA,EAC7B,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,0PAAA;AAAA,QACA,UAAU,aAAA,GAAgB;AAAA,OAC5B;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yBAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAI,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,0BACN,GAAA,CAAC,OAAI,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UAAM,GAAA;AAAA,UAAE,MAAA,CAAO;AAAA,SAAA,EACvB,CAAA;AAAA,wBACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAgB,QAAA,EAAA,MAAA,EAAC,CAAA;AAAA,6BAChC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAI,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,UAAM,GAAA;AAAA,UAAE,MAAA,CAAO;AAAA,SAAA,EACvB,CAAA;AAAA,wBACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAgB,QAAA,EAAA,MAAA,EAAC,CAAA;AAAA,6BAChC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAI,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,UAAM,GAAA;AAAA,UAAE,MAAA,CAAO;AAAA,SAAA,EACvB;AAAA;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,GAAA,GACJ,6HAAA;AACF,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,GAAA;AAAA,YACX,OAAA,EAAS,MAAA;AAAA,YACT,UAAU,MAAA,KAAW,CAAA;AAAA,YACrB,cAAY,MAAA,CAAO,QAAA;AAAA,YAEnB,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA,SACnD;AAAA,wBACA,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,aAAA;AAAA,YACT,SAAA,EAAU,mGAAA;AAAA,YACV,cAAY,MAAA,CAAO,WAAA;AAAA,YAEnB,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,oBAAA,EAAqB,CAAA;AAAA,cACvD,MAAA,GAAS,CAAA;AAAA,cAAE,KAAA;AAAA,cAAI;AAAA;AAAA;AAAA,SAClB;AAAA,wBACA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,GAAA;AAAA,YACX,OAAA,EAAS,MAAA;AAAA,YACT,QAAA,EAAU,WAAW,KAAA,GAAQ,CAAA;AAAA,YAC7B,cAAY,MAAA,CAAO,IAAA;AAAA,YAEnB,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA;AACrD;AAAA;AAAA,GACF;AAEJ;AAGO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,QAAA,GAAiBA,cAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,UAAgBA,MAAA,CAAA,KAAA,EAAM;AAE5B,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,WAAW,QAAA,CAAS,aAAA;AAC1B,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,MAAM,UAAA,GAAa,MACjB,KAAA,CAAM,IAAA;AAAA,MACJ,KAAA,EAAO,gBAAA,CAA8B,wBAAwB,CAAA,IAAK;AAAC,KACrE;AACF,IAAA,CAAC,UAAA,GAAa,CAAC,CAAA,IAAK,YAAW,CAAE,CAAC,IAAI,KAAA,EAAM;AAC5C,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAqB;AAClC,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,OAAA,EAAQ;AACR,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,QAAQ,KAAA,EAAO;AACrB,MAAA,MAAM,QAAQ,UAAA,EAAW;AACzB,MAAA,MAAM,KAAA,GAAQ,MAAM,CAAC,CAAA;AACrB,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AACnC,MAAA,IAAI,CAAA,CAAE,QAAA,IAAY,QAAA,CAAS,aAAA,KAAkB,KAAA,EAAO;AAClD,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAA,EAAM,KAAA,EAAM;AAAA,MACd,WAAW,CAAC,CAAA,CAAE,QAAA,IAAY,QAAA,CAAS,kBAAkB,IAAA,EAAM;AACzD,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,KAAA,EAAO,KAAA,EAAM;AAAA,MACf;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,SAAA,EAAW,KAAA,EAAO,IAAI,CAAA;AAChD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,KAAA,EAAO,IAAI,CAAA;AACnD,MAAA,QAAA,EAAU,KAAA,IAAQ;AAAA,IACpB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AAElB,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,QAAA,KAAa,aAAa,OAAO,IAAA;AAErD,EAAA,OAAO,YAAA;AAAA,oBACL,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACX,iBAAA,EAAiB,OAAA;AAAA,QACjB,SAAA,EAAU,kGAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sEAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,QAAG,EAAA,EAAI,OAAA,EAAS,SAAA,EAAU,8BAAA,EACxB,iBAAO,OAAA,EACV,CAAA;AAAA,4BACA,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,OAAA;AAAA,gBACT,cAAY,MAAA,CAAO,YAAA;AAAA,gBACnB,SAAA,EAAW,UAAA;AAAA,gBAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA;AAC3C,WAAA,EACF,CAAA;AAAA,0BACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,kCAAA,EACX,QAAA,EAAA,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG,CAAA,qBACd,GAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAS,MAAM;AACb,gBAAA,IAAA,CAAK,CAAC,CAAA;AACN,gBAAA,OAAA,EAAQ;AAAA,cACV,CAAA;AAAA,cACA,cAAA,EAAc,CAAA,KAAM,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,cACtC,SAAA,EAAW,EAAA;AAAA,gBACT,oFAAA;AAAA,gBACA,CAAA,KAAM,SAAS,cAAA,GAAiB;AAAA,eAClC;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA,EAChC,CAAA;AAAA,gCACA,GAAA,CAAC,UAAK,SAAA,EAAW,CAAA,KAAM,SAAS,YAAA,GAAe,eAAA,EAC5C,QAAA,EAAA,UAAA,CAAW,CAAC,CAAA,EACf;AAAA;AAAA;AAAA,WACF,EAAA,EAnBO,CAoBT,CACD,CAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF;;;AC1WA,IAAM,IAAA,GAAO;AAAA,EACX,OAAA,EAAS,KAAA;AAAA,EACT,IAAA,EAAM,YAAA;AAAA,EACN,KAAA,EAAO,eAAA;AAAA,EACP,QAAA,EAAU,iBAAA;AAAA,EACV,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,KAAA,GAAqC;AAAA,EAChD,KAAA,EAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,OAAA,EACE;AAAA,GACJ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAG,IAAA;AAAA,IACH,OAAA,EAAS;AAAA,GACX;AAAA,EACA,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,SAAS,gBAAA,EAAiB;AAAA,EAC1C,IAAA,EAAM;AAAA,IACJ,GAAG,IAAA;AAAA,IACH,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS,UAAA;AAAA,IACT,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO,kBAAA;AAAA,IACP,QAAA,EAAU,oBAAA;AAAA,IACV,IAAA,EAAM;AAAA;AAEV;AAaA,IAAM,MAAA,GAAyC;AAAA,EAC7C,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM,mBAAA;AAAA,IACN,MAAA,EAAQ,uBAAA;AAAA,IACR,IAAA,EAAM,gBAAA;AAAA,IACN,OAAA,EAAS,kBAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,oBAAA;AAAA,IACN,IAAA,EAAM,qBAAA;AAAA,IACN,MAAA,EAAQ,yBAAA;AAAA,IACR,IAAA,EAAM,kBAAA;AAAA,IACN,OAAA,EAAS,oBAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,aAAA;AAAA,IACN,IAAA,EAAM,cAAA;AAAA,IACN,MAAA,EAAQ,kBAAA;AAAA,IACR,IAAA,EAAM,WAAA;AAAA,IACN,OAAA,EAAS,aAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,cAAA;AAAA,IACN,IAAA,EAAM,eAAA;AAAA,IACN,MAAA,EAAQ,mBAAA;AAAA,IACR,IAAA,EAAM,YAAA;AAAA,IACN,OAAA,EAAS,cAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,cAAA;AAAA,IACN,IAAA,EAAM,eAAA;AAAA,IACN,MAAA,EAAQ,mBAAA;AAAA,IACR,IAAA,EAAM,YAAA;AAAA,IACN,OAAA,EAAS,cAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM,mBAAA;AAAA,IACN,MAAA,EAAQ,uBAAA;AAAA,IACR,IAAA,EAAM,gBAAA;AAAA,IACN,OAAA,EAAS,kBAAA;AAAA,IACT,SAAA,EAAW;AAAA;AAEf,CAAA;AAGA,IAAM,SAAA,GAAwC;AAAA,EAC5C,OAAA,EAAS,kBAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,MAAA,EAAQ,kBAAA;AAAA,EACR,OAAA,EAAS,kBAAA;AAAA,EACT,OAAA,EAAS,kBAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,MAAA,CACd,IAAA,GAAmB,QAAA,EACnB,OAAA,GAAU,KAAA,EACE;AACZ,EAAA,MAAM,IAAA,GAAO,OAAO,IAAI,CAAA;AACxB,EAAA,OAAO,OAAA,GAAU,EAAE,GAAG,IAAA,EAAM,MAAM,SAAA,CAAU,IAAI,GAAE,GAAI,IAAA;AACxD;AAGO,IAAM,SAAS,CAAC,KAAA,EAA6B,aAClD,KAAA,CAAM,KAAA,CAAM,QAAQ,QAAQ;AAGvB,IAAM,YAAA,GAA6B;AAAA,EACxC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;;;ACnHA,IAAM,WAAA,GAAoBC,qBAAuC,IAAI,CAAA;AAE9D,IAAM,eAAe,WAAA,CAAY,QAAA;AAEjC,SAAS,OAAA,GAA4B;AAC1C,EAAA,MAAM,GAAA,GAAYA,kBAAW,WAAW,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAC3E,EAAA,OAAO,GAAA;AACT;AAGO,IAAM,WAAA,GAAoBA,MAAA,CAAA,aAAA,CAAwB,KAAA,CAAM,KAAK,CAAA;AAE7D,IAAM,OAAA,GAAU,MAAYA,MAAA,CAAA,UAAA,CAAW,WAAW;;;ACHlD,IAAM,iBAAA,GAA0C;AAAA,EACrD,YAAA,EAAc,oBAAA;AAAA,EACd,KAAA,EAAO,OAAA;AAAA,EACP,eAAA,EAAiB,kBAAA;AAAA,EACjB,SAAA,EAAW,CAAC,CAAA,EAAG,KAAA,KAAU,CAAA,YAAA,EAAe,CAAC,CAAA,EAAG,KAAA,GAAQ,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAAA,EACrE,OAAA,EAAS,QAAA;AAAA,EACT,WAAA,EAAa,oBAAA;AAAA,EACb,YAAA,EAAc,eAAA;AAAA,EACd,KAAA,EAAO,sBAAA;AAAA,EACP,eAAA,EAAiB,kBAAA;AAAA,EACjB,cAAA,EAAgB,iBAAA;AAAA,EAChB,QAAA,EAAU,gBAAA;AAAA,EACV,IAAA,EAAM,YAAA;AAAA,EACN,YAAA,EAAc,UAAA;AAAA,EACd,cAAA,EAAgB,YAAA;AAAA,EAChB,QAAA,EAAU,MAAA;AAAA,EACV,IAAA,EAAM,WAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW,KAAA;AAAA,EACX,UAAA,EAAY,MAAA;AAAA,EACZ,WAAA,EAAa,OAAA;AAAA,EACb,UAAA,EAAY,iBAAA;AAAA,EACZ,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,CAAC,CAAA,KAAM,CAAA,KAAA,EAAQ,CAAC,CAAA,KAAA,CAAA;AAAA,EACtB,IAAA,EAAM;AACR;AC/CO,SAAS,MAAA,CAAO,IAAI,CAAA,EAGzB;AACA,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,iBAAA;AAAA,IACX,KAAA,EAAO,EAAE,gBAAA,EAAkB,CAAA;AAAE,GAC/B;AACF;AAEO,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,uBACEC,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,CAAA,CAAE,SAAA;AAAA,QACF,uDAAA;AAAA,QACA,MAAA,CAAW,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,OAAO,CAAA,CAAE,KAAA;AAAA,MAER;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAIG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,CAAA,CAAE,SAAA;AAAA,QACF,uCAAA;AAAA,QACA,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,KAAS,IAAA,GACL,kCAAA,GACA,IAAA,KAAS,OACP,kCAAA,GACA,kCAAA;AAAA,QACN;AAAA,OACF;AAAA,MACA,OAAO,CAAA,CAAE,KAAA;AAAA,MAER;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,CAAA,CAAE,SAAA;AAAA,QACF,iEAAA;AAAA,QACA,IAAA,CAAK,KAAA;AAAA,QACL;AAAA,OACF;AAAA,MACA,OAAO,CAAA,CAAE,KAAA;AAAA,MAER;AAAA;AAAA,GACH;AAEJ;AAGO,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,MAAA,IAAU,qBAAqB,CAAA,EAC/C,QAAA,EAAA;AAAA,IAAA,OAAA,oBAAWD,GAAAA,CAAC,OAAA,EAAA,EAAS,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAC9BA,GAAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAClB,QAAA,oBACCA,GAAAA,CAAC,QAAA,EAAA,EAAS,WAAW,EAAA,CAAG,MAAA,IAAU,SAAS,CAAA,EAAI,QAAA,EAAA,QAAA,EAAS;AAAA,GAAA,EAE5D,CAAA;AAEJ;AAMA,SAAS,YAAY,KAAA,EAAgD;AACnE,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAC/B,EAAA,IAAI,KAAA,KAAU,IAAI,OAAO,IAAA;AACzB,EAAA,IAAI,GAAA,GAAM,KAAA;AACV,EAAA,OAAO,GAAA,GAAM,MAAM,MAAA,IAAU,QAAA,CAAS,KAAK,KAAA,CAAM,GAAG,CAAC,CAAA,EAAG,GAAA,IAAO,CAAA;AAC/D,EAAA,OAAO,CAAC,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,EAAG,KAAA,CAAM,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA,EAAG,KAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA;AAC1E;AAGO,SAAS,OAAA,CAAQ;AAAA,EACtB,KAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAGG;AACD,EAAA,MAAM,GAAA,GAAYE,cAAwB,IAAI,CAAA;AAC9C,EAAA,MAAM,KAAA,GAAQ,YAAY,KAAK,CAAA;AAE/B,EAAMA,iBAAU,MAAM;AACpB,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,IAAM,CAAC,KAAA,EAAO;AACnB,IAAA,IAAI,MAAA,CAAO,UAAA,GAAa,kCAAkC,CAAA,CAAE,OAAA,EAAS;AACrE,IAAA,MAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,GAAI,KAAA;AACjC,IAAA,MAAM,SAAS,UAAA,CAAW,MAAA,CAAO,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA;AAClD,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AAC1B,IAAA,MAAM,WAAW,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,MAAA,IAAU,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,QAAA,CAAS,GAAG,CAAA;AACnC,IAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAc;AAC5B,MAAA,IAAI,GAAA,GAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAC5B,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAI,GAAA,CAAI,MAAM,GAAG,CAAA;AACnC,QAAA,GAAA,GACE,KAAA,CAAM,QAAQ,uBAAA,EAAyB,GAAG,KACzC,IAAA,GAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,GAAK,EAAA,CAAA;AAAA,MACzB;AACA,MAAA,EAAA,CAAG,cAAc,CAAA,EAAG,MAAM,CAAA,EAAG,GAAG,GAAG,MAAM,CAAA,CAAA;AAAA,IAC3C,CAAA;AACA,IAAA,MAAA,CAAO,CAAC,CAAA;AACR,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,CAAC,KAAK,CAAA,KAAM;AACX,QAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAC3B,QAAA,QAAA,CAAS,UAAA,EAAW;AACpB,QAAA,MAAM,KAAA,GAAQ,YAAY,GAAA,EAAI;AAC9B,QAAA,MAAM,IAAA,GAAO,CAAC,GAAA,KAAgB;AAC5B,UAAA,MAAM,IAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,GAAA,GAAM,SAAS,QAAQ,CAAA;AAC9C,UAAA,MAAA,CAAO,UAAU,CAAA,GAAI,IAAA,CAAK,IAAI,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,CAAE,CAAA;AACxC,UAAA,IAAI,CAAA,GAAI,CAAA,EAAG,KAAA,GAAQ,qBAAA,CAAsB,IAAI,CAAA;AAAA,kBACrC,WAAA,GAAc,KAAA;AAAA,QACxB,CAAA;AACA,QAAA,KAAA,GAAQ,sBAAsB,IAAI,CAAA;AAAA,MACpC,CAAA;AAAA,MACA,EAAE,WAAW,GAAA;AAAI,KACnB;AACA,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AACpB,MAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,MAAA,EAAA,CAAG,WAAA,GAAc,KAAA;AAAA,IACnB,CAAA;AAAA,EAGF,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,uBACEF,GAAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAU,SAAA,EAAU,gBACvB,QAAA,EAAA,KAAA,EACH,CAAA;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAY,OAAc,SAAA,EAAsB,CAAA;AACvE;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA;AAAA,EACA,QAAAG,OAAAA,GAAS;AACX,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAWA,OAAAA,EAAQ,IAAA,CAAK,OAAO,CAAA;AACzC,EAAA,uBACEH,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA,CAAA,CAAE,IAAA;AAAA,QACF,CAAA,CAAE,MAAA;AAAA,QACF,CAAA,CAAE;AAAA,OACJ;AAAA,MAEA,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,IAAA,EAAM;AAAA;AAAA,GACxB;AAEJ;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAW,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AAC3C,EAAA,MAAM,IAAI,OAAO,IAAA,KAAS,WAAW,EAAE,IAAA,EAAM,MAAK,GAAI,IAAA;AACtD,EAAA,uBACEC,KAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,eAAA,EAAiB,KAAA,GAAQ,CAAA,IAAK,cAAc,CAAA,EAC5D,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAK,aAAA,EAAY,MAAA,EAAO,WAAW,EAAA,CAAG,gBAAA,EAAkB,EAAE,IAAI,CAAA,EAC5D,YAAE,IAAA,mBACDA,IAAC,QAAA,EAAA,EAAS,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAU,cAAA,EAAe,CAAA,mBAEjDA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,oBAAA;AAAA,YACA,UAAU,CAAA,GACN,EAAA,CAAG,UAAA,EAAY,CAAA,CAAE,IAAI,CAAA,GACrB;AAAA;AACN;AAAA,OACF,EAEJ,CAAA;AAAA,sBACAC,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,cAAA;AAAA,YACA,KAAA,KAAU,CAAA,GACN,EAAA,CAAG,oBAAA,EAAsB,IAAA,CAAK,IAAI,CAAA,GAClC,EAAA,CAAG,WAAA,EAAa,IAAA,CAAK,KAAK;AAAA,WAChC;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,IAAA,oBACDA,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,eAAA,EAAiB,CAAA,CAAE,IAAI,CAAA,EAAI,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,IAAA;AAAA,cAAK;AAAA,aAAA,EAAC,CAAA;AAAA,YAExD,CAAA,CAAE;AAAA;AAAA;AAAA;AACL,KAAA,EACF,CAAA;AAAA,IACC,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,QAAA,CAAS,MAAA,GAAS,CAAA,oBACjCD,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0BAAA,EACX,QAAA,EAAA,CAAA,CAAE,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBACtBA,GAAAA,CAAC,MAAA,EAAA,EAAe,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,CAAA,EAAA,EAA/B,CAAkC,CAChD,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEO,SAAS,UAAA,CAAW;AAAA,EACzB,MAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA;AAChC,EAAA,IAAI,CAAC,IAAA;AACH,IAAA,uBACEA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,IAAA,CAAK,KAAA,EAAO,SAAS,CAAA,EACjD,QAAA,EAAA,MAAA,CAAO,KAAA,EACV,CAAA;AAEJ,EAAA,uBACEC,IAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,MAAA,EAAO,QAAA;AAAA,MACP,GAAA,EAAI,qBAAA;AAAA,MACJ,SAAA,EAAW,EAAA;AAAA,QACT,uFAAA;AAAA,QACA,IAAA,CAAK,KAAA;AAAA,QACL;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,MAAA,CAAO,KAAA;AAAA,wBACRD,GAAAA,CAAC,YAAA,EAAA,EAAa,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA;AAAA,GACtD;AAEJ;AAGO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAIG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACb,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,MAAA,CAAW,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,UACnC,IAAA,KAAS,OAAO,sBAAA,GAAyB;AAAA,SAC3C;AAAA,QAEA,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAc;AAAA;AAAA,KACzB;AAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,uCAAA,EAAyC,IAAA,CAAK,KAAK,CAAA,EACnE,QAAA,EAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,IAAK,CAAC,CAAA;AACvB,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,CAAA,CAAE,SAAA;AAAA,QACF,wBAAA;AAAA,QACA,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK,QAAA;AAAA,QACL;AAAA,OACF;AAAA,MACA,OAAO,CAAA,CAAE,KAAA;AAAA,MAER;AAAA;AAAA,GACH;AAEJ;ACtWA,SAAS,UAAA,CAAW;AAAA,EAClB,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEC,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EACf,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,aAAS,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAClBA,GAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,QACE,QAAA,EAAA,OAAA,CAAQ,GAAA;AAAA,MAAI,CAAC,CAAA,EAAG,CAAA,KACf,CAAA,mBACEA,IAAC,IAAA,EAAA,EAAW,KAAA,EAAM,KAAA,EACf,QAAA,EAAA,CAAA,EAAA,EADM,CAET,CAAA;AAAA;AAAA,wBAGAA,GAAAA,CAAC,IAAA,EAAA,EAAA,EAAQ,CAAG;AAAA;AAAA,OAGlB,CAAA,EACF,CAAA;AAAA,oBACAA,GAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBACdA,GAAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,GAAA,CAAI,GAAA;AAAA,MAAI,CAAC,IAAA,EAAM,CAAA,KACd,CAAA,KAAM,CAAA,mBACJA,GAAAA,CAAC,IAAA,EAAA,EAAW,KAAA,EAAM,KAAA,EACf,kBADM,CAET,CAAA,mBAEAA,GAAAA,CAAC,IAAA,EAAA,EAAY,kBAAJ,CAAS;AAAA,KAEtB,EAAA,EATO,CAUT,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,SAAA,GAAY;AACnB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,OAAaI,MAAA,CAAA,OAAA;AAAA,IACX,MAAM,IAAI,IAAA,CAAK,YAAA,CAAa,QAAQ,EAAE,QAAA,EAAU,WAAW,CAAA;AAAA,IAC3D,CAAC,MAAM;AAAA,GACT;AACF;AAEO,SAAS,QAAA,CAAS,EAAE,OAAA,EAAQ,EAA4B;AAC7D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAC3D,EAAA,MAAM,EAAA,GAAK,MAAA,CAAW,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AAC5C,EAAA,uBACEH,IAAAA,CAAC,QAAA,EAAA,EAAO,WAAA,EAAU,gBAAA,EAAiB,WAAU,QAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAU,mCAAA,EAC/B,QAAA,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBACtBC,IAAAA,CAAOG,iBAAN,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,QAAQ,OAAA,KAAY,CAAA,oBAC3BJ,GAAAA,CAAC,SAAI,SAAA,EAAU,iFAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,UAAK,SAAA,EAAU,+HAAA,EACb,QAAA,EAAA,OAAA,CAAQ,MAAA,CAAO,OAClB,CAAA,EACF,CAAA;AAAA,sBAEFC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EAEb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,oBAAA,EACb,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,wDAAA;AAAA,cACA,IAAI,SAAA,GACA,EAAA,CAAG,IAAA,GACH,IAAA,CAAK,UACH,gBAAA,GACA;AAAA,aACR;AAAA,YACA,KAAA,EACE;AAAA,cACE,MAAA,EAAQ,CAAA,EAAI,GAAA,CAAI,KAAA,GAAQ,MAAO,GAAG,CAAA,CAAA,CAAA;AAAA,cAClC,gBAAA,EAAkB;AAAA,aACpB;AAAA,YAGF,QAAA,kBAAAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,oFAAA;AAAA,kBACA,IAAA,CAAK;AAAA,iBACP;AAAA,gBAEC,QAAA,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,KAAK;AAAA;AAAA;AAC1B;AAAA,WAEJ,CAAA,EACF,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,qCAAA;AAAA,cACA,IAAA,CAAK;AAAA,aACP;AAAA,YAEC,QAAA,EAAA,GAAA,CAAI;AAAA;AAAA;AACP,OAAA,EACF;AAAA,KAAA,EAAA,EA/CmB,GAAA,CAAI,KAgDzB,CACD,CAAA,EACH,CAAA;AAAA,IACC,OAAA,CAAQ,UAAA,oBACPA,GAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,IAAA,CAAK,KAAK,CAAA,EACjD,QAAA,EAAA,OAAA,CAAQ,UAAA,EACX,CAAA;AAAA,oBAEFA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,QAAQ,UAAA,IAAc,QAAA;AAAA,QAC/B,OAAA,EAAS,CAAC,EAAA,EAAI,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,QAC3C,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAC;AAAA;AAAA;AAClD,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAQ,EAAsC;AAC7E,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAC3D,EAAA,MAAM,CAAA,GAAI,MAAA,CAAW,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AAC3C,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAA,EAAU,sBAAA,EAAuB,SAAA,EAAU,kBAAA,EAC5C,QAAA,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM;AAC5B,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACtB,IAAA,uBACEC,KAAC,IAAA,EAAA,EAAmB,SAAA,EAAW,EAAE,SAAA,EAAW,KAAA,EAAO,EAAE,KAAA,EACnD,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,cAAI,KAAA,EAAM,CAAA;AAAA,wBACtCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA,GAAA,CAAI,OAAA,IAAW,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,EACzC;AAAA,OAAA,EACF,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,kCAAA;AAAA,YACA,IAAA,CAAK,UAAU,gBAAA,GAAmB;AAAA,WACpC;AAAA,UAEA,QAAA,kBAAAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,CAAA,CAAE,IAAI,CAAA;AAAA,cAC3C,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAI,IAAI,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAA,CAAA,CAAA;AAAI;AAAA;AAChD;AAAA;AACF,KAAA,EAAA,EAlBO,IAAI,KAmBb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,MAAA,CAAO,EAAE,OAAA,EAAQ,EAA+B;AAC9D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAU,8CAAA;AAAA,MAET,QAAA,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,KAAK,CAAA,KAAM;AAC5B,QAAA,MAAM,KAAA,GACJ,IAAI,KAAA,KAAU,IAAA,GACV,aACA,GAAA,CAAI,KAAA,KAAU,SACZ,YAAA,GACA,KAAA;AACR,QAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACtB,QAAA,uBACEC,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,CAAA,CAAE,SAAA;AAAA,cACF,6CAAA;AAAA,cACA,IAAA,CAAK,IAAA;AAAA,cACL,IAAA,CAAK;AAAA,aACP;AAAA,YACA,OAAO,CAAA,CAAE,KAAA;AAAA,YAET,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,QAAG,SAAA,EAAW,EAAA,CAAG,WAAW,IAAA,CAAK,KAAK,CAAA,EAAI,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,8BACrDC,IAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yDAAA,EACX,QAAA,EAAA;AAAA,gBAAA,GAAA,CAAI,KAAA;AAAA,gBACJ,GAAA,CAAI,yBACHD,GAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAY,MAAA;AAAA,oBACZ,SAAA,EAAW,EAAA;AAAA,sBACT,QAAA;AAAA,sBACA,GAAA,CAAI,UAAU,IAAA,GACV,cAAA,GACA,IAAI,KAAA,KAAU,MAAA,GACZ,qBACA,IAAA,CAAK;AAAA;AACb;AAAA;AACF,eAAA,EAEJ;AAAA;AAAA,WAAA;AAAA,UAzBK,GAAA,CAAI;AAAA,SA0BX;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,MAAA,CACP,MAAA,EACA,CAAA,EACA,CAAA,EACA,CAAA,EACA;AACA,EAAA,MAAM,OAAO,MAAA,CAAO,MAAA,GAAS,IAAI,CAAA,IAAK,MAAA,CAAO,SAAS,CAAA,CAAA,GAAK,CAAA;AAC3D,EAAA,OAAO,MAAA,CACJ,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,CAAA,GAAI,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,KAAK,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAE,CAAA,CACrE,IAAA,CAAK,GAAG,CAAA;AACb;AAEO,SAAS,KAAA,CAAM,EAAE,OAAA,EAAQ,EAA8B;AAC5D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAW,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AAC3C,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,QAAQ,MAAM,CAAA;AACzC,EAAA,MAAM,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAC,CAAA;AACrD,EAAA,uBACEC,IAAAA,CAAC,QAAA,EAAA,EAAO,WAAA,EAAU,YAAA,EAAa,WAAU,QAAA,EACvC,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,6CAAA;AAAA,UACA,IAAA,CAAK;AAAA,SACP;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,KAAA,EAAM,CAAA;AAAA,0BACrBC,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,iCAAA,EAAmC,CAAA,CAAE,IAAI,CAAA,EAC1D,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,YACA,OAAA,CAAQ;AAAA,WAAA,EACX;AAAA;AAAA;AAAA,KACF;AAAA,oBACAD,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,OAAA,EAAQ,YAAA;AAAA,QACR,mBAAA,EAAoB,MAAA;AAAA,QACpB,SAAA,EAAU,mCAAA;AAAA,QAEV,QAAA,kBAAAA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,OAAO,OAAA,CAAQ,MAAA,EAAQ,KAAK,EAAA,EAAI,CAAC,CAAA,KAAM,CAAA,GAAI,GAAG,CAAA;AAAA,YACtD,IAAA,EAAK,MAAA;AAAA,YACL,WAAA,EAAa,CAAA;AAAA,YACb,YAAA,EAAa,oBAAA;AAAA,YACb,WAAW,CAAA,CAAE;AAAA;AAAA;AACf;AAAA,KACF;AAAA,oBACAA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,OAAA,EAAS,CAAC,GAAA,EAAK,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC5B,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA,GAAI,CAAA,EAAG,CAAC,CAAC;AAAA;AAAA;AAC/C,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU,EAAE,OAAA,EAAQ,EAAkC;AACpE,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUI,gBAA2B,OAAO,CAAA;AAChE,EAAA,MAAM,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAClD,EAAA,MAAM,GAAA,GAAA,CAAO,OAAA,CAAQ,KAAA,IAAS,KAAA,MAAW,KAAA;AACzC,EAAA,MAAM,EAAA,GAAK,CAAC,CAAA,KAAe,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAC,CAAA,GAAI,CAAA;AAC9D,EAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,GAAG,GAAA,CAAI,GAAA,CAAI,EAAE,CAAC,CAAA;AAClC,EAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,GAAG,GAAA,CAAI,GAAA,CAAI,EAAE,CAAC,CAAA;AAClC,EAAA,MAAM,CAAA,GAAI,CAAC,CAAA,KAAe,EAAA,KAAO,EAAA,GAAK,OAAO,EAAA,CAAG,CAAC,CAAA,GAAI,EAAA,KAAO,EAAA,GAAK,EAAA,CAAA;AACjE,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,CAAA,EAAG,CAAA,KACrC,MAAA,CAAW,YAAA,CAAa,IAAI,YAAA,CAAa,MAAM,CAAA,EAAG,IAAA,CAAK,OAAO;AAAA,GAChE;AACA,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KACd,EAAA;AAAA,IACE,gEAAA;AAAA,IACA,MAAA,GACI,KAAK,OAAA,GACH,2BAAA,GACA,8BACF,EAAA,CAAG,IAAA,CAAK,OAAO,mBAAmB;AAAA,GACxC;AACF,EAAA,uBACEH,IAAAA,CAAC,QAAA,EAAA,EAAO,WAAA,EAAU,iBAAA,EAAkB,WAAU,QAAA,EAC5C,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,cAAY,OAAA,CAAQ,OAAA;AAAA,QACpB,SAAA,EAAU,iBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,gBAAc,IAAA,KAAS,OAAA;AAAA,cACvB,SAAA,EAAW,MAAA,CAAO,IAAA,KAAS,OAAO,CAAA;AAAA,cAClC,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAO,CAAA;AAAA,cAE7B,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,WACV;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,gBAAc,IAAA,KAAS,MAAA;AAAA,cACvB,SAAA,EAAW,MAAA,CAAO,IAAA,KAAS,MAAM,CAAA;AAAA,cACjC,OAAA,EAAS,MAAM,OAAA,CAAQ,MAAM,CAAA;AAAA,cAE5B,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV;AAAA;AAAA,KACF;AAAA,IACC,IAAA,KAAS,0BACRA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,OAAA,EAAQ,YAAA;AAAA,QACR,mBAAA,EAAoB,MAAA;AAAA,QACpB,SAAA,EAAU,8BAAA;AAAA,QAET,kBAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,sBACtBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YAEC,QAAQ,MAAA,CAAO,CAAA,CAAE,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAC,CAAA;AAAA,YACnC,IAAA,EAAK,MAAA;AAAA,YACL,WAAA,EAAa,GAAA;AAAA,YACb,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,YAAA,EAAa,oBAAA;AAAA,YACb,SAAA,EAAW,OAAA,CAAQ,CAAC,CAAA,CAAE;AAAA,WAAA;AAAA,UAPjB,CAAA,CAAE;AAAA,SASV;AAAA;AAAA,KACH,mBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,2BAAA,EAC/B,QAAA,EAAA,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AAC5B,MAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,EAAE,MAAM,CAAA;AACnC,MAAA,uBACEC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,WAAW,EAAA,CAAG,4BAAA,EAA8B,OAAA,CAAQ,CAAC,EAAE,IAAI,CAAA;AAAA,YAE1D,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,SACL;AAAA,wBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACZ,QAAA,EAAA,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBAChBA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,WAAW,EAAA,CAAG,qBAAA,EAAuB,OAAA,CAAQ,CAAC,EAAE,IAAI,CAAA;AAAA,YACpD,OAAO,EAAE,MAAA,EAAQ,GAAI,CAAA,GAAI,GAAA,GAAO,GAAG,CAAA,CAAA,CAAA;AAAI,WAAA;AAAA,UAFlC;AAAA,SAIR,CAAA,EACH;AAAA,OAAA,EAAA,EAdQ,EAAE,KAeZ,CAAA;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,oBAEFA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,IAAA,CAAK,KAAK,CAAA;AAAA,QAE5D,QAAA,EAAA,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACpBA,GAAAA,CAAC,MAAA,EAAA,EAAc,QAAA,EAAA,CAAA,EAAA,EAAJ,CAAM,CAClB;AAAA;AAAA,KACH;AAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,+CACX,QAAA,EAAA,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,CAAA,qBACtBC,IAAAA,CAAC,IAAA,EAAA,EAAiB,WAAU,yBAAA,EAC1B,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,WAAW,EAAA,CAAG,uBAAA,EAAyB,OAAA,CAAQ,CAAC,EAAE,IAAI;AAAA;AAAA,OACxD;AAAA,sBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,YAAE,KAAA,EAAM,CAAA;AAAA,MACtC,CAAA,CAAE,2BAAWA,GAAAA,CAAC,UAAK,SAAA,EAAW,IAAA,CAAK,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,OAAA,EAAQ;AAAA,KAAA,EAAA,EAN/C,CAAA,CAAE,KAOX,CACD,CAAA,EACH,CAAA;AAAA,IACC,OAAA,CAAQ,OAAA,oBACPA,GAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,IAAA,CAAK,KAAK,CAAA,EACjD,QAAA,EAAA,OAAA,CAAQ,OAAA,EACX,CAAA;AAAA,oBAEFA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EACE,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,QAEjE,OAAA,EAAS,CAAC,EAAA,EAAI,GAAG,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,QACnD,MAAM,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AAAA,UAClC,CAAA;AAAA,UACA,GAAG,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,IAAK,CAAC,CAAC;AAAA,SAC7D;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAGO,SAAS,OAAA,CAAQ,EAAE,OAAA,EAAQ,EAA6B;AAC7D,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,OAAA,EAAQ;AAC7B,EAAA,QAAQ,QAAQ,IAAA;AAAM,IACpB,KAAK,KAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,EAAS,OAAA,EAAkB,CAAA;AAAA,IACrC,KAAK,gBAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAkB,CAAA;AAAA,IAC3C,KAAK,YAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,CAAA;AAAA,IACtC,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAkB,CAAA;AAAA,IACnC,KAAK,OAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAkB,CAAA;AAAA,IAClC,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,MAAA,GAAS,QAAA,GAAW,OAAA,CAAQ,SAAS,CAAA;AAC3C,MAAA,OAAO,yBAASA,GAAAA,CAAC,UAAQ,GAAG,OAAA,CAAQ,OAAO,CAAA,GAAK,IAAA;AAAA,IAClD;AAAA;AAEJ;AC3aO,IAAM,cAAc,CAAC,KAAA,EAAc,UACxC,KAAA,CAAM,EAAA,IAAM,SAAS,KAAK,CAAA;AAY5B,IAAM,UAAA,GAAa;AAAA,EACjB,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAGO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,EAAM,QAAA;AAAA,EACN,QAAA;AAAA,EACA,KAAA,GAAQ,IAAA;AAAA,EACR;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,QAAA,GAAW,MAAM,IAAA,IAAQ,QAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAM,QAAQ,CAAA;AAC3B,EAAA,MAAM,KAAA,GAAQ,OAAA,IAAW,KAAA,GAAQ,KAAA,CAAM,KAAA,GAAQ,MAAA;AAC/C,EAAA,uBACEA,GAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,MAC3B,QAAA,kBAAAC,IAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,WAAA,CAAY,KAAA,EAAO,KAAK,CAAA;AAAA,MAC5B,WAAA,EAAU,YAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAW,QAAA;AAAA,MACX,IAAA,EAAK,OAAA;AAAA,MACL,wBAAsB,MAAA,CAAO,KAAA;AAAA,MAC7B,cAAY,KAAA,CAAM,QAAA,IAAY,KAAA,IAAS,CAAA,EAAG,QAAQ,CAAC,CAAA,CAAA;AAAA,MACnD,SAAA,EAAW,EAAA;AAAA,QACT,iLAAA;AAAA,QACA,IAAA,CAAK,OAAA;AAAA,QACL,IAAA,CAAK,IAAA;AAAA,QACL;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,CAAC,IAAA,CAAK,2BACLA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,yEAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0EAAA,EAA2E,CAAA;AAAA,8BAC1FA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFAAA,EAAqF;AAAA;AAAA;AAAA,SACtG;AAAA,wBAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,mBAAmB,UAAA,CAAW,KAAK,CAAC,CAAA,EACpD,QAAA,EACH;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AC1CA,IAAM,QAAA,GAAW,CAAC,CAAA,KAChB,CAAA,IAAK,IACD,+BAAA,GACA,CAAA,KAAM,IACJ,gBAAA,GACA,gBAAA;AAMR,SAAS,WAAA,CAAY,EAAE,KAAA,EAAM,EAAkC;AAC7D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEC,IAAAA,CAAAI,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,8BAAA;AAAA,UACA,QAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,MAAM;AAAA,SAC/B;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACrBC,IAAAA,CAAC,IAAA,EAAA,EAAmB,CAAA,EAAG,CAAA,GAAI,CAAA,EACxB,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,IAAA,oBACDD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,MAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,CAAA,CAAE,IAAA,EAAM,MAAA,EAAQ,CAAA,CAAE,QAAQ,CAAA,EAC5C,CAAA;AAAA,0BAEFA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,oBAAA;AAAA,gBACA,MAAA,CAAO,CAAA,CAAE,MAAA,EAAQ,IAAA,CAAK,OAAO,CAAA,CAAE;AAAA,eACjC;AAAA,cAEA,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO;AAAA;AAAA,WAC3B;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EAA8B,YAAE,KAAA,EAAM,CAAA;AAAA,UACpD,CAAA,CAAE,WAAA,oBACDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,IAAA,CAAK,KAAK,CAAA,EACvD,QAAA,EAAA,CAAA,CAAE,WAAA,EACL;AAAA,SAAA,EAAA,EAlBO,CAAA,CAAE,KAoBb,CACD;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,OAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAc,CAAA,EAC7B,CAAA;AAEJ;AAIA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAM,EAAgC;AACzD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEC,IAAAA,CAAAI,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,OAAO,CAAC,CAAA,EAAG,SAAA,EAAU,uBAAA,EAC5B,0BAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,KAAA,CAAM,SAAS,CAAA,EACnC,CAAA;AAAA,IACC,KAAA,CAAM,WAAA,oBACLA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,IAAA,CAAK,KAAK,CAAA,EAClD,QAAA,EAAA,KAAA,CAAM,WAAA,EACT,CAAA;AAAA,IAED,KAAA,CAAM,0BAAUA,GAAAA,CAAC,cAAW,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,SAAA,EAAU,MAAA,EAAO;AAAA,GAAA,EACtE,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,MAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAc,CAAA,EAC3B,CAAA;AAEJ;AAIA,SAAS,oBAAA,CAAqB;AAAA,EAC5B;AACF,CAAA,EAEG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,KAAA,CAAM,OAAA;AAC3B,EAAA,uBACEC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,UAAA,IAAc,yCAAyC,CAAA;AAAA,MAErE,QAAA,EAAA;AAAA,wBAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,IAAC,WAAA,EAAA,EAAY,OAAA,EAAS,MAAM,OAAA,EAAS,KAAA,EAAO,MAAM,KAAA,EAAO,CAAA;AAAA,0BACzDA,GAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACE,GAAG,OAAO,CAAC,CAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,8CAAA;AAAA,gBACA,IAAA,CAAK;AAAA,eACP;AAAA,cAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,UACC,KAAA,CAAM,IAAA,oBACLC,IAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,MAAA,CAAO,CAAC,CAAA,EAAG,SAAA,EAAU,sBAAA,EAC5B,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,sBAAsB,CAAA,CAAE,IAAI,CAAA,EAC7C,QAAA,kBAAAA,IAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,EACpC,CAAA;AAAA,4BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,IAAA,CAAK,KAAK,CAAA,EAC1C,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,KAAA,EACd;AAAA,WAAA,EACF,CAAA;AAAA,UAED,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAA,GAAS,qBACvCA,GAAAA,CAAC,IAAA,EAAA,EAAI,GAAG,MAAA,CAAO,CAAC,GAAG,SAAA,EAAU,gCAAA,EAC1B,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,sBAClBC,IAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAU,wBAAA,EACpB,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAY,MAAA;AAAA,gBACZ,SAAA,EAAW,EAAA,CAAG,sCAAA,EAAwC,CAAA,CAAE,IAAI;AAAA;AAAA,aAC9D;AAAA,YACC;AAAA,WAAA,EAAA,EALM,CAMT,CACD,CAAA,EACH,CAAA;AAAA,UAED,KAAA,CAAM,6BACLA,GAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACE,GAAG,OAAO,CAAC,CAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,6CAAA;AAAA,gBACA,CAAA,CAAE,MAAA;AAAA,gBACF,IAAA,CAAK;AAAA,eACP;AAAA,cAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT,SAAA,EAEJ,CAAA;AAAA,QACC,UAAA,oBACCC,IAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,MAAA,CAAO,CAAC,CAAA,EAAG,SAAA,EAAU,qCAAA,EAC5B,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,KAAA,CAAM,OAAA,EAAU,CAAA;AAAA,UACjC,MAAM,gBAAA,oBACLA,IAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,MAAM,gBAAA,EAAkB;AAAA,SAAA,EAE9C;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAEO,SAAS,wBAAA,CAAyB;AAAA,EACvC,KAAA;AAAA,EACA;AACF,CAAA,EAA8C;AAC5C,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,MAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAc,CAAA,EACtC,CAAA;AAEJ;AAIA,SAAS,SAAA,CAAU;AAAA,EACjB,OAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,OAAO,CAAC,CAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,0DAAA;AAAA,QACA,IAAA,CAAK,QAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACP;AAAA,MAEA,QAAA,kBAAAC,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,4CAAA,EACf,QAAA,EAAA;AAAA,wBAAAD,IAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAW,EAAA,CAAG,UAAA,EAAY,IAAA,CAAK,QAAQ,GACxC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAG,sBACfA,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAM,KAAA;AAAA,YACN,SAAA,EAAW,EAAA;AAAA,cACT,yBAAA;AAAA,cACA,CAAA,KAAM,IAAI,YAAA,GAAe,UAAA;AAAA,cACzB,IAAA,CAAK;AAAA,aACP;AAAA,YAEC,QAAA,EAAA;AAAA,WAAA;AAAA,UARI;AAAA,SAUR,GACH,CAAA,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,OAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,KAAK,CAAA,qBACdA,IAAC,IAAA,EAAA,EAAW,SAAA,EAAW,GAAG,CAAA,GAAI,CAAA,IAAK,YAAY,IAAA,CAAK,QAAQ,GACzD,QAAA,EAAA,GAAA,CAAI,GAAA;AAAA,UAAI,CAAC,IAAA,EAAM,CAAA,KACd,CAAA,KAAM,oBACJA,GAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,KAAA,EAAM,KAAA;AAAA,cACN,SAAA,EAAU,kCAAA;AAAA,cAET,QAAA,EAAA;AAAA,aAAA;AAAA,YAJI;AAAA,8BAOPA,GAAAA,CAAC,QAAW,SAAA,EAAU,iCAAA,EACnB,kBADM,CAET;AAAA,SAEJ,EAAA,EAfO,CAgBT,CACD,CAAA,EACH;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,uBAAA,CAAwB;AAAA,EACtC,KAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAA,MAAM,IAAI,MAAA,CAAO,QAAA,EAAA,CAAW,KAAA,CAAM,IAAA,IAAQ,YAAY,OAAO,CAAA;AAC7D,EAAA,MAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,OAAO,MAAM,CAAA,GAAI,MAAM,OAAA,IAAW;AAAA,IACvD,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,uBACEC,KAAC,UAAA,EAAA,EAAW,KAAA,EAAc,OAAc,IAAA,EAAK,MAAA,EAAO,OAAM,IAAA,EACxD,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,CAAC,MAAA,EAAQ,MAAA,EAAQ,OAAO,MAAM,CAAA;AAAA,QACvC,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AAAA,UAC1B,CAAA,CAAE,KAAA;AAAA,0BACFA,GAAAA,CAAC,MAAA,EAAA,EAAa,WAAU,YAAA,EACrB,QAAA,EAAA,CAAA,CAAE,UADK,GAEV,CAAA;AAAA,UACA,CAAA,CAAE,KAAA;AAAA,0BACFA,GAAAA,CAAC,MAAA,EAAA,EAAa,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,CAAA,CAAE,IAAI,CAAA,EAChD,QAAA,EAAA,CAAA,CAAE,MAAA,EAAA,EADK,GAEV;AAAA,SACD;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,mBAAA,CAAoB;AAAA,EAClC,KAAA;AAAA,EACA;AACF,CAAA,EAAyC;AACvC,EAAA,MAAM,CAAC,MAAM,MAAM,CAAA,GAAI,MAAM,OAAA,IAAW,CAAC,cAAc,QAAQ,CAAA;AAC/D,EAAA,uBACEC,KAAC,UAAA,EAAA,EAAW,KAAA,EAAc,OAAc,IAAA,EAAK,MAAA,EAAO,OAAM,IAAA,EACxD,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,CAAC,IAAA,EAAM,MAAM,CAAA;AAAA,QACtB,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AAAA,0BAC1BC,KAAC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,IAAA;AAAA,YACF,CAAA,CAAE,0BACDD,GAAAA,CAAC,UAAK,SAAA,EAAU,sCAAA,EACb,YAAE,MAAA,EACL;AAAA,WAAA,EAAA,EALM,GAOV,CAAA;AAAA,0BACAA,GAAAA,CAAC,MAAA,EAAA,EAAa,WAAU,8BAAA,EACrB,QAAA,EAAA,CAAA,CAAE,UADK,GAEV;AAAA,SACD;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAIA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAM,EAAgC;AACzD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,uBACEC,IAAAA,CAAAI,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,8BAAA;AAAA,UACA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,MAAM;AAAA,SAC7B;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBACtBC,IAAAA,CAAC,IAAA,EAAA,EAAsB,CAAA,EAAG,CAAA,GAAI,CAAA,EAC3B,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,IAAA,oBACJD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,CAAA,EAC7B,CAAA;AAAA,0BAEFA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,eAAK,KAAA,EAAM,CAAA;AAAA,0BAClDA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,wBAAwB,IAAA,CAAK,KAAK,CAAA,EAChD,QAAA,EAAA,IAAA,CAAK,IAAA,EACR,CAAA;AAAA,UACC,KAAK,IAAA,oBACJC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,MAAA,EACb,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,sBAAsB,CAAA,CAAE,IAAI,CAAA,EAC7C,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA,EAC7B,CAAA;AAAA,YACC,IAAA,CAAK,SAAA,oBACJA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,IAAA,CAAK,KAAK,CAAA,EACrC,QAAA,EAAA,IAAA,CAAK,SAAA,EACR;AAAA,WAAA,EAEJ;AAAA,SAAA,EAAA,EApBO,IAAA,CAAK,KAsBhB,CACD;AAAA;AAAA,KACH;AAAA,IACC,KAAA,CAAM,IAAA,oBACLA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,IAAA,CAAK,KAAK,CAAA,EAAI,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK;AAAA,GAAA,EAErE,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,OAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAc,CAAA,EAC3B,CAAA;AAEJ;AAIA,SAAS,cAAA,CAAe,EAAE,KAAA,EAAM,EAAqC;AACnE,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,MAAA,GAAS,IAAI,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA;AAC3C,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAC5D,EAAA,uBACEC,IAAAA,CAAAI,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAJ,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,UAAU,KAAA,CAAM;AAAA;AAAA,OAClB;AAAA,MACC,KAAA,CAAM,KAAA,oBACLA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,IAAA,CAAK,KAAK,CAAA,EAAI,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM;AAAA,KAAA,EAE1D,CAAA;AAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0BAAA,EACX,gBAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AAC3B,MAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACtB,MAAA,uBACEC,IAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,CAAA,CAAE,SAAA;AAAA,YACF,yFAAA;AAAA,YACA,CAAA,CAAE,WAAA,GACE,EAAA,CAAG,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,MAAM,CAAA,GACnB,EAAA,CAAG,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,QAAQ;AAAA,WACjC;AAAA,UACA,OAAO,CAAA,CAAE,KAAA;AAAA,UAET,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,gCAAA;AAAA,kBACA,CAAA,CAAE,WAAA,GAAc,CAAA,CAAE,IAAA,GAAO,IAAA,CAAK;AAAA,iBAChC;AAAA,gBAEC,QAAA,EAAA,CAAA,GAAI;AAAA;AAAA,aACP;AAAA,4BACAC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA8B,YAAE,KAAA,EAAM,CAAA;AAAA,cACrD,CAAA,CAAE,QAAA,oBACDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,IAAA,CAAK,KAAK,CAAA,EACrD,QAAA,EAAA,CAAA,CAAE,QAAA,EACL,CAAA;AAAA,8BAEFA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAY,MAAA;AAAA,kBACZ,SAAA,EAAW,EAAA;AAAA,oBACT,+CAAA;AAAA,oBACA,IAAA,CAAK,UAAU,gBAAA,GAAmB;AAAA,mBACpC;AAAA,kBAEA,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,2BAAA;AAAA,wBACA,EAAE,WAAA,GACE,CAAA,CAAE,IAAA,GACF,IAAA,CAAK,UACH,gBAAA,GACA;AAAA,uBACR;AAAA,sBACA,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAI,EAAE,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAA,CAAA,CAAA;AAAI;AAAA;AAC9C;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BACAC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kCAAA,EACb,QAAA,EAAA,CAAA,CAAE,WAAW,MAAA,CAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA,EACrC,CAAA;AAAA,cACC,CAAA,CAAE,SAAA,oBACDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,SAAA,EACL,CAAA;AAAA,cAED,EAAE,MAAA,IAAU,IAAA,IAAQ,CAAA,CAAE,MAAA,KAAW,qBAChCC,IAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,gDAAA;AAAA,oBACA,CAAA,CAAE,MAAA,GAAS,CAAA,GAAI,cAAA,GAAiB;AAAA,mBAClC;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,SAAS,CAAA,mBACVD,GAAAA,CAAC,OAAA,EAAA,EAAQ,eAAY,MAAA,EAAO,SAAA,EAAU,QAAA,EAAS,CAAA,mBAE/CA,GAAAA,CAAC,SAAA,EAAA,EAAU,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS,CAAA;AAAA,oCAEnDA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WACb,QAAA,EAAA,CAAA,CAAE,MAAA,GAAS,CAAA,GAAI,GAAA,GAAM,QAAA,EACxB,CAAA;AAAA,oBACC,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,MAAM;AAAA;AAAA;AAAA;AACpB,aAAA,EAEJ;AAAA;AAAA,SAAA;AAAA,QAxEK,CAAA,CAAE;AAAA,OAyET;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,0BAAUA,GAAAA,CAAC,cAAW,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,SAAA,EAAU,MAAA,EAAO;AAAA,GAAA,EACtE,CAAA;AAEJ;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,MAAA,EAAO,KAAA,EAAM,IAAA,EACxD,QAAA,kBAAAA,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAc,CAAA,EAChC,CAAA;AAEJ;AAIO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA;AACF,CAAA,EAAuC;AACrC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,MAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,CAAA,EAC/B,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc,EAAE,KAAA,EAAM,EAA8B;AAC3D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,SAAA,EAAW,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA,CAAE,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AACnE,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,IAAC,WAAA,EAAA,EAAY,OAAA,EAAS,MAAM,OAAA,EAAS,KAAA,EAAO,MAAM,KAAA,EAAO,CAAA;AAAA,MACxD,KAAA,CAAM,wBACLA,GAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACE,GAAG,OAAO,CAAC,CAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,8CAAA;AAAA,YACA,IAAA,CAAK;AAAA,WACP;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,OACT;AAAA,MAED,KAAA,CAAM,2BACLC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACE,GAAG,OAAO,CAAC,CAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,oFAAA;AAAA,YACA,CAAA,CAAE,IAAA;AAAA,YACF,CAAA,CAAE;AAAA,WACJ;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,sBAAsB,CAAA,CAAE,IAAI,CAAA,EAC9C,QAAA,kBAAAA,IAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EACvC,CAAA;AAAA,4BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,SAAA,EAAW,QAAA,EAAA,KAAA,CAAM,QAAQ,KAAA,EAAM;AAAA;AAAA;AAAA,OACjD;AAAA,MAED,KAAA,CAAM,YAAA,oBACLC,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,qBAAA,EAAuB,IAAA,CAAK,KAAK,CAAA,EAAG,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAC3C,KAAA,CAAM,YAAA;AAAA,QAAa;AAAA,OAAA,EAC7B,CAAA;AAAA,MAED,KAAA,CAAM,6BACLD,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,4CAAA;AAAA,YACA,CAAA,CAAE;AAAA,WACJ;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT,KAAA,EAEJ,CAAA;AAAA,oBACAC,KAAC,KAAA,EAAA,EAAK,GAAG,OAAO,CAAC,CAAA,EAAG,WAAU,qCAAA,EAC3B,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,0BAAUD,GAAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,MAAM,MAAA,EAAQ,CAAA;AAAA,MAChD,KAAA,CAAM,aAAa,KAAA,CAAM,SAAA,CAAU,SAAS,CAAA,oBAC3CA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,aACX,QAAA,EAAA,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA,qBACpBC,IAAAA,CAAC,IAAA,EAAA,EAAiB,WAAU,iCAAA,EAC1B,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EAA2B,YAAE,KAAA,EAAM,CAAA;AAAA,wBACnDA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA;AAAA,cACT,yCAAA;AAAA,cACA,IAAA,CAAK,UAAU,gBAAA,GAAmB;AAAA,aACpC;AAAA,YAEA,QAAA,kBAAAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,CAAA,CAAE,IAAI,CAAA;AAAA,gBACjD,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAI,EAAE,KAAA,GAAQ,KAAA,GAAS,GAAG,CAAA,CAAA,CAAA;AAAI;AAAA;AAChD;AAAA,SACF;AAAA,wBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAA,EACb,YAAE,KAAA,EACL;AAAA,OAAA,EAAA,EAhBO,CAAA,CAAE,KAiBX,CACD,CAAA,EACH,CAAA;AAAA,MAED,MAAM,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAA,GAAS,qBACvCA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,qDAAA;AAAA,YACA,IAAA,CAAK,QAAA;AAAA,YACL,IAAA,CAAK;AAAA,WACP;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,sBAClBC,IAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT,2DAAA;AAAA,gBACA,IAAA,CAAK;AAAA,eACP;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EACd,QAAA,EAAA;AAAA,kCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA8B,YAAE,KAAA,EAAM,CAAA;AAAA,kBACrD,CAAA,CAAE,IAAA,oBACDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,IAAA,CAAK,KAAK,CAAA,EACrD,QAAA,EAAA,CAAA,CAAE,IAAA,EACL;AAAA,iBAAA,EAEJ,CAAA;AAAA,gBACC,CAAA,CAAE,wBACDA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,IAAA,CAAK,KAAK,CAAA;AAAA,oBAEzD,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACL;AAAA,aAAA;AAAA,YAnBG,GAAG,CAAA,CAAE,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,QAAQ,EAAE,CAAA;AAAA,WAsBlC;AAAA;AAAA;AACH,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;AAIO,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,KAAA,EAAM,EAAkC;AAC5E,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUM,gBAAS,CAAC,CAAA;AAC5C,EAAA,MAAM,SAAeA,MAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,IAAA,GAAaA,MAAA,CAAA,MAAA,CAAwC,EAAE,CAAA;AAC7D,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,EAAG,KAAA;AACpC,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAA2B;AACxC,IAAA,MAAM,CAAA,GAAI,MAAM,IAAA,CAAK,MAAA;AACrB,IAAA,MAAM,IAAA,GACJ,EAAE,GAAA,KAAQ,YAAA,GAAA,CACL,SAAS,CAAA,IAAK,CAAA,GACf,CAAA,CAAE,GAAA,KAAQ,WAAA,GAAA,CACP,MAAA,GAAS,IAAI,CAAA,IAAK,CAAA,GACnB,EAAE,GAAA,KAAQ,MAAA,GACR,IACA,CAAA,CAAE,GAAA,KAAQ,KAAA,GACR,CAAA,GAAI,CAAA,GACJ,EAAA;AACZ,IAAA,IAAI,OAAO,CAAA,EAAG;AACd,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,EAAG,KAAA,EAAM;AAAA,EAC5B,CAAA;AACA,EAAA,uBACEL,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,MAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,IAAC,WAAA,EAAA,EAAY,OAAA,EAAS,MAAM,OAAA,EAAS,KAAA,EAAO,MAAM,KAAA,EAAO,CAAA;AAAA,oBACzDA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,SAAA;AAAA,QACL,cAAY,KAAA,CAAM,KAAA;AAAA,QAClB,SAAA,EAAU,2BAAA;AAAA,QAET,gBAAM,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,sBACpBA,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YAEC,GAAA,EAAK,CAAC,EAAA,KAAO;AACX,cAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAA;AAAA,YACpB,CAAA;AAAA,YACA,EAAA,EAAI,CAAA,EAAG,MAAM,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAA;AAAA,YACtB,OAAA,EAAS,GAAG,MAAM,CAAA,MAAA,CAAA;AAAA,YAClB,UAAU,CAAA,KAAM,MAAA;AAAA,YAChB,MAAM,GAAA,CAAI,IAAA;AAAA,YACV,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,CAAA;AAAA,YAC1B,SAAA,EAAW,KAAA;AAAA,YAEV,QAAA,EAAA,GAAA,CAAI;AAAA,WAAA;AAAA,UAXA,GAAA,CAAI;AAAA,SAaZ;AAAA;AAAA,KACH;AAAA,oBACAC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,EAAA,EAAI,GAAG,MAAM,CAAA,MAAA,CAAA;AAAA,QACb,iBAAA,EAAiB,CAAA,EAAG,MAAM,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAA;AAAA,QACxC,SAAA,EAAU,MAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,OAAA,EAAS,SAAS,SAAA,oBAAaD,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAO,OAAA,EAAS,CAAA;AAAA,UAC5D,SAAS,IAAA,KAAS,OAAA,oBAAWA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAO,OAAA,EAAS,CAAA;AAAA,UACxD,SAAS,IAAA,KAAS,mBAAA,oBACjBA,GAAAA,CAAC,oBAAA,EAAA,EAAqB,OAAO,OAAA,EAAS,CAAA;AAAA,UAEvC,SAAS,IAAA,KAAS,OAAA,oBAAWA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAO,OAAA,EAAS,CAAA;AAAA,UACxD,SAAS,IAAA,KAAS,aAAA,oBAAiBA,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAO,OAAA,EAAS;AAAA;AAAA;AAAA;AACtE,GAAA,EACF,CAAA;AAEJ;AAEA,IAAM,SAAA,GAAkBM,MAAA,CAAA,UAAA,CAWtB,CAAC,EAAE,EAAA,EAAI,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,QAAA,EAAS,EAAG,GAAA,KAAQ;AACxE,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEL,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,KAAA;AAAA,MACL,EAAA;AAAA,MACA,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,OAAA;AAAA,MACf,QAAA,EAAU,WAAW,CAAA,GAAI,EAAA;AAAA,MACzB,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,wGAAA;AAAA,QACA,QAAA,GACI,IAAA,CAAK,OAAA,GACH,8CAAA,GACA,wCAAA,GACF,EAAA;AAAA,UACE,IAAA,CAAK,QAAA;AAAA,UACL,IAAA,CAAK,KAAA;AAAA,UACL,IAAA,CAAK,UAAU,sBAAA,GAAyB;AAAA;AAC1C,OACN;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQD,GAAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAM,IAAA,EAAM,WAAU,QAAA,EAAS,CAAA;AAAA,QACjD;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AChuBjB,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,MAAM,KAAA,CAAM,MAAA;AACtB,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,MAAA,EAC3C,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,KAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,OAAA,oBAAWD,GAAAA,CAAC,OAAA,EAAA,EAAS,gBAAM,OAAA,EAAQ,CAAA;AAAA,sBAC1CA,GAAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,MACxB,KAAA,CAAM,wBACLA,GAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACE,GAAG,OAAO,CAAC,CAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,8CAAA;AAAA,YACA,IAAA,CAAK;AAAA,WACP;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,OACT;AAAA,MAED,KAAA,CAAM,YAAA,oBACLC,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,aAAA,EAAe,IAAA,CAAK,KAAK,CAAA,EAAG,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACnC,KAAA,CAAM,YAAA;AAAA,QAAa;AAAA,OAAA,EAC7B;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACAD,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA,EAAM;AAAA,GAAA,EACxC,CAAA,EACF,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,CAAA,EAAE,EAA8C;AAC3E,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,uBACEC,IAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACE,GAAG,OAAO,CAAC,CAAA;AAAA,MACZ,SAAA,EAAU,qEAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,OAAA,EAAQ,aAAA;AAAA,YACR,SAAA,EAAU,0CAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,KAAA;AAAA,kBACH,EAAA,EAAG,KAAA;AAAA,kBACH,CAAA,EAAE,KAAA;AAAA,kBACF,IAAA,EAAK,MAAA;AAAA,kBACL,WAAA,EAAY,GAAA;AAAA,kBACZ,SAAA,EAAW,IAAA,CAAK,OAAA,GAAU,oBAAA,GAAuB;AAAA;AAAA,eACnD;AAAA,8BACAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,KAAA;AAAA,kBACH,EAAA,EAAG,KAAA;AAAA,kBACH,CAAA,EAAE,KAAA;AAAA,kBACF,IAAA,EAAK,MAAA;AAAA,kBACL,WAAA,EAAY,GAAA;AAAA,kBACZ,eAAA,EAAgB,QAAA;AAAA,kBAChB,aAAA,EAAc,OAAA;AAAA,kBACd,WAAW,CAAA,CAAE;AAAA;AAAA,eACf;AAAA,cACC,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,sBACbA,GAAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBAEC,MAAA,EAAO,sBAAA;AAAA,kBACP,WAAW,CAAA,OAAA,EAAW,GAAA,GAAM,CAAA,GAAK,CAAA,GAAI,MAAM,CAAC,CAAA,SAAA,CAAA;AAAA,kBAC5C,WAAW,CAAA,CAAE,OAAA;AAAA,kBACb,OAAA,EAAS;AAAA,iBAAA;AAAA,gBAJJ;AAAA,eAMR;AAAA;AAAA;AAAA,SACH;AAAA,QACC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AACtB,UAAA,MAAM,QAAS,CAAA,GAAI,IAAA,CAAK,KAAK,CAAA,GAAK,CAAA,GAAI,KAAK,EAAA,GAAK,CAAA;AAChD,UAAA,uBACEC,IAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT,8HAAA;AAAA,gBACA,IAAA,CAAK,QAAA;AAAA,gBACL,IAAA,CAAK,UAAU,UAAA,GAAa;AAAA,eAC9B;AAAA,cACA,KAAA,EAAO;AAAA;AAAA,gBAEL,MAAM,CAAA,EAAG,EAAA,GAAK,OAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,gBACpC,KAAK,CAAA,EAAG,EAAA,GAAK,OAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA,eACrC;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,wBACJD,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,MAAM,IAAA,CAAK,IAAA;AAAA,oBACX,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,CAAA,CAAE,IAAI;AAAA;AAAA,iBAC7C;AAAA,gCAEFA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8BAAA,EAAgC,eAAK,KAAA,EAAM,CAAA;AAAA,gBACvD,IAAA,CAAK,MAAA,oBACJA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,8BAAA,EAAgC,CAAA,CAAE,IAAI,CAAA,EACpD,QAAA,EAAA,IAAA,CAAK,MAAA,EACR;AAAA;AAAA,aAAA;AAAA,YAtBG,IAAA,CAAK;AAAA,WAwBZ;AAAA,QAEJ,CAAC;AAAA;AAAA;AAAA,GACH;AAEJ;AAIO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA;AAChC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,KAAK,MAAA,CAAO,SAAA;AAAA,IACZ,MAAM,MAAA,CAAO,UAAA;AAAA,IACb,OAAO,MAAA,CAAO;AAAA,GAChB;AACA,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,KAAK,EAAA,CAAG,CAAA,CAAE,MAAM,CAAA,CAAE,MAAA,EAAQ,EAAE,IAAI,CAAA;AAAA,IAChC,IAAA,EAAM,EAAA;AAAA,MACJ,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,MAChC,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA;AAAA,MAChC,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA,CAAE;AAAA,KAClC;AAAA,IACA,KAAA,EAAO,EAAA,CAAG,IAAA,CAAK,QAAA,EAAU,KAAK,KAAK;AAAA,GACrC;AACA,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,KAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,kDAAA;AAAA,UACA,CAAA,CAAE;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AAC5B,UAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACtB,UAAA,uBACEC,IAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA,CAAG,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,cACrC,OAAO,CAAA,CAAE,KAAA;AAAA,cAET,QAAA,EAAA;AAAA,gCAAAD,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAY,MAAA;AAAA,oBACZ,SAAA,EAAW,EAAA;AAAA,sBACT,iGAAA;AAAA,sBACA,CAAA,CAAE,MAAA;AAAA,sBACF,IAAA,CAAK,UAAU,UAAA,GAAa;AAAA,qBAC9B;AAAA,oBAEA,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,uBAAA,EAAyB,CAAA,CAAE,IAAI,CAAA,EAAG;AAAA;AAAA,iBACxD;AAAA,gCACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAK,wBACJD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,MAAM,IAAA,CAAK,IAAA;AAAA,sBACX,MAAA,EAAQ,IAAA,CAAK,MAAA,KAAW,OAAA,GAAU,SAAA,GAAY;AAAA;AAAA,mBAChD;AAAA,kCAEFA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,kCAAA,EACX,eAAK,KAAA,EACR,CAAA;AAAA,kBACC,IAAA,CAAK,0BACJA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,yFAAA;AAAA,wBACA,SAAA,CAAU,KAAK,MAAM;AAAA,uBACvB;AAAA,sBAEC,QAAA,EAAA,MAAA,CAAO,KAAK,MAAM;AAAA;AAAA;AACrB,iBAAA,EAEJ,CAAA;AAAA,gBACC,KAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,MAAA,GAAS,qBACvCA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yCACX,QAAA,EAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,0BAClBC,IAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBAEC,SAAA,EAAW,EAAA;AAAA,sBACT,iCAAA;AAAA,sBACA,IAAA,CAAK;AAAA,qBACP;AAAA,oBAEA,QAAA,EAAA;AAAA,sCAAAD,GAAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACC,aAAA,EAAY,MAAA;AAAA,0BACZ,SAAA,EAAU;AAAA;AAAA,uBACZ;AAAA,sBACC;AAAA;AAAA,mBAAA;AAAA,kBAVI;AAAA,iBAYR,CAAA,EACH;AAAA;AAAA,aAAA;AAAA,YApDG,IAAA,CAAK;AAAA,WAsDZ;AAAA,QAEJ,CAAC;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAIA,IAAM,IAAA,GAAO,EAAA;AACb,IAAM,IAAA,GAAO,CAAA;AACb,IAAM,KAAA,GAAQ,EAAA;AACd,IAAM,MAAA,GAAS,CAAC,CAAA,KACd,IAAA,GAAA,CAAQ,OAAO,IAAA,IAAQ,IAAA,CAAK,GAAA,CAAI,EAAA,CAAG,CAAA,GAAI,EAAA,KAAO,CAAA,CAAA,IAAM,CAAA,GAAI,QAAQ,KAAA,CAAM,CAAA;AAEjE,SAAS,qBAAA,CAAsB;AAAA,EACpC,KAAA;AAAA,EACA;AACF,CAAA,EAA2C;AACzC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA;AAChC,EAAA,MAAM,SAAeO,MAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,IAAK,GAAA,EAAK,CAAA,IAAK,KAAK,GAAA,CAAI,IAAA,CAAK,CAAA,EAAG,CAAC,IAAI,MAAA,CAAO,CAAC,EAAE,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAE,CAAA;AAC3E,EAAA,MAAM,IAAA,GAAO,OAAO,IAAI,CAAA,GAAA,EAAM,IAAI,IAAA,CAAK,KAAK,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,EAAA,CAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,QAAA,CAAS,GAAA,CAAI,CAAC,MAAM,UAAA,CAAW,CAAA,CAAE,GAAG,CAAA,IAAK,CAAC,CAAA;AAC/D,EAAA,MAAM,GAAA,GAAM,OAAO,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,IAAK,CAAA;AACjD,EAAA,MAAM,SAAS,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAO,CAAA,GAAI,MAAO,GAAG,CAAA;AAChD,EAAA,MAAM,QAAQ,KAAA,CAAM,QAAA,CAAS,GAAA,CAAI,CAAC,GAAG,CAAA,MAAO;AAAA,IAC1C,GAAG,CAAA;AAAA,IACH,EAAA,EAAI,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA;AAAA,IAChD,CAAA,EAAG,OAAO,CAAC,CAAA;AAAA,IACX,IAAA,EAAM,MAAA;AAAA,MACJ,CAAA,CAAE,MAAA,IAAU,YAAA,CAAa,CAAA,GAAI,aAAa,MAAM,CAAA;AAAA,MAChD,IAAA,CAAK;AAAA;AACP,GACF,CAAE,CAAA;AACF,EAAA,MAAM,EAAA,GAAK,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACxC,EAAA,uBACEN,KAAC,UAAA,EAAA,EAAW,KAAA,EAAc,OAAc,IAAA,EAAK,KAAA,EAAM,OAAM,IAAA,EACvD,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAC,KAAC,KAAA,EAAA,EAAK,GAAG,OAAO,CAAC,CAAA,EAAG,WAAU,qCAAA,EAC3B,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,WAAA,EAAa,GAAA,CAAI,CAAC,IAAA,qBACvBD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,+HAAA;AAAA,YACA,IAAA,CAAK,QAAA,GACD,EAAA,CAAG,EAAA,CAAG,MAAM,EAAA,CAAG,MAAA,EAAQ,EAAA,CAAG,IAAI,CAAA,GAC9B,EAAA,CAAG,IAAA,CAAK,QAAA,EAAU,KAAK,IAAI;AAAA,WACjC;AAAA,UACA,KAAA,EAAO;AAAA;AAAA,YAEL,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,CAAA;AAAA,YACnB,CAAC,IAAA,CAAK,IAAA,KAAS,QAAA,GAAW,QAAA,GAAW,KAAK,GAAG;AAAA,WAC/C;AAAA,UAEC,QAAA,EAAA,IAAA,CAAK;AAAA,SAAA;AAAA,QAbD,IAAA,CAAK;AAAA,OAeb,CAAA;AAAA,sBACDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCACb,QAAA,kBAAAC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,YAAA;AAAA,UACR,mBAAA,EAAoB,MAAA;AAAA,UACpB,SAAA,EAAU,4BAAA;AAAA,UACV,IAAA,EAAK,KAAA;AAAA,UACL,YAAA,EAAY,KAAA,CAAM,QAAA,CACf,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,KAAK,IAAI,CAAA,CAAE,GAAG,CAAA,CAAE,CAAA,CAChC,KAAK,IAAI,CAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,EAAA,EAAI,MAAA,EACZ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,IAAA,EAAM,GACjB,CAAA,EACF,CAAA;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,QAAA,EAAU,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAA,CAAA,EACxB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBAEC,GAAG,CAAA,CAAE,EAAA;AAAA,gBACL,CAAA,EAAG,CAAA;AAAA,gBACH,OAAO,CAAA,CAAE,CAAA;AAAA,gBACT,MAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAW,EAAE,IAAA,CAAK,OAAA;AAAA,gBAClB,OAAA,EAAS;AAAA,eAAA;AAAA,cANJ,CAAA,CAAE;AAAA,aAQV,CAAA,EACH,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAG,CAAA,EAAA,EAAK,GAAA,CAAI,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AAAA,gBACvB,IAAA,EAAK,MAAA;AAAA,gBACL,WAAA,EAAa,CAAA;AAAA,gBACb,YAAA,EAAa,oBAAA;AAAA,gBACb,SAAA,EAAW,IAAA,CAAK,OAAA,GAAU,oBAAA,GAAuB;AAAA;AAAA,aACnD;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,IAAA;AAAA,gBACJ,EAAA,EAAI,GAAA;AAAA,gBACJ,EAAA,EAAI,IAAA;AAAA,gBACJ,WAAA,EAAa,GAAA;AAAA,gBACb,YAAA,EAAa,oBAAA;AAAA,gBACb,SAAA,EACE,IAAA,CAAK,OAAA,GAAU,oBAAA,GAAuB;AAAA;AAAA;AAE1C;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,GAAA,EAAI,KAAA,EAAM,SAAA,EAAU,kBAAA,EACzC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,sBACVC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,0BAAA;AAAA,UACV,OAAO,EAAE,SAAA,EAAW,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,EAAI;AAAA,UAE9B,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,gBAE1D,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,aACL;AAAA,4BACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,2DAAA;AAAA,kBACA,IAAA,CAAK;AAAA,iBACP;AAAA,gBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACL;AAAA,SAAA;AAAA,QAhBK,CAAA,CAAE;AAAA,OAkBV,CAAA,EACH,CAAA;AAAA,MACC,KAAA,CAAM,0BACLC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,qDAAA;AAAA,UAEV,OAAO,EAAE,IAAA,EAAM,GAAG,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAA,CAAA,EAAI;AAAA,UAExC,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAY,MAAA;AAAA,gBACZ,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,EAAA,CAAG,IAAI;AAAA;AAAA,aAC3C;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,0GAAA;AAAA,kBACA,EAAA,CAAG,IAAA;AAAA,kBACH,EAAA,CAAG,MAAA;AAAA,kBACH,EAAA,CAAG;AAAA,iBACL;AAAA,gBAEC,gBAAM,MAAA,CAAO;AAAA;AAAA;AAChB;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA;AAAA,IACC,KAAA,CAAM,0BAAUA,GAAAA,CAAC,cAAW,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,SAAA,EAAU,MAAA,EAAO;AAAA,GAAA,EACtE,CAAA;AAEJ;AAIO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AACjC,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,EAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AACxD,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,EAAU,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,MAAM,CAAA,IAAK,EAAC;AAClE,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,QAAA,EAAU,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,CAAA,IAAK,EAAC;AACpE,EAAA,MAAM,IAAA,GACJ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM,MAAA,GACjB,4DAAA,GACA,KAAA,CAAM,MAAA,GACJ,iDAAA,GACA,IAAA,CAAK,MAAA,GACH,iDAAA,GACA,EAAA;AACV,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,GAAU,UAAA,GAAa,gBAAA;AAC5C,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,MAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,IAAA,IAAQ,EAAA,CAAG,yBAAA,EAA2B,IAAI,CAAC,CAAA,EACnE,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,MAAA,GAAS,qBAAKD,GAAAA,CAAC,YAAS,QAAA,EAAU,IAAA,EAAM,KAAG,IAAA,EAAC,CAAA;AAAA,sBAClDC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACE,GAAG,OAAO,CAAC,CAAA;AAAA,UACZ,SAAA,EAAU,+EAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,KAAA,CAAM,UAAA,EAAY,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5B,cAAA,MAAM,EAAA,GAAK,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,KAAO,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAG,CAAA,IAAK,EAAE,CAAA;AACtD,cAAA,MAAM,EAAA,GAAK,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,KAAO,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAG,CAAA,IAAK,EAAE,CAAA;AACtD,cAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,EAAE,CAAA,GAAI,EAAA;AAC5B,cAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,EAAE,CAAA,GAAI,EAAA;AAC5B,cAAA,MAAM,OAAO,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,SAAA,EAAW,KAAK,OAAO,CAAA;AACvD,cAAA,uBACED,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,EAAA;AAAA,oBACT,2CAAA;AAAA,oBACA,IAAA,CAAK;AAAA,mBACP;AAAA,kBACA,KAAA,EAAO;AAAA;AAAA,oBAEL,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,oBACV,GAAA,EAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,oBACT,KAAA,EAAO,GAAG,IAAA,CAAK,GAAA,CAAI,GAAG,EAAE,CAAA,GAAI,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,oBAClC,MAAA,EAAQ,GAAG,IAAA,CAAK,GAAA,CAAI,GAAG,EAAE,CAAA,GAAI,KAAK,CAAC,CAAA,CAAA;AAAA,mBACrC;AAAA,kBAEA,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,+GAAA;AAAA,wBACA,OAAA;AAAA,wBACA,IAAA,CAAK,MAAA;AAAA,wBACL,IAAA,CAAK;AAAA,uBACP;AAAA,sBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACL,iBAAA;AAAA,gBAtBK,CAAA,CAAE;AAAA,eAuBT;AAAA,YAEJ,CAAC,CAAA;AAAA,4BACDA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAY,MAAA;AAAA,gBACZ,OAAA,EAAQ,aAAA;AAAA,gBACR,mBAAA,EAAoB,MAAA;AAAA,gBACpB,SAAA,EAAU,4BAAA;AAAA,gBAET,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AACtB,kBAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA;AAC3B,kBAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AACzB,kBAAA,IAAI,CAAC,CAAA,IAAK,CAAC,CAAA,EAAG,OAAO,IAAA;AACrB,kBAAA,uBACEA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBAEC,IAAI,CAAA,CAAE,CAAA;AAAA,sBACN,IAAI,CAAA,CAAE,CAAA;AAAA,sBACN,IAAI,CAAA,CAAE,CAAA;AAAA,sBACN,IAAI,CAAA,CAAE,CAAA;AAAA,sBACN,WAAA,EAAa,GAAA;AAAA,sBACb,eAAA,EAAiB,CAAA,CAAE,MAAA,GAAS,KAAA,GAAQ,MAAA;AAAA,sBACpC,YAAA,EAAa,oBAAA;AAAA,sBACb,SAAA,EACE,CAAA,CAAE,MAAA,GACE,MAAA,CAAO,CAAA,CAAE,MAAA,EAAQ,IAAA,CAAK,OAAO,CAAA,CAAE,SAAA,GAC/B,IAAA,CAAK,OAAA,GACH,oBAAA,GACA;AAAA,qBAAA;AAAA,oBAbH,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,EAAE,CAAA;AAAA,mBAexB;AAAA,gBAEJ,CAAC;AAAA;AAAA,aACH;AAAA,YACC,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACzB,cAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA;AAC3B,cAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AACzB,cAAA,IAAI,CAAC,CAAA,IAAK,CAAC,KAAK,CAAC,CAAA,CAAE,MAAM,OAAO,IAAA;AAChC,cAAA,uBACEA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,aAAA,EAAY,MAAA;AAAA,kBACZ,SAAA,EAAW,EAAA;AAAA,oBACT,8EAAA;AAAA,oBACA,OAAO,CAAA,CAAE,MAAA,IAAU,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA,CAAE;AAAA,mBAC7C;AAAA,kBACA,KAAA,EACE;AAAA,oBACE,cAAA,EAAgB,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA;AAAA,oBACtB,cAAA,EAAgB,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA;AAAA,oBACtB,YAAA,EAAc,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA;AAAA,oBACpB,YAAA,EAAc,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA;AAAA,oBACpB,cAAA,EAAgB,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,CAAA;AAAA;AAC5B,iBAAA;AAAA,gBAbG,CAAA,KAAA,EAAQ,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,EAAE,CAAA;AAAA,eAe7B;AAAA,YAEJ,CAAC,CAAA;AAAA,YACA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AACtB,cAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA;AAC3B,cAAA,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AACzB,cAAA,IAAI,CAAC,CAAA,IAAK,CAAC,KAAK,CAAC,CAAA,CAAE,OAAO,OAAO,IAAA;AACjC,cAAA,MAAM,EAAA,GAAK,EAAE,OAAA,IAAW,GAAA;AACxB,cAAA,uBACEA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,EAAA;AAAA,oBACT,6HAAA;AAAA,oBACA,OAAA;AAAA,oBACA,IAAA,CAAK,QAAA;AAAA,oBACL,IAAA,CAAK;AAAA,mBACP;AAAA,kBACA,KAAA,EAAO;AAAA;AAAA,oBAEL,IAAA,EAAM,GAAG,CAAA,CAAE,CAAA,GAAA,CAAK,EAAE,CAAA,GAAI,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA,CAAA;AAAA,oBAC/B,GAAA,EAAK,GAAG,CAAA,CAAE,CAAA,GAAA,CAAK,EAAE,CAAA,GAAI,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAAA,mBAChC;AAAA,kBAEC,QAAA,EAAA,CAAA,CAAE;AAAA,iBAAA;AAAA,gBAbE,CAAA,MAAA,EAAS,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,EAAE,CAAA;AAAA,eAc9B;AAAA,YAEJ,CAAC,CAAA;AAAA,YACA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACzB,cAAA,MAAM,OAAO,MAAA,CAAO,IAAA,CAAK,MAAA,IAAU,SAAA,EAAW,KAAK,OAAO,CAAA;AAC1D,cAAA,uBACEA,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAU,kDAAA;AAAA,kBACV,KAAA,EAAO;AAAA;AAAA,oBAEL,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA;AAAA,oBACf,GAAA,EAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA;AAAA,oBACd,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,CAAA,IAAK,EAAE,CAAA,CAAA;AAAA,mBACxB;AAAA,kBAEA,QAAA,kBAAAC,IAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,sFAAA;AAAA,wBACA,OAAA;AAAA,wBACA,IAAA,CAAK;AAAA,uBACP;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAK,wBACJD,GAAAA;AAAA,0BAAC,WAAA;AAAA,0BAAA;AAAA,4BACE,GAAG,IAAA,CAAK,KAAA;AAAA,4BACT,UAAA;AAAA,4BACA,SAAA,EAAU;AAAA;AAAA,yBACZ,GAEA,IAAA,CAAK,IAAA,oBACHA,GAAAA;AAAA,0BAAC,QAAA;AAAA,0BAAA;AAAA,4BACC,MAAM,IAAA,CAAK,IAAA;AAAA,4BACX,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,IAAA,CAAK,IAAI;AAAA;AAAA,yBAC7C;AAAA,wCAGJA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EACb,eAAK,KAAA,EACR;AAAA;AAAA;AAAA;AACF,iBAAA;AAAA,gBAjCK,IAAA,CAAK;AAAA,eAkCZ;AAAA,YAEJ,CAAC;AAAA;AAAA;AAAA,OACH;AAAA,MACC,MAAM,MAAA,GAAS,CAAA,oBAAKA,GAAAA,CAAC,QAAA,EAAA,EAAS,UAAU,KAAA,EAAO;AAAA,KAAA,EAClD;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS;AAAA,EAChB,QAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,qBAAA,EAAuB,GAAA,IAAO,aAAa,CAAA,EAC3D,QAAA,EAAA,QAAA,CAAS,IAAI,CAAC,CAAA,EAAG,sBAChBC,IAAAA,CAAC,QAAkB,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,SAAA,EAAU,KAAA,EACpC,QAAA,EAAA;AAAA,IAAA,CAAA,CAAE,IAAA,oBACDD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,CAAA,CAAE,IAAI,CAAA,EAAI,QAAA,EAAA,CAAA,CAAE,IAAA,EAAK,CAAA;AAAA,oBAE3DA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,6BAA6B,IAAA,CAAK,KAAK,CAAA,EACrD,QAAA,EAAA,CAAA,CAAE,IAAA,EACL;AAAA,GAAA,EAAA,EANS,CAAA,CAAE,IAOb,CACD,CAAA,EACH,CAAA;AAEJ;AC7kBA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,CAAA,EAAE,EAAuC;AAClE,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,IAAI,MAAA,CAAO,IAAA,CAAK,MAAA,IAAU,QAAA,EAAU,KAAK,OAAO,CAAA;AACtD,EAAA,uBACEC,IAAAA,CAAC,IAAA,EAAA,EAAK,CAAA,EAAM,WAAU,4CAAA,EACnB,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,wBACJD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yEACb,QAAA,kBAAAA,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA,CAAK,KAAA;AAAA,QACT,UAAA;AAAA,QACA,SAAA,EAAU;AAAA;AAAA,KACZ,EACF,oBAEAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,wFAAA;AAAA,UACA,CAAA,CAAE,IAAA;AAAA,UACF,CAAA,CAAE,MAAA;AAAA,UACF,CAAA,CAAE;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK,SAAS,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,EAAG,CAAC,EAAE,WAAA;AAAY;AAAA,KACnD;AAAA,oBAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAAyC,eAAK,IAAA,EAAK,CAAA;AAAA,IACjE,IAAA,CAAK,0BACJA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,+CAAA;AAAA,UACA,IAAA,CAAK;AAAA,SACP;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,KACR;AAAA,IAED,IAAA,CAAK,0BAAUA,GAAAA,CAAC,cAAW,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,SAAA,EAAU,QAAA,EAAS;AAAA,GAAA,EACtE,CAAA;AAEJ;AAEO,SAAS,yBAAA,CAA0B;AAAA,EACxC,KAAA;AAAA,EACA;AACF,CAAA,EAA+C;AAC7C,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,MAAM,cAAA,CAAe,MAAA;AACnC,EAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AACvB,EAAA,MAAM,IAAA,GAAO,WACT,+BAAA,GACA,KAAA,IAAS,IACP,+BAAA,GACA,KAAA,KAAU,IACR,+BAAA,GACA,gBAAA;AACR,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,MAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EACE,WACI,0EAAA,GACA,MAAA;AAAA,QAGL,QAAA,EAAA;AAAA,UAAA,QAAA,oBACCA,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACE,GAAG,OAAO,CAAC,CAAA;AAAA,cACZ,SAAA,EAAU,wDAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0FAAA,EACZ,QAAA,EAAA,QAAA,CAAS,wBACRA,GAAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBACE,GAAG,QAAA,CAAS,KAAA;AAAA,oBACb,UAAA;AAAA,oBACA,SAAA,EAAU;AAAA;AAAA,iBACZ,mBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CACb,QAAA,EAAA,QAAA,CAAS,KAAA,IAAS,QAAA,CAAS,IAAA,EAC9B,CAAA,EAEJ,CAAA;AAAA,gCACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oBAAA,EAAsB,mBAAS,IAAA,EAAK,CAAA;AAAA,gBAChD,QAAA,CAAS,+BACRA,GAAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,yCAAA;AAAA,sBACA,IAAA,CAAK;AAAA,qBACP;AAAA,oBAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,iBACZ;AAAA,gBAED,QAAA,CAAS,0BACRA,GAAAA,CAAC,cAAW,MAAA,EAAQ,QAAA,CAAS,MAAA,EAAQ,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAAA,WAE5D;AAAA,0BAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,0BAA0B,IAAI,CAAA,EAC9C,QAAA,EAAA,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,CAAC,MAAM,CAAA,qBAC/BA,GAAAA,CAAC,SAAA,EAAA,EAA0B,IAAA,EAAY,CAAA,EAAG,IAAI,CAAA,EAAA,EAA9B,IAAA,CAAK,IAA4B,CAClD,CAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,IACC,KAAA,CAAM,4BACLA,GAAAA,CAAC,cAAW,MAAA,EAAQ,KAAA,CAAM,QAAA,EAAU,SAAA,EAAU,MAAA,EAAO;AAAA,GAAA,EAEzD,CAAA;AAEJ;AAIA,IAAM,OAAA,GAAU,CAAA;AAEhB,SAAS,gBAAA,CAAiB;AAAA,EACxB,QAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA;AACxC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUQ,gBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,SAAeA,MAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,KAAA,CAAM,MAAA,GAAS,OAAA;AACvC,EAAA,uBACEP,IAAAA,CAAC,IAAA,EAAA,EAAK,CAAA,EAAM,WAAU,KAAA,EACpB,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,yEAAA;AAAA,UACA,CAAA,CAAE;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA,CAAS,IAAA,oBAAQD,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,QAAA,CAAS,IAAA,EAAM,WAAU,QAAA,EAAS,CAAA;AAAA,UACnE,QAAA,CAAS,KAAA;AAAA,0BACVA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,IAAA,CAAK,KAAK,CAAA,EACnD,QAAA,EAAA,QAAA,CAAS,KAAA,CAAM,MAAA,EAClB;AAAA;AAAA;AAAA,KACF;AAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,EAAA,EAAI,QAAQ,SAAA,EAAU,WAAA,EACtB,QAAA,EAAA,CAAA,IAAA,GAAO,QAAA,CAAS,QAAQ,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,EAAG,GAAA;AAAA,MAC1D,CAAC,yBACCC,IAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,IAAA,CAAK,KAAK,CAAA;AAAA,UAE9D,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAY,MAAA;AAAA,gBACZ,SAAA,EAAU;AAAA;AAAA,aACZ;AAAA,YACC;AAAA;AAAA,SAAA;AAAA,QAPI;AAAA;AAQP,KAEJ,EACF,CAAA;AAAA,IACC,MAAA,GAAS,qBACRA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAe,MAAA;AAAA,QACf,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAChC,SAAA,EAAW,EAAA;AAAA,UACT,6DAAA;AAAA,UACA,CAAA,CAAE;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA,IAAA,GAAO,MAAA,CAAO,IAAA,GAAO,MAAA,CAAO,KAAK,MAAM;AAAA;AAAA;AAC1C,GAAA,EAEJ,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,KAAA;AAAA,EACA;AACF,CAAA,EAAsC;AACpC,EAAA,MAAM,EAAE,UAAA,EAAY,MAAA,EAAO,GAAI,OAAA,EAAQ;AACvC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,EAAA,MAAM,SAAA,GAAY,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,GAAI,MAAA;AACjD,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,MAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kFAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,UAAU,KAAA,CAAM;AAAA;AAAA,OAClB;AAAA,MACC,KAAA,CAAM,yBACLC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACE,GAAG,OAAO,CAAC,CAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,mFAAA;AAAA,YACA,CAAA,CAAE,IAAA;AAAA,YACF,CAAA,CAAE;AAAA,WACJ;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,sBAAsB,CAAA,CAAE,IAAI,CAAA,EAC9C,QAAA,kBAAAA,IAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA,EACrC,CAAA;AAAA,4BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,IAAA,CAAK,KAAK,CAAA,EACtC,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,KAAA,EACf;AAAA;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA;AAAA,oBACAC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAA,IAAa,0BAA0B,CAAA;AAAA,QAEnE,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,sDAAA,EACZ,gBAAM,UAAA,CAAW,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBAC1BA,GAAAA,CAAC,gBAAA,EAAA,EAAiC,UAAU,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA,EAAA,EAAjC,GAAA,CAAI,KAAgC,CAC5D,CAAA,EACH,CAAA;AAAA,UACC,KAAA,IAAS,6BACRC,IAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,SAAA;AAAA,cACN,MAAA,EAAO,QAAA;AAAA,cACP,GAAA,EAAI,qBAAA;AAAA,cACH,GAAG,OAAO,CAAC,CAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,qFAAA;AAAA,gBACA,IAAA,CAAK,QAAA;AAAA,gBACL,IAAA,CAAK;AAAA,eACP;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uFAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,KAAA,CAAM,6BACLD,GAAAA;AAAA,oBAAC,WAAA;AAAA,oBAAA;AAAA,sBACE,GAAG,KAAA,CAAM,SAAA;AAAA,sBACV,UAAA;AAAA,sBACA,SAAA,EAAU;AAAA;AAAA,mBACZ;AAAA,kCAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAA+B,CAAA;AAAA,kCAC9CA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+JACd,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACC,aAAA,EAAY,MAAA;AAAA,sBACZ,SAAA,EAAU;AAAA;AAAA,mBACZ,EACF,CAAA;AAAA,kBACC,KAAA,CAAM,4BACLA,GAAAA,CAAC,UAAK,SAAA,EAAU,mGAAA,EACb,gBAAM,QAAA,EACT;AAAA,iBAAA,EAEJ,CAAA;AAAA,gCACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACb,QAAA,EAAA;AAAA,kCAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4BAAA,EAA8B,gBAAM,KAAA,EAAM,CAAA;AAAA,kBACtD,KAAA,CAAM,OAAA,oBACLA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,IAAA,CAAK,KAAK,CAAA,EACxC,QAAA,EAAA,KAAA,CAAM,OAAA,EACT,CAAA;AAAA,kCAEFC,IAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,oDAAA;AAAA,wBACA,CAAA,CAAE;AAAA,uBACJ;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,KAAA,CAAM,OAAO,MAAA,CAAO,UAAA;AAAA,wCACrBD,GAAAA,CAACS,YAAAA,EAAA,EAAa,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS;AAAA;AAAA;AAAA;AACtD,iBAAA,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;ACpRA,SAAS,UAAA,CAAW;AAAA,EAClB;AACF,CAAA,EAEG;AACD,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,uBACET,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,CAAA,CAAE,SAAA;AAAA,QACF;AAAA,OACF;AAAA,MACA,OAAO,CAAA,CAAE,KAAA;AAAA,MAER,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,GAAAA,CAAC,eAAA,EAAA,EAA8B,KAAA,EAAO,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,CAAE,KAAA,EAAA,EAAlC,CAAA,CAAE,KAAuC,CAChE;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AAClC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,IAAA,EACzD,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,yBACLD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA,CAAM,KAAA;AAAA,QACV,UAAU,KAAA,KAAU,CAAA;AAAA,QACpB,UAAA;AAAA,QACA,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,IAED,MAAM,OAAA,oBAAWA,GAAAA,CAAC,OAAA,EAAA,EAAS,gBAAM,OAAA,EAAQ,CAAA;AAAA,oBAC1CA,GAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAK,IAAA,EAAM,gBAAM,KAAA,EAAM,CAAA;AAAA,IAClC,KAAA,CAAM,4BACLA,GAAAA,CAAC,YAAS,SAAA,EAAU,oBAAA,EAAsB,gBAAM,QAAA,EAAS,CAAA;AAAA,IAE1D,KAAA,CAAM,UAAA,IAAc,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,oBAC7CA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,KAAA,CAAM,UAAA,EAAY,CAAA;AAAA,IAAA,CAErC,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,UAAA,qBACxBA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,KAAK,GACzC,QAAA,EAAA,CAAC,KAAA,CAAM,UAAA,EAAY,KAAA,CAAM,QAAQ,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,QAAK,CAAA,EAChE;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,sBAAA,CAAuB;AAAA,EACrC,KAAA;AAAA,EACA;AACF,CAAA,EAA4C;AAC1C,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,QAAA,GAAW,CAAC,CAAC,KAAA,CAAM,KAAA;AACzB,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAc,KAAA,EAAc,IAAA,EAAK,QAC3C,QAAA,kBAAAC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EACE,WACI,mDAAA,GACA,wCAAA;AAAA,MAGL,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,KAAA,oBACLD,GAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,OAAO,CAAC,CAAA,EAAG,SAAA,EAAU,oCAAA,EAC5B,QAAA,kBAAAA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACE,GAAG,KAAA,CAAM,KAAA;AAAA,YACV,UAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA,SACZ,EACF,CAAA;AAAA,wBAEFC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,QAAA,GAAW,uBAAuB,WAAA,EAC/C,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,OAAA,oBAAWD,GAAAA,CAAC,OAAA,EAAA,EAAS,gBAAM,OAAA,EAAQ,CAAA;AAAA,UACzC,KAAA,CAAM,6BACLA,GAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACE,GAAG,OAAO,CAAC,CAAA;AAAA,cACZ,SAAA,EAAU,6FAAA;AAAA,cAET,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,0BAEFA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,KAAA,CAAM,SAAA,GAAY,IAAA,GAAO,IAAA;AAAA,cAC/B,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,SAAA,IAAa,+BAA+B,CAAA;AAAA,cAE/D,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,UACC,KAAA,CAAM,WAAA,oBACLA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,EAAA,CAAG,CAAC,QAAA,IAAY,SAAS,CAAA,EAC3C,QAAA,EAAA,KAAA,CAAM,WAAA,EACT,CAAA;AAAA,0BAEFA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,MAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,4BAAA;AAAA,gBACA,CAAA,CAAE,IAAA;AAAA,gBACF,CAAC,QAAA,IAAY;AAAA;AACf;AAAA;AACF,SAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEO,SAAS,uBAAA,CAAwB;AAAA,EACtC,KAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,MAAA,KAAW,OAAA,EAAQ;AACtD,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AAClC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,MAAM,QAAA,GACJ,KAAA,CAAM,QAAA,IACN,MAAA,CAAO,OAAA;AAAA,IACL,MAAA,CAAO,MAAA,CAAuC,CAAC,GAAA,EAAK,GAAG,CAAA,KAAM;AAC3D,MAAA,IAAI,CAAA,KAAM,SAAS,EAAE,OAAA,IAAW,MAAM,CAAC,CAAA,CAAE,OAAO,OAAO,GAAA;AACvD,MAAA,CAAC,IAAI,CAAA,CAAE,OAAA,IAAW,EAAE,CAAA,KAAM,IAAI,IAAA,CAAK;AAAA,QACjC,QAAQ,CAAA,GAAI,CAAA;AAAA,QACZ,KAAA,EAAO,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE;AAAA,OACxB,CAAA;AACD,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE;AAAA,GACP,CAAE,GAAA,CAAI,CAAC,CAAC,OAAA,EAAS,KAAK,CAAA,MAAO,EAAE,OAAA,EAAS,OAAA,IAAW,MAAA,EAAW,KAAA,EAAM,CAAE,CAAA;AACxE,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,OAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAY,MAAA,CAAO,OAAA,EAAS,SAAA,EAAU,6BAAA,EACxC,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,EAAS,sBACtBC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEE,GAAG,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAAA,QAChB,SAAA,EAAU,yCAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,2BACPD,GAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,yDAAA;AAAA,gBACA,CAAA,CAAE;AAAA,eACJ;AAAA,cAEC,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA,WACX;AAAA,0BAEFA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBACX,QAAA,EAAA,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,KAAU;AAC5B,YAAA,MAAM,MAAA,GAAS,MAAM,MAAA,GAAS,CAAA;AAC9B,YAAA,MAAM,UAAU,MAAA,KAAW,WAAA;AAC3B,YAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAC,IAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,IAAA,CAAK,MAAM,CAAA;AAAA,gBAC1B,cAAA,EAAc,UAAU,MAAA,GAAS,MAAA;AAAA,gBACjC,SAAA,EAAW,EAAA;AAAA,kBACT,oFAAA;AAAA,kBACA,OAAA,GACI,CAAA,CAAE,IAAA,GACF,IAAA,CAAK,UACH,sBAAA,GACA;AAAA,iBACR;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,oCAAA;AAAA,wBACA,CAAA,CAAE;AAAA,uBACJ;AAAA,sBAEC,iBAAO,KAAA,CAAM,MAAM,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG;AAAA;AAAA,mBACvC;AAAA,kCACAC,KAAC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,KAAA,CAAM,KAAA;AAAA,oBACN,KAAA,CAAM,QAAA,oBACLD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,EAC5C,QAAA,EAAA,KAAA,CAAM,QAAA,EACT;AAAA,mBAAA,EAEJ;AAAA;AAAA;AAAA,aACF,EAAA,EA9BO,MAAM,MA+Bf,CAAA;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA;AAAA,OAAA;AAAA,MArDK,QAAQ,OAAA,IAAW;AAAA,KAuD3B,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AAClC,EAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,EAAA,uBACEC,KAAC,UAAA,EAAA,EAAW,KAAA,EAAc,OAAc,IAAA,EAAK,OAAA,EAAQ,OAAM,IAAA,EACzD,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,CAAA,CAAE,SAAA,EAAW,2BAA2B,CAAA;AAAA,QACtD,OAAO,CAAA,CAAE,KAAA;AAAA,QAER,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBACtBA,GAAAA,CAAC,MAAA,EAAA,EAAe,IAAA,EAAA,EAAH,CAAe,CAC7B;AAAA;AAAA,KACH;AAAA,IACC,KAAA,CAAM,IAAA,oBACLA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,IAAA,CAAK,KAAK,CAAA,EAAI,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK;AAAA,GAAA,EAErE,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AAClC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,QAAA,EAAU,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,SAAS,KAAA,CAAM;AAAA,OACnD;AAAA,MACA,KAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAM,IAAA;AAAA,MAEN,QAAA,kBAAAC,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,wCAAA,EACf,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,OAAA,oBAAWD,GAAAA,CAAC,OAAA,EAAA,EAAS,gBAAM,OAAA,EAAQ,CAAA;AAAA,QACzC,KAAA,CAAM,KAAA,oBACLA,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAK,IAAA,EAAK,SAAA,EAAU,MAAA,EAC7B,QAAA,EAAA,KAAA,CAAM,KAAA,EACT,CAAA;AAAA,wBAEFA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,CAAA,CAAE,IAAI,CAAA;AAAA,YAC1D,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACE,GAAG,OAAO,CAAC,CAAA;AAAA,YACZ,SAAA,EAAU,gGAAA;AAAA,YAET,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACT;AAAA,QAAA,CACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,IAAA,qBAC3BC,IAAAA,CAAC,YAAA,EAAA,EAAY,GAAG,MAAA,CAAO,CAAC,CAAA,EAAG,SAAA,EAAU,sBAAA,EAClC,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,WAAA,oBACLD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,CAAA,CAAE,IAAI,CAAA,EAChD,QAAA,EAAA,KAAA,CAAM,WAAA,EACT,CAAA;AAAA,UAED,KAAA,CAAM,IAAA,oBACLA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,EAC5C,QAAA,EAAA,KAAA,CAAM,IAAA,EACT;AAAA,SAAA,EAEJ,CAAA;AAAA,QAED,KAAA,CAAM,0BAAUA,GAAAA,CAAC,cAAW,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,SAAA,EAAU,MAAA,EAAO;AAAA,OAAA,EACtE;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA;AAChC,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,KAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,kBAAA,EAAoB,gBAAM,KAAA,EAAM,CAAA;AAAA,oBACtDC,KAAC,QAAA,EAAA,EAAQ,GAAG,OAAO,CAAC,CAAA,EAAG,WAAU,iBAAA,EAC/B,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACE,GAAG,KAAA,CAAM,KAAA;AAAA,UACV,UAAA;AAAA,UACA,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MACC,KAAA,CAAM,OAAA,oBACLA,GAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,IAAA,CAAK,KAAK,CAAA,EAC7D,QAAA,EAAA,KAAA,CAAM,OAAA,EACT;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,sBAAA,CAAuB;AAAA,EACrC,KAAA;AAAA,EACA;AACF,CAAA,EAA4C;AAC1C,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AAClC,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA;AACvC,EAAA,uBACEC,IAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,MAAK,OAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0BAAA,EACX,gBAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AAC5B,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAClC,MAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACtB,MAAA;AAAA;AAAA,wBAEEC,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,CAAA,CAAE,SAAA;AAAA,cACF,uBAAA;AAAA,cACA,IAAA,CAAK,IAAA;AAAA,cACL,IAAA,CAAK;AAAA,aACP;AAAA,YACA,OAAO,CAAA,CAAE,KAAA;AAAA,YAET,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,wDAAA,EACZ,QAAA,EAAA;AAAA,gCAAAD,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAY,MAAA;AAAA,oBACZ,SAAA,EAAW,EAAA;AAAA,sBACT,6FAAA;AAAA,sBACA,CAAA,CAAE,IAAA;AAAA,sBACF,CAAA,CAAE,MAAA;AAAA,sBACF,CAAA,CAAE;AAAA,qBACJ;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,iBACH;AAAA,gBACC,IAAA,CAAK;AAAA,eAAA,EACR,CAAA;AAAA,8BACAC,IAAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,sCAAA;AAAA,oBACA,IAAA,CAAK;AAAA,mBACP;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,IAAA,oBACJA,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,IAAI,CAAA,EAC3C,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAK,IAAA;AAAA,sBAAM;AAAA,qBAAA,EACd,CAAA;AAAA,oBAED,IAAA,CAAK;AAAA;AAAA;AAAA;AACR;AAAA,WAAA;AAAA,UAnCK,IAAA,CAAK;AAAA;AAoCZ;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,0BAAUD,GAAAA,CAAC,cAAW,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,SAAA,EAAU,MAAA,EAAO;AAAA,GAAA,EACtE,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,GAAA,EAAI,EAAoB;AAC1C,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUU,gBAAS,KAAK,CAAA;AAChD,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAM,IAAI,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,GAAG,GAAI,CAAA;AACjD,IAAA,OAAO,MAAM,aAAa,CAAC,CAAA;AAAA,EAC7B,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACX,EAAA,uBACET,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oEAAA;AAAA,QACA,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACP;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iDAAA,EACb,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,wBACAC,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAS,MACP,SAAA,CAAU,SAAA,EAAW,SAAA,CAAU,GAAG,CAAA,CAAE,IAAA;AAAA,cAClC,MAAM,UAAU,IAAI,CAAA;AAAA,cACpB,MAAM;AAAA,cAAC;AAAA,aACT;AAAA,YAEF,SAAA,EAAW,EAAA;AAAA,cACT,+EAAA;AAAA,cACA,IAAA,CAAK,UACD,2BAAA,GACA;AAAA,aACN;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,MAAA,mBACCD,GAAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAY,QAAO,SAAA,EAAU,QAAA,EAAS,CAAA,mBAE7CA,GAAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS,CAAA;AAAA,8BAE9CA,IAAC,MAAA,EAAA,EAAK,WAAA,EAAU,UAAU,QAAA,EAAA,MAAA,GAAS,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,IAAA,EAAK;AAAA;AAAA;AAAA;AACjE;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,OAAA,EAAQ,EAA0C;AAC3E,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,OAAA,EAAQ;AAC/B,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACEC,IAAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,+FAAA;AAAA,QACA,UACI,6CAAA,GACA,EAAA;AAAA,UACE,QAAA;AAAA,UACA,IAAA,CAAK,QAAA;AAAA,UACL,IAAA,CAAK,UAAU,sBAAA,GAAyB;AAAA;AAC1C,OACN;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,KAAA;AAAA,QACL,2BACCD,GAAAA,CAAC,cAAW,aAAA,EAAY,MAAA,EAAO,WAAU,yBAAA,EAA0B;AAAA;AAAA;AAAA,GAEvE;AAEJ;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AAClC,EAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,KAAA,EAAc,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,IAAA,EACzD,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,OAAA,oBAAWD,GAAAA,CAAC,OAAA,EAAA,EAAS,gBAAM,OAAA,EAAQ,CAAA;AAAA,oBAC1CA,GAAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,IACxB,KAAA,CAAM,wBAAQA,GAAAA,CAAC,YAAS,SAAA,EAAU,SAAA,EAAW,gBAAM,IAAA,EAAK,CAAA;AAAA,IACxD,KAAA,CAAM,UAAA,IAAc,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,oBAC7CA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,KAAA,CAAM,UAAA,EAAY,CAAA;AAAA,IAEtC,MAAM,SAAA,IAAa,KAAA,CAAM,SAAA,CAAU,MAAA,GAAS,qBAC3CA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACE,GAAG,OAAO,CAAC,CAAA;AAAA,QACZ,SAAA,EAAU,sDAAA;AAAA,QAET,QAAA,EAAA,KAAA,CAAM,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,qBACpBA,GAAAA,CAAC,MAAA,EAAA,EAAe,IAAA,EAAM,CAAA,EAAA,EAAT,CAAY,CAC1B;AAAA;AAAA,KACH;AAAA,IAED,KAAA,CAAM,KAAA,oBACLC,IAAAA,CAAAI,UAAA,EACG,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,KAAA,CAAM,YAAA,oBACXL,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,EACzC,QAAA,EAAA,KAAA,CAAM,MAAM,YAAA,EACf,CAAA;AAAA,sBAEFA,GAAAA,CAAC,QAAA,EAAA,EAAS,GAAA,EAAK,KAAA,CAAM,MAAM,GAAA,EAAK;AAAA,KAAA,EAClC,CAAA;AAAA,IAAA,CAEA,KAAA,CAAM,GAAA,IAAO,KAAA,CAAM,YAAA,qBACnBC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,OAAO,CAAC,CAAA;AAAA,QACZ,SAAA,EAAU,wEAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,GAAA,oBAAOD,GAAAA,CAAC,SAAA,EAAA,EAAU,MAAM,KAAA,CAAM,GAAA,EAAK,SAAO,IAAA,EAAC,CAAA;AAAA,UACjD,MAAM,YAAA,oBAAgBA,IAAC,SAAA,EAAA,EAAU,IAAA,EAAM,MAAM,YAAA,EAAc;AAAA;AAAA;AAAA,KAC9D;AAAA,IAAA,CAEA,KAAA,CAAM,UAAA,IAAc,KAAA,CAAM,QAAA,qBAC1BA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,IAAA,CAAK,KAAK,GACzC,QAAA,EAAA,CAAC,KAAA,CAAM,UAAA,EAAY,KAAA,CAAM,QAAQ,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,QAAK,CAAA,EAChE,CAAA;AAAA,IAED,KAAA,CAAM,mCACLA,GAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,uCAAA,EAAyC,IAAA,CAAK,KAAK,CAAA;AAAA,QAEhE,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;;;AC9fO,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAO,aAAA;AAAA,EACP,iBAAA,EAAmB,sBAAA;AAAA,EACnB,mBAAA,EAAqB,uBAAA;AAAA,EACrB,aAAA,EAAe,kBAAA;AAAA,EACf,KAAA,EAAO,aAAA;AAAA,EACP,KAAA,EAAO,aAAA;AAAA,EACP,iBAAA,EAAmB,sBAAA;AAAA,EACnB,UAAA,EAAY,kBAAA;AAAA,EACZ,OAAA,EAAS,eAAA;AAAA,EACT,KAAA,EAAO,aAAA;AAAA,EACP,mBAAA,EAAqB,wBAAA;AAAA,EACrB,kBAAA,EAAoB,uBAAA;AAAA,EACpB,cAAA,EAAgB,mBAAA;AAAA,EAChB,KAAA,EAAO,aAAA;AAAA,EACP,aAAA,EAAe,kBAAA;AAAA,EACf,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,aAAA;AAAA,EACP,OAAA,EAAS,eAAA;AAAA,EACT,gBAAA,EAAkB,qBAAA;AAAA,EAClB,OAAA,EAAS,eAAA;AAAA,EACT,oBAAA,EAAsB,yBAAA;AAAA,EACtB,QAAA,EAAU,gBAAA;AAAA,EACV,IAAA,EAAM;AACR;ACAA,IAAM,eAAe,CAAC,EAAA,KACpB,cAAc,WAAA,KACb,CAAC,SAAS,UAAA,EAAY,QAAQ,EAAE,QAAA,CAAS,EAAA,CAAG,OAAO,CAAA,IAClD,EAAA,CAAG,qBACH,EAAA,CAAG,YAAA,CAAa,MAAM,CAAA,KAAM,KAAA,CAAA;AAGhC,IAAM,cAAA,GAAiB,CAAC,EAAA,KACtB,EAAA,YAAc,WAAA,KACb,EAAA,CAAG,OAAA,KAAY,QAAA,IAAY,EAAA,CAAG,YAAA,CAAa,MAAM,CAAA,KAAM,QAAA,CAAA;AAQnD,IAAM,IAAA,GAAa,MAAA,CAAA,UAAA;AAAA,EACxB,CACE;AAAA,IACE,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA,EAAQ,cAAA;AAAA,IACR,MAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAgB,cAAuB,IAAI,CAAA;AACjD,IAAA,MAAM,SAAA,GAAkB,cAAuB,IAAI,CAAA;AACnD,IAAA,MAAM,UAAA,GAAmB,cAAsB,IAAI,CAAA;AACnD,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,gBAAS,CAAC,CAAA;AAC5C,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,gBAAS,KAAK,CAAA;AAC9C,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,gBAAS,KAAK,CAAA;AAClD,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,gBAAS,KAAK,CAAA;AACxD,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAU,gBAAS,CAAC,CAAA;AAClD,IAAA,MAAM,MAAA,GAAe,MAAA,CAAA,OAAA;AAAA,MACnB,OAAO,EAAE,GAAG,iBAAA,EAAmB,GAAG,cAAA,EAAe,CAAA;AAAA,MACjD,CAAC,cAAc;AAAA,KACjB;AACA,IAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AACrB,IAAM,MAAA,CAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,OAAA,CAAQ,OAAyB,CAAA;AAEtE,IAAA,MAAM,OAAA,GAAgB,MAAA,CAAA,WAAA;AAAA,MACpB,CAAC,CAAA,KACC,SAAA,CAAU,OAAA,EAAS,aAAA;AAAA,QACjB,wCAAwC,CAAC,CAAA,EAAA;AAAA,OAC3C;AAAA,MACF;AAAC,KACH;AAEA,IAAA,MAAM,IAAA,GAAa,MAAA,CAAA,WAAA;AAAA,MACjB,CAAC,CAAA,KAAc;AACb,QAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAC,CAAA;AAClD,QAAA,MAAM,SAAS,MAAA,CAAO,UAAA;AAAA,UACpB;AAAA,SACF,CAAE,OAAA;AACF,QAAA,OAAA,CAAQ,OAAO,GAAG,cAAA,CAAe;AAAA,UAC/B,QAAA,EAAU,SAAS,MAAA,GAAS;AAAA,SAC7B,CAAA;AAAA,MACH,CAAA;AAAA,MACA,CAAC,SAAS,KAAK;AAAA,KACjB;AAGA,IAAM,iBAAU,MAAM;AACpB,MAAA,MAAM,OAAO,SAAA,CAAU,OAAA;AACvB,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,QACnB,CAAC,OAAA,KAAY;AACX,UAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,YAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAG3B,YAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,IAAgB,MAAA,CAAO,WAAA;AAC/C,YAAA,IACE,MAAM,iBAAA,GAAoB,GAAA,IAC1B,KAAA,CAAM,gBAAA,CAAiB,SAAS,UAAA,GAAa,CAAA;AAE7C,cAAA;AACF,YAAA,MAAM,KAAK,KAAA,CAAM,MAAA;AACjB,YAAA,EAAA,CAAG,QAAQ,IAAA,GAAO,EAAA;AAClB,YAAA,SAAA,CAAU,MAAA,CAAO,EAAA,CAAG,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,UACpC;AAAA,QACF,CAAA;AAAA,QACA,EAAE,IAAA,EAAM,SAAA,EAAW,CAAC,GAAA,EAAK,IAAA,EAAM,GAAG,CAAA;AAAE,OACtC;AACA,MAAA,IAAA,CACG,gBAAA,CAAiB,0BAA0B,CAAA,CAC3C,OAAA,CAAQ,CAAC,EAAA,KAAO,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAC,CAAA;AACvC,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,IACnC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,IAAM,iBAAU,MAAM;AACpB,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,MAAM,CAAC,CAAA;AACxC,MAAA,IAAI,IAAA,GAAO,GAAA;AACX,MAAA,IAAI;AACF,QAAA,IAAA,GAAO,mBAAmB,GAAG,CAAA;AAAA,MAC/B,CAAA,CAAA,MAAQ;AAAA,MAER;AACA,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,CAAA,GAAI,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,EAAG,MAAM,WAAA,CAAY,CAAA,EAAG,CAAC,CAAA,KAAM,IAAI,CAAA;AAC/D,MAAA,IAAI,CAAA,GAAI,GAAG,qBAAA,CAAsB,MAAM,QAAQ,CAAC,CAAA,EAAG,gBAAgB,CAAA;AAAA,IAGrE,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,aAAA,GAAsB,cAAO,EAAE,CAAA;AACrC,IAAM,iBAAU,MAAM;AACpB,MAAA,MAAM,KAAA,GAAQ,OAAO,MAAM,CAAA;AAC3B,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,IAAI,YAAY,KAAA,EAAO;AACrB,QAAA,MAAM,IAAA,GAAO,CAAA,CAAA,EAAI,WAAA,CAAY,KAAA,EAAO,MAAM,CAAC,CAAA,CAAA;AAC3C,QAAA,IAAI,MAAA,CAAO,SAAS,IAAA,KAAS,IAAA;AAC3B,UAAA,MAAA,CAAO,QAAQ,YAAA,CAAa,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,IAAI,IAAI,CAAA;AAAA,MAC9D;AAEA,MAAA,IAAI,aAAA,CAAc,YAAY,MAAA,EAAQ;AACpC,QAAA,aAAA,CAAc,OAAA,GAAU,MAAA;AACxB,QAAA,aAAA,GAAgB,OAAO,MAAM,CAAA;AAAA,MAC/B;AAAA,IAGF,GAAG,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAC,CAAA;AAEpC,IAAA,MAAM,gBAAA,GAAyB,mBAAY,MAAM;AAC/C,MAAA,IAAI,CAAC,QAAA,CAAS,iBAAA;AACZ,QAAA,OAAA,CAAQ,OAAA,EAAS,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,WAClD,QAAA,CAAS,cAAA,IAAiB,CAAE,KAAA,CAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IACjD,CAAA,EAAG,EAAE,CAAA;AAEL,IAAM,iBAAU,MAAM;AACpB,MAAA,MAAM,WAAW,MAAM,aAAA,CAAc,CAAC,CAAC,SAAS,iBAAiB,CAAA;AACjE,MAAA,QAAA,CAAS,gBAAA,CAAiB,oBAAoB,QAAQ,CAAA;AACtD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,kBAAA,EAAoB,QAAQ,CAAA;AAAA,IACxE,CAAA,EAAG,EAAE,CAAA;AAEL,IAAM,iBAAU,MAAM;AACpB,MAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAqB;AAClC,QAAA,IAAI,WAAW,CAAA,CAAE,gBAAA,IAAoB,EAAE,OAAA,IAAW,CAAA,CAAE,WAAW,CAAA,CAAE,MAAA;AAC/D,UAAA;AACF,QAAA,IAAI,YAAA,CAAa,CAAA,CAAE,MAAM,CAAA,EAAG;AAC5B,QAAA,MAAM,MAAM,CAAA,CAAE,GAAA;AACd,QAAA,IAAI,GAAA,KAAQ,GAAA,IAAO,cAAA,CAAe,CAAA,CAAE,MAAM,CAAA,EAAG;AAC7C,QAAA,IAAI,CAAC,aAAa,YAAA,EAAc,UAAA,EAAY,GAAG,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AAC9D,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,QACjB,CAAA,MAAA,IAAW,CAAC,SAAA,EAAW,WAAA,EAAa,QAAQ,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AAC3D,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,QACjB,CAAA,MAAA,IAAW,QAAQ,MAAA,EAAQ;AACzB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,CAAC,CAAA;AAAA,QACR,CAAA,MAAA,IAAW,QAAQ,KAAA,EAAO;AACxB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,QAChB,CAAA,MAAA,IAAW,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,EAAG;AAC9B,UAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GAAI,CAAC,CAAA;AAAA,QACtB,CAAA,MAAA,IAAW,GAAA,CAAI,WAAA,EAAY,KAAM,GAAA,EAAK;AACpC,UAAA,gBAAA,EAAiB;AAAA,QACnB,CAAA,MAAA,IAAW,QAAQ,GAAA,EAAK;AACtB,UAAA,YAAA,CAAa,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,QAC3B;AAAA,MACF,CAAA;AACA,MAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,KAAK,CAAA;AACxC,MAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,KAAK,CAAA;AAAA,IAC1D,GAAG,CAAC,MAAA,EAAQ,MAAM,OAAA,EAAS,gBAAA,EAAkB,KAAK,CAAC,CAAA;AAEnD,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAwB;AAC1C,MAAA,IAAI,UAAA,CAAW,YAAY,IAAA,EAAM;AACjC,MAAA,MAAM,QAAQ,UAAA,CAAW,OAAA,GAAU,CAAA,CAAE,cAAA,CAAe,CAAC,CAAA,CAAE,OAAA;AACvD,MAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,MAAA,MAAM,EAAA,GAAK,QAAQ,MAAM,CAAA;AAEzB,MAAA,IACE,MACA,SAAA,CAAU,OAAA,IACV,GAAG,YAAA,GAAe,SAAA,CAAU,QAAQ,YAAA,GAAe,EAAA;AAEnD,QAAA;AACF,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,GAAA,OAAU,MAAA,IAAU,KAAA,GAAQ,CAAA,GAAI,CAAA,GAAI,EAAA,CAAG,CAAA;AAAA,IAC/D,CAAA;AAEA,IAAA,MAAM,OAAA,GAAgB,MAAA,CAAA,OAAA;AAAA,MACpB,OAAO;AAAA,QACL,MAAA;AAAA,QACA,WAAA,EAAa,MAAA;AAAA,QACb,IAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA;AAAA,QACE,MAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,eAAqB,MAAA,CAAA,WAAA,CAAY,MAAM,WAAW,KAAK,CAAA,EAAG,EAAE,CAAA;AAClE,IAAA,MAAM,WAAW,KAAA,GAAQ,CAAA,GAAK,MAAA,IAAU,KAAA,GAAQ,KAAM,GAAA,GAAM,CAAA;AAE5D,IAAA,uBACEA,GAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,SACnB,QAAA,kBAAAC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,wBAAsB,MAAA,CAAO,YAAA;AAAA,QAC7B,cAAY,IAAA,CAAK,KAAA;AAAA,QACjB,WAAA,EAAU,MAAA;AAAA,QACV,cAAY,KAAA,IAAS,MAAA;AAAA,QACrB,SAAA,EAAW,EAAA;AAAA,UACT,0EAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,SAAA,EACX,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,KAAA;AAAA,YACL,IAAA,CAAK,MAAA,GAAS,CAAA,QAAA,EAAW,IAAA,CAAK,MAAM,CAAA,CAAA,GAAK;AAAA,WAAA,EAC5C,CAAA;AAAA,UACC,wBACCA,IAAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,YAAY,IAAA,CAAK,UAAA;AAAA,cACjB,UAAA;AAAA,cACA,SAAA,EAAU,iQAAA;AAAA,cAET,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,wBACJD,GAAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBACE,GAAG,IAAA,CAAK,IAAA;AAAA,oBACT,GAAA,EAAI,EAAA;AAAA,oBACJ,UAAA;AAAA,oBACA,SAAA,EAAU;AAAA;AAAA,iBACZ;AAAA,gBAED,IAAA,CAAK;AAAA;AAAA;AAAA,WACR;AAAA,0BAEFA,GAAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAoB,CAAA;AAAA,0BACjCA,GAAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,MAAA,EAAgB,MAAY,MAAA,EAAgB,CAAA;AAAA,0BACpEA,GAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,MAAA;AAAA,cACA,KAAA;AAAA,cACA,OAAA,EAAS,MAAA,CAAO,MAAM,CAAA,EAAG;AAAA;AAAA,WAC3B;AAAA,0BACAA,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,WAAW,MAAA,EAAgB,CAAA;AAAA,0BACjDA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAc,UAAA;AAAA,cACd,kBAAA,EAAoB,gBAAA;AAAA,cACpB,aAAA,EAAe,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,cACpC;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,SAAA;AAAA,cACL,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,gBAAA,UAAA,CAAW,OAAA,GAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAA;AAAA,cACpC,CAAA;AAAA,cACA,UAAA;AAAA,cACA,SAAA,EAAU,iEAAA;AAAA,cAET,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,KAAM;AAExB,gBAAA,MAAM,QAAA,GACJ,KAAA,CAAM,IAAA,KAAS,QAAA,GACX,YAAY,KAAA,CAAM,SAAS,CAAA,GAC1B,SAAA,GAAY,KAAA,CAAM,IAAI,CAAA,IAAK,cAAA,CAAe,MAAM,IAAI,CAAA;AAE3D,gBAAA,OAAO,QAAA,mBACLA,GAAAA,CAAC,QAAA,EAAA,EAAqC,KAAA,EAAc,KAAA,EAAO,CAAA,EAAA,EAA5C,WAAA,CAAY,KAAA,EAAO,CAAC,CAA2B,CAAA,GAC5D,IAAA;AAAA,cACN,CAAC;AAAA;AAAA,WACH;AAAA,0BACAA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,MAAA;AAAA,cACA,KAAA;AAAA,cACA,MAAA,EAAQ,MAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAAA,cAC7B,MAAA,EAAQ,MAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAAA,cAC7B,aAAA,EAAe,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,cACpC;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,OAAA;AAAA,cACN,OAAA,EAAS,YAAA;AAAA,cACT,MAAA;AAAA,cACA,MAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA;AAAA;AACF;AAAA;AAAA,KACF,EACF,CAAA;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"deck.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport {\n ChevronDown,\n ChevronUp,\n List,\n Maximize2,\n Minimize2,\n Printer,\n X,\n} from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DeckLabels } from './labels';\nimport type { Slide } from './types';\n\ntype Labels = Required<DeckLabels>;\n\nconst chrome = 'mie-deck-chrome print:hidden';\nconst iconButton =\n 'flex size-9 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/70 backdrop-blur transition-colors hover:bg-white/10 hover:text-white focus-visible:ring-2 focus-visible:ring-accent focus-visible:outline-none';\n\nexport const slideLabel = (s: Slide) =>\n s.navLabel ?? ('title' in s ? s.title : undefined) ?? '';\n\nexport function ProgressBar({ progress }: { progress: number }) {\n return (\n <div\n className={cn(\n chrome,\n 'pointer-events-none absolute inset-x-0 top-0 z-40 h-[3px] bg-white/5'\n )}\n >\n <div\n className=\"bg-accent h-full transition-[width] duration-500 ease-out\"\n style={{ width: `${progress}%` }}\n />\n </div>\n );\n}\n\nexport function SlideCounter({\n active,\n total,\n section,\n}: {\n active: number;\n total: number;\n section?: string;\n}) {\n return (\n <div\n className={cn(\n chrome,\n 'pointer-events-none absolute start-5 bottom-5 z-40 hidden select-none md:block'\n )}\n >\n <div className=\"text-sm font-semibold text-white/80 tabular-nums\">\n {String(active + 1).padStart(2, '0')}\n <span className=\"text-white/70\">\n {' '}\n / {String(total).padStart(2, '0')}\n </span>\n </div>\n {section && (\n <div className=\"text-accent mt-0.5 text-[0.7rem] tracking-[0.18em] uppercase\">\n {section}\n </div>\n )}\n </div>\n );\n}\n\nexport function DotNav({\n slides,\n active,\n goTo,\n labels,\n}: {\n slides: Slide[];\n active: number;\n goTo: (i: number) => void;\n labels: Labels;\n}) {\n return (\n <nav\n aria-label={labels.slideNavigation}\n className={cn(\n chrome,\n 'absolute end-3 top-1/2 z-40 hidden -translate-y-1/2 flex-col items-center gap-2 md:flex'\n )}\n >\n {slides.map((s, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n aria-label={labels.goToSlide(i + 1, slideLabel(s))}\n aria-current={i === active ? 'true' : undefined}\n className=\"group relative flex size-4 items-center justify-center\"\n >\n <span\n className={cn(\n 'block rounded-full transition-all duration-300',\n i === active\n ? 'bg-accent size-2.5'\n : 'size-1.5 bg-white/30 group-hover:bg-white/60'\n )}\n />\n <span className=\"pointer-events-none absolute end-6 rounded-md border border-white/10 bg-neutral-900/95 px-2 py-1 text-xs whitespace-nowrap text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100\">\n {slideLabel(s)}\n </span>\n </button>\n ))}\n </nav>\n );\n}\n\nexport function Controls({\n isFullscreen,\n onToggleFullscreen,\n onOpenOutline,\n labels,\n}: {\n isFullscreen: boolean;\n onToggleFullscreen: () => void;\n onOpenOutline: () => void;\n labels: Labels;\n}) {\n return (\n <div\n className={cn(\n chrome,\n 'absolute end-5 bottom-5 z-40 hidden items-center gap-2 md:flex'\n )}\n >\n <button\n type=\"button\"\n className={iconButton}\n onClick={onOpenOutline}\n aria-label={labels.openOutline}\n >\n <List aria-hidden=\"true\" className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n className={iconButton}\n onClick={() => window.print()}\n aria-label={labels.print}\n >\n <Printer aria-hidden=\"true\" className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n className={iconButton}\n onClick={onToggleFullscreen}\n aria-label={\n isFullscreen ? labels.exitFullscreen : labels.enterFullscreen\n }\n >\n {isFullscreen ? (\n <Minimize2 aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <Maximize2 aria-hidden=\"true\" className=\"size-4\" />\n )}\n </button>\n </div>\n );\n}\n\nfunction Kbd({ children }: { children: React.ReactNode }) {\n return (\n <kbd className=\"inline-flex min-w-5 items-center justify-center rounded border border-white/15 bg-white/5 px-1 py-0.5 text-[0.65rem] text-white/80\">\n {children}\n </kbd>\n );\n}\n\nexport function KeyboardHints({\n pulse,\n labels,\n}: {\n pulse: number;\n labels: Labels;\n}) {\n const [visible, setVisible] = React.useState(true);\n React.useEffect(() => {\n setVisible(true);\n const t = setTimeout(() => setVisible(false), 5000);\n return () => clearTimeout(t);\n }, [pulse]);\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n chrome,\n 'pointer-events-none absolute bottom-5 left-1/2 z-40 hidden -translate-x-1/2 items-center gap-3 rounded-full border border-white/10 bg-neutral-900/80 px-4 py-1.5 text-xs text-white/70 backdrop-blur transition-opacity duration-500 select-none md:flex',\n visible ? 'opacity-100' : 'opacity-0'\n )}\n >\n <span className=\"flex items-center gap-1\">\n <Kbd>↑</Kbd>\n <Kbd>↓</Kbd> {labels.navigateHint}\n </span>\n <span className=\"text-white/20\">·</span>\n <span>\n <Kbd>F</Kbd> {labels.fullscreenHint}\n </span>\n <span className=\"text-white/20\">·</span>\n <span>\n <Kbd>?</Kbd> {labels.helpHint}\n </span>\n </div>\n );\n}\n\nexport function MobileNav({\n active,\n total,\n onPrev,\n onNext,\n onOpenOutline,\n labels,\n}: {\n active: number;\n total: number;\n onPrev: () => void;\n onNext: () => void;\n onOpenOutline: () => void;\n labels: Labels;\n}) {\n const btn =\n 'flex size-10 items-center justify-center rounded-full text-white/80 transition-colors hover:bg-white/10 disabled:opacity-30';\n return (\n <div\n className={cn(\n chrome,\n 'absolute inset-x-0 bottom-0 z-40 flex items-center justify-between border-t border-white/10 bg-neutral-950/90 px-3 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] backdrop-blur md:hidden'\n )}\n >\n <button\n type=\"button\"\n className={btn}\n onClick={onPrev}\n disabled={active === 0}\n aria-label={labels.previous}\n >\n <ChevronUp aria-hidden=\"true\" className=\"size-5\" />\n </button>\n <button\n type=\"button\"\n onClick={onOpenOutline}\n className=\"flex items-center gap-2 rounded-full px-4 py-1.5 text-sm font-semibold text-white/80 tabular-nums\"\n aria-label={labels.openOutline}\n >\n <List aria-hidden=\"true\" className=\"text-accent size-4\" />\n {active + 1} / {total}\n </button>\n <button\n type=\"button\"\n className={btn}\n onClick={onNext}\n disabled={active === total - 1}\n aria-label={labels.next}\n >\n <ChevronDown aria-hidden=\"true\" className=\"size-5\" />\n </button>\n </div>\n );\n}\n\n/** Focus-trapped slide list. */\nexport function OutlineDialog({\n open,\n onClose,\n slides,\n active,\n goTo,\n labels,\n}: {\n open: boolean;\n onClose: () => void;\n slides: Slide[];\n active: number;\n goTo: (i: number) => void;\n labels: Labels;\n}) {\n const panelRef = React.useRef<HTMLDivElement>(null);\n const titleId = React.useId();\n\n React.useEffect(() => {\n if (!open) return;\n const previous = document.activeElement as HTMLElement | null;\n const panel = panelRef.current;\n const focusables = () =>\n Array.from(\n panel?.querySelectorAll<HTMLElement>('button:not([disabled])') ?? []\n );\n (focusables()[1] ?? focusables()[0])?.focus();\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n return;\n }\n if (e.key !== 'Tab') return;\n const items = focusables();\n const first = items[0];\n const last = items[items.length - 1];\n if (e.shiftKey && document.activeElement === first) {\n e.preventDefault();\n last?.focus();\n } else if (!e.shiftKey && document.activeElement === last) {\n e.preventDefault();\n first?.focus();\n }\n };\n document.addEventListener('keydown', onKey, true);\n return () => {\n document.removeEventListener('keydown', onKey, true);\n previous?.focus?.();\n };\n }, [open, onClose]);\n\n if (!open || typeof document === 'undefined') return null;\n\n return createPortal(\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className=\"mie-deck-chrome fixed inset-0 z-[80] flex flex-col bg-neutral-950/95 text-white backdrop-blur-md\"\n >\n <div className=\"flex items-center justify-between border-b border-white/10 px-5 py-4\">\n <h2 id={titleId} className=\"text-lg font-bold text-white\">\n {labels.outline}\n </h2>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={labels.closeOutline}\n className={iconButton}\n >\n <X aria-hidden=\"true\" className=\"size-5\" />\n </button>\n </div>\n <ol className=\"flex-1 overflow-y-auto px-3 py-3\">\n {slides.map((s, i) => (\n <li key={i}>\n <button\n type=\"button\"\n onClick={() => {\n goTo(i);\n onClose();\n }}\n aria-current={i === active ? 'true' : undefined}\n className={cn(\n 'flex w-full items-baseline gap-3 rounded-lg px-4 py-3 text-start transition-colors',\n i === active ? 'bg-accent/15' : 'hover:bg-white/5'\n )}\n >\n <span className=\"text-accent text-sm font-semibold tabular-nums\">\n {String(i + 1).padStart(2, '0')}\n </span>\n <span className={i === active ? 'text-white' : 'text-white/75'}>\n {slideLabel(s)}\n </span>\n </button>\n </li>\n ))}\n </ol>\n </div>,\n document.body\n );\n}\n","import type { AccentName, SlideTone } from './types';\n\nexport interface ToneSpec {\n isLight: boolean;\n /** Slide ground. */\n surface: string;\n text: string;\n muted: string;\n hairline: string;\n card: string;\n}\n\nconst dark = {\n isLight: false,\n text: 'text-white',\n muted: 'text-white/70',\n hairline: 'border-white/10',\n card: 'bg-white/5',\n} as const;\n\nexport const TONES: Record<SlideTone, ToneSpec> = {\n brand: {\n ...dark,\n surface:\n 'bg-gradient-to-br from-primary-900 via-primary-950 to-primary-950',\n },\n deep: {\n ...dark,\n surface: 'bg-gradient-to-b from-neutral-900 to-neutral-950',\n },\n ink: { ...dark, surface: 'bg-neutral-950' },\n glow: {\n ...dark,\n surface: 'bg-gradient-to-br from-primary-950 via-primary-800 to-accent/70',\n },\n light: {\n isLight: true,\n surface: 'bg-white',\n text: 'text-neutral-900',\n muted: 'text-neutral-600',\n hairline: 'border-neutral-200',\n card: 'bg-neutral-50',\n },\n};\n\nexport interface AccentSpec {\n text: string;\n soft: string;\n border: string;\n /** Solid fill for bars and dots. */\n fill: string;\n /** SVG fill / stroke utilities. */\n svgFill: string;\n svgStroke: string;\n}\n\nconst onDark: Record<AccentName, AccentSpec> = {\n primary: {\n text: 'text-primary-300',\n soft: 'bg-primary-400/15',\n border: 'border-primary-400/30',\n fill: 'bg-primary-400',\n svgFill: 'fill-primary-400',\n svgStroke: 'stroke-primary-400',\n },\n secondary: {\n text: 'text-secondary-300',\n soft: 'bg-secondary-400/15',\n border: 'border-secondary-400/30',\n fill: 'bg-secondary-400',\n svgFill: 'fill-secondary-400',\n svgStroke: 'stroke-secondary-400',\n },\n accent: {\n text: 'text-accent',\n soft: 'bg-accent/15',\n border: 'border-accent/30',\n fill: 'bg-accent',\n svgFill: 'fill-accent',\n svgStroke: 'stroke-accent',\n },\n success: {\n text: 'text-success',\n soft: 'bg-success/15',\n border: 'border-success/30',\n fill: 'bg-success',\n svgFill: 'fill-success',\n svgStroke: 'stroke-success',\n },\n warning: {\n text: 'text-warning',\n soft: 'bg-warning/15',\n border: 'border-warning/30',\n fill: 'bg-warning',\n svgFill: 'fill-warning',\n svgStroke: 'stroke-warning',\n },\n danger: {\n text: 'text-destructive',\n soft: 'bg-destructive/15',\n border: 'border-destructive/30',\n fill: 'bg-destructive',\n svgFill: 'fill-destructive',\n svgStroke: 'stroke-destructive',\n },\n};\n\n// Light grounds need darker text shades for contrast; fills stay the same.\nconst lightText: Record<AccentName, string> = {\n primary: 'text-primary-800',\n secondary: 'text-secondary-800',\n accent: 'text-neutral-900',\n success: 'text-neutral-900',\n warning: 'text-neutral-900',\n danger: 'text-destructive',\n};\n\nexport function accent(\n name: AccentName = 'accent',\n isLight = false\n): AccentSpec {\n const spec = onDark[name];\n return isLight ? { ...spec, text: lightText[name] } : spec;\n}\n\n/** A slide's resolved tone \\u2014 for renderers, which sit outside the `SlideFrame` that provides it to children. */\nexport const toneOf = (slide: { tone?: SlideTone }, fallback: SlideTone) =>\n TONES[slide.tone ?? fallback];\n\n/** Cycled when a series of items has no accents of its own. */\nexport const ACCENT_CYCLE: AccentName[] = [\n 'accent',\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n];\n","import * as React from 'react';\nimport type { TemplateIconRegistry } from '../../templates/icons';\nimport type { TemplateComponents } from '../../templates/types';\nimport type { DeckLabels } from './labels';\nimport type { Slide, SlideRendererProps } from './types';\nimport { TONES, type ToneSpec } from './tones';\n\nexport interface DeckContextValue {\n slides: Slide[];\n activeSlide: number;\n goTo: (index: number) => void;\n labels: Required<DeckLabels>;\n components?: TemplateComponents;\n icons?: TemplateIconRegistry;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each site graphic owns its props\n graphics?: Record<string, React.ComponentType<any>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each site slide owns its props\n renderers?: Record<string, React.ComponentType<SlideRendererProps<any>>>;\n locale?: string;\n}\n\nconst DeckContext = React.createContext<DeckContextValue | null>(null);\n\nexport const DeckProvider = DeckContext.Provider;\n\nexport function useDeck(): DeckContextValue {\n const ctx = React.useContext(DeckContext);\n if (!ctx) throw new Error('Slide renderers must be rendered inside <Deck>.');\n return ctx;\n}\n\n/** The tone of the slide being rendered, so primitives pick matching text colours. */\nexport const ToneContext = React.createContext<ToneSpec>(TONES.brand);\n\nexport const useTone = () => React.useContext(ToneContext);\n","/** Every string the deck chrome renders, for translation. */\nexport interface DeckLabels {\n /** `aria-roledescription` of the deck region. */\n presentation?: string;\n /** `aria-roledescription` of each slide. */\n slide?: string;\n slideNavigation?: string;\n goToSlide?: (n: number, title: string) => string;\n outline?: string;\n openOutline?: string;\n closeOutline?: string;\n print?: string;\n enterFullscreen?: string;\n exitFullscreen?: string;\n previous?: string;\n next?: string;\n navigateHint?: string;\n fullscreenHint?: string;\n helpHint?: string;\n copy?: string;\n copied?: string;\n statusNow?: string;\n statusNext?: string;\n statusLater?: string;\n watchVideo?: string;\n lines?: string;\n bars?: string;\n more?: (n: number) => string;\n less?: string;\n}\n\nexport const defaultDeckLabels: Required<DeckLabels> = {\n presentation: 'slide presentation',\n slide: 'slide',\n slideNavigation: 'Slide navigation',\n goToSlide: (n, title) => `Go to slide ${n}${title ? `: ${title}` : ''}`,\n outline: 'Slides',\n openOutline: 'Open slide outline',\n closeOutline: 'Close outline',\n print: 'Print or save as PDF',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n previous: 'Previous slide',\n next: 'Next slide',\n navigateHint: 'Navigate',\n fullscreenHint: 'Fullscreen',\n helpHint: 'Help',\n copy: 'Copy link',\n copied: 'Copied',\n statusNow: 'Now',\n statusNext: 'Next',\n statusLater: 'Later',\n watchVideo: 'Watch the video',\n lines: 'Lines',\n bars: 'Bars',\n more: (n) => `Show ${n} more`,\n less: 'Show less',\n};\n","import * as React from 'react';\nimport { ExternalLink } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { safeHref } from '../../templates/Section';\nimport { TemplateIcon } from '../../templates/icons';\nimport { useDeck, useTone } from './DeckContext';\nimport { accent as accentSpec } from './tones';\nimport type { AccentName, BulletItem, SourceRef } from './types';\n\n/** Props for an element that fades up as its slide scrolls into view; `i` staggers it. */\nexport function reveal(i = 0): {\n className: string;\n style: React.CSSProperties;\n} {\n return {\n className: 'mie-deck-reveal',\n style: { '--mie-reveal-i': i } as React.CSSProperties,\n };\n}\n\nexport function Eyebrow({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n const tone = useTone();\n const r = reveal(0);\n return (\n <p\n className={cn(\n r.className,\n 'mb-4 text-xs font-semibold tracking-[0.2em] uppercase',\n accentSpec('accent', tone.isLight).text,\n className\n )}\n style={r.style}\n >\n {children}\n </p>\n );\n}\n\nexport function SlideTitle({\n children,\n className,\n size = 'md',\n}: {\n children: React.ReactNode;\n className?: string;\n size?: 'md' | 'lg' | 'xl';\n}) {\n const tone = useTone();\n const r = reveal(1);\n return (\n <h2\n className={cn(\n r.className,\n 'font-bold tracking-tight text-balance',\n tone.text,\n size === 'xl'\n ? 'text-5xl sm:text-6xl lg:text-7xl'\n : size === 'lg'\n ? 'text-4xl sm:text-5xl lg:text-6xl'\n : 'text-3xl sm:text-4xl lg:text-5xl',\n className\n )}\n style={r.style}\n >\n {children}\n </h2>\n );\n}\n\nexport function Subtitle({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n const tone = useTone();\n const r = reveal(2);\n return (\n <p\n className={cn(\n r.className,\n 'mt-4 max-w-2xl text-base leading-relaxed text-pretty sm:text-lg',\n tone.muted,\n className\n )}\n style={r.style}\n >\n {children}\n </p>\n );\n}\n\n/** The heading block most slides open with. */\nexport function SlideHeader({\n eyebrow,\n title,\n subtitle,\n center,\n}: {\n eyebrow?: string;\n title: string;\n subtitle?: string;\n center?: boolean;\n}) {\n return (\n <div className={cn(center && 'mx-auto text-center')}>\n {eyebrow && <Eyebrow>{eyebrow}</Eyebrow>}\n <SlideTitle>{title}</SlideTitle>\n {subtitle && (\n <Subtitle className={cn(center && 'mx-auto')}>{subtitle}</Subtitle>\n )}\n </div>\n );\n}\n\n/**\n * Splits a figure such as `$1.2M` into prefix, number and suffix by scanning\n * for the first digit run (a regex here is flagged for polynomial backtracking).\n */\nfunction splitFigure(value: string): [string, string, string] | null {\n const start = value.search(/\\d/);\n if (start === -1) return null;\n let end = start;\n while (end < value.length && /[\\d,.]/.test(value[end])) end += 1;\n return [value.slice(0, start), value.slice(start, end), value.slice(end)];\n}\n\n/** Counts a figure such as `$1.2M` or `94%` up from zero when it scrolls into view. */\nexport function CountUp({\n value,\n duration = 1400,\n}: {\n value: string;\n duration?: number;\n}) {\n const ref = React.useRef<HTMLSpanElement>(null);\n const match = splitFigure(value);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el || !match) return;\n if (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) return;\n const [prefix, digits, suffix] = match;\n const target = parseFloat(digits.replace(/,/g, ''));\n if (Number.isNaN(target)) return;\n const decimals = digits.split('.')[1]?.length ?? 0;\n const grouped = digits.includes(',');\n const render = (n: number) => {\n let out = n.toFixed(decimals);\n if (grouped) {\n const [whole, frac] = out.split('.');\n out =\n whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',') +\n (frac ? `.${frac}` : '');\n }\n el.textContent = `${prefix}${out}${suffix}`;\n };\n render(0);\n let frame = 0;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry.isIntersecting) return;\n observer.disconnect();\n const start = performance.now();\n const tick = (now: number) => {\n const t = Math.min(1, (now - start) / duration);\n render(target * (1 - Math.pow(1 - t, 3)));\n if (t < 1) frame = requestAnimationFrame(tick);\n else el.textContent = value;\n };\n frame = requestAnimationFrame(tick);\n },\n { threshold: 0.1 }\n );\n observer.observe(el);\n return () => {\n observer.disconnect();\n cancelAnimationFrame(frame);\n el.textContent = value;\n };\n // `match` is derived from `value`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, duration]);\n\n return (\n <span ref={ref} className=\"tabular-nums\">\n {value}\n </span>\n );\n}\n\nexport function DeckIcon({\n name,\n className,\n}: {\n name?: string;\n className?: string;\n}) {\n const { icons } = useDeck();\n if (!name) return null;\n return <TemplateIcon name={name} icons={icons} className={className} />;\n}\n\nexport function IconChip({\n icon,\n accent = 'accent',\n}: {\n icon?: string;\n accent?: AccentName;\n}) {\n const tone = useTone();\n if (!icon) return null;\n const a = accentSpec(accent, tone.isLight);\n return (\n <span\n className={cn(\n 'inline-flex size-11 items-center justify-center rounded-xl border',\n a.soft,\n a.border,\n a.text\n )}\n >\n <DeckIcon name={icon} />\n </span>\n );\n}\n\nexport function Bullet({\n item,\n depth = 0,\n}: {\n item: BulletItem | string;\n depth?: number;\n}) {\n const tone = useTone();\n const a = accentSpec('accent', tone.isLight);\n const b = typeof item === 'string' ? { text: item } : item;\n return (\n <li className={cn('flex flex-col', depth > 0 && 'ms-5 sm:ms-7')}>\n <div className=\"flex items-start gap-3\">\n <span aria-hidden=\"true\" className={cn('mt-2 flex-none', a.text)}>\n {b.icon ? (\n <DeckIcon name={b.icon} className=\"size-[1.1em]\" />\n ) : (\n <span\n className={cn(\n 'block rounded-full',\n depth === 0\n ? cn('size-1.5', a.fill)\n : 'size-1 bg-current opacity-60'\n )}\n />\n )}\n </span>\n <span\n className={cn(\n 'leading-snug',\n depth === 0\n ? cn('text-lg sm:text-xl', tone.text)\n : cn('text-base', tone.muted)\n )}\n >\n {b.lead && (\n <span className={cn('font-semibold', a.text)}>{b.lead} </span>\n )}\n {b.text}\n </span>\n </div>\n {b.children && b.children.length > 0 && (\n <ul className=\"mt-2 flex flex-col gap-2\">\n {b.children.map((child, i) => (\n <Bullet key={i} item={child} depth={depth + 1} />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\nexport function SourceLink({\n source,\n className,\n}: {\n source: SourceRef;\n className?: string;\n}) {\n const tone = useTone();\n // Slide JSON is content data; an executable scheme renders as plain text.\n const href = safeHref(source.url);\n if (!href)\n return (\n <span className={cn('text-xs', tone.muted, className)}>\n {source.label}\n </span>\n );\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'inline-flex items-center gap-1 text-xs underline underline-offset-2 hover:opacity-100',\n tone.muted,\n className\n )}\n >\n {source.label}\n <ExternalLink aria-hidden=\"true\" className=\"size-3\" />\n </a>\n );\n}\n\n/** A figure with its label, used by covers, conclusions and callouts. */\nexport function HighlightFigure({\n value,\n label,\n size = 'md',\n}: {\n value: string;\n label: string;\n size?: 'md' | 'lg';\n}) {\n const tone = useTone();\n return (\n <div className=\"text-center\">\n <div\n className={cn(\n 'font-bold',\n accentSpec('accent', tone.isLight).text,\n size === 'lg' ? 'text-4xl sm:text-5xl' : 'text-3xl sm:text-4xl'\n )}\n >\n <CountUp value={value} />\n </div>\n <div className={cn('mt-1 text-xs tracking-wider uppercase', tone.muted)}>\n {label}\n </div>\n </div>\n );\n}\n\nexport function Card({\n children,\n className,\n i,\n}: {\n children: React.ReactNode;\n className?: string;\n /** Reveal stagger index. */\n i?: number;\n}) {\n const tone = useTone();\n const r = reveal(i ?? 3);\n return (\n <div\n className={cn(\n r.className,\n 'rounded-2xl border p-6',\n tone.card,\n tone.hairline,\n className\n )}\n style={r.style}\n >\n {children}\n </div>\n );\n}\n","import * as React from 'react';\nimport { Minus, TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { useDeck, useTone } from './DeckContext';\nimport { reveal } from './primitives';\nimport { ACCENT_CYCLE, accent as accentSpec } from './tones';\nimport type {\n BarGraphic,\n DeckGraphic,\n HorizontalBarGraphic,\n KpiRowGraphic,\n MultiLineGraphic,\n SparkGraphic,\n} from './types';\n\n/** Screen-reader copy of a chart's numbers; the drawing itself is decorative. */\nfunction ChartTable({\n caption,\n headers,\n rows,\n}: {\n caption: string;\n headers: string[];\n rows: Array<Array<string | number>>;\n}) {\n return (\n <table className=\"sr-only\">\n <caption>{caption}</caption>\n <thead>\n <tr>\n {headers.map((h, i) =>\n h ? (\n <th key={i} scope=\"col\">\n {h}\n </th>\n ) : (\n // The row-label corner cell has no caption of its own.\n <td key={i} />\n )\n )}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, r) => (\n <tr key={r}>\n {row.map((cell, c) =>\n c === 0 ? (\n <th key={c} scope=\"row\">\n {cell}\n </th>\n ) : (\n <td key={c}>{cell}</td>\n )\n )}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nfunction useFormat() {\n const { locale } = useDeck();\n return React.useMemo(\n () => new Intl.NumberFormat(locale, { notation: 'compact' }),\n [locale]\n );\n}\n\nexport function BarChart({ graphic }: { graphic: BarGraphic }) {\n const tone = useTone();\n const format = useFormat();\n const max = Math.max(1, ...graphic.bars.map((b) => b.value));\n const hi = accentSpec('accent', tone.isLight);\n return (\n <figure data-slot=\"deck-bar-chart\" className=\"w-full\">\n <div aria-hidden=\"true\" className=\"flex h-56 items-end gap-2 sm:h-64\">\n {graphic.bars.map((bar, i) => (\n <React.Fragment key={bar.label}>\n {graphic.marker?.atIndex === i && (\n <div className=\"relative h-full w-px flex-none border-s border-dashed border-current opacity-40\">\n <span className=\"absolute start-1/2 -top-6 -translate-x-1/2 text-[0.65rem] font-semibold tracking-wide whitespace-nowrap uppercase opacity-100\">\n {graphic.marker.label}\n </span>\n </div>\n )}\n <div className=\"flex h-full min-w-0 flex-1 flex-col items-center gap-1\">\n {/* Bars share one track height, so labels align regardless of value. */}\n <div className=\"w-full flex-1 pt-5\">\n <div className=\"relative h-full\">\n <div\n className={cn(\n 'mie-deck-grow absolute inset-x-0 bottom-0 rounded-t-md',\n bar.highlight\n ? hi.fill\n : tone.isLight\n ? 'bg-neutral-300'\n : 'bg-white/25'\n )}\n style={\n {\n height: `${(bar.value / max) * 100}%`,\n '--mie-reveal-i': i,\n } as React.CSSProperties\n }\n >\n <span\n className={cn(\n 'absolute inset-x-0 bottom-full mb-1 text-center text-xs font-semibold tabular-nums',\n tone.muted\n )}\n >\n {format.format(bar.value)}\n </span>\n </div>\n </div>\n </div>\n <span\n className={cn(\n 'w-full truncate text-center text-xs',\n tone.muted\n )}\n >\n {bar.label}\n </span>\n </div>\n </React.Fragment>\n ))}\n </div>\n {graphic.yAxisLabel && (\n <figcaption className={cn('mt-2 text-xs', tone.muted)}>\n {graphic.yAxisLabel}\n </figcaption>\n )}\n <ChartTable\n caption={graphic.yAxisLabel ?? 'Values'}\n headers={['', graphic.yAxisLabel ?? 'Value']}\n rows={graphic.bars.map((b) => [b.label, b.value])}\n />\n </figure>\n );\n}\n\nexport function HorizontalBars({ graphic }: { graphic: HorizontalBarGraphic }) {\n const tone = useTone();\n const format = useFormat();\n const max = Math.max(1, ...graphic.bars.map((b) => b.value));\n const a = accentSpec('accent', tone.isLight);\n return (\n <ul data-slot=\"deck-horizontal-bars\" className=\"w-full space-y-3\">\n {graphic.bars.map((bar, i) => {\n const r = reveal(3 + i);\n return (\n <li key={bar.label} className={r.className} style={r.style}>\n <div className=\"mb-1 flex justify-between gap-3 text-sm\">\n <span className=\"truncate\">{bar.label}</span>\n <span className=\"font-semibold tabular-nums\">\n {bar.display ?? format.format(bar.value)}\n </span>\n </div>\n <div\n aria-hidden=\"true\"\n className={cn(\n 'h-2 overflow-hidden rounded-full',\n tone.isLight ? 'bg-neutral-200' : 'bg-white/10'\n )}\n >\n <div\n className={cn('h-full rounded-full', a.fill)}\n style={{ width: `${(bar.value / max) * 100}%` }}\n />\n </div>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function KpiRow({ graphic }: { graphic: KpiRowGraphic }) {\n const tone = useTone();\n return (\n <dl\n data-slot=\"deck-kpi-row\"\n className=\"grid w-full grid-cols-2 gap-4 sm:grid-cols-4\"\n >\n {graphic.kpis.map((kpi, i) => {\n const Trend =\n kpi.trend === 'up'\n ? TrendingUp\n : kpi.trend === 'down'\n ? TrendingDown\n : Minus;\n const r = reveal(3 + i);\n return (\n <div\n key={kpi.label}\n className={cn(\n r.className,\n 'flex flex-col-reverse rounded-xl border p-4',\n tone.card,\n tone.hairline\n )}\n style={r.style}\n >\n <dt className={cn('text-xs', tone.muted)}>{kpi.label}</dt>\n <dd className=\"flex items-center gap-2 text-2xl font-bold tabular-nums\">\n {kpi.value}\n {kpi.trend && (\n <Trend\n aria-hidden=\"true\"\n className={cn(\n 'size-4',\n kpi.trend === 'up'\n ? 'text-success'\n : kpi.trend === 'down'\n ? 'text-destructive'\n : tone.muted\n )}\n />\n )}\n </dd>\n </div>\n );\n })}\n </dl>\n );\n}\n\nfunction points(\n values: number[],\n w: number,\n h: number,\n y: (v: number) => number\n) {\n const step = values.length > 1 ? w / (values.length - 1) : 0;\n return values\n .map((v, i) => `${(i * step).toFixed(1)},${(h - y(v) * h).toFixed(1)}`)\n .join(' ');\n}\n\nexport function Spark({ graphic }: { graphic: SparkGraphic }) {\n const tone = useTone();\n const a = accentSpec('accent', tone.isLight);\n const max = Math.max(1, ...graphic.values);\n const last = graphic.values[graphic.values.length - 1];\n return (\n <figure data-slot=\"deck-spark\" className=\"w-full\">\n <figcaption\n className={cn(\n 'flex items-baseline justify-between text-sm',\n tone.muted\n )}\n >\n <span>{graphic.label}</span>\n <span className={cn('text-2xl font-bold tabular-nums', a.text)}>\n {last}\n {graphic.suffix}\n </span>\n </figcaption>\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 100 30\"\n preserveAspectRatio=\"none\"\n className=\"mt-2 h-12 w-full overflow-visible\"\n >\n <polyline\n points={points(graphic.values, 100, 30, (v) => v / max)}\n fill=\"none\"\n strokeWidth={2}\n vectorEffect=\"non-scaling-stroke\"\n className={a.svgStroke}\n />\n </svg>\n <ChartTable\n caption={graphic.label}\n headers={['#', graphic.label]}\n rows={graphic.values.map((v, i) => [i + 1, v])}\n />\n </figure>\n );\n}\n\nexport function MultiLine({ graphic }: { graphic: MultiLineGraphic }) {\n const tone = useTone();\n const { labels } = useDeck();\n const format = useFormat();\n const [view, setView] = React.useState<'lines' | 'bars'>('lines');\n const all = graphic.series.flatMap((s) => s.values);\n const log = (graphic.scale ?? 'log') === 'log';\n const tx = (v: number) => (log ? Math.log10(Math.max(1, v)) : v);\n const lo = Math.min(...all.map(tx));\n const hi = Math.max(...all.map(tx));\n const y = (v: number) => (hi === lo ? 0.5 : (tx(v) - lo) / (hi - lo));\n const colours = graphic.series.map((_, i) =>\n accentSpec(ACCENT_CYCLE[i % ACCENT_CYCLE.length], tone.isLight)\n );\n const toggle = (active: boolean) =>\n cn(\n 'rounded-full px-3 py-1 text-xs font-semibold transition-colors',\n active\n ? tone.isLight\n ? 'bg-neutral-900 text-white'\n : 'bg-white text-neutral-900'\n : cn(tone.muted, 'hover:opacity-100')\n );\n return (\n <figure data-slot=\"deck-multi-line\" className=\"w-full\">\n <div\n role=\"group\"\n aria-label={graphic.caption}\n className=\"mb-3 flex gap-1\"\n >\n <button\n type=\"button\"\n aria-pressed={view === 'lines'}\n className={toggle(view === 'lines')}\n onClick={() => setView('lines')}\n >\n {labels.lines}\n </button>\n <button\n type=\"button\"\n aria-pressed={view === 'bars'}\n className={toggle(view === 'bars')}\n onClick={() => setView('bars')}\n >\n {labels.bars}\n </button>\n </div>\n {view === 'lines' ? (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 100 50\"\n preserveAspectRatio=\"none\"\n className=\"h-56 w-full overflow-visible\"\n >\n {graphic.series.map((s, i) => (\n <polyline\n key={s.label}\n points={points(s.values, 100, 50, y)}\n fill=\"none\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n className={colours[i].svgStroke}\n />\n ))}\n </svg>\n ) : (\n <div aria-hidden=\"true\" className=\"grid gap-4 sm:grid-cols-2\">\n {graphic.series.map((s, i) => {\n const max = Math.max(1, ...s.values);\n return (\n <div key={s.label}>\n <p\n className={cn('mb-1 text-xs font-semibold', colours[i].text)}\n >\n {s.label}\n </p>\n <div className=\"flex h-20 items-end gap-1\">\n {s.values.map((v, j) => (\n <div\n key={j}\n className={cn('flex-1 rounded-t-sm', colours[i].fill)}\n style={{ height: `${(v / max) * 100}%` }}\n />\n ))}\n </div>\n </div>\n );\n })}\n </div>\n )}\n <div\n aria-hidden=\"true\"\n className={cn('mt-2 flex justify-between text-xs', tone.muted)}\n >\n {graphic.xLabels.map((l) => (\n <span key={l}>{l}</span>\n ))}\n </div>\n <ul className=\"mt-4 flex flex-wrap gap-x-6 gap-y-2 text-sm\">\n {graphic.series.map((s, i) => (\n <li key={s.label} className=\"flex items-center gap-2\">\n <span\n aria-hidden=\"true\"\n className={cn('size-2.5 rounded-full', colours[i].fill)}\n />\n <span className=\"font-medium\">{s.label}</span>\n {s.summary && <span className={tone.muted}>{s.summary}</span>}\n </li>\n ))}\n </ul>\n {graphic.caption && (\n <figcaption className={cn('mt-2 text-xs', tone.muted)}>\n {graphic.caption}\n </figcaption>\n )}\n <ChartTable\n caption={\n graphic.caption ?? graphic.series.map((s) => s.label).join(', ')\n }\n headers={['', ...graphic.series.map((s) => s.label)]}\n rows={graphic.xLabels.map((x, i) => [\n x,\n ...graphic.series.map((s) => format.format(s.values[i] ?? 0)),\n ])}\n />\n </figure>\n );\n}\n\n/** Renders any `DeckGraphic`; `custom` graphics come from `Deck`'s `graphics` map. */\nexport function Graphic({ graphic }: { graphic: DeckGraphic }) {\n const { graphics } = useDeck();\n switch (graphic.type) {\n case 'bar':\n return <BarChart graphic={graphic} />;\n case 'horizontal-bar':\n return <HorizontalBars graphic={graphic} />;\n case 'multi-line':\n return <MultiLine graphic={graphic} />;\n case 'kpi-row':\n return <KpiRow graphic={graphic} />;\n case 'spark':\n return <Spark graphic={graphic} />;\n case 'custom': {\n const Custom = graphics?.[graphic.component];\n return Custom ? <Custom {...graphic.props} /> : null;\n }\n }\n}\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { ToneContext, useDeck } from './DeckContext';\nimport { TONES } from './tones';\nimport type { Slide, SlideTone } from './types';\n\nexport const slideAnchor = (slide: Slide, index: number) =>\n slide.id ?? `slide-${index}`;\n\nexport interface SlideFrameProps {\n slide: Slide;\n index: number;\n /** Default tone for this slide type; the slide's own `tone` wins. */\n tone: SlideTone;\n children: React.ReactNode;\n width?: 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n}\n\nconst widthClass = {\n sm: 'max-w-3xl',\n md: 'max-w-4xl',\n lg: 'max-w-5xl',\n xl: 'max-w-6xl',\n} as const;\n\n/** The full-viewport snap target every slide renders into. */\nexport function SlideFrame({\n slide,\n index,\n tone: fallback,\n children,\n width = 'xl',\n className,\n}: SlideFrameProps) {\n const { labels } = useDeck();\n const toneName = slide.tone ?? fallback;\n const tone = TONES[toneName];\n const title = 'title' in slide ? slide.title : undefined;\n return (\n <ToneContext.Provider value={tone}>\n <section\n id={slideAnchor(slide, index)}\n data-slot=\"deck-slide\"\n data-index={index}\n data-tone={toneName}\n role=\"group\"\n aria-roledescription={labels.slide}\n aria-label={slide.navLabel ?? title ?? `${index + 1}`}\n className={cn(\n 'mie-deck-slide relative isolate flex min-h-dvh w-full snap-start snap-always flex-col items-center justify-center overflow-hidden px-5 py-12 sm:px-8 sm:py-14 md:px-12 lg:px-20',\n tone.surface,\n tone.text,\n className\n )}\n >\n {!tone.isLight && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 -z-10 overflow-hidden print:hidden\"\n >\n <div className=\"bg-accent/15 absolute -end-24 -top-24 size-[28rem] rounded-full blur-3xl\" />\n <div className=\"bg-primary-500/15 absolute -start-24 -bottom-32 size-[32rem] rounded-full blur-3xl\" />\n </div>\n )}\n <div className={cn('relative w-full', widthClass[width])}>\n {children}\n </div>\n </section>\n </ToneContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { ArrowDown, ArrowUp } from 'lucide-react';\nimport { cn } from '../../../utils/cn';\nimport { useDeck, useTone } from '../DeckContext';\nimport { Graphic } from '../graphics';\nimport {\n Card,\n CountUp,\n DeckIcon,\n IconChip,\n SlideHeader,\n SourceLink,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { accent } from '../tones';\nimport type {\n BreakdownSlide,\n CardsSlide,\n ChartSlide,\n ComparisonTableSlide,\n FeatureHighlightSlide,\n ImpactTableSlide,\n MetricsSlide,\n RankedListSlide,\n SlideRendererProps,\n TabsSlide,\n} from '../types';\n\nconst gridCols = (n: number) =>\n n >= 4\n ? 'sm:grid-cols-2 lg:grid-cols-4'\n : n === 3\n ? 'md:grid-cols-3'\n : 'md:grid-cols-2';\n\ntype Body<T> = Omit<T, 'type' | 'id' | 'navLabel' | 'tone' | 'section'>;\n\n// --- metrics -----------------------------------------------------------------\n\nfunction MetricsBody({ slide }: { slide: Body<MetricsSlide> }) {\n const tone = useTone();\n return (\n <>\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div\n className={cn(\n 'mt-10 grid grid-cols-1 gap-5',\n gridCols(slide.metrics.length)\n )}\n >\n {slide.metrics.map((m, i) => (\n <Card key={m.label} i={3 + i}>\n {m.icon && (\n <div className=\"mb-4\">\n <IconChip icon={m.icon} accent={m.accent} />\n </div>\n )}\n <div\n className={cn(\n 'text-4xl font-bold',\n accent(m.accent, tone.isLight).text\n )}\n >\n <CountUp value={m.value} />\n </div>\n <div className=\"mt-2 text-sm font-semibold\">{m.label}</div>\n {m.description && (\n <div className={cn('mt-1 text-sm leading-snug', tone.muted)}>\n {m.description}\n </div>\n )}\n </Card>\n ))}\n </div>\n </>\n );\n}\n\nexport function MetricsRenderer({\n slide,\n index,\n}: SlideRendererProps<MetricsSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <MetricsBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- chart -------------------------------------------------------------------\n\nfunction ChartBody({ slide }: { slide: Body<ChartSlide> }) {\n const tone = useTone();\n return (\n <>\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div {...reveal(3)} className=\"mie-deck-reveal mt-10\">\n <Graphic graphic={slide.graphic} />\n </div>\n {slide.description && (\n <p className={cn('mt-6 max-w-3xl text-sm', tone.muted)}>\n {slide.description}\n </p>\n )}\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </>\n );\n}\n\nexport function ChartRenderer({\n slide,\n index,\n}: SlideRendererProps<ChartSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <ChartBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- feature highlight ---------------------------------------------------------\n\nfunction FeatureHighlightBody({\n slide,\n}: {\n slide: Body<FeatureHighlightSlide>;\n}) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n const hasGraphic = !!slide.graphic;\n return (\n <div\n className={cn(hasGraphic && 'grid items-center gap-10 lg:grid-cols-2')}\n >\n <div>\n <SlideHeader eyebrow={slide.eyebrow} title={slide.title} />\n <p\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal mt-4 text-lg leading-relaxed',\n tone.muted\n )}\n >\n {slide.body}\n </p>\n {slide.stat && (\n <div {...reveal(3)} className=\"mie-deck-reveal mt-8\">\n <div className={cn('text-5xl font-bold', a.text)}>\n <CountUp value={slide.stat.value} />\n </div>\n <div className={cn('mt-1 text-sm', tone.muted)}>\n {slide.stat.label}\n </div>\n </div>\n )}\n {slide.bullets && slide.bullets.length > 0 && (\n <ul {...reveal(4)} className=\"mie-deck-reveal mt-6 space-y-2\">\n {slide.bullets.map((b) => (\n <li key={b} className=\"flex items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className={cn('mt-2 size-1.5 flex-none rounded-full', a.fill)}\n />\n {b}\n </li>\n ))}\n </ul>\n )}\n {slide.pullQuote && (\n <blockquote\n {...reveal(5)}\n className={cn(\n 'mie-deck-reveal mt-8 border-s-2 ps-4 italic',\n a.border,\n tone.muted\n )}\n >\n {slide.pullQuote}\n </blockquote>\n )}\n </div>\n {hasGraphic && (\n <div {...reveal(3)} className=\"mie-deck-reveal flex flex-col gap-8\">\n <Graphic graphic={slide.graphic!} />\n {slide.secondaryGraphic && (\n <Graphic graphic={slide.secondaryGraphic} />\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport function FeatureHighlightRenderer({\n slide,\n index,\n}: SlideRendererProps<FeatureHighlightSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <FeatureHighlightBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- tables --------------------------------------------------------------------\n\nfunction DeckTable({\n headers,\n rows,\n}: {\n headers: string[];\n rows: React.ReactNode[][];\n}) {\n const tone = useTone();\n return (\n <div\n {...reveal(3)}\n className={cn(\n 'mie-deck-reveal mt-10 overflow-x-auto rounded-2xl border',\n tone.hairline,\n tone.card\n )}\n >\n <table className=\"min-w-full text-start text-sm sm:text-base\">\n <thead>\n <tr className={cn('border-b', tone.hairline)}>\n {headers.map((h, i) => (\n <th\n key={h}\n scope=\"col\"\n className={cn(\n 'px-5 py-3 font-semibold',\n i === 0 ? 'text-start' : 'text-end',\n tone.muted\n )}\n >\n {h}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, r) => (\n <tr key={r} className={cn(r > 0 && 'border-t', tone.hairline)}>\n {row.map((cell, c) =>\n c === 0 ? (\n <th\n key={c}\n scope=\"row\"\n className=\"px-5 py-3 text-start font-medium\"\n >\n {cell}\n </th>\n ) : (\n <td key={c} className=\"px-5 py-3 text-end tabular-nums\">\n {cell}\n </td>\n )\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport function ComparisonTableRenderer({\n slide,\n index,\n}: SlideRendererProps<ComparisonTableSlide>) {\n const a = accent('accent', (slide.tone ?? 'deep') === 'light');\n const [metric, before, after, change] = slide.headers ?? [\n 'Metric',\n 'Before',\n 'After',\n 'Change',\n ];\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <DeckTable\n headers={[metric, before, after, change]}\n rows={slide.rows.map((r) => [\n r.label,\n <span key=\"b\" className=\"opacity-70\">\n {r.before}\n </span>,\n r.after,\n <span key=\"c\" className={cn('font-semibold', a.text)}>\n {r.change}\n </span>,\n ])}\n />\n </SlideFrame>\n );\n}\n\nexport function ImpactTableRenderer({\n slide,\n index,\n}: SlideRendererProps<ImpactTableSlide>) {\n const [item, impact] = slide.headers ?? ['Investment', 'Impact'];\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <DeckTable\n headers={[item, impact]}\n rows={slide.rows.map((r) => [\n <span key=\"i\">\n {r.item}\n {r.detail && (\n <span className=\"block text-sm font-normal opacity-70\">\n {r.detail}\n </span>\n )}\n </span>,\n <span key=\"m\" className=\"block text-start sm:text-end\">\n {r.impact}\n </span>,\n ])}\n />\n </SlideFrame>\n );\n}\n\n// --- cards -------------------------------------------------------------------\n\nfunction CardsBody({ slide }: { slide: Body<CardsSlide> }) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n return (\n <>\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div\n className={cn(\n 'mt-10 grid grid-cols-1 gap-5',\n gridCols(slide.cards.length)\n )}\n >\n {slide.cards.map((card, i) => (\n <Card key={card.title} i={3 + i}>\n {card.icon && (\n <div className=\"mb-4\">\n <IconChip icon={card.icon} />\n </div>\n )}\n <h3 className=\"text-lg font-semibold\">{card.title}</h3>\n <p className={cn('mt-2 leading-relaxed', tone.muted)}>\n {card.body}\n </p>\n {card.stat && (\n <div className=\"mt-6\">\n <div className={cn('text-3xl font-bold', a.text)}>\n <CountUp value={card.stat} />\n </div>\n {card.statLabel && (\n <div className={cn('text-sm', tone.muted)}>\n {card.statLabel}\n </div>\n )}\n </div>\n )}\n </Card>\n ))}\n </div>\n {slide.note && (\n <p className={cn('mt-8 text-sm italic', tone.muted)}>{slide.note}</p>\n )}\n </>\n );\n}\n\nexport function CardsRenderer({\n slide,\n index,\n}: SlideRendererProps<CardsSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <CardsBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- ranked list -----------------------------------------------------------------\n\nfunction RankedListBody({ slide }: { slide: Body<RankedListSlide> }) {\n const tone = useTone();\n const { locale } = useDeck();\n const a = accent('accent', tone.isLight);\n const format = new Intl.NumberFormat(locale);\n const max = Math.max(1, ...slide.entries.map((e) => e.value));\n return (\n <>\n <div className=\"flex flex-wrap items-end justify-between gap-4\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n {slide.outOf && (\n <p className={cn('text-sm', tone.muted)}>{slide.outOf}</p>\n )}\n </div>\n <ol className=\"mt-8 flex flex-col gap-2\">\n {slide.entries.map((e, i) => {\n const r = reveal(3 + i);\n return (\n <li\n key={e.label}\n className={cn(\n r.className,\n 'grid grid-cols-[2rem_minmax(0,1fr)_auto] items-center gap-4 rounded-xl border px-4 py-3',\n e.highlighted\n ? cn(a.soft, a.border)\n : cn(tone.card, tone.hairline)\n )}\n style={r.style}\n >\n <span\n className={cn(\n 'text-sm font-bold tabular-nums',\n e.highlighted ? a.text : tone.muted\n )}\n >\n {i + 1}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block truncate font-medium\">{e.label}</span>\n {e.sublabel && (\n <span className={cn('block truncate text-xs', tone.muted)}>\n {e.sublabel}\n </span>\n )}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mt-2 block h-1.5 overflow-hidden rounded-full',\n tone.isLight ? 'bg-neutral-200' : 'bg-white/10'\n )}\n >\n <span\n className={cn(\n 'block h-full rounded-full',\n e.highlighted\n ? a.fill\n : tone.isLight\n ? 'bg-neutral-400'\n : 'bg-white/40'\n )}\n style={{ width: `${(e.value / max) * 100}%` }}\n />\n </span>\n </span>\n <span className=\"text-end\">\n <span className=\"block font-semibold tabular-nums\">\n {e.display ?? format.format(e.value)}\n </span>\n {e.secondary && (\n <span className={cn('block text-xs', tone.muted)}>\n {e.secondary}\n </span>\n )}\n {e.change != null && e.change !== 0 && (\n <span\n className={cn(\n 'inline-flex items-center text-xs font-semibold',\n e.change > 0 ? 'text-success' : 'text-destructive'\n )}\n >\n {e.change > 0 ? (\n <ArrowUp aria-hidden=\"true\" className=\"size-3\" />\n ) : (\n <ArrowDown aria-hidden=\"true\" className=\"size-3\" />\n )}\n <span className=\"sr-only\">\n {e.change > 0 ? '+' : '\\u2212'}\n </span>\n {Math.abs(e.change)}\n </span>\n )}\n </span>\n </li>\n );\n })}\n </ol>\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </>\n );\n}\n\nexport function RankedListRenderer({\n slide,\n index,\n}: SlideRendererProps<RankedListSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\" width=\"lg\">\n <RankedListBody slide={slide} />\n </SlideFrame>\n );\n}\n\n// --- breakdown -----------------------------------------------------------------\n\nexport function BreakdownRenderer({\n slide,\n index,\n}: SlideRendererProps<BreakdownSlide>) {\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <BreakdownBody slide={slide} />\n </SlideFrame>\n );\n}\n\nfunction BreakdownBody({ slide }: { slide: BreakdownSlide }) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n const total = slide.breakdown?.reduce((s, b) => s + b.count, 0) || 1;\n return (\n <div className=\"grid gap-10 lg:grid-cols-2\">\n <div>\n <SlideHeader eyebrow={slide.eyebrow} title={slide.title} />\n {slide.body && (\n <p\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal mt-4 text-lg leading-relaxed',\n tone.muted\n )}\n >\n {slide.body}\n </p>\n )}\n {slide.callout && (\n <div\n {...reveal(3)}\n className={cn(\n 'mie-deck-reveal mt-8 inline-flex items-baseline gap-3 rounded-2xl border px-5 py-3',\n a.soft,\n a.border\n )}\n >\n <span className={cn('text-4xl font-bold', a.text)}>\n <CountUp value={slide.callout.value} />\n </span>\n <span className=\"text-sm\">{slide.callout.label}</span>\n </div>\n )}\n {slide.talkingPoint && (\n <p className={cn('mt-6 text-sm italic', tone.muted)}>\n “{slide.talkingPoint}”\n </p>\n )}\n {slide.pullQuote && (\n <blockquote\n className={cn(\n 'mt-6 border-s-2 ps-4 text-lg font-semibold',\n a.border\n )}\n >\n {slide.pullQuote}\n </blockquote>\n )}\n </div>\n <div {...reveal(3)} className=\"mie-deck-reveal flex flex-col gap-8\">\n {slide.series && <Graphic graphic={slide.series} />}\n {slide.breakdown && slide.breakdown.length > 0 && (\n <ul className=\"space-y-2\">\n {slide.breakdown.map((b) => (\n <li key={b.label} className=\"flex items-center gap-3 text-sm\">\n <span className=\"w-36 flex-none truncate\">{b.label}</span>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'h-2 flex-1 overflow-hidden rounded-full',\n tone.isLight ? 'bg-neutral-200' : 'bg-white/10'\n )}\n >\n <span\n className={cn('block h-full rounded-full', a.fill)}\n style={{ width: `${(b.count / total) * 100}%` }}\n />\n </span>\n <span className=\"w-10 flex-none text-end font-semibold tabular-nums\">\n {b.count}\n </span>\n </li>\n ))}\n </ul>\n )}\n {slide.entries && slide.entries.length > 0 && (\n <ul\n className={cn(\n 'max-h-64 divide-y overflow-y-auto rounded-xl border',\n tone.hairline,\n tone.card\n )}\n >\n {slide.entries.map((e) => (\n <li\n key={`${e.title}-${e.date ?? ''}`}\n className={cn(\n 'flex items-center justify-between gap-3 px-4 py-2 text-sm',\n tone.hairline\n )}\n >\n <span className=\"min-w-0\">\n <span className=\"block truncate font-medium\">{e.title}</span>\n {e.meta && (\n <span className={cn('block truncate text-xs', tone.muted)}>\n {e.meta}\n </span>\n )}\n </span>\n {e.date && (\n <span\n className={cn('flex-none text-xs tabular-nums', tone.muted)}\n >\n {e.date}\n </span>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n );\n}\n\n// --- tabs ----------------------------------------------------------------------\n\nexport function TabsRenderer({ slide, index }: SlideRendererProps<TabsSlide>) {\n const [active, setActive] = React.useState(0);\n const baseId = React.useId();\n const tabs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const current = slide.tabs[active]?.slide;\n const onKey = (e: React.KeyboardEvent) => {\n const n = slide.tabs.length;\n const next =\n e.key === 'ArrowRight'\n ? (active + 1) % n\n : e.key === 'ArrowLeft'\n ? (active - 1 + n) % n\n : e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? n - 1\n : -1;\n if (next < 0) return;\n e.preventDefault();\n e.stopPropagation();\n setActive(next);\n tabs.current[next]?.focus();\n };\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <SlideHeader eyebrow={slide.eyebrow} title={slide.title} />\n <div\n role=\"tablist\"\n aria-label={slide.title}\n className=\"mt-6 flex flex-wrap gap-2\"\n >\n {slide.tabs.map((tab, i) => (\n <TabButton\n key={tab.label}\n ref={(el) => {\n tabs.current[i] = el;\n }}\n id={`${baseId}-tab-${i}`}\n panelId={`${baseId}-panel`}\n selected={i === active}\n icon={tab.icon}\n onClick={() => setActive(i)}\n onKeyDown={onKey}\n >\n {tab.label}\n </TabButton>\n ))}\n </div>\n <div\n role=\"tabpanel\"\n id={`${baseId}-panel`}\n aria-labelledby={`${baseId}-tab-${active}`}\n className=\"mt-8\"\n >\n {current?.type === 'metrics' && <MetricsBody slide={current} />}\n {current?.type === 'chart' && <ChartBody slide={current} />}\n {current?.type === 'feature-highlight' && (\n <FeatureHighlightBody slide={current} />\n )}\n {current?.type === 'cards' && <CardsBody slide={current} />}\n {current?.type === 'ranked-list' && <RankedListBody slide={current} />}\n </div>\n </SlideFrame>\n );\n}\n\nconst TabButton = React.forwardRef<\n HTMLButtonElement,\n {\n id: string;\n panelId: string;\n selected: boolean;\n icon?: string;\n onClick: () => void;\n onKeyDown: (e: React.KeyboardEvent) => void;\n children: React.ReactNode;\n }\n>(({ id, panelId, selected, icon, onClick, onKeyDown, children }, ref) => {\n const tone = useTone();\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={id}\n aria-selected={selected}\n aria-controls={panelId}\n tabIndex={selected ? 0 : -1}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={cn(\n 'inline-flex items-center gap-2 rounded-full border px-4 py-1.5 text-sm font-semibold transition-colors',\n selected\n ? tone.isLight\n ? 'border-neutral-900 bg-neutral-900 text-white'\n : 'border-white bg-white text-neutral-900'\n : cn(\n tone.hairline,\n tone.muted,\n tone.isLight ? 'hover:bg-neutral-100' : 'hover:bg-white/10'\n )\n )}\n >\n {icon && <DeckIcon name={icon} className=\"size-4\" />}\n {children}\n </button>\n );\n});\nTabButton.displayName = 'TabButton';\n","import * as React from 'react';\nimport { cn } from '../../../utils/cn';\nimport { TemplateImg } from '../../../templates/Section';\nimport { useDeck, useTone } from '../DeckContext';\nimport {\n Card,\n DeckIcon,\n Eyebrow,\n IconChip,\n SlideHeader,\n SlideTitle,\n SourceLink,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { ACCENT_CYCLE, accent, toneOf } from '../tones';\nimport type {\n AdoptionCurveSlide,\n CycleSlide,\n DiagramSlide,\n RoadmapSlide,\n SlideRendererProps,\n} from '../types';\n\n// --- cycle ---------------------------------------------------------------------\n\nexport function CycleRenderer({\n slide,\n index,\n}: SlideRendererProps<CycleSlide>) {\n const tone = toneOf(slide, 'deep');\n const n = slide.nodes.length;\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <div className=\"grid items-center gap-10 lg:grid-cols-2\">\n <div>\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n <SlideTitle>{slide.title}</SlideTitle>\n {slide.body && (\n <p\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal mt-6 text-lg leading-relaxed',\n tone.muted\n )}\n >\n {slide.body}\n </p>\n )}\n {slide.talkingPoint && (\n <p className={cn('mt-6 italic', tone.muted)}>\n “{slide.talkingPoint}”\n </p>\n )}\n </div>\n <CycleWheel nodes={slide.nodes} n={n} />\n </div>\n </SlideFrame>\n );\n}\n\nfunction CycleWheel({ nodes, n }: { nodes: CycleSlide['nodes']; n: number }) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n return (\n <ol\n {...reveal(3)}\n className=\"mie-deck-reveal relative mx-auto aspect-square w-64 sm:w-80 md:w-96\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 400 400\"\n className=\"mie-deck-spin absolute inset-0 size-full\"\n >\n <circle\n cx=\"200\"\n cy=\"200\"\n r=\"150\"\n fill=\"none\"\n strokeWidth=\"2\"\n className={tone.isLight ? 'stroke-neutral-200' : 'stroke-white/10'}\n />\n <circle\n cx=\"200\"\n cy=\"200\"\n r=\"150\"\n fill=\"none\"\n strokeWidth=\"2\"\n strokeDasharray=\"50 200\"\n strokeLinecap=\"round\"\n className={a.svgStroke}\n />\n {nodes.map((_, i) => (\n <polygon\n key={i}\n points=\"200,47 207,60 193,60\"\n transform={`rotate(${(360 / n) * i + 180 / n} 200 200)`}\n className={a.svgFill}\n opacity={0.8}\n />\n ))}\n </svg>\n {nodes.map((node, i) => {\n const angle = (2 * Math.PI * i) / n - Math.PI / 2;\n return (\n <li\n key={node.label}\n className={cn(\n 'absolute z-10 w-28 -translate-x-1/2 -translate-y-1/2 rounded-xl border px-3 py-2 text-center shadow-lg backdrop-blur sm:w-32',\n tone.hairline,\n tone.isLight ? 'bg-white' : 'bg-neutral-900/90'\n )}\n style={{\n // rtl-ignore -- orbit nodes use trig coordinates; diagram stays LTR\n left: `${50 + 37.5 * Math.cos(angle)}%`,\n top: `${50 + 37.5 * Math.sin(angle)}%`,\n }}\n >\n {node.icon && (\n <DeckIcon\n name={node.icon}\n className={cn('mx-auto mb-1 size-4', a.text)}\n />\n )}\n <p className=\"text-xs font-bold sm:text-sm\">{node.label}</p>\n {node.metric && (\n <p className={cn('text-sm font-bold sm:text-lg', a.text)}>\n {node.metric}\n </p>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n\n// --- roadmap -------------------------------------------------------------------\n\nexport function RoadmapRenderer({\n slide,\n index,\n}: SlideRendererProps<RoadmapSlide>) {\n const { labels } = useDeck();\n const tone = toneOf(slide, 'ink');\n const a = accent('accent', tone.isLight);\n const status = {\n now: labels.statusNow,\n next: labels.statusNext,\n later: labels.statusLater,\n };\n const statusTag = {\n now: cn(a.soft, a.border, a.text),\n next: cn(\n accent('primary', tone.isLight).soft,\n accent('primary', tone.isLight).border,\n accent('primary', tone.isLight).text\n ),\n later: cn(tone.hairline, tone.muted),\n };\n return (\n <SlideFrame slide={slide} index={index} tone=\"ink\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <ol\n className={cn(\n 'relative mt-10 flex flex-col gap-6 border-s ps-8',\n a.border\n )}\n >\n {slide.items.map((item, i) => {\n const r = reveal(3 + i);\n return (\n <li\n key={item.title}\n className={cn(r.className, 'relative')}\n style={r.style}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'absolute -start-[2.35rem] top-1.5 flex size-4 items-center justify-center rounded-full border-2',\n a.border,\n tone.isLight ? 'bg-white' : 'bg-neutral-950'\n )}\n >\n <span className={cn('size-1.5 rounded-full', a.fill)} />\n </span>\n <div className=\"flex flex-wrap items-center gap-3\">\n {item.icon && (\n <IconChip\n icon={item.icon}\n accent={item.status === 'later' ? 'primary' : 'accent'}\n />\n )}\n <h3 className=\"text-lg font-semibold sm:text-xl\">\n {item.title}\n </h3>\n {item.status && (\n <span\n className={cn(\n 'rounded-full border px-2.5 py-0.5 text-[0.65rem] font-semibold tracking-wider uppercase',\n statusTag[item.status]\n )}\n >\n {status[item.status]}\n </span>\n )}\n </div>\n {item.children && item.children.length > 0 && (\n <ul className=\"mt-2 flex flex-wrap gap-x-6 gap-y-1.5\">\n {item.children.map((child) => (\n <li\n key={child}\n className={cn(\n 'flex items-center gap-2 text-sm',\n tone.muted\n )}\n >\n <span\n aria-hidden=\"true\"\n className=\"size-1 rounded-full bg-current\"\n />\n {child}\n </li>\n ))}\n </ul>\n )}\n </li>\n );\n })}\n </ol>\n </SlideFrame>\n );\n}\n\n// --- adoption curve --------------------------------------------------------------\n\nconst BASE = 50;\nconst PEAK = 6;\nconst SIGMA = 15;\nconst gaussY = (x: number) =>\n BASE - (BASE - PEAK) * Math.exp(-((x - 50) ** 2) / (2 * SIGMA * SIGMA));\n\nexport function AdoptionCurveRenderer({\n slide,\n index,\n}: SlideRendererProps<AdoptionCurveSlide>) {\n const tone = toneOf(slide, 'ink');\n const clipId = React.useId();\n const pts: string[] = [];\n for (let x = 0; x <= 100; x += 1.5) pts.push(`${x},${gaussY(x).toFixed(2)}`);\n const area = `M 0,${BASE} L ${pts.join(' L ')} L 100,${BASE} Z`;\n const values = slide.segments.map((s) => parseFloat(s.pct) || 0);\n const sum = values.reduce((x, y) => x + y, 0) || 1;\n const widths = values.map((v) => (v / sum) * 100);\n const bands = slide.segments.map((s, i) => ({\n ...s,\n x0: widths.slice(0, i).reduce((x, y) => x + y, 0),\n w: widths[i],\n spec: accent(\n s.accent ?? ACCENT_CYCLE[i % ACCENT_CYCLE.length],\n tone.isLight\n ),\n }));\n const hi = accent('accent', tone.isLight);\n return (\n <SlideFrame slide={slide} index={index} tone=\"ink\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div {...reveal(3)} className=\"mie-deck-reveal relative mt-8 pb-10\">\n {slide.annotations?.map((note) => (\n <span\n key={note.text}\n className={cn(\n 'absolute z-20 w-40 max-w-[42vw] -translate-x-1/2 rounded-lg border px-3 py-1.5 text-center text-xs leading-snug font-semibold',\n note.emphasis\n ? cn(hi.soft, hi.border, hi.text)\n : cn(tone.hairline, tone.card)\n )}\n style={{\n // rtl-ignore -- annotation anchored to LTR timeline axis coordinates\n left: `${note.atPct}%`,\n [note.side === 'bottom' ? 'bottom' : 'top']: 0,\n }}\n >\n {note.text}\n </span>\n ))}\n <div className=\"h-[clamp(180px,30vh,300px)] w-full\">\n <svg\n viewBox=\"0 0 100 56\"\n preserveAspectRatio=\"none\"\n className=\"size-full overflow-visible\"\n role=\"img\"\n aria-label={slide.segments\n .map((s) => `${s.label} ${s.pct}`)\n .join(', ')}\n >\n <defs>\n <clipPath id={clipId}>\n <path d={area} />\n </clipPath>\n </defs>\n <g clipPath={`url(#${clipId})`}>\n {bands.map((b) => (\n <rect\n key={b.label}\n x={b.x0}\n y={0}\n width={b.w}\n height={BASE}\n className={b.spec.svgFill}\n opacity={0.8}\n />\n ))}\n </g>\n <path\n d={`M ${pts.join(' L ')}`}\n fill=\"none\"\n strokeWidth={1}\n vectorEffect=\"non-scaling-stroke\"\n className={tone.isLight ? 'stroke-neutral-900' : 'stroke-white'}\n />\n <line\n x1={0}\n y1={BASE}\n x2={100}\n y2={BASE}\n strokeWidth={0.5}\n vectorEffect=\"non-scaling-stroke\"\n className={\n tone.isLight ? 'stroke-neutral-400' : 'stroke-white/25'\n }\n />\n </svg>\n </div>\n {/* dir=\"ltr\": the label strip must track the LTR adoption-curve bands\n above it; letting it reverse in RTL misaligns labels and colors. */}\n <div aria-hidden=\"true\" dir=\"ltr\" className=\"mt-2 flex w-full\">\n {bands.map((b) => (\n <div\n key={b.label}\n className=\"min-w-0 px-1 text-center\"\n style={{ flexBasis: `${b.w}%` }}\n >\n <div\n className={cn('text-sm font-bold sm:text-base', b.spec.text)}\n >\n {b.pct}\n </div>\n <div\n className={cn(\n 'truncate text-[0.7rem] tracking-wide uppercase sm:text-xs',\n tone.muted\n )}\n >\n {b.label}\n </div>\n </div>\n ))}\n </div>\n {slide.marker && (\n <div\n className=\"absolute bottom-0 z-20 -translate-x-1/2 text-center\"\n // rtl-ignore -- marker anchored to LTR bar-chart axis coordinates\n style={{ left: `${slide.marker.atPct}%` }}\n >\n <div\n aria-hidden=\"true\"\n className={cn('mx-auto h-4 w-px', hi.fill)}\n />\n <span\n className={cn(\n 'mt-1 inline-block rounded-full border px-2.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase',\n hi.soft,\n hi.border,\n hi.text\n )}\n >\n {slide.marker.label}\n </span>\n </div>\n )}\n </div>\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </SlideFrame>\n );\n}\n\n// --- architecture diagram ----------------------------------------------------------\n\nexport function DiagramRenderer({\n slide,\n index,\n}: SlideRendererProps<DiagramSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'deep');\n const center = new Map(slide.nodes.map((n) => [n.id, n]));\n const left = slide.callouts?.filter((c) => c.side === 'left') ?? [];\n const right = slide.callouts?.filter((c) => c.side === 'right') ?? [];\n const cols =\n left.length && right.length\n ? 'lg:grid-cols-[minmax(0,1fr)_minmax(0,2.4fr)_minmax(0,1fr)]'\n : right.length\n ? 'lg:grid-cols-[minmax(0,2.7fr)_minmax(0,1.25fr)]'\n : left.length\n ? 'lg:grid-cols-[minmax(0,1.25fr)_minmax(0,2.7fr)]'\n : '';\n const stageBg = tone.isLight ? 'bg-white' : 'bg-neutral-900';\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div className={cn('mt-8', cols && cn('grid items-center gap-6', cols))}>\n {left.length > 0 && <Callouts callouts={left} end />}\n <div\n {...reveal(3)}\n className=\"mie-deck-reveal relative mx-auto h-[clamp(260px,40vh,440px)] w-full max-w-3xl\"\n >\n {slide.boundaries?.map((b) => {\n const xs = b.nodes.map((id) => center.get(id)?.x ?? 50);\n const ys = b.nodes.map((id) => center.get(id)?.y ?? 50);\n const l = Math.min(...xs) - 13;\n const t = Math.min(...ys) - 17;\n const spec = accent(b.accent ?? 'primary', tone.isLight);\n return (\n <div\n key={b.label}\n className={cn(\n 'absolute rounded-2xl border border-dashed',\n tone.hairline\n )}\n style={{\n // rtl-ignore -- group outline shares the SVG edge coordinate space\n left: `${l}%`,\n top: `${t}%`,\n width: `${Math.max(...xs) + 13 - l}%`,\n height: `${Math.max(...ys) + 17 - t}%`,\n }}\n >\n <span\n className={cn(\n 'absolute start-4 -top-3 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-semibold tracking-wide uppercase',\n stageBg,\n spec.border,\n spec.text\n )}\n >\n {b.label}\n </span>\n </div>\n );\n })}\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n className=\"absolute inset-0 size-full\"\n >\n {slide.edges.map((e) => {\n const a = center.get(e.from);\n const b = center.get(e.to);\n if (!a || !b) return null;\n return (\n <line\n key={`${e.from}-${e.to}`}\n x1={a.x}\n y1={a.y}\n x2={b.x}\n y2={b.y}\n strokeWidth={1.2}\n strokeDasharray={e.dashed ? '4 3' : undefined}\n vectorEffect=\"non-scaling-stroke\"\n className={\n e.accent\n ? accent(e.accent, tone.isLight).svgStroke\n : tone.isLight\n ? 'stroke-neutral-400'\n : 'stroke-white/30'\n }\n />\n );\n })}\n </svg>\n {slide.edges.map((e, i) => {\n const a = center.get(e.from);\n const b = center.get(e.to);\n if (!a || !b || !e.flow) return null;\n return (\n <span\n key={`flow-${e.from}-${e.to}`}\n aria-hidden=\"true\"\n className={cn(\n 'mie-deck-flow absolute size-2 -translate-x-1/2 -translate-y-1/2 rounded-full',\n accent(e.accent ?? 'accent', tone.isLight).fill\n )}\n style={\n {\n '--mie-from-x': `${a.x}%`,\n '--mie-from-y': `${a.y}%`,\n '--mie-to-x': `${b.x}%`,\n '--mie-to-y': `${b.y}%`,\n animationDelay: `${i * 0.5}s`,\n } as React.CSSProperties\n }\n />\n );\n })}\n {slide.edges.map((e) => {\n const a = center.get(e.from);\n const b = center.get(e.to);\n if (!a || !b || !e.label) return null;\n const at = e.labelAt ?? 0.5;\n return (\n <span\n key={`label-${e.from}-${e.to}`}\n className={cn(\n 'absolute z-10 -translate-x-1/2 -translate-y-1/2 rounded-md border px-1.5 py-0.5 text-[0.6rem] font-medium whitespace-nowrap',\n stageBg,\n tone.hairline,\n tone.muted\n )}\n style={{\n // rtl-ignore -- edge label interpolated in the SVG line coordinate space\n left: `${a.x + (b.x - a.x) * at}%`,\n top: `${a.y + (b.y - a.y) * at}%`,\n }}\n >\n {e.label}\n </span>\n );\n })}\n {slide.nodes.map((node) => {\n const spec = accent(node.accent ?? 'primary', tone.isLight);\n return (\n <div\n key={node.id}\n className=\"absolute z-[5] -translate-x-1/2 -translate-y-1/2\"\n style={{\n // rtl-ignore -- node positioned in the SVG edge coordinate space\n left: `${node.x}%`,\n top: `${node.y}%`,\n width: `${node.w ?? 20}%`,\n }}\n >\n <div\n className={cn(\n 'flex flex-col items-center gap-1.5 rounded-xl border px-2 py-3 text-center shadow-lg',\n stageBg,\n spec.border\n )}\n >\n {node.image ? (\n <TemplateImg\n {...node.image}\n components={components}\n className=\"h-7 w-auto object-contain sm:h-9\"\n />\n ) : (\n node.icon && (\n <DeckIcon\n name={node.icon}\n className={cn('size-5 sm:size-6', spec.text)}\n />\n )\n )}\n <span className=\"text-[0.62rem] leading-tight font-semibold sm:text-xs\">\n {node.label}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n {right.length > 0 && <Callouts callouts={right} />}\n </div>\n </SlideFrame>\n );\n}\n\nfunction Callouts({\n callouts,\n end,\n}: {\n callouts: NonNullable<DiagramSlide['callouts']>;\n end?: boolean;\n}) {\n const tone = useTone();\n const a = accent('accent', tone.isLight);\n return (\n <div className={cn('flex flex-col gap-4', end && 'lg:text-end')}>\n {callouts.map((c, i) => (\n <Card key={c.text} i={4 + i} className=\"p-4\">\n {c.lead && (\n <div className={cn('text-sm font-bold', a.text)}>{c.lead}</div>\n )}\n <p className={cn('mt-1 text-sm leading-snug', tone.muted)}>\n {c.text}\n </p>\n </Card>\n ))}\n </div>\n );\n}\n","import * as React from 'react';\nimport { ChevronRight, ExternalLink, Play } from 'lucide-react';\nimport { cn } from '../../../utils/cn';\nimport { TemplateImg, safeHref } from '../../../templates/Section';\nimport { useDeck, useTone } from '../DeckContext';\nimport {\n Card,\n CountUp,\n DeckIcon,\n SlideHeader,\n SourceLink,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { accent, toneOf } from '../tones';\nimport type {\n Certification,\n CertificationGridSlide,\n ShowcaseSlide,\n SlideRendererProps,\n} from '../types';\n\n// --- certification grid ------------------------------------------------------------\n\nfunction BadgeCard({ cert, i }: { cert: Certification; i: number }) {\n const { components } = useDeck();\n const tone = useTone();\n const a = accent(cert.accent ?? 'accent', tone.isLight);\n return (\n <Card i={i} className=\"flex flex-col items-center p-3 text-center\">\n {cert.image ? (\n <div className=\"mb-2 flex h-11 items-center justify-center rounded-lg bg-white px-2.5\">\n <TemplateImg\n {...cert.image}\n components={components}\n className=\"h-7 w-auto max-w-[72px] object-contain\"\n />\n </div>\n ) : (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'mb-2 flex size-10 items-center justify-center rounded-lg border text-sm font-extrabold',\n a.soft,\n a.border,\n a.text\n )}\n >\n {cert.badge ?? cert.name.slice(0, 3).toUpperCase()}\n </div>\n )}\n <div className=\"text-[0.8rem] leading-tight font-bold\">{cert.name}</div>\n {cert.issuer && (\n <div\n className={cn(\n 'mt-0.5 text-[0.62rem] tracking-wide uppercase',\n tone.muted\n )}\n >\n {cert.issuer}\n </div>\n )}\n {cert.source && <SourceLink source={cert.source} className=\"mt-1.5\" />}\n </Card>\n );\n}\n\nexport function CertificationGridRenderer({\n slide,\n index,\n}: SlideRendererProps<CertificationGridSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'deep');\n const count = slide.certifications.length;\n const featured = slide.featured;\n const cols = featured\n ? 'sm:grid-cols-3 lg:grid-cols-4'\n : count >= 5\n ? 'sm:grid-cols-3 lg:grid-cols-5'\n : count === 4\n ? 'sm:grid-cols-2 lg:grid-cols-4'\n : 'sm:grid-cols-3';\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <div\n className={\n featured\n ? 'mt-7 grid items-center gap-8 lg:grid-cols-[auto_minmax(0,1fr)] lg:gap-12'\n : 'mt-6'\n }\n >\n {featured && (\n <div\n {...reveal(3)}\n className=\"mie-deck-reveal flex flex-col items-center text-center\"\n >\n <div className=\"flex size-40 items-center justify-center rounded-full bg-white p-2 shadow-2xl sm:size-48\">\n {featured.image ? (\n <TemplateImg\n {...featured.image}\n components={components}\n className=\"size-full object-contain\"\n />\n ) : (\n <span className=\"text-2xl font-extrabold text-neutral-900\">\n {featured.badge ?? featured.name}\n </span>\n )}\n </div>\n <p className=\"mt-4 font-semibold\">{featured.name}</p>\n {featured.description && (\n <p\n className={cn(\n 'mt-1 max-w-[15rem] text-sm leading-snug',\n tone.muted\n )}\n >\n {featured.description}\n </p>\n )}\n {featured.source && (\n <SourceLink source={featured.source} className=\"mt-2.5\" />\n )}\n </div>\n )}\n <div className={cn('grid grid-cols-2 gap-3', cols)}>\n {slide.certifications.map((cert, i) => (\n <BadgeCard key={cert.name} cert={cert} i={4 + i} />\n ))}\n </div>\n </div>\n {slide.footnote && (\n <SourceLink source={slide.footnote} className=\"mt-6\" />\n )}\n </SlideFrame>\n );\n}\n\n// --- showcase ----------------------------------------------------------------------\n\nconst VISIBLE = 3;\n\nfunction ShowcaseCategory({\n category,\n i,\n}: {\n category: ShowcaseSlide['categories'][number];\n i: number;\n}) {\n const { labels } = useDeck();\n const tone = useTone();\n const a = accent('primary', tone.isLight);\n const [open, setOpen] = React.useState(false);\n const listId = React.useId();\n const hidden = category.items.length - VISIBLE;\n return (\n <Card i={i} className=\"p-4\">\n <h3\n className={cn(\n 'mb-3 flex items-center gap-2 text-xs font-bold tracking-wider uppercase',\n a.text\n )}\n >\n {category.icon && <DeckIcon name={category.icon} className=\"size-4\" />}\n {category.title}\n <span className={cn('ms-auto tabular-nums', tone.muted)}>\n {category.items.length}\n </span>\n </h3>\n <ul id={listId} className=\"space-y-1\">\n {(open ? category.items : category.items.slice(0, VISIBLE)).map(\n (item) => (\n <li\n key={item}\n className={cn('flex gap-2 text-xs leading-relaxed', tone.muted)}\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"mt-0.5 size-3 flex-none rtl:-scale-x-100\"\n />\n {item}\n </li>\n )\n )}\n </ul>\n {hidden > 0 && (\n <button\n type=\"button\"\n aria-expanded={open}\n aria-controls={listId}\n onClick={() => setOpen((o) => !o)}\n className={cn(\n 'mt-2 text-xs font-medium underline-offset-2 hover:underline',\n a.text\n )}\n >\n {open ? labels.less : labels.more(hidden)}\n </button>\n )}\n </Card>\n );\n}\n\nexport function ShowcaseRenderer({\n slide,\n index,\n}: SlideRendererProps<ShowcaseSlide>) {\n const { components, labels } = useDeck();\n const tone = toneOf(slide, 'deep');\n const a = accent('accent', tone.isLight);\n const video = slide.video;\n // Slide JSON is content data; a video link with an executable scheme is dropped.\n const videoHref = video ? safeHref(video.href) : undefined;\n return (\n <SlideFrame slide={slide} index={index} tone=\"deep\">\n <div className=\"mb-6 flex flex-col items-start gap-4 sm:flex-row sm:items-end sm:justify-between\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n {slide.total && (\n <div\n {...reveal(2)}\n className={cn(\n 'mie-deck-reveal flex flex-none items-baseline gap-2 rounded-full border px-5 py-2',\n a.soft,\n a.border\n )}\n >\n <span className={cn('text-3xl font-bold', a.text)}>\n <CountUp value={slide.total.value} />\n </span>\n <span className={cn('text-sm', tone.muted)}>\n {slide.total.label}\n </span>\n </div>\n )}\n </div>\n <div\n className={cn('grid gap-6', videoHref && 'lg:grid-cols-[1fr_300px]')}\n >\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {slide.categories.map((cat, i) => (\n <ShowcaseCategory key={cat.title} category={cat} i={3 + i} />\n ))}\n </div>\n {video && videoHref && (\n <a\n href={videoHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...reveal(5)}\n className={cn(\n 'mie-deck-reveal group flex flex-col overflow-hidden rounded-xl border lg:self-start',\n tone.hairline,\n tone.card\n )}\n >\n <div className=\"relative flex aspect-video items-center justify-center overflow-hidden bg-neutral-900\">\n {video.thumbnail && (\n <TemplateImg\n {...video.thumbnail}\n components={components}\n className=\"absolute inset-0 size-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n )}\n <div className=\"absolute inset-0 bg-black/30\" />\n <span className=\"bg-primary-600 relative flex size-14 items-center justify-center rounded-full border-2 border-white/30 shadow-xl transition-transform group-hover:scale-110\">\n <Play\n aria-hidden=\"true\"\n className=\"ms-1 size-6 fill-white text-white\"\n />\n </span>\n {video.duration && (\n <span className=\"absolute end-2 bottom-2 rounded bg-black/60 px-2 py-0.5 font-mono text-xs text-white tabular-nums\">\n {video.duration}\n </span>\n )}\n </div>\n <div className=\"p-4\">\n <p className=\"mb-1 text-sm font-semibold\">{video.title}</p>\n {video.speaker && (\n <p className={cn('mb-2 text-xs', tone.muted)}>\n {video.speaker}\n </p>\n )}\n <span\n className={cn(\n 'inline-flex items-center gap-1 text-xs font-medium',\n a.text\n )}\n >\n {video.cta ?? labels.watchVideo}\n <ExternalLink aria-hidden=\"true\" className=\"size-3\" />\n </span>\n </div>\n </a>\n )}\n </div>\n </SlideFrame>\n );\n}\n","import * as React from 'react';\nimport { ArrowRight, Check, Copy } from 'lucide-react';\nimport { cn } from '../../../utils/cn';\nimport { TemplateAnchor, TemplateImg } from '../../../templates/Section';\nimport { useDeck, useTone } from '../DeckContext';\nimport {\n Bullet,\n Eyebrow,\n HighlightFigure,\n SlideHeader,\n SlideTitle,\n SourceLink,\n Subtitle,\n reveal,\n} from '../primitives';\nimport { SlideFrame } from '../SlideFrame';\nimport { accent, toneOf } from '../tones';\nimport type {\n BulletListSlide,\n ConclusionSlide,\n CoverSlide,\n DeckLink,\n DefinitionListSlide,\n ImageSlide,\n OutlineEntry,\n QuoteSlide,\n SectionDividerSlide,\n SlideRendererProps,\n TableOfContentsSlide,\n} from '../types';\n\nfunction Highlights({\n items,\n}: {\n items: Array<{ value: string; label: string }>;\n}) {\n const r = reveal(3);\n return (\n <div\n className={cn(\n r.className,\n 'mt-10 flex flex-wrap items-center justify-center gap-x-10 gap-y-6'\n )}\n style={r.style}\n >\n {items.map((h) => (\n <HighlightFigure key={h.label} value={h.value} label={h.label} />\n ))}\n </div>\n );\n}\n\nexport function CoverRenderer({\n slide,\n index,\n}: SlideRendererProps<CoverSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'brand');\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\" width=\"md\">\n <div className=\"flex flex-col items-center text-center\">\n {slide.image && (\n <TemplateImg\n {...slide.image}\n priority={index === 0}\n components={components}\n className=\"mb-8 h-32 w-auto object-contain sm:h-40\"\n />\n )}\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n <SlideTitle size=\"xl\">{slide.title}</SlideTitle>\n {slide.subtitle && (\n <Subtitle className=\"mx-auto sm:text-xl\">{slide.subtitle}</Subtitle>\n )}\n {slide.highlights && slide.highlights.length > 0 && (\n <Highlights items={slide.highlights} />\n )}\n {(slide.dateline || slide.preparedBy) && (\n <p className={cn('mt-10 text-sm', tone.muted)}>\n {[slide.preparedBy, slide.dateline].filter(Boolean).join(' · ')}\n </p>\n )}\n </div>\n </SlideFrame>\n );\n}\n\nexport function SectionDividerRenderer({\n slide,\n index,\n}: SlideRendererProps<SectionDividerSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'glow');\n const a = accent('accent', tone.isLight);\n const hasImage = !!slide.image;\n return (\n <SlideFrame slide={slide} index={index} tone=\"glow\">\n <div\n className={\n hasImage\n ? 'grid items-center gap-10 md:grid-cols-2 lg:gap-16'\n : 'flex flex-col items-center text-center'\n }\n >\n {slide.image && (\n <div {...reveal(0)} className=\"mie-deck-reveal order-2 md:order-1\">\n <TemplateImg\n {...slide.image}\n components={components}\n className=\"mx-auto aspect-[3/4] w-full max-w-sm rounded-2xl object-cover\"\n />\n </div>\n )}\n <div className={hasImage ? 'order-1 md:order-2' : 'max-w-4xl'}>\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n {slide.statement && (\n <p\n {...reveal(1)}\n className=\"mie-deck-reveal text-6xl font-extrabold tracking-tight text-balance sm:text-7xl lg:text-8xl\"\n >\n {slide.statement}\n </p>\n )}\n <SlideTitle\n size={slide.statement ? 'md' : 'lg'}\n className={cn(slide.statement && 'mt-3 font-semibold opacity-80')}\n >\n {slide.title}\n </SlideTitle>\n {slide.description && (\n <Subtitle className={cn(!hasImage && 'mx-auto')}>\n {slide.description}\n </Subtitle>\n )}\n <div\n aria-hidden=\"true\"\n className={cn(\n 'mt-8 h-1 w-24 rounded-full',\n a.fill,\n !hasImage && 'mx-auto'\n )}\n />\n </div>\n </div>\n </SlideFrame>\n );\n}\n\nexport function TableOfContentsRenderer({\n slide,\n index,\n}: SlideRendererProps<TableOfContentsSlide>) {\n const { slides, activeSlide, goTo, labels } = useDeck();\n const tone = toneOf(slide, 'brand');\n const a = accent('accent', tone.isLight);\n const sections =\n slide.sections ??\n Object.entries(\n slides.reduce<Record<string, OutlineEntry[]>>((acc, s, i) => {\n if (i === index || !('title' in s) || !s.title) return acc;\n (acc[s.section ?? ''] ??= []).push({\n number: i + 1,\n title: s.navLabel ?? s.title,\n });\n return acc;\n }, {})\n ).map(([heading, items]) => ({ heading: heading || undefined, items }));\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.description}\n />\n <nav aria-label={labels.outline} className=\"mt-6 md:columns-2 md:gap-12\">\n {sections.map((section, s) => (\n <div\n key={section.heading ?? s}\n {...reveal(3 + s)}\n className=\"mie-deck-reveal mb-5 break-inside-avoid\"\n >\n {section.heading && (\n <h3\n className={cn(\n 'mb-1.5 text-xs font-semibold tracking-[0.2em] uppercase',\n a.text\n )}\n >\n {section.heading}\n </h3>\n )}\n <ul className=\"flex flex-col gap-0.5\">\n {section.items.map((entry) => {\n const target = entry.number - 1;\n const current = target === activeSlide;\n return (\n <li key={entry.number}>\n <button\n type=\"button\"\n onClick={() => goTo(target)}\n aria-current={current ? 'true' : undefined}\n className={cn(\n 'flex w-full items-baseline gap-3 rounded-lg px-3 py-1 text-start transition-colors',\n current\n ? a.soft\n : tone.isLight\n ? 'hover:bg-neutral-100'\n : 'hover:bg-white/5'\n )}\n >\n <span\n className={cn(\n 'text-sm font-semibold tabular-nums',\n a.text\n )}\n >\n {String(entry.number).padStart(2, '0')}\n </span>\n <span>\n {entry.title}\n {entry.subtitle && (\n <span className={cn('block text-xs', tone.muted)}>\n {entry.subtitle}\n </span>\n )}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </nav>\n </SlideFrame>\n );\n}\n\nexport function BulletListRenderer({\n slide,\n index,\n}: SlideRendererProps<BulletListSlide>) {\n const tone = toneOf(slide, 'brand');\n const r = reveal(3);\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\" width=\"lg\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <ul\n className={cn(r.className, 'mt-10 flex flex-col gap-4')}\n style={r.style}\n >\n {slide.items.map((item, i) => (\n <Bullet key={i} item={item} />\n ))}\n </ul>\n {slide.note && (\n <p className={cn('mt-8 text-sm italic', tone.muted)}>{slide.note}</p>\n )}\n </SlideFrame>\n );\n}\n\nexport function QuoteRenderer({\n slide,\n index,\n}: SlideRendererProps<QuoteSlide>) {\n const tone = toneOf(slide, 'brand');\n const a = accent('accent', tone.isLight);\n return (\n <SlideFrame\n slide={{\n ...slide,\n navLabel: slide.navLabel ?? slide.title ?? slide.attribution,\n }}\n index={index}\n tone=\"brand\"\n width=\"md\"\n >\n <figure className=\"flex flex-col items-center text-center\">\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n {slide.title && (\n <SlideTitle size=\"md\" className=\"mb-6\">\n {slide.title}\n </SlideTitle>\n )}\n <span\n aria-hidden=\"true\"\n className={cn('text-7xl leading-none sm:text-8xl', a.text)}\n >\n “\n </span>\n <blockquote\n {...reveal(2)}\n className=\"mie-deck-reveal -mt-4 text-2xl leading-snug font-semibold text-balance sm:text-3xl lg:text-4xl\"\n >\n {slide.quote}\n </blockquote>\n {(slide.attribution || slide.role) && (\n <figcaption {...reveal(3)} className=\"mie-deck-reveal mt-8\">\n {slide.attribution && (\n <span className={cn('text-lg font-semibold', a.text)}>\n {slide.attribution}\n </span>\n )}\n {slide.role && (\n <span className={cn('block text-sm', tone.muted)}>\n {slide.role}\n </span>\n )}\n </figcaption>\n )}\n {slide.source && <SourceLink source={slide.source} className=\"mt-5\" />}\n </figure>\n </SlideFrame>\n );\n}\n\nexport function ImageRenderer({\n slide,\n index,\n}: SlideRendererProps<ImageSlide>) {\n const { components } = useDeck();\n const tone = toneOf(slide, 'ink');\n return (\n <SlideFrame slide={slide} index={index} tone=\"ink\">\n <SlideTitle className=\"mb-8 text-center\">{slide.title}</SlideTitle>\n <figure {...reveal(2)} className=\"mie-deck-reveal\">\n <TemplateImg\n {...slide.image}\n components={components}\n className=\"mx-auto max-h-[65dvh] w-auto rounded-2xl object-contain shadow-2xl\"\n />\n {slide.caption && (\n <figcaption className={cn('mt-4 text-center text-sm', tone.muted)}>\n {slide.caption}\n </figcaption>\n )}\n </figure>\n </SlideFrame>\n );\n}\n\nexport function DefinitionListRenderer({\n slide,\n index,\n}: SlideRendererProps<DefinitionListSlide>) {\n const tone = toneOf(slide, 'brand');\n const a = accent('accent', tone.isLight);\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\">\n <SlideHeader\n eyebrow={slide.eyebrow}\n title={slide.title}\n subtitle={slide.subtitle}\n />\n <dl className=\"mt-6 flex flex-col gap-2\">\n {slide.terms.map((term, i) => {\n const initial = term.term.charAt(0);\n const r = reveal(3 + i);\n return (\n // A <dl> group div may contain only <dt>/<dd> (axe dlitem).\n <div\n key={term.term}\n className={cn(\n r.className,\n 'rounded-xl border p-3',\n tone.card,\n tone.hairline\n )}\n style={r.style}\n >\n <dt className=\"flex items-center gap-4 text-base font-bold sm:text-lg\">\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-10 flex-none items-center justify-center rounded-lg border text-xl font-extrabold',\n a.soft,\n a.border,\n a.text\n )}\n >\n {initial}\n </span>\n {term.term}\n </dt>\n <dd\n className={cn(\n 'ms-14 mt-0.5 text-sm leading-relaxed',\n tone.muted\n )}\n >\n {term.lead && (\n <span className={cn('font-semibold', tone.text)}>\n {term.lead}{' '}\n </span>\n )}\n {term.definition}\n </dd>\n </div>\n );\n })}\n </dl>\n {slide.source && <SourceLink source={slide.source} className=\"mt-4\" />}\n </SlideFrame>\n );\n}\n\nfunction CopyLink({ url }: { url: string }) {\n const { labels } = useDeck();\n const tone = useTone();\n const [copied, setCopied] = React.useState(false);\n React.useEffect(() => {\n if (!copied) return;\n const t = setTimeout(() => setCopied(false), 2000);\n return () => clearTimeout(t);\n }, [copied]);\n return (\n <div\n className={cn(\n 'mt-8 flex w-full max-w-xl items-center gap-2 rounded-xl border p-2',\n tone.card,\n tone.hairline\n )}\n >\n <code className=\"min-w-0 flex-1 truncate px-2 text-start text-sm\">\n {url}\n </code>\n <button\n type=\"button\"\n onClick={() =>\n navigator.clipboard?.writeText(url).then(\n () => setCopied(true),\n () => {}\n )\n }\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm font-semibold',\n tone.isLight\n ? 'bg-neutral-900 text-white'\n : 'bg-white text-neutral-900'\n )}\n >\n {copied ? (\n <Check aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <Copy aria-hidden=\"true\" className=\"size-4\" />\n )}\n <span aria-live=\"polite\">{copied ? labels.copied : labels.copy}</span>\n </button>\n </div>\n );\n}\n\nfunction CtaButton({ link, primary }: { link: DeckLink; primary?: boolean }) {\n const { components } = useDeck();\n const tone = useTone();\n return (\n <TemplateAnchor\n href={link.href}\n trackingId={link.trackingId}\n components={components}\n className={cn(\n 'inline-flex items-center gap-2 rounded-full px-6 py-3 text-sm font-semibold transition-colors',\n primary\n ? 'bg-accent text-neutral-950 hover:opacity-90'\n : cn(\n 'border',\n tone.hairline,\n tone.isLight ? 'hover:bg-neutral-100' : 'hover:bg-white/10'\n )\n )}\n >\n {link.label}\n {primary && (\n <ArrowRight aria-hidden=\"true\" className=\"size-4 rtl:-scale-x-100\" />\n )}\n </TemplateAnchor>\n );\n}\n\nexport function ConclusionRenderer({\n slide,\n index,\n}: SlideRendererProps<ConclusionSlide>) {\n const tone = toneOf(slide, 'brand');\n return (\n <SlideFrame slide={slide} index={index} tone=\"brand\" width=\"sm\">\n <div className=\"flex flex-col items-center text-center\">\n {slide.eyebrow && <Eyebrow>{slide.eyebrow}</Eyebrow>}\n <SlideTitle>{slide.title}</SlideTitle>\n {slide.body && <Subtitle className=\"mx-auto\">{slide.body}</Subtitle>}\n {slide.highlights && slide.highlights.length > 0 && (\n <Highlights items={slide.highlights} />\n )}\n {slide.takeaways && slide.takeaways.length > 0 && (\n <ul\n {...reveal(4)}\n className=\"mie-deck-reveal mt-10 flex flex-col gap-3 text-start\"\n >\n {slide.takeaways.map((t) => (\n <Bullet key={t} item={t} />\n ))}\n </ul>\n )}\n {slide.share && (\n <>\n {slide.share.instructions && (\n <p className={cn('mt-10 text-sm', tone.muted)}>\n {slide.share.instructions}\n </p>\n )}\n <CopyLink url={slide.share.url} />\n </>\n )}\n {(slide.cta || slide.secondaryCta) && (\n <div\n {...reveal(5)}\n className=\"mie-deck-reveal mt-12 flex flex-wrap items-center justify-center gap-4\"\n >\n {slide.cta && <CtaButton link={slide.cta} primary />}\n {slide.secondaryCta && <CtaButton link={slide.secondaryCta} />}\n </div>\n )}\n {(slide.preparedBy || slide.dateline) && (\n <p className={cn('mt-10 text-sm', tone.muted)}>\n {[slide.preparedBy, slide.dateline].filter(Boolean).join(' · ')}\n </p>\n )}\n {slide.confidentiality && (\n <p\n className={cn('mt-3 text-xs tracking-wider uppercase', tone.muted)}\n >\n {slide.confidentiality}\n </p>\n )}\n </div>\n </SlideFrame>\n );\n}\n","import type * as React from 'react';\nimport {\n BreakdownRenderer,\n CardsRenderer,\n ChartRenderer,\n ComparisonTableRenderer,\n FeatureHighlightRenderer,\n ImpactTableRenderer,\n MetricsRenderer,\n RankedListRenderer,\n TabsRenderer,\n} from './slides/data';\nimport {\n AdoptionCurveRenderer,\n CycleRenderer,\n DiagramRenderer,\n RoadmapRenderer,\n} from './slides/diagrams';\nimport { CertificationGridRenderer, ShowcaseRenderer } from './slides/grids';\nimport {\n BulletListRenderer,\n ConclusionRenderer,\n CoverRenderer,\n DefinitionListRenderer,\n ImageRenderer,\n QuoteRenderer,\n SectionDividerRenderer,\n TableOfContentsRenderer,\n} from './slides/narrative';\nimport type { SlideRendererProps, SlideType } from './types';\n\n/** The built-in renderer for every slide type except `custom`. */\nexport const slideRenderers = {\n cover: CoverRenderer,\n 'section-divider': SectionDividerRenderer,\n 'table-of-contents': TableOfContentsRenderer,\n 'bullet-list': BulletListRenderer,\n quote: QuoteRenderer,\n image: ImageRenderer,\n 'definition-list': DefinitionListRenderer,\n conclusion: ConclusionRenderer,\n metrics: MetricsRenderer,\n chart: ChartRenderer,\n 'feature-highlight': FeatureHighlightRenderer,\n 'comparison-table': ComparisonTableRenderer,\n 'impact-table': ImpactTableRenderer,\n cards: CardsRenderer,\n 'ranked-list': RankedListRenderer,\n breakdown: BreakdownRenderer,\n cycle: CycleRenderer,\n roadmap: RoadmapRenderer,\n 'adoption-curve': AdoptionCurveRenderer,\n diagram: DiagramRenderer,\n 'certification-grid': CertificationGridRenderer,\n showcase: ShowcaseRenderer,\n tabs: TabsRenderer,\n} satisfies Record<\n Exclude<SlideType, 'custom'>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each renderer narrows its slide\n React.ComponentType<SlideRendererProps<any>>\n>;\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { TemplateAnchor, TemplateImg } from '../../templates/Section';\nimport type { TemplateIconRegistry } from '../../templates/icons';\nimport type { TemplateComponents } from '../../templates/types';\nimport {\n Controls,\n DotNav,\n KeyboardHints,\n MobileNav,\n OutlineDialog,\n ProgressBar,\n SlideCounter,\n} from './DeckChrome';\nimport { DeckProvider, type DeckContextValue } from './DeckContext';\nimport { defaultDeckLabels, type DeckLabels } from './labels';\nimport { slideRenderers } from './registry';\nimport { slideAnchor } from './SlideFrame';\nimport type {\n DeckImage,\n DeckLink,\n DeckMeta,\n Slide,\n SlideRendererProps,\n} from './types';\n\nexport interface DeckProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n slides: Slide[];\n meta: DeckMeta;\n /** A way back to the site, since a full-screen deck hides the site's navigation. */\n home?: DeckLink & { logo?: DeckImage };\n /** Fires when the visible slide changes \\u2014 wire analytics here. */\n onSlideChange?: (slide: Slide, index: number) => void;\n /**\n * Site renderers: a slide type's name overrides the built-in renderer, and\n * any other name serves `{ type: 'custom', component }` slides.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each renderer narrows its slide\n renderers?: Record<string, React.ComponentType<SlideRendererProps<any>>>;\n /** Components for `{ type: 'custom', component }` graphics, e.g. a map. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each graphic owns its props\n graphics?: Record<string, React.ComponentType<any>>;\n /** Site image and link components (e.g. `next/image`, `next/link`). */\n components?: TemplateComponents;\n /** Extra icon tokens for slide `icon` fields. */\n icons?: TemplateIconRegistry;\n labels?: DeckLabels;\n /** BCP 47 locale for number formatting. */\n locale?: string;\n /** Mirror the visible slide in `location.hash` so it can be linked. Default `true`. */\n syncHash?: boolean;\n}\n\nconst typingTarget = (el: globalThis.EventTarget | null) =>\n el instanceof HTMLElement &&\n (['INPUT', 'TEXTAREA', 'SELECT'].includes(el.tagName) ||\n el.isContentEditable ||\n el.getAttribute('role') === 'tab');\n\n/** Space must activate a focused button, not advance the deck. */\nconst spaceActivates = (el: globalThis.EventTarget | null) =>\n el instanceof HTMLElement &&\n (el.tagName === 'BUTTON' || el.getAttribute('role') === 'button');\n\n/**\n * A full-viewport, scroll-snapping slide deck built from plain JSON slides:\n * keyboard, swipe, dot and outline navigation, deep links, fullscreen and\n * print. Each slide type has a built-in renderer; sites add their own through\n * `renderers` and `graphics`.\n */\nexport const Deck = React.forwardRef<HTMLDivElement, DeckProps>(\n (\n {\n slides,\n meta,\n home,\n onSlideChange,\n renderers,\n graphics,\n components,\n icons,\n labels: labelOverrides,\n locale,\n syncHash = true,\n className,\n ...rest\n },\n ref\n ) => {\n const rootRef = React.useRef<HTMLDivElement>(null);\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const touchStart = React.useRef<number | null>(null);\n const [active, setActive] = React.useState(0);\n const [ready, setReady] = React.useState(false);\n const [outline, setOutline] = React.useState(false);\n const [fullscreen, setFullscreen] = React.useState(false);\n const [hintPulse, setHintPulse] = React.useState(0);\n const labels = React.useMemo(\n () => ({ ...defaultDeckLabels, ...labelOverrides }),\n [labelOverrides]\n );\n const total = slides.length;\n React.useImperativeHandle(ref, () => rootRef.current as HTMLDivElement);\n\n const slideEl = React.useCallback(\n (i: number) =>\n scrollRef.current?.querySelector<HTMLElement>(\n `[data-slot=\"deck-slide\"][data-index=\"${i}\"]`\n ),\n []\n );\n\n const goTo = React.useCallback(\n (i: number) => {\n const clamped = Math.max(0, Math.min(i, total - 1));\n const reduce = window.matchMedia?.(\n '(prefers-reduced-motion: reduce)'\n ).matches;\n slideEl(clamped)?.scrollIntoView({\n behavior: reduce ? 'auto' : 'smooth',\n });\n },\n [slideEl, total]\n );\n\n // Track the visible slide; mark slides seen so their content reveals once.\n React.useEffect(() => {\n const root = scrollRef.current;\n if (!root) return;\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n // A slide taller than twice the viewport never reaches ratio\n // 0.5; covering half the viewport also counts as visible.\n const rootHeight = root.clientHeight || window.innerHeight;\n if (\n entry.intersectionRatio < 0.5 &&\n entry.intersectionRect.height < rootHeight / 2\n )\n continue;\n const el = entry.target as HTMLElement;\n el.dataset.seen = '';\n setActive(Number(el.dataset.index));\n }\n },\n { root, threshold: [0.1, 0.25, 0.5] }\n );\n root\n .querySelectorAll('[data-slot=\"deck-slide\"]')\n .forEach((el) => observer.observe(el));\n setReady(true);\n return () => observer.disconnect();\n }, [total]);\n\n // Open at the slide named in the URL hash.\n React.useEffect(() => {\n const raw = window.location.hash.slice(1);\n let hash = raw;\n try {\n hash = decodeURIComponent(raw);\n } catch {\n // Malformed percent-encoding: match against the raw hash.\n }\n if (!hash) return;\n const i = slides.findIndex((s, n) => slideAnchor(s, n) === hash);\n if (i > 0) requestAnimationFrame(() => slideEl(i)?.scrollIntoView());\n // Only on mount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const reportedSlide = React.useRef(-1);\n React.useEffect(() => {\n const slide = slides[active];\n if (!slide) return;\n if (syncHash && ready) {\n const hash = `#${slideAnchor(slide, active)}`;\n if (window.location.hash !== hash)\n window.history.replaceState(window.history.state, '', hash);\n }\n // The effect reruns when `ready` flips; report each slide once.\n if (reportedSlide.current !== active) {\n reportedSlide.current = active;\n onSlideChange?.(slide, active);\n }\n // Report changes of slide, not of callback identity.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active, slides, syncHash, ready]);\n\n const toggleFullscreen = React.useCallback(() => {\n if (!document.fullscreenElement)\n rootRef.current?.requestFullscreen?.().catch(() => {});\n else document.exitFullscreen?.().catch(() => {});\n }, []);\n\n React.useEffect(() => {\n const onChange = () => setFullscreen(!!document.fullscreenElement);\n document.addEventListener('fullscreenchange', onChange);\n return () => document.removeEventListener('fullscreenchange', onChange);\n }, []);\n\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (outline || e.defaultPrevented || e.metaKey || e.ctrlKey || e.altKey)\n return;\n if (typingTarget(e.target)) return;\n const key = e.key;\n if (key === ' ' && spaceActivates(e.target)) return;\n if (['ArrowDown', 'ArrowRight', 'PageDown', ' '].includes(key)) {\n e.preventDefault();\n goTo(active + 1);\n } else if (['ArrowUp', 'ArrowLeft', 'PageUp'].includes(key)) {\n e.preventDefault();\n goTo(active - 1);\n } else if (key === 'Home') {\n e.preventDefault();\n goTo(0);\n } else if (key === 'End') {\n e.preventDefault();\n goTo(total - 1);\n } else if (/^[1-9]$/.test(key)) {\n goTo(Number(key) - 1);\n } else if (key.toLowerCase() === 'f') {\n toggleFullscreen();\n } else if (key === '?') {\n setHintPulse((p) => p + 1);\n }\n };\n window.addEventListener('keydown', onKey);\n return () => window.removeEventListener('keydown', onKey);\n }, [active, goTo, outline, toggleFullscreen, total]);\n\n const onTouchEnd = (e: React.TouchEvent) => {\n if (touchStart.current === null) return;\n const delta = touchStart.current - e.changedTouches[0].clientY;\n touchStart.current = null;\n const el = slideEl(active);\n // A slide taller than the viewport scrolls natively instead.\n if (\n el &&\n scrollRef.current &&\n el.scrollHeight > scrollRef.current.clientHeight + 20\n )\n return;\n if (Math.abs(delta) > 120) goTo(active + (delta > 0 ? 1 : -1));\n };\n\n const context = React.useMemo<DeckContextValue>(\n () => ({\n slides,\n activeSlide: active,\n goTo,\n labels,\n components,\n icons,\n graphics,\n renderers,\n locale,\n }),\n [\n slides,\n active,\n goTo,\n labels,\n components,\n icons,\n graphics,\n renderers,\n locale,\n ]\n );\n\n const closeOutline = React.useCallback(() => setOutline(false), []);\n const progress = total > 1 ? (active / (total - 1)) * 100 : 0;\n\n return (\n <DeckProvider value={context}>\n <div\n ref={rootRef}\n role=\"region\"\n aria-roledescription={labels.presentation}\n aria-label={meta.title}\n data-slot=\"deck\"\n data-ready={ready || undefined}\n className={cn(\n 'mie-deck relative h-dvh w-full overflow-hidden bg-neutral-950 text-white',\n className\n )}\n {...rest}\n >\n <h1 className=\"sr-only\">\n {meta.title}\n {meta.period ? ` \\u2014 ${meta.period}` : ''}\n </h1>\n {home && (\n <TemplateAnchor\n href={home.href}\n trackingId={home.trackingId}\n components={components}\n className=\"mie-deck-chrome absolute start-3 top-3 z-50 inline-flex items-center gap-2 rounded-full border border-white/10 bg-black/25 py-1.5 ps-2 pe-3 text-xs font-semibold text-white/80 backdrop-blur transition-colors hover:bg-white/10 hover:text-white print:hidden\"\n >\n {home.logo && (\n <TemplateImg\n {...home.logo}\n alt=\"\"\n components={components}\n className=\"size-[18px] object-contain\"\n />\n )}\n {home.label}\n </TemplateAnchor>\n )}\n <ProgressBar progress={progress} />\n <DotNav slides={slides} active={active} goTo={goTo} labels={labels} />\n <SlideCounter\n active={active}\n total={total}\n section={slides[active]?.section}\n />\n <KeyboardHints pulse={hintPulse} labels={labels} />\n <Controls\n isFullscreen={fullscreen}\n onToggleFullscreen={toggleFullscreen}\n onOpenOutline={() => setOutline(true)}\n labels={labels}\n />\n <div\n ref={scrollRef}\n onTouchStart={(e) => {\n touchStart.current = e.touches[0].clientY;\n }}\n onTouchEnd={onTouchEnd}\n className=\"mie-deck-scroll size-full snap-y snap-mandatory overflow-y-auto\"\n >\n {slides.map((slide, i) => {\n // Each renderer narrows its own slide; the type-keyed lookup can't express that.\n const Renderer = (\n slide.type === 'custom'\n ? renderers?.[slide.component]\n : (renderers?.[slide.type] ?? slideRenderers[slide.type])\n ) as React.ComponentType<SlideRendererProps> | undefined;\n return Renderer ? (\n <Renderer key={slideAnchor(slide, i)} slide={slide} index={i} />\n ) : null;\n })}\n </div>\n <MobileNav\n active={active}\n total={total}\n onPrev={() => goTo(active - 1)}\n onNext={() => goTo(active + 1)}\n onOpenOutline={() => setOutline(true)}\n labels={labels}\n />\n <OutlineDialog\n open={outline}\n onClose={closeOutline}\n slides={slides}\n active={active}\n goTo={goTo}\n labels={labels}\n />\n </div>\n </DeckProvider>\n );\n }\n);\nDeck.displayName = 'Deck';\n"]}
|