@lukso/transaction-view-core 0.7.8 → 0.7.9-dev.1664335

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/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/index.ts","../src/shared/address-display.ts","../src/shared/address-view.ts","../src/shared/load-web-components.ts","../src/styles/styles.css%3F__raw__","../src/styles/index.ts","../src/shared/custom-select.ts","../src/shared/function-name-view.ts","../src/shared/gas-provider-view.ts","../src/shared/icon-view.ts","../src/shared/image-loader-controller.ts","../src/shared/notification-view.ts","../src/shared/progress-view.ts","../src/shared/scroll-to-bottom-button.ts","../src/shared/signal-controller.ts","../src/shared/transaction-view-controller.ts","../src/shared/url-view.ts","../src/shared/value-view.ts","../src/utils.ts","../src/shared/image-list.ts","../src/components/info-panel.ts","../src/components/asset-card.ts","../src/components/description-view.ts","../src/components/universal-token-view.ts","../src/components/contract-card.ts","../src/components/permissions-block.ts","../src/components/transaction-playback.ts","../src/registry/lit-view-loader.ts","../src/registry/index.ts"],"sourcesContent":["// Shared atomic components\n\nexport { safeCustomElement } from '@lukso/core/utils'\n\nexport * from './address-display'\n// Export types\nexport type { AddressData } from './address-display.js'\nexport * from './address-view'\nexport * from './custom-select'\nexport * from './function-name-view'\nexport * from './gas-provider-view'\nexport * from './icon-view'\nexport {\n ImageLoaderController,\n type ImageLoadState,\n useImageLoader,\n} from './image-loader-controller.js'\nexport * from './notification-view'\nexport * from './progress-view'\nexport * from './scroll-to-bottom-button'\n// Export signal integration controllers and utilities\nexport {\n MultiSignalController,\n SignalController,\n useSignal,\n useSignals,\n} from './signal-controller.js'\nexport {\n TransactionSignalController,\n TransactionViewController,\n type TransactionViewState,\n useTransactionSignal,\n useTransactionView,\n} from './transaction-view-controller.js'\nexport * from './url-view'\nexport * from './value-view'\n","import { Task } from '@lit/task'\nimport { safeCustomElement } from '@lukso/core/utils'\nimport {\n useAddressResolver,\n useImageLoader,\n} from '@lukso/transaction-view-headless'\nimport { css, html, LitElement } from 'lit'\nimport { property } from 'lit/decorators.js'\n\n// LUKSO web components are loaded dynamically via plugin\n\n/**\n * Address data interface for display\n */\nexport interface AddressData {\n address: string\n name?: string\n lsp4TokenName?: string\n lsp4TokenSymbol?: string\n baseAsset?: {\n lsp4TokenName?: string\n lsp4TokenSymbol?: string\n }\n profileImages?: any[]\n avatar?: any[]\n icon?: any[]\n images?: any[]\n __gqltype?: string\n __identity?: string\n identity?: string\n}\n\n/**\n * Universal address display component with profile resolution\n *\n * Displays an address with profile image and name, supporting both\n * Universal Profiles and contract addresses with proper styling.\n *\n * @example\n * ```html\n * <address-display\n * address=\"0x1234...\"\n * .resolved=\"${resolvedData}\"\n * size=\"medium\"\n * show-copy-button\n * ></address-display>\n * ```\n */\n@safeCustomElement('address-display')\nexport class AddressDisplay extends LitElement {\n /**\n * The address to display (required)\n */\n @property() value!: string\n\n /**\n * @deprecated Use `value` instead\n */\n @property() address?: string\n\n /**\n * Resolved address data (profile, images, etc.)\n */\n @property({ type: Object }) resolved?: AddressData\n\n /**\n * Display size\n */\n @property() size: 'x-small' | 'small' | 'medium' | 'large' = 'small'\n\n /**\n * Optional label to display above the address\n */\n @property() label?: string\n\n /**\n * Whether to show the copy button\n */\n @property({ type: Boolean, attribute: 'show-copy-button' }) showCopyButton =\n false\n\n /**\n * Whether to show the full address or just the name\n */\n @property({ type: Boolean, attribute: 'name-only' }) nameOnly = false\n\n /**\n * Maximum width for the name display (in pixels)\n */\n @property({ type: Number, attribute: 'max-width' }) maxWidth = 200\n\n /**\n * Get the effective address value (supports both `value` and legacy `address` props)\n */\n private get effectiveAddress(): string {\n return this.value || this.address || ''\n }\n\n // Composables\n private imageLoader = useImageLoader()\n private addressResolver = useAddressResolver()\n isLoadingImage = false\n\n // Task for loading profile image\n private imageTask = new Task(this, {\n task: async ([resolved]) => {\n if (!resolved) return null\n\n this.isLoadingImage = true\n try {\n const image = await this.imageLoader.loadProfileImage(resolved, {\n width: this.getSizePixels(),\n height: this.getSizePixels(),\n dpr: window.devicePixelRatio || 1,\n })\n\n return image || this.imageLoader.getFallbackImage(resolved)\n } catch (error) {\n console.warn('Failed to load address image:', error)\n return this.imageLoader.getFallbackImage(resolved || {})\n } finally {\n this.isLoadingImage = false\n }\n },\n args: () => [this.resolved],\n })\n\n /**\n * Get pixel size for the current size setting\n */\n private getSizePixels(): number {\n switch (this.size) {\n case 'x-small':\n return 16\n case 'small':\n return 24\n case 'medium':\n return 32\n case 'large':\n return 48\n default:\n return 24\n }\n }\n\n /**\n * Get display name for the address\n */\n private getDisplayName(): string {\n if (!this.resolved) return 'Anonymous'\n\n const computedName = this.addressResolver.formatDisplayName(this.resolved)\n return computedName || 'Anonymous'\n }\n\n /**\n * Check if this is a contract address (shows square icon)\n */\n private get isContract(): boolean {\n return this.resolved\n ? this.imageLoader.isContractAddress(this.resolved)\n : false\n }\n\n /**\n * Get prefix for the address display\n */\n private get addressPrefix(): string {\n return this.resolved\n ? this.addressResolver.getAddressPrefix(this.resolved)\n : '@'\n }\n\n /**\n * Check if should show name colors\n */\n private get shouldShowNameColor(): boolean {\n return this.resolved\n ? this.addressResolver.shouldShowNameColor(this.resolved)\n : true\n }\n\n /**\n * Handle copy button click\n */\n private handleCopy() {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(this.effectiveAddress)\n // Dispatch copy event for parent components\n this.dispatchEvent(\n new CustomEvent('address-copied', {\n detail: { address: this.effectiveAddress },\n bubbles: true,\n })\n )\n }\n }\n\n /**\n * Handle address click\n */\n private handleAddressClick() {\n this.dispatchEvent(\n new CustomEvent('address-click', {\n detail: {\n address: this.effectiveAddress,\n resolved: this.resolved,\n },\n bubbles: true,\n })\n )\n }\n\n override render() {\n const imageResult = this.imageTask.value\n\n return html`\n <div class=\"address-container\">\n ${this.label ? html`<div class=\"label\">${this.label}</div>` : ''}\n \n <div class=\"address-display\" @click=${this.handleAddressClick}>\n <!-- Identity prefix (if present) -->\n ${\n this.resolved?.__identity\n ? html`\n <span class=\"identity\">\n ${this.resolved.__identity}\n <lukso-username\n address=${this.resolved.identity}\n size=${this.size}\n max-width=\"200\"\n has-name-color=\"false\"\n has-address-color=\"false\"\n ></lukso-username>\n of\n </span>\n `\n : ''\n }\n\n <!-- Profile image and name -->\n <lukso-profile\n size=${this.size}\n profile-address=${this.effectiveAddress}\n profile-url=${imageResult?.src || ''}\n has-identicon\n ?is-square=${this.isContract}\n ></lukso-profile>\n\n <!-- Address/Name display -->\n ${\n this.nameOnly\n ? html`\n <lukso-username\n name=${this.getDisplayName()}\n size=${this.size}\n max-width=${this.maxWidth}\n prefix=${this.addressPrefix}\n ?has-name-color=${this.shouldShowNameColor}\n has-address-color=\"false\"\n ></lukso-username>\n `\n : html`\n <lukso-username\n name=${this.getDisplayName()}\n address=${!this.isContract ? this.effectiveAddress : undefined}\n size=${this.size}\n max-width=${this.maxWidth}\n prefix=${this.addressPrefix}\n ?has-name-color=${this.shouldShowNameColor}\n ?has-address-color=${this.shouldShowNameColor}\n ></lukso-username>\n `\n }\n\n\n <!-- Copy button -->\n ${\n this.showCopyButton\n ? html`\n <button \n class=\"copy-button\"\n @click=${this.handleCopy}\n title=\"Copy address\"\n >\n 📋\n </button>\n `\n : ''\n }\n </div>\n </div>\n `\n }\n\n static override styles = css`\n :host {\n display: inline-block;\n }\n\n .address-container {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .label {\n font-size: 12px;\n color: var(--neutral-60, #666);\n font-weight: 500;\n }\n\n .address-display {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n transition: background-color 0.2s;\n min-width: 200px;\n }\n\n .address-display:hover {\n background-color: var(--neutral-95, #f5f5f5);\n }\n\n .identity {\n font-size: 12px;\n color: var(--neutral-60, #666);\n margin-right: 4px;\n }\n\n .copy-button {\n background: none;\n border: 1px solid var(--neutral-80, #ccc);\n border-radius: 4px;\n padding: 2px 4px;\n cursor: pointer;\n font-size: 12px;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n .copy-button:hover {\n background-color: var(--neutral-90, #eee);\n }\n\n .address-display:hover .copy-button {\n opacity: 1;\n }\n\n\n /* Ensure LUKSO web components are properly styled */\n lukso-profile,\n lukso-username {\n display: inline-flex;\n align-items: center;\n }\n `\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'address-display': AddressDisplay\n }\n}\n","import { Task } from '@lit/task'\nimport { safeCustomElement } from '@lukso/core/utils'\nimport { useAddressResolver } from '@lukso/transaction-view-headless'\nimport makeBlockie from 'ethereum-blockies-base64'\nimport { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\n\n// Import LUKSO web components\nimport './load-web-components'\nimport { CoreLitElement } from '../styles'\n\n/**\n * Address text view component (text only, no image)\n *\n * A text-only address display component that shows name and/or address.\n * Use alongside <icon-view> for complete address presentation.\n *\n * @example\n * ```html\n * <address-view\n * address=\"0x1234...\"\n * size=\"medium\"\n * ></address-view>\n * ```\n */\n@safeCustomElement('address-view')\nexport class AddressView extends CoreLitElement {\n /**\n * The address to display (required)\n */\n @property() address!: string\n\n /**\n * Display size\n */\n @property() size: 'x-small' | 'small' | 'medium' | 'large' = 'small'\n\n /**\n * Whether to show only the name (no address)\n */\n @property({ type: Boolean, attribute: 'name-only' }) nameOnly = false\n\n /**\n * Whether to show only the address (no name)\n */\n @property({ type: Boolean, attribute: 'address-only' }) addressOnly = false\n\n /**\n * Card view: render with bordered container, header label and copy button\n */\n @property({ type: Boolean, attribute: 'is-card-view' }) isCardView = false\n\n /**\n * Optional label to show in card header (only when isCardView)\n */\n @property() label?: string\n\n /**\n * Whether to show a copy button (only relevant for card view)\n */\n @property({ type: Boolean, attribute: 'show-copy-button' }) showCopyButton =\n false\n\n /**\n * Maximum width for the display (in pixels)\n */\n @property({ type: Number, attribute: 'max-width' }) maxWidth = 200\n\n /**\n * Whether to show the small identicon next to the name/address\n */\n @property({ type: Boolean, attribute: 'show-identicon' }) showIdenticon = true\n\n /**\n * Address text color token (e.g., \"red-55\")\n */\n @property({ type: String, attribute: 'address-color' }) addressColor?: string\n\n /**\n * Name text color token (e.g., \"blue-50\")\n */\n @property({ type: String, attribute: 'name-color' }) nameColor?: string\n\n // Internal state\n @state() private isLoadingAddress = false\n @state() private identicon?: string\n\n // Composables\n private addressResolver = useAddressResolver()\n\n // Task for resolving address data\n private addressTask = new Task(this, {\n task: async ([address]) => {\n if (!address) return null\n\n this.isLoadingAddress = true\n try {\n // Pass the full compound address to resolver (e.g., \"0x123...-0x456...\")\n const resolved = await this.addressResolver.resolveAddress(address)\n this.requestUpdate() // Force re-render after resolution\n return resolved\n } catch (_error) {\n return null\n } finally {\n this.isLoadingAddress = false\n }\n },\n args: () => [this.address] as const,\n })\n\n /**\n * Get the display address (first segment only for compound addresses)\n * e.g., \"0x123...-0x456...\" becomes \"0x123...\"\n */\n private get displayAddress(): string {\n return this.address.split('-')[0]\n }\n\n /**\n * Get display name for the address\n */\n private getDisplayName(): string {\n const resolved = this.addressTask.value\n\n if (!resolved) {\n return this.isLoadingAddress ? 'Loading...' : 'Anonymous'\n }\n const computedName = this.addressResolver.formatDisplayName(resolved)\n return this.label || computedName || 'Anonymous'\n }\n\n /**\n * Get prefix for the address display\n */\n private get addressPrefix(): string {\n const resolved = this.addressTask.value\n return resolved?.hasProfile ? '@' : ''\n }\n\n /**\n * Check if should show name colors\n */\n private get shouldShowNameColor(): boolean {\n const resolved = this.addressTask.value\n return resolved ? this.addressResolver.shouldShowNameColor(resolved) : true\n }\n\n /**\n * Handle address click\n */\n private handleClick() {\n this.dispatchEvent(\n new CustomEvent('address-click', {\n detail: {\n address: this.address,\n resolved: this.addressTask.value,\n },\n bubbles: true,\n })\n )\n }\n\n /** Generate identicon when address changes */\n protected willUpdate(changed: Map<string, unknown>) {\n if (changed.has('address') && this.address) {\n try {\n this.identicon = makeBlockie(this.displayAddress.toLowerCase())\n } catch {\n this.identicon = undefined\n }\n }\n }\n\n /** Copy the display address to clipboard (card view) */\n private handleCopy(event?: Event) {\n // Prevent triggering parent click handlers\n if (event) event.stopPropagation()\n if (navigator.clipboard) {\n navigator.clipboard.writeText(this.displayAddress)\n this.dispatchEvent(\n new CustomEvent('address-copied', {\n detail: { address: this.displayAddress },\n bubbles: true,\n })\n )\n }\n }\n\n /** ========== RENDER HELPERS (Use Cases) ========== */\n /** Pixel size mapping for identicon based on component size */\n private getIdenticonSizePx(): number {\n switch (this.size) {\n case 'x-small':\n return 10\n case 'small':\n return 12\n case 'medium':\n return 14\n case 'large':\n return 16\n default:\n return 14\n }\n }\n /**\n * Render only the name (and optionally the address hash when allowed for profiles)\n */\n private renderNameOnly(displayName: string) {\n return html`\n <!-- Name Only Use Case -->\n <lukso-username\n class=\"inline-block align-middle\"\n name=${displayName}\n address=${this.address}\n size=${this.size}\n max-width=${this.maxWidth}\n prefix=${this.addressPrefix}\n address-color=${this.addressColor}\n name-color=${this.nameColor}\n ></lukso-username>\n `\n }\n\n /**\n * Render only the raw address (no name)\n */\n private renderAddressOnly() {\n return html`\n <!-- Address Only Use Case -->\n <lukso-username\n class=\"inline-block align-middle\"\n address=${this.displayAddress}\n size=${this.size}\n max-width=${this.maxWidth}\n has-name-color=\"false\"\n ?has-address-color=${this.shouldShowNameColor}\n ></lukso-username>\n `\n }\n\n /**\n * Render both name and (conditionally) the address hash (profiles show hash, contracts may hide it)\n */\n private renderNameAndAddress(displayName: string) {\n return html`\n <!-- Name + Address Use Case -->\n <lukso-username\n class=\"inline-block align-middle\"\n name=${displayName}\n address=${this.address}\n size=${this.size}\n max-width=${this.maxWidth}\n prefix=${this.addressPrefix}\n address-color=${this.addressColor}\n name-color=${this.nameColor}\n ></lukso-username>\n `\n }\n\n private renderIdenticon() {\n if (!this.showIdenticon || !this.identicon) return ''\n const size = this.getIdenticonSizePx()\n return html`\n <div class=\"inline-flex items-center justify-center align-middle\">\n <img\n class=\"inline-block rounded-full ring-1 ring-neutral-90 shrink-0\"\n src=${this.identicon}\n alt=\"identicon\"\n style=\"width:${size}px;height:${size}px;image-rendering:pixelated;\"\n />\n </div>\n `\n }\n\n /** Map size to a typography class for the label */\n private getLabelClass(): string {\n switch (this.size) {\n case 'x-small':\n return 'paragraph-inter-12-semi-bold'\n case 'small':\n return 'heading-inter-14-bold'\n case 'medium':\n return 'heading-inter-17-semi-bold'\n case 'large':\n return 'heading-inter-21-semi-bold'\n default:\n return 'heading-inter-17-semi-bold'\n }\n }\n\n private renderDisplayName() {\n const displayName = this.getDisplayName()\n return this.label\n ? html`<div class=\"inline-flex items-center gap-2 font-semibold text-neutral-20 ${this.getLabelClass()}\">${\n this.label\n }</div>`\n : html`<lukso-username\n class=\"inline-block align-middle\"\n name=${displayName}\n size=${this.size}\n ?has-name-color=${this.shouldShowNameColor}\n ></lukso-username>`\n }\n\n /**\n * Decide which of the three core inline variants to render\n */\n private renderInlineVariant(displayName: string) {\n if (this.nameOnly) return this.renderNameOnly(displayName)\n if (this.addressOnly) return this.renderAddressOnly()\n return this.renderNameAndAddress(displayName)\n }\n\n override render() {\n const displayName = this.getDisplayName()\n // Card view layout\n if (this.isCardView) {\n return html`\n <div class=\"block border border-neutral-90 rounded-xl py-3 px-4 bg-neutral-100 min-w-[280px]\" @click=${\n this.handleClick\n }>\n <div class=\"flex items-center justify-between mb-2\">\n <div class=\"inline-flex items-center font-normal gap-1\">\n ${this.renderIdenticon()}\n ${this.renderDisplayName()}\n </div>\n ${\n this.showCopyButton\n ? html`<button\n class=\"bg-neutral-100 border-0 rounded-lg w-6 h-6 flex items-center justify-center cursor-pointer text-neutral-20 hover:bg-neutral-95\"\n @click=${(e: Event) => this.handleCopy(e)}\n title=\"Copy address\"\n >\n <lukso-icon name=\"copy\" size=\"small\"></lukso-icon>\n </button>`\n : html``\n }\n </div>\n <div class=\"font-semibold text-neutral-20 break-all flex items-center gap-2\">\n \n <lukso-username\n address=${this.displayAddress}\n size=${this.size}\n max-width=${this.maxWidth}\n has-name-color=\"false\"\n slice-by=\"24\"\n ?has-address-color=${this.shouldShowNameColor}\n ></lukso-username>\n </div>\n </div>\n `\n }\n\n // Inline/simple view (default)\n return html`\n <div class=\"inline-flex items-center cursor-pointer gap-1\" @click=${this.handleClick}>\n ${this.renderIdenticon()}\n <!-- Inline Variants -->\n ${this.renderInlineVariant(displayName)}\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'address-view': AddressView\n }\n}\n","/**\n * SSR-safe centralized import point for @lukso/web-components.\n *\n * ## Why this exists\n *\n * Web components crash during SSR, so apps use dynamic imports:\n * ```ts\n * // In an SSR app\n * const { TransactionPlayback } = await import('@lukso/transaction-view-core')\n * ```\n *\n * However, if the app ALSO needs to import @lukso/web-components directly:\n * ```ts\n * const webComponents = await import('@lukso/web-components')\n * ```\n *\n * This creates TWO dynamic import paths to the same components, causing\n * duplicate registration errors. This wrapper prevents that by making\n * registration idempotent.\n *\n * ## Usage\n *\n * Import this module instead of directly importing '@lukso/web-components':\n * ```ts\n * import './load-web-components'\n * ```\n */\n\n// Store the original customElements.define\nconst originalDefine =\n typeof customElements !== 'undefined'\n ? customElements.define.bind(customElements)\n : null\n\n// Wrap customElements.define to catch duplicate registration errors\nif (typeof customElements !== 'undefined' && originalDefine) {\n customElements.define = (\n name: string,\n // biome-ignore lint/suspicious/noShadowRestrictedNames: This is the web-components api.\n constructor: CustomElementConstructor,\n options?: ElementDefinitionOptions\n ) => {\n // Check if already defined\n if (!customElements.get(name)) {\n originalDefine(name, constructor, options)\n }\n // Silently ignore if already defined\n }\n}\n\n// Now import the web components (they'll use our wrapped define)\nimport './load-web-components'\n\n// Restore original define after import\nif (originalDefine && typeof customElements !== 'undefined') {\n customElements.define = originalDefine\n}\n","export default \"/**\\n * @file Main styles\\n *\\n * This file contain general styles that should be applied to host page.\\n */\\n:root {\\n --neutral-10: #121b21;\\n --neutral-15: #1b2832;\\n --neutral-20: #243542;\\n --neutral-25: #2d4253;\\n --neutral-30: #365063;\\n --neutral-35: #3e5d74;\\n --neutral-40: #476a85;\\n --neutral-45: #507795;\\n --neutral-50: #5985a6;\\n --neutral-55: #6a91af;\\n --neutral-60: #7a9db8;\\n --neutral-65: #8ba9c1;\\n --neutral-70: #9cb6c9;\\n --neutral-75: #acc2d2;\\n --neutral-80: #bdcedb;\\n --neutral-85: #cddae4;\\n --neutral-90: #dee7ed;\\n --neutral-95: #eef3f6;\\n --neutral-97: #f5f8fa;\\n --neutral-98: #f8fafb;\\n --neutral-100: #ffffff;\\n --honey-72: #fad275;\\n --honey-75: #fbd784;\\n --honey-82: #fce2a6;\\n --honey-85: #fce7b5;\\n --honey-92: #fef2d8;\\n --coral-65: #f37c58;\\n --coral-74: #f69e83;\\n --coral-75: #f7a288;\\n --coral-84: #fac3b3;\\n --coral-85: #fac7b7;\\n --coral-94: #fde9e2;\\n --warm-77: #ffbb8a;\\n --warm-87: #ffd8bd;\\n --warm-97: #fff6f0;\\n --sea-salt-57: #7fa4a4;\\n --sea-salt-67: #9db9b9;\\n --sea-salt-88: #dbe6e6;\\n --cloud-43: #447c97;\\n --cloud-75: #a7c7d7;\\n --cloud-88: #d5e4ec;\\n --ocean-38: #3c6286;\\n --ocean-75: #a7c0d7;\\n --ocean-88: #d5e1ec;\\n --sky-64: #68a5de;\\n --sky-75: #96c1e8;\\n --sky-85: #c0daf1;\\n --lukso-50: #aa5578;\\n --lukso-60: #bb7793;\\n --lukso-70: #cc99ae;\\n --lukso-80: #ddbbc9;\\n --lukso-90: #eedde4;\\n --yellow-25: #804d00;\\n --yellow-55: #ffa31a;\\n --yellow-65: #ffb84d;\\n --yellow-75: #ffcc80;\\n --yellow-85: #ffe0b3;\\n --yellow-95: #fff5e5;\\n --green-45: #31b452;\\n --green-54: #47cd68;\\n --green-63: #6bd686;\\n --green-75: #9be4ad;\\n --green-85: #c3efce;\\n --green-95: #ebfaef;\\n --blue-40: #0452c8;\\n --blue-50: #0567fa;\\n --blue-60: #3785fb;\\n --blue-75: #82b3fc;\\n --blue-85: #b4d1fd;\\n --blue-95: #e6f0fe;\\n --red-55: #e23636;\\n --red-65: #e96363;\\n --red-75: #ef8f8f;\\n --red-85: #f5bcbc;\\n --red-95: #fce9e9;\\n --purple-15: #1d202f;\\n --purple-18: #232739;\\n --purple-31: #3c4262;\\n --purple-41: #4f5882;\\n --purple-51: #646ea0;\\n --purple-58: #7a83ae;\\n --purple-63: #8a92b7;\\n --purple-82: #c6cadc;\\n --purple-94: #ecedf3;\\n --pink-90: #f8dad3;\\n --pink-91: #f9ddd7;\\n --pink-92: #f9e1dc;\\n --pink-93: #fae5e0;\\n --pink-94: #fbe9e5;\\n --pink-95: #fcece9;\\n --pink-96: #fcf0ed;\\n --pink-97: #fdf4f2;\\n --measure-50: #e8178a;\\n --measure-70: #f174b9;\\n --measure-80: #f6a2d0;\\n --measure-97: #fef1f8;\\n --grey-10: #1a1a1a;\\n --grey-15: #262626;\\n --grey-20: #333333;\\n --grey-25: #404040;\\n --grey-30: #4d4d4d;\\n --grey-35: #595959;\\n --grey-40: #666666;\\n --grey-45: #737373;\\n --grey-50: #808080;\\n --grey-55: #8c8c8c;\\n --grey-60: #999999;\\n --grey-65: #a6a6a6;\\n --grey-70: #b3b3b3;\\n --grey-75: #bfbfbf;\\n --grey-80: #cccccc;\\n --gradient-1-start: #D39B9D;\\n --gradient-1-end: #9071D1;\\n --gradient-2-start: #F8DAD3;\\n --gradient-2-end: #CC99AE;\\n --gradient-3-start: #393e56;\\n --gradient-3-end: #646ea0;\\n}\\n/**\\n * @file Fonts\\n *\\n * This file contains all fonts used in designs.\\n */\\n@font-face {\\n font-family: Inter;\\n src: url(\\\"/assets/fonts/Inter-Regular.woff2\\\") format(\\\"woff2\\\");\\n font-weight: normal;\\n font-style: normal;\\n font-display: swap;\\n}\\n@font-face {\\n font-family: Inter;\\n src: url(\\\"/assets/fonts/Inter-ExtraBold.woff2\\\") format(\\\"woff2\\\");\\n font-weight: 800;\\n font-style: normal;\\n font-display: swap;\\n}\\n@font-face {\\n font-family: Inter;\\n src: url(\\\"/assets/fonts/Inter-Bold.woff2\\\") format(\\\"woff2\\\");\\n font-weight: bold;\\n font-style: normal;\\n font-display: swap;\\n}\\n@font-face {\\n font-family: Inter;\\n src: url(\\\"/assets/fonts/Inter-SemiBold.woff2\\\") format(\\\"woff2\\\");\\n font-weight: 600;\\n font-style: normal;\\n font-display: swap;\\n}\\n@font-face {\\n font-family: Inter;\\n src: url(\\\"/assets/fonts/Inter-Medium.woff2\\\") format(\\\"woff2\\\");\\n font-weight: 500;\\n font-style: normal;\\n font-display: swap;\\n}\\n@font-face {\\n font-family: Inter;\\n src: url(\\\"/assets/fonts/Inter-Thin.woff2\\\") format(\\\"woff2\\\");\\n font-weight: 100;\\n font-style: normal;\\n font-display: swap;\\n}\\n@font-face {\\n font-family: \\\"PT Mono\\\";\\n src: url(\\\"/assets/fonts/PT-Mono-Regular.woff2\\\") format(\\\"woff2\\\");\\n font-weight: normal;\\n font-style: normal;\\n}\\n@font-face {\\n font-family: \\\"PT Mono\\\";\\n src: url(\\\"/assets/fonts/PT-Mono-Bold.woff2\\\") format(\\\"woff2\\\");\\n font-weight: bold;\\n font-style: normal;\\n}\\n/**\\n * @file Typography\\n *\\n * This file contains all typography classes used in designs.\\n * They should be used instead of individual font attributes.\\n *\\n * You can use them same as the normal Tailwind classes, e.g.: class=\\\"heading-inter-26-semi-bold\\\"\\n */\\n/**\\n * @file Variables\\n *\\n * This file contains all CSS variables used in designs.\\n */\\n/**\\n * Tailwind v4 shadow system variables\\n * Web components use Tailwind v4 internally, which requires these CSS variables\\n * to be initialized for box-shadow to render correctly in Tailwind v3 consumers.\\n */\\n*,\\n::after,\\n::before,\\n::backdrop,\\n::file-selector-button {\\n --tw-border-style: solid;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-inset-shadow: 0 0 #0000;\\n --tw-inset-shadow-colored: 0 0 #0000;\\n --tw-ring-color: initial;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-inset-ring-color: initial;\\n --tw-inset-ring-shadow: 0 0 #0000;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-offset-shadow: 0 0 #0000;\\n}\\n.tippy-box[data-animation=fade][data-state=hidden] {\\n opacity: 0;\\n}\\n.tippy-arrow::before {\\n content: \\\"\\\";\\n position: absolute;\\n border-color: transparent;\\n border-style: solid;\\n}\\n.tippy-box[data-placement^=top] > .tippy-arrow::before {\\n border-top-color: initial;\\n transform-origin: center top;\\n}\\n.tippy-box[data-placement^=bottom] > .tippy-arrow::before {\\n border-bottom-color: initial;\\n transform-origin: center bottom;\\n}\\n.tippy-box[data-placement^=left] > .tippy-arrow::before {\\n border-left-color: initial;\\n transform-origin: center left;\\n}\\n.tippy-box[data-placement^=right] > .tippy-arrow::before {\\n border-right-color: initial;\\n transform-origin: center right;\\n}\\n.tippy-box[data-inertia][data-state=visible] {\\n transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11);\\n}\\n.tippy-arrow {\\n width: 16px;\\n height: 16px;\\n}\\n.tippy-size-medium {\\n border-radius: 4px;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 10px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 12px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-size-medium[data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-size-medium[data-placement^=top] > .tippy-arrow::before {\\n bottom: -6px;\\n left: 2px;\\n border-width: 6px 6px 0;\\n}\\n.tippy-size-medium[data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-size-medium[data-placement^=bottom] > .tippy-arrow::before {\\n top: -6px;\\n left: 2px;\\n border-width: 0 6px 6px;\\n}\\n.tippy-size-medium[data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-size-medium[data-placement^=left] > .tippy-arrow::before {\\n border-width: 6px 0 6px 6px;\\n right: -6px;\\n top: 2px;\\n}\\n.tippy-size-medium[data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-size-medium[data-placement^=right] > .tippy-arrow::before {\\n left: -6px;\\n top: 2px;\\n border-width: 6px 6px 6px 0;\\n}\\n.tippy-size-large {\\n border-radius: 8px;\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-size-large[data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-size-large[data-placement^=top] > .tippy-arrow::before {\\n bottom: -8px;\\n left: 0;\\n border-width: 8px 8px 0;\\n}\\n.tippy-size-large[data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-size-large[data-placement^=bottom] > .tippy-arrow::before {\\n top: -8px;\\n left: 0;\\n border-width: 0 8px 8px;\\n}\\n.tippy-size-large[data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-size-large[data-placement^=left] > .tippy-arrow::before {\\n border-width: 8px 0 8px 8px;\\n right: -8px;\\n}\\n.tippy-size-large[data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-size-large[data-placement^=right] > .tippy-arrow::before {\\n left: -8px;\\n border-width: 8px 8px 8px 0;\\n}\\n.tippy-variant-dark {\\n --tw-bg-opacity: 1;\\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-variant-dark[data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-dark[data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-dark[data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-dark[data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-dark > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-variant-dark > .tippy-svg-arrow {\\n fill: #365063;\\n}\\n.tippy-variant-light {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.tippy-variant-light[data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-light[data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-light[data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-light[data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-light > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-variant-light > .tippy-svg-arrow {\\n fill: #f5f8fa;\\n}\\n.tippy-variant-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.tippy-variant-white[data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-white[data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-white[data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-white[data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-white > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-variant-white > .tippy-svg-arrow {\\n fill: #ffffff;\\n}\\n.tippy-variant-success {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-variant-success[data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-success[data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-success[data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-success[data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-success > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-variant-success > .tippy-svg-arrow {\\n fill: #47cd68;\\n}\\n.tippy-variant-danger {\\n --tw-bg-opacity: 1;\\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-variant-danger[data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-danger[data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-danger[data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-danger[data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-variant-danger > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-variant-danger > .tippy-svg-arrow {\\n fill: #e96363;\\n}\\n.tippy-box[data-theme~=dark-medium] {\\n border-radius: 4px;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 10px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 12px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=top] > .tippy-arrow::before {\\n bottom: -6px;\\n left: 2px;\\n border-width: 6px 6px 0;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=bottom] > .tippy-arrow::before {\\n top: -6px;\\n left: 2px;\\n border-width: 0 6px 6px;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=left] > .tippy-arrow::before {\\n border-width: 6px 0 6px 6px;\\n right: -6px;\\n top: 2px;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=right] > .tippy-arrow::before {\\n left: -6px;\\n top: 2px;\\n border-width: 6px 6px 6px 0;\\n}\\n.tippy-box[data-theme~=dark-medium] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-medium][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-medium] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-medium] > .tippy-svg-arrow {\\n fill: #365063;\\n}\\n.tippy-box[data-theme~=dark-large] {\\n border-radius: 8px;\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=top] > .tippy-arrow::before {\\n bottom: -8px;\\n left: 0;\\n border-width: 8px 8px 0;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=bottom] > .tippy-arrow::before {\\n top: -8px;\\n left: 0;\\n border-width: 0 8px 8px;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=left] > .tippy-arrow::before {\\n border-width: 8px 0 8px 8px;\\n right: -8px;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=right] > .tippy-arrow::before {\\n left: -8px;\\n border-width: 8px 8px 8px 0;\\n}\\n.tippy-box[data-theme~=dark-large] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-large][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(54 80 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-large] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(54 80 99 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=dark-large] > .tippy-svg-arrow {\\n fill: #365063;\\n}\\n.tippy-box[data-theme~=light-medium] {\\n border-radius: 4px;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 10px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 12px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=top] > .tippy-arrow::before {\\n bottom: -6px;\\n left: 2px;\\n border-width: 6px 6px 0;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=bottom] > .tippy-arrow::before {\\n top: -6px;\\n left: 2px;\\n border-width: 0 6px 6px;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=left] > .tippy-arrow::before {\\n border-width: 6px 0 6px 6px;\\n right: -6px;\\n top: 2px;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=right] > .tippy-arrow::before {\\n left: -6px;\\n top: 2px;\\n border-width: 6px 6px 6px 0;\\n}\\n.tippy-box[data-theme~=light-medium] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-medium][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-medium] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-medium] > .tippy-svg-arrow {\\n fill: #f5f8fa;\\n}\\n.tippy-box[data-theme~=light-large] {\\n border-radius: 8px;\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=top] > .tippy-arrow::before {\\n bottom: -8px;\\n left: 0;\\n border-width: 8px 8px 0;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=bottom] > .tippy-arrow::before {\\n top: -8px;\\n left: 0;\\n border-width: 0 8px 8px;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=left] > .tippy-arrow::before {\\n border-width: 8px 0 8px 8px;\\n right: -8px;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=right] > .tippy-arrow::before {\\n left: -8px;\\n border-width: 8px 8px 8px 0;\\n}\\n.tippy-box[data-theme~=light-large] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-large][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(245 248 250 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-large] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 248 250 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=light-large] > .tippy-svg-arrow {\\n fill: #f5f8fa;\\n}\\n.tippy-box[data-theme~=white-medium] {\\n border-radius: 4px;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 10px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 12px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=top] > .tippy-arrow::before {\\n bottom: -6px;\\n left: 2px;\\n border-width: 6px 6px 0;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=bottom] > .tippy-arrow::before {\\n top: -6px;\\n left: 2px;\\n border-width: 0 6px 6px;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=left] > .tippy-arrow::before {\\n border-width: 6px 0 6px 6px;\\n right: -6px;\\n top: 2px;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=right] > .tippy-arrow::before {\\n left: -6px;\\n top: 2px;\\n border-width: 6px 6px 6px 0;\\n}\\n.tippy-box[data-theme~=white-medium] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-medium][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-medium] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-medium] > .tippy-svg-arrow {\\n fill: #ffffff;\\n}\\n.tippy-box[data-theme~=white-large] {\\n border-radius: 8px;\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=top] > .tippy-arrow::before {\\n bottom: -8px;\\n left: 0;\\n border-width: 8px 8px 0;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=bottom] > .tippy-arrow::before {\\n top: -8px;\\n left: 0;\\n border-width: 0 8px 8px;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=left] > .tippy-arrow::before {\\n border-width: 8px 0 8px 8px;\\n right: -8px;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=right] > .tippy-arrow::before {\\n left: -8px;\\n border-width: 8px 8px 8px 0;\\n}\\n.tippy-box[data-theme~=white-large] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-large][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-large] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=white-large] > .tippy-svg-arrow {\\n fill: #ffffff;\\n}\\n.tippy-box[data-theme~=success-medium] {\\n border-radius: 4px;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 10px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 12px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=top] > .tippy-arrow::before {\\n bottom: -6px;\\n left: 2px;\\n border-width: 6px 6px 0;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=bottom] > .tippy-arrow::before {\\n top: -6px;\\n left: 2px;\\n border-width: 0 6px 6px;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=left] > .tippy-arrow::before {\\n border-width: 6px 0 6px 6px;\\n right: -6px;\\n top: 2px;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=right] > .tippy-arrow::before {\\n left: -6px;\\n top: 2px;\\n border-width: 6px 6px 6px 0;\\n}\\n.tippy-box[data-theme~=success-medium] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-medium][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-medium] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-medium] > .tippy-svg-arrow {\\n fill: #47cd68;\\n}\\n.tippy-box[data-theme~=success-large] {\\n border-radius: 8px;\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=top] > .tippy-arrow::before {\\n bottom: -8px;\\n left: 0;\\n border-width: 8px 8px 0;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=bottom] > .tippy-arrow::before {\\n top: -8px;\\n left: 0;\\n border-width: 0 8px 8px;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=left] > .tippy-arrow::before {\\n border-width: 8px 0 8px 8px;\\n right: -8px;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=right] > .tippy-arrow::before {\\n left: -8px;\\n border-width: 8px 8px 8px 0;\\n}\\n.tippy-box[data-theme~=success-large] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-large][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(71 205 104 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-large] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 205 104 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=success-large] > .tippy-svg-arrow {\\n fill: #47cd68;\\n}\\n.tippy-box[data-theme~=danger-medium] {\\n border-radius: 4px;\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 10px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 12px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=top] > .tippy-arrow::before {\\n bottom: -6px;\\n left: 2px;\\n border-width: 6px 6px 0;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=bottom] > .tippy-arrow::before {\\n top: -6px;\\n left: 2px;\\n border-width: 0 6px 6px;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=left] > .tippy-arrow::before {\\n border-width: 6px 0 6px 6px;\\n right: -6px;\\n top: 2px;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=right] > .tippy-arrow::before {\\n left: -6px;\\n top: 2px;\\n border-width: 6px 6px 6px 0;\\n}\\n.tippy-box[data-theme~=danger-medium] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-medium][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-medium] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-medium] > .tippy-svg-arrow {\\n fill: #e96363;\\n}\\n.tippy-box[data-theme~=danger-large] {\\n border-radius: 8px;\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n --tw-shadow: 0px 27px 12px 0px rgba(63, 93, 116, 0.00), 0px 18px 7px 0px rgba(63, 93, 116, 0.02), 0px 10px 6px 0px rgba(63, 93, 116, 0.08), 0px 4px 4px 0px rgba(63, 93, 116, 0.13), 0px 1px 2px 0px rgba(63, 93, 116, 0.15), 0px 0px 14px 0px rgba(63, 93, 116, 0.16);\\n --tw-shadow-colored: 0px 27px 12px 0px var(--tw-shadow-color), 0px 18px 7px 0px var(--tw-shadow-color), 0px 10px 6px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color), 0px 0px 14px 0px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=top] > .tippy-arrow {\\n bottom: 0;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=top] > .tippy-arrow::before {\\n bottom: -8px;\\n left: 0;\\n border-width: 8px 8px 0;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=bottom] > .tippy-arrow {\\n top: 0;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=bottom] > .tippy-arrow::before {\\n top: -8px;\\n left: 0;\\n border-width: 0 8px 8px;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=left] > .tippy-arrow {\\n right: 0;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=left] > .tippy-arrow::before {\\n border-width: 8px 0 8px 8px;\\n right: -8px;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=right] > .tippy-arrow {\\n left: 0;\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=right] > .tippy-arrow::before {\\n left: -8px;\\n border-width: 8px 8px 8px 0;\\n}\\n.tippy-box[data-theme~=danger-large] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=top] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-top-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=bottom] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-bottom-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=left] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-left-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-large][data-placement^=right] .tippy-arrow::before {\\n --tw-border-opacity: 1;\\n border-right-color: rgb(233 99 99 / var(--tw-border-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-large] > .tippy-backdrop {\\n --tw-bg-opacity: 1;\\n background-color: rgb(233 99 99 / var(--tw-bg-opacity, 1));\\n}\\n.tippy-box[data-theme~=danger-large] > .tippy-svg-arrow {\\n fill: #e96363;\\n}\\n*, ::before, ::after {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}\\n::backdrop {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}\\n/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com\\n */\\n/*\\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\\n*/\\n*,\\n::before,\\n::after {\\n box-sizing: border-box; /* 1 */\\n border-width: 0; /* 2 */\\n border-style: solid; /* 2 */\\n border-color: #e5e7eb; /* 2 */\\n}\\n::before,\\n::after {\\n --tw-content: '';\\n}\\n/*\\n1. Use a consistent sensible line-height in all browsers.\\n2. Prevent adjustments of font size after orientation changes in iOS.\\n3. Use a more readable tab size.\\n4. Use the user's configured `sans` font-family by default.\\n5. Use the user's configured `sans` font-feature-settings by default.\\n6. Use the user's configured `sans` font-variation-settings by default.\\n7. Disable tap highlights on iOS\\n*/\\nhtml,\\n:host {\\n line-height: 1.5; /* 1 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n -moz-tab-size: 4; /* 3 */\\n -o-tab-size: 4;\\n tab-size: 4; /* 3 */\\n font-family: ui-sans-serif, system-ui, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\"; /* 4 */\\n font-feature-settings: normal; /* 5 */\\n font-variation-settings: normal; /* 6 */\\n -webkit-tap-highlight-color: transparent; /* 7 */\\n}\\n/*\\n1. Remove the margin in all browsers.\\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\\n*/\\nbody {\\n margin: 0; /* 1 */\\n line-height: inherit; /* 2 */\\n}\\n/*\\n1. Add the correct height in Firefox.\\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n3. Ensure horizontal rules are visible by default.\\n*/\\nhr {\\n height: 0; /* 1 */\\n color: inherit; /* 2 */\\n border-top-width: 1px; /* 3 */\\n}\\n/*\\nAdd the correct text decoration in Chrome, Edge, and Safari.\\n*/\\nabbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n}\\n/*\\nRemove the default font size and weight for headings.\\n*/\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n/*\\nReset links to optimize for opt-in styling instead of opt-out.\\n*/\\na {\\n color: inherit;\\n text-decoration: inherit;\\n}\\n/*\\nAdd the correct font weight in Edge and Safari.\\n*/\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n/*\\n1. Use the user's configured `mono` font-family by default.\\n2. Use the user's configured `mono` font-feature-settings by default.\\n3. Use the user's configured `mono` font-variation-settings by default.\\n4. Correct the odd `em` font sizing in all browsers.\\n*/\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: \\\"PT Mono\\\", sans-serif; /* 1 */\\n font-feature-settings: normal; /* 2 */\\n font-variation-settings: normal; /* 3 */\\n font-size: 1em; /* 4 */\\n}\\n/*\\nAdd the correct font size in all browsers.\\n*/\\nsmall {\\n font-size: 80%;\\n}\\n/*\\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\\n*/\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\nsub {\\n bottom: -0.25em;\\n}\\nsup {\\n top: -0.5em;\\n}\\n/*\\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n3. Remove gaps between table borders by default.\\n*/\\ntable {\\n text-indent: 0; /* 1 */\\n border-color: inherit; /* 2 */\\n border-collapse: collapse; /* 3 */\\n}\\n/*\\n1. Change the font styles in all browsers.\\n2. Remove the margin in Firefox and Safari.\\n3. Remove default padding in all browsers.\\n*/\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit; /* 1 */\\n font-feature-settings: inherit; /* 1 */\\n font-variation-settings: inherit; /* 1 */\\n font-size: 100%; /* 1 */\\n font-weight: inherit; /* 1 */\\n line-height: inherit; /* 1 */\\n letter-spacing: inherit; /* 1 */\\n color: inherit; /* 1 */\\n margin: 0; /* 2 */\\n padding: 0; /* 3 */\\n}\\n/*\\nRemove the inheritance of text transform in Edge and Firefox.\\n*/\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Remove default button styles.\\n*/\\nbutton,\\ninput:where([type='button']),\\ninput:where([type='reset']),\\ninput:where([type='submit']) {\\n -webkit-appearance: button; /* 1 */\\n background-color: transparent; /* 2 */\\n background-image: none; /* 2 */\\n}\\n/*\\nUse the modern Firefox focus style for all focusable elements.\\n*/\\n:-moz-focusring {\\n outline: auto;\\n}\\n/*\\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\\n*/\\n:-moz-ui-invalid {\\n box-shadow: none;\\n}\\n/*\\nAdd the correct vertical alignment in Chrome and Firefox.\\n*/\\nprogress {\\n vertical-align: baseline;\\n}\\n/*\\nCorrect the cursor style of increment and decrement buttons in Safari.\\n*/\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n height: auto;\\n}\\n/*\\n1. Correct the odd appearance in Chrome and Safari.\\n2. Correct the outline style in Safari.\\n*/\\n[type='search'] {\\n -webkit-appearance: textfield; /* 1 */\\n outline-offset: -2px; /* 2 */\\n}\\n/*\\nRemove the inner padding in Chrome and Safari on macOS.\\n*/\\n::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Change font properties to `inherit` in Safari.\\n*/\\n::-webkit-file-upload-button {\\n -webkit-appearance: button; /* 1 */\\n font: inherit; /* 2 */\\n}\\n/*\\nAdd the correct display in Chrome and Safari.\\n*/\\nsummary {\\n display: list-item;\\n}\\n/*\\nRemoves the default spacing and border for appropriate elements.\\n*/\\nblockquote,\\ndl,\\ndd,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nhr,\\nfigure,\\np,\\npre {\\n margin: 0;\\n}\\nfieldset {\\n margin: 0;\\n padding: 0;\\n}\\nlegend {\\n padding: 0;\\n}\\nol,\\nul,\\nmenu {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n/*\\nReset default styling for dialogs.\\n*/\\ndialog {\\n padding: 0;\\n}\\n/*\\nPrevent resizing textareas horizontally by default.\\n*/\\ntextarea {\\n resize: vertical;\\n}\\n/*\\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\\n2. Set the default placeholder color to the user's configured gray 400 color.\\n*/\\ninput::-moz-placeholder, textarea::-moz-placeholder {\\n opacity: 1; /* 1 */\\n color: #9ca3af; /* 2 */\\n}\\ninput::placeholder,\\ntextarea::placeholder {\\n opacity: 1; /* 1 */\\n color: #9ca3af; /* 2 */\\n}\\n/*\\nSet the default cursor for buttons.\\n*/\\nbutton,\\n[role=\\\"button\\\"] {\\n cursor: pointer;\\n}\\n/*\\nMake sure disabled buttons don't get the pointer cursor.\\n*/\\n:disabled {\\n cursor: default;\\n}\\n/*\\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\\n This can trigger a poorly considered lint error in some tools but is included by design.\\n*/\\nimg,\\nsvg,\\nvideo,\\ncanvas,\\naudio,\\niframe,\\nembed,\\nobject {\\n display: block; /* 1 */\\n vertical-align: middle; /* 2 */\\n}\\n/*\\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\\n*/\\nimg,\\nvideo {\\n max-width: 100%;\\n height: auto;\\n}\\n/* Make elements with the HTML hidden attribute stay hidden by default */\\n[hidden]:where(:not([hidden=\\\"until-found\\\"])) {\\n display: none;\\n}\\n.heading-inter-21-semi-bold {\\n font-family: Inter, sans-serif;\\n font-size: 21px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 26px;\\n}\\n.heading-inter-17-semi-bold {\\n font-family: Inter, sans-serif;\\n font-size: 17px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 22px;\\n}\\n.heading-inter-14-bold {\\n font-family: Inter, sans-serif;\\n font-size: 14px;\\n font-weight: 700;\\n font-style: normal;\\n line-height: 17px;\\n}\\n.paragraph-inter-20-regular {\\n font-family: Inter, sans-serif;\\n font-size: 20px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 32px;\\n}\\n.paragraph-inter-16-regular {\\n font-family: Inter, sans-serif;\\n font-size: 16px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 24px;\\n}\\n.paragraph-inter-14-regular {\\n font-family: Inter, sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 22px;\\n}\\n.paragraph-inter-14-semi-bold {\\n font-family: Inter, sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 22px;\\n}\\n.paragraph-inter-12-regular {\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 400;\\n font-style: normal;\\n line-height: 20px;\\n}\\n.paragraph-inter-12-medium {\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n font-style: normal;\\n line-height: 20px;\\n}\\n.paragraph-inter-12-semi-bold {\\n font-family: Inter, sans-serif;\\n font-size: 12px;\\n font-weight: 600;\\n font-style: normal;\\n line-height: 20px;\\n}\\n.paragraph-ptmono-24-bold {\\n font-family: \\\"PT Mono\\\", sans-serif;\\n font-size: 24px;\\n font-weight: 700;\\n font-style: normal;\\n line-height: 26px;\\n}\\n.paragraph-ptmono-16-bold {\\n font-family: \\\"PT Mono\\\", sans-serif;\\n font-size: 16px;\\n font-weight: 700;\\n font-style: normal;\\n line-height: 22px;\\n}\\n.paragraph-ptmono-14-bold {\\n font-family: \\\"PT Mono\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 700;\\n font-style: normal;\\n line-height: 20px;\\n}\\n.paragraph-ptmono-12-bold {\\n font-family: \\\"PT Mono\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 700;\\n font-style: normal;\\n line-height: 14px;\\n}\\n.container {\\n width: 100%;\\n}\\n@media (min-width: 640px) {\\n .container {\\n max-width: 640px;\\n }\\n}\\n@media (min-width: 768px) {\\n .container {\\n max-width: 768px;\\n }\\n}\\n@media (min-width: 1024px) {\\n .container {\\n max-width: 1024px;\\n }\\n}\\n@media (min-width: 1280px) {\\n .container {\\n max-width: 1280px;\\n }\\n}\\n@media (min-width: 1536px) {\\n .container {\\n max-width: 1536px;\\n }\\n}\\n.prose {\\n color: var(--tw-prose-body);\\n max-width: 65ch;\\n}\\n.prose :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n}\\n.prose :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-lead);\\n font-size: 1.25em;\\n line-height: 1.6;\\n margin-top: 1.2em;\\n margin-bottom: 1.2em;\\n}\\n.prose :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-links);\\n text-decoration: underline;\\n font-weight: 500;\\n}\\n.prose :where(strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-bold);\\n font-weight: 600;\\n}\\n.prose :where(a strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(blockquote strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(thead th strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: decimal;\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n padding-inline-start: 1.625em;\\n}\\n.prose :where(ol[type=\\\"A\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-alpha;\\n}\\n.prose :where(ol[type=\\\"a\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-alpha;\\n}\\n.prose :where(ol[type=\\\"A\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-alpha;\\n}\\n.prose :where(ol[type=\\\"a\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-alpha;\\n}\\n.prose :where(ol[type=\\\"I\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-roman;\\n}\\n.prose :where(ol[type=\\\"i\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-roman;\\n}\\n.prose :where(ol[type=\\\"I\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-roman;\\n}\\n.prose :where(ol[type=\\\"i\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-roman;\\n}\\n.prose :where(ol[type=\\\"1\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: decimal;\\n}\\n.prose :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: disc;\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n padding-inline-start: 1.625em;\\n}\\n.prose :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::marker {\\n font-weight: 400;\\n color: var(--tw-prose-counters);\\n}\\n.prose :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::marker {\\n color: var(--tw-prose-bullets);\\n}\\n.prose :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n margin-top: 1.25em;\\n}\\n.prose :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-color: var(--tw-prose-hr);\\n border-top-width: 1px;\\n margin-top: 3em;\\n margin-bottom: 3em;\\n}\\n.prose :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 500;\\n font-style: italic;\\n color: var(--tw-prose-quotes);\\n border-inline-start-width: 0.25rem;\\n border-inline-start-color: var(--tw-prose-quote-borders);\\n quotes: \\\"\\\\201C\\\"\\\"\\\\201D\\\"\\\"\\\\2018\\\"\\\"\\\\2019\\\";\\n margin-top: 1.6em;\\n margin-bottom: 1.6em;\\n padding-inline-start: 1em;\\n}\\n.prose :where(blockquote p:first-of-type):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::before {\\n content: open-quote;\\n}\\n.prose :where(blockquote p:last-of-type):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::after {\\n content: close-quote;\\n}\\n.prose :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 800;\\n font-size: 2.25em;\\n margin-top: 0;\\n margin-bottom: 0.8888889em;\\n line-height: 1.1111111;\\n}\\n.prose :where(h1 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 900;\\n color: inherit;\\n}\\n.prose :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 700;\\n font-size: 1.5em;\\n margin-top: 2em;\\n margin-bottom: 1em;\\n line-height: 1.3333333;\\n}\\n.prose :where(h2 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 800;\\n color: inherit;\\n}\\n.prose :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n font-size: 1.25em;\\n margin-top: 1.6em;\\n margin-bottom: 0.6em;\\n line-height: 1.6;\\n}\\n.prose :where(h3 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 700;\\n color: inherit;\\n}\\n.prose :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n margin-top: 1.5em;\\n margin-bottom: 0.5em;\\n line-height: 1.5;\\n}\\n.prose :where(h4 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 700;\\n color: inherit;\\n}\\n.prose :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n display: block;\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 500;\\n font-family: inherit;\\n color: var(--tw-prose-kbd);\\n box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);\\n font-size: 0.875em;\\n border-radius: 0.3125rem;\\n padding-top: 0.1875em;\\n padding-inline-end: 0.375em;\\n padding-bottom: 0.1875em;\\n padding-inline-start: 0.375em;\\n}\\n.prose :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-code);\\n font-weight: 600;\\n font-size: 0.875em;\\n}\\n.prose :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::before {\\n content: \\\"`\\\";\\n}\\n.prose :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::after {\\n content: \\\"`\\\";\\n}\\n.prose :where(a code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(h1 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n font-size: 0.875em;\\n}\\n.prose :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n font-size: 0.9em;\\n}\\n.prose :where(h4 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(blockquote code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(thead th code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-pre-code);\\n background-color: var(--tw-prose-pre-bg);\\n overflow-x: auto;\\n font-weight: 400;\\n font-size: 0.875em;\\n line-height: 1.7142857;\\n margin-top: 1.7142857em;\\n margin-bottom: 1.7142857em;\\n border-radius: 0.375rem;\\n padding-top: 0.8571429em;\\n padding-inline-end: 1.1428571em;\\n padding-bottom: 0.8571429em;\\n padding-inline-start: 1.1428571em;\\n}\\n.prose :where(pre code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n background-color: transparent;\\n border-width: 0;\\n border-radius: 0;\\n padding: 0;\\n font-weight: inherit;\\n color: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n}\\n.prose :where(pre code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::before {\\n content: none;\\n}\\n.prose :where(pre code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::after {\\n content: none;\\n}\\n.prose :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n width: 100%;\\n table-layout: auto;\\n margin-top: 2em;\\n margin-bottom: 2em;\\n font-size: 0.875em;\\n line-height: 1.7142857;\\n}\\n.prose :where(thead):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-bottom-width: 1px;\\n border-bottom-color: var(--tw-prose-th-borders);\\n}\\n.prose :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n vertical-align: bottom;\\n padding-inline-end: 0.5714286em;\\n padding-bottom: 0.5714286em;\\n padding-inline-start: 0.5714286em;\\n}\\n.prose :where(tbody tr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-bottom-width: 1px;\\n border-bottom-color: var(--tw-prose-td-borders);\\n}\\n.prose :where(tbody tr:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-bottom-width: 0;\\n}\\n.prose :where(tbody td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n vertical-align: baseline;\\n}\\n.prose :where(tfoot):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-top-width: 1px;\\n border-top-color: var(--tw-prose-th-borders);\\n}\\n.prose :where(tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n vertical-align: top;\\n}\\n.prose :where(th, td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n text-align: start;\\n}\\n.prose :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-captions);\\n font-size: 0.875em;\\n line-height: 1.4285714;\\n margin-top: 0.8571429em;\\n}\\n.prose {\\n --tw-prose-body: oklch(37.3% 0.034 259.733);\\n --tw-prose-headings: oklch(21% 0.034 264.665);\\n --tw-prose-lead: oklch(44.6% 0.03 256.802);\\n --tw-prose-links: oklch(21% 0.034 264.665);\\n --tw-prose-bold: oklch(21% 0.034 264.665);\\n --tw-prose-counters: oklch(55.1% 0.027 264.364);\\n --tw-prose-bullets: oklch(87.2% 0.01 258.338);\\n --tw-prose-hr: oklch(92.8% 0.006 264.531);\\n --tw-prose-quotes: oklch(21% 0.034 264.665);\\n --tw-prose-quote-borders: oklch(92.8% 0.006 264.531);\\n --tw-prose-captions: oklch(55.1% 0.027 264.364);\\n --tw-prose-kbd: oklch(21% 0.034 264.665);\\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);\\n --tw-prose-code: oklch(21% 0.034 264.665);\\n --tw-prose-pre-code: oklch(92.8% 0.006 264.531);\\n --tw-prose-pre-bg: oklch(27.8% 0.033 256.848);\\n --tw-prose-th-borders: oklch(87.2% 0.01 258.338);\\n --tw-prose-td-borders: oklch(92.8% 0.006 264.531);\\n --tw-prose-invert-body: oklch(87.2% 0.01 258.338);\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: oklch(70.7% 0.022 261.325);\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: oklch(70.7% 0.022 261.325);\\n --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802);\\n --tw-prose-invert-hr: oklch(37.3% 0.034 259.733);\\n --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542);\\n --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733);\\n --tw-prose-invert-captions: oklch(70.7% 0.022 261.325);\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338);\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802);\\n --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733);\\n font-size: 1rem;\\n line-height: 1.75;\\n}\\n.prose :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n}\\n.prose :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.375em;\\n}\\n.prose :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.375em;\\n}\\n.prose :where(.prose > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.75em;\\n margin-bottom: 0.75em;\\n}\\n.prose :where(.prose > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose :where(.prose > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.25em;\\n}\\n.prose :where(.prose > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose :where(.prose > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.25em;\\n}\\n.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.75em;\\n margin-bottom: 0.75em;\\n}\\n.prose :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n}\\n.prose :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n padding-inline-start: 1.625em;\\n}\\n.prose :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.5714286em;\\n padding-inline-end: 0.5714286em;\\n padding-bottom: 0.5714286em;\\n padding-inline-start: 0.5714286em;\\n}\\n.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(.prose > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(.prose > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-sm {\\n font-size: 0.875rem;\\n line-height: 1.6;\\n}\\n.prose-sm :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n line-height: 1.5;\\n}\\n.prose-sm :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.2857143em;\\n line-height: 1.5555556;\\n margin-top: 0.8888889em;\\n margin-bottom: 0.8888889em;\\n}\\n.prose-sm :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.1111111em;\\n padding-left: 1em;\\n border-left-width: 0.25rem;\\n font-style: italic;\\n color: inherit;\\n}\\n.prose-sm :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 2.1428571em;\\n margin-top: 0.75em;\\n margin-bottom: 0.5em;\\n line-height: 1.2;\\n}\\n.prose-sm :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.4285714em;\\n margin-top: 0.65em;\\n margin-bottom: 0.45em;\\n line-height: 1.25;\\n}\\n.prose-sm :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.2857143em;\\n margin-top: 0.6em;\\n margin-bottom: 0.4em;\\n line-height: 1.3;\\n}\\n.prose-sm :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.35em;\\n line-height: 1.35;\\n}\\n.prose-sm :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7142857em;\\n margin-bottom: 1.7142857em;\\n}\\n.prose-sm :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7142857em;\\n margin-bottom: 1.7142857em;\\n}\\n.prose-sm :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-sm :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7142857em;\\n margin-bottom: 1.7142857em;\\n}\\n.prose-sm :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8571429em;\\n border-radius: 0.3125rem;\\n padding-top: 0.1428571em;\\n padding-inline-end: 0.3571429em;\\n padding-bottom: 0.1428571em;\\n padding-inline-start: 0.3571429em;\\n}\\n.prose-sm :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8571429em;\\n}\\n.prose-sm :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n}\\n.prose-sm :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n}\\n.prose-sm :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8571429em;\\n line-height: 1.45;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n border-radius: 0.25rem;\\n padding-top: 0.6666667em;\\n padding-inline-end: 1em;\\n padding-bottom: 0.6666667em;\\n padding-inline-start: 1em;\\n box-sizing: border-box;\\n max-width: 100%;\\n overflow-x: auto;\\n white-space: pre-wrap;\\n overflow-wrap: break-word;\\n}\\n.prose-sm :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.5714286em;\\n padding-left: 1.25em;\\n}\\n.prose-sm :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.5714286em;\\n padding-left: 1.25em;\\n}\\n.prose-sm :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-sm :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4285714em;\\n}\\n.prose-sm :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4285714em;\\n}\\n.prose-sm :where(.prose-sm > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5714286em;\\n margin-bottom: 0.5714286em;\\n}\\n.prose-sm :where(.prose-sm > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.1428571em;\\n}\\n.prose-sm :where(.prose-sm > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.1428571em;\\n}\\n.prose-sm :where(.prose-sm > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.1428571em;\\n}\\n.prose-sm :where(.prose-sm > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.1428571em;\\n}\\n.prose-sm :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-sm :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.1428571em;\\n margin-bottom: 1.1428571em;\\n}\\n.prose-sm :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.1428571em;\\n}\\n.prose-sm :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.2857143em;\\n padding-inline-start: 1.5714286em;\\n}\\n.prose-sm :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-sm :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-sm :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-sm :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-sm :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-sm :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8571429em;\\n line-height: 1.5;\\n}\\n.prose-sm :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 1em;\\n padding-bottom: 0.6666667em;\\n padding-inline-start: 1em;\\n}\\n.prose-sm :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-sm :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-sm :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.6666667em;\\n padding-inline-end: 1em;\\n padding-bottom: 0.6666667em;\\n padding-inline-start: 1em;\\n}\\n.prose-sm :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-sm :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-sm :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7142857em;\\n margin-bottom: 1.7142857em;\\n}\\n.prose-sm :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-sm :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8571429em;\\n line-height: 1.3333333;\\n margin-top: 0.6666667em;\\n}\\n.prose-sm :where(.prose-sm > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-sm :where(.prose-sm > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-sm {\\n max-width: none;\\n}\\n.prose-sm :where(h5):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.45em;\\n margin-bottom: 0.3em;\\n line-height: 1.4;\\n}\\n.prose-sm :where(h6):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.4em;\\n margin-bottom: 0.25em;\\n line-height: 1.45;\\n}\\n.prose-sm :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-links);\\n text-decoration: underline;\\n font-weight: 500;\\n}\\n.prose-sm :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)):hover {\\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\\n text-decoration: none;\\n}\\n.prose-base {\\n font-size: 1rem;\\n line-height: 1.6;\\n}\\n.prose-base :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n line-height: 1.5;\\n}\\n.prose-base :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.25em;\\n line-height: 1.6;\\n margin-top: 1.2em;\\n margin-bottom: 1.2em;\\n}\\n.prose-base :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1em;\\n padding-left: 1em;\\n border-left-width: 0.25rem;\\n font-style: italic;\\n color: inherit;\\n}\\n.prose-base :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 2.25em;\\n margin-top: 0.75em;\\n margin-bottom: 0.5em;\\n line-height: 1.2;\\n}\\n.prose-base :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.5em;\\n margin-top: 0.65em;\\n margin-bottom: 0.45em;\\n line-height: 1.25;\\n}\\n.prose-base :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.25em;\\n margin-top: 0.6em;\\n margin-bottom: 0.4em;\\n line-height: 1.3;\\n}\\n.prose-base :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.35em;\\n line-height: 1.35;\\n}\\n.prose-base :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-base :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-base :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-base :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-base :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n border-radius: 0.3125rem;\\n padding-top: 0.1875em;\\n padding-inline-end: 0.375em;\\n padding-bottom: 0.1875em;\\n padding-inline-start: 0.375em;\\n}\\n.prose-base :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n}\\n.prose-base :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n}\\n.prose-base :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n}\\n.prose-base :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n line-height: 1.45;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n border-radius: 0.375rem;\\n padding-top: 0.8571429em;\\n padding-inline-end: 1.1428571em;\\n padding-bottom: 0.8571429em;\\n padding-inline-start: 1.1428571em;\\n box-sizing: border-box;\\n max-width: 100%;\\n overflow-x: auto;\\n white-space: pre-wrap;\\n overflow-wrap: break-word;\\n}\\n.prose-base :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.625em;\\n padding-left: 1.25em;\\n}\\n.prose-base :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.625em;\\n padding-left: 1.25em;\\n}\\n.prose-base :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-base :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.375em;\\n}\\n.prose-base :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.375em;\\n}\\n.prose-base :where(.prose-base > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.75em;\\n margin-bottom: 0.75em;\\n}\\n.prose-base :where(.prose-base > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose-base :where(.prose-base > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.25em;\\n}\\n.prose-base :where(.prose-base > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose-base :where(.prose-base > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.25em;\\n}\\n.prose-base :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-base :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n}\\n.prose-base :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose-base :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n padding-inline-start: 1.625em;\\n}\\n.prose-base :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-base :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-base :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-base :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-base :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-base :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n line-height: 1.7142857;\\n}\\n.prose-base :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0.5714286em;\\n padding-bottom: 0.5714286em;\\n padding-inline-start: 0.5714286em;\\n}\\n.prose-base :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-base :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-base :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.5714286em;\\n padding-inline-end: 0.5714286em;\\n padding-bottom: 0.5714286em;\\n padding-inline-start: 0.5714286em;\\n}\\n.prose-base :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-base :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-base :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-base :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-base :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n line-height: 1.4285714;\\n margin-top: 0.8571429em;\\n}\\n.prose-base :where(.prose-base > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-base :where(.prose-base > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-base {\\n max-width: none;\\n}\\n.prose-base :where(h5):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.45em;\\n margin-bottom: 0.3em;\\n line-height: 1.4;\\n}\\n.prose-base :where(h6):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.4em;\\n margin-bottom: 0.25em;\\n line-height: 1.45;\\n}\\n.prose-base :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-links);\\n text-decoration: underline;\\n font-weight: 500;\\n}\\n.prose-base :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)):hover {\\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\\n text-decoration: none;\\n}\\n.prose-lg {\\n font-size: 1.125rem;\\n line-height: 1.6;\\n}\\n.prose-lg :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n line-height: 1.5;\\n}\\n.prose-lg :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.2222222em;\\n line-height: 1.4545455;\\n margin-top: 1.0909091em;\\n margin-bottom: 1.0909091em;\\n}\\n.prose-lg :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1em;\\n padding-left: 1em;\\n border-left-width: 0.25rem;\\n font-style: italic;\\n color: inherit;\\n}\\n.prose-lg :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 2.6666667em;\\n margin-top: 0.75em;\\n margin-bottom: 0.5em;\\n line-height: 1.2;\\n}\\n.prose-lg :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.6666667em;\\n margin-top: 0.65em;\\n margin-bottom: 0.45em;\\n line-height: 1.25;\\n}\\n.prose-lg :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.3333333em;\\n margin-top: 0.6em;\\n margin-bottom: 0.4em;\\n line-height: 1.3;\\n}\\n.prose-lg :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.35em;\\n line-height: 1.35;\\n}\\n.prose-lg :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7777778em;\\n margin-bottom: 1.7777778em;\\n}\\n.prose-lg :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7777778em;\\n margin-bottom: 1.7777778em;\\n}\\n.prose-lg :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-lg :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7777778em;\\n margin-bottom: 1.7777778em;\\n}\\n.prose-lg :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n border-radius: 0.3125rem;\\n padding-top: 0.2222222em;\\n padding-inline-end: 0.4444444em;\\n padding-bottom: 0.2222222em;\\n padding-inline-start: 0.4444444em;\\n}\\n.prose-lg :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n}\\n.prose-lg :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8666667em;\\n}\\n.prose-lg :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n}\\n.prose-lg :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n line-height: 1.45;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n border-radius: 0.375rem;\\n padding-top: 1em;\\n padding-inline-end: 1.5em;\\n padding-bottom: 1em;\\n padding-inline-start: 1.5em;\\n box-sizing: border-box;\\n max-width: 100%;\\n overflow-x: auto;\\n white-space: pre-wrap;\\n overflow-wrap: break-word;\\n}\\n.prose-lg :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.5555556em;\\n padding-left: 1.25em;\\n}\\n.prose-lg :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.5555556em;\\n padding-left: 1.25em;\\n}\\n.prose-lg :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-lg :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4444444em;\\n}\\n.prose-lg :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4444444em;\\n}\\n.prose-lg :where(.prose-lg > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.8888889em;\\n margin-bottom: 0.8888889em;\\n}\\n.prose-lg :where(.prose-lg > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n}\\n.prose-lg :where(.prose-lg > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.3333333em;\\n}\\n.prose-lg :where(.prose-lg > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n}\\n.prose-lg :where(.prose-lg > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.3333333em;\\n}\\n.prose-lg :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-lg :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n margin-bottom: 1.3333333em;\\n}\\n.prose-lg :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n}\\n.prose-lg :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.6666667em;\\n padding-inline-start: 1.5555556em;\\n}\\n.prose-lg :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-lg :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-lg :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-lg :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-lg :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-lg :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n line-height: 1.5;\\n}\\n.prose-lg :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0.75em;\\n padding-bottom: 0.75em;\\n padding-inline-start: 0.75em;\\n}\\n.prose-lg :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-lg :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-lg :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.75em;\\n padding-inline-end: 0.75em;\\n padding-bottom: 0.75em;\\n padding-inline-start: 0.75em;\\n}\\n.prose-lg :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-lg :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-lg :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7777778em;\\n margin-bottom: 1.7777778em;\\n}\\n.prose-lg :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-lg :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n line-height: 1.5;\\n margin-top: 1em;\\n}\\n.prose-lg :where(.prose-lg > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-lg :where(.prose-lg > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-lg {\\n max-width: none;\\n}\\n.prose-lg :where(h5):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.45em;\\n margin-bottom: 0.3em;\\n line-height: 1.4;\\n}\\n.prose-lg :where(h6):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.4em;\\n margin-bottom: 0.25em;\\n line-height: 1.45;\\n}\\n.prose-lg :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-links);\\n text-decoration: underline;\\n font-weight: 500;\\n}\\n.prose-lg :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)):hover {\\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\\n text-decoration: none;\\n}\\n.prose-xl {\\n font-size: 1.25rem;\\n line-height: 1.6;\\n}\\n.prose-xl :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n line-height: 1.5;\\n}\\n.prose-xl :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.2em;\\n line-height: 1.5;\\n margin-top: 1em;\\n margin-bottom: 1em;\\n}\\n.prose-xl :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.0666667em;\\n padding-left: 1em;\\n border-left-width: 0.25rem;\\n font-style: italic;\\n color: inherit;\\n}\\n.prose-xl :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 2.8em;\\n margin-top: 0.75em;\\n margin-bottom: 0.5em;\\n line-height: 1.2;\\n}\\n.prose-xl :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.8em;\\n margin-top: 0.65em;\\n margin-bottom: 0.45em;\\n line-height: 1.25;\\n}\\n.prose-xl :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.5em;\\n margin-top: 0.6em;\\n margin-bottom: 0.4em;\\n line-height: 1.3;\\n}\\n.prose-xl :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.35em;\\n line-height: 1.35;\\n}\\n.prose-xl :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-xl :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-xl :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-xl :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-xl :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n border-radius: 0.3125rem;\\n padding-top: 0.25em;\\n padding-inline-end: 0.4em;\\n padding-bottom: 0.25em;\\n padding-inline-start: 0.4em;\\n}\\n.prose-xl :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n}\\n.prose-xl :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8611111em;\\n}\\n.prose-xl :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n}\\n.prose-xl :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n line-height: 1.45;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n border-radius: 0.5rem;\\n padding-top: 1.1111111em;\\n padding-inline-end: 1.3333333em;\\n padding-bottom: 1.1111111em;\\n padding-inline-start: 1.3333333em;\\n box-sizing: border-box;\\n max-width: 100%;\\n overflow-x: auto;\\n white-space: pre-wrap;\\n overflow-wrap: break-word;\\n}\\n.prose-xl :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.6em;\\n padding-left: 1.25em;\\n}\\n.prose-xl :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-inline-start: 1.6em;\\n padding-left: 1.25em;\\n}\\n.prose-xl :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-xl :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4em;\\n}\\n.prose-xl :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4em;\\n}\\n.prose-xl :where(.prose-xl > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.8em;\\n margin-bottom: 0.8em;\\n}\\n.prose-xl :where(.prose-xl > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.2em;\\n}\\n.prose-xl :where(.prose-xl > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.2em;\\n}\\n.prose-xl :where(.prose-xl > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.2em;\\n}\\n.prose-xl :where(.prose-xl > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.2em;\\n}\\n.prose-xl :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n}\\n.prose-xl :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.2em;\\n margin-bottom: 1.2em;\\n}\\n.prose-xl :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.2em;\\n}\\n.prose-xl :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.6em;\\n padding-inline-start: 1.6em;\\n}\\n.prose-xl :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-xl :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-xl :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-xl :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-xl :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-xl :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n line-height: 1.5555556;\\n}\\n.prose-xl :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0.6666667em;\\n padding-bottom: 0.8888889em;\\n padding-inline-start: 0.6666667em;\\n}\\n.prose-xl :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-xl :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-xl :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.8888889em;\\n padding-inline-end: 0.6666667em;\\n padding-bottom: 0.8888889em;\\n padding-inline-start: 0.6666667em;\\n}\\n.prose-xl :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-xl :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-xl :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-xl :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-xl :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.9em;\\n line-height: 1.5555556;\\n margin-top: 1em;\\n}\\n.prose-xl :where(.prose-xl > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-xl :where(.prose-xl > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-xl {\\n max-width: none;\\n}\\n.prose-xl :where(h5):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.45em;\\n margin-bottom: 0.3em;\\n line-height: 1.4;\\n}\\n.prose-xl :where(h6):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.4em;\\n margin-bottom: 0.25em;\\n line-height: 1.45;\\n}\\n.prose-xl :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-links);\\n text-decoration: underline;\\n font-weight: 500;\\n}\\n.prose-xl :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)):hover {\\n color: var(--tw-prose-links-hover, var(--tw-prose-links));\\n text-decoration: none;\\n}\\n.prose-2xl {\\n font-size: 1.5rem;\\n line-height: 1.6666667;\\n}\\n.prose-2xl :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n margin-bottom: 1.3333333em;\\n}\\n.prose-2xl :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.25em;\\n line-height: 1.4666667;\\n margin-top: 1.0666667em;\\n margin-bottom: 1.0666667em;\\n}\\n.prose-2xl :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.7777778em;\\n margin-bottom: 1.7777778em;\\n padding-inline-start: 1.1111111em;\\n}\\n.prose-2xl :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 2.6666667em;\\n margin-top: 0;\\n margin-bottom: 0.875em;\\n line-height: 1;\\n}\\n.prose-2xl :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 2em;\\n margin-top: 1.5em;\\n margin-bottom: 0.8333333em;\\n line-height: 1.0833333;\\n}\\n.prose-2xl :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 1.5em;\\n margin-top: 1.5555556em;\\n margin-bottom: 0.6666667em;\\n line-height: 1.2222222;\\n}\\n.prose-2xl :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.6666667em;\\n margin-bottom: 0.6666667em;\\n line-height: 1.5;\\n}\\n.prose-2xl :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-2xl :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-2xl :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-2xl :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-2xl :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8333333em;\\n border-radius: 0.375rem;\\n padding-top: 0.25em;\\n padding-inline-end: 0.3333333em;\\n padding-bottom: 0.25em;\\n padding-inline-start: 0.3333333em;\\n}\\n.prose-2xl :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8333333em;\\n}\\n.prose-2xl :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.875em;\\n}\\n.prose-2xl :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8888889em;\\n}\\n.prose-2xl :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8333333em;\\n line-height: 1.8;\\n margin-top: 2em;\\n margin-bottom: 2em;\\n border-radius: 0.5rem;\\n padding-top: 1.2em;\\n padding-inline-end: 1.6em;\\n padding-bottom: 1.2em;\\n padding-inline-start: 1.6em;\\n}\\n.prose-2xl :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n margin-bottom: 1.3333333em;\\n padding-inline-start: 1.5833333em;\\n}\\n.prose-2xl :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n margin-bottom: 1.3333333em;\\n padding-inline-start: 1.5833333em;\\n}\\n.prose-2xl :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n}\\n.prose-2xl :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4166667em;\\n}\\n.prose-2xl :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.4166667em;\\n}\\n.prose-2xl :where(.prose-2xl > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.8333333em;\\n margin-bottom: 0.8333333em;\\n}\\n.prose-2xl :where(.prose-2xl > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n}\\n.prose-2xl :where(.prose-2xl > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.3333333em;\\n}\\n.prose-2xl :where(.prose-2xl > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n}\\n.prose-2xl :where(.prose-2xl > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.3333333em;\\n}\\n.prose-2xl :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.6666667em;\\n margin-bottom: 0.6666667em;\\n}\\n.prose-2xl :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n margin-bottom: 1.3333333em;\\n}\\n.prose-2xl :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.3333333em;\\n}\\n.prose-2xl :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n padding-inline-start: 1.5833333em;\\n}\\n.prose-2xl :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 3em;\\n margin-bottom: 3em;\\n}\\n.prose-2xl :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-2xl :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-2xl :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-2xl :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-2xl :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8333333em;\\n line-height: 1.4;\\n}\\n.prose-2xl :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0.6em;\\n padding-bottom: 0.8em;\\n padding-inline-start: 0.6em;\\n}\\n.prose-2xl :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-2xl :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-2xl :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.8em;\\n padding-inline-end: 0.6em;\\n padding-bottom: 0.8em;\\n padding-inline-start: 0.6em;\\n}\\n.prose-2xl :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose-2xl :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose-2xl :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose-2xl :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose-2xl :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-size: 0.8333333em;\\n line-height: 1.6;\\n margin-top: 1em;\\n}\\n.prose-2xl :where(.prose-2xl > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose-2xl :where(.prose-2xl > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-slate {\\n --tw-prose-body: oklch(37.2% 0.044 257.287);\\n --tw-prose-headings: oklch(20.8% 0.042 265.755);\\n --tw-prose-lead: oklch(44.6% 0.043 257.281);\\n --tw-prose-links: oklch(20.8% 0.042 265.755);\\n --tw-prose-bold: oklch(20.8% 0.042 265.755);\\n --tw-prose-counters: oklch(55.4% 0.046 257.417);\\n --tw-prose-bullets: oklch(86.9% 0.022 252.894);\\n --tw-prose-hr: oklch(92.9% 0.013 255.508);\\n --tw-prose-quotes: oklch(20.8% 0.042 265.755);\\n --tw-prose-quote-borders: oklch(92.9% 0.013 255.508);\\n --tw-prose-captions: oklch(55.4% 0.046 257.417);\\n --tw-prose-kbd: oklch(20.8% 0.042 265.755);\\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(20.8% 0.042 265.755) 10%, transparent);\\n --tw-prose-code: oklch(20.8% 0.042 265.755);\\n --tw-prose-pre-code: oklch(92.9% 0.013 255.508);\\n --tw-prose-pre-bg: oklch(27.9% 0.041 260.031);\\n --tw-prose-th-borders: oklch(86.9% 0.022 252.894);\\n --tw-prose-td-borders: oklch(92.9% 0.013 255.508);\\n --tw-prose-invert-body: oklch(86.9% 0.022 252.894);\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: oklch(70.4% 0.04 256.788);\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: oklch(70.4% 0.04 256.788);\\n --tw-prose-invert-bullets: oklch(44.6% 0.043 257.281);\\n --tw-prose-invert-hr: oklch(37.2% 0.044 257.287);\\n --tw-prose-invert-quotes: oklch(96.8% 0.007 247.896);\\n --tw-prose-invert-quote-borders: oklch(37.2% 0.044 257.287);\\n --tw-prose-invert-captions: oklch(70.4% 0.04 256.788);\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: oklch(86.9% 0.022 252.894);\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: oklch(44.6% 0.043 257.281);\\n --tw-prose-invert-td-borders: oklch(37.2% 0.044 257.287);\\n}\\n.prose-gray {\\n --tw-prose-body: oklch(37.3% 0.034 259.733);\\n --tw-prose-headings: oklch(21% 0.034 264.665);\\n --tw-prose-lead: oklch(44.6% 0.03 256.802);\\n --tw-prose-links: oklch(21% 0.034 264.665);\\n --tw-prose-bold: oklch(21% 0.034 264.665);\\n --tw-prose-counters: oklch(55.1% 0.027 264.364);\\n --tw-prose-bullets: oklch(87.2% 0.01 258.338);\\n --tw-prose-hr: oklch(92.8% 0.006 264.531);\\n --tw-prose-quotes: oklch(21% 0.034 264.665);\\n --tw-prose-quote-borders: oklch(92.8% 0.006 264.531);\\n --tw-prose-captions: oklch(55.1% 0.027 264.364);\\n --tw-prose-kbd: oklch(21% 0.034 264.665);\\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);\\n --tw-prose-code: oklch(21% 0.034 264.665);\\n --tw-prose-pre-code: oklch(92.8% 0.006 264.531);\\n --tw-prose-pre-bg: oklch(27.8% 0.033 256.848);\\n --tw-prose-th-borders: oklch(87.2% 0.01 258.338);\\n --tw-prose-td-borders: oklch(92.8% 0.006 264.531);\\n --tw-prose-invert-body: oklch(87.2% 0.01 258.338);\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: oklch(70.7% 0.022 261.325);\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: oklch(70.7% 0.022 261.325);\\n --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802);\\n --tw-prose-invert-hr: oklch(37.3% 0.034 259.733);\\n --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542);\\n --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733);\\n --tw-prose-invert-captions: oklch(70.7% 0.022 261.325);\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338);\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802);\\n --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733);\\n}\\n.prose-zinc {\\n --tw-prose-body: oklch(37% 0.013 285.805);\\n --tw-prose-headings: oklch(21% 0.006 285.885);\\n --tw-prose-lead: oklch(44.2% 0.017 285.786);\\n --tw-prose-links: oklch(21% 0.006 285.885);\\n --tw-prose-bold: oklch(21% 0.006 285.885);\\n --tw-prose-counters: oklch(55.2% 0.016 285.938);\\n --tw-prose-bullets: oklch(87.1% 0.006 286.286);\\n --tw-prose-hr: oklch(92% 0.004 286.32);\\n --tw-prose-quotes: oklch(21% 0.006 285.885);\\n --tw-prose-quote-borders: oklch(92% 0.004 286.32);\\n --tw-prose-captions: oklch(55.2% 0.016 285.938);\\n --tw-prose-kbd: oklch(21% 0.006 285.885);\\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.006 285.885) 10%, transparent);\\n --tw-prose-code: oklch(21% 0.006 285.885);\\n --tw-prose-pre-code: oklch(92% 0.004 286.32);\\n --tw-prose-pre-bg: oklch(27.4% 0.006 286.033);\\n --tw-prose-th-borders: oklch(87.1% 0.006 286.286);\\n --tw-prose-td-borders: oklch(92% 0.004 286.32);\\n --tw-prose-invert-body: oklch(87.1% 0.006 286.286);\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: oklch(70.5% 0.015 286.067);\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: oklch(70.5% 0.015 286.067);\\n --tw-prose-invert-bullets: oklch(44.2% 0.017 285.786);\\n --tw-prose-invert-hr: oklch(37% 0.013 285.805);\\n --tw-prose-invert-quotes: oklch(96.7% 0.001 286.375);\\n --tw-prose-invert-quote-borders: oklch(37% 0.013 285.805);\\n --tw-prose-invert-captions: oklch(70.5% 0.015 286.067);\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: oklch(87.1% 0.006 286.286);\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: oklch(44.2% 0.017 285.786);\\n --tw-prose-invert-td-borders: oklch(37% 0.013 285.805);\\n}\\n.prose-neutral {\\n --tw-prose-body: oklch(37.1% 0 0);\\n --tw-prose-headings: oklch(20.5% 0 0);\\n --tw-prose-lead: oklch(43.9% 0 0);\\n --tw-prose-links: oklch(20.5% 0 0);\\n --tw-prose-bold: oklch(20.5% 0 0);\\n --tw-prose-counters: oklch(55.6% 0 0);\\n --tw-prose-bullets: oklch(87% 0 0);\\n --tw-prose-hr: oklch(92.2% 0 0);\\n --tw-prose-quotes: oklch(20.5% 0 0);\\n --tw-prose-quote-borders: oklch(92.2% 0 0);\\n --tw-prose-captions: oklch(55.6% 0 0);\\n --tw-prose-kbd: oklch(20.5% 0 0);\\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(20.5% 0 0) 10%, transparent);\\n --tw-prose-code: oklch(20.5% 0 0);\\n --tw-prose-pre-code: oklch(92.2% 0 0);\\n --tw-prose-pre-bg: oklch(26.9% 0 0);\\n --tw-prose-th-borders: oklch(87% 0 0);\\n --tw-prose-td-borders: oklch(92.2% 0 0);\\n --tw-prose-invert-body: oklch(87% 0 0);\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: oklch(70.8% 0 0);\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: oklch(70.8% 0 0);\\n --tw-prose-invert-bullets: oklch(43.9% 0 0);\\n --tw-prose-invert-hr: oklch(37.1% 0 0);\\n --tw-prose-invert-quotes: oklch(97% 0 0);\\n --tw-prose-invert-quote-borders: oklch(37.1% 0 0);\\n --tw-prose-invert-captions: oklch(70.8% 0 0);\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: oklch(87% 0 0);\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: oklch(43.9% 0 0);\\n --tw-prose-invert-td-borders: oklch(37.1% 0 0);\\n}\\n.prose-stone {\\n --tw-prose-body: oklch(37.4% 0.01 67.558);\\n --tw-prose-headings: oklch(21.6% 0.006 56.043);\\n --tw-prose-lead: oklch(44.4% 0.011 73.639);\\n --tw-prose-links: oklch(21.6% 0.006 56.043);\\n --tw-prose-bold: oklch(21.6% 0.006 56.043);\\n --tw-prose-counters: oklch(55.3% 0.013 58.071);\\n --tw-prose-bullets: oklch(86.9% 0.005 56.366);\\n --tw-prose-hr: oklch(92.3% 0.003 48.717);\\n --tw-prose-quotes: oklch(21.6% 0.006 56.043);\\n --tw-prose-quote-borders: oklch(92.3% 0.003 48.717);\\n --tw-prose-captions: oklch(55.3% 0.013 58.071);\\n --tw-prose-kbd: oklch(21.6% 0.006 56.043);\\n --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21.6% 0.006 56.043) 10%, transparent);\\n --tw-prose-code: oklch(21.6% 0.006 56.043);\\n --tw-prose-pre-code: oklch(92.3% 0.003 48.717);\\n --tw-prose-pre-bg: oklch(26.8% 0.007 34.298);\\n --tw-prose-th-borders: oklch(86.9% 0.005 56.366);\\n --tw-prose-td-borders: oklch(92.3% 0.003 48.717);\\n --tw-prose-invert-body: oklch(86.9% 0.005 56.366);\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: oklch(70.9% 0.01 56.259);\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: oklch(70.9% 0.01 56.259);\\n --tw-prose-invert-bullets: oklch(44.4% 0.011 73.639);\\n --tw-prose-invert-hr: oklch(37.4% 0.01 67.558);\\n --tw-prose-invert-quotes: oklch(97% 0.001 106.424);\\n --tw-prose-invert-quote-borders: oklch(37.4% 0.01 67.558);\\n --tw-prose-invert-captions: oklch(70.9% 0.01 56.259);\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: oklch(86.9% 0.005 56.366);\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: oklch(44.4% 0.011 73.639);\\n --tw-prose-invert-td-borders: oklch(37.4% 0.01 67.558);\\n}\\n.prose-red {\\n --tw-prose-links: oklch(57.7% 0.245 27.325);\\n --tw-prose-invert-links: oklch(63.7% 0.237 25.331);\\n}\\n.prose-orange {\\n --tw-prose-links: oklch(64.6% 0.222 41.116);\\n --tw-prose-invert-links: oklch(70.5% 0.213 47.604);\\n}\\n.prose-amber {\\n --tw-prose-links: oklch(66.6% 0.179 58.318);\\n --tw-prose-invert-links: oklch(76.9% 0.188 70.08);\\n}\\n.prose-yellow {\\n --tw-prose-links: oklch(68.1% 0.162 75.834);\\n --tw-prose-invert-links: oklch(79.5% 0.184 86.047);\\n}\\n.prose-lime {\\n --tw-prose-links: oklch(64.8% 0.2 131.684);\\n --tw-prose-invert-links: oklch(76.8% 0.233 130.85);\\n}\\n.prose-green {\\n --tw-prose-links: oklch(62.7% 0.194 149.214);\\n --tw-prose-invert-links: oklch(72.3% 0.219 149.579);\\n}\\n.prose-emerald {\\n --tw-prose-links: oklch(59.6% 0.145 163.225);\\n --tw-prose-invert-links: oklch(69.6% 0.17 162.48);\\n}\\n.prose-teal {\\n --tw-prose-links: oklch(60% 0.118 184.704);\\n --tw-prose-invert-links: oklch(70.4% 0.14 182.503);\\n}\\n.prose-cyan {\\n --tw-prose-links: oklch(60.9% 0.126 221.723);\\n --tw-prose-invert-links: oklch(71.5% 0.143 215.221);\\n}\\n.prose-sky {\\n --tw-prose-links: oklch(58.8% 0.158 241.966);\\n --tw-prose-invert-links: oklch(68.5% 0.169 237.323);\\n}\\n.prose-blue {\\n --tw-prose-links: oklch(54.6% 0.245 262.881);\\n --tw-prose-invert-links: oklch(62.3% 0.214 259.815);\\n}\\n.prose-indigo {\\n --tw-prose-links: oklch(51.1% 0.262 276.966);\\n --tw-prose-invert-links: oklch(58.5% 0.233 277.117);\\n}\\n.prose-violet {\\n --tw-prose-links: oklch(54.1% 0.281 293.009);\\n --tw-prose-invert-links: oklch(60.6% 0.25 292.717);\\n}\\n.prose-purple {\\n --tw-prose-links: oklch(55.8% 0.288 302.321);\\n --tw-prose-invert-links: oklch(62.7% 0.265 303.9);\\n}\\n.prose-fuchsia {\\n --tw-prose-links: oklch(59.1% 0.293 322.896);\\n --tw-prose-invert-links: oklch(66.7% 0.295 322.15);\\n}\\n.prose-pink {\\n --tw-prose-links: oklch(59.2% 0.249 0.584);\\n --tw-prose-invert-links: oklch(65.6% 0.241 354.308);\\n}\\n.prose-rose {\\n --tw-prose-links: oklch(58.6% 0.253 17.585);\\n --tw-prose-invert-links: oklch(64.5% 0.246 16.439);\\n}\\n.prose-invert {\\n --tw-prose-body: var(--tw-prose-invert-body);\\n --tw-prose-headings: var(--tw-prose-invert-headings);\\n --tw-prose-lead: var(--tw-prose-invert-lead);\\n --tw-prose-links: var(--tw-prose-invert-links);\\n --tw-prose-bold: var(--tw-prose-invert-bold);\\n --tw-prose-counters: var(--tw-prose-invert-counters);\\n --tw-prose-bullets: var(--tw-prose-invert-bullets);\\n --tw-prose-hr: var(--tw-prose-invert-hr);\\n --tw-prose-quotes: var(--tw-prose-invert-quotes);\\n --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);\\n --tw-prose-captions: var(--tw-prose-invert-captions);\\n --tw-prose-kbd: var(--tw-prose-invert-kbd);\\n --tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);\\n --tw-prose-code: var(--tw-prose-invert-code);\\n --tw-prose-pre-code: var(--tw-prose-invert-pre-code);\\n --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);\\n --tw-prose-th-borders: var(--tw-prose-invert-th-borders);\\n --tw-prose-td-borders: var(--tw-prose-invert-td-borders);\\n}\\n.prose-inherit {\\n --tw-prose-body: inherit;\\n --tw-prose-headings: inherit;\\n --tw-prose-lead: inherit;\\n --tw-prose-links: inherit;\\n --tw-prose-bold: inherit;\\n --tw-prose-counters: inherit;\\n --tw-prose-bullets: inherit;\\n}\\n.visible {\\n visibility: visible;\\n}\\n.static {\\n position: static;\\n}\\n.fixed {\\n position: fixed;\\n}\\n.absolute {\\n position: absolute;\\n}\\n.relative {\\n position: relative;\\n}\\n.bottom-0 {\\n bottom: 0px;\\n}\\n.left-0 {\\n left: 0px;\\n}\\n.left-3 {\\n left: 0.75rem;\\n}\\n.right-4 {\\n right: 1rem;\\n}\\n.top-0 {\\n top: 0px;\\n}\\n.top-3 {\\n top: 0.75rem;\\n}\\n.top-\\\\[calc\\\\(100\\\\%\\\\+8px\\\\)\\\\] {\\n top: calc(100% + 8px);\\n}\\n.-z-10 {\\n z-index: -10;\\n}\\n.z-10 {\\n z-index: 10;\\n}\\n.z-\\\\[1000\\\\] {\\n z-index: 1000;\\n}\\n.z-\\\\[99\\\\] {\\n z-index: 99;\\n}\\n.col-\\\\[1\\\\] {\\n grid-column: 1;\\n}\\n.row-\\\\[1\\\\] {\\n grid-row: 1;\\n}\\n.m-5 {\\n margin: 1.25rem;\\n}\\n.my-3 {\\n margin-top: 0.75rem;\\n margin-bottom: 0.75rem;\\n}\\n.my-4 {\\n margin-top: 1rem;\\n margin-bottom: 1rem;\\n}\\n.mb-1 {\\n margin-bottom: 0.25rem;\\n}\\n.mb-2 {\\n margin-bottom: 0.5rem;\\n}\\n.mb-4 {\\n margin-bottom: 1rem;\\n}\\n.mb-6 {\\n margin-bottom: 1.5rem;\\n}\\n.ml-1 {\\n margin-left: 0.25rem;\\n}\\n.ml-2 {\\n margin-left: 0.5rem;\\n}\\n.mt-1 {\\n margin-top: 0.25rem;\\n}\\n.mt-2 {\\n margin-top: 0.5rem;\\n}\\n.mt-4 {\\n margin-top: 1rem;\\n}\\n.mt-6 {\\n margin-top: 1.5rem;\\n}\\n.box-border {\\n box-sizing: border-box;\\n}\\n.block {\\n display: block;\\n}\\n.inline-block {\\n display: inline-block;\\n}\\n.inline {\\n display: inline;\\n}\\n.flex {\\n display: flex;\\n}\\n.inline-flex {\\n display: inline-flex;\\n}\\n.grid {\\n display: grid;\\n}\\n.contents {\\n display: contents;\\n}\\n.hidden {\\n display: none;\\n}\\n.h-10 {\\n height: 2.5rem;\\n}\\n.h-12 {\\n height: 3rem;\\n}\\n.h-14 {\\n height: 3.5rem;\\n}\\n.h-6 {\\n height: 1.5rem;\\n}\\n.h-7 {\\n height: 1.75rem;\\n}\\n.h-8 {\\n height: 2rem;\\n}\\n.h-\\\\[29px\\\\] {\\n height: 29px;\\n}\\n.h-full {\\n height: 100%;\\n}\\n.h-px {\\n height: 1px;\\n}\\n.min-h-20 {\\n min-height: 5rem;\\n}\\n.w-10 {\\n width: 2.5rem;\\n}\\n.w-6 {\\n width: 1.5rem;\\n}\\n.w-\\\\[140px\\\\] {\\n width: 140px;\\n}\\n.w-\\\\[48\\\\%\\\\] {\\n width: 48%;\\n}\\n.w-\\\\[51\\\\%\\\\] {\\n width: 51%;\\n}\\n.w-full {\\n width: 100%;\\n}\\n.min-w-0 {\\n min-width: 0px;\\n}\\n.min-w-20 {\\n min-width: 5rem;\\n}\\n.min-w-\\\\[280px\\\\] {\\n min-width: 280px;\\n}\\n.min-w-\\\\[320px\\\\] {\\n min-width: 320px;\\n}\\n.min-w-\\\\[360px\\\\] {\\n min-width: 360px;\\n}\\n.max-w-\\\\[60px\\\\] {\\n max-width: 60px;\\n}\\n.max-w-none {\\n max-width: none;\\n}\\n.flex-1 {\\n flex: 1 1 0%;\\n}\\n.flex-none {\\n flex: none;\\n}\\n.flex-shrink {\\n flex-shrink: 1;\\n}\\n.flex-shrink-0 {\\n flex-shrink: 0;\\n}\\n.shrink-0 {\\n flex-shrink: 0;\\n}\\n.rotate-180 {\\n --tw-rotate: 180deg;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.transform {\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n@keyframes bounce {\\n 0%, 100% {\\n transform: translateY(-25%);\\n animation-timing-function: cubic-bezier(0.8,0,1,1);\\n }\\n 50% {\\n transform: none;\\n animation-timing-function: cubic-bezier(0,0,0.2,1);\\n }\\n}\\n.animate-bounce {\\n animation: bounce 1s infinite;\\n}\\n@keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n.animate-spin {\\n animation: spin 1s linear infinite;\\n}\\n.cursor-not-allowed {\\n cursor: not-allowed;\\n}\\n.cursor-pointer {\\n cursor: pointer;\\n}\\n.select-none {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.grid-cols-\\\\[24px_1fr\\\\] {\\n grid-template-columns: 24px 1fr;\\n}\\n.grid-cols-\\\\[40px\\\\2c 1fr\\\\2c 20px\\\\] {\\n grid-template-columns: 40px 1fr 20px;\\n}\\n.grid-cols-\\\\[repeat\\\\(auto-fill\\\\2c minmax\\\\(\\\\$\\\\{this\\\\.getImageMinSizePx\\\\(\\\\)\\\\}px\\\\2c 300px\\\\)\\\\)\\\\] {\\n grid-template-columns: repeat(auto-fill,minmax(${this.getImageMinSizePx()}px,300px));\\n}\\n.flex-row {\\n flex-direction: row;\\n}\\n.flex-col {\\n flex-direction: column;\\n}\\n.flex-wrap {\\n flex-wrap: wrap;\\n}\\n.items-start {\\n align-items: flex-start;\\n}\\n.items-center {\\n align-items: center;\\n}\\n.justify-start {\\n justify-content: flex-start;\\n}\\n.justify-end {\\n justify-content: flex-end;\\n}\\n.justify-center {\\n justify-content: center;\\n}\\n.justify-between {\\n justify-content: space-between;\\n}\\n.gap-1 {\\n gap: 0.25rem;\\n}\\n.gap-1\\\\.5 {\\n gap: 0.375rem;\\n}\\n.gap-2 {\\n gap: 0.5rem;\\n}\\n.gap-3 {\\n gap: 0.75rem;\\n}\\n.gap-4 {\\n gap: 1rem;\\n}\\n.gap-x-2 {\\n -moz-column-gap: 0.5rem;\\n column-gap: 0.5rem;\\n}\\n.self-center {\\n align-self: center;\\n}\\n.overflow-hidden {\\n overflow: hidden;\\n}\\n.overflow-visible {\\n overflow: visible;\\n}\\n.text-ellipsis {\\n text-overflow: ellipsis;\\n}\\n.whitespace-nowrap {\\n white-space: nowrap;\\n}\\n.text-wrap {\\n text-wrap: wrap;\\n}\\n.break-words {\\n overflow-wrap: break-word;\\n}\\n.break-all {\\n word-break: break-all;\\n}\\n.rounded {\\n border-radius: 0.25rem;\\n}\\n.rounded-full {\\n border-radius: 9999px;\\n}\\n.rounded-lg {\\n border-radius: 0.5rem;\\n}\\n.rounded-md {\\n border-radius: 0.375rem;\\n}\\n.rounded-xl {\\n border-radius: 0.75rem;\\n}\\n.rounded-t-\\\\[120px\\\\] {\\n border-top-left-radius: 120px;\\n border-top-right-radius: 120px;\\n}\\n.border {\\n border-width: 1px;\\n}\\n.border-0 {\\n border-width: 0px;\\n}\\n.border-t {\\n border-top-width: 1px;\\n}\\n.border-\\\\[var\\\\(--neutral-90\\\\)\\\\] {\\n border-color: var(--neutral-90);\\n}\\n.border-neutral-20 {\\n --tw-border-opacity: 1;\\n border-color: rgb(36 53 66 / var(--tw-border-opacity, 1));\\n}\\n.border-neutral-90 {\\n --tw-border-opacity: 1;\\n border-color: rgb(222 231 237 / var(--tw-border-opacity, 1));\\n}\\n.border-red-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(254 202 202 / var(--tw-border-opacity, 1));\\n}\\n.bg-\\\\[var\\\\(--neutral-100\\\\)\\\\] {\\n background-color: var(--neutral-100);\\n}\\n.bg-\\\\[var\\\\(--neutral-90\\\\)\\\\] {\\n background-color: var(--neutral-90);\\n}\\n.bg-blue-85 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(180 209 253 / var(--tw-bg-opacity, 1));\\n}\\n.bg-green-85 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(195 239 206 / var(--tw-bg-opacity, 1));\\n}\\n.bg-neutral-10 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(18 27 33 / var(--tw-bg-opacity, 1));\\n}\\n.bg-neutral-100 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-neutral-90 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(222 231 237 / var(--tw-bg-opacity, 1));\\n}\\n.bg-neutral-95 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(238 243 246 / var(--tw-bg-opacity, 1));\\n}\\n.bg-neutral-98 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(248 250 251 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-85 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(245 188 188 / var(--tw-bg-opacity, 1));\\n}\\n.bg-transparent {\\n background-color: transparent;\\n}\\n.bg-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-yellow-85 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 224 179 / var(--tw-bg-opacity, 1));\\n}\\n.bg-\\\\[radial-gradient\\\\(ellipse_75px_52px_at_bottom_center\\\\2c rgba\\\\(255\\\\2c 255\\\\2c 255\\\\2c 0\\\\.78\\\\)_0\\\\%\\\\2c rgba\\\\(255\\\\2c 255\\\\2c 255\\\\2c 0\\\\)_112\\\\.5\\\\%\\\\)\\\\] {\\n background-image: radial-gradient(ellipse 75px 52px at bottom center,rgba(255,255,255,0.78) 0%,rgba(255,255,255,0) 112.5%);\\n}\\n.object-cover {\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n.p-0 {\\n padding: 0px;\\n}\\n.p-0\\\\.5 {\\n padding: 0.125rem;\\n}\\n.p-1 {\\n padding: 0.25rem;\\n}\\n.p-2 {\\n padding: 0.5rem;\\n}\\n.p-2\\\\.5 {\\n padding: 0.625rem;\\n}\\n.p-3 {\\n padding: 0.75rem;\\n}\\n.p-4 {\\n padding: 1rem;\\n}\\n.px-1 {\\n padding-left: 0.25rem;\\n padding-right: 0.25rem;\\n}\\n.px-2 {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n}\\n.px-2\\\\.5 {\\n padding-left: 0.625rem;\\n padding-right: 0.625rem;\\n}\\n.px-4 {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n}\\n.px-5 {\\n padding-left: 1.25rem;\\n padding-right: 1.25rem;\\n}\\n.py-0\\\\.5 {\\n padding-top: 0.125rem;\\n padding-bottom: 0.125rem;\\n}\\n.py-1 {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n}\\n.py-1\\\\.5 {\\n padding-top: 0.375rem;\\n padding-bottom: 0.375rem;\\n}\\n.py-10 {\\n padding-top: 2.5rem;\\n padding-bottom: 2.5rem;\\n}\\n.py-3 {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n}\\n.pt-2 {\\n padding-top: 0.5rem;\\n}\\n.pt-4 {\\n padding-top: 1rem;\\n}\\n.text-center {\\n text-align: center;\\n}\\n.align-middle {\\n vertical-align: middle;\\n}\\n.font-mono {\\n font-family: \\\"PT Mono\\\", sans-serif;\\n}\\n.text-12 {\\n font-size: 12px;\\n}\\n.text-14 {\\n font-size: 14px;\\n}\\n.text-16 {\\n font-size: 16px;\\n}\\n.text-32 {\\n font-size: 32px;\\n}\\n.text-48 {\\n font-size: 48px;\\n}\\n.text-\\\\[10px\\\\] {\\n font-size: 10px;\\n}\\n.text-\\\\[12px\\\\] {\\n font-size: 12px;\\n}\\n.text-\\\\[13px\\\\] {\\n font-size: 13px;\\n}\\n.text-\\\\[14px\\\\] {\\n font-size: 14px;\\n}\\n.text-\\\\[16px\\\\] {\\n font-size: 16px;\\n}\\n.text-\\\\[17px\\\\] {\\n font-size: 17px;\\n}\\n.text-\\\\[18px\\\\] {\\n font-size: 18px;\\n}\\n.text-\\\\[24px\\\\] {\\n font-size: 24px;\\n}\\n.font-500 {\\n font-weight: 500;\\n}\\n.font-600 {\\n font-weight: 600;\\n}\\n.font-bold {\\n font-weight: 700;\\n}\\n.font-medium {\\n font-weight: 500;\\n}\\n.font-normal {\\n font-weight: 400;\\n}\\n.font-semibold {\\n font-weight: 600;\\n}\\n.uppercase {\\n text-transform: uppercase;\\n}\\n.italic {\\n font-style: italic;\\n}\\n.leading-none {\\n line-height: 1;\\n}\\n.leading-normal {\\n line-height: 1.5;\\n}\\n.leading-snug {\\n line-height: 1.375;\\n}\\n.leading-tight {\\n line-height: 1.25;\\n}\\n.text-\\\\[var\\\\(--neutral-40\\\\)\\\\] {\\n color: var(--neutral-40);\\n}\\n.text-green-600 {\\n --tw-text-opacity: 1;\\n color: rgb(22 163 74 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-10 {\\n --tw-text-opacity: 1;\\n color: rgb(18 27 33 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-100 {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-20 {\\n --tw-text-opacity: 1;\\n color: rgb(36 53 66 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-60 {\\n --tw-text-opacity: 1;\\n color: rgb(122 157 184 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-70 {\\n --tw-text-opacity: 1;\\n color: rgb(156 182 201 / var(--tw-text-opacity, 1));\\n}\\n.text-neutral-80 {\\n --tw-text-opacity: 1;\\n color: rgb(189 206 219 / var(--tw-text-opacity, 1));\\n}\\n.text-red-600 {\\n --tw-text-opacity: 1;\\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\\n}\\n.text-white {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.underline {\\n text-decoration-line: underline;\\n}\\n.opacity-0 {\\n opacity: 0;\\n}\\n.opacity-100 {\\n opacity: 1;\\n}\\n.mix-blend-difference {\\n mix-blend-mode: difference;\\n}\\n.shadow {\\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.shadow-\\\\[0_0_16px_rgba\\\\(189\\\\2c 206\\\\2c 219\\\\2c 0\\\\.4\\\\)\\\\] {\\n --tw-shadow: 0 0 16px rgba(189,206,219,0.4);\\n --tw-shadow-colored: 0 0 16px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.ring-1 {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-neutral-90 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(222 231 237 / var(--tw-ring-opacity, 1));\\n}\\n.filter {\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.transition {\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-all {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-opacity {\\n transition-property: opacity;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-transform {\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.duration-200 {\\n transition-duration: 200ms;\\n}\\n.duration-700 {\\n transition-duration: 700ms;\\n}\\n.ease-in-out {\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n}\\nstrong {\\n font-weight: 600;\\n}\\n.hover\\\\:scale-105:hover {\\n --tw-scale-x: 1.05;\\n --tw-scale-y: 1.05;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.hover\\\\:bg-neutral-90:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(222 231 237 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-neutral-95:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(238 243 246 / var(--tw-bg-opacity, 1));\\n}\\n\";","// Export the built CSS as a string for components that need to inject styles\n// Tailwind + web-components CSS is compiled into this file by our PostCSS pipeline\n// esbuild-raw-plugin ensures importing CSS returns its raw contents as a string\n\nimport output from 'styles.css?raw'\nimport { css, LitElement, unsafeCSS } from 'lit'\n\nconst style = css`\n ${unsafeCSS(output)}\n\n :host([is-inline]) {\n display: inline-flex;\n align-items: center;\n }\n\n :host([is-full-width]) {\n width: 100%;\n flex: 1;\n display: flex;\n }\n\n`\n\nexport class CoreLitElement extends LitElement {\n static styles = [style]\n}\n\nexport default style\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport './load-web-components'\nimport makeBlockie from 'ethereum-blockies-base64'\nimport { CoreLitElement } from '../styles'\n\nexport interface SelectOption {\n value: string\n label: string\n disabled: boolean\n}\n\n@safeCustomElement('custom-option')\nexport class CustomOption extends CoreLitElement {\n @property({ type: Boolean, reflect: true }) selected = false\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) hoverable = true\n\n override render() {\n const base =\n 'flex flex-row flex-1 items-center px-2 py-1 gap-2 h-7 rounded-md border-0 cursor-pointer text-[14px] text-neutral-20 w-full justify-between'\n const hover = this.hoverable ? ' hover:bg-neutral-95' : ''\n const selected = this.selected ? ' bg-neutral-90 rounded' : ''\n const disabled = this.disabled ? ' text-neutral-60 cursor-not-allowed' : ''\n return html`<button class=\"${base}${hover}${selected}${disabled}\" ?disabled=${this.disabled}><slot></slot></button>`\n }\n}\n\n@safeCustomElement('custom-select')\nexport class CustomSelect extends CoreLitElement {\n @property() value?: string\n @property({ type: Boolean }) open = false\n @property({ type: Array }) options: SelectOption[] = []\n @property({ type: String }) size: 'x-small' | 'small' | 'medium' | 'large' =\n 'small'\n\n private toggleOpen() {\n this.open = !this.open\n }\n\n private close() {\n this.open = false\n }\n\n private onOptionClick(opt: SelectOption) {\n if (opt.disabled) return\n this.value = opt.value\n this.dispatchEvent(new Event('change', { bubbles: true }))\n this.close()\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') this.close()\n }\n\n private onOutsideClick = (e: MouseEvent) => {\n if (!this.open) return\n const path = e.composedPath() as Array<EventTarget & Element>\n if (!path.includes(this)) this.close()\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n window.addEventListener('click', this.onOutsideClick, { capture: true })\n }\n\n override disconnectedCallback(): void {\n window.removeEventListener('click', this.onOutsideClick, { capture: true })\n super.disconnectedCallback()\n }\n\n override updated() {\n // reflect initial selected by value\n const selectedOption = this.getSelectedOption()\n if (selectedOption) {\n this.value = selectedOption.value\n }\n }\n\n private getSelectedOption() {\n return this.options.find((o) => o.value === this.value)\n }\n\n private getIdenticonSizePx(): number {\n switch (this.size) {\n case 'x-small':\n return 10\n case 'small':\n return 12\n case 'medium':\n return 14\n case 'large':\n return 16\n default:\n return 14\n }\n }\n\n private renderIdenticon(address: string) {\n const size = this.getIdenticonSizePx()\n const identicon = makeBlockie(address.toLowerCase())\n return html`\n <div class=\"inline-flex items-center p-1 justify-center rounded-lg bg-neutral-100 border border-neutral-90 overflow-hidden flex-none\">\n <img\n class=\"block\"\n src=${identicon}\n alt=\"identicon\"\n style=\"width:${size}px;height:${size}px;\"\n />\n </div>\n `\n }\n\n private renderOptionLabel(option: SelectOption) {\n return option.value.startsWith('0x')\n ? html`<div class=\"inline-flex items-center gap-2 px-2.5 py-1.5 text-neutral-20 leading-tight font-semibold\">${this.renderIdenticon(\n option.value\n )} <span class=\"whitespace-nowrap overflow-hidden text-ellipsis text-[14px]\">${\n option.label\n }</span></div>`\n : html`<url-view url=${option.value} label=${option.label} size=\"x-small\"></url-view>`\n }\n\n override render() {\n const selectedOption = this.getSelectedOption()\n return html`\n <div class=\"relative w-full min-w-[360px]\" @keydown=${this.onKeyDown}>\n <button class=\"box-border flex flex-row flex-1 w-full items-center h-[29px] bg-white border border-neutral-90 rounded-lg text-neutral-20 cursor-pointer justify-between\" @click=${\n this.toggleOpen\n } aria-haspopup=\"listbox\" aria-expanded=${this.open}>\n <custom-option is-full-width .hoverable=${false}>\n <div class=\"flex flex-row flex-1 items-center justify-between\">\n <span>${selectedOption ? this.renderOptionLabel(selectedOption) : 'Select option'}</span>\n <lukso-icon class=\"transition-transform ${this.open ? 'rotate-180' : ''}\" name=\"arrow-down-sm\" size=\"small\" color=\"neutral-20\" aria-hidden=\"true\">\n </lukso-icon>\n </div>\n </custom-option>\n </button>\n\n ${\n this.open && this.options.length > 0\n ? html`<div class=\"absolute left-0 top-[calc(100%+8px)] w-full bg-white border border-neutral-90 shadow-[0_0_16px_rgba(189,206,219,0.4)] rounded-xl p-2.5 flex flex-col gap-1 z-[1000] overflow-hidden box-border\" role=\"listbox\">\n ${this.options.map(\n (\n opt\n ) => html`<custom-option .selected=${opt.value === this.value} .disabled=${opt.disabled} @click=${() => this.onOptionClick(opt)}>\n ${this.renderOptionLabel(opt)}\n </custom-option>`\n )}\n </div>`\n : ''\n }\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'custom-select': CustomSelect\n 'custom-option': CustomOption\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport './load-web-components'\nimport { CoreLitElement } from '../styles'\n\n/**\n * Compact function name badge with icon\n * Props:\n * - label (deprecated): text to display; use default slot instead\n * - icon: lukso-icon name\n * - size: x-small | small | medium | large (affects paddings and font)\n * - color: optional lukso-icon color token (e.g., \"blue-50\")\n */\n@safeCustomElement('function-name-view')\nexport class FunctionNameView extends CoreLitElement {\n /**\n * Deprecated: Prefer slot content for the label. Will be used as fallback\n * when no slot is provided to maintain backward compatibility.\n */\n @property() label = ''\n @property() icon: string = 'user'\n @property() size: 'x-small' | 'small' | 'medium' | 'large' = 'small'\n @property({ attribute: 'color' }) color?: string\n\n private getPadding(): string {\n switch (this.size) {\n case 'x-small':\n return '2px 8px'\n case 'small':\n return '4px 10px'\n case 'medium':\n return '6px 12px'\n case 'large':\n return '8px 14px'\n default:\n return '4px 10px'\n }\n }\n\n private getFontSize(): string {\n switch (this.size) {\n case 'x-small':\n return '12px'\n case 'small':\n return '14px'\n case 'medium':\n return '16px'\n case 'large':\n return '18px'\n default:\n return '14px'\n }\n }\n\n private getIconSize(): 'x-small' | 'small' | 'medium' | 'large' {\n return this.size\n }\n\n private getHeight(): string {\n switch (this.size) {\n case 'x-small':\n return 'h-6'\n case 'small':\n return 'h-8'\n case 'medium':\n return 'h-10'\n case 'large':\n return 'h-12'\n default:\n return 'h-8'\n }\n }\n\n override render() {\n return html`\n <div class=\"inline-flex ${this.getHeight()} items-center gap-2 bg-neutral-90 text-neutral-20 rounded-xl leading-none font-semibold\" style=\"padding:${this.getPadding()}; font-size:${this.getFontSize()};\">\n <lukso-icon name=${this.icon} size=${this.getIconSize()} color=${this.color || ''}></lukso-icon>\n <span class=\"whitespace-nowrap\"><slot>${this.label}</slot></span>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'function-name-view': FunctionNameView\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport './load-web-components'\nimport { CoreLitElement } from '../styles'\n\ntype GasProvider = { type: 'relayer' | 'controller'; id: string }\ntype Relayer = {\n id: string\n name: string\n isCustom: boolean\n apiUrl: string\n chainIds: string[]\n createdAt: number\n website?: string\n}\n\n@safeCustomElement('gas-provider-view')\nexport class GasProviderView extends CoreLitElement {\n @property({ type: Array, reflect: true }) allRelayers: Relayer[] = []\n @property({ type: Number, reflect: true }) balance = 0\n @property({ type: Object, attribute: 'selected-gas-provider', reflect: true })\n selectedGasProvider?: GasProvider\n @property({ attribute: 'controller-address', reflect: true })\n controllerAddress?: string\n @property({ attribute: 'controller-name', reflect: true })\n controllerName?: string\n @property({ attribute: 'symbol', reflect: true }) symbol: string = 'LYX'\n @property({ type: Number, reflect: true }) decimals = 18\n @property({ type: Number, attribute: 'transaction-fee', reflect: true })\n transactionFee = 0\n @property({ type: Number, attribute: 'relayer-available', reflect: true })\n relayerAvailable = 0\n @property({ type: Number, attribute: 'relayer-used', reflect: true })\n relayerUsed = 0\n @property({ type: Number, attribute: 'relayer-to-be-used', reflect: true })\n relayerToBeUsed = 0\n @property({ attribute: 'relayer-reset-date', reflect: true })\n relayerResetDate: string = 'N/A'\n\n private formatToken(amount: number) {\n // naive formatting for display; consumers can override by slotting\n return (amount / 10 ** this.decimals).toLocaleString(undefined, {\n maximumFractionDigits: 6,\n })\n }\n\n private onSelectChanged(e: Event) {\n const value = (e.target as any).value as string | undefined\n if (!value) return\n if (this.controllerAddress && value === this.controllerAddress) {\n const next: GasProvider = {\n type: 'controller',\n id: this.controllerAddress,\n }\n if (\n !this.selectedGasProvider ||\n this.selectedGasProvider.id !== next.id ||\n this.selectedGasProvider.type !== next.type\n ) {\n this.selectedGasProvider = next\n this.dispatchEvent(\n new CustomEvent('on-gas-provider-change', {\n detail: next,\n bubbles: true,\n })\n )\n }\n return\n }\n // Map selection back to relayer by website/apiUrl fallback\n const match = this.allRelayers.find(\n (r) => r.website === value || r.apiUrl === value\n )\n if (match) {\n const next: GasProvider = { type: 'relayer', id: match.id }\n if (\n !this.selectedGasProvider ||\n this.selectedGasProvider.id !== next.id ||\n this.selectedGasProvider.type !== next.type\n ) {\n this.selectedGasProvider = next\n this.dispatchEvent(\n new CustomEvent('on-gas-provider-change', {\n detail: next,\n bubbles: true,\n })\n )\n }\n return\n }\n }\n\n private renderProgress(\n totalAvailable: number,\n used: number,\n toBeUsed: number,\n symbol: string,\n hasError: boolean\n ) {\n const usedPercent = totalAvailable ? (used / totalAvailable) * 100 : 0\n const toBeUsedPercent = totalAvailable\n ? (toBeUsed / totalAvailable) * 100\n : 0\n const barOverHalf = usedPercent > 50\n return html`<progress-view\n class=${hasError ? 'error' : ''}\n .data=${[\n {\n value: usedPercent,\n color: 'var(--green-54)',\n title: `${usedPercent}%`,\n },\n {\n value: toBeUsedPercent,\n color: 'var(--neutral-60)',\n title: `${toBeUsedPercent}%`,\n },\n ]}\n label-position=${barOverHalf ? 'left' : 'right'}\n .label=${`${toBeUsed} / ${String(totalAvailable)} ${symbol}`}\n >\n </progress-view>`\n }\n\n private renderControllerProgress() {\n return this.renderProgress(\n this.balance,\n 0,\n this.transactionFee,\n this.symbol,\n this.transactionFee > this.balance\n )\n }\n\n private renderRelayerProgress() {\n return this.renderProgress(\n this.relayerAvailable,\n this.relayerUsed,\n this.relayerToBeUsed,\n 'M GAS',\n this.relayerToBeUsed > this.relayerAvailable\n )\n }\n\n private displayRelayerResetDate() {\n const date = new Date(this.relayerResetDate)\n return Number.isNaN(date.getTime()) ? 'N/A' : date.toLocaleDateString()\n }\n\n override render() {\n const formatted = this.formatToken(this.balance)\n\n // Build select options: relayers first, then controller\n const relayerOptions = this.allRelayers.map((r) => ({\n value: r.website || r.apiUrl || `relayer:${r.id}`,\n label: r.name,\n disabled: false,\n }))\n const controllerOption = this.controllerAddress\n ? [\n {\n value: this.controllerAddress,\n label: this.controllerName\n ? `${this.controllerName} (${formatted} ${this.symbol})`\n : `UP Browser Extension (${formatted} ${this.symbol})`,\n disabled: false,\n },\n ]\n : []\n const options = [...relayerOptions, ...controllerOption]\n\n const selectedValue = this.selectedGasProvider\n ? this.selectedGasProvider.type === 'controller'\n ? this.controllerAddress\n : (() => {\n const r = this.allRelayers.find(\n (x) => x.id === this.selectedGasProvider?.id\n )\n return (\n r?.website ||\n r?.apiUrl ||\n `relayer:${this.selectedGasProvider?.id}`\n )\n })()\n : undefined\n\n return html`\n <div class=\"w-full\">\n <custom-select .value=${selectedValue} .options=${options} @change=${this.onSelectChanged}></custom-select>\n ${\n this.selectedGasProvider\n ? html`<div class=\"mt-2\">\n ${this.selectedGasProvider?.type === 'controller' ? this.renderControllerProgress() : this.renderRelayerProgress()}\n ${\n this.selectedGasProvider?.type === 'relayer'\n ? html`<span class=\"text-[12px] text-neutral-60 mt-2 block\">\n Your total of ${this.relayerAvailable}M resets on ${this.displayRelayerResetDate()}.\n </span>`\n : html``\n }\n </div>`\n : html``\n }\n \n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'gas-provider-view': GasProviderView\n }\n}\n","import { Task } from '@lit/task'\nimport { safeCustomElement } from '@lukso/core/utils'\nimport {\n type ImageResult,\n useAddressResolver,\n useImageLoader,\n} from '@lukso/transaction-view-headless'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { CoreLitElement } from '../styles'\n\n// LUKSO web components are loaded dynamically via plugin\n\n/**\n * Address data interface for display\n */\nexport interface AddressData {\n address: string\n name?: string\n lsp4TokenName?: string\n lsp4TokenSymbol?: string\n baseAsset?: {\n lsp4TokenName?: string\n lsp4TokenSymbol?: string\n }\n profileImages?: any[]\n avatar?: any[]\n icon?: any[]\n images?: any[]\n __gqltype?: string\n __identity?: string\n identity?: string\n}\n\n/**\n * Icon/Avatar display component for addresses\n *\n * Displays just the profile image/avatar for an address with proper styling.\n * Supports both Universal Profiles and contract addresses.\n *\n * @example\n * ```html\n * <icon-view\n * address=\"0x1234...\"\n * .resolved=\"${resolvedData}\"\n * size=\"medium\"\n * ></icon-view>\n * ```\n */\n@safeCustomElement('icon-view')\nexport class IconView extends CoreLitElement {\n /**\n * The address to display (required)\n */\n @property() address!: string\n\n /**\n * Resolved address data (profile, images, etc.)\n */\n @property({ type: Object }) resolved?: AddressData\n\n /**\n * Display size\n */\n @property() size: 'x-small' | 'small' | 'medium' | 'large' | '2x-large' =\n 'small'\n\n /**\n * Optional label to display above the icon\n */\n @property() label?: string\n\n /**\n * Whether to show the resolved display name below/beside the icon\n */\n @property({ type: Boolean, attribute: 'show-name' }) showName = true\n\n /**\n * Name placement relative to the icon: 'below' (stacked) or 'beside' (inline)\n */\n @property({ attribute: 'name-position' }) namePosition: 'below' | 'beside' =\n 'below'\n\n /**\n * Maximum width for the name label (pixels)\n */\n @property({ type: Number, attribute: 'max-width' }) maxWidth = 200\n\n /**\n * Whether to show small identicon badge on the avatar\n */\n @property({ type: Boolean, attribute: 'show-icon-identicon' })\n showIconIdenticon = true\n\n /**\n * Whether to show small identicon badge on the label\n */\n @property({ type: Boolean, attribute: 'show-label-identicon' })\n showLabelIdenticon = false\n\n /**\n * Force unresolved display (for testing)\n */\n @property({ type: Boolean, attribute: 'force-unresolved' }) forceUnresolved =\n false\n\n /**\n * Property name to use for loading images (e.g., 'images', 'icons', 'profileImages')\n * If not set, uses default image loading logic\n */\n @property({ type: String, attribute: 'image-hint' }) imageHint?: string\n\n /**\n * Index to use when loading from an image array (e.g., images[0])\n * Only used when imageHint points to an array property\n */\n @property({ type: Number, attribute: 'image-index' }) imageIndex?: number\n\n // Composables\n private imageLoader = useImageLoader()\n private addressResolver = useAddressResolver()\n isLoadingAddress = false\n isLoadingImage = false\n\n // Task for resolving address data\n private addressTask = new Task(this, {\n task: async ([address]) => {\n if (!address) return null\n\n this.isLoadingAddress = true\n try {\n // Pass the full compound address to resolver (e.g., \"0x123...-0x456...\")\n const resolved = await this.addressResolver.resolveAddress(address)\n this.requestUpdate() // Force re-render after resolution\n return resolved\n } catch (error) {\n console.warn('❌ IconView: Failed to resolve address:', error)\n return null\n } finally {\n this.isLoadingAddress = false\n }\n },\n args: () => [this.address],\n })\n\n // Task for loading profile image\n private imageTask = new Task(this, {\n task: async ([resolved]) => {\n if (!resolved) return null\n\n this.isLoadingImage = true\n try {\n let image: ImageResult | null = null\n\n // If imageHint is specified, load directly from that property\n if (this.imageHint && (resolved as any)[this.imageHint]) {\n const imageArray = (resolved as any)[this.imageHint]\n if (Array.isArray(imageArray) && imageArray.length > 0) {\n image = await this.imageLoader.loadImage(imageArray, {\n width: this.getSizePixels(),\n height: this.getSizePixels(),\n dpr: window.devicePixelRatio || 1,\n index: this.imageIndex,\n })\n }\n } else {\n // Use default profile image loading logic\n image = await this.imageLoader.loadProfileImage(resolved, {\n width: this.getSizePixels(),\n height: this.getSizePixels(),\n dpr: window.devicePixelRatio || 1,\n index: this.imageIndex,\n })\n }\n\n return image || this.imageLoader.getFallbackImage(resolved)\n } catch (error) {\n console.warn('Failed to load address image:', error)\n return this.imageLoader.getFallbackImage(resolved || {})\n } finally {\n this.isLoadingImage = false\n }\n },\n args: () => [this.addressTask.value],\n })\n\n /**\n * Get pixel size for the current size setting\n */\n private getSizePixels(): number {\n switch (this.size) {\n case 'x-small':\n return 16\n case 'small':\n return 24\n case 'medium':\n return 32\n case 'large':\n return 48\n case '2x-large':\n return 124\n default:\n return 24\n }\n }\n\n /**\n * Check if this is a contract address (shows square icon)\n */\n private get isContract(): boolean {\n const resolved = this.addressTask.value\n return resolved ? this.imageLoader.isContractAddress(resolved) : false\n }\n\n /**\n * Handle icon click\n */\n private handleClick() {\n this.dispatchEvent(\n new CustomEvent('address-click', {\n detail: {\n address: this.address,\n resolved: this.addressTask.value,\n },\n bubbles: true,\n })\n )\n }\n\n override render() {\n const imageResult = this.imageTask.value\n\n const containerClass = this.namePosition === 'beside' ? 'row' : 'column'\n return html`\n <div class=\"${\n containerClass === 'row'\n ? 'flex items-start gap-1'\n : 'flex flex-col items-center gap-1'\n }\">\n ${\n this.label\n ? html`<div class=\"text-[12px] text-neutral-60 font-medium\">${\n this.label\n }</div>`\n : ''\n }\n\n <div class=\"${\n this.namePosition === 'beside'\n ? 'inline-flex flex-row items-center gap-2'\n : 'inline-flex flex-col items-center gap-1.5'\n }\">\n <lukso-profile\n size=${this.size}\n profile-address=${this.address}\n profile-url=${imageResult?.src || ''}\n ?has-identicon=${this.showIconIdenticon}\n ?is-square=${this.isContract}\n class=\"inline-flex items-center cursor-pointer transition-transform duration-200 hover:scale-105\"\n @click=${this.handleClick}\n ></lukso-profile>\n\n ${\n this.showName\n ? html`\n <address-view\n class=\"leading-none\"\n address=${this.address}\n .showIdenticon=${this.showLabelIdenticon}\n size=${this.size}\n max-width=${this.maxWidth}\n ></address-view>\n `\n : ''\n }\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'icon-view': IconView\n }\n}\n","import {\n type AddressImageData,\n type ImageLoadOptions,\n type ImageResult,\n useImageLoader as useImageLoaderHeadless,\n} from '@lukso/transaction-view-headless'\nimport type { Signal } from '@preact/signals-core'\nimport type { ReactiveController, ReactiveControllerHost } from 'lit'\n\n/**\n * Lit controller state for image loading\n */\nexport interface ImageLoadState {\n result: ImageResult | null\n loading: boolean\n error: string | null\n}\n\n/**\n * Lit Reactive Controller for image loading functionality\n * Integrates the headless image loader with Lit elements\n */\nexport class ImageLoaderController implements ReactiveController {\n private host: ReactiveControllerHost\n private headlessLoader = useImageLoaderHeadless()\n\n // Internal state\n private _state: ImageLoadState = {\n result: null,\n loading: false,\n error: null,\n }\n\n constructor(host: ReactiveControllerHost) {\n this.host = host\n host.addController(this)\n }\n\n hostConnected() {\n // Controller is ready\n }\n\n hostDisconnected() {\n // Cleanup if needed\n }\n\n get state(): ImageLoadState {\n return this._state\n }\n\n get isLoading(): boolean {\n return this._state.loading\n }\n\n get error(): string | null {\n return this._state.error\n }\n\n get result(): ImageResult | null {\n return this._state.result\n }\n\n /**\n * Load image from data array\n */\n async loadImage(\n imageData: any[],\n options: ImageLoadOptions = {}\n ): Promise<ImageResult | null> {\n this.updateState({ loading: true, error: null })\n\n try {\n const result = await this.headlessLoader.loadImage(imageData, options)\n this.updateState({ result, loading: false })\n return result\n } catch (err) {\n const error = err instanceof Error ? err.message : 'Failed to load image'\n this.updateState({ loading: false, error })\n return null\n }\n }\n\n /**\n * Load profile image from address data\n */\n async loadProfileImage(\n addressData: AddressImageData,\n options: ImageLoadOptions = {}\n ): Promise<ImageResult | null> {\n this.updateState({ loading: true, error: null })\n\n try {\n const result =\n (await this.headlessLoader.loadProfileImage(addressData, options)) ||\n this.headlessLoader.getFallbackImage(addressData)\n\n this.updateState({ result, loading: false })\n return result\n } catch (err) {\n const error =\n err instanceof Error ? err.message : 'Failed to load profile image'\n const fallback = this.headlessLoader.getFallbackImage(addressData)\n this.updateState({ result: fallback, loading: false, error })\n return fallback\n }\n }\n\n /**\n * Load image from address signal (reactive)\n */\n loadFromSignal(\n addressSignal: Signal<{ data?: AddressImageData }>,\n options: ImageLoadOptions = {}\n ): void {\n const addressData = addressSignal.value?.data\n\n if (!addressData) {\n const fallback = this.headlessLoader.getFallbackImage({})\n this.updateState({ result: fallback, loading: false, error: null })\n return\n }\n\n this.loadProfileImage(addressData, options)\n }\n\n /**\n * Get fallback image synchronously\n */\n getFallbackImage(addressData: AddressImageData): ImageResult {\n return this.headlessLoader.getFallbackImage(addressData)\n }\n\n /**\n * Check if address is a contract\n */\n isContractAddress(addressData: AddressImageData): boolean {\n return this.headlessLoader.isContractAddress(addressData)\n }\n\n /**\n * Clear current state\n */\n clear(): void {\n this.updateState({ result: null, loading: false, error: null })\n }\n\n private updateState(updates: Partial<ImageLoadState>): void {\n this._state = { ...this._state, ...updates }\n this.host.requestUpdate()\n }\n}\n\n/**\n * Utility function to create an image loader controller\n */\nexport function useImageLoader(\n host: ReactiveControllerHost\n): ImageLoaderController {\n return new ImageLoaderController(host)\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport './load-web-components'\nimport { CoreLitElement } from '../styles'\n\n@safeCustomElement('notification-view')\nexport class NotificationView extends CoreLitElement {\n /** Variant controls background/emphasis */\n @property() variant: 'success' | 'warning' | 'error' | 'info' = 'info'\n\n /** Notification message content */\n @property() message = ''\n\n /** Optional title shown above the description */\n @property() title = ''\n\n /** Whether the acknowledge button is shown */\n @property({ type: Boolean, attribute: 'acknowledgeable' }) acknowledgeable =\n false\n\n /** Text shown next to acknowledge checkbox */\n @property({ attribute: 'acknowledge-text' }) acknowledgeText =\n 'I understand and want to continue'\n\n /** Internal acknowledged state (for default behavior) */\n @state() private acknowledged = false\n\n /** External control for acknowledge checkbox */\n @property({ type: Boolean, reflect: true }) checked = false\n\n private handleAcknowledgeChange(e: Event) {\n e.stopPropagation()\n const target: any = e.target as any\n const checked = !!(target?.checked ?? (e as any).detail?.checked ?? false)\n if (checked !== this.checked) {\n this.checked = checked\n }\n if (this.checked) {\n this.acknowledged = true\n this.dispatchEvent(\n new CustomEvent('notification-acknowledged', {\n detail: {\n variant: this.variant,\n message: this.message,\n title: this.title,\n checked: this.checked,\n },\n bubbles: true,\n })\n )\n }\n }\n\n override render() {\n if (this.acknowledged) return html``\n\n return html`\n <div class=\"grid grid-cols-[24px_1fr] items-start gap-3 p-3 rounded-xl text-neutral-10 leading-snug ${this.getVariantBackgroundClass()}\">\n <div class=\"flex items-center justify-center text-[16px] text-neutral-20 self-center\" aria-hidden=\"true\">\n <lukso-icon name=\"${this.renderIcon()}\" size=\"small\" color=\"${this.getVariantColor()}\"></lukso-icon>\n </div>\n <div class=\"text-[14px] flex flex-col gap-1.5\">\n ${\n this.title\n ? html`<div class=\"font-semibold text-neutral-20 paragraph-inter-14-semi-bold\">${this.title}</div>`\n : ''\n }\n <div class=\"text-neutral-20\"><slot>${this.message}</slot></div>\n ${\n this.acknowledgeable\n ? html`\n <div class=\"inline-flex items-center gap-2 mt-1 text-[12px] text-neutral-20 select-none cursor-pointer paragraph-inter-12-medium\">\n <lukso-checkbox \n size=\"x-small\" \n ?checked=${this.checked}\n @change=${this.handleAcknowledgeChange}\n ><span class=\"paragraph-inter-14-semi-bold\">${this.acknowledgeText}</span></lukso-checkbox>\n </div>\n `\n : ''\n }\n </div>\n </div>\n `\n }\n\n private renderIcon() {\n switch (this.variant) {\n case 'success':\n return 'bulb-outline'\n case 'warning':\n return 'warning-round'\n case 'error':\n return 'warning-triangle'\n default:\n return 'bulb-outline'\n }\n }\n\n private getVariantColor() {\n switch (this.variant) {\n case 'success':\n return 'green-45'\n case 'warning':\n return 'yellow-55'\n case 'error':\n return 'red-55'\n default:\n return 'blue-50'\n }\n }\n\n private getVariantBackgroundClass() {\n switch (this.variant) {\n case 'success':\n return 'bg-green-85'\n case 'warning':\n return 'bg-yellow-85'\n case 'error':\n return 'bg-red-85'\n default:\n return 'bg-blue-85'\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'notification-view': NotificationView\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { CoreLitElement } from '../styles'\n\nexport type ProgressSegment = {\n value: number\n color?: string\n title?: string\n}\n\n@safeCustomElement('progress-view')\nexport class ProgressView extends CoreLitElement {\n @property({ type: Array }) data: ProgressSegment[] = []\n @property() label?: string\n @property() unit?: string\n @property() address?: string\n @property({ attribute: 'label-position' }) labelPosition: 'left' | 'right' =\n 'right'\n\n private renderGasProviderLabel() {\n return html`\n ${\n this.label\n ? html`\n <span class=\"progress-label-value\">${this.label}</span>\n ${\n this.unit\n ? html`<span class=\"progress-label-unit\" data-testid=\"unit\">${this.unit}</span>`\n : ''\n }\n `\n : html`\n <slot></slot>\n ${\n this.unit\n ? html`<span class=\"progress-label-unit\" data-testid=\"unit\">${this.unit}</span>`\n : ''\n }\n `\n }\n `\n }\n\n override render() {\n const isError = (this.className || '').split(/\\s+/).includes('error')\n return html`\n <div class=\"relative grid w-full ${this.className || ''}\">\n <div class=\"flex bg-neutral-95 h-6 rounded-lg relative col-[1] row-[1] overflow-hidden\" style=${isError ? 'background-color: var(--red-65);' : ''} role=\"progressbar\">\n ${this.data.map((seg, index) => {\n const width = `${Math.max(0, Math.min(100, Number(seg.value || 0)))}%`\n const backgroundColor = seg.color || 'var(--neutral-90)'\n const title = seg.title || ''\n return html`<div\n class=\"h-full flex items-center justify-center text-[10px] font-semibold\"\n style=${`width:${width};background-color:${backgroundColor};`}\n data-testid=${`value-${index}`}\n >${title}</div>`\n })}\n </div>\n <div class=${`flex items-center absolute h-6 rounded-lg overflow-visible w-full col-[1] row-[1] top-0 left-0 ${\n this.labelPosition === 'left' ? 'justify-start' : 'justify-end'\n }`} data-testid=\"progress-labels\">\n <div class=\"text-[13px] font-semibold text-white mix-blend-difference h-inherit flex items-center p-0 right-4 absolute\" data-testid=\"label\">\n ${this.renderGasProviderLabel()}\n </div>\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'progress-view': ProgressView\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { CoreLitElement } from '../styles'\n\n/**\n * ScrollToBottomButton (core) - reusable scroll helper.\n * Emits `scroll-to-bottom` when clicked.\n */\n@safeCustomElement('scroll-to-bottom-button')\nexport class ScrollToBottomButton extends CoreLitElement {\n /** Controls visibility */\n @property({ type: Boolean, attribute: 'show' }) show = false\n\n /** Icon color (CSS var or token) */\n @property() color: string = 'neutral-20'\n\n /** Icon size token */\n @property({ attribute: 'icon-size' }) iconSize:\n | 'x-small'\n | 'small'\n | 'medium'\n | 'large' = 'medium'\n\n /** Icon name (attribute: icon-name) */\n @property({ attribute: 'icon-name' }) iconName: string = 'arrow-down-lg'\n\n private handleClick() {\n this.dispatchEvent(new CustomEvent('scroll-to-bottom', { bubbles: true }))\n }\n\n override render() {\n return html`\n <div class=\"h-14 w-[140px] self-center rounded-t-[120px] bg-[radial-gradient(ellipse_75px_52px_at_bottom_center,rgba(255,255,255,0.78)_0%,rgba(255,255,255,0)_112.5%)] flex justify-center items-center transition-opacity duration-700 ease-in-out ${\n this.show ? 'opacity-100 z-10' : 'opacity-0 -z-10'\n }\">\n <div class=\"flex justify-center items-center w-10 h-10 rounded-full border border-neutral-90 shadow-[0_0_16px_rgba(189,206,219,0.4)] bg-neutral-100 cursor-pointer animate-bounce\" @click=${\n this.handleClick\n }>\n <lukso-icon\n name=${this.iconName}\n size=${this.iconSize}\n color=${this.color}\n ></lukso-icon>\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'scroll-to-bottom-button': ScrollToBottomButton\n }\n}\n","import type { Signal } from '@preact/signals-core'\nimport type { ReactiveController, ReactiveControllerHost } from 'lit'\n\n/**\n * Lit Reactive Controller for @preact/signals-core integration\n * This controller allows Lit elements to reactively update when signals change\n */\nexport class SignalController<T = any> implements ReactiveController {\n private host: ReactiveControllerHost\n private signal: Signal<T>\n private unsubscribe?: () => void\n\n constructor(host: ReactiveControllerHost, signal: Signal<T>) {\n this.host = host\n this.signal = signal\n host.addController(this)\n }\n\n hostConnected() {\n // In a real implementation, you would use signal.subscribe()\n // For now, we'll use a polling approach\n let lastValue = this.signal.value\n\n const check = () => {\n const currentValue = this.signal.value\n if (currentValue !== lastValue) {\n lastValue = currentValue\n this.host.requestUpdate()\n }\n }\n\n // Set up polling\n const interval = setInterval(check, 50) // 20fps updates\n\n this.unsubscribe = () => clearInterval(interval)\n }\n\n hostDisconnected() {\n if (this.unsubscribe) {\n this.unsubscribe()\n this.unsubscribe = undefined\n }\n }\n\n get value(): T {\n return this.signal.value\n }\n\n /**\n * Create a new SignalController for a different signal\n */\n static create<U>(\n host: ReactiveControllerHost,\n signal: Signal<U>\n ): SignalController<U> {\n return new SignalController(host, signal)\n }\n}\n\n/**\n * Lit Reactive Controller for multiple signals\n * Updates the host when any of the tracked signals change\n */\nexport class MultiSignalController implements ReactiveController {\n private host: ReactiveControllerHost\n private signals: Signal<any>[]\n private unsubscribes: (() => void)[] = []\n\n constructor(host: ReactiveControllerHost, signals: Signal<any>[]) {\n this.host = host\n this.signals = signals\n host.addController(this)\n }\n\n hostConnected() {\n this.signals.forEach((signal, index) => {\n let lastValue = signal.value\n\n const check = () => {\n const currentValue = signal.value\n if (currentValue !== lastValue) {\n lastValue = currentValue\n this.host.requestUpdate()\n }\n }\n\n const interval = setInterval(check, 50)\n this.unsubscribes[index] = () => clearInterval(interval)\n })\n }\n\n hostDisconnected() {\n this.unsubscribes.forEach((unsubscribe) => {\n unsubscribe()\n })\n this.unsubscribes = []\n }\n\n getValue(index: number): any {\n return this.signals[index]?.value\n }\n\n getValues(): any[] {\n return this.signals.map((signal) => signal.value)\n }\n}\n\n/**\n * Utility function to create a signal controller\n */\nexport function useSignal<T>(\n host: ReactiveControllerHost,\n signal: Signal<T>\n): SignalController<T> {\n return new SignalController(host, signal)\n}\n\n/**\n * Utility function to create a multi-signal controller\n */\nexport function useSignals(\n host: ReactiveControllerHost,\n signals: Signal<any>[]\n): MultiSignalController {\n return new MultiSignalController(host, signals)\n}\n","import type { DecoderResult } from '@lukso/transaction-decoder'\nimport {\n findAllTransactionViews,\n findBestTransactionView,\n type UseTransactionViewOptions,\n useTransactionView as useTransactionViewHeadless,\n type ViewMatch,\n} from '@lukso/transaction-view-headless'\nimport type { Signal } from '@preact/signals-core'\nimport type { ReactiveController, ReactiveControllerHost } from 'lit'\n\n/**\n * Lit controller state for transaction view\n */\nexport interface TransactionViewState {\n matches: ViewMatch[]\n bestMatch: ViewMatch | null\n component: any\n loading: boolean\n error: Error | null\n isResolvingAddresses: boolean\n resolvedAddresses: Record<string, any>\n}\n\n/**\n * Lit Reactive Controller for transaction view functionality\n * Integrates the headless transaction view system with Lit elements\n */\nexport class TransactionViewController implements ReactiveController {\n private host: ReactiveControllerHost\n private headlessInstance: any = null\n\n // Internal state\n private _state: TransactionViewState = {\n matches: [],\n bestMatch: null,\n component: null,\n loading: false,\n error: null,\n isResolvingAddresses: false,\n resolvedAddresses: {},\n }\n\n private syncInterval?: number\n\n constructor(\n host: ReactiveControllerHost,\n private transaction: DecoderResult,\n private options: UseTransactionViewOptions\n ) {\n this.host = host\n host.addController(this)\n this.initialize()\n }\n\n hostConnected() {\n // Set up periodic sync with headless instance\n this.setupSync()\n }\n\n hostDisconnected() {\n // Cleanup sync\n if (this.syncInterval) {\n clearInterval(this.syncInterval)\n this.syncInterval = undefined\n }\n }\n\n get state(): TransactionViewState {\n return this._state\n }\n\n get matches(): ViewMatch[] {\n return this._state.matches\n }\n\n get bestMatch(): ViewMatch | null {\n return this._state.bestMatch\n }\n\n get component(): any {\n return this._state.component\n }\n\n get isLoading(): boolean {\n return this._state.loading\n }\n\n get error(): Error | null {\n return this._state.error\n }\n\n get isResolvingAddresses(): boolean {\n return this._state.isResolvingAddresses\n }\n\n get resolvedAddresses(): Record<string, any> {\n return this._state.resolvedAddresses\n }\n\n /**\n * Load a specific match\n */\n async loadMatch(match: ViewMatch): Promise<any> {\n if (!this.headlessInstance) {\n throw new Error('Transaction view not initialized')\n }\n\n try {\n const result = await this.headlessInstance.loadMatch(match)\n this.syncState()\n return result\n } catch (err) {\n this.syncState()\n throw err\n }\n }\n\n /**\n * Load the best match\n */\n async loadBestMatch(): Promise<any> {\n if (!this.headlessInstance) {\n throw new Error('Transaction view not initialized')\n }\n\n try {\n const result = await this.headlessInstance.loadBestMatch()\n this.syncState()\n return result\n } catch (err) {\n this.syncState()\n throw err\n }\n }\n\n /**\n * Refresh matches\n */\n refreshMatches(): void {\n if (!this.headlessInstance) {\n console.warn('Transaction view not initialized, cannot refresh matches')\n return\n }\n\n this.headlessInstance.refreshMatches()\n this.syncState()\n }\n\n /**\n * Resolve addresses\n */\n async resolveAddresses(): Promise<void> {\n if (!this.headlessInstance) {\n throw new Error('Transaction view not initialized')\n }\n\n try {\n await this.headlessInstance.resolveAddresses()\n this.syncState()\n } catch (err) {\n this.syncState()\n throw err\n }\n }\n\n /**\n * Update transaction and options\n */\n update(transaction: DecoderResult, options: UseTransactionViewOptions): void {\n this.transaction = transaction\n this.options = options\n this.initialize()\n }\n\n /**\n * Get the best matching view without loading\n */\n static findBestMatch(\n transaction: DecoderResult,\n framework: 'lit' | 'rn' = 'lit'\n ): ViewMatch | null {\n return findBestTransactionView(transaction, framework)\n }\n\n /**\n * Get all matching views without loading\n */\n static findAllMatches(\n transaction: DecoderResult,\n framework: 'lit' | 'rn' = 'lit'\n ): ViewMatch[] {\n return findAllTransactionViews(transaction, framework)\n }\n\n private initialize(): void {\n try {\n this.headlessInstance = useTransactionViewHeadless(\n this.transaction,\n this.options\n )\n this.syncState()\n } catch (err) {\n this.updateState({\n error:\n err instanceof Error\n ? err\n : new Error('Failed to initialize transaction view'),\n })\n console.error('Failed to initialize transaction view:', err)\n }\n }\n\n private setupSync(): void {\n // Sync immediately\n this.syncState()\n\n // Set up periodic sync\n this.syncInterval = setInterval(() => {\n this.syncState()\n }, 100) as any // Type assertion for browser/node compatibility\n }\n\n private syncState(): void {\n if (!this.headlessInstance) return\n\n this.updateState({\n matches: this.headlessInstance.matches,\n bestMatch: this.headlessInstance.bestMatch,\n component: this.headlessInstance.component,\n loading: this.headlessInstance.isLoading,\n error: this.headlessInstance.error,\n isResolvingAddresses: this.headlessInstance.isResolvingAddresses,\n resolvedAddresses: this.headlessInstance.resolvedAddresses,\n })\n }\n\n private updateState(updates: Partial<TransactionViewState>): void {\n this._state = { ...this._state, ...updates }\n this.host.requestUpdate()\n }\n}\n\n/**\n * Utility function to create a transaction view controller\n */\nexport function useTransactionView(\n host: ReactiveControllerHost,\n transaction: DecoderResult,\n options: UseTransactionViewOptions\n): TransactionViewController {\n return new TransactionViewController(host, transaction, options)\n}\n\n/**\n * Controller for working with transaction signals from the decoder\n */\nexport class TransactionSignalController<_T = any>\n implements ReactiveController\n{\n private host: ReactiveControllerHost\n private signal: Signal<{\n data: DecoderResult\n loading: boolean\n error?: string\n }>\n private unsubscribe?: () => void\n\n private _data: DecoderResult | null = null\n private _loading = false\n private _error: string | null = null\n\n constructor(\n host: ReactiveControllerHost,\n signal: Signal<{ data: DecoderResult; loading: boolean; error?: string }>\n ) {\n this.host = host\n this.signal = signal\n host.addController(this)\n }\n\n hostConnected() {\n this.setupSignalSync()\n }\n\n hostDisconnected() {\n if (this.unsubscribe) {\n this.unsubscribe()\n this.unsubscribe = undefined\n }\n }\n\n get data(): DecoderResult | null {\n return this._data\n }\n\n get loading(): boolean {\n return this._loading\n }\n\n get error(): string | null {\n return this._error\n }\n\n get isReady(): boolean {\n return !this._loading && this._data !== null && !this._error\n }\n\n private setupSignalSync(): void {\n const sync = () => {\n const signalValue = this.signal.value\n const newData = signalValue?.data || null\n const newLoading = signalValue?.loading || false\n const newError = signalValue?.error || null\n\n if (\n newData !== this._data ||\n newLoading !== this._loading ||\n newError !== this._error\n ) {\n this._data = newData\n this._loading = newLoading\n this._error = newError\n this.host.requestUpdate()\n }\n }\n\n // Initial sync\n sync()\n\n // Set up periodic sync\n const interval = setInterval(sync, 50)\n this.unsubscribe = () => clearInterval(interval)\n }\n}\n\n/**\n * Utility function to create a transaction signal controller\n */\nexport function useTransactionSignal(\n host: ReactiveControllerHost,\n signal: Signal<{ data: DecoderResult; loading: boolean; error?: string }>\n): TransactionSignalController {\n return new TransactionSignalController(host, signal)\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport './load-web-components'\nimport { CoreLitElement } from '../styles'\n\n/**\n * UrlView - display a URL with favicon/logo and human-friendly name\n *\n * Props:\n * - url (required): full URL like https://example.com/path\n * - size: x-small | small | medium | large\n * - label?: optional label displayed above\n * - showLogo: whether to show favicon/logo (default true)\n * - logoUrl?: explicit logo URL to use instead of favicon\n * - maxWidth: name truncation width in px\n */\n@safeCustomElement('url-view')\nexport class UrlView extends CoreLitElement {\n @property() url!: string\n @property() size: 'x-small' | 'small' | 'medium' | 'large' = 'small'\n @property() label?: string\n @property({ type: Boolean, attribute: 'show-logo' }) showLogo = true\n @property({ attribute: 'logo-url' }) logoUrl?: string\n @property({ type: Number, attribute: 'max-width' }) maxWidth = 240\n\n @state() private favicon?: string\n @state() private displayName = ''\n private faviconCandidates: string[] = []\n private faviconIndex = 0\n\n protected willUpdate(changed: Map<string, unknown>) {\n if (changed.has('url') || changed.has('label') || changed.has('logoUrl')) {\n this.computeMeta()\n }\n }\n\n private computeMeta() {\n try {\n const u = new URL(this.url)\n const origin = u.origin\n this.faviconCandidates = []\n if (this.logoUrl) this.faviconCandidates.push(this.logoUrl)\n this.faviconCandidates.push(\n `${origin}/favicon.ico`,\n `${origin}/favicon.png`\n )\n this.faviconIndex = 0\n this.favicon = this.faviconCandidates[this.faviconIndex]\n const hostname = u.hostname.replace(/^www\\./, '')\n const hostnamePretty = hostname\n .split('.')\n .filter(Boolean)\n .slice(-2)\n .join(' ')\n .replace(/-/g, ' ')\n .replace(/\\b\\w/g, (c) => c.toUpperCase())\n\n if (this.label?.trim()) {\n this.displayName = this.label.trim()\n } else {\n this.displayName = hostnamePretty || this.url\n }\n } catch {\n this.favicon = undefined\n // Fallback to raw string if URL parse fails\n this.displayName = this.label?.trim() ? this.label : this.url\n }\n }\n\n private handleImageError() {\n this.faviconIndex += 1\n if (this.faviconIndex < this.faviconCandidates.length) {\n this.favicon = this.faviconCandidates[this.faviconIndex]\n } else {\n this.favicon = undefined\n }\n }\n\n private getSizePixels(): number {\n switch (this.size) {\n case 'x-small':\n return 14\n case 'small':\n return 16\n case 'medium':\n return 20\n case 'large':\n return 24\n default:\n return 16\n }\n }\n\n override render() {\n const sizePx = this.getSizePixels()\n return html`\n <div class=\"inline-flex flex-col gap-1\">\n <div class=\"inline-flex items-center gap-2 px-2.5 py-1.5 text-neutral-20 leading-tight font-semibold\">\n ${\n this.showLogo\n ? html`\n <div class=\"inline-flex items-center p-1 justify-center rounded-lg bg-neutral-100 border border-neutral-90 overflow-hidden flex-none\">\n ${\n this.favicon\n ? html`<img\n src=${this.favicon}\n style=\"width:${sizePx}px;height:${sizePx}px;\"\n alt=\"favicon\"\n @error=${this.handleImageError}\n />`\n : html`<lukso-icon name=\"globe\" size=${this.size} color=\"blue-85\"></lukso-icon>`\n }\n </div>\n `\n : ''\n }\n <span class=\"whitespace-nowrap overflow-hidden text-ellipsis leading-tight\" style=${`max-width:${this.maxWidth}px;font-size: ${sizePx}px;`}>${this.displayName}</span>\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'url-view': UrlView\n }\n}\n","import { Task } from '@lit/task'\nimport { safeCustomElement } from '@lukso/core/utils'\nimport { useAddressResolver } from '@lukso/transaction-view-headless'\nimport { html, type TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n// Import LUKSO web components\nimport './load-web-components'\nimport { CoreLitElement } from '../styles'\nimport { formatUnits } from '../utils'\n\n/**\n * Value display component\n *\n * Displays various types of values with appropriate formatting and styling.\n * Supports numbers, strings, booleans, BigInt values, and special handling\n * for Ethereum values with currency symbols.\n *\n * @example\n * ```html\n * <value-view\n * value=\"1000000000000000000\"\n * type=\"currency\"\n * currency-symbol=\"LYX\"\n * decimals=\"18\"\n * ></value-view>\n * ```\n */\n@safeCustomElement('value-view')\nexport class ValueView extends CoreLitElement {\n /**\n * The value to display (required)\n * Can be string, number, boolean, or bigint\n */\n @property() value?: TemplateResult | string | number | boolean | bigint | null\n\n /**\n * The key name (used for special formatting logic)\n */\n @property({ attribute: 'key-name' }) keyName?: string\n\n @property({ type: String, attribute: 'container-class-names' })\n containerClassNames?: string\n\n /**\n * Value type for formatting\n */\n @property() type:\n | 'string'\n | 'number'\n | 'boolean'\n | 'currency'\n | 'bigint'\n | 'address'\n | 'auto' = 'auto'\n\n /**\n * Currency symbol for currency type\n */\n @property({ attribute: 'currency-symbol' }) currencySymbol = 'LYX'\n\n /**\n * Number of decimals for currency formatting\n */\n @property({ type: Number }) decimals = 18\n\n /**\n * Display size\n */\n @property() size: 'x-small' | 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Whether to show copy button\n */\n @property({ type: Boolean, attribute: 'show-copy-button' }) showCopyButton =\n false\n\n /**\n * Render as a card with bordered container and label\n */\n @property({ type: Boolean, attribute: 'is-card-view' }) isCardView = false\n\n /**\n * Optional label to show in card header\n */\n @property() label?: string | TemplateResult\n\n /**\n * Maximum width for truncation\n */\n @property({ type: Number, attribute: 'max-width' }) maxWidth?: number\n\n /**\n * Token/contract address for automatic metadata resolution\n * When provided, ValueView will automatically resolve token symbol and decimals\n */\n @property() address?: string\n\n // Tracks whether the component has any slotted content\n @state() private _hasSlotContent = false\n\n private _onSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement\n const assigned = slot?.assignedNodes({ flatten: true }) ?? []\n this._hasSlotContent = assigned.length > 0\n }\n\n protected override firstUpdated(): void {\n const slot = this.renderRoot.querySelector('slot') as HTMLSlotElement | null\n if (slot) {\n const assigned = slot.assignedNodes({ flatten: true })\n this._hasSlotContent = assigned.length > 0\n }\n }\n\n // Address resolution utilities (lazy initialization)\n private get addressResolver() {\n try {\n return useAddressResolver()\n } catch (error) {\n console.warn('ValueView: Address resolver not available:', error)\n return {\n resolveAddress: async () => null,\n }\n }\n }\n\n // Task for resolving address metadata\n private addressTask = new Task(this, {\n task: async ([address]) => {\n if (!address) return null\n try {\n return this.addressResolver.resolveAddress(address)\n } catch (error) {\n console.warn('ValueView: Failed to resolve address metadata:', error)\n return null\n }\n },\n args: () => [this.address] as const,\n })\n\n /**\n * Get the effective type for the value\n */\n private getEffectiveType(): string {\n if (this.type !== 'auto') return this.type\n\n const value = this.value\n\n if (value === null || value === undefined) return 'null'\n if (typeof value === 'string') return 'string'\n if (typeof value === 'number') return 'number'\n if (typeof value === 'boolean') return 'boolean'\n if (typeof value === 'bigint') {\n // Special handling for 'value' key - treat as currency\n if (this.keyName === 'value') return 'currency'\n return 'bigint'\n }\n\n return 'string'\n }\n\n /**\n * Get CSS class for the value type\n */\n private getValueClass(): string {\n const effectiveType = this.getEffectiveType()\n\n switch (effectiveType) {\n case 'string':\n return 'text-success-60'\n case 'number':\n return 'text-info-60'\n case 'boolean':\n return 'text-error-60'\n case 'currency':\n return 'text-warning-60 font-medium'\n case 'bigint':\n return 'text-secondary-60'\n case 'address':\n return 'text-info-60 font-mono'\n case 'null':\n return 'text-neutral-70 italic'\n default:\n return 'text-neutral-10'\n }\n }\n\n /**\n * Format the value for display\n */\n private getFormattedValue(): string {\n const value = this.value\n const effectiveType = this.getEffectiveType()\n\n if (value === null) return 'null'\n if (value === undefined) return 'undefined'\n\n switch (effectiveType) {\n case 'currency': {\n const { numeric, symbol } = this.getCurrencyParts()\n return `${numeric} ${symbol}`\n }\n\n case 'bigint':\n if (typeof value === 'bigint') {\n return `${value.toString()}n`\n }\n return `${String(value)}n`\n\n case 'boolean':\n return value ? 'true' : 'false'\n\n case 'number':\n if (typeof value === 'number') {\n // Format large numbers with commas\n return value.toLocaleString()\n }\n return String(value)\n\n case 'string':\n return String(value)\n\n case 'null':\n return 'null'\n\n default:\n return String(value)\n }\n }\n\n /**\n * Compute currency display parts: numeric portion and symbol\n */\n private getCurrencyParts(): { numeric: string; symbol: string } {\n const value = this.value\n const resolvedData: any = this.addressTask.value\n const effectiveDecimals = resolvedData?.lsp4TokenSymbol\n ? (resolvedData.baseAsset?.decimals ??\n resolvedData.decimals ??\n this.decimals)\n : this.decimals\n const effectiveSymbol =\n resolvedData?.lsp4TokenSymbol ||\n resolvedData?.baseAsset?.lsp4TokenSymbol ||\n this.currencySymbol\n\n let numeric = String(value ?? '')\n try {\n if (typeof value === 'bigint') {\n numeric = formatUnits(value, effectiveDecimals)\n } else if (typeof value === 'string' && !Number.isNaN(Number(value))) {\n const bigintValue = BigInt(value)\n numeric = formatUnits(bigintValue, effectiveDecimals)\n }\n } catch {\n // fallback to raw string\n numeric = String(value ?? '')\n }\n\n return { numeric, symbol: effectiveSymbol }\n }\n\n /** Typography class for numeric value based on size */\n private getNumericClass(): string {\n switch (this.size) {\n case 'x-small':\n return 'paragraph-ptmono-12-bold'\n case 'small':\n return 'paragraph-ptmono-14-bold'\n case 'medium':\n return 'paragraph-ptmono-16-bold'\n case 'large':\n return 'paragraph-ptmono-24-bold'\n default:\n return 'paragraph-ptmono-16-bold'\n }\n }\n\n /** Typography class for currency symbol based on size */\n private getCurrencyClass(): string {\n switch (this.size) {\n case 'x-small':\n return 'paragraph-inter-12-regular'\n case 'small':\n return 'paragraph-inter-14-regular'\n case 'medium':\n return 'paragraph-inter-16-regular'\n case 'large':\n return 'paragraph-inter-20-regular'\n default:\n return 'paragraph-inter-16-regular'\n }\n }\n\n /**\n * Get size-appropriate font size\n */\n private getContainerTextClass(): string {\n switch (this.size) {\n case 'x-small':\n return 'text-[12px]'\n case 'small':\n return 'text-[14px]'\n case 'medium':\n return 'text-[16px]'\n case 'large':\n return 'text-[18px]'\n default:\n return 'text-[16px]'\n }\n }\n\n /**\n * Handle copy to clipboard\n */\n private async handleCopy(e?: Event) {\n if (e) e.stopPropagation()\n const textToCopy = String(this.value)\n\n try {\n await navigator.clipboard.writeText(textToCopy)\n\n // Dispatch copy event\n this.dispatchEvent(\n new CustomEvent('value-copied', {\n detail: { value: textToCopy },\n bubbles: true,\n })\n )\n\n // Value copied successfully - UI feedback handled by event\n } catch (error) {\n console.error('Failed to copy value:', error)\n }\n }\n\n /**\n * Handle value click\n */\n private handleClick() {\n this.dispatchEvent(\n new CustomEvent('value-click', {\n detail: {\n value: this.value,\n formattedValue: this.getFormattedValue(),\n type: this.getEffectiveType(),\n },\n bubbles: true,\n })\n )\n }\n\n override render() {\n const formattedValue = this.getFormattedValue()\n const valueClass = this.getValueClass()\n\n // Card view\n if (this.isCardView) {\n const effectiveType = this.getEffectiveType()\n let headerText = this.label || ''\n let contentTemplate = html`\n <span class=\"inline-block text-wrap min-w-0 text-center\">${formattedValue}</span>\n `\n\n if (effectiveType === 'currency') {\n const { numeric, symbol } = this.getCurrencyParts()\n if (this.label) {\n headerText = this.label\n contentTemplate = html`\n <span class=\"inline-block overflow-hidden text-ellipsis whitespace-nowrap min-w-0 ${this.getNumericClass()}\">${numeric}</span>\n <span class=\"inline-block ${this.getCurrencyClass()}\"> ${symbol}</span>\n `\n } else {\n headerText = symbol\n contentTemplate = html`\n <span class=\"inline-block overflow-hidden text-ellipsis whitespace-nowrap min-w-0 ${this.getNumericClass()}\">${numeric}</span>\n `\n }\n }\n\n return html`\n <div\n class=\"block border border-neutral-90 rounded-xl bg-white py-3 px-4 min-w-[320px] ${this.containerClassNames || ''}\"\n @click=${this.handleClick}\n style=\"${this.maxWidth ? `max-width: ${this.maxWidth}px` : ''}\"\n >\n <div class=\"flex items-center justify-between mb-2\">\n ${\n headerText\n ? html`<div class=\"${this.getLabelClass()} text-neutral-20 overflow-hidden text-ellipsis whitespace-nowrap\">${headerText}</div>`\n : html``\n }\n ${\n this.showCopyButton\n ? html`\n <button\n class=\"bg-white rounded-lg w-6 h-6 flex items-center justify-center cursor-pointer text-neutral-20 hover:bg-neutral-95\"\n @click=${(e: Event) => this.handleCopy(e)}\n title=\"Copy value\"\n aria-label=\"Copy\"\n >\n <lukso-icon name=\"copy\" size=\"small\"></lukso-icon>\n </button>\n `\n : html``\n }\n </div>\n ${when(\n !this._hasSlotContent,\n () => html`\n <div class=\"font-semibold text-neutral-10 break-words flex items-center gap-2 text-wrap ${\n this.getUseMonospace() ? 'font-mono' : ''\n }\">\n ${contentTemplate}\n </div>\n `\n )}\n <slot @slotchange=${this._onSlotChange}></slot>\n </div>\n `\n }\n\n // Inline view (default)\n return html`\n <div\n class=\"inline-flex items-center gap-1.5 cursor-pointer transition-all duration-200 rounded px-1 py-0.5 hover:bg-neutral-95 min-w-[320px] ${this.getContainerTextClass()} ${this.containerClassNames || ''}\"\n @click=${this.handleClick}\n style=\"${this.maxWidth ? `max-width: ${this.maxWidth}px` : ''}\"\n >\n <span class=\"inline-block overflow-hidden text-ellipsis whitespace-nowrap min-w-0 ${valueClass}\">\n ${formattedValue}\n </span>\n ${\n this.showCopyButton\n ? html`\n <button\n class=\"inline-flex items-center justify-center bg-transparent border-0 cursor-pointer text-neutral-70 p-0.5 rounded transition-all duration-200 hover:text-primary-50 hover:bg-neutral-90 flex-shrink-0\"\n @click=${(e: Event) => this.handleCopy(e)}\n title=\"Copy value\"\n aria-label=\"Copy value to clipboard\"\n >\n <lukso-icon name=\"copy\" size=\"small\"></lukso-icon>\n </button>\n `\n : ''\n }\n </div>\n `\n }\n\n /** Whether to use monospace font for the value content */\n private getUseMonospace(): boolean {\n const t = this.getEffectiveType()\n if (\n t === 'address' ||\n t === 'bigint' ||\n this.value?.toString().startsWith('0x')\n )\n return true\n if (t === 'string') {\n const s = String(this.value ?? '')\n return /^0x[0-9a-fA-F]+$/.test(s) || s.length > 32\n }\n return false\n }\n\n /** Map size to a typography class for the label */\n private getLabelClass(): string {\n switch (this.size) {\n case 'x-small':\n return 'paragraph-inter-12-semi-bold'\n case 'small':\n return 'heading-inter-14-bold'\n case 'medium':\n return 'heading-inter-17-semi-bold'\n case 'large':\n return 'heading-inter-21-semi-bold'\n default:\n return 'heading-inter-17-semi-bold'\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'value-view': ValueView\n }\n}\n","// Value formatting utilities\n/**\n * Convert a token amount from base units (bigint) to a decimal string.\n *\n * - Handles arbitrary `decimals` without floating point precision loss.\n * - Trims trailing zeros in the fractional part.\n * - Returns only the integer part when remainder is zero.\n *\n * @param value - The amount in base units as a bigint (e.g., wei for ETH).\n * @param decimals - Number of decimal places the token uses (default 18).\n * @returns A human-readable decimal string.\n *\n * @example\n * // 1 ether in wei\n * formatUnits(1000000000000000000n) // '1'\n *\n * @example\n * // 1.23 tokens with 2 decimals\n * formatUnits(123n, 2) // '1.23'\n *\n * @example\n * // No remainder: return integer part only\n * formatUnits(2000000000000000000n) // '2'\n */\nexport function formatUnits(value: bigint, decimals = 18): string {\n const divisor = 10n ** BigInt(decimals)\n const quotient = value / divisor\n const remainder = value % divisor\n\n if (remainder === 0n) {\n return quotient.toString()\n }\n\n const remainderStr = remainder.toString().padStart(decimals, '0')\n const trimmed = remainderStr.replace(/0+$/, '')\n return `${quotient}.${trimmed}`\n}\n\nfunction isBigIntString(str: string): boolean {\n const trimmed = str.trim()\n if (trimmed.endsWith('n'))\n return /^[0-9]+n$/.test(trimmed) || /^0x[0-9a-fA-F]+n$/.test(trimmed)\n return /^[0-9]+$/.test(trimmed) || /^0x[0-9a-fA-F]+$/.test(trimmed)\n}\n\n/**\n * Parse loose bigint inputs coming from attributes, JSON, or user input.\n *\n * - Accepts bigint literals (`123n`), decimal/hex strings, and integers.\n * - Trims whitespace and optional trailing `n` suffix.\n * - Returns `undefined` for invalid formats (floats, empty strings, non-numeric text).\n *\n * @param value - Source value to parse (string | number | bigint | null | undefined).\n * @returns BigInt when parsing succeeds, otherwise `undefined`.\n *\n * @example\n * parseBigInt('42') // 42n\n * @example\n * parseBigInt('0x10n') // 16n\n * @example\n * parseBigInt(1000n) // 1000n (passthrough)\n * @example\n * parseBigInt('1.5') // undefined (decimals not allowed)\n */\nexport function parseBigInt(\n value: string | number | bigint | null | undefined\n): bigint | undefined {\n if (!value) return undefined\n if (typeof value === 'bigint') return value\n if (typeof value === 'number') {\n if (!Number.isInteger(value)) return undefined\n return BigInt(value)\n }\n const trimmed = value.trim()\n const cleaned = trimmed.endsWith('n') ? trimmed.slice(0, -1) : trimmed\n if (!isBigIntString(cleaned)) return undefined\n try {\n return BigInt(cleaned)\n } catch {\n return undefined\n }\n}\n","import { Task } from '@lit/task'\nimport { safeCustomElement } from '@lukso/core/utils'\nimport { useAddressResolver } from '@lukso/transaction-view-headless'\nimport { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport './icon-view.js'\nimport { CoreLitElement } from '../styles'\n\n/**\n * Image list component for displaying arrays of images/assets\n *\n * Displays a list of images from a resolved address property (e.g., 'images', 'assets').\n * If items have an 'index' property, shows only items with matching indices.\n * Handles different file types (images, videos, audio, generic files).\n *\n * @example\n * ```html\n * <!-- Display all images -->\n * <image-list\n * address=\"0x1234...\"\n * image-hint=\"images\"\n * ></image-list>\n *\n * <!-- Display images with index 0-5 -->\n * <image-list\n * address=\"0x1234...\"\n * image-hint=\"images\"\n * min-index=\"0\"\n * max-index=\"5\"\n * ></image-list>\n * ```\n */\n@safeCustomElement('image-list')\nexport class ImageList extends CoreLitElement {\n /**\n * The address to display (required)\n */\n @property() address!: string\n\n /**\n * Property name to use for loading images (e.g., 'images', 'assets')\n * This should point to an array property on the resolved data\n */\n @property({ type: String, attribute: 'image-hint' }) imageHint!: string\n\n /**\n * Minimum index to display (only applies if items have index property)\n */\n @property({ type: Number, attribute: 'min-index' }) minIndex?: number\n\n /**\n * Maximum index to display (only applies if items have index property)\n */\n @property({ type: Number, attribute: 'max-index' }) maxIndex?: number\n\n /**\n * Display size for images\n */\n @property() size: 'x-small' | 'small' | 'medium' | 'large' = 'small'\n\n /**\n * Optional card view: wrap list in a bordered, padded container\n */\n @property({ type: Boolean, attribute: 'is-card-view' }) isCardView = false\n\n // Internal state\n @state() private isLoading = false\n\n // Composables\n private addressResolver = useAddressResolver()\n\n // Task for resolving address data\n private addressTask = new Task(this, {\n task: async ([address]) => {\n if (!address) return null\n\n this.isLoading = true\n try {\n const resolved = await this.addressResolver.resolveAddress(address)\n return resolved\n } catch (error) {\n console.warn('❌ ImageList: Failed to resolve address:', error)\n return null\n } finally {\n this.isLoading = false\n }\n },\n args: () => [this.address],\n })\n\n /**\n * Get the list of items to display from resolved data\n */\n private getDisplayItems(): any[] {\n const resolved = this.addressTask.value\n if (!resolved) return []\n console.log('resolved images are', resolved)\n const items = (resolved as any)[this.imageHint]\n if (!Array.isArray(items)) return []\n\n // Check if items have an index property\n const hasIndex = items.length > 0 && items[0]?.index !== undefined\n\n if (!hasIndex) {\n // No index property, return all items\n return items\n }\n\n // Filter by index range\n return items.filter((item) => {\n const index = item.index\n if (this.minIndex !== undefined && index < this.minIndex) return false\n if (this.maxIndex !== undefined && index > this.maxIndex) return false\n return true\n })\n }\n\n /**\n * Check if an item is an actual image based on fileType\n */\n private isImageFile(item: any): boolean {\n if (!item.fileType) return true // Assume image if no fileType\n return item.fileType.startsWith('image/')\n }\n\n /**\n * Get file type icon for non-image files\n */\n private getFileTypeIcon(item: any): string {\n if (!item.fileType) return '📄'\n\n if (item.fileType.startsWith('video/')) return '🎥'\n if (item.fileType.startsWith('audio/')) return '🎵'\n if (item.fileType.startsWith('application/pdf')) return '📕'\n return '📄'\n }\n\n /**\n * Render a single image item\n */\n private renderImageItem(item: any, index: number) {\n const _itemIndex = item.index !== undefined ? item.index : index\n const isImage = this.isImageFile(item)\n\n if (isImage) {\n // Show broken image placeholder if image doesn't exist or can't load\n const imageSrc = item.src || item.url\n\n if (!imageSrc) {\n return html`\n <div class=\"image-item broken-image-item\">\n <div class=\"broken-image-icon\">🖼️❌</div>\n ${\n item.index !== undefined\n ? html`<div class=\"broken-image-label\">#${item.index}</div>`\n : ''\n }\n <div class=\"broken-image-text\">No image</div>\n </div>\n `\n }\n\n // Use direct image display instead of icon-view to avoid identicons\n return html`\n <div class=\"\">\n <img\n class=\"min-h-20 min-w-20 object-cover rounded-lg\"\n src=${imageSrc}\n alt=${item.index !== undefined ? `#${item.index}` : 'Image'}\n @error=${(e: Event) => {\n const target = e.target as HTMLImageElement\n target.style.display = 'none'\n const parent = target.parentElement\n if (parent) {\n parent.innerHTML = `\n <div class=\"broken-image-icon\">🖼️❌</div>\n <div class=\"broken-image-text\">Failed to load</div>\n `\n }\n }}\n />\n ${\n item.index !== undefined\n ? html`<div class=\"image-label\">#${item.index}</div>`\n : ''\n }\n </div>\n `\n } else {\n // Show file type icon for non-images\n return html`\n <div class=\"image-item file-item\">\n <div class=\"file-icon\">${this.getFileTypeIcon(item)}</div>\n ${\n item.index !== undefined\n ? html`<div class=\"file-label\">#${item.index}</div>`\n : ''\n }\n <div class=\"file-type\">${item.fileType || 'Unknown'}</div>\n </div>\n `\n }\n }\n\n private getImageMinSizePx(): number {\n switch (this.size) {\n case 'x-small':\n return 80\n case 'small':\n return 120\n case 'medium':\n return 160\n case 'large':\n return 240\n default:\n return 160\n }\n }\n\n override render() {\n if (this.isLoading) {\n return html`\n <div class=\"flex flex-col items-center justify-center py-10 px-5 text-neutral-60\">\n <div class=\"text-[24px] mb-2 animate-spin\">⏳</div>\n <div class=\"text-[14px]\">Loading images...</div>\n </div>\n `\n }\n\n const items = this.getDisplayItems()\n\n if (items.length === 0) {\n return html`\n <div class=\"flex flex-col items-center justify-center py-10 px-5 text-neutral-70\">\n <div class=\"text-[14px]\">No images found</div>\n </div>\n `\n }\n const grid = html`\n <div class=\"grid grid-cols-[repeat(auto-fill,minmax(${this.getImageMinSizePx()}px,300px))] gap-3 p-2\">\n ${repeat(\n items,\n (item, index) => item.index ?? index,\n (item, index) => this.renderImageItem(item, index)\n )}\n </div>\n `\n\n return this.isCardView\n ? html`<div class=\"flex flex-row flex-wrap border border-neutral-90 rounded-xl p-3 bg-neutral-100\">${grid}</div>`\n : grid\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'image-list': ImageList\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport type { ResolvedAddress } from '@lukso/transaction-view-headless'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport '../shared/icon-view.js'\nimport '../shared/address-view.js'\nimport '../shared/image-list.js'\n\n/**\n * Expandable info panel for displaying detailed asset information\n * Auto-resolves data from address or address-tokenId\n */\n@safeCustomElement('info-panel')\nexport class InfoPanel extends LitElement {\n /**\n * Address or address-tokenId to display info for\n */\n @property({ type: String })\n address = ''\n\n @property({ type: Boolean, attribute: 'open' })\n open = false\n\n @property({ type: String })\n standard = ''\n\n @property({ type: String })\n type: 'transfer' | 'mint' | 'burn' | 'approve' = 'transfer'\n\n @state()\n private _resolvedData?: ResolvedAddress\n\n private _extractBaseAddress(addressOrComposite: string): string {\n return addressOrComposite.split('-')[0]\n }\n\n private _extractTokenId(addressOrComposite: string): string | undefined {\n const parts = addressOrComposite.split('-')\n return parts.length > 1 ? parts[1] : undefined\n }\n\n static styles = css`\n :host {\n display: block;\n position: relative;\n font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif;\n }\n\n .panel {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n opacity: 0;\n visibility: hidden;\n transition: all 0.3s ease;\n }\n\n .panel.open {\n opacity: 1;\n visibility: visible;\n }\n\n .panel-content {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n max-width: 400px;\n height: 100%;\n background: white;\n transform: translateX(100%);\n transition: transform 0.3s ease;\n overflow-y: auto;\n padding: 24px;\n box-sizing: border-box;\n }\n\n .panel.open .panel-content {\n transform: translateX(0);\n }\n\n .close-button {\n position: absolute;\n top: 20px;\n right: 20px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6b7280;\n padding: 4px;\n border-radius: 4px;\n transition: background-color 0.2s;\n }\n\n .close-button:hover {\n background-color: #f3f4f6;\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 24px;\n padding-top: 20px;\n }\n\n .header-icon {\n margin-right: 12px;\n }\n\n .header-title {\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n text-align: center;\n }\n\n .section {\n margin-bottom: 20px;\n padding: 16px;\n background: #f9fafb;\n border-radius: 12px;\n border: 1px solid #e5e7eb;\n }\n\n .section-title {\n font-size: 14px;\n font-weight: 600;\n color: #374151;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .section-content {\n font-size: 14px;\n color: #6b7280;\n word-break: break-all;\n }\n\n .copy-button {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n color: #6b7280;\n transition: background-color 0.2s;\n }\n\n .copy-button:hover {\n background-color: #e5e7eb;\n }\n\n .links-list {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n .link-item {\n margin-bottom: 8px;\n }\n\n .link-item:last-child {\n margin-bottom: 0;\n }\n\n .external-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: #3b82f6;\n text-decoration: none;\n font-size: 14px;\n padding: 6px 12px;\n border-radius: 6px;\n transition: background-color 0.2s;\n }\n\n .external-link:hover {\n background-color: #eff6ff;\n }\n\n .description {\n line-height: 1.6;\n color: #374151;\n }\n\n .loading-placeholder {\n width: 96px;\n height: 96px;\n background: #f3f4f6;\n border-radius: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n font-size: 32px;\n }\n\n @media (max-width: 640px) {\n .panel-content {\n max-width: 100%;\n }\n }\n `\n\n private _handleClose() {\n this.dispatchEvent(new CustomEvent('close'))\n }\n\n private _copyToClipboard(text: string) {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text)\n // Could dispatch a 'copied' event here for toast notifications\n this.dispatchEvent(new CustomEvent('copied', { detail: { text } }))\n }\n }\n\n private _renderHeader() {\n const name =\n this._resolvedData?.lsp4TokenName ||\n this._resolvedData?.name ||\n 'Digital Asset'\n\n return html`\n <div class=\"header\">\n ${when(\n this.address,\n () => html`\n <icon-view\n address=\"${this.address}\"\n size=\"large\"\n class=\"header-icon\"\n ></icon-view>\n `,\n () => html`\n <div class=\"loading-placeholder\">🪙</div>\n `\n )}\n <div class=\"header-title\">${name}</div>\n </div>\n `\n }\n\n private _renderContractAddress() {\n const contractAddress = this._extractBaseAddress(this.address)\n if (!contractAddress) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">\n 📄 Contract Address\n <button\n class=\"copy-button\"\n @click=${() => this._copyToClipboard(contractAddress)}\n title=\"Copy to clipboard\"\n >\n 📋\n </button>\n </div>\n <div class=\"section-content\">\n <address-view\n .address=${contractAddress}\n format=\"truncated\"\n ></address-view>\n </div>\n </div>\n `\n }\n\n private _renderTokenId() {\n const tokenId = this._extractTokenId(this.address)\n if (!tokenId) return ''\n\n // Use formattedTokenId if available from resolved data, otherwise use raw tokenId\n const formattedTokenId = (this._resolvedData as any)?.formattedTokenId\n const displayTokenId = formattedTokenId\n ? `#${formattedTokenId}` // Formatted gets # prefix\n : tokenId || '' // Raw hex without # prefix\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">\n 🏷️ Token ID\n <button\n class=\"copy-button\"\n @click=${() => this._copyToClipboard(tokenId)}\n title=\"Copy to clipboard\"\n >\n 📋\n </button>\n </div>\n <div class=\"section-content\">${displayTokenId}</div>\n </div>\n `\n }\n\n private _renderDescription() {\n const description = (this._resolvedData as any)?.description\n if (!description) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">📝 Description</div>\n <div class=\"section-content description\">${description}</div>\n </div>\n `\n }\n\n private _renderLinks() {\n const links = (this._resolvedData as any)?.links || []\n if (!links.length) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">🔗 Links</div>\n <ul class=\"links-list\">\n ${repeat(\n links,\n (link: any) => link.url,\n (link: any) => html`\n <li class=\"link-item\">\n <a\n class=\"external-link\"\n href=\"${link.url}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n ${link.title || link.url}\n <span>↗</span>\n </a>\n </li>\n `\n )}\n </ul>\n </div>\n `\n }\n\n private _renderImages() {\n const images = (this._resolvedData as any)?.images || []\n if (!images.length) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">🖼️ Images</div>\n <image-list\n address=${this.address}\n image-hint=\"images\"\n size=\"medium\"\n ></image-list>\n </div>\n `\n }\n\n private _renderAssets() {\n const assets = (this._resolvedData as any)?.assets || []\n if (!assets.length) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">📦 Assets</div>\n <image-list\n address=${this.address}\n image-hint=\"assets\"\n size=\"medium\"\n ></image-list>\n </div>\n `\n }\n\n private _handleBackdropClick(e: Event) {\n if (e.target === e.currentTarget) {\n this._handleClose()\n }\n }\n\n render() {\n const panelClasses = {\n panel: true,\n open: this.open,\n }\n\n return html`\n <div class=${classMap(panelClasses)} @click=${this._handleBackdropClick}>\n <div class=\"panel-content\" @click=${(e: Event) => e.stopPropagation()}>\n <button class=\"close-button\" @click=${this._handleClose}>×</button>\n\n ${this._renderHeader()}\n ${this._renderContractAddress()}\n ${this._renderTokenId()}\n ${this._renderDescription()}\n ${this._renderLinks()}\n ${this._renderImages()}\n ${this._renderAssets()}\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'info-panel': InfoPanel\n }\n}\n","import { html } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\n\nimport '../shared/icon-view.js'\nimport '../shared/address-view.js'\nimport '../shared/value-view.js'\nimport '../shared/image-list.js'\n// Import LUKSO web components\nimport '@lukso/web-components/components'\nimport { Task } from '@lit/task'\nimport { safeCustomElement } from '@lukso/core/utils'\nimport {\n type ResolvedAddress,\n useAddressResolver,\n} from '@lukso/transaction-view-headless'\nimport { CoreLitElement } from '../styles'\nimport { formatUnits, parseBigInt } from '../utils.js'\n\n/**\n * Asset card component for displaying token/NFT information\n * Replaces the DigitalAssetInfo helper component\n */\n@safeCustomElement('asset-card')\nexport class AssetCard extends CoreLitElement {\n @property() address: string | undefined\n\n @property({ type: String, attribute: 'token-id' })\n tokenId: string | undefined\n\n @property({ type: String })\n amount: string | undefined\n\n /** Function name associated with the asset (e.g., \"LSP4DigitalAsset\") */\n @property({ type: String, attribute: 'function-name' })\n functionName: string | undefined\n\n /** Standard associated with the asset (e.g., \"LSP4\") */\n @property({ type: String, attribute: 'standard' })\n standard: string | undefined\n\n /** Function icon name */\n @property({ type: String, attribute: 'function-icon' })\n functionIcon: string = 'code-outline'\n\n @property({ type: Boolean, attribute: 'show-info-button' })\n showInfoButton = true\n\n @property({ type: Boolean, attribute: 'show-creator' })\n showCreator = true\n\n @state()\n private displayDetails = false\n\n @state()\n private _resolvedData?: ResolvedAddress\n\n private _handleInfoClick() {\n this.displayDetails = !this.displayDetails\n }\n\n // Composables\n private addressResolver = useAddressResolver()\n\n private _resolutionTask = new Task(this, {\n task: async ([address]) => {\n if (!address) return null\n\n const { resolveAddress } = this.addressResolver\n const data = await resolveAddress(address as string)\n this._resolvedData = data\n return data\n },\n args: () => [this.address] as const,\n })\n\n private _extractBaseAddress(addressOrComposite: string): string {\n return addressOrComposite.split('-')[0]\n }\n\n private _renderAddressSection() {\n const data = this._resolutionTask.value\n if (!data) return ''\n\n return html`\n <div class=\"flex items-center justify-between cursor-pointer\">\n ${when(\n data.lsp4TokenSymbol,\n () => html`\n <address-view\n address=${this._extractBaseAddress(data.address)}\n size=\"medium\"\n max-width=${100}\n .showIdenticon=${false}\n ?is-card-view=${false}\n ?show-copy-button=${false}\n address-color=\"neutral-60\"\n ></address-view>\n `\n )}\n ${when(\n this.showInfoButton,\n () => html`\n <lukso-icon name=\"information\" size=\"small\" @click=${this._handleInfoClick}></lukso-icon>\n `\n )}\n </div>\n `\n }\n\n private _renderCreatorSection() {\n const owner = (this._resolvedData as any)?.owner_id\n const creators = (this._resolvedData as any)?.lsp4Creators || []\n const resolvedCreator = owner || creators[0]?.profile_id\n if (!resolvedCreator) return ''\n\n return html`\n <div class=\"gap-2\">\n <div class=\"text-neutral-60 text-[12px] font-normal\">Created by</div>\n <div class=\"flex justify-center flex-col gap-1 text-[12px] font-bold font-mono\">\n <icon-view\n address=${owner}\n size=\"small\"\n name-position=\"beside\"\n ></icon-view>\n </div>\n </div>\n `\n }\n\n private _renderContractAddress() {\n const data = this._resolutionTask.value\n if (!data?.address) return ''\n\n return html`\n <div class=\"section\">\n ${when(\n data.lsp4TokenSymbol,\n () => html`\n <address-view\n address=${data.address}\n size=\"medium\"\n label=${data.lsp4TokenName ?? ''}\n max-width=${100}\n .showIdenticon=${false}\n ?is-card-view=${true}\n ?show-copy-button=${true}\n address-color=\"neutral-60\"\n ></address-view>\n `\n )}\n </div>\n `\n }\n\n private _renderAssetLongName() {\n const data = this._resolutionTask.value\n if (!data) return ''\n\n return html`\n ${when(\n data.lsp4TokenName,\n () => html`\n <value-view \n ?is-card-view=${true}\n ?show-copy-button=${true}\n value=${data.lsp4TokenName ?? ''}\n label=\"Token Name\"\n ></value-view>\n `\n )}\n `\n }\n\n private _renderAssetSymbol() {\n const data = this._resolutionTask.value\n if (!data) return ''\n\n return html`\n ${when(\n data.lsp4TokenSymbol,\n () => html`\n <value-view \n ?is-card-view=${true}\n ?show-copy-button=${true}\n value=${data.lsp4TokenSymbol ?? ''}\n label=\"Symbol\"\n ></value-view>\n `\n )}\n `\n }\n\n private get displayedTokenId() {\n const formattedTokenId = (this._resolvedData as any)?.formattedTokenId\n const displayTokenId = formattedTokenId ? `${formattedTokenId}` : ''\n if (displayTokenId) return displayTokenId\n // If its a collection, do not show tokenId\n return this.tokenId ? `${parseInt(this.tokenId, 16)}` : undefined\n }\n\n private _renderTokenId() {\n const displayTokenId = this.displayedTokenId\n if (!displayTokenId) return ''\n\n return html`\n <value-view \n ?is-card-view=${true}\n ?show-copy-button=${true}\n value=${displayTokenId}\n label=\"Token ID\"\n ></value-view>\n `\n }\n\n private _renderDescription() {\n const description = (this._resolvedData as any)?.description\n if (!description) return ''\n\n return html`\n <value-view \n ?is-card-view=${true}\n ?show-copy-button=${true}\n value=${description}\n label=\"Description\"\n >\n </value-view>\n `\n }\n\n private _renderLinks() {\n const links = (this._resolvedData as any)?.links || []\n if (!links.length) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">🔗 Links</div>\n <ul class=\"links-list\">\n ${repeat(\n links,\n (link: any) => link.url,\n (link: any) => html`\n <li class=\"link-item\">\n <a\n class=\"external-link\"\n href=\"${link.url}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n ${link.title || link.url}\n <span>↗</span>\n </a>\n </li>\n `\n )}\n </ul>\n </div>\n `\n }\n\n private _renderImages() {\n const images = (this._resolvedData as any)?.images || []\n if (images.length === 0) return ''\n if (!this.address) return ''\n\n return html`\n <image-list\n address=${this.address}\n image-hint=\"images\"\n size=\"medium\"\n ?is-card-view=${true}\n ></image-list>\n `\n }\n\n private _renderAssets() {\n const assets = (this._resolvedData as any)?.assets || []\n if (assets.length === 0) return ''\n if (!this.address) return ''\n\n return html`\n <div class=\"section\">\n <div class=\"section-title\">Assets</div>\n <image-list\n address=${this.address}\n image-hint=\"assets\"\n size=\"medium\"\n ></image-list>\n </div>\n `\n }\n\n private _renderStandards() {\n return html`\n <div class=\"flex justify-between items-center my-4\">\n <function-name-view \n label=${this.functionName || 'Execute'}\n size=\"small\"\n icon=${this.functionIcon ? this.functionIcon : 'code-outline'}\n ></function-name-view>\n <function-name-view label=${this._resolvedData?.standard ?? 'Unknown'} size=\"small\"></function-name-view>\n </div>\n `\n }\n\n private _renderTokenDetails() {\n if (!this.displayDetails) return ''\n return html`\n <div class=\"p-4 mt-6 flex flex-col border border-neutral-90 rounded-xl gap-4\">\n ${this._renderContractAddress()}\n ${this._renderAssetLongName()}\n ${this._renderAssetSymbol()}\n ${this._renderTokenId()}\n ${this._renderDescription()}\n ${this._renderLinks()}\n ${this._renderImages()}\n ${this._renderAssets()}\n </div>\n `\n }\n\n private _formattedAmount() {\n const data = this._resolutionTask.value\n const amt = this.amount\n if (amt === undefined || amt === null || amt === '') return undefined\n const bigintAmount = parseBigInt(amt as any)\n if (bigintAmount === undefined) return undefined\n return formatUnits(bigintAmount, data?.decimals)\n }\n\n private renderFormattedTokenIdBadge() {\n if (!this.displayedTokenId) return ''\n return html`\n <span class=\"absolute top-3 left-3 z-10 text-[12px] text-neutral-20 font-mono font-bold bg-neutral-98 px-2 rounded-full\">#${this.displayedTokenId}</span>\n `\n }\n\n render() {\n return html`\n <div >\n ${this._renderStandards()}\n <div class=\"mt-6 flex-col\">\n <div class=\"flex items-center justify-center gap-4\">\n <div class=\"flex justify-end w-[48%]\">\n <div class=\"border relative border-neutral-90 rounded-xl\">\n ${this.renderFormattedTokenIdBadge()}\n <div class=\"p-2 relative\">\n ${when(\n this.address,\n () => html`\n <icon-view\n address=${this.address ?? ''}\n size=\"2x-large\"\n .showName=${false}\n ></icon-view>\n `\n )}\n </div>\n <div style=\"height: 1px;\" class=\"bg-neutral-90 w-full\"></div>\n <div class=\"px-2\">\n ${this._renderAddressSection()}\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-col gap-1 w-[51%]\">\n <div class=\"text-[14px] font-bold text-neutral-20\">\n ${this._resolvedData?.lsp4TokenName || 'UNKNOWN'}\n </div>\n <div class=\"text-[17px] font-semibold text-neutral-20\">\n ${when(\n this.amount,\n () => html`\n <span class=\"\">${this._formattedAmount() ?? ''}</span>\n <span class=\"ml-1 text-neutral-60 max-w-[60px] whitespace-nowrap overflow-hidden text-ellipsis text-[14px] font-semibold\">${\n this._resolvedData?.lsp4TokenSymbol || ''\n }</span>\n `,\n () => html`${this._resolvedData?.lsp4TokenSymbol || ''}`\n )}\n </div>\n <div class=\"mt-4\">\n ${when(this.showCreator, () => this._renderCreatorSection())}\n </div>\n </div>\n </div>\n <div class=\"border-neutral-90 pt-2\">\n ${this._renderTokenDetails()}\n </div>\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'asset-card': AssetCard\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { css, html, LitElement } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\n\n// Import the EnhancedInfo type from the decoder package\ntype EnhancedInfo = {\n address: `0x${string}`\n standard?: string\n tokenId?: `0x${string}`\n name?: string\n __gqltype?: 'Profile' | 'Asset' | 'Token'\n [key: string]: unknown\n}\n\nexport interface TransactionInfo {\n /** Transaction hash */\n hash?: string\n /** Block number */\n blockNumber?: bigint | string\n /** Block timestamp */\n timestamp?: bigint | string | Date\n /** Gas used */\n gasUsed?: bigint | string\n /** Gas price */\n gasPrice?: bigint | string\n /** Transaction status */\n status?: 'success' | 'failed' | 'pending'\n /** Network/chain name */\n network?: string\n}\n\nexport interface DescriptionItem {\n /** Label for the description item */\n label: string\n /** Value to display */\n value: string\n /** Optional secondary value or subtitle */\n subtitle?: string\n /** Whether this item is highlighted */\n highlighted?: boolean\n /** Whether to show copy button */\n copyable?: boolean\n /** Custom icon for this item */\n icon?: string\n /** Link URL if this item should be clickable */\n link?: string\n}\n\nexport interface DescriptionViewData {\n /** Main title/heading */\n title?: string\n /** Main description text */\n description?: string\n /** Address key (format: \"ADDRESS\" or \"ADDRESS-TOKENID\") */\n address?: string\n /** Value being transferred */\n value?: bigint | string\n /** Raw transaction object */\n transaction?: any // DecoderResult type from decoder package\n /** Enhanced info from decoder (contains metadata) */\n enhancedInfo?: EnhancedInfo\n /** Transaction-specific information */\n transactionInfo?: TransactionInfo\n /** Additional custom items to display */\n customItems?: DescriptionItem[]\n /** Transaction type for styling */\n type?: 'transfer' | 'mint' | 'burn' | 'approve' | 'execute' | 'deploy'\n /** Loading state */\n loading?: boolean\n}\n\n/**\n * Description view component for displaying transaction details and metadata\n * Provides flexible key-value display with support for various transaction types\n */\n@safeCustomElement('description-view')\nexport class DescriptionView extends LitElement {\n @property({ type: Object })\n data: DescriptionViewData = {}\n\n @property({ type: String })\n variant: 'default' | 'compact' | 'detailed' = 'default'\n\n static styles = css`\n :host {\n display: block;\n font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif;\n }\n\n .description-container {\n background: white;\n border-radius: 12px;\n padding: 16px;\n border: 1px solid #e5e7eb;\n }\n\n .compact .description-container {\n padding: 12px;\n border-radius: 8px;\n }\n\n .detailed .description-container {\n padding: 20px;\n border-radius: 16px;\n }\n\n .header {\n margin-bottom: 16px;\n }\n\n .compact .header {\n margin-bottom: 12px;\n }\n\n .detailed .header {\n margin-bottom: 20px;\n }\n\n .title {\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n margin: 0 0 8px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .compact .title {\n font-size: 14px;\n margin-bottom: 6px;\n }\n\n .detailed .title {\n font-size: 18px;\n margin-bottom: 12px;\n }\n\n .type-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .type-badge.transfer {\n background: #dbeafe;\n color: #1d4ed8;\n }\n\n .type-badge.mint {\n background: #d1fae5;\n color: #059669;\n }\n\n .type-badge.burn {\n background: #fee2e2;\n color: #dc2626;\n }\n\n .type-badge.approve {\n background: #fef3c7;\n color: #d97706;\n }\n\n .type-badge.execute {\n background: #e0e7ff;\n color: #4338ca;\n }\n\n .type-badge.deploy {\n background: #f3e8ff;\n color: #7c3aed;\n }\n\n .description {\n font-size: 14px;\n line-height: 1.5;\n color: #6b7280;\n margin: 0;\n }\n\n .compact .description {\n font-size: 13px;\n }\n\n .detailed .description {\n font-size: 15px;\n line-height: 1.6;\n }\n\n .items-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: 16px;\n }\n\n .compact .items-list {\n gap: 8px;\n margin-top: 12px;\n }\n\n .detailed .items-list {\n gap: 16px;\n margin-top: 20px;\n }\n\n .description-item {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 12px;\n background: #f9fafb;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n transition: all 0.2s ease;\n }\n\n .compact .description-item {\n padding: 8px;\n border-radius: 6px;\n }\n\n .detailed .description-item {\n padding: 16px;\n border-radius: 12px;\n }\n\n .description-item.highlighted {\n background: #eff6ff;\n border-color: #3b82f6;\n box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1);\n }\n\n .description-item.clickable {\n cursor: pointer;\n }\n\n .description-item.clickable:hover {\n background: #f3f4f6;\n border-color: #d1d5db;\n }\n\n .description-item.highlighted.clickable:hover {\n background: #dbeafe;\n }\n\n .item-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n flex-shrink: 0;\n min-width: 0;\n }\n\n .compact .item-label {\n font-size: 12px;\n gap: 6px;\n }\n\n .detailed .item-label {\n font-size: 14px;\n }\n\n .item-icon {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .item-value-section {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n min-width: 0;\n flex: 1;\n margin-left: 12px;\n }\n\n .item-value {\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n word-break: break-all;\n text-align: right;\n }\n\n .compact .item-value {\n font-size: 13px;\n }\n\n .detailed .item-value {\n font-size: 15px;\n }\n\n .item-subtitle {\n font-size: 12px;\n color: #6b7280;\n text-align: right;\n }\n\n .compact .item-subtitle {\n font-size: 11px;\n }\n\n .item-actions {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n }\n\n .copy-button {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n color: #6b7280;\n transition: all 0.2s ease;\n font-size: 14px;\n }\n\n .copy-button:hover {\n background-color: #e5e7eb;\n color: #374151;\n }\n\n .external-link {\n color: #3b82f6;\n text-decoration: none;\n font-size: 14px;\n }\n\n .external-link:hover {\n text-decoration: underline;\n }\n\n .loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #6b7280;\n }\n\n .loading-spinner {\n font-size: 24px;\n margin-bottom: 12px;\n }\n\n .loading-text {\n font-size: 14px;\n }\n `\n\n private _copyToClipboard(text: string) {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text)\n this.dispatchEvent(\n new CustomEvent('copied', {\n detail: { text },\n })\n )\n }\n }\n\n private _handleItemClick(item: DescriptionItem) {\n if (item.link) {\n window.open(item.link, '_blank', 'noopener,noreferrer')\n }\n this.dispatchEvent(\n new CustomEvent('item-click', {\n detail: { item },\n })\n )\n }\n\n private _renderHeader() {\n if (!this.data.title && !this.data.description && !this.data.type) return ''\n\n return html`\n <div class=\"header\">\n ${when(\n this.data.title,\n () => html`\n <h2 class=\"title\">\n ${this.data.title}\n ${when(\n this.data.type,\n () => html`\n <span class=\"type-badge ${this.data.type}\">\n ${this.data.type}\n </span>\n `\n )}\n </h2>\n `\n )}\n \n ${when(\n this.data.description,\n () => html`\n <p class=\"description\">${this.data.description}</p>\n `\n )}\n </div>\n `\n }\n\n private _renderItems() {\n // Build items from various data sources\n const items: DescriptionItem[] = []\n\n // Add address information\n if (this.data.address) {\n const [contractAddress, tokenId] = this.data.address.split('-')\n\n items.push({\n label: 'Contract Address',\n value: contractAddress,\n icon: '📄',\n copyable: true,\n })\n\n if (tokenId) {\n items.push({\n label: 'Token ID',\n value: `#${tokenId}`,\n subtitle: tokenId,\n icon: '🏷️',\n copyable: true,\n })\n }\n }\n\n // Add value information\n if (this.data.value) {\n items.push({\n label: 'Amount',\n value: this.data.value.toString(),\n icon: '💰',\n highlighted: true,\n })\n }\n\n // Add transaction information\n if (this.data.transactionInfo) {\n const txInfo = this.data.transactionInfo\n\n if (txInfo.hash) {\n items.push({\n label: 'Transaction Hash',\n value: txInfo.hash,\n icon: '🔗',\n copyable: true,\n })\n }\n\n if (txInfo.blockNumber) {\n items.push({\n label: 'Block Number',\n value: txInfo.blockNumber.toString(),\n icon: '🧱',\n })\n }\n\n if (txInfo.status) {\n items.push({\n label: 'Status',\n value: txInfo.status.charAt(0).toUpperCase() + txInfo.status.slice(1),\n icon:\n txInfo.status === 'success'\n ? '✅'\n : txInfo.status === 'failed'\n ? '❌'\n : '⏳',\n highlighted: txInfo.status !== 'success',\n })\n }\n }\n\n // Add enhanced info metadata\n if (this.data.enhancedInfo) {\n const info = this.data.enhancedInfo\n\n if (info.name) {\n items.push({\n label: 'Asset Name',\n value: info.name,\n icon: '🏷️',\n })\n }\n\n if (info.standard) {\n items.push({\n label: 'Standard',\n value: info.standard,\n icon: '📋',\n })\n }\n }\n\n // Add custom items\n if (this.data.customItems?.length) {\n items.push(...this.data.customItems)\n }\n\n if (!items.length) return ''\n\n return html`\n <div class=\"items-list\">\n ${repeat(\n items,\n (item) => `${item.label}-${item.value}`,\n (item) => html`\n <div\n class=\"description-item ${item.highlighted ? 'highlighted' : ''} ${item.link ? 'clickable' : ''}\"\n @click=${item.link ? () => this._handleItemClick(item) : undefined}\n >\n <div class=\"item-label\">\n ${when(\n item.icon,\n () => html`<span class=\"item-icon\">${item.icon}</span>`\n )}\n ${item.label}\n </div>\n \n <div class=\"item-value-section\">\n <div class=\"item-value\">\n ${\n item.link\n ? html`<a class=\"external-link\" href=\"${item.link}\" target=\"_blank\" rel=\"noopener noreferrer\">${item.value}</a>`\n : item.value\n }\n </div>\n ${when(\n item.subtitle,\n () => html`<div class=\"item-subtitle\">${item.subtitle}</div>`\n )}\n </div>\n \n <div class=\"item-actions\">\n ${when(\n item.copyable,\n () => html`\n <button\n class=\"copy-button\"\n @click=${(e: Event) => {\n e.stopPropagation()\n this._copyToClipboard(item.value)\n }}\n title=\"Copy to clipboard\"\n >\n 📋\n </button>\n `\n )}\n </div>\n </div>\n `\n )}\n </div>\n `\n }\n\n render() {\n if (this.data.loading) {\n return html`\n <div class=\"description-container\">\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">⏳</div>\n <div class=\"loading-text\">Loading details...</div>\n </div>\n </div>\n `\n }\n\n return html`\n <div class=\"${this.variant} description-view\">\n <div class=\"description-container\">\n ${this._renderHeader()}\n ${this._renderItems()}\n </div>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'description-view': DescriptionView\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport './asset-card.js'\nimport './description-view.js'\nimport './info-panel.js'\n\n// Import EnhancedInfo type\ntype EnhancedInfo = {\n address: `0x${string}`\n standard?: string\n tokenId?: `0x${string}`\n name?: string\n __gqltype?: 'Profile' | 'Asset' | 'Token'\n [key: string]: unknown\n}\n\nexport interface UniversalTokenViewData {\n /** Main transaction address key (ADDRESS or ADDRESS-TOKENID) */\n address?: string\n /** Value being transferred */\n value?: bigint | string\n /** Raw transaction object (DecoderResult) */\n transaction?: any\n /** Enhanced info from resolver */\n enhancedInfo?: EnhancedInfo\n /** Transaction type */\n type?: 'transfer' | 'mint' | 'burn' | 'approve' | 'execute' | 'deploy'\n /** Title text (e.g., \"Transfer Token\", \"Mint Token\") */\n title?: string\n /** Title icon name */\n icon?: string\n /** Standard tag text (e.g., \"LSP7-DigitalAsset\", \"LSP8-IdentifiableDigitalAsset\") */\n standard?: string\n /** Loading states */\n loading?: {\n asset?: boolean\n metadata?: boolean\n transaction?: boolean\n }\n}\n\n/**\n * Universal token view component that combines all core components\n * Can replace most individual Vue transaction views\n */\n@safeCustomElement('universal-token-view')\nexport class UniversalTokenView extends LitElement {\n @property({ type: Object })\n data: UniversalTokenViewData = {}\n\n @state()\n private _infoPanelOpen = false\n\n static styles = css`\n :host {\n display: block;\n font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif;\n }\n\n /* Match the original LSP7Transfer.vue structure exactly */\n .universal-view {\n padding: 16px; /* matches p-4 in Tailwind */\n }\n\n /* Title wrapper - matches original layout */\n .title-wrapper {\n display: flex;\n justify-content: space-between;\n }\n\n /* Title section with icon - replicates Title.vue */\n .title-section {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--neutral-20, #374151);\n }\n\n .title-icon {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n margin-right: 4px;\n }\n\n /* LSP tag - matches original styling exactly */\n .lsp-tag {\n background: #eedde4;\n border-radius: 8px;\n height: 28px;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 500;\n color: #374151;\n }\n\n /* Info panel spacing - matches mt-4 */\n .info-panel {\n margin-top: 16px;\n }\n\n .loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: #6b7280;\n }\n\n .loading-spinner {\n font-size: 32px;\n margin-bottom: 16px;\n animation: spin 2s linear infinite;\n }\n\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n .loading-text {\n font-size: 16px;\n font-weight: 500;\n }\n\n .error-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: #dc2626;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 12px;\n margin: 20px;\n }\n\n .error-icon {\n font-size: 48px;\n margin-bottom: 16px;\n }\n\n .error-title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 8px;\n }\n\n .error-message {\n font-size: 14px;\n text-align: center;\n line-height: 1.4;\n }\n `\n\n private _handleInfoPanelToggle() {\n this._infoPanelOpen = !this._infoPanelOpen\n }\n\n private _handleInfoPanelClose() {\n this._infoPanelOpen = false\n }\n\n private _buildAssetCardData() {\n const [contractAddress, tokenId] = (this.data.address || '').split('-')\n\n return {\n name: this.data.enhancedInfo?.name,\n symbol:\n (this.data.enhancedInfo as any)?.symbol ||\n (this.data.enhancedInfo as any)?.lsp4TokenSymbol,\n icon:\n (this.data.enhancedInfo as any)?.icon ||\n (this.data.enhancedInfo as any)?.images?.[0]?.url,\n address: contractAddress,\n tokenId: tokenId,\n formattedTokenId: tokenId ? `${parseInt(tokenId, 16)}` : undefined,\n amount: this.data.value?.toString(),\n decimals: (this.data.enhancedInfo as any)?.decimals,\n loadingImages: this.data.loading?.asset,\n creator: (this.data.enhancedInfo as any)?.creator,\n }\n }\n\n private _renderLoadingState() {\n return html`\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">⏳</div>\n <div class=\"loading-text\">Loading transaction details...</div>\n </div>\n `\n }\n\n private _renderErrorState(message: string) {\n return html`\n <div class=\"error-state\">\n <div class=\"error-icon\">❌</div>\n <div class=\"error-title\">Error Loading Transaction</div>\n <div class=\"error-message\">${message}</div>\n </div>\n `\n }\n\n render() {\n // Handle loading states\n const isLoading =\n this.data.loading?.transaction ||\n (this.data.loading?.metadata && !this.data.enhancedInfo) ||\n (this.data.loading?.asset && !this.data.address)\n\n if (isLoading) {\n return this._renderLoadingState()\n }\n\n // Handle error states\n if (\n !this.data.address &&\n !this.data.enhancedInfo &&\n !this.data.transaction\n ) {\n return this._renderErrorState('No transaction data provided')\n }\n\n // Replicate the exact structure from LSP7Transfer.vue\n return html`\n <div class=\"universal-view\">\n <!-- Title wrapper with title and LSP tag - exact match -->\n <div class=\"title-wrapper\">\n <div class=\"title-section\">\n ${when(\n this.data.icon,\n () => html`\n <svg class=\"title-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M7 16l-4-4 4-4M17 8l4 4-4 4\" />\n </svg>\n `\n )}\n ${this.data.title || 'Transaction'}\n </div>\n ${when(\n this.data.standard,\n () => html`<div class=\"lsp-tag\">${this.data.standard}</div>`\n )}\n </div>\n\n <!-- AssetCard replaces DigitalAssetInfo - exact same functionality -->\n <asset-card\n .data=${this._buildAssetCardData()}\n size=\"medium\"\n ?show-info-button=${true}\n @info-click=${this._handleInfoPanelToggle}\n ></asset-card>\n\n <!-- InfoPanel replaces BackPanelAsset with class=\"mt-4\" spacing -->\n <info-panel\n class=\"info-panel\"\n address=${this.data.address || ''}\n ?open=${this._infoPanelOpen}\n standard=${this.data.standard || this.data.enhancedInfo?.standard || ''}\n type=${this.data.type || 'transfer'}\n @close=${this._handleInfoPanelClose}\n ></info-panel>\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'universal-token-view': UniversalTokenView\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport type { ResolvedAddress } from '@lukso/transaction-view-headless'\nimport { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport '../shared/load-web-components'\n\n/**\n * ContractCard Component\n *\n * A wrapper around lukso-card that auto-resolves contract/token metadata from an address or address-tokenId.\n * Provides the same variants and styling as lukso-card with automatic data population.\n *\n * @example\n * ```html\n * <!-- Basic contract card -->\n * <contract-card address=\"0x1234...\"></contract-card>\n *\n * <!-- Profile variant with token ID -->\n * <contract-card\n * address=\"0x1234...\"\n * variant=\"profile\"\n * ></contract-card>\n *\n * <!-- With custom slots -->\n * <contract-card address=\"0x1234...\" variant=\"with-header\">\n * <div slot=\"header\">Custom Header</div>\n * <div slot=\"content\">Custom Content</div>\n * </contract-card>\n * ```\n *\n * @slot header - Custom header content (for with-header variant)\n * @slot content - Custom content area\n * @slot bottom - Bottom slot content\n *\n * @fires address-click - Fired when the card is clicked (if clickable=true)\n */\n@safeCustomElement('contract-card')\nexport class ContractCard extends LitElement {\n /**\n * Contract address or address-tokenId format\n */\n @property() address!: string\n\n /**\n * Pre-resolved address data (optional, for performance optimization)\n */\n @property({ type: Object }) resolved?: ResolvedAddress\n\n /**\n * Card variant (maps to lukso-card variants)\n * - basic: Simple card with content slot\n * - with-header: Card with header and content sections\n * - profile: Profile card layout\n * - profile-2: Alternative profile layout\n * - hero: Large hero-style card\n * - dapp: DApp-specific card layout\n */\n @property() variant:\n | 'basic'\n | 'with-header'\n | 'profile'\n | 'profile-2'\n | 'hero'\n | 'dapp' = 'basic'\n\n /**\n * Border radius size\n */\n @property({ attribute: 'border-radius' }) borderRadius:\n | 'small'\n | 'medium'\n | 'none' = 'medium'\n\n /**\n * Shadow size\n */\n @property() shadow: 'small' | 'medium' | 'large' = 'large'\n\n /**\n * Card width in pixels\n */\n @property({ type: Number }) width?: number\n\n /**\n * Card height in pixels\n */\n @property({ type: Number }) height?: number\n\n /**\n * Whether the card is hoverable\n */\n @property({ type: Boolean, attribute: 'is-hoverable' }) isHoverable = false\n\n /**\n * Whether the card has an overlay\n */\n @property({ type: Boolean, attribute: 'has-overlay' }) hasOverlay = false\n\n /**\n * Custom CSS class for the card\n */\n @property({ attribute: 'custom-class' }) customClass = ''\n\n /**\n * Custom CSS class for the header\n */\n @property({ attribute: 'header-class' }) headerClass = ''\n\n @state() private _resolvedData?: ResolvedAddress\n @state() private _profileImageUrl?: string\n @state() private _backgroundImageUrl?: string\n\n private _extractBaseAddress(addressOrComposite: string): string {\n return addressOrComposite.split('-')[0]\n }\n\n private _handleClick() {\n this.dispatchEvent(\n new CustomEvent('address-click', {\n detail: {\n address: this.address,\n resolved: this._resolvedData,\n },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n static styles = css`\n :host {\n display: block;\n }\n `\n\n render() {\n const baseAddress = this._extractBaseAddress(this.address)\n // is-eoa should ONLY be true when there's no __gqltype at all (actual EOA with no on-chain data)\n // For Profiles, Tokens, NFTs - they all have __gqltype, so is-eoa should be false\n // This ensures lukso-card shows the resolved profile-url image instead of blockie identicon\n const isEoa = !this._resolvedData?.__gqltype\n\n return html`\n <lukso-card\n variant=\"${this.variant}\"\n border-radius=\"${this.borderRadius}\"\n shadow=\"${this.shadow}\"\n ?is-hoverable=\"${this.isHoverable}\"\n ?has-overlay=\"${this.hasOverlay}\"\n ?is-eoa=\"${isEoa}\"\n custom-class=\"${this.customClass}\"\n header-class=\"${this.headerClass}\"\n profile-url=\"${this._profileImageUrl || ''}\"\n background-url=\"${this._backgroundImageUrl || ''}\"\n profile-address=\"${baseAddress}\"\n .width=\"${this.width}\"\n .height=\"${this.height}\"\n @click=\"${this._handleClick}\"\n >\n <!-- Pass through all slots -->\n <slot name=\"header\" slot=\"header\"></slot>\n <slot name=\"content\" slot=\"content\"></slot>\n <slot name=\"bottom\" slot=\"bottom\"></slot>\n </lukso-card>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'contract-card': ContractCard\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { CoreLitElement } from '../styles'\nimport '../shared/load-web-components'\n\nexport type PermissionLevels = {\n permissionName: string\n type: string\n icon?: string\n isActive: boolean\n isForward?: boolean\n info: string\n}\n\n/**\n * Permissions block card\n *\n * Lit/Web Component equivalent of the provided Vue PermissionsBlock.\n * - Uses Tailwind utility classes for styling\n * - Uses LUKSO web components where applicable (lukso-icon)\n */\n@safeCustomElement('permissions-block')\nexport class PermissionsBlock extends CoreLitElement {\n /** Header icon name */\n @property({ type: String }) icon: string = ''\n\n /** Optional action icon name (reserved, not displayed yet) */\n @property({ type: String, attribute: 'action-icon' }) actionIcon: string = ''\n\n /** CSS color (e.g., var(--blue-75)) applied to icons */\n @property({ type: String }) color: string = 'var(--neutral-60)'\n\n /** Title text */\n @property({ type: String }) title: string = ''\n\n /** Description text */\n @property({ type: String }) description: string = ''\n\n /** Control identifier used by parent (informational only here) */\n @property({ type: String }) control: string = ''\n\n /** Permission levels to render */\n @property({ type: Array }) permissions: PermissionLevels[] = []\n\n override render() {\n return html`\n\t\t\t<div\n\t\t\t\tclass=\"mb-6 p-4 bg-[var(--neutral-100)] border border-[var(--neutral-90)] rounded-lg\"\n\t\t\t>\n\t\t\t\t<div class=\"flex items-center mb-2\">\n\t\t\t\t\t${\n this.icon\n ? html`<lukso-icon\n\t\t\t\t\t\t\t\tname=${this.icon}\n\t\t\t\t\t\t\t\tsize=\"x-small\"\n\t\t\t\t\t\t\t\tcolor=${this.color}\n\t\t\t\t\t\t\t></lukso-icon>`\n : nothing\n }\n\t\t\t\t\t<div class=\"ml-2 heading-inter-14-bold\">${this.title}</div>\n\t\t\t\t</div>\n\n\t\t\t\t${\n this.description\n ? html`<div class=\"text-[var(--neutral-40)] paragraph-inter-12-regular\">\n\t\t\t\t\t\t\t${this.description}\n\t\t\t\t\t\t</div>`\n : nothing\n }\n\n\t\t\t\t<div class=\"h-px w-full bg-[var(--neutral-90)] mt-4\"></div>\n\n\t\t\t\t<slot></slot>\n\n\t\t\t\t${(this.permissions || []).map((p) => this.renderPermission(p))}\n\t\t\t</div>\n\t\t`\n }\n\n private renderPermission(p: PermissionLevels) {\n const nameBase = (p.icon || p.permissionName || '')\n .toLowerCase()\n .replace(/_/g, '-')\n const activeIcon = `${nameBase}-activated`\n const inactiveIcon = `${nameBase}-inactive`\n return html`\n\t\t\t<div class=\"mt-4 grid grid-cols-[40px,1fr,20px] gap-x-2 items-start\">\n\t\t\t\t<div class=\"relative w-10 h-10\">\n\t\t\t\t\t<lukso-icon\n\t\t\t\t\t\tclass=\"active absolute bottom-0 opacity-0 z-[99] transition-opacity duration-200 ${\n p.isActive ? 'opacity-100' : ''\n }\"\n\t\t\t\t\t\tname=${activeIcon}\n\t\t\t\t\t\twidth=\"40\"\n\t\t\t\t\t\theight=\"40\"\n\t\t\t\t\t\tcolor=${this.color}\n\t\t\t\t\t></lukso-icon>\n\t\t\t\t\t<lukso-icon\n\t\t\t\t\t\tclass=\"inactive absolute bottom-0 ${p.isActive ? 'opacity-0' : 'opacity-100'}\"\n\t\t\t\t\t\tname=${inactiveIcon}\n\t\t\t\t\t\twidth=\"40\"\n\t\t\t\t\t\theight=\"40\"\n\t\t\t\t\t\tcolor=${this.color}\n\t\t\t\t\t></lukso-icon>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t<span class=\"paragraph-inter-12-semi-bold \">${p.type}</span>\n\t\t\t\t\t<div class=\"paragraph-inter-12-regular\">${p.info}</div>\n\t\t\t\t</div>\n\n\t\t\t\t${\n p.isActive\n ? html`<lukso-icon\n\t\t\t\t\t\t\tname=\"complete-filled\"\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tsecondary-color=\"neutral-100\"\n color=\"green-54\"\n\t\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\t></lukso-icon>`\n : html`<lukso-icon\n\t\t\t\t\t\t\tname=\"cross-outline\"\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tcolor=\"red-65\"\n\t\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\t></lukso-icon>`\n }\n\t\t\t</div>\n\t\t`\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'permissions-block': PermissionsBlock\n }\n}\n","import { safeCustomElement } from '@lukso/core/utils'\nimport {\n type DecoderResult,\n decodeTransaction,\n JSONbigString,\n} from '@lukso/transaction-decoder'\nimport {\n createTransactionPlayback,\n isHeaderInfoEvent,\n type PlaybackIndexResult,\n type TransactionHeaderInfo,\n type TransactionPlaybackState,\n TransactionViewEvents,\n type ViewContext,\n type ViewVariant,\n} from '@lukso/transaction-view-headless'\nimport { html, type PropertyValues } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport type { Chain, Transaction } from 'viem'\nimport { getGlobalLitLoader } from '../registry/lit-view-loader'\nimport { CoreLitElement } from '../styles'\n\n/**\n * Raw transaction input type - accepts transactions with JSON, BigintJSON, or bigint values\n */\nexport type RawTransactionInput = Transaction | Record<string, any>\n\n/**\n * Lit Transaction Playback Component\n *\n * Provides index-based rendering of transactions with support for batch navigation,\n * context-aware view matching, and local transaction decoding.\n *\n * **Transaction Input:**\n * - Pass a decoded transaction via `transaction` prop, OR\n * - Pass a raw transaction via `rawTransaction` + `chain` props for local decoding\n * - Raw transactions can have JSON, BigintJSON (\"123n\"), or bigint values\n *\n * **Single Transaction:**\n * - index=\"0\" → renders the transaction\n * - index=\"1\" → renders the transaction (same)\n * - index=\"2\" → null/error\n *\n * **Batch Transaction:**\n * - index=\"0\" → renders batch summary/expandable view\n * - index=\"1\" → renders first child transaction\n * - index=\"2\" → renders second child transaction\n * - etc.\n *\n * **Context & Variant:**\n * - context: WHERE the transaction is displayed (approval, feed, list, detail, etc.)\n * - variant: HOW the transaction should be rendered (full, collapsed, minimal, etc.)\n *\n * **Header Events:**\n * - Listens for 'header-info' events from child views\n * - Child views can emit header-info to override default from/to addresses\n * - Example: Transfer view can show transfer's from/to instead of execute's from/to\n *\n * @example\n * ```html\n * <!-- With decoded transaction -->\n * <transaction-playback\n * .transaction=\"${decodedTransaction}\"\n * index=\"1\"\n * context=\"feed\"\n * variant=\"compact\"\n * ></transaction-playback>\n *\n * <!-- With raw transaction (local decoding) -->\n * <transaction-playback\n * .rawTransaction=\"${rawTx}\"\n * .chain=\"${lukso}\"\n * index=\"1\"\n * context=\"approval\"\n * variant=\"full\"\n * ></transaction-playback>\n * ```\n */\n@safeCustomElement('transaction-playback')\nexport class TransactionPlayback extends CoreLitElement {\n /** The decoded transaction to display */\n @property({ type: Object })\n transaction?: DecoderResult\n\n /** Raw transaction to decode internally (alternative to passing decoded transaction) */\n @property({ type: Object })\n rawTransaction?: RawTransactionInput\n\n /** Chain configuration for decoding (required when using rawTransaction) */\n @property({ type: Object })\n chain?: Chain\n\n /** Index to display (0, 1, 2, ...) */\n @property({ type: Number })\n index = 1 // Default to index 1 (main transaction, skips batch summary)\n\n /** Fallback view ID if no match found (optional - fallback-screen is registered with lowest priority) */\n @property({ type: String })\n fallbackViewId?: string\n\n /** Context: WHERE the transaction is displayed */\n @property({ type: String })\n context?: ViewContext\n\n /** Variant: HOW the transaction should be rendered */\n @property({ type: String })\n variant?: ViewVariant\n\n /** Show debug information */\n @property({ type: Boolean })\n debug = false\n\n @state()\n private playbackState?: TransactionPlaybackState\n\n @state()\n private currentResult?: PlaybackIndexResult\n\n @state()\n private isLoading = false\n\n @state()\n private isDecoding = false\n\n @state()\n private error?: string\n\n @state()\n private loadedComponent?: HTMLElement\n\n @state()\n private headerInfo?: TransactionHeaderInfo\n\n @state()\n private decodedTransaction?: DecoderResult\n\n private componentContainerRef: Ref<HTMLDivElement> = createRef()\n private loader = getGlobalLitLoader()\n private decodingUnsubscribe?: () => void\n\n protected willUpdate(changedProperties: PropertyValues): void {\n // Decode raw transaction if provided\n if (\n changedProperties.has('rawTransaction') ||\n changedProperties.has('chain')\n ) {\n if (this.rawTransaction) {\n this.decodeRawTransaction()\n return // Don't load view yet, wait for decoding\n }\n }\n\n // Reload when transaction, index, context, or variant changes\n if (\n changedProperties.has('transaction') ||\n changedProperties.has('decodedTransaction') ||\n changedProperties.has('index') ||\n changedProperties.has('context') ||\n changedProperties.has('variant')\n ) {\n this.loadView()\n }\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n // Mount component after render\n if (this.loadedComponent && this.componentContainerRef.value) {\n // Clear existing content\n this.componentContainerRef.value.innerHTML = ''\n // Append the new component\n this.componentContainerRef.value.appendChild(this.loadedComponent)\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n // Listen for header-info events from child views\n this.addEventListener(\n TransactionViewEvents.HEADER_INFO,\n this.handleHeaderInfo as EventListener\n )\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n this.removeEventListener(\n TransactionViewEvents.HEADER_INFO,\n this.handleHeaderInfo as EventListener\n )\n // Clean up decoding subscription\n if (this.decodingUnsubscribe) {\n this.decodingUnsubscribe()\n this.decodingUnsubscribe = undefined\n }\n }\n\n /**\n * Decode a raw transaction locally (no server API calls)\n * Accepts transactions with JSON, BigintJSON, or bigint values\n *\n * Two-phase decoding:\n * 1. Immediate sync decoding - shows basic decoded transaction right away\n * 2. Async enhancement - progressively enhances with additional data\n */\n private async decodeRawTransaction() {\n if (!this.rawTransaction) {\n return\n }\n\n if (!this.chain) {\n this.error =\n 'Chain configuration is required when decoding raw transactions'\n return\n }\n\n this.isDecoding = true\n this.error = undefined\n this.decodedTransaction = undefined\n\n // Clean up previous subscription\n if (this.decodingUnsubscribe) {\n this.decodingUnsubscribe()\n this.decodingUnsubscribe = undefined\n }\n\n try {\n // Normalize the transaction input (convert BigintJSON strings to BigInt)\n const normalizedTx = JSONbigString.read(this.rawTransaction)\n\n // Decode the transaction locally with async enhancement enabled\n // This returns immediately with sync-decoded result, then enhances asynchronously\n const result = await decodeTransaction(normalizedTx, {\n chain: this.chain,\n plugins: [], // Use auto-registered plugins\n schemaPlugins: [], // Use auto-registered schema plugins\n wrappers: [], // No wrapper detection needed for raw transactions\n async: true, // Enable async enhancement (ABI fetching, address resolution)\n })\n\n // Handle single transaction result (not batch)\n if (!Array.isArray(result)) {\n // PHASE 1: Store the immediate sync-decoded result and show it right away\n this.decodedTransaction = result.immediate\n this.isDecoding = false\n\n // Load the view with the immediate result\n this.loadView()\n\n // PHASE 2: Subscribe to async enhancement updates\n // The signal will emit updates as async decoding progresses\n this.decodingUnsubscribe = result.signal.subscribe((state: any) => {\n if (state.data && state.data !== this.decodedTransaction) {\n this.decodedTransaction = state.data\n // Re-render the view with enhanced data\n this.loadView()\n }\n })\n } else {\n // For batch transactions, use the first result\n const firstResult = result[0]\n\n // PHASE 1: Immediate result\n this.decodedTransaction = firstResult.immediate\n this.isDecoding = false\n\n // Load the view with the immediate result\n this.loadView()\n\n // PHASE 2: Subscribe to async enhancement updates\n this.decodingUnsubscribe = firstResult.signal.subscribe(\n (state: any) => {\n if (state.data && state.data !== this.decodedTransaction) {\n this.decodedTransaction = state.data\n // Re-render the view with enhanced data\n this.loadView()\n }\n }\n )\n }\n } catch (err) {\n this.error =\n err instanceof Error ? err.message : 'Failed to decode transaction'\n this.isDecoding = false\n console.error('Transaction decoding error:', err)\n }\n }\n\n private handleHeaderInfo = (event: Event): void => {\n if (isHeaderInfoEvent(event)) {\n this.headerInfo = event.detail\n\n // Re-emit the event so parent containers can also listen\n this.dispatchEvent(\n new CustomEvent(TransactionViewEvents.HEADER_INFO, {\n bubbles: true,\n composed: true,\n detail: event.detail,\n })\n )\n }\n }\n\n private async loadView() {\n // Use decodedTransaction if available (from rawTransaction), otherwise use passed transaction\n const txToDisplay = this.decodedTransaction || this.transaction\n\n if (!txToDisplay) {\n this.error = 'No transaction provided'\n return\n }\n\n this.isLoading = true\n this.error = undefined\n this.loadedComponent = undefined\n this.headerInfo = undefined // Reset header info on new load\n\n try {\n // Create playback state\n this.playbackState = createTransactionPlayback(txToDisplay, {\n framework: 'lit',\n fallbackViewId: this.fallbackViewId,\n context: this.context,\n variant: this.variant,\n })\n\n // Get view at current index\n this.currentResult = this.playbackState.getViewAtIndex(this.index)\n\n // Validate index\n if (!this.currentResult.indexInfo.isValid) {\n throw new Error(\n `Invalid index ${this.index}. Valid indices: ${this.playbackState.batchInfo.availableIndices.join(', ')}`\n )\n }\n\n // Check if we have a match\n if (!this.currentResult.match) {\n throw new Error(`No view found for transaction at index ${this.index}`)\n }\n\n // Load the component\n const componentClass = await this.loader.loadFromMatch(\n this.currentResult.match\n )\n\n // Create component instance with transaction data\n // Pass transaction (required) and context/variant (optional) for context-aware rendering\n this.loadedComponent = this.loader.createInstance(componentClass, {\n transaction: this.currentResult.transaction,\n ...(this.context && { context: this.context }),\n ...(this.variant && { variant: this.variant }),\n })\n\n this.isLoading = false\n } catch (err) {\n this.error =\n err instanceof Error ? err.message : 'Failed to load transaction view'\n this.isLoading = false\n console.error('Transaction playback error:', err)\n }\n }\n\n private renderDebugPanel() {\n if (!this.debug || !this.playbackState || !this.currentResult) {\n return html``\n }\n\n return html`\n <div class=\"mt-4 p-3 bg-neutral-10 border border-neutral-20 rounded-lg text-12 font-mono\">\n <div class=\"font-600 mb-2 text-neutral-80\">🐛 Playback Debug Info</div>\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Requested Index:</span>\n <span class=\"text-neutral-100\">${this.currentResult.indexInfo.requested}</span>\n </div>\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Is Valid:</span>\n <span class=\"${this.currentResult.indexInfo.isValid ? 'text-green-600' : 'text-red-600'}\">\n ${this.currentResult.indexInfo.isValid ? '✓ Yes' : '✗ No'}\n </span>\n </div>\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Is Batch:</span>\n <span class=\"text-neutral-100\">\n ${this.playbackState.isBatch ? 'Yes' : 'No'}\n </span>\n </div>\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Is Batch Summary:</span>\n <span class=\"text-neutral-100\">\n ${this.currentResult.indexInfo.isBatchSummary ? 'Yes' : 'No'}\n </span>\n </div>\n ${when(\n this.currentResult.indexInfo.childIndex != null,\n () => html`\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Child Index:</span>\n <span class=\"text-neutral-100\">${this.currentResult?.indexInfo.childIndex}</span>\n </div>\n `\n )}\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Available Indices:</span>\n <span class=\"text-neutral-100\">\n [${this.playbackState?.batchInfo.availableIndices.join(', ')}]\n </span>\n </div>\n ${when(\n this.currentResult.match,\n () => html`\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Matched View:</span>\n <span class=\"text-neutral-100\">${this.currentResult?.match?.view.id}</span>\n </div>\n `\n )}\n ${when(\n this.headerInfo,\n () => html`\n <div class=\"mt-2 pt-2 border-t border-neutral-20\">\n <div class=\"font-600 mb-1 text-neutral-80\">📋 Header Info</div>\n ${when(\n this.headerInfo?.from,\n () => html`\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">From:</span>\n <span class=\"text-neutral-100\">${this.headerInfo?.from}</span>\n </div>\n `\n )}\n ${when(\n this.headerInfo?.to,\n () => html`\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">To:</span>\n <span class=\"text-neutral-100\">${this.headerInfo?.to}</span>\n </div>\n `\n )}\n ${when(\n this.headerInfo?.title,\n () => html`\n <div class=\"flex gap-2 mb-1\">\n <span class=\"font-500 text-neutral-60\">Title:</span>\n <span class=\"text-neutral-100\">${this.headerInfo?.title}</span>\n </div>\n `\n )}\n </div>\n `\n )}\n </div>\n `\n }\n\n render() {\n // Decoding state\n if (this.isDecoding) {\n return html`\n <div class=\"flex flex-col items-center justify-center py-15 px-5 text-neutral-60\">\n <div class=\"text-32 mb-4 animate-spin\">🔄</div>\n <div class=\"text-16 font-500\">Decoding transaction...</div>\n </div>\n `\n }\n\n // Loading state\n if (this.isLoading) {\n return html`\n <div class=\"flex flex-col items-center justify-center py-15 px-5 text-neutral-60\">\n <div class=\"text-32 mb-4 animate-spin\">⏳</div>\n <div class=\"text-16 font-500\">Loading transaction view...</div>\n </div>\n `\n }\n\n // Error state\n if (this.error) {\n return html`\n <div class=\"flex flex-col items-center justify-center py-15 px-5 text-red-600 bg-red-50 border border-red-200 rounded-xl m-5\">\n <div class=\"text-48 mb-4\">❌</div>\n <div class=\"text-18 font-600 mb-2\">Error</div>\n <div class=\"text-14 text-center leading-normal\">${this.error}</div>\n </div>\n ${this.renderDebugPanel()}\n `\n }\n\n // Batch summary rendering (index 0 of executeBatch)\n if (this.currentResult?.indexInfo.isBatchSummary && this.transaction) {\n const children = (this.transaction as any).children || []\n return html`\n <div class=\"relative\">\n <div class=\"flex flex-col gap-4\">\n ${children.map(\n (child: any) => html`\n <transaction-playback\n .transaction=${child}\n .index=${1}\n context=\"summary\"\n .variant=${this.variant}\n ?debug=${this.debug}\n ></transaction-playback>\n `\n )}\n </div>\n ${this.renderDebugPanel()}\n </div>\n `\n }\n\n // Render loaded component (single transaction or batch child)\n return html`\n <div class=\"relative\">\n <div class=\"contents\" ${ref(this.componentContainerRef)}>\n <!-- Component will be mounted here via updated() lifecycle -->\n </div>\n ${this.renderDebugPanel()}\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'transaction-playback': TransactionPlayback\n }\n}\n","import type {\n FrameworkViewConfig,\n ViewMatch,\n} from '@lukso/transaction-view-headless'\nimport { ViewLoadingError } from '@lukso/transaction-view-headless'\n\n/**\n * Lit component view loader\n * Handles loading of Lit web components for transaction views\n */\nexport class LitViewLoader {\n private loadedComponents = new Map<string, any>()\n\n /**\n * Load a component from a view match\n */\n async loadFromMatch(match: ViewMatch): Promise<any> {\n if (!match.frameworkConfig) {\n throw new ViewLoadingError(\n `No framework config for view \"${match.view.id}\"`,\n { type: 'custom-element', tagName: '' },\n {} as FrameworkViewConfig\n )\n }\n\n return this.loadComponent(match.frameworkConfig)\n }\n\n /**\n * Load a component based on framework config\n */\n async loadComponent(config: FrameworkViewConfig): Promise<any> {\n const { loader, component } = config\n\n // Check if already loaded\n if (this.loadedComponents.has(component)) {\n return this.loadedComponents.get(component)\n }\n\n try {\n let loadedComponent: any\n\n switch (loader.type) {\n case 'custom-element':\n loadedComponent = await this.loadCustomElement(loader.tagName)\n break\n case 'dynamic-import':\n loadedComponent = await this.loadDynamicImport(loader.path)\n break\n case 'static-import':\n loadedComponent = await this.loadStaticImport(loader.path)\n break\n case 'custom':\n loadedComponent = await loader.loader(config)\n break\n default:\n throw new ViewLoadingError(\n `Unsupported loader type: ${(loader as any).type}`,\n loader,\n config\n )\n }\n\n // Cache the loaded component\n this.loadedComponents.set(component, loadedComponent)\n return loadedComponent\n } catch (error) {\n throw new ViewLoadingError(\n `Failed to load component \"${component}\"`,\n loader,\n config,\n error instanceof Error ? error : new Error(String(error))\n )\n }\n }\n\n /**\n * Load a custom element (Web Component)\n */\n private async loadCustomElement(tagName: string): Promise<any> {\n // Check if the custom element is already defined\n if (customElements.get(tagName)) {\n return customElements.get(tagName)\n }\n\n // For our core components, they should be imported already\n // This is a fallback to wait for definition\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n new Error(`Custom element \"${tagName}\" not found after 5s timeout`)\n )\n }, 5000)\n\n customElements\n .whenDefined(tagName)\n .then(() => {\n clearTimeout(timeout)\n resolve(customElements.get(tagName))\n })\n .catch(reject)\n })\n }\n\n /**\n * Load via dynamic import\n */\n private async loadDynamicImport(\n path: string | (() => Promise<any>)\n ): Promise<any> {\n // Handle callback functions (lazy loading)\n if (typeof path === 'function') {\n const module = await path()\n return module.default || module\n }\n\n // Handle string paths\n const module = await import(/* @vite-ignore */ path)\n return module.default || module\n }\n\n /**\n * Load via static import (not really possible at runtime, but for completeness)\n */\n private async loadStaticImport(\n path: string | (() => Promise<any>)\n ): Promise<any> {\n // This would typically be handled at build time\n // For runtime, fallback to dynamic import\n return this.loadDynamicImport(path)\n }\n\n /**\n * Create a component instance with data\n */\n createInstance(componentClass: any, data: any): HTMLElement {\n const element = new componentClass()\n\n // Set data properties\n Object.keys(data).forEach((key) => {\n if (key in element) {\n element[key] = data[key]\n } else {\n element.setAttribute(\n key,\n typeof data[key] === 'object'\n ? JSON.stringify(data[key])\n : String(data[key])\n )\n }\n })\n\n return element\n }\n\n /**\n * Clear component cache\n */\n clearCache(): void {\n this.loadedComponents.clear()\n }\n}\n\n/**\n * Global Lit view loader instance\n */\nlet globalLitLoader: LitViewLoader | null = null\n\n/**\n * Get the global Lit view loader\n */\nexport function getGlobalLitLoader(): LitViewLoader {\n if (!globalLitLoader) {\n globalLitLoader = new LitViewLoader()\n }\n return globalLitLoader\n}\n\n/**\n * Set a custom global Lit loader (useful for testing)\n */\nexport function setGlobalLitLoader(loader: LitViewLoader): void {\n globalLitLoader = loader\n}\n\n/**\n * Reset the global Lit loader (mainly for testing)\n */\nexport function resetGlobalLitLoader(): void {\n globalLitLoader = null\n}\n","/**\n * Transaction View Core Registry\n *\n * This module provides the registration and selection logic for transaction views,\n * replacing the iframe-based architecture with direct component rendering.\n */\n\n// Re-export headless types and utilities for convenience\nexport type {\n FrameworkSupport,\n FrameworkViewConfig,\n ViewDefinition,\n ViewLoader,\n ViewMatch,\n ViewMatchOptions,\n ViewRegistry,\n} from '@lukso/transaction-view-headless'\nexport {\n DefaultViewRegistry,\n getGlobalRegistry,\n resetGlobalRegistry,\n setGlobalRegistry,\n} from '@lukso/transaction-view-headless'\n// Lit component loader\nexport {\n getGlobalLitLoader,\n LitViewLoader,\n resetGlobalLitLoader,\n setGlobalLitLoader,\n} from './lit-view-loader'\n// Transaction view selector\n"],"mappings":";;;;;;;;;;;;AAEA,SAAS,qBAAAA,2BAAyB;;;ACFlC,SAAS,YAAY;AACrB,SAAS,yBAAyB;AAClC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAK,MAAM,kBAAkB;AACtC,SAAS,gBAAgB;AA0ClB,IAAM,iBAAN,cAA6B,WAAW;AAAA,EAAxC;AAAA;AAmBO,gBAAiD;AAUD,0BAC1D;AAKmD,oBAAW;AAKZ,oBAAW;AAU/D;AAAA,SAAQ,cAAc,eAAe;AACrC,SAAQ,kBAAkB,mBAAmB;AAC7C,0BAAiB;AAGjB;AAAA,SAAQ,YAAY,IAAI,KAAK,MAAM;AAAA,MACjC,MAAM,OAAO,CAAC,QAAQ,MAAM;AAC1B,YAAI,CAAC,SAAU,QAAO;AAEtB,aAAK,iBAAiB;AACtB,YAAI;AACF,gBAAM,QAAQ,MAAM,KAAK,YAAY,iBAAiB,UAAU;AAAA,YAC9D,OAAO,KAAK,cAAc;AAAA,YAC1B,QAAQ,KAAK,cAAc;AAAA,YAC3B,KAAK,OAAO,oBAAoB;AAAA,UAClC,CAAC;AAED,iBAAO,SAAS,KAAK,YAAY,iBAAiB,QAAQ;AAAA,QAC5D,SAAS,OAAO;AACd,kBAAQ,KAAK,iCAAiC,KAAK;AACnD,iBAAO,KAAK,YAAY,iBAAiB,YAAY,CAAC,CAAC;AAAA,QACzD,UAAE;AACA,eAAK,iBAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,QAAQ;AAAA,IAC5B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EA/BD,IAAY,mBAA2B;AACrC,WAAO,KAAK,SAAS,KAAK,WAAW;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAkCQ,gBAAwB;AAC9B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAyB;AAC/B,QAAI,CAAC,KAAK,SAAU,QAAO;AAE3B,UAAM,eAAe,KAAK,gBAAgB,kBAAkB,KAAK,QAAQ;AACzE,WAAO,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAY,aAAsB;AAChC,WAAO,KAAK,WACR,KAAK,YAAY,kBAAkB,KAAK,QAAQ,IAChD;AAAA,EACN;AAAA;AAAA;AAAA;AAAA,EAKA,IAAY,gBAAwB;AAClC,WAAO,KAAK,WACR,KAAK,gBAAgB,iBAAiB,KAAK,QAAQ,IACnD;AAAA,EACN;AAAA;AAAA;AAAA;AAAA,EAKA,IAAY,sBAA+B;AACzC,WAAO,KAAK,WACR,KAAK,gBAAgB,oBAAoB,KAAK,QAAQ,IACtD;AAAA,EACN;AAAA;AAAA;AAAA;AAAA,EAKQ,aAAa;AACnB,QAAI,UAAU,WAAW;AACvB,gBAAU,UAAU,UAAU,KAAK,gBAAgB;AAEnD,WAAK;AAAA,QACH,IAAI,YAAY,kBAAkB;AAAA,UAChC,QAAQ,EAAE,SAAS,KAAK,iBAAiB;AAAA,UACzC,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAAqB;AAC3B,SAAK;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,QAAQ;AAAA,UACN,SAAS,KAAK;AAAA,UACd,UAAU,KAAK;AAAA,QACjB;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAES,SAAS;AAChB,UAAM,cAAc,KAAK,UAAU;AAEnC,WAAO;AAAA;AAAA,UAED,KAAK,QAAQ,0BAA0B,KAAK,KAAK,WAAW,EAAE;AAAA;AAAA,8CAE1B,KAAK,kBAAkB;AAAA;AAAA,YAGzD,KAAK,UAAU,aACX;AAAA;AAAA,gBAEA,KAAK,SAAS,UAAU;AAAA;AAAA,0BAEd,KAAK,SAAS,QAAQ;AAAA,uBACzB,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQhB,EACN;AAAA;AAAA;AAAA;AAAA,mBAIS,KAAK,IAAI;AAAA,8BACE,KAAK,gBAAgB;AAAA,0BACzB,aAAa,OAAO,EAAE;AAAA;AAAA,yBAEvB,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA,YAK5B,KAAK,WACD;AAAA;AAAA,qBAEK,KAAK,eAAe,CAAC;AAAA,qBACrB,KAAK,IAAI;AAAA,0BACJ,KAAK,QAAQ;AAAA,uBAChB,KAAK,aAAa;AAAA,gCACT,KAAK,mBAAmB;AAAA;AAAA;AAAA,cAIxC;AAAA;AAAA,qBAEK,KAAK,eAAe,CAAC;AAAA,wBAClB,CAAC,KAAK,aAAa,KAAK,mBAAmB,MAAS;AAAA,qBACvD,KAAK,IAAI;AAAA,0BACJ,KAAK,QAAQ;AAAA,uBAChB,KAAK,aAAa;AAAA,gCACT,KAAK,mBAAmB;AAAA,mCACrB,KAAK,mBAAmB;AAAA;AAAA,WAGjD;AAAA;AAAA;AAAA;AAAA,YAKE,KAAK,iBACD;AAAA;AAAA;AAAA,uBAGO,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,cAMtB,EACN;AAAA;AAAA;AAAA;AAAA,EAIR;AAmEF;AAvTa,eAsPK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAlPb;AAAA,EAAX,SAAS;AAAA,GAJC,eAIC;AAKA;AAAA,EAAX,SAAS;AAAA,GATC,eASC;AAKgB;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAdf,eAciB;AAKhB;AAAA,EAAX,SAAS;AAAA,GAnBC,eAmBC;AAKA;AAAA,EAAX,SAAS;AAAA,GAxBC,eAwBC;AAKgD;AAAA,EAA3D,SAAS,EAAE,MAAM,SAAS,WAAW,mBAAmB,CAAC;AAAA,GA7B/C,eA6BiD;AAMP;AAAA,EAApD,SAAS,EAAE,MAAM,SAAS,WAAW,YAAY,CAAC;AAAA,GAnCxC,eAmC0C;AAKD;AAAA,EAAnD,SAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GAxCvC,eAwCyC;AAxCzC,iBAAN;AAAA,EADN,kBAAkB,iBAAiB;AAAA,GACvB;;;ACjDb,SAAS,QAAAC,aAAY;AACrB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,sBAAAC,2BAA0B;AACnC,OAAO,iBAAiB;AACxB,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,WAAU,aAAa;;;ACwBhC,IAAM,iBACJ,OAAO,mBAAmB,cACtB,eAAe,OAAO,KAAK,cAAc,IACzC;AAGN,IAAI,OAAO,mBAAmB,eAAe,gBAAgB;AAC3D,iBAAe,SAAS,CACtB,MAEA,aACA,YACG;AAEH,QAAI,CAAC,eAAe,IAAI,IAAI,GAAG;AAC7B,qBAAe,MAAM,aAAa,OAAO;AAAA,IAC3C;AAAA,EAEF;AACF;AAMA,IAAI,kBAAkB,OAAO,mBAAmB,aAAa;AAC3D,iBAAe,SAAS;AAC1B;;;ACxDA,IAAO,iBAAQ;;;ACKf,SAAS,OAAAC,MAAK,cAAAC,aAAY,iBAAiB;AAE3C,IAAM,QAAQD;AAAA,IACV,UAAU,cAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAed,IAAM,iBAAN,cAA6BC,YAAW;AAAA,EAC7C;AAAA,SAAO,SAAS,CAAC,KAAK;AAAA;AACxB;;;AHCO,IAAM,cAAN,cAA0B,eAAe;AAAA,EAAzC;AAAA;AASO,gBAAiD;AAKR,oBAAW;AAKR,uBAAc;AAKd,sBAAa;AAUT,0BAC1D;AAKkD,oBAAW;AAKL,yBAAgB;AAajE,SAAQ,mBAAmB;AAIpC;AAAA,SAAQ,kBAAkBC,oBAAmB;AAG7C;AAAA,SAAQ,cAAc,IAAIC,MAAK,MAAM;AAAA,MACnC,MAAM,OAAO,CAAC,OAAO,MAAM;AACzB,YAAI,CAAC,QAAS,QAAO;AAErB,aAAK,mBAAmB;AACxB,YAAI;AAEF,gBAAM,WAAW,MAAM,KAAK,gBAAgB,eAAe,OAAO;AAClE,eAAK,cAAc;AACnB,iBAAO;AAAA,QACT,SAAS,QAAQ;AACf,iBAAO;AAAA,QACT,UAAE;AACA,eAAK,mBAAmB;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,OAAO;AAAA,IAC3B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAY,iBAAyB;AACnC,WAAO,KAAK,QAAQ,MAAM,GAAG,EAAE,CAAC;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAyB;AAC/B,UAAM,WAAW,KAAK,YAAY;AAElC,QAAI,CAAC,UAAU;AACb,aAAO,KAAK,mBAAmB,eAAe;AAAA,IAChD;AACA,UAAM,eAAe,KAAK,gBAAgB,kBAAkB,QAAQ;AACpE,WAAO,KAAK,SAAS,gBAAgB;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAY,gBAAwB;AAClC,UAAM,WAAW,KAAK,YAAY;AAClC,WAAO,UAAU,aAAa,MAAM;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAY,sBAA+B;AACzC,UAAM,WAAW,KAAK,YAAY;AAClC,WAAO,WAAW,KAAK,gBAAgB,oBAAoB,QAAQ,IAAI;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc;AACpB,SAAK;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,QAAQ;AAAA,UACN,SAAS,KAAK;AAAA,UACd,UAAU,KAAK,YAAY;AAAA,QAC7B;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA,EAGU,WAAW,SAA+B;AAClD,QAAI,QAAQ,IAAI,SAAS,KAAK,KAAK,SAAS;AAC1C,UAAI;AACF,aAAK,YAAY,YAAY,KAAK,eAAe,YAAY,CAAC;AAAA,MAChE,QAAQ;AACN,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGQ,WAAW,OAAe;AAEhC,QAAI,MAAO,OAAM,gBAAgB;AACjC,QAAI,UAAU,WAAW;AACvB,gBAAU,UAAU,UAAU,KAAK,cAAc;AACjD,WAAK;AAAA,QACH,IAAI,YAAY,kBAAkB;AAAA,UAChC,QAAQ,EAAE,SAAS,KAAK,eAAe;AAAA,UACvC,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA,EAIQ,qBAA6B;AACnC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIQ,eAAe,aAAqB;AAC1C,WAAOC;AAAA;AAAA;AAAA;AAAA,eAII,WAAW;AAAA,kBACR,KAAK,OAAO;AAAA,eACf,KAAK,IAAI;AAAA,oBACJ,KAAK,QAAQ;AAAA,iBAChB,KAAK,aAAa;AAAA,wBACX,KAAK,YAAY;AAAA,qBACpB,KAAK,SAAS;AAAA;AAAA;AAAA,EAGjC;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB;AAC1B,WAAOA;AAAA;AAAA;AAAA;AAAA,kBAIO,KAAK,cAAc;AAAA,eACtB,KAAK,IAAI;AAAA,oBACJ,KAAK,QAAQ;AAAA;AAAA,6BAEJ,KAAK,mBAAmB;AAAA;AAAA;AAAA,EAGnD;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAAqB,aAAqB;AAChD,WAAOA;AAAA;AAAA;AAAA;AAAA,eAII,WAAW;AAAA,kBACR,KAAK,OAAO;AAAA,eACf,KAAK,IAAI;AAAA,oBACJ,KAAK,QAAQ;AAAA,iBAChB,KAAK,aAAa;AAAA,wBACX,KAAK,YAAY;AAAA,qBACpB,KAAK,SAAS;AAAA;AAAA;AAAA,EAGjC;AAAA,EAEQ,kBAAkB;AACxB,QAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,UAAW,QAAO;AACnD,UAAM,OAAO,KAAK,mBAAmB;AACrC,WAAOA;AAAA;AAAA;AAAA;AAAA,gBAIK,KAAK,SAAS;AAAA;AAAA,yBAEL,IAAI,aAAa,IAAI;AAAA;AAAA;AAAA;AAAA,EAI5C;AAAA;AAAA,EAGQ,gBAAwB;AAC9B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,oBAAoB;AAC1B,UAAM,cAAc,KAAK,eAAe;AACxC,WAAO,KAAK,QACRA,iFAAgF,KAAK,cAAc,CAAC,KAClG,KAAK,KACP,WACAA;AAAA;AAAA,qBAEa,WAAW;AAAA,qBACX,KAAK,IAAI;AAAA,gCACE,KAAK,mBAAmB;AAAA;AAAA,EAEtD;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB,aAAqB;AAC/C,QAAI,KAAK,SAAU,QAAO,KAAK,eAAe,WAAW;AACzD,QAAI,KAAK,YAAa,QAAO,KAAK,kBAAkB;AACpD,WAAO,KAAK,qBAAqB,WAAW;AAAA,EAC9C;AAAA,EAES,SAAS;AAChB,UAAM,cAAc,KAAK,eAAe;AAExC,QAAI,KAAK,YAAY;AACnB,aAAOA;AAAA,+GAEH,KAAK,WACP;AAAA;AAAA;AAAA,cAGM,KAAK,gBAAgB,CAAC;AAAA,cACtB,KAAK,kBAAkB,CAAC;AAAA;AAAA,cAGxB,KAAK,iBACDA;AAAA;AAAA,2BAES,CAAC,MAAa,KAAK,WAAW,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,6BAKzCA,OACN;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKY,KAAK,cAAc;AAAA,qBACtB,KAAK,IAAI;AAAA,0BACJ,KAAK,QAAQ;AAAA;AAAA;AAAA,mCAGJ,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKvD;AAGA,WAAOA;AAAA,0EAC+D,KAAK,WAAW;AAAA,UAChF,KAAK,gBAAgB,CAAC;AAAA;AAAA,UAEtB,KAAK,oBAAoB,WAAW,CAAC;AAAA;AAAA;AAAA,EAG7C;AACF;AA5Uc;AAAA,EAAXC,UAAS;AAAA,GAJC,YAIC;AAKA;AAAA,EAAXA,UAAS;AAAA,GATC,YASC;AAKyC;AAAA,EAApDA,UAAS,EAAE,MAAM,SAAS,WAAW,YAAY,CAAC;AAAA,GAdxC,YAc0C;AAKG;AAAA,EAAvDA,UAAS,EAAE,MAAM,SAAS,WAAW,eAAe,CAAC;AAAA,GAnB3C,YAmB6C;AAKA;AAAA,EAAvDA,UAAS,EAAE,MAAM,SAAS,WAAW,eAAe,CAAC;AAAA,GAxB3C,YAwB6C;AAK5C;AAAA,EAAXA,UAAS;AAAA,GA7BC,YA6BC;AAKgD;AAAA,EAA3DA,UAAS,EAAE,MAAM,SAAS,WAAW,mBAAmB,CAAC;AAAA,GAlC/C,YAkCiD;AAMR;AAAA,EAAnDA,UAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GAxCvC,YAwCyC;AAKM;AAAA,EAAzDA,UAAS,EAAE,MAAM,SAAS,WAAW,iBAAiB,CAAC;AAAA,GA7C7C,YA6C+C;AAKF;AAAA,EAAvDA,UAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB,CAAC;AAAA,GAlD3C,YAkD6C;AAKH;AAAA,EAApDA,UAAS,EAAE,MAAM,QAAQ,WAAW,aAAa,CAAC;AAAA,GAvDxC,YAuD0C;AAGpC;AAAA,EAAhB,MAAM;AAAA,GA1DI,YA0DM;AACA;AAAA,EAAhB,MAAM;AAAA,GA3DI,YA2DM;AA3DN,cAAN;AAAA,EADNC,mBAAkB,cAAc;AAAA,GACpB;;;AI1Bb,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,iBAAgB;AAEzB,OAAOC,kBAAiB;AAUjB,IAAM,eAAN,cAA2B,eAAe;AAAA,EAA1C;AAAA;AACuC,oBAAW;AACX,oBAAW;AACX,qBAAY;AAAA;AAAA,EAE/C,SAAS;AAChB,UAAM,OACJ;AACF,UAAM,QAAQ,KAAK,YAAY,yBAAyB;AACxD,UAAM,WAAW,KAAK,WAAW,2BAA2B;AAC5D,UAAM,WAAW,KAAK,WAAW,wCAAwC;AACzE,WAAOC,uBAAsB,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,eAAe,KAAK,QAAQ;AAAA,EAC7F;AACF;AAZ8C;AAAA,EAA3CC,UAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAD/B,aACiC;AACA;AAAA,EAA3CA,UAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAF/B,aAEiC;AACA;AAAA,EAA3CA,UAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAH/B,aAGiC;AAHjC,eAAN;AAAA,EADNC,mBAAkB,eAAe;AAAA,GACrB;AAgBN,IAAM,eAAN,cAA2B,eAAe;AAAA,EAA1C;AAAA;AAEwB,gBAAO;AACT,mBAA0B,CAAC;AAC1B,gBAC1B;AAqBF,SAAQ,iBAAiB,CAAC,MAAkB;AAC1C,UAAI,CAAC,KAAK,KAAM;AAChB,YAAM,OAAO,EAAE,aAAa;AAC5B,UAAI,CAAC,KAAK,SAAS,IAAI,EAAG,MAAK,MAAM;AAAA,IACvC;AAAA;AAAA,EAvBQ,aAAa;AACnB,SAAK,OAAO,CAAC,KAAK;AAAA,EACpB;AAAA,EAEQ,QAAQ;AACd,SAAK,OAAO;AAAA,EACd;AAAA,EAEQ,cAAc,KAAmB;AACvC,QAAI,IAAI,SAAU;AAClB,SAAK,QAAQ,IAAI;AACjB,SAAK,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,KAAK,CAAC,CAAC;AACzD,SAAK,MAAM;AAAA,EACb;AAAA,EAEQ,UAAU,GAAkB;AAClC,QAAI,EAAE,QAAQ,SAAU,MAAK,MAAM;AAAA,EACrC;AAAA,EAQS,oBAA0B;AACjC,UAAM,kBAAkB;AACxB,WAAO,iBAAiB,SAAS,KAAK,gBAAgB,EAAE,SAAS,KAAK,CAAC;AAAA,EACzE;AAAA,EAES,uBAA6B;AACpC,WAAO,oBAAoB,SAAS,KAAK,gBAAgB,EAAE,SAAS,KAAK,CAAC;AAC1E,UAAM,qBAAqB;AAAA,EAC7B;AAAA,EAES,UAAU;AAEjB,UAAM,iBAAiB,KAAK,kBAAkB;AAC9C,QAAI,gBAAgB;AAClB,WAAK,QAAQ,eAAe;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,oBAAoB;AAC1B,WAAO,KAAK,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,KAAK;AAAA,EACxD;AAAA,EAEQ,qBAA6B;AACnC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,gBAAgB,SAAiB;AACvC,UAAM,OAAO,KAAK,mBAAmB;AACrC,UAAM,YAAYC,aAAY,QAAQ,YAAY,CAAC;AACnD,WAAOH;AAAA;AAAA;AAAA;AAAA,gBAIK,SAAS;AAAA;AAAA,yBAEA,IAAI,aAAa,IAAI;AAAA;AAAA;AAAA;AAAA,EAI5C;AAAA,EAEQ,kBAAkB,QAAsB;AAC9C,WAAO,OAAO,MAAM,WAAW,IAAI,IAC/BA,8GAA6G,KAAK;AAAA,MAChH,OAAO;AAAA,IACT,CAAC,8EACC,OAAO,KACT,kBACAA,sBAAqB,OAAO,KAAK,UAAU,OAAO,KAAK;AAAA,EAC7D;AAAA,EAES,SAAS;AAChB,UAAM,iBAAiB,KAAK,kBAAkB;AAC9C,WAAOA;AAAA,4DACiD,KAAK,SAAS;AAAA,0LAEhE,KAAK,UACP,0CAA0C,KAAK,IAAI;AAAA,sDACL,KAAK;AAAA;AAAA,sBAErC,iBAAiB,KAAK,kBAAkB,cAAc,IAAI,eAAe;AAAA,wDACvC,KAAK,OAAO,eAAe,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAO3E,KAAK,QAAQ,KAAK,QAAQ,SAAS,IAC/BA;AAAA,gBACE,KAAK,QAAQ;AAAA,MACb,CACE,QACGA,iCAAgC,IAAI,UAAU,KAAK,KAAK,cAAc,IAAI,QAAQ,WAAW,MAAM,KAAK,cAAc,GAAG,CAAC;AAAA,gBAC/H,KAAK,kBAAkB,GAAG,CAAC;AAAA;AAAA,IAE7B,CAAC;AAAA,sBAED,EACN;AAAA;AAAA;AAAA,EAGN;AACF;AA7Hc;AAAA,EAAXC,UAAS;AAAA,GADC,aACC;AACiB;AAAA,EAA5BA,UAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAFhB,aAEkB;AACF;AAAA,EAA1BA,UAAS,EAAE,MAAM,MAAM,CAAC;AAAA,GAHd,aAGgB;AACC;AAAA,EAA3BA,UAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJf,aAIiB;AAJjB,eAAN;AAAA,EADNC,mBAAkB,eAAe;AAAA,GACrB;;;AC9Bb,SAAS,qBAAAE,0BAAyB;AAClC,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,iBAAgB;AAalB,IAAM,mBAAN,cAA+B,eAAe;AAAA,EAA9C;AAAA;AAKO,iBAAQ;AACR,gBAAe;AACf,gBAAiD;AAAA;AAAA,EAGrD,aAAqB;AAC3B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,cAAsB;AAC5B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,cAAwD;AAC9D,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,YAAoB;AAC1B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAES,SAAS;AAChB,WAAOC;AAAA,gCACqB,KAAK,UAAU,CAAC,2GAA2G,KAAK,WAAW,CAAC,eAAe,KAAK,YAAY,CAAC;AAAA,2BAClL,KAAK,IAAI,SAAS,KAAK,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE;AAAA,gDACzC,KAAK,KAAK;AAAA;AAAA;AAAA,EAGxD;AACF;AA9Dc;AAAA,EAAXC,UAAS;AAAA,GALC,iBAKC;AACA;AAAA,EAAXA,UAAS;AAAA,GANC,iBAMC;AACA;AAAA,EAAXA,UAAS;AAAA,GAPC,iBAOC;AACsB;AAAA,EAAjCA,UAAS,EAAE,WAAW,QAAQ,CAAC;AAAA,GARrB,iBAQuB;AARvB,mBAAN;AAAA,EADNC,mBAAkB,oBAAoB;AAAA,GAC1B;;;ACfb,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,iBAAgB;AAgBlB,IAAM,kBAAN,cAA8B,eAAe;AAAA,EAA7C;AAAA;AACqC,uBAAyB,CAAC;AACzB,mBAAU;AAOH,kBAAiB;AACxB,oBAAW;AAEtD,0BAAiB;AAEjB,4BAAmB;AAEnB,uBAAc;AAEd,2BAAkB;AAElB,4BAA2B;AAAA;AAAA,EAEnB,YAAY,QAAgB;AAElC,YAAQ,SAAS,MAAM,KAAK,UAAU,eAAe,QAAW;AAAA,MAC9D,uBAAuB;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEQ,gBAAgB,GAAU;AAChC,UAAM,QAAS,EAAE,OAAe;AAChC,QAAI,CAAC,MAAO;AACZ,QAAI,KAAK,qBAAqB,UAAU,KAAK,mBAAmB;AAC9D,YAAM,OAAoB;AAAA,QACxB,MAAM;AAAA,QACN,IAAI,KAAK;AAAA,MACX;AACA,UACE,CAAC,KAAK,uBACN,KAAK,oBAAoB,OAAO,KAAK,MACrC,KAAK,oBAAoB,SAAS,KAAK,MACvC;AACA,aAAK,sBAAsB;AAC3B,aAAK;AAAA,UACH,IAAI,YAAY,0BAA0B;AAAA,YACxC,QAAQ;AAAA,YACR,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,QAAQ,KAAK,YAAY;AAAA,MAC7B,CAAC,MAAM,EAAE,YAAY,SAAS,EAAE,WAAW;AAAA,IAC7C;AACA,QAAI,OAAO;AACT,YAAM,OAAoB,EAAE,MAAM,WAAW,IAAI,MAAM,GAAG;AAC1D,UACE,CAAC,KAAK,uBACN,KAAK,oBAAoB,OAAO,KAAK,MACrC,KAAK,oBAAoB,SAAS,KAAK,MACvC;AACA,aAAK,sBAAsB;AAC3B,aAAK;AAAA,UACH,IAAI,YAAY,0BAA0B;AAAA,YACxC,QAAQ;AAAA,YACR,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AACA;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,eACN,gBACA,MACA,UACA,QACA,UACA;AACA,UAAM,cAAc,iBAAkB,OAAO,iBAAkB,MAAM;AACrE,UAAM,kBAAkB,iBACnB,WAAW,iBAAkB,MAC9B;AACJ,UAAM,cAAc,cAAc;AAClC,WAAOC;AAAA,oBACS,WAAW,UAAU,EAAE;AAAA,oBACvB;AAAA,MACN;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO,GAAG,WAAW;AAAA,MACvB;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO,GAAG,eAAe;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,6BACgB,cAAc,SAAS,OAAO;AAAA,qBACtC,GAAG,QAAQ,MAAM,OAAO,cAAc,CAAC,IAAI,MAAM,EAAE;AAAA;AAAA;AAAA,EAGtE;AAAA,EAEQ,2BAA2B;AACjC,WAAO,KAAK;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,iBAAiB,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EAEQ,wBAAwB;AAC9B,WAAO,KAAK;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA,KAAK,kBAAkB,KAAK;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,0BAA0B;AAChC,UAAM,OAAO,IAAI,KAAK,KAAK,gBAAgB;AAC3C,WAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,QAAQ,KAAK,mBAAmB;AAAA,EACxE;AAAA,EAES,SAAS;AAChB,UAAM,YAAY,KAAK,YAAY,KAAK,OAAO;AAG/C,UAAM,iBAAiB,KAAK,YAAY,IAAI,CAAC,OAAO;AAAA,MAClD,OAAO,EAAE,WAAW,EAAE,UAAU,WAAW,EAAE,EAAE;AAAA,MAC/C,OAAO,EAAE;AAAA,MACT,UAAU;AAAA,IACZ,EAAE;AACF,UAAM,mBAAmB,KAAK,oBAC1B;AAAA,MACE;AAAA,QACE,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK,iBACR,GAAG,KAAK,cAAc,KAAK,SAAS,IAAI,KAAK,MAAM,MACnD,yBAAyB,SAAS,IAAI,KAAK,MAAM;AAAA,QACrD,UAAU;AAAA,MACZ;AAAA,IACF,IACA,CAAC;AACL,UAAM,UAAU,CAAC,GAAG,gBAAgB,GAAG,gBAAgB;AAEvD,UAAM,gBAAgB,KAAK,sBACvB,KAAK,oBAAoB,SAAS,eAChC,KAAK,qBACJ,MAAM;AACL,YAAM,IAAI,KAAK,YAAY;AAAA,QACzB,CAAC,MAAM,EAAE,OAAO,KAAK,qBAAqB;AAAA,MAC5C;AACA,aACE,GAAG,WACH,GAAG,UACH,WAAW,KAAK,qBAAqB,EAAE;AAAA,IAE3C,GAAG,IACL;AAEJ,WAAOA;AAAA;AAAA,gCAEqB,aAAa,aAAa,OAAO,YAAY,KAAK,eAAe;AAAA,YAErF,KAAK,sBACDA;AAAA,YACJ,KAAK,qBAAqB,SAAS,eAAe,KAAK,yBAAyB,IAAI,KAAK,sBAAsB,CAAC;AAAA,YAEhH,KAAK,qBAAqB,SAAS,YAC/BA;AAAA,0BACU,KAAK,gBAAgB,eAAe,KAAK,wBAAwB,CAAC;AAAA,mBAE5EA,OACN;AAAA,kBAEMA,OACN;AAAA;AAAA;AAAA;AAAA,EAIR;AACF;AA7L4C;AAAA,EAAzCC,UAAS,EAAE,MAAM,OAAO,SAAS,KAAK,CAAC;AAAA,GAD7B,gBAC+B;AACC;AAAA,EAA1CA,UAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAF9B,gBAEgC;AAE3C;AAAA,EADCA,UAAS,EAAE,MAAM,QAAQ,WAAW,yBAAyB,SAAS,KAAK,CAAC;AAAA,GAHlE,gBAIX;AAEA;AAAA,EADCA,UAAS,EAAE,WAAW,sBAAsB,SAAS,KAAK,CAAC;AAAA,GALjD,gBAMX;AAEA;AAAA,EADCA,UAAS,EAAE,WAAW,mBAAmB,SAAS,KAAK,CAAC;AAAA,GAP9C,gBAQX;AACkD;AAAA,EAAjDA,UAAS,EAAE,WAAW,UAAU,SAAS,KAAK,CAAC;AAAA,GATrC,gBASuC;AACP;AAAA,EAA1CA,UAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAV9B,gBAUgC;AAE3C;AAAA,EADCA,UAAS,EAAE,MAAM,QAAQ,WAAW,mBAAmB,SAAS,KAAK,CAAC;AAAA,GAX5D,gBAYX;AAEA;AAAA,EADCA,UAAS,EAAE,MAAM,QAAQ,WAAW,qBAAqB,SAAS,KAAK,CAAC;AAAA,GAb9D,gBAcX;AAEA;AAAA,EADCA,UAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB,SAAS,KAAK,CAAC;AAAA,GAfzD,gBAgBX;AAEA;AAAA,EADCA,UAAS,EAAE,MAAM,QAAQ,WAAW,sBAAsB,SAAS,KAAK,CAAC;AAAA,GAjB/D,gBAkBX;AAEA;AAAA,EADCA,UAAS,EAAE,WAAW,sBAAsB,SAAS,KAAK,CAAC;AAAA,GAnBjD,gBAoBX;AApBW,kBAAN;AAAA,EADNC,mBAAkB,mBAAmB;AAAA,GACzB;;;AClBb,SAAS,QAAAC,aAAY;AACrB,SAAS,qBAAAC,0BAAyB;AAClC;AAAA,EAEE,sBAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AACP,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,iBAAgB;AA0ClB,IAAM,WAAN,cAAuB,eAAe;AAAA,EAAtC;AAAA;AAcO,gBACV;AAUmD,oBAAW;AAKtB,wBACxC;AAKkD,oBAAW;AAM/D,6BAAoB;AAMpB,8BAAqB;AAKuC,2BAC1D;AAeF;AAAA,SAAQ,cAAcC,gBAAe;AACrC,SAAQ,kBAAkBC,oBAAmB;AAC7C,4BAAmB;AACnB,0BAAiB;AAGjB;AAAA,SAAQ,cAAc,IAAIC,MAAK,MAAM;AAAA,MACnC,MAAM,OAAO,CAAC,OAAO,MAAM;AACzB,YAAI,CAAC,QAAS,QAAO;AAErB,aAAK,mBAAmB;AACxB,YAAI;AAEF,gBAAM,WAAW,MAAM,KAAK,gBAAgB,eAAe,OAAO;AAClE,eAAK,cAAc;AACnB,iBAAO;AAAA,QACT,SAAS,OAAO;AACd,kBAAQ,KAAK,+CAA0C,KAAK;AAC5D,iBAAO;AAAA,QACT,UAAE;AACA,eAAK,mBAAmB;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,OAAO;AAAA,IAC3B,CAAC;AAGD;AAAA,SAAQ,YAAY,IAAIA,MAAK,MAAM;AAAA,MACjC,MAAM,OAAO,CAAC,QAAQ,MAAM;AAC1B,YAAI,CAAC,SAAU,QAAO;AAEtB,aAAK,iBAAiB;AACtB,YAAI;AACF,cAAI,QAA4B;AAGhC,cAAI,KAAK,aAAc,SAAiB,KAAK,SAAS,GAAG;AACvD,kBAAM,aAAc,SAAiB,KAAK,SAAS;AACnD,gBAAI,MAAM,QAAQ,UAAU,KAAK,WAAW,SAAS,GAAG;AACtD,sBAAQ,MAAM,KAAK,YAAY,UAAU,YAAY;AAAA,gBACnD,OAAO,KAAK,cAAc;AAAA,gBAC1B,QAAQ,KAAK,cAAc;AAAA,gBAC3B,KAAK,OAAO,oBAAoB;AAAA,gBAChC,OAAO,KAAK;AAAA,cACd,CAAC;AAAA,YACH;AAAA,UACF,OAAO;AAEL,oBAAQ,MAAM,KAAK,YAAY,iBAAiB,UAAU;AAAA,cACxD,OAAO,KAAK,cAAc;AAAA,cAC1B,QAAQ,KAAK,cAAc;AAAA,cAC3B,KAAK,OAAO,oBAAoB;AAAA,cAChC,OAAO,KAAK;AAAA,YACd,CAAC;AAAA,UACH;AAEA,iBAAO,SAAS,KAAK,YAAY,iBAAiB,QAAQ;AAAA,QAC5D,SAAS,OAAO;AACd,kBAAQ,KAAK,iCAAiC,KAAK;AACnD,iBAAO,KAAK,YAAY,iBAAiB,YAAY,CAAC,CAAC;AAAA,QACzD,UAAE;AACA,eAAK,iBAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,YAAY,KAAK;AAAA,IACrC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKO,gBAAwB;AAC9B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAY,aAAsB;AAChC,UAAM,WAAW,KAAK,YAAY;AAClC,WAAO,WAAW,KAAK,YAAY,kBAAkB,QAAQ,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc;AACpB,SAAK;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,QAAQ;AAAA,UACN,SAAS,KAAK;AAAA,UACd,UAAU,KAAK,YAAY;AAAA,QAC7B;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAES,SAAS;AAChB,UAAM,cAAc,KAAK,UAAU;AAEnC,UAAM,iBAAiB,KAAK,iBAAiB,WAAW,QAAQ;AAChE,WAAOC;AAAA,oBAEH,mBAAmB,QACf,2BACA,kCACN;AAAA,UAEI,KAAK,QACDA,6DACE,KAAK,KACP,WACA,EACN;AAAA;AAAA,sBAGE,KAAK,iBAAiB,WAClB,4CACA,2CACN;AAAA;AAAA,mBAEW,KAAK,IAAI;AAAA,8BACE,KAAK,OAAO;AAAA,0BAChB,aAAa,OAAO,EAAE;AAAA,6BACnB,KAAK,iBAAiB;AAAA,yBAC1B,KAAK,UAAU;AAAA;AAAA,qBAEnB,KAAK,WAAW;AAAA;AAAA;AAAA,YAIzB,KAAK,WACDA;AAAA;AAAA;AAAA,4BAGY,KAAK,OAAO;AAAA,mCACL,KAAK,kBAAkB;AAAA,yBACjC,KAAK,IAAI;AAAA,8BACJ,KAAK,QAAQ;AAAA;AAAA,kBAG3B,EACN;AAAA;AAAA;AAAA;AAAA,EAIR;AACF;AAjOc;AAAA,EAAXC,UAAS;AAAA,GAJC,SAIC;AAKgB;AAAA,EAA3BA,UAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GATf,SASiB;AAKhB;AAAA,EAAXA,UAAS;AAAA,GAdC,SAcC;AAMA;AAAA,EAAXA,UAAS;AAAA,GApBC,SAoBC;AAKyC;AAAA,EAApDA,UAAS,EAAE,MAAM,SAAS,WAAW,YAAY,CAAC;AAAA,GAzBxC,SAyB0C;AAKX;AAAA,EAAzCA,UAAS,EAAE,WAAW,gBAAgB,CAAC;AAAA,GA9B7B,SA8B+B;AAMU;AAAA,EAAnDA,UAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GApCvC,SAoCyC;AAMpD;AAAA,EADCA,UAAS,EAAE,MAAM,SAAS,WAAW,sBAAsB,CAAC;AAAA,GAzClD,SA0CX;AAMA;AAAA,EADCA,UAAS,EAAE,MAAM,SAAS,WAAW,uBAAuB,CAAC;AAAA,GA/CnD,SAgDX;AAK4D;AAAA,EAA3DA,UAAS,EAAE,MAAM,SAAS,WAAW,mBAAmB,CAAC;AAAA,GArD/C,SAqDiD;AAOP;AAAA,EAApDA,UAAS,EAAE,MAAM,QAAQ,WAAW,aAAa,CAAC;AAAA,GA5DxC,SA4D0C;AAMC;AAAA,EAArDA,UAAS,EAAE,MAAM,QAAQ,WAAW,cAAc,CAAC;AAAA,GAlEzC,SAkE2C;AAlE3C,WAAN;AAAA,EADNC,mBAAkB,WAAW;AAAA,GACjB;;;AClDb;AAAA,EAIE,kBAAkB;AAAA,OACb;AAiBA,IAAM,wBAAN,MAA0D;AAAA,EAW/D,YAAY,MAA8B;AAT1C,SAAQ,iBAAiB,uBAAuB;AAGhD;AAAA,SAAQ,SAAyB;AAAA,MAC/B,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAGE,SAAK,OAAO;AACZ,SAAK,cAAc,IAAI;AAAA,EACzB;AAAA,EAEA,gBAAgB;AAAA,EAEhB;AAAA,EAEA,mBAAmB;AAAA,EAEnB;AAAA,EAEA,IAAI,QAAwB;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,QAAuB;AACzB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,SAA6B;AAC/B,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UACJ,WACA,UAA4B,CAAC,GACA;AAC7B,SAAK,YAAY,EAAE,SAAS,MAAM,OAAO,KAAK,CAAC;AAE/C,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,eAAe,UAAU,WAAW,OAAO;AACrE,WAAK,YAAY,EAAE,QAAQ,SAAS,MAAM,CAAC;AAC3C,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,YAAM,QAAQ,eAAe,QAAQ,IAAI,UAAU;AACnD,WAAK,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAC1C,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBACJ,aACA,UAA4B,CAAC,GACA;AAC7B,SAAK,YAAY,EAAE,SAAS,MAAM,OAAO,KAAK,CAAC;AAE/C,QAAI;AACF,YAAM,SACH,MAAM,KAAK,eAAe,iBAAiB,aAAa,OAAO,KAChE,KAAK,eAAe,iBAAiB,WAAW;AAElD,WAAK,YAAY,EAAE,QAAQ,SAAS,MAAM,CAAC;AAC3C,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,YAAM,QACJ,eAAe,QAAQ,IAAI,UAAU;AACvC,YAAM,WAAW,KAAK,eAAe,iBAAiB,WAAW;AACjE,WAAK,YAAY,EAAE,QAAQ,UAAU,SAAS,OAAO,MAAM,CAAC;AAC5D,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,eACE,eACA,UAA4B,CAAC,GACvB;AACN,UAAM,cAAc,cAAc,OAAO;AAEzC,QAAI,CAAC,aAAa;AAChB,YAAM,WAAW,KAAK,eAAe,iBAAiB,CAAC,CAAC;AACxD,WAAK,YAAY,EAAE,QAAQ,UAAU,SAAS,OAAO,OAAO,KAAK,CAAC;AAClE;AAAA,IACF;AAEA,SAAK,iBAAiB,aAAa,OAAO;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,aAA4C;AAC3D,WAAO,KAAK,eAAe,iBAAiB,WAAW;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,aAAwC;AACxD,WAAO,KAAK,eAAe,kBAAkB,WAAW;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,SAAK,YAAY,EAAE,QAAQ,MAAM,SAAS,OAAO,OAAO,KAAK,CAAC;AAAA,EAChE;AAAA,EAEQ,YAAY,SAAwC;AAC1D,SAAK,SAAS,EAAE,GAAG,KAAK,QAAQ,GAAG,QAAQ;AAC3C,SAAK,KAAK,cAAc;AAAA,EAC1B;AACF;AAKO,SAASC,gBACd,MACuB;AACvB,SAAO,IAAI,sBAAsB,IAAI;AACvC;;;AC/JA,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,WAAU,SAAAC,cAAa;AAKzB,IAAM,mBAAN,cAA+B,eAAe;AAAA,EAA9C;AAAA;AAEO,mBAAoD;AAGpD,mBAAU;AAGV,iBAAQ;AAGuC,2BACzD;AAG2C,2BAC3C;AAGO,SAAQ,eAAe;AAGY,mBAAU;AAAA;AAAA,EAE9C,wBAAwB,GAAU;AACxC,MAAE,gBAAgB;AAClB,UAAM,SAAc,EAAE;AACtB,UAAM,UAAU,CAAC,EAAE,QAAQ,WAAY,EAAU,QAAQ,WAAW;AACpE,QAAI,YAAY,KAAK,SAAS;AAC5B,WAAK,UAAU;AAAA,IACjB;AACA,QAAI,KAAK,SAAS;AAChB,WAAK,eAAe;AACpB,WAAK;AAAA,QACH,IAAI,YAAY,6BAA6B;AAAA,UAC3C,QAAQ;AAAA,YACN,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,YACd,OAAO,KAAK;AAAA,YACZ,SAAS,KAAK;AAAA,UAChB;AAAA,UACA,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAES,SAAS;AAChB,QAAI,KAAK,aAAc,QAAOC;AAE9B,WAAOA;AAAA,4GACiG,KAAK,0BAA0B,CAAC;AAAA;AAAA,4BAEhH,KAAK,WAAW,CAAC,yBAAyB,KAAK,gBAAgB,CAAC;AAAA;AAAA;AAAA,YAIhF,KAAK,QACDA,gFAA+E,KAAK,KAAK,WACzF,EACN;AAAA,+CACqC,KAAK,OAAO;AAAA,YAE/C,KAAK,kBACDA;AAAA;AAAA;AAAA;AAAA,+BAIe,KAAK,OAAO;AAAA,8BACb,KAAK,uBAAuB;AAAA,gEACM,KAAK,eAAe;AAAA;AAAA,kBAGpE,EACN;AAAA;AAAA;AAAA;AAAA,EAIR;AAAA,EAEQ,aAAa;AACnB,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,kBAAkB;AACxB,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,4BAA4B;AAClC,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AACF;AApHc;AAAA,EAAXC,UAAS;AAAA,GAFC,iBAEC;AAGA;AAAA,EAAXA,UAAS;AAAA,GALC,iBAKC;AAGA;AAAA,EAAXA,UAAS;AAAA,GARC,iBAQC;AAG+C;AAAA,EAA1DA,UAAS,EAAE,MAAM,SAAS,WAAW,kBAAkB,CAAC;AAAA,GAX9C,iBAWgD;AAId;AAAA,EAA5CA,UAAS,EAAE,WAAW,mBAAmB,CAAC;AAAA,GAfhC,iBAekC;AAI5B;AAAA,EAAhBC,OAAM;AAAA,GAnBI,iBAmBM;AAG2B;AAAA,EAA3CD,UAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAtB/B,iBAsBiC;AAtBjC,mBAAN;AAAA,EADNE,mBAAkB,mBAAmB;AAAA,GACzB;;;ACPb,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,iBAAgB;AAUlB,IAAM,eAAN,cAA2B,eAAe;AAAA,EAA1C;AAAA;AACsB,gBAA0B,CAAC;AAIX,yBACzC;AAAA;AAAA,EAEM,yBAAyB;AAC/B,WAAOC;AAAA,MAEL,KAAK,QACDA;AAAA,+CACqC,KAAK,KAAK;AAAA,YAE7C,KAAK,OACDA,6DAA4D,KAAK,IAAI,YACrE,EACN;AAAA,YAEAA;AAAA;AAAA,YAGE,KAAK,OACDA,6DAA4D,KAAK,IAAI,YACrE,EACN;AAAA,SAEN;AAAA;AAAA,EAEF;AAAA,EAES,SAAS;AAChB,UAAM,WAAW,KAAK,aAAa,IAAI,MAAM,KAAK,EAAE,SAAS,OAAO;AACpE,WAAOA;AAAA,yCAC8B,KAAK,aAAa,EAAE;AAAA,wGAC2C,UAAU,qCAAqC,EAAE;AAAA,YAC7I,KAAK,KAAK,IAAI,CAAC,KAAK,UAAU;AAC9B,YAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AACnE,YAAM,kBAAkB,IAAI,SAAS;AACrC,YAAM,QAAQ,IAAI,SAAS;AAC3B,aAAOA;AAAA;AAAA,sBAEG,SAAS,KAAK,qBAAqB,eAAe,GAAG;AAAA,4BAC/C,SAAS,KAAK,EAAE;AAAA,eAC7B,KAAK;AAAA,IACV,CAAC,CAAC;AAAA;AAAA,qBAES,kGACX,KAAK,kBAAkB,SAAS,kBAAkB,aACpD,EAAE;AAAA;AAAA,cAEI,KAAK,uBAAuB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzC;AACF;AAzD6B;AAAA,EAA1BC,UAAS,EAAE,MAAM,MAAM,CAAC;AAAA,GADd,aACgB;AACf;AAAA,EAAXA,UAAS;AAAA,GAFC,aAEC;AACA;AAAA,EAAXA,UAAS;AAAA,GAHC,aAGC;AACA;AAAA,EAAXA,UAAS;AAAA,GAJC,aAIC;AAC+B;AAAA,EAA1CA,UAAS,EAAE,WAAW,iBAAiB,CAAC;AAAA,GAL9B,aAKgC;AALhC,eAAN;AAAA,EADNC,mBAAkB,eAAe;AAAA,GACrB;;;ACZb,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,iBAAgB;AAQlB,IAAM,uBAAN,cAAmC,eAAe;AAAA,EAAlD;AAAA;AAE2C,gBAAO;AAG3C,iBAAgB;AAGU,oBAIxB;AAGwB,oBAAmB;AAAA;AAAA,EAEjD,cAAc;AACpB,SAAK,cAAc,IAAI,YAAY,oBAAoB,EAAE,SAAS,KAAK,CAAC,CAAC;AAAA,EAC3E;AAAA,EAES,SAAS;AAChB,WAAOC;AAAA,4PAEH,KAAK,OAAO,qBAAqB,iBACnC;AAAA,oMAEI,KAAK,WACP;AAAA;AAAA,qBAEa,KAAK,QAAQ;AAAA,qBACb,KAAK,QAAQ;AAAA,sBACZ,KAAK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B;AACF;AApCkD;AAAA,EAA/CC,UAAS,EAAE,MAAM,SAAS,WAAW,OAAO,CAAC;AAAA,GAFnC,qBAEqC;AAGpC;AAAA,EAAXA,UAAS;AAAA,GALC,qBAKC;AAG0B;AAAA,EAArCA,UAAS,EAAE,WAAW,YAAY,CAAC;AAAA,GARzB,qBAQ2B;AAOA;AAAA,EAArCA,UAAS,EAAE,WAAW,YAAY,CAAC;AAAA,GAfzB,qBAe2B;AAf3B,uBAAN;AAAA,EADNC,mBAAkB,yBAAyB;AAAA,GAC/B;;;ACHN,IAAM,mBAAN,MAAM,kBAAwD;AAAA,EAKnE,YAAY,MAA8B,QAAmB;AAC3D,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,cAAc,IAAI;AAAA,EACzB;AAAA,EAEA,gBAAgB;AAGd,QAAI,YAAY,KAAK,OAAO;AAE5B,UAAM,QAAQ,MAAM;AAClB,YAAM,eAAe,KAAK,OAAO;AACjC,UAAI,iBAAiB,WAAW;AAC9B,oBAAY;AACZ,aAAK,KAAK,cAAc;AAAA,MAC1B;AAAA,IACF;AAGA,UAAM,WAAW,YAAY,OAAO,EAAE;AAEtC,SAAK,cAAc,MAAM,cAAc,QAAQ;AAAA,EACjD;AAAA,EAEA,mBAAmB;AACjB,QAAI,KAAK,aAAa;AACpB,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,IAAI,QAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OACL,MACA,QACqB;AACrB,WAAO,IAAI,kBAAiB,MAAM,MAAM;AAAA,EAC1C;AACF;AAMO,IAAM,wBAAN,MAA0D;AAAA,EAK/D,YAAY,MAA8B,SAAwB;AAFlE,SAAQ,eAA+B,CAAC;AAGtC,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,cAAc,IAAI;AAAA,EACzB;AAAA,EAEA,gBAAgB;AACd,SAAK,QAAQ,QAAQ,CAAC,QAAQ,UAAU;AACtC,UAAI,YAAY,OAAO;AAEvB,YAAM,QAAQ,MAAM;AAClB,cAAM,eAAe,OAAO;AAC5B,YAAI,iBAAiB,WAAW;AAC9B,sBAAY;AACZ,eAAK,KAAK,cAAc;AAAA,QAC1B;AAAA,MACF;AAEA,YAAM,WAAW,YAAY,OAAO,EAAE;AACtC,WAAK,aAAa,KAAK,IAAI,MAAM,cAAc,QAAQ;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EAEA,mBAAmB;AACjB,SAAK,aAAa,QAAQ,CAAC,gBAAgB;AACzC,kBAAY;AAAA,IACd,CAAC;AACD,SAAK,eAAe,CAAC;AAAA,EACvB;AAAA,EAEA,SAAS,OAAoB;AAC3B,WAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,EAC9B;AAAA,EAEA,YAAmB;AACjB,WAAO,KAAK,QAAQ,IAAI,CAAC,WAAW,OAAO,KAAK;AAAA,EAClD;AACF;AAKO,SAAS,UACd,MACA,QACqB;AACrB,SAAO,IAAI,iBAAiB,MAAM,MAAM;AAC1C;AAKO,SAAS,WACd,MACA,SACuB;AACvB,SAAO,IAAI,sBAAsB,MAAM,OAAO;AAChD;;;AC5HA;AAAA,EACE;AAAA,EACA;AAAA,EAEA,sBAAsB;AAAA,OAEjB;AAqBA,IAAM,4BAAN,MAA8D;AAAA,EAiBnE,YACE,MACQ,aACA,SACR;AAFQ;AACA;AAlBV,SAAQ,mBAAwB;AAGhC;AAAA,SAAQ,SAA+B;AAAA,MACrC,SAAS,CAAC;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,sBAAsB;AAAA,MACtB,mBAAmB,CAAC;AAAA,IACtB;AASE,SAAK,OAAO;AACZ,SAAK,cAAc,IAAI;AACvB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,gBAAgB;AAEd,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,mBAAmB;AAEjB,QAAI,KAAK,cAAc;AACrB,oBAAc,KAAK,YAAY;AAC/B,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,IAAI,QAA8B;AAChC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,UAAuB;AACzB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,YAA8B;AAChC,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,YAAiB;AACnB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,QAAsB;AACxB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,uBAAgC;AAClC,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,oBAAyC;AAC3C,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,OAAgC;AAC9C,QAAI,CAAC,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,iBAAiB,UAAU,KAAK;AAC1D,WAAK,UAAU;AACf,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,WAAK,UAAU;AACf,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAA8B;AAClC,QAAI,CAAC,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,iBAAiB,cAAc;AACzD,WAAK,UAAU;AACf,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,WAAK,UAAU;AACf,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAuB;AACrB,QAAI,CAAC,KAAK,kBAAkB;AAC1B,cAAQ,KAAK,0DAA0D;AACvE;AAAA,IACF;AAEA,SAAK,iBAAiB,eAAe;AACrC,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAkC;AACtC,QAAI,CAAC,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,QAAI;AACF,YAAM,KAAK,iBAAiB,iBAAiB;AAC7C,WAAK,UAAU;AAAA,IACjB,SAAS,KAAK;AACZ,WAAK,UAAU;AACf,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aAA4B,SAA0C;AAC3E,SAAK,cAAc;AACnB,SAAK,UAAU;AACf,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,cACL,aACA,YAA0B,OACR;AAClB,WAAO,wBAAwB,aAAa,SAAS;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,eACL,aACA,YAA0B,OACb;AACb,WAAO,wBAAwB,aAAa,SAAS;AAAA,EACvD;AAAA,EAEQ,aAAmB;AACzB,QAAI;AACF,WAAK,mBAAmB;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AACA,WAAK,UAAU;AAAA,IACjB,SAAS,KAAK;AACZ,WAAK,YAAY;AAAA,QACf,OACE,eAAe,QACX,MACA,IAAI,MAAM,uCAAuC;AAAA,MACzD,CAAC;AACD,cAAQ,MAAM,0CAA0C,GAAG;AAAA,IAC7D;AAAA,EACF;AAAA,EAEQ,YAAkB;AAExB,SAAK,UAAU;AAGf,SAAK,eAAe,YAAY,MAAM;AACpC,WAAK,UAAU;AAAA,IACjB,GAAG,GAAG;AAAA,EACR;AAAA,EAEQ,YAAkB;AACxB,QAAI,CAAC,KAAK,iBAAkB;AAE5B,SAAK,YAAY;AAAA,MACf,SAAS,KAAK,iBAAiB;AAAA,MAC/B,WAAW,KAAK,iBAAiB;AAAA,MACjC,WAAW,KAAK,iBAAiB;AAAA,MACjC,SAAS,KAAK,iBAAiB;AAAA,MAC/B,OAAO,KAAK,iBAAiB;AAAA,MAC7B,sBAAsB,KAAK,iBAAiB;AAAA,MAC5C,mBAAmB,KAAK,iBAAiB;AAAA,IAC3C,CAAC;AAAA,EACH;AAAA,EAEQ,YAAY,SAA8C;AAChE,SAAK,SAAS,EAAE,GAAG,KAAK,QAAQ,GAAG,QAAQ;AAC3C,SAAK,KAAK,cAAc;AAAA,EAC1B;AACF;AAKO,SAAS,mBACd,MACA,aACA,SAC2B;AAC3B,SAAO,IAAI,0BAA0B,MAAM,aAAa,OAAO;AACjE;AAKO,IAAM,8BAAN,MAEP;AAAA,EAaE,YACE,MACA,QACA;AAPF,SAAQ,QAA8B;AACtC,SAAQ,WAAW;AACnB,SAAQ,SAAwB;AAM9B,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,cAAc,IAAI;AAAA,EACzB;AAAA,EAEA,gBAAgB;AACd,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,mBAAmB;AACjB,QAAI,KAAK,aAAa;AACpB,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,IAAI,OAA6B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,QAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,CAAC,KAAK,YAAY,KAAK,UAAU,QAAQ,CAAC,KAAK;AAAA,EACxD;AAAA,EAEQ,kBAAwB;AAC9B,UAAM,OAAO,MAAM;AACjB,YAAM,cAAc,KAAK,OAAO;AAChC,YAAM,UAAU,aAAa,QAAQ;AACrC,YAAM,aAAa,aAAa,WAAW;AAC3C,YAAM,WAAW,aAAa,SAAS;AAEvC,UACE,YAAY,KAAK,SACjB,eAAe,KAAK,YACpB,aAAa,KAAK,QAClB;AACA,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB,aAAK,SAAS;AACd,aAAK,KAAK,cAAc;AAAA,MAC1B;AAAA,IACF;AAGA,SAAK;AAGL,UAAM,WAAW,YAAY,MAAM,EAAE;AACrC,SAAK,cAAc,MAAM,cAAc,QAAQ;AAAA,EACjD;AACF;AAKO,SAAS,qBACd,MACA,QAC6B;AAC7B,SAAO,IAAI,4BAA4B,MAAM,MAAM;AACrD;;;ACxVA,SAAS,qBAAAC,2BAAyB;AAClC,SAAS,QAAAC,cAAY;AACrB,SAAS,YAAAC,YAAU,SAAAC,cAAa;AAgBzB,IAAM,UAAN,cAAsB,eAAe;AAAA,EAArC;AAAA;AAEO,gBAAiD;AAER,oBAAW;AAEZ,oBAAW;AAGtD,SAAQ,cAAc;AAC/B,SAAQ,oBAA8B,CAAC;AACvC,SAAQ,eAAe;AAAA;AAAA,EAEb,WAAW,SAA+B;AAClD,QAAI,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,SAAS,GAAG;AACxE,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEQ,cAAc;AACpB,QAAI;AACF,YAAM,IAAI,IAAI,IAAI,KAAK,GAAG;AAC1B,YAAM,SAAS,EAAE;AACjB,WAAK,oBAAoB,CAAC;AAC1B,UAAI,KAAK,QAAS,MAAK,kBAAkB,KAAK,KAAK,OAAO;AAC1D,WAAK,kBAAkB;AAAA,QACrB,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,MACX;AACA,WAAK,eAAe;AACpB,WAAK,UAAU,KAAK,kBAAkB,KAAK,YAAY;AACvD,YAAM,WAAW,EAAE,SAAS,QAAQ,UAAU,EAAE;AAChD,YAAM,iBAAiB,SACpB,MAAM,GAAG,EACT,OAAO,OAAO,EACd,MAAM,EAAE,EACR,KAAK,GAAG,EACR,QAAQ,MAAM,GAAG,EACjB,QAAQ,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;AAE1C,UAAI,KAAK,OAAO,KAAK,GAAG;AACtB,aAAK,cAAc,KAAK,MAAM,KAAK;AAAA,MACrC,OAAO;AACL,aAAK,cAAc,kBAAkB,KAAK;AAAA,MAC5C;AAAA,IACF,QAAQ;AACN,WAAK,UAAU;AAEf,WAAK,cAAc,KAAK,OAAO,KAAK,IAAI,KAAK,QAAQ,KAAK;AAAA,IAC5D;AAAA,EACF;AAAA,EAEQ,mBAAmB;AACzB,SAAK,gBAAgB;AACrB,QAAI,KAAK,eAAe,KAAK,kBAAkB,QAAQ;AACrD,WAAK,UAAU,KAAK,kBAAkB,KAAK,YAAY;AAAA,IACzD,OAAO;AACL,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AAAA,EAEQ,gBAAwB;AAC9B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAES,SAAS;AAChB,UAAM,SAAS,KAAK,cAAc;AAClC,WAAOC;AAAA;AAAA;AAAA,YAIC,KAAK,WACDA;AAAA;AAAA,oBAGI,KAAK,UACDA;AAAA,8BACM,KAAK,OAAO;AAAA,uCACH,MAAM,aAAa,MAAM;AAAA;AAAA,iCAE/B,KAAK,gBAAgB;AAAA,4BAE9BA,uCAAqC,KAAK,IAAI,gCACpD;AAAA;AAAA,kBAGF,EACN;AAAA,8FACoF,aAAa,KAAK,QAAQ,iBAAiB,MAAM,KAAK,IAAI,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA,EAItK;AACF;AAvGc;AAAA,EAAXC,WAAS;AAAA,GADC,QACC;AACA;AAAA,EAAXA,WAAS;AAAA,GAFC,QAEC;AACA;AAAA,EAAXA,WAAS;AAAA,GAHC,QAGC;AACyC;AAAA,EAApDA,WAAS,EAAE,MAAM,SAAS,WAAW,YAAY,CAAC;AAAA,GAJxC,QAI0C;AAChB;AAAA,EAApCA,WAAS,EAAE,WAAW,WAAW,CAAC;AAAA,GALxB,QAK0B;AACe;AAAA,EAAnDA,WAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GANvC,QAMyC;AAEnC;AAAA,EAAhBC,OAAM;AAAA,GARI,QAQM;AACA;AAAA,EAAhBA,OAAM;AAAA,GATI,QASM;AATN,UAAN;AAAA,EADNC,oBAAkB,UAAU;AAAA,GAChB;;;AClBb,SAAS,QAAAC,aAAY;AACrB,SAAS,qBAAAC,2BAAyB;AAClC,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,QAAAC,cAAiC;AAC1C,SAAS,YAAAC,YAAU,SAAAC,cAAa;AAChC,SAAS,YAAY;;;ACmBd,SAAS,YAAY,OAAe,WAAW,IAAY;AAChE,QAAM,UAAU,OAAO,OAAO,QAAQ;AACtC,QAAM,WAAW,QAAQ;AACzB,QAAM,YAAY,QAAQ;AAE1B,MAAI,cAAc,IAAI;AACpB,WAAO,SAAS,SAAS;AAAA,EAC3B;AAEA,QAAM,eAAe,UAAU,SAAS,EAAE,SAAS,UAAU,GAAG;AAChE,QAAM,UAAU,aAAa,QAAQ,OAAO,EAAE;AAC9C,SAAO,GAAG,QAAQ,IAAI,OAAO;AAC/B;AAEA,SAAS,eAAe,KAAsB;AAC5C,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,QAAQ,SAAS,GAAG;AACtB,WAAO,YAAY,KAAK,OAAO,KAAK,oBAAoB,KAAK,OAAO;AACtE,SAAO,WAAW,KAAK,OAAO,KAAK,mBAAmB,KAAK,OAAO;AACpE;AAqBO,SAAS,YACd,OACoB;AACpB,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,CAAC,OAAO,UAAU,KAAK,EAAG,QAAO;AACrC,WAAO,OAAO,KAAK;AAAA,EACrB;AACA,QAAM,UAAU,MAAM,KAAK;AAC3B,QAAM,UAAU,QAAQ,SAAS,GAAG,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI;AAC/D,MAAI,CAAC,eAAe,OAAO,EAAG,QAAO;AACrC,MAAI;AACF,WAAO,OAAO,OAAO;AAAA,EACvB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ADnDO,IAAM,YAAN,cAAwB,eAAe;AAAA,EAAvC;AAAA;AAkBO,gBAOC;AAK+B,0BAAiB;AAKjC,oBAAW;AAK3B,gBAAiD;AAKD,0BAC1D;AAKsD,sBAAa;AAmB5D,SAAQ,kBAAkB;AA6BnC;AAAA,SAAQ,cAAc,IAAIC,MAAK,MAAM;AAAA,MACnC,MAAM,OAAO,CAAC,OAAO,MAAM;AACzB,YAAI,CAAC,QAAS,QAAO;AACrB,YAAI;AACF,iBAAO,KAAK,gBAAgB,eAAe,OAAO;AAAA,QACpD,SAAS,OAAO;AACd,kBAAQ,KAAK,kDAAkD,KAAK;AACpE,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,OAAO;AAAA,IAC3B,CAAC;AAAA;AAAA,EAtCO,cAAc,GAAU;AAC9B,UAAM,OAAO,EAAE;AACf,UAAM,WAAW,MAAM,cAAc,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC;AAC5D,SAAK,kBAAkB,SAAS,SAAS;AAAA,EAC3C;AAAA,EAEmB,eAAqB;AACtC,UAAM,OAAO,KAAK,WAAW,cAAc,MAAM;AACjD,QAAI,MAAM;AACR,YAAM,WAAW,KAAK,cAAc,EAAE,SAAS,KAAK,CAAC;AACrD,WAAK,kBAAkB,SAAS,SAAS;AAAA,IAC3C;AAAA,EACF;AAAA;AAAA,EAGA,IAAY,kBAAkB;AAC5B,QAAI;AACF,aAAOC,oBAAmB;AAAA,IAC5B,SAAS,OAAO;AACd,cAAQ,KAAK,8CAA8C,KAAK;AAChE,aAAO;AAAA,QACL,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAmBQ,mBAA2B;AACjC,QAAI,KAAK,SAAS,OAAQ,QAAO,KAAK;AAEtC,UAAM,QAAQ,KAAK;AAEnB,QAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAI,OAAO,UAAU,UAAW,QAAO;AACvC,QAAI,OAAO,UAAU,UAAU;AAE7B,UAAI,KAAK,YAAY,QAAS,QAAO;AACrC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,gBAAwB;AAC9B,UAAM,gBAAgB,KAAK,iBAAiB;AAE5C,YAAQ,eAAe;AAAA,MACrB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAA4B;AAClC,UAAM,QAAQ,KAAK;AACnB,UAAM,gBAAgB,KAAK,iBAAiB;AAE5C,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI,UAAU,OAAW,QAAO;AAEhC,YAAQ,eAAe;AAAA,MACrB,KAAK,YAAY;AACf,cAAM,EAAE,SAAS,OAAO,IAAI,KAAK,iBAAiB;AAClD,eAAO,GAAG,OAAO,IAAI,MAAM;AAAA,MAC7B;AAAA,MAEA,KAAK;AACH,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,GAAG,MAAM,SAAS,CAAC;AAAA,QAC5B;AACA,eAAO,GAAG,OAAO,KAAK,CAAC;AAAA,MAEzB,KAAK;AACH,eAAO,QAAQ,SAAS;AAAA,MAE1B,KAAK;AACH,YAAI,OAAO,UAAU,UAAU;AAE7B,iBAAO,MAAM,eAAe;AAAA,QAC9B;AACA,eAAO,OAAO,KAAK;AAAA,MAErB,KAAK;AACH,eAAO,OAAO,KAAK;AAAA,MAErB,KAAK;AACH,eAAO;AAAA,MAET;AACE,eAAO,OAAO,KAAK;AAAA,IACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAAwD;AAC9D,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAoB,KAAK,YAAY;AAC3C,UAAM,oBAAoB,cAAc,kBACnC,aAAa,WAAW,YACzB,aAAa,YACb,KAAK,WACL,KAAK;AACT,UAAM,kBACJ,cAAc,mBACd,cAAc,WAAW,mBACzB,KAAK;AAEP,QAAI,UAAU,OAAO,SAAS,EAAE;AAChC,QAAI;AACF,UAAI,OAAO,UAAU,UAAU;AAC7B,kBAAU,YAAY,OAAO,iBAAiB;AAAA,MAChD,WAAW,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,OAAO,KAAK,CAAC,GAAG;AACpE,cAAM,cAAc,OAAO,KAAK;AAChC,kBAAU,YAAY,aAAa,iBAAiB;AAAA,MACtD;AAAA,IACF,QAAQ;AAEN,gBAAU,OAAO,SAAS,EAAE;AAAA,IAC9B;AAEA,WAAO,EAAE,SAAS,QAAQ,gBAAgB;AAAA,EAC5C;AAAA;AAAA,EAGQ,kBAA0B;AAChC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA,EAGQ,mBAA2B;AACjC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,wBAAgC;AACtC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,WAAW,GAAW;AAClC,QAAI,EAAG,GAAE,gBAAgB;AACzB,UAAM,aAAa,OAAO,KAAK,KAAK;AAEpC,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,UAAU;AAG9C,WAAK;AAAA,QACH,IAAI,YAAY,gBAAgB;AAAA,UAC9B,QAAQ,EAAE,OAAO,WAAW;AAAA,UAC5B,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IAGF,SAAS,OAAO;AACd,cAAQ,MAAM,yBAAyB,KAAK;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc;AACpB,SAAK;AAAA,MACH,IAAI,YAAY,eAAe;AAAA,QAC7B,QAAQ;AAAA,UACN,OAAO,KAAK;AAAA,UACZ,gBAAgB,KAAK,kBAAkB;AAAA,UACvC,MAAM,KAAK,iBAAiB;AAAA,QAC9B;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAES,SAAS;AAChB,UAAM,iBAAiB,KAAK,kBAAkB;AAC9C,UAAM,aAAa,KAAK,cAAc;AAGtC,QAAI,KAAK,YAAY;AACnB,YAAM,gBAAgB,KAAK,iBAAiB;AAC5C,UAAI,aAAa,KAAK,SAAS;AAC/B,UAAI,kBAAkBC;AAAA,mEACuC,cAAc;AAAA;AAG3E,UAAI,kBAAkB,YAAY;AAChC,cAAM,EAAE,SAAS,OAAO,IAAI,KAAK,iBAAiB;AAClD,YAAI,KAAK,OAAO;AACd,uBAAa,KAAK;AAClB,4BAAkBA;AAAA,kGACsE,KAAK,gBAAgB,CAAC,KAAK,OAAO;AAAA,0CAC1F,KAAK,iBAAiB,CAAC,MAAM,MAAM;AAAA;AAAA,QAErE,OAAO;AACL,uBAAa;AACb,4BAAkBA;AAAA,kGACsE,KAAK,gBAAgB,CAAC,KAAK,OAAO;AAAA;AAAA,QAE5H;AAAA,MACF;AAEA,aAAOA;AAAA;AAAA,gGAEmF,KAAK,uBAAuB,EAAE;AAAA,qBACzG,KAAK,WAAW;AAAA,qBAChB,KAAK,WAAW,cAAc,KAAK,QAAQ,OAAO,EAAE;AAAA;AAAA;AAAA,cAI3D,aACIA,qBAAmB,KAAK,cAAc,CAAC,qEAAqE,UAAU,WACtHA,QACN;AAAA,cAEE,KAAK,iBACDA;AAAA;AAAA;AAAA,+BAGa,CAAC,MAAa,KAAK,WAAW,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAO7CA,QACN;AAAA;AAAA,cAEE;AAAA,QACA,CAAC,KAAK;AAAA,QACN,MAAMA;AAAA,0GAEF,KAAK,gBAAgB,IAAI,cAAc,EACzC;AAAA,oBACI,eAAe;AAAA;AAAA;AAAA,MAGvB,CAAC;AAAA,8BACiB,KAAK,aAAa;AAAA;AAAA;AAAA,IAG5C;AAGA,WAAOA;AAAA;AAAA,mJAEwI,KAAK,sBAAsB,CAAC,IAAI,KAAK,uBAAuB,EAAE;AAAA,iBAChM,KAAK,WAAW;AAAA,iBAChB,KAAK,WAAW,cAAc,KAAK,QAAQ,OAAO,EAAE;AAAA;AAAA,4FAEuB,UAAU;AAAA,YAC1F,cAAc;AAAA;AAAA,UAGhB,KAAK,iBACDA;AAAA;AAAA;AAAA,2BAGa,CAAC,MAAa,KAAK,WAAW,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAO7C,EACN;AAAA;AAAA;AAAA,EAGN;AAAA;AAAA,EAGQ,kBAA2B;AACjC,UAAM,IAAI,KAAK,iBAAiB;AAChC,QACE,MAAM,aACN,MAAM,YACN,KAAK,OAAO,SAAS,EAAE,WAAW,IAAI;AAEtC,aAAO;AACT,QAAI,MAAM,UAAU;AAClB,YAAM,IAAI,OAAO,KAAK,SAAS,EAAE;AACjC,aAAO,mBAAmB,KAAK,CAAC,KAAK,EAAE,SAAS;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGQ,gBAAwB;AAC9B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AACF;AAhcc;AAAA,EAAXC,WAAS;AAAA,GALC,UAKC;AAKyB;AAAA,EAApCA,WAAS,EAAE,WAAW,WAAW,CAAC;AAAA,GAVxB,UAU0B;AAGrC;AAAA,EADCA,WAAS,EAAE,MAAM,QAAQ,WAAW,wBAAwB,CAAC;AAAA,GAZnD,UAaX;AAKY;AAAA,EAAXA,WAAS;AAAA,GAlBC,UAkBC;AAYgC;AAAA,EAA3CA,WAAS,EAAE,WAAW,kBAAkB,CAAC;AAAA,GA9B/B,UA8BiC;AAKhB;AAAA,EAA3BA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAnCf,UAmCiB;AAKhB;AAAA,EAAXA,WAAS;AAAA,GAxCC,UAwCC;AAKgD;AAAA,EAA3DA,WAAS,EAAE,MAAM,SAAS,WAAW,mBAAmB,CAAC;AAAA,GA7C/C,UA6CiD;AAMJ;AAAA,EAAvDA,WAAS,EAAE,MAAM,SAAS,WAAW,eAAe,CAAC;AAAA,GAnD3C,UAmD6C;AAK5C;AAAA,EAAXA,WAAS;AAAA,GAxDC,UAwDC;AAKwC;AAAA,EAAnDA,WAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GA7DvC,UA6DyC;AAMxC;AAAA,EAAXA,WAAS;AAAA,GAnEC,UAmEC;AAGK;AAAA,EAAhBC,OAAM;AAAA,GAtEI,UAsEM;AAtEN,YAAN;AAAA,EADNC,oBAAkB,YAAY;AAAA,GAClB;;;AE9Bb,SAAS,QAAAC,aAAY;AACrB,SAAS,qBAAAC,2BAAyB;AAClC,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,QAAAC,cAAY;AACrB,SAAS,YAAAC,YAAU,SAAAC,cAAa;AAChC,SAAS,cAAc;AA6BhB,IAAM,YAAN,cAAwB,eAAe;AAAA,EAAvC;AAAA;AAyBO,gBAAiD;AAKL,sBAAa;AAG5D,SAAQ,YAAY;AAG7B;AAAA,SAAQ,kBAAkBC,oBAAmB;AAG7C;AAAA,SAAQ,cAAc,IAAIC,MAAK,MAAM;AAAA,MACnC,MAAM,OAAO,CAAC,OAAO,MAAM;AACzB,YAAI,CAAC,QAAS,QAAO;AAErB,aAAK,YAAY;AACjB,YAAI;AACF,gBAAM,WAAW,MAAM,KAAK,gBAAgB,eAAe,OAAO;AAClE,iBAAO;AAAA,QACT,SAAS,OAAO;AACd,kBAAQ,KAAK,gDAA2C,KAAK;AAC7D,iBAAO;AAAA,QACT,UAAE;AACA,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,OAAO;AAAA,IAC3B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKO,kBAAyB;AAC/B,UAAM,WAAW,KAAK,YAAY;AAClC,QAAI,CAAC,SAAU,QAAO,CAAC;AACvB,YAAQ,IAAI,uBAAuB,QAAQ;AAC3C,UAAM,QAAS,SAAiB,KAAK,SAAS;AAC9C,QAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AAGnC,UAAM,WAAW,MAAM,SAAS,KAAK,MAAM,CAAC,GAAG,UAAU;AAEzD,QAAI,CAAC,UAAU;AAEb,aAAO;AAAA,IACT;AAGA,WAAO,MAAM,OAAO,CAAC,SAAS;AAC5B,YAAM,QAAQ,KAAK;AACnB,UAAI,KAAK,aAAa,UAAa,QAAQ,KAAK,SAAU,QAAO;AACjE,UAAI,KAAK,aAAa,UAAa,QAAQ,KAAK,SAAU,QAAO;AACjE,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKQ,YAAY,MAAoB;AACtC,QAAI,CAAC,KAAK,SAAU,QAAO;AAC3B,WAAO,KAAK,SAAS,WAAW,QAAQ;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKQ,gBAAgB,MAAmB;AACzC,QAAI,CAAC,KAAK,SAAU,QAAO;AAE3B,QAAI,KAAK,SAAS,WAAW,QAAQ,EAAG,QAAO;AAC/C,QAAI,KAAK,SAAS,WAAW,QAAQ,EAAG,QAAO;AAC/C,QAAI,KAAK,SAAS,WAAW,iBAAiB,EAAG,QAAO;AACxD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,gBAAgB,MAAW,OAAe;AAChD,UAAM,aAAa,KAAK,UAAU,SAAY,KAAK,QAAQ;AAC3D,UAAM,UAAU,KAAK,YAAY,IAAI;AAErC,QAAI,SAAS;AAEX,YAAM,WAAW,KAAK,OAAO,KAAK;AAElC,UAAI,CAAC,UAAU;AACb,eAAOC;AAAA;AAAA;AAAA,cAID,KAAK,UAAU,SACXA,0CAAwC,KAAK,KAAK,WAClD,EACN;AAAA;AAAA;AAAA;AAAA,MAIN;AAGA,aAAOA;AAAA;AAAA;AAAA;AAAA,kBAIK,QAAQ;AAAA,kBACR,KAAK,UAAU,SAAY,IAAI,KAAK,KAAK,KAAK,OAAO;AAAA,qBAClD,CAAC,MAAa;AACrB,cAAM,SAAS,EAAE;AACjB,eAAO,MAAM,UAAU;AACvB,cAAM,SAAS,OAAO;AACtB,YAAI,QAAQ;AACV,iBAAO,YAAY;AAAA;AAAA;AAAA;AAAA,QAIrB;AAAA,MACF,CAAC;AAAA;AAAA,YAGD,KAAK,UAAU,SACXA,mCAAiC,KAAK,KAAK,WAC3C,EACN;AAAA;AAAA;AAAA,IAGN,OAAO;AAEL,aAAOA;AAAA;AAAA,mCAEsB,KAAK,gBAAgB,IAAI,CAAC;AAAA,YAEjD,KAAK,UAAU,SACXA,kCAAgC,KAAK,KAAK,WAC1C,EACN;AAAA,mCACyB,KAAK,YAAY,SAAS;AAAA;AAAA;AAAA,IAGzD;AAAA,EACF;AAAA,EAEQ,oBAA4B;AAClC,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAES,SAAS;AAChB,QAAI,KAAK,WAAW;AAClB,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMT;AAEA,UAAM,QAAQ,KAAK,gBAAgB;AAEnC,QAAI,MAAM,WAAW,GAAG;AACtB,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKT;AACA,UAAM,OAAOA;AAAA,4DAC2C,KAAK,kBAAkB,CAAC;AAAA,UAC1E;AAAA,MACA;AAAA,MACA,CAAC,MAAM,UAAU,KAAK,SAAS;AAAA,MAC/B,CAAC,MAAM,UAAU,KAAK,gBAAgB,MAAM,KAAK;AAAA,IACnD,CAAC;AAAA;AAAA;AAIL,WAAO,KAAK,aACRA,qGAAmG,IAAI,WACvG;AAAA,EACN;AACF;AAvNc;AAAA,EAAXC,WAAS;AAAA,GAJC,UAIC;AAMyC;AAAA,EAApDA,WAAS,EAAE,MAAM,QAAQ,WAAW,aAAa,CAAC;AAAA,GAVxC,UAU0C;AAKD;AAAA,EAAnDA,WAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GAfvC,UAeyC;AAKA;AAAA,EAAnDA,WAAS,EAAE,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA,GApBvC,UAoByC;AAKxC;AAAA,EAAXA,WAAS;AAAA,GAzBC,UAyBC;AAK4C;AAAA,EAAvDA,WAAS,EAAE,MAAM,SAAS,WAAW,eAAe,CAAC;AAAA,GA9B3C,UA8B6C;AAGvC;AAAA,EAAhBC,OAAM;AAAA,GAjCI,UAiCM;AAjCN,YAAN;AAAA,EADNC,oBAAkB,YAAY;AAAA,GAClB;;;AClCb,SAAS,qBAAAC,2BAAyB;AAElC,SAAS,OAAAC,MAAK,QAAAC,QAAM,cAAAC,mBAAkB;AACtC,SAAS,YAAAC,YAAU,SAAAC,cAAa;AAChC,SAAS,gBAAgB;AACzB,SAAS,UAAAC,eAAc;AACvB,SAAS,QAAAC,aAAY;AAUd,IAAM,YAAN,cAAwBC,YAAW;AAAA,EAAnC;AAAA;AAKL,mBAAU;AAGV,gBAAO;AAGP,oBAAW;AAGX,gBAAiD;AAAA;AAAA,EAKzC,oBAAoB,oBAAoC;AAC9D,WAAO,mBAAmB,MAAM,GAAG,EAAE,CAAC;AAAA,EACxC;AAAA,EAEQ,gBAAgB,oBAAgD;AACtE,UAAM,QAAQ,mBAAmB,MAAM,GAAG;AAC1C,WAAO,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI;AAAA,EACvC;AAAA,EA+KQ,eAAe;AACrB,SAAK,cAAc,IAAI,YAAY,OAAO,CAAC;AAAA,EAC7C;AAAA,EAEQ,iBAAiB,MAAc;AACrC,QAAI,UAAU,WAAW;AACvB,gBAAU,UAAU,UAAU,IAAI;AAElC,WAAK,cAAc,IAAI,YAAY,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EAEQ,gBAAgB;AACtB,UAAM,OACJ,KAAK,eAAe,iBACpB,KAAK,eAAe,QACpB;AAEF,WAAOC;AAAA;AAAA,UAEDC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA;AAAA,yBAES,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAK3B,MAAMA;AAAA;AAAA;AAAA,IAGR,CAAC;AAAA,oCAC2B,IAAI;AAAA;AAAA;AAAA,EAGtC;AAAA,EAEQ,yBAAyB;AAC/B,UAAM,kBAAkB,KAAK,oBAAoB,KAAK,OAAO;AAC7D,QAAI,CAAC,gBAAiB,QAAO;AAE7B,WAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAMU,MAAM,KAAK,iBAAiB,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAQ1C,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpC;AAAA,EAEQ,iBAAiB;AACvB,UAAM,UAAU,KAAK,gBAAgB,KAAK,OAAO;AACjD,QAAI,CAAC,QAAS,QAAO;AAGrB,UAAM,mBAAoB,KAAK,eAAuB;AACtD,UAAM,iBAAiB,mBACnB,IAAI,gBAAgB,KACpB,WAAW;AAEf,WAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAMU,MAAM,KAAK,iBAAiB,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAMlB,cAAc;AAAA;AAAA;AAAA,EAGnD;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,cAAe,KAAK,eAAuB;AACjD,QAAI,CAAC,YAAa,QAAO;AAEzB,WAAOA;AAAA;AAAA;AAAA,mDAGwC,WAAW;AAAA;AAAA;AAAA,EAG5D;AAAA,EAEQ,eAAe;AACrB,UAAM,QAAS,KAAK,eAAuB,SAAS,CAAC;AACrD,QAAI,CAAC,MAAM,OAAQ,QAAO;AAE1B,WAAOA;AAAA;AAAA;AAAA;AAAA,YAICE;AAAA,MACA;AAAA,MACA,CAAC,SAAc,KAAK;AAAA,MACpB,CAAC,SAAcF;AAAA;AAAA;AAAA;AAAA,0BAID,KAAK,GAAG;AAAA;AAAA;AAAA;AAAA,oBAId,KAAK,SAAS,KAAK,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhC,CAAC;AAAA;AAAA;AAAA;AAAA,EAIT;AAAA,EAEQ,gBAAgB;AACtB,UAAM,SAAU,KAAK,eAAuB,UAAU,CAAC;AACvD,QAAI,CAAC,OAAO,OAAQ,QAAO;AAE3B,WAAOA;AAAA;AAAA;AAAA;AAAA,oBAIS,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9B;AAAA,EAEQ,gBAAgB;AACtB,UAAM,SAAU,KAAK,eAAuB,UAAU,CAAC;AACvD,QAAI,CAAC,OAAO,OAAQ,QAAO;AAE3B,WAAOA;AAAA;AAAA;AAAA;AAAA,oBAIS,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9B;AAAA,EAEQ,qBAAqB,GAAU;AACrC,QAAI,EAAE,WAAW,EAAE,eAAe;AAChC,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,SAAS;AACP,UAAM,eAAe;AAAA,MACnB,OAAO;AAAA,MACP,MAAM,KAAK;AAAA,IACb;AAEA,WAAOA;AAAA,mBACQ,SAAS,YAAY,CAAC,WAAW,KAAK,oBAAoB;AAAA,4CACjC,CAAC,MAAa,EAAE,gBAAgB,CAAC;AAAA,gDAC7B,KAAK,YAAY;AAAA;AAAA,YAErD,KAAK,cAAc,CAAC;AAAA,YACpB,KAAK,uBAAuB,CAAC;AAAA,YAC7B,KAAK,eAAe,CAAC;AAAA,YACrB,KAAK,mBAAmB,CAAC;AAAA,YACzB,KAAK,aAAa,CAAC;AAAA,YACnB,KAAK,cAAc,CAAC;AAAA,YACpB,KAAK,cAAc,CAAC;AAAA;AAAA;AAAA;AAAA,EAI9B;AACF;AA1Ya,UA4BJ,SAASG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAvBhB;AAAA,EADCC,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJf,UAKX;AAGA;AAAA,EADCA,WAAS,EAAE,MAAM,SAAS,WAAW,OAAO,CAAC;AAAA,GAPnC,UAQX;AAGA;AAAA,EADCA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAVf,UAWX;AAGA;AAAA,EADCA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAbf,UAcX;AAGQ;AAAA,EADPC,OAAM;AAAA,GAhBI,UAiBH;AAjBG,YAAN;AAAA,EADNC,oBAAkB,YAAY;AAAA,GAClB;;;AChBb,SAAS,QAAAC,cAAY;AACrB,SAAS,YAAAC,YAAU,SAAAC,cAAa;AAChC,SAAS,UAAAC,eAAc;AACvB,SAAS,QAAAC,aAAY;AAOrB,OAAO;AACP,SAAS,QAAAC,aAAY;AACrB,SAAS,qBAAAC,2BAAyB;AAClC;AAAA,EAEE,sBAAAC;AAAA,OACK;AASA,IAAM,YAAN,cAAwB,eAAe;AAAA,EAAvC;AAAA;AAmBL,wBAAuB;AAGvB,0BAAiB;AAGjB,uBAAc;AAGd,SAAQ,iBAAiB;AAUzB;AAAA,SAAQ,kBAAkBC,oBAAmB;AAE7C,SAAQ,kBAAkB,IAAIC,MAAK,MAAM;AAAA,MACvC,MAAM,OAAO,CAAC,OAAO,MAAM;AACzB,YAAI,CAAC,QAAS,QAAO;AAErB,cAAM,EAAE,eAAe,IAAI,KAAK;AAChC,cAAM,OAAO,MAAM,eAAe,OAAiB;AACnD,aAAK,gBAAgB;AACrB,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM,CAAC,KAAK,OAAO;AAAA,IAC3B,CAAC;AAAA;AAAA,EAjBO,mBAAmB;AACzB,SAAK,iBAAiB,CAAC,KAAK;AAAA,EAC9B;AAAA,EAiBQ,oBAAoB,oBAAoC;AAC9D,WAAO,mBAAmB,MAAM,GAAG,EAAE,CAAC;AAAA,EACxC;AAAA,EAEQ,wBAAwB;AAC9B,UAAM,OAAO,KAAK,gBAAgB;AAClC,QAAI,CAAC,KAAM,QAAO;AAElB,WAAOC;AAAA;AAAA,UAEDC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA;AAAA,wBAEQ,KAAK,oBAAoB,KAAK,OAAO,CAAC;AAAA;AAAA,0BAEpC,GAAG;AAAA,+BACE,KAAK;AAAA,8BACN,KAAK;AAAA,kCACD,KAAK;AAAA;AAAA;AAAA;AAAA,IAI/B,CAAC;AAAA,UACCC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA,+DAC+C,KAAK,gBAAgB;AAAA;AAAA,IAE5E,CAAC;AAAA;AAAA;AAAA,EAGP;AAAA,EAEQ,wBAAwB;AAC9B,UAAM,QAAS,KAAK,eAAuB;AAC3C,UAAM,WAAY,KAAK,eAAuB,gBAAgB,CAAC;AAC/D,UAAM,kBAAkB,SAAS,SAAS,CAAC,GAAG;AAC9C,QAAI,CAAC,gBAAiB,QAAO;AAE7B,WAAOA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO3B;AAAA,EAEQ,yBAAyB;AAC/B,UAAM,OAAO,KAAK,gBAAgB;AAClC,QAAI,CAAC,MAAM,QAAS,QAAO;AAE3B,WAAOA;AAAA;AAAA,aAEEC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA;AAAA,wBAEK,KAAK,OAAO;AAAA;AAAA,sBAEd,KAAK,iBAAiB,EAAE;AAAA,0BACpB,GAAG;AAAA,+BACE,KAAK;AAAA,8BACN,IAAI;AAAA,kCACA,IAAI;AAAA;AAAA;AAAA;AAAA,IAI3B,CAAC;AAAA;AAAA;AAAA,EAGV;AAAA,EAEQ,uBAAuB;AAC7B,UAAM,OAAO,KAAK,gBAAgB;AAClC,QAAI,CAAC,KAAM,QAAO;AAElB,WAAOA;AAAA,YACCC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA;AAAA,gCAEc,IAAI;AAAA,oCACA,IAAI;AAAA,wBAChB,KAAK,iBAAiB,EAAE;AAAA;AAAA;AAAA;AAAA,IAItC,CAAC;AAAA;AAAA,EAET;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,OAAO,KAAK,gBAAgB;AAClC,QAAI,CAAC,KAAM,QAAO;AAElB,WAAOA;AAAA,YACCC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA;AAAA,gCAEc,IAAI;AAAA,oCACA,IAAI;AAAA,wBAChB,KAAK,mBAAmB,EAAE;AAAA;AAAA;AAAA;AAAA,IAIxC,CAAC;AAAA;AAAA,EAET;AAAA,EAEA,IAAY,mBAAmB;AAC7B,UAAM,mBAAoB,KAAK,eAAuB;AACtD,UAAM,iBAAiB,mBAAmB,GAAG,gBAAgB,KAAK;AAClE,QAAI,eAAgB,QAAO;AAE3B,WAAO,KAAK,UAAU,GAAG,SAAS,KAAK,SAAS,EAAE,CAAC,KAAK;AAAA,EAC1D;AAAA,EAEQ,iBAAiB;AACvB,UAAM,iBAAiB,KAAK;AAC5B,QAAI,CAAC,eAAgB,QAAO;AAE5B,WAAOA;AAAA;AAAA,0BAEe,IAAI;AAAA,8BACA,IAAI;AAAA,kBAChB,cAAc;AAAA;AAAA;AAAA;AAAA,EAI9B;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,cAAe,KAAK,eAAuB;AACjD,QAAI,CAAC,YAAa,QAAO;AAEzB,WAAOA;AAAA;AAAA,0BAEe,IAAI;AAAA,8BACA,IAAI;AAAA,kBAChB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B;AAAA,EAEQ,eAAe;AACrB,UAAM,QAAS,KAAK,eAAuB,SAAS,CAAC;AACrD,QAAI,CAAC,MAAM,OAAQ,QAAO;AAE1B,WAAOA;AAAA;AAAA;AAAA;AAAA,cAIGE;AAAA,MACA;AAAA,MACA,CAAC,SAAc,KAAK;AAAA,MACpB,CAAC,SAAcF;AAAA;AAAA;AAAA;AAAA,4BAID,KAAK,GAAG;AAAA;AAAA;AAAA;AAAA,sBAId,KAAK,SAAS,KAAK,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhC,CAAC;AAAA;AAAA;AAAA;AAAA,EAIX;AAAA,EAEQ,gBAAgB;AACtB,UAAM,SAAU,KAAK,eAAuB,UAAU,CAAC;AACvD,QAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAI,CAAC,KAAK,QAAS,QAAO;AAE1B,WAAOA;AAAA;AAAA,sBAEW,KAAK,OAAO;AAAA;AAAA;AAAA,4BAGN,IAAI;AAAA;AAAA;AAAA,EAG9B;AAAA,EAEQ,gBAAgB;AACtB,UAAM,SAAU,KAAK,eAAuB,UAAU,CAAC;AACvD,QAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAI,CAAC,KAAK,QAAS,QAAO;AAE1B,WAAOA;AAAA;AAAA;AAAA;AAAA,sBAIW,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhC;AAAA,EAEQ,mBAAmB;AACzB,WAAOA;AAAA;AAAA;AAAA,oBAGS,KAAK,gBAAgB,SAAS;AAAA;AAAA,mBAE/B,KAAK,eAAe,KAAK,eAAe,cAAc;AAAA;AAAA,sCAEnC,KAAK,eAAe,YAAY,SAAS;AAAA;AAAA;AAAA,EAG7E;AAAA,EAEQ,sBAAsB;AAC5B,QAAI,CAAC,KAAK,eAAgB,QAAO;AACjC,WAAOA;AAAA;AAAA,YAEC,KAAK,uBAAuB,CAAC;AAAA,YAC7B,KAAK,qBAAqB,CAAC;AAAA,YAC3B,KAAK,mBAAmB,CAAC;AAAA,YACzB,KAAK,eAAe,CAAC;AAAA,YACrB,KAAK,mBAAmB,CAAC;AAAA,YACzB,KAAK,aAAa,CAAC;AAAA,YACnB,KAAK,cAAc,CAAC;AAAA,YACpB,KAAK,cAAc,CAAC;AAAA;AAAA;AAAA,EAG9B;AAAA,EAEQ,mBAAmB;AACzB,UAAM,OAAO,KAAK,gBAAgB;AAClC,UAAM,MAAM,KAAK;AACjB,QAAI,QAAQ,UAAa,QAAQ,QAAQ,QAAQ,GAAI,QAAO;AAC5D,UAAM,eAAe,YAAY,GAAU;AAC3C,QAAI,iBAAiB,OAAW,QAAO;AACvC,WAAO,YAAY,cAAc,MAAM,QAAQ;AAAA,EACjD;AAAA,EAEQ,8BAA8B;AACpC,QAAI,CAAC,KAAK,iBAAkB,QAAO;AACnC,WAAOA;AAAA,kIACuH,KAAK,gBAAgB;AAAA;AAAA,EAErJ;AAAA,EAEA,SAAS;AACP,WAAOA;AAAA;AAAA,QAEH,KAAK,iBAAiB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAKjB,KAAK,4BAA4B,CAAC;AAAA;AAAA,kBAE9BC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA;AAAA,gCAEQ,KAAK,WAAW,EAAE;AAAA;AAAA,kCAEhB,KAAK;AAAA;AAAA;AAAA,IAGvB,CAAC;AAAA;AAAA;AAAA;AAAA,kBAIC,KAAK,sBAAsB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAO9B,KAAK,eAAe,iBAAiB,SAAS;AAAA;AAAA;AAAA,gBAG9CC;AAAA,MACA,KAAK;AAAA,MACL,MAAMD;AAAA,mCACa,KAAK,iBAAiB,KAAK,EAAE;AAAA,8IAE5C,KAAK,eAAe,mBAAmB,EACzC;AAAA;AAAA,MAEF,MAAMA,SAAO,KAAK,eAAe,mBAAmB,EAAE;AAAA,IACxD,CAAC;AAAA;AAAA;AAAA,cAGDC,MAAK,KAAK,aAAa,MAAM,KAAK,sBAAsB,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,YAK5D,KAAK,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpC;AACF;AAhXc;AAAA,EAAXE,WAAS;AAAA,GADC,UACC;AAGZ;AAAA,EADCA,WAAS,EAAE,MAAM,QAAQ,WAAW,WAAW,CAAC;AAAA,GAHtC,UAIX;AAGA;AAAA,EADCA,WAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANf,UAOX;AAIA;AAAA,EADCA,WAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB,CAAC;AAAA,GAV3C,UAWX;AAIA;AAAA,EADCA,WAAS,EAAE,MAAM,QAAQ,WAAW,WAAW,CAAC;AAAA,GAdtC,UAeX;AAIA;AAAA,EADCA,WAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB,CAAC;AAAA,GAlB3C,UAmBX;AAGA;AAAA,EADCA,WAAS,EAAE,MAAM,SAAS,WAAW,mBAAmB,CAAC;AAAA,GArB/C,UAsBX;AAGA;AAAA,EADCA,WAAS,EAAE,MAAM,SAAS,WAAW,eAAe,CAAC;AAAA,GAxB3C,UAyBX;AAGQ;AAAA,EADPC,OAAM;AAAA,GA3BI,UA4BH;AAGA;AAAA,EADPA,OAAM;AAAA,GA9BI,UA+BH;AA/BG,YAAN;AAAA,EADNC,oBAAkB,YAAY;AAAA,GAClB;;;ACzBb,SAAS,qBAAAC,2BAAyB;AAClC,SAAS,OAAAC,MAAK,QAAAC,QAAM,cAAAC,mBAAkB;AACtC,SAAS,YAAAC,kBAAgB;AACzB,SAAS,UAAAC,eAAc;AACvB,SAAS,QAAAC,aAAY;AA0Ed,IAAM,kBAAN,cAA8BC,YAAW;AAAA,EAAzC;AAAA;AAEL,gBAA4B,CAAC;AAG7B,mBAA8C;AAAA;AAAA,EA4RtC,iBAAiB,MAAc;AACrC,QAAI,UAAU,WAAW;AACvB,gBAAU,UAAU,UAAU,IAAI;AAClC,WAAK;AAAA,QACH,IAAI,YAAY,UAAU;AAAA,UACxB,QAAQ,EAAE,KAAK;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAiB,MAAuB;AAC9C,QAAI,KAAK,MAAM;AACb,aAAO,KAAK,KAAK,MAAM,UAAU,qBAAqB;AAAA,IACxD;AACA,SAAK;AAAA,MACH,IAAI,YAAY,cAAc;AAAA,QAC5B,QAAQ,EAAE,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,gBAAgB;AACtB,QAAI,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,KAAK,KAAM,QAAO;AAE1E,WAAOC;AAAA;AAAA,UAEDC;AAAA,MACA,KAAK,KAAK;AAAA,MACV,MAAMD;AAAA;AAAA,gBAEA,KAAK,KAAK,KAAK;AAAA,gBACfC;AAAA,QACA,KAAK,KAAK;AAAA,QACV,MAAMD;AAAA,4CACsB,KAAK,KAAK,IAAI;AAAA,sBACpC,KAAK,KAAK,IAAI;AAAA;AAAA;AAAA,MAGtB,CAAC;AAAA;AAAA;AAAA,IAGP,CAAC;AAAA;AAAA,UAECC;AAAA,MACA,KAAK,KAAK;AAAA,MACV,MAAMD;AAAA,qCACqB,KAAK,KAAK,WAAW;AAAA;AAAA,IAElD,CAAC;AAAA;AAAA;AAAA,EAGP;AAAA,EAEQ,eAAe;AAErB,UAAM,QAA2B,CAAC;AAGlC,QAAI,KAAK,KAAK,SAAS;AACrB,YAAM,CAAC,iBAAiB,OAAO,IAAI,KAAK,KAAK,QAAQ,MAAM,GAAG;AAE9D,YAAM,KAAK;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,MACZ,CAAC;AAED,UAAI,SAAS;AACX,cAAM,KAAK;AAAA,UACT,OAAO;AAAA,UACP,OAAO,IAAI,OAAO;AAAA,UAClB,UAAU;AAAA,UACV,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,KAAK,KAAK,OAAO;AACnB,YAAM,KAAK;AAAA,QACT,OAAO;AAAA,QACP,OAAO,KAAK,KAAK,MAAM,SAAS;AAAA,QAChC,MAAM;AAAA,QACN,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAGA,QAAI,KAAK,KAAK,iBAAiB;AAC7B,YAAM,SAAS,KAAK,KAAK;AAEzB,UAAI,OAAO,MAAM;AACf,cAAM,KAAK;AAAA,UACT,OAAO;AAAA,UACP,OAAO,OAAO;AAAA,UACd,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,aAAa;AACtB,cAAM,KAAK;AAAA,UACT,OAAO;AAAA,UACP,OAAO,OAAO,YAAY,SAAS;AAAA,UACnC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,QAAQ;AACjB,cAAM,KAAK;AAAA,UACT,OAAO;AAAA,UACP,OAAO,OAAO,OAAO,OAAO,CAAC,EAAE,YAAY,IAAI,OAAO,OAAO,MAAM,CAAC;AAAA,UACpE,MACE,OAAO,WAAW,YACd,WACA,OAAO,WAAW,WAChB,WACA;AAAA,UACR,aAAa,OAAO,WAAW;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,KAAK,KAAK,cAAc;AAC1B,YAAM,OAAO,KAAK,KAAK;AAEvB,UAAI,KAAK,MAAM;AACb,cAAM,KAAK;AAAA,UACT,OAAO;AAAA,UACP,OAAO,KAAK;AAAA,UACZ,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAEA,UAAI,KAAK,UAAU;AACjB,cAAM,KAAK;AAAA,UACT,OAAO;AAAA,UACP,OAAO,KAAK;AAAA,UACZ,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,KAAK,KAAK,aAAa,QAAQ;AACjC,YAAM,KAAK,GAAG,KAAK,KAAK,WAAW;AAAA,IACrC;AAEA,QAAI,CAAC,MAAM,OAAQ,QAAO;AAE1B,WAAOA;AAAA;AAAA,UAEDE;AAAA,MACA;AAAA,MACA,CAAC,SAAS,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA,MACrC,CAAC,SAASF;AAAA;AAAA,wCAEoB,KAAK,cAAc,gBAAgB,EAAE,IAAI,KAAK,OAAO,cAAc,EAAE;AAAA,uBACtF,KAAK,OAAO,MAAM,KAAK,iBAAiB,IAAI,IAAI,MAAS;AAAA;AAAA;AAAA,kBAG9DC;AAAA,QACA,KAAK;AAAA,QACL,MAAMD,iCAA+B,KAAK,IAAI;AAAA,MAChD,CAAC;AAAA,kBACC,KAAK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMR,KAAK,OACDA,wCAAsC,KAAK,IAAI,+CAA+C,KAAK,KAAK,SACxG,KAAK,KACX;AAAA;AAAA,kBAEAC;AAAA,QACA,KAAK;AAAA,QACL,MAAMD,oCAAkC,KAAK,QAAQ;AAAA,MACvD,CAAC;AAAA;AAAA;AAAA;AAAA,kBAICC;AAAA,QACA,KAAK;AAAA,QACL,MAAMD;AAAA;AAAA;AAAA,+BAGO,CAAC,MAAa;AACrB,YAAE,gBAAgB;AAClB,eAAK,iBAAiB,KAAK,KAAK;AAAA,QAClC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,CAAC;AAAA;AAAA;AAAA;AAAA,IAIT,CAAC;AAAA;AAAA;AAAA,EAGP;AAAA,EAEA,SAAS;AACP,QAAI,KAAK,KAAK,SAAS;AACrB,aAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQT;AAEA,WAAOA;AAAA,oBACS,KAAK,OAAO;AAAA;AAAA,YAEpB,KAAK,cAAc,CAAC;AAAA,YACpB,KAAK,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA,EAI7B;AACF;AAxgBa,gBAOJ,SAASG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","names":["safeCustomElement","Task","safeCustomElement","useAddressResolver","html","property","css","LitElement","useAddressResolver","Task","html","property","safeCustomElement","safeCustomElement","html","property","makeBlockie","html","property","safeCustomElement","makeBlockie","safeCustomElement","html","property","html","property","safeCustomElement","safeCustomElement","html","property","html","property","safeCustomElement","Task","safeCustomElement","useAddressResolver","useImageLoader","html","property","useImageLoader","useAddressResolver","Task","html","property","safeCustomElement","useImageLoader","safeCustomElement","html","property","state","html","property","state","safeCustomElement","safeCustomElement","html","property","html","property","safeCustomElement","safeCustomElement","html","property","html","property","safeCustomElement","safeCustomElement","html","property","state","html","property","state","safeCustomElement","Task","safeCustomElement","useAddressResolver","html","property","state","Task","useAddressResolver","html","property","state","safeCustomElement","Task","safeCustomElement","useAddressResolver","html","property","state","useAddressResolver","Task","html","property","state","safeCustomElement","safeCustomElement","css","html","LitElement","property","state","repeat","when","LitElement","html","when","repeat","css","property","state","safeCustomElement","html","property","state","repeat","when","Task","safeCustomElement","useAddressResolver","useAddressResolver","Task","html","when","repeat","property","state","safeCustomElement","safeCustomElement","css","html","LitElement","property","repeat","when","LitElement","html","when","repeat","css","property","safeCustomElement","safeCustomElement","css","html","LitElement","property","state","when","LitElement","html","when","css","property","state","safeCustomElement","safeCustomElement","css","html","LitElement","property","state","LitElement","html","css","property","state","safeCustomElement","safeCustomElement","html","property","html","property","safeCustomElement","safeCustomElement","html","property","state","when","module","state","html","when","property","safeCustomElement"]}