@sbkbs/ui 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +13 -10
  2. package/dist/components/Accordion/Accordion.d.ts +11 -0
  3. package/dist/components/Accordion/Accordion.js +56 -0
  4. package/dist/components/Accordion/Accordion.js.map +1 -0
  5. package/dist/components/Accordion/Accordion.stories.d.ts +7 -0
  6. package/dist/components/Alert/Alert.d.ts +6 -0
  7. package/dist/components/Alert/Alert.js +32 -0
  8. package/dist/components/Alert/Alert.js.map +1 -0
  9. package/dist/components/Alert/Alert.stories.d.ts +8 -0
  10. package/dist/components/Badge/Badge.d.ts +6 -0
  11. package/dist/components/Badge/Badge.js +35 -0
  12. package/dist/components/Badge/Badge.js.map +1 -0
  13. package/dist/components/Badge/Badge.stories.d.ts +8 -0
  14. package/dist/components/Breadcrumb/Breadcrumb.d.ts +10 -0
  15. package/dist/components/Breadcrumb/Breadcrumb.js +26 -0
  16. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
  17. package/dist/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -0
  18. package/dist/components/Button/Button.js +122 -0
  19. package/dist/components/Button/Button.js.map +1 -0
  20. package/dist/components/Button/Button.stories.d.ts +7 -0
  21. package/dist/components/Card/Card.js +33 -0
  22. package/dist/components/Card/Card.js.map +1 -0
  23. package/dist/components/Card/Card.stories.d.ts +8 -0
  24. package/dist/components/Checkbox/Checkbox.d.ts +6 -0
  25. package/dist/components/Checkbox/Checkbox.js +36 -0
  26. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  27. package/dist/components/Checkbox/Checkbox.stories.d.ts +7 -0
  28. package/dist/components/Chip/Chip.d.ts +5 -0
  29. package/dist/components/Chip/Chip.js +19 -0
  30. package/dist/components/Chip/Chip.js.map +1 -0
  31. package/dist/components/Combobox/Combobox.d.ts +17 -0
  32. package/dist/components/Combobox/Combobox.js +143 -0
  33. package/dist/components/Combobox/Combobox.js.map +1 -0
  34. package/dist/components/Combobox/Combobox.stories.d.ts +9 -0
  35. package/dist/components/Divider/Divider.d.ts +5 -0
  36. package/dist/components/Divider/Divider.js +22 -0
  37. package/dist/components/Divider/Divider.js.map +1 -0
  38. package/dist/components/EmptyState/EmptyState.d.ts +8 -0
  39. package/dist/components/EmptyState/EmptyState.js +29 -0
  40. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  41. package/dist/components/Feedback/Feedback.stories.d.ts +5 -0
  42. package/dist/components/FileUpload/FileUpload.d.ts +13 -0
  43. package/dist/components/FileUpload/FileUpload.js +116 -0
  44. package/dist/components/FileUpload/FileUpload.js.map +1 -0
  45. package/dist/components/FileUpload/FileUpload.stories.d.ts +10 -0
  46. package/dist/components/Footer/Footer.js +54 -0
  47. package/dist/components/Footer/Footer.js.map +1 -0
  48. package/dist/components/Header/Header.js +114 -0
  49. package/dist/components/Header/Header.js.map +1 -0
  50. package/dist/components/Input/Input.d.ts +2 -2
  51. package/dist/components/Input/Input.js +78 -0
  52. package/dist/components/Input/Input.js.map +1 -0
  53. package/dist/components/Input/Input.stories.d.ts +9 -0
  54. package/dist/components/Layout/Layout.d.ts +14 -0
  55. package/dist/components/Layout/Layout.js +41 -0
  56. package/dist/components/Layout/Layout.js.map +1 -0
  57. package/dist/components/Modal/Modal.js +113 -0
  58. package/dist/components/Modal/Modal.js.map +1 -0
  59. package/dist/components/Modal/Modal.stories.d.ts +8 -0
  60. package/dist/components/Navigation/Navigation.d.ts +7 -0
  61. package/dist/components/Navigation/Navigation.js +26 -0
  62. package/dist/components/Navigation/Navigation.js.map +1 -0
  63. package/dist/components/NumberInput/NumberInput.d.ts +12 -0
  64. package/dist/components/NumberInput/NumberInput.js +135 -0
  65. package/dist/components/NumberInput/NumberInput.js.map +1 -0
  66. package/dist/components/NumberInput/NumberInput.stories.d.ts +8 -0
  67. package/dist/components/PageHeader/PageHeader.d.ts +7 -0
  68. package/dist/components/PageHeader/PageHeader.js +29 -0
  69. package/dist/components/PageHeader/PageHeader.js.map +1 -0
  70. package/dist/components/Pagination/Pagination.d.ts +7 -0
  71. package/dist/components/Pagination/Pagination.js +50 -0
  72. package/dist/components/Pagination/Pagination.js.map +1 -0
  73. package/dist/components/Pagination/Pagination.stories.d.ts +8 -0
  74. package/dist/components/Paragraph/Paragraph.js +41 -0
  75. package/dist/components/Paragraph/Paragraph.js.map +1 -0
  76. package/dist/components/Popover/Popover.d.ts +7 -0
  77. package/dist/components/Popover/Popover.js +57 -0
  78. package/dist/components/Popover/Popover.js.map +1 -0
  79. package/dist/components/Radio/Radio.d.ts +6 -0
  80. package/dist/components/Radio/Radio.js +36 -0
  81. package/dist/components/Radio/Radio.js.map +1 -0
  82. package/dist/components/Radio/Radio.stories.d.ts +7 -0
  83. package/dist/components/SectionHeader/SectionHeader.d.ts +7 -0
  84. package/dist/components/SectionHeader/SectionHeader.js +19 -0
  85. package/dist/components/SectionHeader/SectionHeader.js.map +1 -0
  86. package/dist/components/Select/Select.d.ts +13 -0
  87. package/dist/components/Select/Select.js +45 -0
  88. package/dist/components/Select/Select.js.map +1 -0
  89. package/dist/components/Select/Select.stories.d.ts +8 -0
  90. package/dist/components/Skeleton/Skeleton.d.ts +7 -0
  91. package/dist/components/Skeleton/Skeleton.js +25 -0
  92. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  93. package/dist/components/Stepper/Stepper.d.ts +13 -0
  94. package/dist/components/Stepper/Stepper.js +97 -0
  95. package/dist/components/Stepper/Stepper.js.map +1 -0
  96. package/dist/components/Stepper/Stepper.stories.d.ts +8 -0
  97. package/dist/components/Subtitle/Subtitle.js +40 -0
  98. package/dist/components/Subtitle/Subtitle.js.map +1 -0
  99. package/dist/components/Switch/Switch.d.ts +7 -0
  100. package/dist/components/Switch/Switch.js +37 -0
  101. package/dist/components/Switch/Switch.js.map +1 -0
  102. package/dist/components/Switch/Switch.stories.d.ts +8 -0
  103. package/dist/components/Table/Table.d.ts +4 -0
  104. package/dist/components/Table/Table.js +17 -0
  105. package/dist/components/Table/Table.js.map +1 -0
  106. package/dist/components/Tabs/Tabs.d.ts +11 -0
  107. package/dist/components/Tabs/Tabs.js +62 -0
  108. package/dist/components/Tabs/Tabs.js.map +1 -0
  109. package/dist/components/Tabs/Tabs.stories.d.ts +8 -0
  110. package/dist/components/Tag/Tag.d.ts +5 -0
  111. package/dist/components/Tag/Tag.js +29 -0
  112. package/dist/components/Tag/Tag.js.map +1 -0
  113. package/dist/components/Textarea/Textarea.d.ts +7 -0
  114. package/dist/components/Textarea/Textarea.js +46 -0
  115. package/dist/components/Textarea/Textarea.js.map +1 -0
  116. package/dist/components/Textarea/Textarea.stories.d.ts +7 -0
  117. package/dist/components/Title/Title.js +47 -0
  118. package/dist/components/Title/Title.js.map +1 -0
  119. package/dist/components/Toast/Toast.d.ts +26 -0
  120. package/dist/components/Toast/Toast.js +110 -0
  121. package/dist/components/Toast/Toast.js.map +1 -0
  122. package/dist/components/Toast/Toast.stories.d.ts +8 -0
  123. package/dist/components/Tooltip/Tooltip.d.ts +7 -0
  124. package/dist/components/Tooltip/Tooltip.js +36 -0
  125. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  126. package/dist/index.d.ts +31 -3
  127. package/dist/index.js +88 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/node_modules/clsx/dist/clsx.js +17 -0
  130. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  131. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2925 -0
  132. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  133. package/dist/oficios-ui.umd.cjs +1 -1
  134. package/dist/oficios-ui.umd.cjs.map +1 -1
  135. package/dist/theme/ThemeProvider.d.ts +1 -1
  136. package/dist/theme/ThemeProvider.js +22 -0
  137. package/dist/theme/ThemeProvider.js.map +1 -0
  138. package/dist/theme.css +60 -64
  139. package/dist/ui.css +1 -0
  140. package/dist/utils/cn.d.ts +7 -0
  141. package/dist/utils/cn.js +7 -0
  142. package/dist/utils/cn.js.map +1 -0
  143. package/package.json +54 -5
  144. package/dist/oficios-ui.css +0 -1
  145. package/dist/oficios-ui.js +0 -593
  146. package/dist/oficios-ui.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"oficios-ui.js","sources":["../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Footer/Footer.tsx","../src/components/Header/Header.tsx","../src/components/Input/Input.tsx","../src/components/Modal/Modal.tsx","../src/components/Paragraph/Paragraph.tsx","../src/components/Subtitle/Subtitle.tsx","../src/components/Title/Title.tsx","../src/theme/ThemeProvider.tsx"],"sourcesContent":["import type React from 'react';\nimport type { CSSProperties } from 'react';\n\n/** Paletas do guia de marca (só afeta variant primary). Use para escolher o modelo de cor do botão. */\nexport type ButtonPalette =\n | 'verde-vibrante'\n | 'verde-profundo'\n | 'grafite-azulado'\n | 'azul-acinzentado'\n | 'cinza-medio'\n | 'cinza-escuro'\n | 'off-white';\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n compact?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n /** Paleta de cor do guia de marca (aplica-se ao primary). Ignorado em outros variants. */\n palette?: ButtonPalette;\n rightIcon?: React.ReactNode;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n variant?:\n | 'primary'\n | 'secondary'\n | 'success'\n | 'error'\n | 'warning'\n | 'info'\n | 'neutral'\n | 'ghost';\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n compact = false,\n fullWidth = false,\n isLoading = false,\n leftIcon,\n rightIcon,\n children,\n className = '',\n disabled,\n palette,\n style,\n ...props\n}) => {\n const baseClass =\n 'relative inline-flex select-none items-center justify-center overflow-hidden whitespace-nowrap rounded-[var(--border-radius-md)] border border-transparent font-semibold leading-none tracking-[0.01em] transition-[all_var(--transition-base)]';\n const focusClass =\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--md-primary)]';\n const disabledClass = 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';\n const fullWidthClass = fullWidth ? 'w-full' : '';\n const loadingClass = '';\n const offWhiteBorderClass =\n palette === 'off-white' && variant === 'primary'\n ? 'border-[var(--border-color)]'\n : '';\n\n const sizeClassMap: Record<NonNullable<ButtonProps['size']>, string> = {\n xs: compact\n ? 'min-h-[1.75rem] min-w-[1.75rem] gap-1 px-2 py-1 text-[var(--font-size-xs)]'\n : 'min-h-8 min-w-8 gap-1.5 px-3 py-1.5 text-[var(--font-size-xs)]',\n sm: compact\n ? 'min-h-8 min-w-8 gap-[0.3125rem] px-2.5 py-1.5 text-[var(--font-size-sm)]'\n : 'min-h-9 min-w-9 gap-[0.4375rem] px-3.5 py-2 text-[var(--font-size-sm)]',\n md: compact\n ? 'min-h-[2.375rem] min-w-[2.375rem] gap-1.5 px-3 py-2 text-[var(--font-size-base)]'\n : 'min-h-11 min-w-11 gap-2 px-4 py-2.5 text-[var(--font-size-base)]',\n lg: compact\n ? 'min-h-[2.625rem] min-w-[2.625rem] gap-[0.4375rem] px-3.5 py-[0.5625rem] text-[var(--font-size-lg)]'\n : 'min-h-12 min-w-12 gap-[0.5625rem] px-6 py-4 text-[var(--font-size-lg)]',\n xl: compact\n ? 'min-h-12 min-w-12 gap-2 px-4 py-3 text-[var(--font-size-xl)]'\n : 'min-h-14 min-w-14 gap-2.5 px-8 py-6 text-[var(--font-size-xl)]',\n };\n\n const variantClassMap: Record<NonNullable<ButtonProps['variant']>, string> = {\n primary:\n 'bg-[var(--md-primary)] text-[var(--md-on-primary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--primary-color-hover)] hover:shadow-[var(--shadow-md)]',\n secondary:\n 'bg-[var(--md-secondary)] text-[var(--md-on-secondary)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--secondary-color-light)] hover:shadow-[var(--shadow-md)]',\n success:\n 'bg-[var(--success-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--success-color-light)] hover:shadow-[var(--shadow-md)]',\n error:\n 'bg-[var(--md-error)] text-[var(--md-on-error)] shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--error-color-light)] hover:shadow-[var(--shadow-md)]',\n warning:\n 'bg-[var(--warning-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--warning-color-light)] hover:shadow-[var(--shadow-md)]',\n info: 'bg-[var(--info-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--info-color-light)] hover:shadow-[var(--shadow-md)]',\n neutral:\n 'bg-[var(--neutral-color)] text-white shadow-[var(--shadow-sm)] hover:translate-y-[-0.125rem] hover:bg-[var(--neutral-color-light)] hover:shadow-[var(--shadow-md)]',\n ghost:\n 'border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--md-on-surface)] shadow-[var(--shadow-xs)] hover:bg-[var(--bg-hover)] hover:text-[var(--md-primary)] hover:border-[var(--border-color-hover)]',\n };\n\n const iconSizeClassMap: Record<NonNullable<ButtonProps['size']>, string> = {\n xs: compact ? 'h-3 w-3' : 'h-3.5 w-3.5',\n sm: compact ? 'h-3.5 w-3.5' : 'h-4 w-4',\n md: 'h-[1.125rem] w-[1.125rem]',\n lg: 'h-5 w-5',\n xl: 'h-5 w-5',\n };\n\n const paletteVars: Record<\n ButtonPalette,\n { primary: string; hover: string; onPrimary?: string }\n > = {\n 'verde-vibrante': {\n primary: 'var(--brand-verde-vibrante)',\n hover: 'var(--brand-verde-profundo)',\n },\n 'verde-profundo': {\n primary: 'var(--brand-verde-profundo)',\n hover: 'var(--brand-grafite-azulado)',\n },\n 'grafite-azulado': {\n primary: 'var(--brand-grafite-azulado)',\n hover: 'var(--brand-cinza-escuro)',\n },\n 'azul-acinzentado': {\n primary: 'var(--brand-azul-acinzentado)',\n hover: 'var(--brand-grafite-azulado)',\n },\n 'cinza-medio': {\n primary: 'var(--brand-cinza-medio)',\n hover: 'var(--brand-cinza-escuro)',\n },\n 'cinza-escuro': {\n primary: 'var(--brand-cinza-escuro)',\n hover: 'var(--brand-preto)',\n },\n 'off-white': {\n primary: 'var(--brand-off-white)',\n hover: 'var(--brand-branco)',\n onPrimary: 'var(--brand-grafite-azulado)',\n },\n };\n\n type ButtonCssVars = CSSProperties & {\n '--md-primary'?: string;\n '--primary-color-hover'?: string;\n '--md-on-primary'?: string;\n };\n const paletteStyle: ButtonCssVars = {};\n if (palette && variant === 'primary') {\n paletteStyle['--md-primary'] = paletteVars[palette].primary;\n paletteStyle['--primary-color-hover'] = paletteVars[palette].hover;\n if (paletteVars[palette].onPrimary) {\n paletteStyle['--md-on-primary'] = paletteVars[palette].onPrimary;\n }\n }\n\n const combinedClass = [\n baseClass,\n focusClass,\n disabledClass,\n sizeClassMap[size],\n variantClassMap[variant],\n offWhiteBorderClass,\n fullWidthClass,\n loadingClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={combinedClass}\n disabled={disabled || isLoading}\n style={{ ...paletteStyle, ...style }}\n {...props}\n >\n {isLoading && (\n <span\n aria-hidden=\"true\"\n className=\"absolute inline-flex h-[1em] w-[1em] animate-spin items-center justify-center\"\n >\n <svg fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" strokeOpacity=\"0.25\" />\n <path d=\"M12 2 A10 10 0 0 1 22 12\" strokeLinecap=\"round\" />\n </svg>\n </span>\n )}\n {!isLoading && leftIcon && (\n <span\n className={`mr-1 inline-flex shrink-0 items-center justify-center leading-none ${iconSizeClassMap[size]}`}\n >\n {leftIcon}\n </span>\n )}\n {!isLoading && (\n <span className=\"btn__content inline-flex items-center justify-center\">\n {children}\n </span>\n )}\n {!isLoading && rightIcon && (\n <span\n className={`ml-1 inline-flex shrink-0 items-center justify-center leading-none ${iconSizeClassMap[size]}`}\n >\n {rightIcon}\n </span>\n )}\n </button>\n );\n};\n","import type React from 'react';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n hoverable?: boolean;\n padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n variant?: 'default' | 'elevated' | 'outlined' | 'flat';\n}\n\nexport const Card: React.FC<CardProps> = ({\n variant = 'default',\n padding = 'md',\n hoverable = false,\n children,\n className = '',\n ...props\n}) => {\n const baseClass =\n 'relative overflow-hidden rounded-[var(--border-radius-lg)] transition-[var(--transition-all)]';\n const variantClassMap: Record<NonNullable<CardProps['variant']>, string> = {\n default:\n 'bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-sm)]',\n elevated:\n 'bg-[var(--md-surface)] border border-[var(--md-outline-variant)] shadow-[var(--shadow-lg)]',\n outlined: 'bg-transparent border border-[var(--md-outline-variant)] shadow-none',\n flat: 'bg-[var(--md-surface)] border-0 shadow-none',\n };\n const paddingClassMap: Record<NonNullable<CardProps['padding']>, string> = {\n none: 'p-0',\n sm: 'p-[var(--spacing-md)]',\n md: 'p-[var(--spacing-lg)]',\n lg: 'p-[var(--spacing-xl)]',\n xl: 'p-[var(--spacing-2xl)]',\n };\n const hoverableClass = hoverable ? 'hover:shadow-[var(--shadow-md)]' : '';\n const combinedClass = [\n baseClass,\n variantClassMap[variant],\n paddingClassMap[padding],\n hoverableClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={combinedClass} {...props}>\n {children}\n </div>\n );\n};\n","import type React from 'react';\nimport { useState } from 'react';\n\nexport interface FooterProps {\n /** Classe CSS adicional */\n className?: string;\n /** Texto alternativo do logo */\n logoAlt?: string;\n /** Texto exibido se a imagem do logo falhar (ex.: \"SBK\") */\n logoFallbackText?: string;\n /** URL da imagem do logo */\n logoSrc?: string;\n /** Texto antes do logo (ex.: \"Powered by\") */\n poweredByText?: string;\n}\n\nexport const Footer: React.FC<FooterProps> = ({\n poweredByText = 'Powered by',\n logoSrc,\n logoAlt = 'Logo',\n logoFallbackText,\n className = '',\n}) => {\n const [logoVisible, setLogoVisible] = useState(true);\n return (\n <footer\n className={[\n 'relative z-[1] flex w-full shrink-0 items-center justify-center border-t border-[var(--border-color)] bg-[var(--bg-secondary)] px-[var(--spacing-2xl)] py-[var(--spacing-lg)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className=\"flex items-center gap-[var(--spacing-md)]\">\n {poweredByText && (\n <span className=\"text-[0.95rem] font-normal text-[var(--text-secondary)]\">\n {poweredByText}\n </span>\n )}\n {(logoSrc || logoFallbackText) && (\n <div className=\"flex items-center\">\n {logoSrc && logoVisible && (\n <img\n alt={logoAlt}\n className=\"h-6 w-auto object-contain\"\n onError={(e) => {\n setLogoVisible(false);\n }}\n src={logoSrc}\n style={{\n filter: 'brightness(0)',\n }}\n />\n )}\n {logoFallbackText && (\n <span\n className=\"flex items-center text-base font-bold tracking-[0.1em] text-[var(--md-primary)]\"\n style={{\n display: logoSrc && logoVisible ? 'none' : 'flex',\n fontFamily: '\"Orbitron\", sans-serif',\n }}\n >\n {logoFallbackText}\n </span>\n )}\n </div>\n )}\n </div>\n </footer>\n );\n};\n","import type React from 'react';\nimport { useEffect, useState } from 'react';\nimport type { Theme } from '../../theme/ThemeProvider';\n\nexport interface HeaderProps {\n /** Classe CSS adicional */\n className?: string;\n /** Texto alternativo do logo */\n logoAlt?: string;\n /** URL da imagem do logo (tema escuro). Se não informado, usa logoSrc. */\n logoDarkSrc?: string;\n /** URL da imagem do logo (tema claro) */\n logoSrc?: string;\n /** Callback ao clicar na área do logo/título */\n onLogoClick?: () => void;\n /** Conteúdo da área direita (ex.: seletor de idioma, toggle tema, menu usuário) */\n rightContent?: React.ReactNode;\n /** Subtítulo abaixo do título */\n subtitle?: React.ReactNode;\n /** Tema opcional para escolher o logo correto sem depender do ThemeProvider do UI */\n theme?: Theme;\n /** Título exibido ao lado do logo (ex.: \"OFÍCIO.IA\") */\n title?: React.ReactNode;\n}\n\nconst detectTheme = (): Theme => {\n if (typeof document === 'undefined') {\n return 'light';\n }\n\n return document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'light';\n};\n\nexport const Header: React.FC<HeaderProps> = ({\n logoSrc,\n logoDarkSrc,\n logoAlt = 'Logo',\n title,\n subtitle,\n theme,\n onLogoClick,\n rightContent,\n className = '',\n}) => {\n const [isScrolled, setIsScrolled] = useState(false);\n const [resolvedTheme, setResolvedTheme] = useState<Theme>(\n () => theme ?? detectTheme()\n );\n\n const logoSrcResolved =\n resolvedTheme === 'dark' && logoDarkSrc ? logoDarkSrc : logoSrc;\n\n useEffect(() => {\n const handleScroll = () => setIsScrolled(window.scrollY > 10);\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n useEffect(() => {\n if (theme) {\n setResolvedTheme(theme);\n return;\n }\n\n const syncTheme = () => setResolvedTheme(detectTheme());\n syncTheme();\n\n if (typeof MutationObserver === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver(syncTheme);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme'],\n });\n\n return () => observer.disconnect();\n }, [theme]);\n\n const handleClick = () => onLogoClick?.();\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n onLogoClick?.();\n }\n };\n\n return (\n <header\n className={[\n 'fixed inset-x-0 top-0 z-[1000] w-full backdrop-blur-[12px]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className=\"h-0.5 w-full bg-[var(--md-primary)]\" />\n <div\n className=\"flex items-center justify-between px-6 py-2 shadow-[var(--shadow-sm)] max-md:flex-col max-md:gap-3 max-md:px-4 max-md:py-3\"\n style={{\n color: 'var(--md-on-surface)',\n background: `color-mix(in srgb, var(--md-surface) ${\n isScrolled ? '14%' : '18%'\n }, transparent)`,\n borderBottom: `1px solid color-mix(in srgb, var(--md-outline-variant) ${\n isScrolled ? '22%' : '30%'\n }, transparent)`,\n }}\n >\n <div\n className=\"flex cursor-pointer items-center gap-3 transition-opacity duration-200 ease-in-out hover:opacity-80\"\n onClick={onLogoClick ? handleClick : undefined}\n onKeyDown={onLogoClick ? handleKeyDown : undefined}\n role={onLogoClick ? 'button' : undefined}\n tabIndex={onLogoClick ? 0 : undefined}\n >\n {logoSrcResolved && (\n <div className=\"flex h-16 w-16 shrink-0 items-center justify-center\">\n <img\n alt={logoAlt}\n className=\"h-full w-full object-contain\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n const next = (e.target as HTMLElement)\n .nextElementSibling as HTMLElement;\n if (next) {\n next.style.display = 'block';\n }\n }}\n src={logoSrcResolved}\n />\n <svg\n className=\"hidden h-full w-full\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 2L2 7l10 5 10-5-10-5z\" />\n <path d=\"M2 17l10 5 10-5M2 12l10 5 10-5\" />\n </svg>\n </div>\n )}\n {(title || subtitle) && (\n <div className=\"flex flex-col gap-1\">\n {title && (\n <h1\n className=\"m-0 inline-flex items-baseline text-[1.375rem] font-bold leading-[1.2] tracking-[0.05em] text-[var(--md-on-surface)] max-md:text-xl\"\n style={{ fontFamily: '\"Orbitron\", sans-serif' }}\n >\n {title}\n </h1>\n )}\n {subtitle && (\n <p className=\"m-0 text-[0.8125rem] font-normal text-[var(--md-on-surface-variant)] max-md:text-xs\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n </div>\n {rightContent && (\n <div className=\"flex shrink-0 items-center gap-3 max-md:w-full max-md:flex-wrap max-md:justify-between\">\n {rightContent}\n </div>\n )}\n </div>\n </header>\n );\n};\n","import type React from 'react';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n error?: string;\n fullWidth?: boolean;\n helperText?: string;\n label?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n error,\n helperText,\n leftIcon,\n rightIcon,\n fullWidth = false,\n size = 'md',\n className = '',\n id,\n ...props\n}) => {\n const inputId = id || `input-${Math.random().toString(36).substring(2, 9)}`;\n const hasError = !!error;\n const sizeClassMap: Record<NonNullable<InputProps['size']>, string> = {\n sm: 'min-h-8 px-[var(--spacing-md)] py-[var(--spacing-sm)] text-[var(--font-size-sm)]',\n md: 'min-h-10 px-[var(--spacing-lg)] py-[var(--spacing-md)] text-[var(--font-size-base)]',\n lg: 'min-h-12 px-[var(--spacing-xl)] py-[var(--spacing-lg)] text-[var(--font-size-lg)]',\n };\n const combinedClass = [\n 'w-full rounded-[var(--border-radius-md)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] font-inherit text-[var(--md-on-surface)] outline-none transition-[var(--transition-all)] placeholder:text-[var(--md-on-surface-variant)] placeholder:opacity-70 hover:not-disabled:not-focus:border-[var(--border-color-hover)] focus:border-[var(--border-color-focus)] focus:[box-shadow:0_0_0_0.1875rem_rgba(47,93,140,0.15)] disabled:cursor-not-allowed disabled:bg-[var(--md-surface-container-high)] disabled:opacity-60',\n hasError\n ? 'border-[var(--md-error)] focus:border-[var(--md-error)] focus:[box-shadow:0_0_0_0.1875rem_rgba(186,26,26,0.2)]'\n : '',\n leftIcon ? 'pl-10' : '',\n rightIcon ? 'pr-10' : '',\n sizeClassMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={`flex flex-col gap-[var(--spacing-xs)] ${fullWidth ? 'w-full' : ''}`}>\n {label && (\n <label\n className=\"text-[var(--font-size-sm)] font-[var(--font-weight-semibold)] text-[var(--md-on-surface)]\"\n htmlFor={inputId}\n >\n {label}\n </label>\n )}\n <div className=\"group relative flex w-full items-center\">\n {leftIcon && (\n <span className=\"pointer-events-none absolute left-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]\">\n {leftIcon}\n </span>\n )}\n <input\n aria-describedby={\n error\n ? `${inputId}-error`\n : helperText\n ? `${inputId}-helper`\n : undefined\n }\n aria-invalid={hasError ? true : undefined}\n className={combinedClass}\n id={inputId}\n {...props}\n />\n {rightIcon && (\n <span className=\"pointer-events-none absolute right-[var(--spacing-md)] z-[1] flex items-center justify-center text-[var(--md-on-surface-variant)] group-focus-within:text-[var(--md-primary)] [&_svg]:h-[1.125rem] [&_svg]:w-[1.125rem]\">\n {rightIcon}\n </span>\n )}\n </div>\n {error && (\n <span\n className=\"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-error)]\"\n id={`${inputId}-error`}\n role=\"alert\"\n >\n {error}\n </span>\n )}\n {helperText && !error && (\n <span\n className=\"mt-[var(--spacing-xs)] block text-[var(--font-size-xs)] text-[var(--md-on-surface-variant)]\"\n id={`${inputId}-helper`}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n};\n","import type React from 'react';\nimport { useEffect } from 'react';\n\nexport interface ModalProps {\n children: React.ReactNode;\n className?: string;\n closeOnOverlayClick?: boolean;\n isOpen: boolean;\n onClose: () => void;\n showCloseButton?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n subtitle?: string;\n title?: string | React.ReactNode;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n subtitle,\n children,\n size = 'md',\n showCloseButton = true,\n closeOnOverlayClick = true,\n className = '',\n}) => {\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n }\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, onClose]);\n\n if (!isOpen) {\n return null;\n }\n\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n const sizeClassMap: Record<NonNullable<ModalProps['size']>, string> = {\n sm: 'max-w-[25rem]',\n md: 'max-w-[31.25rem]',\n lg: 'max-w-[43.75rem]',\n xl: 'max-w-[56.25rem]',\n full: 'max-h-[90vh] max-w-[90vw]',\n };\n const combinedClass = [\n 'relative z-[var(--z-index-modal)] m-auto flex w-full max-h-[90vh] max-w-full flex-col overflow-hidden rounded-[var(--border-radius-2xl)] border border-[var(--md-outline-variant)] bg-[var(--md-surface)] shadow-[var(--shadow-2xl)]',\n sizeClassMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n aria-labelledby={title ? 'modal-title' : undefined}\n aria-modal=\"true\"\n className=\"fixed inset-0 z-[var(--z-index-modal-backdrop)] flex min-h-[100dvh] items-center justify-center overflow-y-auto bg-black/50 p-[var(--spacing-lg)] backdrop-blur-[8px]\"\n onClick={handleOverlayClick}\n role=\"dialog\"\n >\n <div className={combinedClass}>\n {(title || subtitle || showCloseButton) && (\n <div className=\"flex shrink-0 items-start justify-between gap-[var(--spacing-lg)] border-b border-[var(--md-outline-variant)] p-[var(--spacing-2xl)]\">\n {(title || subtitle) && (\n <div className=\"flex-1\">\n {title && (\n <h2\n className=\"mb-[var(--spacing-xs)] mt-0 text-[var(--font-size-2xl)] font-[var(--font-weight-semibold)] leading-[var(--line-height-tight)] text-[var(--md-on-surface)]\"\n id=\"modal-title\"\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"m-0 text-[var(--font-size-base)] leading-[var(--line-height-normal)] text-[var(--md-on-surface-variant)]\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n {showCloseButton && (\n <button\n aria-label=\"Fechar modal\"\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--border-radius-md)] border-0 bg-[var(--md-surface-container-high)] text-[var(--md-on-surface)] transition-[var(--transition-all)] hover:bg-[color:color-mix(in_srgb,var(--md-error)_15%,var(--md-surface))] hover:text-[var(--md-error)]\"\n onClick={onClose}\n type=\"button\"\n >\n <svg\n fill=\"none\"\n className=\"h-5 w-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\" />\n <line x1=\"6\" x2=\"18\" y1=\"6\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n )}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto p-[var(--spacing-2xl)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n","import type React from 'react';\n\nexport interface ParagraphProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right' | 'justify';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n italic?: boolean;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'light' | 'normal' | 'medium';\n}\n\nexport const Paragraph: React.FC<ParagraphProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<ParagraphProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)] leading-[var(--line-height-normal)]',\n sm: 'text-[var(--font-size-sm)] leading-[var(--line-height-normal)]',\n md: 'text-[var(--font-size-base)] leading-[var(--line-height-relaxed)]',\n lg: 'text-[var(--font-size-lg)] leading-[var(--line-height-loose)]',\n };\n const weightClassMap: Record<NonNullable<ParagraphProps['weight']>, string> = {\n light: 'font-[var(--font-weight-light)]',\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n };\n const alignClassMap: Record<NonNullable<ParagraphProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n };\n const combinedClass = [\n 'm-0 text-[var(--text-primary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n muted ? 'text-[var(--text-muted)]' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\n\nexport interface SubtitleProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n italic?: boolean;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'normal' | 'medium' | 'semibold';\n}\n\nexport const Subtitle: React.FC<SubtitleProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<SubtitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)]',\n sm: 'text-[var(--font-size-sm)]',\n md: 'text-[var(--font-size-base)]',\n lg: 'text-[var(--font-size-lg)]',\n };\n const weightClassMap: Record<NonNullable<SubtitleProps['weight']>, string> = {\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n };\n const alignClassMap: Record<NonNullable<SubtitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const combinedClass = [\n 'm-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n muted ? 'text-[var(--text-muted)] opacity-80' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import type React from 'react';\n\nexport interface TitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n children: React.ReactNode;\n gradient?: boolean;\n italic?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';\n}\n\nexport const Title: React.FC<TitleProps> = ({\n as = 'h1',\n size = '2xl',\n weight = 'bold',\n align = 'left',\n gradient = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<TitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-sm)]',\n sm: 'text-[var(--font-size-base)]',\n md: 'text-[var(--font-size-lg)]',\n lg: 'text-[var(--font-size-xl)]',\n xl: 'text-[var(--font-size-2xl)]',\n '2xl': 'text-[var(--font-size-3xl)]',\n '3xl': 'text-[var(--font-size-4xl)]',\n '4xl': 'text-[3rem]',\n };\n const weightClassMap: Record<NonNullable<TitleProps['weight']>, string> = {\n light: 'font-[var(--font-weight-light)]',\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n bold: 'font-[var(--font-weight-bold)]',\n extrabold: 'font-extrabold',\n };\n const alignClassMap: Record<NonNullable<TitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const gradientClass = gradient\n ? 'bg-[linear-gradient(135deg,var(--text-primary)_0%,var(--primary-color)_50%,var(--secondary-color)_100%)] bg-clip-text text-transparent'\n : '';\n const combinedClass = [\n 'm-0 leading-[var(--line-height-tight)] text-[var(--text-primary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n gradientClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n","import {\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nexport type Theme = 'light' | 'dark';\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: Theme;\n}\n\nexport const ThemeProvider = ({\n children,\n defaultTheme = 'light',\n}: ThemeProviderProps) => {\n const [theme, setTheme] = useState<Theme>(() => {\n if (typeof window === 'undefined') {\n return defaultTheme;\n }\n const saved = window.localStorage.getItem('theme');\n return (saved as Theme) || defaultTheme;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n window.localStorage.setItem('theme', theme);\n document.documentElement.setAttribute('data-theme', theme);\n }, [theme]);\n\n const toggleTheme = (): void => {\n setTheme((prev) => (prev === 'dark' ? 'light' : 'dark'));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n"],"names":["Button","variant","size","compact","fullWidth","isLoading","leftIcon","rightIcon","children","className","disabled","palette","style","props","baseClass","focusClass","disabledClass","fullWidthClass","loadingClass","offWhiteBorderClass","sizeClassMap","variantClassMap","iconSizeClassMap","paletteVars","paletteStyle","combinedClass","jsxs","jsx","Card","padding","hoverable","paddingClassMap","hoverableClass","Footer","poweredByText","logoSrc","logoAlt","logoFallbackText","logoVisible","setLogoVisible","useState","e","detectTheme","Header","logoDarkSrc","title","subtitle","theme","onLogoClick","rightContent","isScrolled","setIsScrolled","resolvedTheme","setResolvedTheme","logoSrcResolved","useEffect","handleScroll","syncTheme","observer","handleClick","handleKeyDown","next","Input","label","error","helperText","id","inputId","hasError","Modal","isOpen","onClose","showCloseButton","closeOnOverlayClick","handleEscape","handleOverlayClick","Paragraph","as","weight","align","muted","italic","Component","weightClassMap","alignClassMap","Subtitle","Title","gradient","gradientClass","ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","defaultTheme","setTheme","toggleTheme","prev"],"mappings":";;AAmCO,MAAMA,IAAgC,CAAC;AAAA,EAC5C,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IACJ,mPACIC,IACJ,0HACIC,IAAgB,gFAChBC,IAAiBb,IAAY,WAAW,IACxCc,IAAe,IACfC,IACJR,MAAY,eAAeV,MAAY,YACnC,iCACA,IAEAmB,IAAiE;AAAA,IACrE,IAAIjB,IACA,+EACA;AAAA,IACJ,IAAIA,IACA,6EACA;AAAA,IACJ,IAAIA,IACA,qFACA;AAAA,IACJ,IAAIA,IACA,uGACA;AAAA,IACJ,IAAIA,IACA,iEACA;AAAA,EAAA,GAGAkB,IAAuE;AAAA,IAC3E,SACE;AAAA,IACF,WACE;AAAA,IACF,SACE;AAAA,IACF,OACE;AAAA,IACF,SACE;AAAA,IACF,MAAM;AAAA,IACN,SACE;AAAA,IACF,OACE;AAAA,EAAA,GAGEC,IAAqE;AAAA,IACzE,IAAInB,IAAU,YAAY;AAAA,IAC1B,IAAIA,IAAU,gBAAgB;AAAA,IAC9B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAoB,IAGF;AAAA,IACF,kBAAkB;AAAA,MAChB,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,kBAAkB;AAAA,MAChB,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,mBAAmB;AAAA,MACjB,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,oBAAoB;AAAA,MAClB,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,eAAe;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,gBAAgB;AAAA,MACd,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,aAAa;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,IAAA;AAAA,EACb,GAQIC,IAA8B,CAAA;AACpC,EAAIb,KAAWV,MAAY,cACzBuB,EAAa,cAAc,IAAID,EAAYZ,CAAO,EAAE,SACpDa,EAAa,uBAAuB,IAAID,EAAYZ,CAAO,EAAE,OACzDY,EAAYZ,CAAO,EAAE,cACvBa,EAAa,iBAAiB,IAAID,EAAYZ,CAAO,EAAE;AAI3D,QAAMc,IAAgB;AAAA,IACpBX;AAAA,IACAC;AAAA,IACAC;AAAA,IACAI,EAAalB,CAAI;AAAA,IACjBmB,EAAgBpB,CAAO;AAAA,IACvBkB;AAAA,IACAF;AAAA,IACAC;AAAA,IACAT;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWD;AAAA,MACX,UAAUf,KAAYL;AAAA,MACtB,OAAO,EAAE,GAAGmB,GAAc,GAAGZ,EAAA;AAAA,MAC5B,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAR,KACC,gBAAAsB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YAEV,UAAA,gBAAAD,EAAC,SAAI,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,SAAQ,aAC7D,UAAA;AAAA,cAAA,gBAAAC,EAAC,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,eAAc,OAAA,CAAO;AAAA,cACpD,gBAAAA,EAAC,QAAA,EAAK,GAAE,4BAA2B,eAAc,QAAA,CAAQ;AAAA,YAAA,EAAA,CAC3D;AAAA,UAAA;AAAA,QAAA;AAAA,QAGH,CAACtB,KAAaC,KACb,gBAAAqB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,sEAAsEL,EAAiBpB,CAAI,CAAC;AAAA,YAEtG,UAAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJ,CAACD,KACA,gBAAAsB,EAAC,QAAA,EAAK,WAAU,wDACb,UAAAnB,GACH;AAAA,QAED,CAACH,KAAaE,KACb,gBAAAoB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,sEAAsEL,EAAiBpB,CAAI,CAAC;AAAA,YAEtG,UAAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR,GCvMaqB,IAA4B,CAAC;AAAA,EACxC,SAAA3B,IAAU;AAAA,EACV,SAAA4B,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAtB;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGI;AACL,MAAM;AACJ,QAAMC,IACJ,iGACIO,IAAqE;AAAA,IACzE,SACE;AAAA,IACF,UACE;AAAA,IACF,UAAU;AAAA,IACV,MAAM;AAAA,EAAA,GAEFU,IAAqE;AAAA,IACzE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAEAC,IAAiBF,IAAY,oCAAoC,IACjEL,IAAgB;AAAA,IACpBX;AAAA,IACAO,EAAgBpB,CAAO;AAAA,IACvB8B,EAAgBF,CAAO;AAAA,IACvBG;AAAA,IACAvB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACG,OAAA,EAAI,WAAWgB,GAAgB,GAAGZ,GAChC,UAAAL,GACH;AAEJ,GClCayB,IAAgC,CAAC;AAAA,EAC5C,eAAAC,IAAgB;AAAA,EAChB,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,kBAAAC;AAAA,EACA,WAAA5B,IAAY;AACd,MAAM;AACJ,QAAM,CAAC6B,GAAaC,CAAc,IAAIC,EAAS,EAAI;AACnD,SACE,gBAAAb;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAlB;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEX,UAAA,gBAAAiB,EAAC,OAAA,EAAI,WAAU,6CACZ,UAAA;AAAA,QAAAQ,KACC,gBAAAP,EAAC,QAAA,EAAK,WAAU,2DACb,UAAAO,GACH;AAAA,SAEAC,KAAWE,MACX,gBAAAX,EAAC,OAAA,EAAI,WAAU,qBACZ,UAAA;AAAA,UAAAS,KAAWG,KACV,gBAAAX;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKS;AAAA,cACL,WAAU;AAAA,cACV,SAAS,CAACK,MAAM;AACd,gBAAAF,EAAe,EAAK;AAAA,cACtB;AAAA,cACA,KAAKJ;AAAA,cACL,OAAO;AAAA,gBACL,QAAQ;AAAA,cAAA;AAAA,YACV;AAAA,UAAA;AAAA,UAGHE,KACC,gBAAAV;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,SAASQ,KAAWG,IAAc,SAAS;AAAA,gBAC3C,YAAY;AAAA,cAAA;AAAA,cAGb,UAAAD;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,EAAA,CAEJ;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAGN,GC7CMK,IAAc,MACd,OAAO,WAAa,MACf,UAGF,SAAS,gBAAgB,aAAa,YAAY,MAAM,SAC3D,SACA,SAGOC,IAAgC,CAAC;AAAA,EAC5C,SAAAR;AAAA,EACA,aAAAS;AAAA,EACA,SAAAR,IAAU;AAAA,EACV,OAAAS;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAxC,IAAY;AACd,MAAM;AACJ,QAAM,CAACyC,GAAYC,CAAa,IAAIX,EAAS,EAAK,GAC5C,CAACY,GAAeC,CAAgB,IAAIb;AAAA,IACxC,MAAMO,KAASL,EAAA;AAAA,EAAY,GAGvBY,IACJF,MAAkB,UAAUR,IAAcA,IAAcT;AAE1D,EAAAoB,EAAU,MAAM;AACd,UAAMC,IAAe,MAAML,EAAc,OAAO,UAAU,EAAE;AAC5D,kBAAO,iBAAiB,UAAUK,GAAc,EAAE,SAAS,IAAM,GAC1D,MAAM,OAAO,oBAAoB,UAAUA,CAAY;AAAA,EAChE,GAAG,CAAA,CAAE,GAELD,EAAU,MAAM;AACd,QAAIR,GAAO;AACT,MAAAM,EAAiBN,CAAK;AACtB;AAAA,IACF;AAEA,UAAMU,IAAY,MAAMJ,EAAiBX,GAAa;AAGtD,QAFAe,EAAA,GAEI,OAAO,mBAAqB;AAC9B;AAGF,UAAMC,IAAW,IAAI,iBAAiBD,CAAS;AAC/C,WAAAC,EAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,YAAY;AAAA,MACZ,iBAAiB,CAAC,YAAY;AAAA,IAAA,CAC/B,GAEM,MAAMA,EAAS,WAAA;AAAA,EACxB,GAAG,CAACX,CAAK,CAAC;AAEV,QAAMY,IAAc,MAAMX,IAAA,GACpBY,IAAgB,CAACnB,MAA2B;AAChD,IAAIA,EAAE,QAAQ,WACZO,IAAA;AAAA,EAEJ;AAEA,SACE,gBAAAtB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAjB;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAkB,EAAC,OAAA,EAAI,WAAU,sCAAA,CAAsC;AAAA,QACrD,gBAAAD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,YAAY,wCACVwB,IAAa,QAAQ,KACvB;AAAA,cACA,cAAc,0DACZA,IAAa,QAAQ,KACvB;AAAA,YAAA;AAAA,YAGF,UAAA;AAAA,cAAA,gBAAAxB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAASsB,IAAcW,IAAc;AAAA,kBACrC,WAAWX,IAAcY,IAAgB;AAAA,kBACzC,MAAMZ,IAAc,WAAW;AAAA,kBAC/B,UAAUA,IAAc,IAAI;AAAA,kBAE3B,UAAA;AAAA,oBAAAM,KACC,gBAAA5B,EAAC,OAAA,EAAI,WAAU,uDACb,UAAA;AAAA,sBAAA,gBAAAC;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,KAAKS;AAAA,0BACL,WAAU;AAAA,0BACV,SAAS,CAACK,MAAM;AACb,4BAAAA,EAAE,OAA4B,MAAM,UAAU;AAC/C,kCAAMoB,IAAQpB,EAAE,OACb;AACH,4BAAIoB,MACFA,EAAK,MAAM,UAAU;AAAA,0BAEzB;AAAA,0BACA,KAAKP;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEP,gBAAA5B;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAU;AAAA,0BACV,MAAK;AAAA,0BACL,QAAO;AAAA,0BACP,aAAY;AAAA,0BACZ,SAAQ;AAAA,0BAER,UAAA;AAAA,4BAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,4BAAA,CAA4B;AAAA,4BACpC,gBAAAA,EAAC,QAAA,EAAK,GAAE,iCAAA,CAAiC;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAC3C,GACF;AAAA,qBAEAkB,KAASC,MACT,gBAAApB,EAAC,OAAA,EAAI,WAAU,uBACZ,UAAA;AAAA,sBAAAmB,KACC,gBAAAlB;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAU;AAAA,0BACV,OAAO,EAAE,YAAY,yBAAA;AAAA,0BAEpB,UAAAkB;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAGJC,KACC,gBAAAnB,EAAC,KAAA,EAAE,WAAU,uFACV,UAAAmB,EAAA,CACH;AAAA,oBAAA,EAAA,CAEJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGHG,KACC,gBAAAtB,EAAC,OAAA,EAAI,WAAU,0FACZ,UAAAsB,EAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAGN,GC9Jaa,IAA8B,CAAC;AAAA,EAC1C,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAA3D;AAAA,EACA,WAAAC;AAAA,EACA,WAAAH,IAAY;AAAA,EACZ,MAAAF,IAAO;AAAA,EACP,WAAAO,IAAY;AAAA,EACZ,IAAAyD;AAAA,EACA,GAAGrD;AACL,MAAM;AACJ,QAAMsD,IAAUD,KAAM,SAAS,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC,IACnEE,IAAW,CAAC,CAACJ,GAMbvC,IAAgB;AAAA,IACpB;AAAA,IACA2C,IACI,mHACA;AAAA,IACJ9D,IAAW,UAAU;AAAA,IACrBC,IAAY,UAAU;AAAA,IAX8C;AAAA,MACpE,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,EASSL,CAAI;AAAA,IACjBO;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACG,OAAA,EAAI,WAAW,yCAAyCL,IAAY,WAAW,EAAE,IAC/E,UAAA;AAAA,IAAA2D,KACC,gBAAApC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAASwC;AAAA,QAER,UAAAJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAGL,gBAAArC,EAAC,OAAA,EAAI,WAAU,2CACZ,UAAA;AAAA,MAAApB,KACC,gBAAAqB,EAAC,QAAA,EAAK,WAAU,0NACb,UAAArB,GACH;AAAA,MAEF,gBAAAqB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,oBACEqC,IACI,GAAGG,CAAO,WACVF,IACE,GAAGE,CAAO,YACV;AAAA,UAER,gBAAcC,IAAW,KAAO;AAAA,UAChC,WAAW3C;AAAA,UACX,IAAI0C;AAAA,UACH,GAAGtD;AAAA,QAAA;AAAA,MAAA;AAAA,MAELN,KACC,gBAAAoB,EAAC,QAAA,EAAK,WAAU,2NACb,UAAApB,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACCyD,KACC,gBAAArC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,IAAI,GAAGwC,CAAO;AAAA,QACd,MAAK;AAAA,QAEJ,UAAAH;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJC,KAAc,CAACD,KACd,gBAAArC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,IAAI,GAAGwC,CAAO;AAAA,QAEb,UAAAF;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAEJ,GCpFaI,IAA8B,CAAC;AAAA,EAC1C,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAA1B;AAAA,EACA,UAAAC;AAAA,EACA,UAAAtC;AAAA,EACA,MAAAN,IAAO;AAAA,EACP,iBAAAsE,IAAkB;AAAA,EAClB,qBAAAC,IAAsB;AAAA,EACtB,WAAAhE,IAAY;AACd,MAAM;AAwBJ,MAvBA8C,EAAU,OACJe,IACF,SAAS,KAAK,MAAM,WAAW,WAE/B,SAAS,KAAK,MAAM,WAAW,IAE1B,MAAM;AACX,aAAS,KAAK,MAAM,WAAW;AAAA,EACjC,IACC,CAACA,CAAM,CAAC,GAEXf,EAAU,MAAM;AACd,UAAMmB,IAAe,CAACjC,MAAqB;AACzC,MAAIA,EAAE,QAAQ,YAAY6B,KACxBC,EAAA;AAAA,IAEJ;AACA,WAAID,KACF,SAAS,iBAAiB,WAAWI,CAAY,GAE5C,MAAM,SAAS,oBAAoB,WAAWA,CAAY;AAAA,EACnE,GAAG,CAACJ,GAAQC,CAAO,CAAC,GAEhB,CAACD;AACH,WAAO;AAGT,QAAMK,IAAqB,CAAClC,MAAwC;AAClE,IAAIgC,KAAuBhC,EAAE,WAAWA,EAAE,iBACxC8B,EAAA;AAAA,EAEJ,GASM9C,IAAgB;AAAA,IACpB;AAAA,IARoE;AAAA,MACpE,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,IAAA,EAIOvB,CAAI;AAAA,IACjBO;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,mBAAiBkB,IAAQ,gBAAgB;AAAA,MACzC,cAAW;AAAA,MACX,WAAU;AAAA,MACV,SAAS8B;AAAA,MACT,MAAK;AAAA,MAEL,UAAA,gBAAAjD,EAAC,OAAA,EAAI,WAAWD,GACZ,UAAA;AAAA,SAAAoB,KAASC,KAAY0B,MACrB,gBAAA9C,EAAC,OAAA,EAAI,WAAU,wIACX,UAAA;AAAA,WAAAmB,KAASC,MACT,gBAAApB,EAAC,OAAA,EAAI,WAAU,UACZ,UAAA;AAAA,YAAAmB,KACC,gBAAAlB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,IAAG;AAAA,gBAEF,UAAAkB;AAAA,cAAA;AAAA,YAAA;AAAA,YAGJC,KACC,gBAAAnB,EAAC,KAAA,EAAE,WAAU,4GACV,UAAAmB,EAAA,CACH;AAAA,UAAA,GAEJ;AAAA,UAED0B,KACC,gBAAA7C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,cAAW;AAAA,cACX,WAAU;AAAA,cACV,SAAS4C;AAAA,cACT,MAAK;AAAA,cAEL,UAAA,gBAAA7C;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAU;AAAA,kBACV,QAAO;AAAA,kBACP,aAAY;AAAA,kBACZ,SAAQ;AAAA,kBAER,UAAA;AAAA,oBAAA,gBAAAC,EAAC,QAAA,EAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAA,CAAK;AAAA,oBACpC,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAA,CAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACtC;AAAA,UAAA;AAAA,QACF,GAEJ;AAAA,QAEF,gBAAAA,EAAC,OAAA,EAAI,WAAU,yFACZ,UAAAnB,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCpHaoE,IAAsC,CAAC;AAAA,EAClD,IAAAC,IAAK;AAAA,EACL,MAAA3E,IAAO;AAAA,EACP,QAAA4E,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,UAAAzE;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGI;AACL,MAAM;AACJ,QAAMqE,IAAYL,GACZzD,IAAoE;AAAA,IACxE,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAEA+D,IAAwE;AAAA,IAC5E,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,GAEJC,IAAsE;AAAA,IAC1E,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,EAAA,GAEL3D,IAAgB;AAAA,IACpB;AAAA,IACAL,EAAalB,CAAI;AAAA,IACjBiF,EAAeL,CAAM;AAAA,IACrBM,EAAcL,CAAK;AAAA,IACnBE,IAAS,WAAW;AAAA,IACpBD,IAAQ,6BAA6B;AAAA,IACrCvE;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACGyE,GAAA,EAAU,WAAWzD,GAAgB,GAAGZ,GACtC,UAAAL,GACH;AAEJ,GC9Ca6E,IAAoC,CAAC;AAAA,EAChD,IAAAR,IAAK;AAAA,EACL,MAAA3E,IAAO;AAAA,EACP,QAAA4E,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,UAAAzE;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGI;AACL,MAAM;AACJ,QAAMqE,IAAYL,GACZzD,IAAmE;AAAA,IACvE,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAEA+D,IAAuE;AAAA,IAC3E,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,EAAA,GAENC,IAAqE;AAAA,IACzE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA,GAEH3D,IAAgB;AAAA,IACpB;AAAA,IACAL,EAAalB,CAAI;AAAA,IACjBiF,EAAeL,CAAM;AAAA,IACrBM,EAAcL,CAAK;AAAA,IACnBE,IAAS,WAAW;AAAA,IACpBD,IAAQ,wCAAwC;AAAA,IAChDvE;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACGyE,GAAA,EAAU,WAAWzD,GAAgB,GAAGZ,GACtC,UAAAL,GACH;AAEJ,GC9Ca8E,IAA8B,CAAC;AAAA,EAC1C,IAAAT,IAAK;AAAA,EACL,MAAA3E,IAAO;AAAA,EACP,QAAA4E,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,UAAAQ,IAAW;AAAA,EACX,QAAAN,IAAS;AAAA,EACT,UAAAzE;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGI;AACL,MAAM;AACJ,QAAMqE,IAAYL,GACZzD,IAAgE;AAAA,IACpE,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EAAA,GAEH+D,IAAoE;AAAA,IACxE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,WAAW;AAAA,EAAA,GAEPC,IAAkE;AAAA,IACtE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA,GAEHI,IAAgBD,IAClB,2IACA,IACE9D,IAAgB;AAAA,IACpB;AAAA,IACAL,EAAalB,CAAI;AAAA,IACjBiF,EAAeL,CAAM;AAAA,IACrBM,EAAcL,CAAK;AAAA,IACnBE,IAAS,WAAW;AAAA,IACpBO;AAAA,IACA/E;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACGyE,GAAA,EAAU,WAAWzD,GAAgB,GAAGZ,GACtC,UAAAL,GACH;AAEJ,GCpDMiF,IAAeC,EAA4C,MAAS,GAE7DC,IAAW,MAAwB;AAC9C,QAAMC,IAAUC,EAAWJ,CAAY;AACvC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,8CAA8C;AAEhE,SAAOA;AACT,GAOaE,IAAgB,CAAC;AAAA,EAC5B,UAAAtF;AAAA,EACA,cAAAuF,IAAe;AACjB,MAA0B;AACxB,QAAM,CAAChD,GAAOiD,CAAQ,IAAIxD,EAAgB,MACpC,OAAO,SAAW,MACbuD,IAEK,OAAO,aAAa,QAAQ,OAAO,KACtBA,CAC5B;AAED,EAAAxC,EAAU,MAAM;AACd,IAAI,OAAO,SAAW,QAGtB,OAAO,aAAa,QAAQ,SAASR,CAAK,GAC1C,SAAS,gBAAgB,aAAa,cAAcA,CAAK;AAAA,EAC3D,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMkD,IAAc,MAAY;AAC9B,IAAAD,EAAS,CAACE,MAAUA,MAAS,SAAS,UAAU,MAAO;AAAA,EACzD;AAEA,SACE,gBAAAvE,EAAC8D,EAAa,UAAb,EAAsB,OAAO,EAAE,OAAA1C,GAAO,aAAAkD,KACpC,UAAAzF,GACH;AAEJ;"}