@vespera-ui/vue 0.4.0 → 0.6.0
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.cjs +469 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +283 -1
- package/dist/index.d.ts +283 -1
- package/dist/index.js +461 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @vespera-ui/vue — Vue 3 components for the Vespera design system.\n *\n * Thin wrappers over `@vespera-ui/css`: they emit the same `.vsp-`/`ui-` classes\n * as `@vespera-ui/react`, so theming via `.vsp-root` data-attributes works\n * identically. Import the CSS once and wrap your app in a themed root.\n */\nimport { defineComponent, h, ref, useId, type PropType } from 'vue';\n\nconst cx = (...parts: (string | false | null | undefined)[]) => parts.filter(Boolean).join(' ');\n\nexport type ButtonVariant = 'primary' | 'ghost' | 'subtle' | 'outline' | 'danger';\nexport type BadgeTone = 'pos' | 'neg' | 'warn' | 'info' | 'muted';\nexport type AlertTone = 'info' | 'pos' | 'warn' | 'neg';\n\nexport const Button = defineComponent({\n name: 'VspButton',\n props: {\n variant: { type: String as PropType<ButtonVariant>, default: 'ghost' },\n size: { type: String as PropType<'sm'>, default: undefined },\n loading: Boolean,\n disabled: Boolean,\n },\n setup(props, { slots, attrs }) {\n return () =>\n h(\n 'button',\n {\n class: cx('btn', `btn-${props.variant}`, props.size === 'sm' && 'btn-sm'),\n disabled: props.disabled || props.loading,\n ...attrs,\n },\n [\n props.loading\n ? h('span', { class: 'ui-spinner', 'aria-hidden': 'true' })\n : slots.leading?.(),\n slots.default?.(),\n slots.trailing?.(),\n ],\n );\n },\n});\n\nexport const IconButton = defineComponent({\n name: 'VspIconButton',\n props: { label: { type: String, default: undefined } },\n setup(props, { slots, attrs }) {\n return () =>\n h('button', { class: 'vsp-icon-btn', type: 'button', 'aria-label': props.label, ...attrs }, [\n slots.default?.(),\n ]);\n },\n});\n\nexport const Badge = defineComponent({\n name: 'VspBadge',\n props: {\n tone: { type: String as PropType<BadgeTone>, default: 'muted' },\n dot: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h('span', { class: cx('badge', `badge-${props.tone}`) }, [\n props.dot ? h('i') : null,\n slots.default?.(),\n ]);\n },\n});\n\nexport const Tag = defineComponent({\n name: 'VspTag',\n emits: ['remove'],\n setup(props, { slots, emit }) {\n return () =>\n h('span', { class: 'ui-tag' }, [\n slots.default?.(),\n h('button', { type: 'button', 'aria-label': 'Remove', onClick: () => emit('remove') }, '×'),\n ]);\n },\n});\n\nexport const Kbd = defineComponent({\n name: 'VspKbd',\n setup(_, { slots }) {\n return () => h('kbd', { class: 'ui-kbd' }, slots.default?.());\n },\n});\n\nexport const Divider = defineComponent({\n name: 'VspDivider',\n props: { vertical: Boolean },\n setup(props) {\n return () => h('hr', { class: cx('ui-divider', props.vertical && 'v') });\n },\n});\n\nexport const Spinner = defineComponent({\n name: 'VspSpinner',\n props: { size: { type: String as PropType<'lg'>, default: undefined } },\n setup(props) {\n return () =>\n h('span', { class: cx('ui-spinner', props.size === 'lg' && 'lg'), 'aria-hidden': 'true' });\n },\n});\n\nexport const Card = defineComponent({\n name: 'VspCard',\n props: { pad: Boolean },\n setup(props, { slots, attrs }) {\n return () =>\n h('div', { class: cx('card', props.pad && 'card-pad'), ...attrs }, slots.default?.());\n },\n});\n\nexport const CardHead = defineComponent({\n name: 'VspCardHead',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'card-head' }, [\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'ttl' }, props.title),\n props.desc\n ? h('div', { class: 'eyebrow', style: { marginTop: '3px' } }, props.desc)\n : null,\n ]),\n slots.right ? h('div', { class: 'vsp-top-spacer' }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Alert = defineComponent({\n name: 'VspAlert',\n props: {\n tone: { type: String as PropType<AlertTone>, default: 'info' },\n title: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: cx('ui-alert', props.tone) }, [\n slots.icon?.(),\n h('div', { style: { flex: 1 } }, [\n props.title ? h('div', { class: 'ui-alert-title' }, props.title) : null,\n slots.default ? h('div', { class: 'ui-alert-body' }, slots.default()) : null,\n ]),\n slots.action?.(),\n ]);\n },\n});\n\nexport const Field = defineComponent({\n name: 'VspField',\n props: {\n label: { type: String, default: undefined },\n required: Boolean,\n hint: { type: String, default: undefined },\n error: { type: String, default: undefined },\n htmlFor: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'ui-field' }, [\n props.label\n ? h('label', { class: 'ui-label', for: props.htmlFor }, [\n h('span', null, [\n props.label,\n props.required ? h('span', { class: 'req' }, ' *') : null,\n ]),\n ])\n : null,\n slots.default?.(),\n props.error || props.hint\n ? h('span', { class: cx('ui-hint', props.error && 'err') }, props.error || props.hint)\n : null,\n ]);\n },\n});\n\nexport const Input = defineComponent({\n name: 'VspInput',\n props: {\n modelValue: { type: String, default: '' },\n invalid: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h('input', {\n class: cx('ui-input', props.invalid && 'invalid'),\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Textarea = defineComponent({\n name: 'VspTextarea',\n props: { modelValue: { type: String, default: '' } },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit }) {\n return () =>\n h('textarea', {\n class: 'ui-textarea',\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLTextAreaElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Switch = defineComponent({\n name: 'VspSwitch',\n props: {\n modelValue: Boolean,\n size: { type: String as PropType<'sm'>, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('button', {\n type: 'button',\n disabled: props.disabled,\n class: cx('ui-switch', props.size === 'sm' && 'sm', props.modelValue && 'on'),\n 'aria-pressed': String(props.modelValue),\n onClick: () => emit('update:modelValue', !props.modelValue),\n });\n },\n});\n\nexport const Checkbox = defineComponent({\n name: 'VspCheckbox',\n props: {\n modelValue: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const toggle = () => {\n if (!props.disabled) emit('update:modelValue', !props.modelValue);\n };\n return () =>\n h(\n 'label',\n { class: 'ui-opt', style: { opacity: props.disabled ? 0.5 : 1 }, onClick: toggle },\n [\n h('span', { class: cx('ui-check', props.modelValue && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport type SelectOption = string | { value: string; label: string; sub?: string };\nconst optValue = (o: SelectOption) => (typeof o === 'string' ? o : o.value);\nconst optLabel = (o: SelectOption) => (typeof o === 'string' ? o : o.label);\n\nexport const Radio = defineComponent({\n name: 'VspRadio',\n props: {\n checked: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n },\n emits: ['select'],\n setup(props, { emit }) {\n return () =>\n h(\n 'label',\n {\n class: 'ui-opt',\n onClick: (e: Event) => {\n e.preventDefault();\n emit('select');\n },\n },\n [\n h('span', { class: cx('ui-radio-dot', props.checked && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport const RadioGroup = defineComponent({\n name: 'VspRadioGroup',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '12px' } },\n props.options.map((o) =>\n h(Radio, {\n key: optValue(o),\n label: optLabel(o),\n sub: typeof o === 'object' ? o.sub : undefined,\n checked: props.modelValue === optValue(o),\n onSelect: () => emit('update:modelValue', optValue(o)),\n }),\n ),\n );\n },\n});\n\nexport const Slider = defineComponent({\n name: 'VspSlider',\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('input', {\n type: 'range',\n class: 'ui-slider',\n value: props.modelValue,\n min: props.min,\n max: props.max,\n step: props.step,\n onInput: (e: Event) =>\n emit('update:modelValue', Number((e.target as HTMLInputElement).value)),\n });\n },\n});\n\nexport const NativeSelect = defineComponent({\n name: 'VspNativeSelect',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h(\n 'select',\n {\n class: 'ui-select',\n value: props.modelValue,\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLSelectElement).value),\n ...attrs,\n },\n props.options.map((o) =>\n h('option', { key: optValue(o), value: optValue(o) }, optLabel(o)),\n ),\n );\n },\n});\n\nconst px = (v: string | number) => (typeof v === 'number' ? `${v}px` : v);\n\nexport const Progress = defineComponent({\n name: 'VspProgress',\n props: {\n value: { type: Number, default: 0 },\n tone: { type: String, default: undefined },\n height: { type: Number, default: 6 },\n },\n setup(props) {\n return () =>\n h('div', { class: 'meter', style: { height: px(props.height) } }, [\n h('i', {\n style: {\n width: `${Math.min(100, props.value)}%`,\n background: props.tone,\n transition: 'width .3s',\n },\n }),\n ]);\n },\n});\n\nexport const Skeleton = defineComponent({\n name: 'VspSkeleton',\n props: {\n w: { type: [String, Number] as PropType<string | number>, default: '100%' },\n h: { type: [String, Number] as PropType<string | number>, default: 12 },\n r: { type: Number, default: 7 },\n },\n setup(props) {\n return () =>\n h('div', {\n class: 'skel',\n style: { width: px(props.w), height: px(props.h), borderRadius: px(props.r) },\n });\n },\n});\n\nconst initialsOf = (name: string) =>\n name\n .split(' ')\n .map((s) => s.charAt(0))\n .slice(0, 2)\n .join('')\n .toUpperCase();\n\nexport interface Person {\n name: string;\n hue?: number;\n}\n\nexport const Avatar = defineComponent({\n name: 'VspAvatar',\n props: {\n name: { type: String, required: true },\n hue: { type: Number, default: 0 },\n size: { type: Number, default: 34 },\n },\n setup(props) {\n return () =>\n h(\n 'span',\n {\n class: 'vsp-avatar',\n style: {\n width: px(props.size),\n height: px(props.size),\n fontSize: px(props.size * 0.38),\n background: `linear-gradient(140deg, oklch(0.62 0.16 ${props.hue}), oklch(0.55 0.17 ${(props.hue + 50) % 360}))`,\n },\n },\n initialsOf(props.name),\n );\n },\n});\n\nexport const AvatarGroup = defineComponent({\n name: 'VspAvatarGroup',\n props: {\n people: { type: Array as PropType<Person[]>, default: () => [] },\n max: { type: Number, default: 4 },\n size: { type: Number, default: 32 },\n },\n setup(props) {\n return () => {\n const shown = props.people.slice(0, props.max);\n const extra = props.people.length - shown.length;\n return h('div', { style: { display: 'flex', alignItems: 'center' } }, [\n ...shown.map((p, i) =>\n h(\n 'span',\n {\n key: i,\n style: {\n marginLeft: i ? '-10px' : '0',\n border: '2px solid var(--surface-1)',\n borderRadius: '50%',\n position: 'relative',\n zIndex: shown.length - i,\n },\n },\n [h(Avatar, { name: p.name, hue: p.hue ?? 0, size: props.size })],\n ),\n ),\n extra > 0\n ? h(\n 'span',\n {\n style: {\n marginLeft: '-10px',\n width: px(props.size),\n height: px(props.size),\n borderRadius: '50%',\n display: 'grid',\n placeItems: 'center',\n background: 'var(--surface-3)',\n border: '2px solid var(--surface-1)',\n fontSize: px(props.size * 0.34),\n fontWeight: 700,\n color: 'var(--text-dim)',\n },\n },\n `+${extra}`,\n )\n : null,\n ]);\n };\n },\n});\n\nexport const Segmented = defineComponent({\n name: 'VspSegmented',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<string[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { class: 'ui-seg' },\n props.options.map((o) =>\n h(\n 'button',\n {\n key: o,\n type: 'button',\n class: cx(props.modelValue === o && 'on'),\n onClick: () => emit('update:modelValue', o),\n },\n o,\n ),\n ),\n );\n },\n});\n\nconst ICON_PATHS = { chevL: 'M15 18l-6-6 6-6', chevR: 'M9 18l6-6-6-6', check: 'M20 6L9 17l-5-5' };\nconst svgIcon = (d: string, size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d })],\n );\n\nexport type TabItem = string | { value: string; label: string; count?: number };\n\nexport const Tabs = defineComponent({\n name: 'VspTabs',\n props: {\n tabs: { type: Array as PropType<TabItem[]>, default: () => [] },\n modelValue: { type: String, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n return () =>\n h('div', { class: 'ui-tabs', style: { alignItems: 'center' } }, [\n ...props.tabs.map((t) => {\n const id = typeof t === 'string' ? t : t.value;\n const label = typeof t === 'string' ? t : t.label;\n const count = typeof t === 'object' ? t.count : undefined;\n return h(\n 'button',\n {\n key: id,\n type: 'button',\n class: cx('ui-tab', props.modelValue === id && 'on'),\n onClick: () => emit('update:modelValue', id),\n },\n [\n label,\n count != null\n ? h('span', { class: 'badge badge-muted', style: { marginLeft: '7px' } }, count)\n : null,\n ],\n );\n }),\n slots.right ? h('div', { style: { flex: 1 } }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Breadcrumb = defineComponent({\n name: 'VspBreadcrumb',\n props: { items: { type: Array as PropType<string[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'nav',\n { style: { display: 'flex', alignItems: 'center', gap: '7px', fontSize: '12.5px' } },\n props.items.flatMap((it, i) => {\n const last = i === props.items.length - 1;\n return [\n i > 0\n ? h(\n 'span',\n { key: `s${i}`, style: { color: 'var(--text-faint)', display: 'flex' } },\n [svgIcon(ICON_PATHS.chevR, 13)],\n )\n : null,\n h(\n 'span',\n {\n key: i,\n style: {\n color: last ? 'var(--text)' : 'var(--text-dim)',\n fontWeight: last ? 600 : 500,\n },\n },\n it,\n ),\n ];\n }),\n );\n },\n});\n\nexport const Pagination = defineComponent({\n name: 'VspPagination',\n props: {\n modelValue: { type: Number, default: 0 },\n pages: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () => {\n const page = props.modelValue;\n const nums: (number | '…')[] = [];\n for (let i = 0; i < props.pages; i++) {\n if (i === 0 || i === props.pages - 1 || Math.abs(i - page) <= 1) nums.push(i);\n else if (nums[nums.length - 1] !== '…') nums.push('…');\n }\n return h('div', { style: { display: 'flex', gap: '4px', alignItems: 'center' } }, [\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page === 0,\n 'aria-label': 'Previous page',\n onClick: () => emit('update:modelValue', page - 1),\n },\n [svgIcon(ICON_PATHS.chevL)],\n ),\n ...nums.map((n, i) =>\n n === '…'\n ? h(\n 'span',\n {\n key: `g${i}`,\n class: 'mono',\n style: { padding: '0 6px', color: 'var(--text-faint)' },\n },\n '…',\n )\n : h(\n 'button',\n {\n key: n,\n type: 'button',\n class: cx('btn', 'btn-sm', n === page ? 'btn-primary' : 'btn-subtle'),\n style: { minWidth: '32px', padding: 0 },\n onClick: () => emit('update:modelValue', n),\n },\n n + 1,\n ),\n ),\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page >= props.pages - 1,\n 'aria-label': 'Next page',\n onClick: () => emit('update:modelValue', page + 1),\n },\n [svgIcon(ICON_PATHS.chevR)],\n ),\n ]);\n };\n },\n});\n\nexport const Stepper = defineComponent({\n name: 'VspStepper',\n props: {\n steps: { type: Array as PropType<string[]>, default: () => [] },\n current: { type: Number, default: 0 },\n },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-steps' },\n props.steps.flatMap((s, i) => [\n i > 0\n ? h('div', { key: `b${i}`, class: cx('ui-step-bar', i <= props.current && 'done') })\n : null,\n h(\n 'div',\n {\n key: i,\n class: cx(\n 'ui-step',\n i < props.current && 'done',\n i === props.current && 'active',\n i > props.current && 'pending',\n ),\n },\n [\n h('span', { class: 'ui-step-dot' }, [\n i < props.current ? svgIcon(ICON_PATHS.check) : i + 1,\n ]),\n h('span', { class: 'ui-step-label' }, s),\n ],\n ),\n ]),\n );\n },\n});\n\nexport const CircularProgress = defineComponent({\n name: 'VspCircularProgress',\n props: {\n value: { type: Number, default: 0 },\n size: { type: Number, default: 76 },\n thickness: { type: Number, default: 7 },\n color: { type: String, default: 'var(--accent)' },\n label: { type: String, default: undefined },\n },\n setup(props) {\n return () => {\n const r = (props.size - props.thickness) / 2;\n const circ = 2 * Math.PI * r;\n return h(\n 'div',\n { style: { position: 'relative', width: px(props.size), height: px(props.size) } },\n [\n h(\n 'svg',\n { width: props.size, height: props.size, style: { transform: 'rotate(-90deg)' } },\n [\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': props.thickness,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circ,\n 'stroke-dashoffset': circ * (1 - Math.min(100, props.value) / 100),\n style: { transition: 'stroke-dashoffset .5s cubic-bezier(.3,.7,.3,1)' },\n }),\n ],\n ),\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n position: 'absolute',\n inset: 0,\n display: 'grid',\n placeItems: 'center',\n fontWeight: 800,\n fontSize: px(props.size * 0.24),\n },\n },\n props.label ?? `${Math.round(props.value)}%`,\n ),\n ],\n );\n };\n },\n});\n\nexport const Stat = defineComponent({\n name: 'VspStat',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n tone: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n { class: 'card card-pad', style: { display: 'flex', alignItems: 'center', gap: '13px' } },\n [\n slots.icon\n ? h(\n 'span',\n {\n style: {\n width: '38px',\n height: '38px',\n borderRadius: 'var(--r-sm)',\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n background: `color-mix(in oklab, ${props.tone} 14%, transparent)`,\n color: props.tone,\n },\n },\n slots.icon(),\n )\n : null,\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'eyebrow' }, props.label),\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'baseline', gap: '8px', marginTop: '3px' } },\n [\n h(\n 'span',\n {\n class: 'tnum',\n style: { fontSize: '22px', fontWeight: 800, letterSpacing: '-.02em' },\n },\n props.value,\n ),\n props.delta != null\n ? h(\n 'span',\n {\n class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg'),\n style: { padding: '1px 6px' },\n },\n [\n svgIcon(\n props.deltaDir === 'up'\n ? 'M12 19V5M5 12l7-7 7 7'\n : 'M12 5v14M5 12l7 7 7-7',\n 10,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n ]),\n ],\n );\n },\n});\n\nconst clockSvg = (size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('circle', { cx: 12, cy: 12, r: 9 }), h('path', { d: 'M12 7v5l3 2' })],\n );\n\nconst TL_TONE: Record<string, string> = {\n pos: 'var(--success)',\n neg: 'var(--danger)',\n warn: 'var(--warning)',\n info: 'var(--accent)',\n};\n\nexport interface TimelineItem {\n title: string;\n time?: string;\n body?: string;\n tone?: 'pos' | 'neg' | 'warn' | 'info';\n}\n\nexport const Timeline = defineComponent({\n name: 'VspTimeline',\n props: { items: { type: Array as PropType<TimelineItem[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-tl' },\n props.items.map((it, i) => {\n const c = it.tone ? TL_TONE[it.tone] : undefined;\n return h('div', { key: i, class: 'ui-tl-item' }, [\n h(\n 'span',\n {\n class: 'ui-tl-dot',\n style: c\n ? {\n background: `color-mix(in oklab, ${c} 14%, transparent)`,\n color: c,\n borderColor: `color-mix(in oklab, ${c} 30%, transparent)`,\n }\n : undefined,\n },\n [clockSvg()],\n ),\n h('div', { class: 'ui-tl-body' }, [\n h(\n 'div',\n {\n style: { display: 'flex', alignItems: 'baseline', gap: '8px', flexWrap: 'wrap' },\n },\n [\n h('span', { style: { fontWeight: 600, fontSize: '13.5px' } }, it.title),\n it.time\n ? h('span', { class: 'eyebrow', style: { marginLeft: 'auto' } }, it.time)\n : null,\n ],\n ),\n it.body\n ? h(\n 'div',\n { style: { fontSize: '12.5px', color: 'var(--text-dim)', marginTop: '3px' } },\n it.body,\n )\n : null,\n ]),\n ]);\n }),\n );\n },\n});\n\nexport const DescriptionList = defineComponent({\n name: 'VspDescriptionList',\n props: { items: { type: Array as PropType<[string, string][]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'dl',\n { class: 'ui-dl' },\n props.items.flatMap(([k, v], i) => {\n const last = i === props.items.length - 1 ? 'last' : '';\n return [\n h('dt', { key: `k${i}`, class: last }, k),\n h('dd', { key: `v${i}`, class: last }, v),\n ];\n }),\n );\n },\n});\n\nconst BANNER_ICON: Record<string, string> = {\n info: 'M12 3l1.6 5L19 9.6l-5 1.6L12 16l-1.6-4.8L5 9.6l5.4-1.6z',\n warn: 'M18 8a6 6 0 00-12 0c0 7-3 9-3 9h18s-3-2-3-9',\n accent: 'M13 2L3 14h9l-1 8 10-12h-9l1-8z',\n};\nconst X_PATH = 'M18 6L6 18M6 6l12 12';\nconst INBOX_PATH =\n 'M22 12h-6l-2 3h-4l-2-3H2M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z';\n\nexport const Banner = defineComponent({\n name: 'VspBanner',\n props: {\n tone: { type: String as PropType<'info' | 'warn' | 'accent'>, default: 'info' },\n dismissible: Boolean,\n },\n emits: ['dismiss'],\n setup(props, { slots, emit }) {\n return () =>\n h('div', { class: cx('ui-banner', props.tone) }, [\n slots.icon ? slots.icon() : svgIcon(BANNER_ICON[props.tone]!, 18),\n h('div', { style: { flex: 1, fontSize: '13px', fontWeight: 500 } }, slots.default?.()),\n slots.action?.(),\n props.dismissible\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ui-banner-x',\n 'aria-label': 'Dismiss',\n onClick: () => emit('dismiss'),\n },\n [svgIcon(X_PATH, 15)],\n )\n : null,\n ]);\n },\n});\n\nexport const EmptyState = defineComponent({\n name: 'VspEmptyState',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n compact: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n style: {\n display: 'grid',\n placeItems: 'center',\n textAlign: 'center',\n padding: props.compact ? '32px 20px' : '56px 24px',\n },\n },\n [\n h('div', { style: { maxWidth: '340px' } }, [\n h(\n 'span',\n {\n style: {\n width: '56px',\n height: '56px',\n borderRadius: '16px',\n display: 'grid',\n placeItems: 'center',\n margin: '0 auto 18px',\n background: 'color-mix(in oklab, var(--accent) 12%, transparent)',\n color: 'var(--accent)',\n border: '1px solid color-mix(in oklab, var(--accent) 22%, transparent)',\n },\n },\n slots.icon ? slots.icon() : [svgIcon(INBOX_PATH, 26)],\n ),\n h('div', { style: { fontSize: '17px', fontWeight: 700 } }, props.title),\n props.desc\n ? h(\n 'p',\n {\n style: {\n margin: '7px 0 0',\n color: 'var(--text-dim)',\n fontSize: '13.5px',\n lineHeight: 1.6,\n },\n },\n props.desc,\n )\n : null,\n slots.action\n ? h(\n 'div',\n {\n style: {\n marginTop: '20px',\n display: 'flex',\n gap: '8px',\n justifyContent: 'center',\n },\n },\n slots.action(),\n )\n : null,\n ]),\n ],\n );\n },\n});\n\nexport interface AccordionItem {\n title: string;\n body: string;\n}\n\nexport const Accordion = defineComponent({\n name: 'VspAccordion',\n props: {\n items: { type: Array as PropType<AccordionItem[]>, default: () => [] },\n multiple: Boolean,\n defaultOpen: { type: Array as PropType<number[]>, default: () => [] },\n },\n setup(props) {\n const open = ref(new Set<number>(props.defaultOpen));\n const toggle = (i: number) => {\n const s = open.value;\n const n = new Set<number>(props.multiple ? s : []);\n if (s.has(i)) n.delete(i);\n else n.add(i);\n open.value = n;\n };\n return () =>\n h(\n 'div',\n { class: 'ui-acc' },\n props.items.map((it, i) =>\n h('div', { key: i, class: cx('ui-acc-item', open.value.has(i) && 'open') }, [\n h('button', { type: 'button', class: 'ui-acc-head', onClick: () => toggle(i) }, [\n it.title,\n h(\n 'svg',\n {\n class: 'chev',\n viewBox: '0 0 24 24',\n width: 17,\n height: 17,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d: ICON_PATHS.chevR })],\n ),\n ]),\n h('div', { class: 'ui-acc-bodywrap' }, [\n h('div', null, [h('div', { class: 'ui-acc-body' }, it.body)]),\n ]),\n ]),\n ),\n );\n },\n});\n\ntype Pt = [number, number];\n/** Smooth (cubic) SVG path through points. */\nexport function smoothPath(pts: Pt[]): string {\n if (pts.length < 2) return '';\n let d = `M ${pts[0]![0]} ${pts[0]![1]}`;\n for (let i = 0; i < pts.length - 1; i++) {\n const [x0, y0] = pts[i]!;\n const [x1, y1] = pts[i + 1]!;\n const cx = (x0 + x1) / 2;\n d += ` C ${cx} ${y0} ${cx} ${y1} ${x1} ${y1}`;\n }\n return d;\n}\n\nexport const Sparkline = defineComponent({\n name: 'VspSparkline',\n props: {\n data: { type: Array as PropType<number[]>, default: () => [] },\n color: { type: String, default: 'var(--accent)' },\n w: { type: Number, default: 110 },\n h: { type: Number, default: 34 },\n fill: { type: Boolean, default: true },\n },\n setup(props) {\n const gid = 'spk' + useId().replace(/[^a-zA-Z0-9]/g, '');\n return () => {\n const data = props.data;\n const min = Math.min(...data);\n const max = Math.max(...data);\n const rng = max - min || 1;\n const pts: Pt[] = data.map((v, i) => [\n (i / (data.length - 1)) * props.w,\n props.h - 3 - ((v - min) / rng) * (props.h - 6),\n ]);\n const d = smoothPath(pts);\n const last = pts[pts.length - 1] ?? [0, 0];\n return h(\n 'svg',\n {\n width: props.w,\n height: props.h,\n viewBox: `0 0 ${props.w} ${props.h}`,\n style: { display: 'block', overflow: 'visible' },\n },\n [\n props.fill\n ? h('defs', null, [\n h('linearGradient', { id: gid, x1: '0', x2: '0', y1: '0', y2: '1' }, [\n h('stop', { offset: '0', 'stop-color': props.color, 'stop-opacity': '0.28' }),\n h('stop', { offset: '1', 'stop-color': props.color, 'stop-opacity': '0' }),\n ]),\n ])\n : null,\n props.fill\n ? h('path', {\n d: `${d} L ${props.w} ${props.h} L 0 ${props.h} Z`,\n fill: `url(#${gid})`,\n })\n : null,\n h('path', {\n d,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n }),\n h('circle', { cx: last[0], cy: last[1], r: '2.6', fill: props.color }),\n ],\n );\n };\n },\n});\n\nexport interface DonutDatum {\n label: string;\n value: number;\n color: string;\n}\n\nexport const Donut = defineComponent({\n name: 'VspDonut',\n props: {\n data: { type: Array as PropType<DonutDatum[]>, default: () => [] },\n size: { type: Number, default: 168 },\n thickness: { type: Number, default: 22 },\n },\n setup(props) {\n return () => {\n const total = props.data.reduce((s, d) => s + d.value, 0) || 1;\n const r = (props.size - props.thickness) / 2;\n const c = props.size / 2;\n const circ = 2 * Math.PI * r;\n let acc = 0;\n const segs = props.data.map((d, i) => {\n const len = (d.value / total) * circ;\n const seg = h('circle', {\n key: i,\n cx: c,\n cy: c,\n r,\n fill: 'none',\n stroke: d.color,\n 'stroke-width': props.thickness,\n 'stroke-dasharray': `${len - 2.5} ${circ - len + 2.5}`,\n 'stroke-dashoffset': -acc,\n 'stroke-linecap': 'round',\n });\n acc += len;\n return seg;\n });\n return h('div', { style: { display: 'flex', alignItems: 'center', gap: '22px' } }, [\n h(\n 'svg',\n {\n width: props.size,\n height: props.size,\n style: { transform: 'rotate(-90deg)', flexShrink: 0 },\n },\n [\n h('circle', {\n cx: c,\n cy: c,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n ...segs,\n ],\n ),\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '9px', flex: 1 } },\n props.data.map((d, i) =>\n h(\n 'div',\n {\n key: i,\n style: { display: 'flex', alignItems: 'center', gap: '9px', fontSize: '12.5px' },\n },\n [\n h('i', {\n style: {\n width: '9px',\n height: '9px',\n borderRadius: '3px',\n background: d.color,\n flexShrink: 0,\n },\n }),\n h('span', { style: { color: 'var(--text-dim)', flex: 1 } }, d.label),\n h(\n 'span',\n { class: 'mono tnum', style: { fontWeight: 600 } },\n `${Math.round((d.value / total) * 100)}%`,\n ),\n ],\n ),\n ),\n ),\n ]);\n };\n },\n});\n\nexport const StatCard = defineComponent({\n name: 'VspStatCard',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n spark: { type: Array as PropType<number[]>, default: undefined },\n sparkColor: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n class: 'card card-pad vsp-rise',\n style: { display: 'flex', flexDirection: 'column', gap: '14px' },\n },\n [\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' } },\n [\n h('div', { style: { display: 'flex', alignItems: 'center', gap: '10px' } }, [\n h(\n 'span',\n {\n style: {\n width: '34px',\n height: '34px',\n borderRadius: 'var(--r-sm)',\n display: 'grid',\n placeItems: 'center',\n background: 'color-mix(in oklab, var(--accent) 13%, transparent)',\n color: 'var(--accent)',\n },\n },\n slots.icon?.(),\n ),\n h('span', { class: 'eyebrow' }, props.label),\n ]),\n props.delta != null\n ? h(\n 'span',\n { class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg') },\n [\n svgIcon(\n props.deltaDir === 'up' ? 'M12 19V5M5 12l7-7 7 7' : 'M12 5v14M5 12l7 7 7-7',\n 11,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n h(\n 'div',\n {\n style: {\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: '12px',\n },\n },\n [\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n fontSize: '30px',\n fontWeight: 800,\n letterSpacing: '-.02em',\n lineHeight: 1,\n },\n },\n props.value,\n ),\n props.spark ? h(Sparkline, { data: props.spark, color: props.sparkColor }) : null,\n ],\n ),\n ],\n );\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,iBAA8D;AAE9D,IAAM,KAAK,IAAI,UAAiD,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAMvF,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS,EAAE,MAAM,QAAmC,SAAS,QAAQ;AAAA,IACrE,MAAM,EAAE,MAAM,QAA0B,SAAS,OAAU;AAAA,IAC3D,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO,GAAG,OAAO,OAAO,MAAM,OAAO,IAAI,MAAM,SAAS,QAAQ,QAAQ;AAAA,QACxE,UAAU,MAAM,YAAY,MAAM;AAAA,QAClC,GAAG;AAAA,MACL;AAAA,MACA;AAAA,QACE,MAAM,cACF,cAAE,QAAQ,EAAE,OAAO,cAAc,eAAe,OAAO,CAAC,IACxD,MAAM,UAAU;AAAA,QACpB,MAAM,UAAU;AAAA,QAChB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU,EAAE;AAAA,EACrD,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,WAAO,UACL,cAAE,UAAU,EAAE,OAAO,gBAAgB,MAAM,UAAU,cAAc,MAAM,OAAO,GAAG,MAAM,GAAG;AAAA,MAC1F,MAAM,UAAU;AAAA,IAClB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAA+B,SAAS,QAAQ;AAAA,IAC9D,KAAK;AAAA,EACP;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,SAAS,MAAM,IAAI,EAAE,EAAE,GAAG;AAAA,MACvD,MAAM,UAAM,cAAE,GAAG,IAAI;AAAA,MACrB,MAAM,UAAU;AAAA,IAClB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,UAAM,4BAAgB;AAAA,EACjC,MAAM;AAAA,EACN,OAAO,CAAC,QAAQ;AAAA,EAChB,MAAM,OAAO,EAAE,OAAO,KAAK,GAAG;AAC5B,WAAO,UACL,cAAE,QAAQ,EAAE,OAAO,SAAS,GAAG;AAAA,MAC7B,MAAM,UAAU;AAAA,UAChB,cAAE,UAAU,EAAE,MAAM,UAAU,cAAc,UAAU,SAAS,MAAM,KAAK,QAAQ,EAAE,GAAG,MAAG;AAAA,IAC5F,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,UAAM,4BAAgB;AAAA,EACjC,MAAM;AAAA,EACN,MAAM,GAAG,EAAE,MAAM,GAAG;AAClB,WAAO,UAAM,cAAE,OAAO,EAAE,OAAO,SAAS,GAAG,MAAM,UAAU,CAAC;AAAA,EAC9D;AACF,CAAC;AAEM,IAAM,cAAU,4BAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO,EAAE,UAAU,QAAQ;AAAA,EAC3B,MAAM,OAAO;AACX,WAAO,UAAM,cAAE,MAAM,EAAE,OAAO,GAAG,cAAc,MAAM,YAAY,GAAG,EAAE,CAAC;AAAA,EACzE;AACF,CAAC;AAEM,IAAM,cAAU,4BAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO,EAAE,MAAM,EAAE,MAAM,QAA0B,SAAS,OAAU,EAAE;AAAA,EACtE,MAAM,OAAO;AACX,WAAO,UACL,cAAE,QAAQ,EAAE,OAAO,GAAG,cAAc,MAAM,SAAS,QAAQ,IAAI,GAAG,eAAe,OAAO,CAAC;AAAA,EAC7F;AACF,CAAC;AAEM,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO,EAAE,KAAK,QAAQ;AAAA,EACtB,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,MAAM,OAAO,UAAU,GAAG,GAAG,MAAM,GAAG,MAAM,UAAU,CAAC;AAAA,EACxF;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC3C;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,YAAY,GAAG;AAAA,UAC/B,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG;AAAA,YACnC,cAAE,OAAO,EAAE,OAAO,MAAM,GAAG,MAAM,KAAK;AAAA,QACtC,MAAM,WACF,cAAE,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,WAAW,MAAM,EAAE,GAAG,MAAM,IAAI,IACtE;AAAA,MACN,CAAC;AAAA,MACD,MAAM,YAAQ,cAAE,OAAO,EAAE,OAAO,iBAAiB,CAAC,IAAI;AAAA,MACtD,MAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAA+B,SAAS,OAAO;AAAA,IAC7D,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC5C;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,GAAG,YAAY,MAAM,IAAI,EAAE,GAAG;AAAA,MAC9C,MAAM,OAAO;AAAA,UACb,cAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG;AAAA,QAC/B,MAAM,YAAQ,cAAE,OAAO,EAAE,OAAO,iBAAiB,GAAG,MAAM,KAAK,IAAI;AAAA,QACnE,MAAM,cAAU,cAAE,OAAO,EAAE,OAAO,gBAAgB,GAAG,MAAM,QAAQ,CAAC,IAAI;AAAA,MAC1E,CAAC;AAAA,MACD,MAAM,SAAS;AAAA,IACjB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,UAAU;AAAA,IACV,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACzC,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,SAAS,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,WAAW,GAAG;AAAA,MAC9B,MAAM,YACF,cAAE,SAAS,EAAE,OAAO,YAAY,KAAK,MAAM,QAAQ,GAAG;AAAA,YACpD,cAAE,QAAQ,MAAM;AAAA,UACd,MAAM;AAAA,UACN,MAAM,eAAW,cAAE,QAAQ,EAAE,OAAO,MAAM,GAAG,IAAI,IAAI;AAAA,QACvD,CAAC;AAAA,MACH,CAAC,IACD;AAAA,MACJ,MAAM,UAAU;AAAA,MAChB,MAAM,SAAS,MAAM,WACjB,cAAE,QAAQ,EAAE,OAAO,GAAG,WAAW,MAAM,SAAS,KAAK,EAAE,GAAG,MAAM,SAAS,MAAM,IAAI,IACnF;AAAA,IACN,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IACxC,SAAS;AAAA,EACX;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG;AAC5B,WAAO,UACL,cAAE,SAAS;AAAA,MACT,OAAO,GAAG,YAAY,MAAM,WAAW,SAAS;AAAA,MAChD,OAAO,MAAM;AAAA,MACb,SAAS,CAAC,MAAa,KAAK,qBAAsB,EAAE,OAA4B,KAAK;AAAA,MACrF,GAAG;AAAA,IACL,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,SAAS,GAAG,EAAE;AAAA,EACnD,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,OAAO,KAAK,GAAG;AAC5B,WAAO,UACL,cAAE,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,MACb,SAAS,CAAC,MAAa,KAAK,qBAAsB,EAAE,OAA+B,KAAK;AAAA,MACxF,GAAG;AAAA,IACL,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,MAAM,EAAE,MAAM,QAA0B,SAAS,OAAU;AAAA,IAC3D,UAAU;AAAA,EACZ;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL,cAAE,UAAU;AAAA,MACV,MAAM;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,OAAO,GAAG,aAAa,MAAM,SAAS,QAAQ,MAAM,MAAM,cAAc,IAAI;AAAA,MAC5E,gBAAgB,OAAO,MAAM,UAAU;AAAA,MACvC,SAAS,MAAM,KAAK,qBAAqB,CAAC,MAAM,UAAU;AAAA,IAC5D,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,KAAK,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACxC,UAAU;AAAA,EACZ;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,UAAM,SAAS,MAAM;AACnB,UAAI,CAAC,MAAM,SAAU,MAAK,qBAAqB,CAAC,MAAM,UAAU;AAAA,IAClE;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,UAAU,OAAO,EAAE,SAAS,MAAM,WAAW,MAAM,EAAE,GAAG,SAAS,OAAO;AAAA,MACjF;AAAA,YACE,cAAE,QAAQ,EAAE,OAAO,GAAG,YAAY,MAAM,cAAc,IAAI,EAAE,CAAC;AAAA,YAC7D,cAAE,QAAQ,MAAM;AAAA,cACd,cAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,UAC3B,MAAM,UAAM,cAAE,QAAQ,EAAE,OAAO,aAAa,GAAG,MAAM,GAAG,IAAI;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAGD,IAAM,WAAW,CAAC,MAAqB,OAAO,MAAM,WAAW,IAAI,EAAE;AACrE,IAAM,WAAW,CAAC,MAAqB,OAAO,MAAM,WAAW,IAAI,EAAE;AAE9D,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,KAAK,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC1C;AAAA,EACA,OAAO,CAAC,QAAQ;AAAA,EAChB,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,SAAS,CAAC,MAAa;AACrB,YAAE,eAAe;AACjB,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,MACA;AAAA,YACE,cAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,MAAM,WAAW,IAAI,EAAE,CAAC;AAAA,YAC9D,cAAE,QAAQ,MAAM;AAAA,cACd,cAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,UAC3B,MAAM,UAAM,cAAE,QAAQ,EAAE,OAAO,aAAa,GAAG,MAAM,GAAG,IAAI;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC/C,SAAS,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE;AAAA,EACxE;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO,EAAE;AAAA,MACnE,MAAM,QAAQ;AAAA,QAAI,CAAC,UACjB,cAAE,OAAO;AAAA,UACP,KAAK,SAAS,CAAC;AAAA,UACf,OAAO,SAAS,CAAC;AAAA,UACjB,KAAK,OAAO,MAAM,WAAW,EAAE,MAAM;AAAA,UACrC,SAAS,MAAM,eAAe,SAAS,CAAC;AAAA,UACxC,UAAU,MAAM,KAAK,qBAAqB,SAAS,CAAC,CAAC;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACvC,KAAK,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAChC,KAAK,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IAClC,MAAM,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACnC;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL,cAAE,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,MACb,KAAK,MAAM;AAAA,MACX,KAAK,MAAM;AAAA,MACX,MAAM,MAAM;AAAA,MACZ,SAAS,CAAC,MACR,KAAK,qBAAqB,OAAQ,EAAE,OAA4B,KAAK,CAAC;AAAA,IAC1E,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,mBAAe,4BAAgB;AAAA,EAC1C,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC/C,SAAS,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE;AAAA,EACxE;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG;AAC5B,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO,MAAM;AAAA,QACb,UAAU,CAAC,MAAa,KAAK,qBAAsB,EAAE,OAA6B,KAAK;AAAA,QACvF,GAAG;AAAA,MACL;AAAA,MACA,MAAM,QAAQ;AAAA,QAAI,CAAC,UACjB,cAAE,UAAU,EAAE,KAAK,SAAS,CAAC,GAAG,OAAO,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;AAAA,MACnE;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,KAAK,CAAC,MAAwB,OAAO,MAAM,WAAW,GAAG,CAAC,OAAO;AAEhE,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAClC,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACzC,QAAQ,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACrC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,SAAS,OAAO,EAAE,QAAQ,GAAG,MAAM,MAAM,EAAE,EAAE,GAAG;AAAA,UAChE,cAAE,KAAK;AAAA,QACL,OAAO;AAAA,UACL,OAAO,GAAG,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,UACpC,YAAY,MAAM;AAAA,UAClB,YAAY;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG,EAAE,MAAM,CAAC,QAAQ,MAAM,GAAgC,SAAS,OAAO;AAAA,IAC1E,GAAG,EAAE,MAAM,CAAC,QAAQ,MAAM,GAAgC,SAAS,GAAG;AAAA,IACtE,GAAG,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EAChC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL,cAAE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,EAAE;AAAA,IAC9E,CAAC;AAAA,EACL;AACF,CAAC;AAED,IAAM,aAAa,CAAC,SAClB,KACG,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACtB,MAAM,GAAG,CAAC,EACV,KAAK,EAAE,EACP,YAAY;AAOV,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAQ,UAAU,KAAK;AAAA,IACrC,KAAK,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAChC,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EACpC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,UACL,OAAO,GAAG,MAAM,IAAI;AAAA,UACpB,QAAQ,GAAG,MAAM,IAAI;AAAA,UACrB,UAAU,GAAG,MAAM,OAAO,IAAI;AAAA,UAC9B,YAAY,2CAA2C,MAAM,GAAG,uBAAuB,MAAM,MAAM,MAAM,GAAG;AAAA,QAC9G;AAAA,MACF;AAAA,MACA,WAAW,MAAM,IAAI;AAAA,IACvB;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,kBAAc,4BAAgB;AAAA,EACzC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,QAAQ,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC/D,KAAK,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAChC,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EACpC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,MAAM,GAAG;AAC7C,YAAM,QAAQ,MAAM,OAAO,SAAS,MAAM;AAC1C,iBAAO,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,EAAE,GAAG;AAAA,QACpE,GAAG,MAAM;AAAA,UAAI,CAAC,GAAG,UACf;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK;AAAA,cACL,OAAO;AAAA,gBACL,YAAY,IAAI,UAAU;AAAA,gBAC1B,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,UAAU;AAAA,gBACV,QAAQ,MAAM,SAAS;AAAA,cACzB;AAAA,YACF;AAAA,YACA,KAAC,cAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,EAAE,OAAO,GAAG,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,UACjE;AAAA,QACF;AAAA,QACA,QAAQ,QACJ;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,OAAO,GAAG,MAAM,IAAI;AAAA,cACpB,QAAQ,GAAG,MAAM,IAAI;AAAA,cACrB,cAAc;AAAA,cACd,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU,GAAG,MAAM,OAAO,IAAI;AAAA,cAC9B,YAAY;AAAA,cACZ,OAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,IAAI,KAAK;AAAA,QACX,IACA;AAAA,MACN,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC/C,SAAS,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,EAClE;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,SAAS;AAAA,MAClB,MAAM,QAAQ;AAAA,QAAI,CAAC,UACjB;AAAA,UACE;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,GAAG,MAAM,eAAe,KAAK,IAAI;AAAA,YACxC,SAAS,MAAM,KAAK,qBAAqB,CAAC;AAAA,UAC5C;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,aAAa,EAAE,OAAO,mBAAmB,OAAO,iBAAiB,OAAO,kBAAkB;AAChG,IAAM,UAAU,CAAC,GAAW,OAAO,WACjC;AAAA,EACE;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAC,cAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnB;AAIK,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAA8B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC9D,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EACjD;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG;AAC5B,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,YAAY,SAAS,EAAE,GAAG;AAAA,MAC9D,GAAG,MAAM,KAAK,IAAI,CAAC,MAAM;AACvB,cAAM,KAAK,OAAO,MAAM,WAAW,IAAI,EAAE;AACzC,cAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,EAAE;AAC5C,cAAM,QAAQ,OAAO,MAAM,WAAW,EAAE,QAAQ;AAChD,mBAAO;AAAA,UACL;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,GAAG,UAAU,MAAM,eAAe,MAAM,IAAI;AAAA,YACnD,SAAS,MAAM,KAAK,qBAAqB,EAAE;AAAA,UAC7C;AAAA,UACA;AAAA,YACE;AAAA,YACA,SAAS,WACL,cAAE,QAAQ,EAAE,OAAO,qBAAqB,OAAO,EAAE,YAAY,MAAM,EAAE,GAAG,KAAK,IAC7E;AAAA,UACN;AAAA,QACF;AAAA,MACF,CAAC;AAAA,MACD,MAAM,YAAQ,cAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI;AAAA,MACjD,MAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE,EAAE;AAAA,EACzE,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,UAAU,SAAS,EAAE;AAAA,MACnF,MAAM,MAAM,QAAQ,CAAC,IAAI,MAAM;AAC7B,cAAM,OAAO,MAAM,MAAM,MAAM,SAAS;AACxC,eAAO;AAAA,UACL,IAAI,QACA;AAAA,YACE;AAAA,YACA,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE,OAAO,qBAAqB,SAAS,OAAO,EAAE;AAAA,YACvE,CAAC,QAAQ,WAAW,OAAO,EAAE,CAAC;AAAA,UAChC,IACA;AAAA,cACJ;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK;AAAA,cACL,OAAO;AAAA,gBACL,OAAO,OAAO,gBAAgB;AAAA,gBAC9B,YAAY,OAAO,MAAM;AAAA,cAC3B;AAAA,YACF;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACvC,OAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACpC;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,MAAM;AACX,YAAM,OAAO,MAAM;AACnB,YAAM,OAAyB,CAAC;AAChC,eAAS,IAAI,GAAG,IAAI,MAAM,OAAO,KAAK;AACpC,YAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,EAAG,MAAK,KAAK,CAAC;AAAA,iBACnE,KAAK,KAAK,SAAS,CAAC,MAAM,SAAK,MAAK,KAAK,QAAG;AAAA,MACvD;AACA,iBAAO,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,KAAK,OAAO,YAAY,SAAS,EAAE,GAAG;AAAA,YAChF;AAAA,UACE;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,YACP,UAAU,SAAS;AAAA,YACnB,cAAc;AAAA,YACd,SAAS,MAAM,KAAK,qBAAqB,OAAO,CAAC;AAAA,UACnD;AAAA,UACA,CAAC,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC5B;AAAA,QACA,GAAG,KAAK;AAAA,UAAI,CAAC,GAAG,MACd,MAAM,eACF;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK,IAAI,CAAC;AAAA,cACV,OAAO;AAAA,cACP,OAAO,EAAE,SAAS,SAAS,OAAO,oBAAoB;AAAA,YACxD;AAAA,YACA;AAAA,UACF,QACA;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK;AAAA,cACL,MAAM;AAAA,cACN,OAAO,GAAG,OAAO,UAAU,MAAM,OAAO,gBAAgB,YAAY;AAAA,cACpE,OAAO,EAAE,UAAU,QAAQ,SAAS,EAAE;AAAA,cACtC,SAAS,MAAM,KAAK,qBAAqB,CAAC;AAAA,YAC5C;AAAA,YACA,IAAI;AAAA,UACN;AAAA,QACN;AAAA,YACA;AAAA,UACE;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,YACP,UAAU,QAAQ,MAAM,QAAQ;AAAA,YAChC,cAAc;AAAA,YACd,SAAS,MAAM,KAAK,qBAAqB,OAAO,CAAC;AAAA,UACnD;AAAA,UACA,CAAC,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,cAAU,4BAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC9D,SAAS,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACtC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,WAAW;AAAA,MACpB,MAAM,MAAM,QAAQ,CAAC,GAAG,MAAM;AAAA,QAC5B,IAAI,QACA,cAAE,OAAO,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,GAAG,eAAe,KAAK,MAAM,WAAW,MAAM,EAAE,CAAC,IACjF;AAAA,YACJ;AAAA,UACE;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,OAAO;AAAA,cACL;AAAA,cACA,IAAI,MAAM,WAAW;AAAA,cACrB,MAAM,MAAM,WAAW;AAAA,cACvB,IAAI,MAAM,WAAW;AAAA,YACvB;AAAA,UACF;AAAA,UACA;AAAA,gBACE,cAAE,QAAQ,EAAE,OAAO,cAAc,GAAG;AAAA,cAClC,IAAI,MAAM,UAAU,QAAQ,WAAW,KAAK,IAAI,IAAI;AAAA,YACtD,CAAC;AAAA,gBACD,cAAE,QAAQ,EAAE,OAAO,gBAAgB,GAAG,CAAC;AAAA,UACzC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,uBAAmB,4BAAgB;AAAA,EAC9C,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAClC,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IAClC,WAAW,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACtC,OAAO,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,IAChD,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC5C;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAC3C,YAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,iBAAO;AAAA,QACL;AAAA,QACA,EAAE,OAAO,EAAE,UAAU,YAAY,OAAO,GAAG,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,IAAI,EAAE,EAAE;AAAA,QACjF;AAAA,cACE;AAAA,YACE;AAAA,YACA,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,EAAE,WAAW,iBAAiB,EAAE;AAAA,YAChF;AAAA,kBACE,cAAE,UAAU;AAAA,gBACV,IAAI,MAAM,OAAO;AAAA,gBACjB,IAAI,MAAM,OAAO;AAAA,gBACjB;AAAA,gBACA,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB,MAAM;AAAA,cACxB,CAAC;AAAA,kBACD,cAAE,UAAU;AAAA,gBACV,IAAI,MAAM,OAAO;AAAA,gBACjB,IAAI,MAAM,OAAO;AAAA,gBACjB;AAAA,gBACA,MAAM;AAAA,gBACN,QAAQ,MAAM;AAAA,gBACd,gBAAgB,MAAM;AAAA,gBACtB,kBAAkB;AAAA,gBAClB,oBAAoB;AAAA,gBACpB,qBAAqB,QAAQ,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,gBAC9D,OAAO,EAAE,YAAY,iDAAiD;AAAA,cACxE,CAAC;AAAA,YACH;AAAA,UACF;AAAA,cACA;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,cACP,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,YAAY;AAAA,gBACZ,UAAU,GAAG,MAAM,OAAO,IAAI;AAAA,cAChC;AAAA,YACF;AAAA,YACA,MAAM,SAAS,GAAG,KAAK,MAAM,MAAM,KAAK,CAAC;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEM,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,UAAU,EAAE,MAAM,QAAmC,SAAS,KAAK;AAAA,IACnE,MAAM,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,EACjD;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,iBAAiB,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,EAAE;AAAA,MACxF;AAAA,QACE,MAAM,WACF;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,YAAY,uBAAuB,MAAM,IAAI;AAAA,cAC7C,OAAO,MAAM;AAAA,YACf;AAAA,UACF;AAAA,UACA,MAAM,KAAK;AAAA,QACb,IACA;AAAA,YACJ,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG;AAAA,cACnC,cAAE,OAAO,EAAE,OAAO,UAAU,GAAG,MAAM,KAAK;AAAA,cAC1C;AAAA,YACE;AAAA,YACA,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,YAAY,KAAK,OAAO,WAAW,MAAM,EAAE;AAAA,YACnF;AAAA,kBACE;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO;AAAA,kBACP,OAAO,EAAE,UAAU,QAAQ,YAAY,KAAK,eAAe,SAAS;AAAA,gBACtE;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,cACA,MAAM,SAAS,WACX;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO,GAAG,SAAS,MAAM,aAAa,OAAO,cAAc,WAAW;AAAA,kBACtE,OAAO,EAAE,SAAS,UAAU;AAAA,gBAC9B;AAAA,gBACA;AAAA,kBACE;AAAA,oBACE,MAAM,aAAa,OACf,0BACA;AAAA,oBACJ;AAAA,kBACF;AAAA,kBACA,MAAM;AAAA,gBACR;AAAA,cACF,IACA;AAAA,YACN;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,WAAW,CAAC,OAAO,WACvB;AAAA,EACE;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAC,cAAE,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,OAAG,cAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,CAAC;AACzE;AAEF,IAAM,UAAkC;AAAA,EACtC,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AACR;AASO,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE,EAAE;AAAA,EAC/E,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,QAAQ;AAAA,MACjB,MAAM,MAAM,IAAI,CAAC,IAAI,MAAM;AACzB,cAAM,IAAI,GAAG,OAAO,QAAQ,GAAG,IAAI,IAAI;AACvC,mBAAO,cAAE,OAAO,EAAE,KAAK,GAAG,OAAO,aAAa,GAAG;AAAA,cAC/C;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,cACP,OAAO,IACH;AAAA,gBACE,YAAY,uBAAuB,CAAC;AAAA,gBACpC,OAAO;AAAA,gBACP,aAAa,uBAAuB,CAAC;AAAA,cACvC,IACA;AAAA,YACN;AAAA,YACA,CAAC,SAAS,CAAC;AAAA,UACb;AAAA,cACA,cAAE,OAAO,EAAE,OAAO,aAAa,GAAG;AAAA,gBAChC;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO,EAAE,SAAS,QAAQ,YAAY,YAAY,KAAK,OAAO,UAAU,OAAO;AAAA,cACjF;AAAA,cACA;AAAA,oBACE,cAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,KAAK,UAAU,SAAS,EAAE,GAAG,GAAG,KAAK;AAAA,gBACtE,GAAG,WACC,cAAE,QAAQ,EAAE,OAAO,WAAW,OAAO,EAAE,YAAY,OAAO,EAAE,GAAG,GAAG,IAAI,IACtE;AAAA,cACN;AAAA,YACF;AAAA,YACA,GAAG,WACC;AAAA,cACE;AAAA,cACA,EAAE,OAAO,EAAE,UAAU,UAAU,OAAO,mBAAmB,WAAW,MAAM,EAAE;AAAA,cAC5E,GAAG;AAAA,YACL,IACA;AAAA,UACN,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,sBAAkB,4BAAgB;AAAA,EAC7C,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,OAAuC,SAAS,MAAM,CAAC,EAAE,EAAE;AAAA,EACnF,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,QAAQ;AAAA,MACjB,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;AACjC,cAAM,OAAO,MAAM,MAAM,MAAM,SAAS,IAAI,SAAS;AACrD,eAAO;AAAA,cACL,cAAE,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,cACxC,cAAE,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAED,IAAM,cAAsC;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AACV;AACA,IAAM,SAAS;AACf,IAAM,aACJ;AAEK,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAgD,SAAS,OAAO;AAAA,IAC9E,aAAa;AAAA,EACf;AAAA,EACA,OAAO,CAAC,SAAS;AAAA,EACjB,MAAM,OAAO,EAAE,OAAO,KAAK,GAAG;AAC5B,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,GAAG,aAAa,MAAM,IAAI,EAAE,GAAG;AAAA,MAC/C,MAAM,OAAO,MAAM,KAAK,IAAI,QAAQ,YAAY,MAAM,IAAI,GAAI,EAAE;AAAA,UAChE,cAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,QAAQ,YAAY,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC;AAAA,MACrF,MAAM,SAAS;AAAA,MACf,MAAM,kBACF;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,cAAc;AAAA,UACd,SAAS,MAAM,KAAK,SAAS;AAAA,QAC/B;AAAA,QACA,CAAC,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACtB,IACA;AAAA,IACN,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACzC,SAAS;AAAA,EACX;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,SAAS,MAAM,UAAU,cAAc;AAAA,QACzC;AAAA,MACF;AAAA,MACA;AAAA,YACE,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,EAAE,GAAG;AAAA,cACzC;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,QAAQ;AAAA,gBACR,YAAY;AAAA,gBACZ,OAAO;AAAA,gBACP,QAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,MAAM,OAAO,MAAM,KAAK,IAAI,CAAC,QAAQ,YAAY,EAAE,CAAC;AAAA,UACtD;AAAA,cACA,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,YAAY,IAAI,EAAE,GAAG,MAAM,KAAK;AAAA,UACtE,MAAM,WACF;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,gBACL,QAAQ;AAAA,gBACR,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,MAAM;AAAA,UACR,IACA;AAAA,UACJ,MAAM,aACF;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,YACA,MAAM,OAAO;AAAA,UACf,IACA;AAAA,QACN,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAOM,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,OAAoC,SAAS,MAAM,CAAC,EAAE;AAAA,IACrE,UAAU;AAAA,IACV,aAAa,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,EACtE;AAAA,EACA,MAAM,OAAO;AACX,UAAM,WAAO,gBAAI,IAAI,IAAY,MAAM,WAAW,CAAC;AACnD,UAAM,SAAS,CAAC,MAAc;AAC5B,YAAM,IAAI,KAAK;AACf,YAAM,IAAI,IAAI,IAAY,MAAM,WAAW,IAAI,CAAC,CAAC;AACjD,UAAI,EAAE,IAAI,CAAC,EAAG,GAAE,OAAO,CAAC;AAAA,UACnB,GAAE,IAAI,CAAC;AACZ,WAAK,QAAQ;AAAA,IACf;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,SAAS;AAAA,MAClB,MAAM,MAAM;AAAA,QAAI,CAAC,IAAI,UACnB,cAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,eAAe,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,GAAG;AAAA,cAC1E,cAAE,UAAU,EAAE,MAAM,UAAU,OAAO,eAAe,SAAS,MAAM,OAAO,CAAC,EAAE,GAAG;AAAA,YAC9E,GAAG;AAAA,gBACH;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO;AAAA,gBACP,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,kBAAkB;AAAA,gBAClB,mBAAmB;AAAA,cACrB;AAAA,cACA,KAAC,cAAE,QAAQ,EAAE,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,YACrC;AAAA,UACF,CAAC;AAAA,cACD,cAAE,OAAO,EAAE,OAAO,kBAAkB,GAAG;AAAA,gBACrC,cAAE,OAAO,MAAM,KAAC,cAAE,OAAO,EAAE,OAAO,cAAc,GAAG,GAAG,IAAI,CAAC,CAAC;AAAA,UAC9D,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAIM,SAAS,WAAW,KAAmB;AAC5C,MAAI,IAAI,SAAS,EAAG,QAAO;AAC3B,MAAI,IAAI,KAAK,IAAI,CAAC,EAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAG,CAAC,CAAC;AACrC,WAAS,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK;AACvC,UAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACtB,UAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;AAC1B,UAAMA,OAAM,KAAK,MAAM;AACvB,SAAK,MAAMA,GAAE,IAAI,EAAE,IAAIA,GAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,EAC7C;AACA,SAAO;AACT;AAEO,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC7D,OAAO,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,IAChD,GAAG,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IAChC,GAAG,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IAC/B,MAAM,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EACvC;AAAA,EACA,MAAM,OAAO;AACX,UAAM,MAAM,YAAQ,kBAAM,EAAE,QAAQ,iBAAiB,EAAE;AACvD,WAAO,MAAM;AACX,YAAM,OAAO,MAAM;AACnB,YAAM,MAAM,KAAK,IAAI,GAAG,IAAI;AAC5B,YAAM,MAAM,KAAK,IAAI,GAAG,IAAI;AAC5B,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,MAAY,KAAK,IAAI,CAAC,GAAG,MAAM;AAAA,QAClC,KAAK,KAAK,SAAS,KAAM,MAAM;AAAA,QAChC,MAAM,IAAI,KAAM,IAAI,OAAO,OAAQ,MAAM,IAAI;AAAA,MAC/C,CAAC;AACD,YAAM,IAAI,WAAW,GAAG;AACxB,YAAM,OAAO,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,UACE,OAAO,MAAM;AAAA,UACb,QAAQ,MAAM;AAAA,UACd,SAAS,OAAO,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,UAClC,OAAO,EAAE,SAAS,SAAS,UAAU,UAAU;AAAA,QACjD;AAAA,QACA;AAAA,UACE,MAAM,WACF,cAAE,QAAQ,MAAM;AAAA,gBACd,cAAE,kBAAkB,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG;AAAA,kBACnE,cAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,MAAM,OAAO,gBAAgB,OAAO,CAAC;AAAA,kBAC5E,cAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,MAAM,OAAO,gBAAgB,IAAI,CAAC;AAAA,YAC3E,CAAC;AAAA,UACH,CAAC,IACD;AAAA,UACJ,MAAM,WACF,cAAE,QAAQ;AAAA,YACR,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,MAAM,CAAC;AAAA,YAC9C,MAAM,QAAQ,GAAG;AAAA,UACnB,CAAC,IACD;AAAA,cACJ,cAAE,QAAQ;AAAA,YACR;AAAA,YACA,MAAM;AAAA,YACN,QAAQ,MAAM;AAAA,YACd,gBAAgB;AAAA,YAChB,kBAAkB;AAAA,UACpB,CAAC;AAAA,cACD,cAAE,UAAU,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,OAAO,MAAM,MAAM,MAAM,CAAC;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAQM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAAiC,SAAS,MAAM,CAAC,EAAE;AAAA,IACjE,MAAM,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IACnC,WAAW,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EACzC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,QAAQ,MAAM,KAAK,OAAO,CAAC,GAAG,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK;AAC7D,YAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAC3C,YAAM,IAAI,MAAM,OAAO;AACvB,YAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,UAAI,MAAM;AACV,YAAM,OAAO,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM;AACpC,cAAM,MAAO,EAAE,QAAQ,QAAS;AAChC,cAAM,UAAM,cAAE,UAAU;AAAA,UACtB,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,UACN,QAAQ,EAAE;AAAA,UACV,gBAAgB,MAAM;AAAA,UACtB,oBAAoB,GAAG,MAAM,GAAG,IAAI,OAAO,MAAM,GAAG;AAAA,UACpD,qBAAqB,CAAC;AAAA,UACtB,kBAAkB;AAAA,QACpB,CAAC;AACD,eAAO;AACP,eAAO;AAAA,MACT,CAAC;AACD,iBAAO,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,EAAE,GAAG;AAAA,YACjF;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,MAAM;AAAA,YACb,QAAQ,MAAM;AAAA,YACd,OAAO,EAAE,WAAW,kBAAkB,YAAY,EAAE;AAAA,UACtD;AAAA,UACA;AAAA,gBACE,cAAE,UAAU;AAAA,cACV,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ;AAAA,cACA,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,gBAAgB,MAAM;AAAA,YACxB,CAAC;AAAA,YACD,GAAG;AAAA,UACL;AAAA,QACF;AAAA,YACA;AAAA,UACE;AAAA,UACA,EAAE,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO,MAAM,EAAE,EAAE;AAAA,UAC3E,MAAM,KAAK;AAAA,YAAI,CAAC,GAAG,UACjB;AAAA,cACE;AAAA,cACA;AAAA,gBACE,KAAK;AAAA,gBACL,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,UAAU,SAAS;AAAA,cACjF;AAAA,cACA;AAAA,oBACE,cAAE,KAAK;AAAA,kBACL,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAY,EAAE;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA,gBACF,CAAC;AAAA,oBACD,cAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,mBAAmB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;AAAA,oBACnE;AAAA,kBACE;AAAA,kBACA,EAAE,OAAO,aAAa,OAAO,EAAE,YAAY,IAAI,EAAE;AAAA,kBACjD,GAAG,KAAK,MAAO,EAAE,QAAQ,QAAS,GAAG,CAAC;AAAA,gBACxC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,UAAU,EAAE,MAAM,QAAmC,SAAS,KAAK;AAAA,IACnE,OAAO,EAAE,MAAM,OAA6B,SAAS,OAAU;AAAA,IAC/D,YAAY,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,EACvD;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO;AAAA,MACjE;AAAA,MACA;AAAA,YACE;AAAA,UACE;AAAA,UACA,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,gBAAgB,EAAE;AAAA,UACpF;AAAA,gBACE,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,EAAE,GAAG;AAAA,kBAC1E;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,YAAY;AAAA,oBACZ,OAAO;AAAA,kBACT;AAAA,gBACF;AAAA,gBACA,MAAM,OAAO;AAAA,cACf;AAAA,kBACA,cAAE,QAAQ,EAAE,OAAO,UAAU,GAAG,MAAM,KAAK;AAAA,YAC7C,CAAC;AAAA,YACD,MAAM,SAAS,WACX;AAAA,cACE;AAAA,cACA,EAAE,OAAO,GAAG,SAAS,MAAM,aAAa,OAAO,cAAc,WAAW,EAAE;AAAA,cAC1E;AAAA,gBACE;AAAA,kBACE,MAAM,aAAa,OAAO,0BAA0B;AAAA,kBACpD;AAAA,gBACF;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,YACF,IACA;AAAA,UACN;AAAA,QACF;AAAA,YACA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,KAAK;AAAA,YACP;AAAA,UACF;AAAA,UACA;AAAA,gBACE;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO;AAAA,gBACP,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,eAAe;AAAA,kBACf,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,MAAM;AAAA,YACR;AAAA,YACA,MAAM,YAAQ,cAAE,WAAW,EAAE,MAAM,MAAM,OAAO,OAAO,MAAM,WAAW,CAAC,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACJ;AACF,CAAC;","names":["cx"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @vespera-ui/vue — Vue 3 components for the Vespera design system.\n *\n * Thin wrappers over `@vespera-ui/css`: they emit the same `.vsp-`/`ui-` classes\n * as `@vespera-ui/react`, so theming via `.vsp-root` data-attributes works\n * identically. Import the CSS once and wrap your app in a themed root.\n */\nimport { defineComponent, h, ref, useId, type PropType, type Component } from 'vue';\n\nconst cx = (...parts: (string | false | null | undefined)[]) => parts.filter(Boolean).join(' ');\n\nexport type ButtonVariant = 'primary' | 'ghost' | 'subtle' | 'outline' | 'danger';\nexport type BadgeTone = 'pos' | 'neg' | 'warn' | 'info' | 'muted';\nexport type AlertTone = 'info' | 'pos' | 'warn' | 'neg';\n\nexport const Button = defineComponent({\n name: 'VspButton',\n props: {\n variant: { type: String as PropType<ButtonVariant>, default: 'ghost' },\n size: { type: String as PropType<'sm'>, default: undefined },\n loading: Boolean,\n disabled: Boolean,\n },\n setup(props, { slots, attrs }) {\n return () =>\n h(\n 'button',\n {\n class: cx('btn', `btn-${props.variant}`, props.size === 'sm' && 'btn-sm'),\n disabled: props.disabled || props.loading,\n ...attrs,\n },\n [\n props.loading\n ? h('span', { class: 'ui-spinner', 'aria-hidden': 'true' })\n : slots.leading?.(),\n slots.default?.(),\n slots.trailing?.(),\n ],\n );\n },\n});\n\nexport const IconButton = defineComponent({\n name: 'VspIconButton',\n props: { label: { type: String, default: undefined } },\n setup(props, { slots, attrs }) {\n return () =>\n h('button', { class: 'vsp-icon-btn', type: 'button', 'aria-label': props.label, ...attrs }, [\n slots.default?.(),\n ]);\n },\n});\n\nexport const Badge = defineComponent({\n name: 'VspBadge',\n props: {\n tone: { type: String as PropType<BadgeTone>, default: 'muted' },\n dot: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h('span', { class: cx('badge', `badge-${props.tone}`) }, [\n props.dot ? h('i') : null,\n slots.default?.(),\n ]);\n },\n});\n\nexport const Tag = defineComponent({\n name: 'VspTag',\n emits: ['remove'],\n setup(props, { slots, emit }) {\n return () =>\n h('span', { class: 'ui-tag' }, [\n slots.default?.(),\n h('button', { type: 'button', 'aria-label': 'Remove', onClick: () => emit('remove') }, '×'),\n ]);\n },\n});\n\nexport const Kbd = defineComponent({\n name: 'VspKbd',\n setup(_, { slots }) {\n return () => h('kbd', { class: 'ui-kbd' }, slots.default?.());\n },\n});\n\nexport const Divider = defineComponent({\n name: 'VspDivider',\n props: { vertical: Boolean },\n setup(props) {\n return () => h('hr', { class: cx('ui-divider', props.vertical && 'v') });\n },\n});\n\nexport const Spinner = defineComponent({\n name: 'VspSpinner',\n props: { size: { type: String as PropType<'lg'>, default: undefined } },\n setup(props) {\n return () =>\n h('span', { class: cx('ui-spinner', props.size === 'lg' && 'lg'), 'aria-hidden': 'true' });\n },\n});\n\nexport const Card = defineComponent({\n name: 'VspCard',\n props: { pad: Boolean },\n setup(props, { slots, attrs }) {\n return () =>\n h('div', { class: cx('card', props.pad && 'card-pad'), ...attrs }, slots.default?.());\n },\n});\n\nexport const CardHead = defineComponent({\n name: 'VspCardHead',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'card-head' }, [\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'ttl' }, props.title),\n props.desc\n ? h('div', { class: 'eyebrow', style: { marginTop: '3px' } }, props.desc)\n : null,\n ]),\n slots.right ? h('div', { class: 'vsp-top-spacer' }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Alert = defineComponent({\n name: 'VspAlert',\n props: {\n tone: { type: String as PropType<AlertTone>, default: 'info' },\n title: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: cx('ui-alert', props.tone) }, [\n slots.icon?.(),\n h('div', { style: { flex: 1 } }, [\n props.title ? h('div', { class: 'ui-alert-title' }, props.title) : null,\n slots.default ? h('div', { class: 'ui-alert-body' }, slots.default()) : null,\n ]),\n slots.action?.(),\n ]);\n },\n});\n\nexport const Field = defineComponent({\n name: 'VspField',\n props: {\n label: { type: String, default: undefined },\n required: Boolean,\n hint: { type: String, default: undefined },\n error: { type: String, default: undefined },\n htmlFor: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n return () =>\n h('div', { class: 'ui-field' }, [\n props.label\n ? h('label', { class: 'ui-label', for: props.htmlFor }, [\n h('span', null, [\n props.label,\n props.required ? h('span', { class: 'req' }, ' *') : null,\n ]),\n ])\n : null,\n slots.default?.(),\n props.error || props.hint\n ? h('span', { class: cx('ui-hint', props.error && 'err') }, props.error || props.hint)\n : null,\n ]);\n },\n});\n\nexport const Input = defineComponent({\n name: 'VspInput',\n props: {\n modelValue: { type: String, default: '' },\n invalid: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h('input', {\n class: cx('ui-input', props.invalid && 'invalid'),\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLInputElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Textarea = defineComponent({\n name: 'VspTextarea',\n props: { modelValue: { type: String, default: '' } },\n emits: ['update:modelValue'],\n setup(props, { attrs, emit }) {\n return () =>\n h('textarea', {\n class: 'ui-textarea',\n value: props.modelValue,\n onInput: (e: Event) => emit('update:modelValue', (e.target as HTMLTextAreaElement).value),\n ...attrs,\n });\n },\n});\n\nexport const Switch = defineComponent({\n name: 'VspSwitch',\n props: {\n modelValue: Boolean,\n size: { type: String as PropType<'sm'>, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('button', {\n type: 'button',\n disabled: props.disabled,\n class: cx('ui-switch', props.size === 'sm' && 'sm', props.modelValue && 'on'),\n 'aria-pressed': String(props.modelValue),\n onClick: () => emit('update:modelValue', !props.modelValue),\n });\n },\n});\n\nexport const Checkbox = defineComponent({\n name: 'VspCheckbox',\n props: {\n modelValue: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n disabled: Boolean,\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const toggle = () => {\n if (!props.disabled) emit('update:modelValue', !props.modelValue);\n };\n return () =>\n h(\n 'label',\n { class: 'ui-opt', style: { opacity: props.disabled ? 0.5 : 1 }, onClick: toggle },\n [\n h('span', { class: cx('ui-check', props.modelValue && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport type SelectOption = string | { value: string; label: string; sub?: string };\nconst optValue = (o: SelectOption) => (typeof o === 'string' ? o : o.value);\nconst optLabel = (o: SelectOption) => (typeof o === 'string' ? o : o.label);\n\nexport const Radio = defineComponent({\n name: 'VspRadio',\n props: {\n checked: Boolean,\n label: { type: String, default: undefined },\n sub: { type: String, default: undefined },\n },\n emits: ['select'],\n setup(props, { emit }) {\n return () =>\n h(\n 'label',\n {\n class: 'ui-opt',\n onClick: (e: Event) => {\n e.preventDefault();\n emit('select');\n },\n },\n [\n h('span', { class: cx('ui-radio-dot', props.checked && 'on') }),\n h('span', null, [\n h('span', null, props.label),\n props.sub ? h('span', { class: 'ui-opt-sub' }, props.sub) : null,\n ]),\n ],\n );\n },\n});\n\nexport const RadioGroup = defineComponent({\n name: 'VspRadioGroup',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '12px' } },\n props.options.map((o) =>\n h(Radio, {\n key: optValue(o),\n label: optLabel(o),\n sub: typeof o === 'object' ? o.sub : undefined,\n checked: props.modelValue === optValue(o),\n onSelect: () => emit('update:modelValue', optValue(o)),\n }),\n ),\n );\n },\n});\n\nexport const Slider = defineComponent({\n name: 'VspSlider',\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n step: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h('input', {\n type: 'range',\n class: 'ui-slider',\n value: props.modelValue,\n min: props.min,\n max: props.max,\n step: props.step,\n onInput: (e: Event) =>\n emit('update:modelValue', Number((e.target as HTMLInputElement).value)),\n });\n },\n});\n\nexport const NativeSelect = defineComponent({\n name: 'VspNativeSelect',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<SelectOption[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, attrs }) {\n return () =>\n h(\n 'select',\n {\n class: 'ui-select',\n value: props.modelValue,\n onChange: (e: Event) => emit('update:modelValue', (e.target as HTMLSelectElement).value),\n ...attrs,\n },\n props.options.map((o) =>\n h('option', { key: optValue(o), value: optValue(o) }, optLabel(o)),\n ),\n );\n },\n});\n\nconst px = (v: string | number) => (typeof v === 'number' ? `${v}px` : v);\n\nexport const Progress = defineComponent({\n name: 'VspProgress',\n props: {\n value: { type: Number, default: 0 },\n tone: { type: String, default: undefined },\n height: { type: Number, default: 6 },\n },\n setup(props) {\n return () =>\n h('div', { class: 'meter', style: { height: px(props.height) } }, [\n h('i', {\n style: {\n width: `${Math.min(100, props.value)}%`,\n background: props.tone,\n transition: 'width .3s',\n },\n }),\n ]);\n },\n});\n\nexport const Skeleton = defineComponent({\n name: 'VspSkeleton',\n props: {\n w: { type: [String, Number] as PropType<string | number>, default: '100%' },\n h: { type: [String, Number] as PropType<string | number>, default: 12 },\n r: { type: Number, default: 7 },\n },\n setup(props) {\n return () =>\n h('div', {\n class: 'skel',\n style: { width: px(props.w), height: px(props.h), borderRadius: px(props.r) },\n });\n },\n});\n\nconst initialsOf = (name: string) =>\n name\n .split(' ')\n .map((s) => s.charAt(0))\n .slice(0, 2)\n .join('')\n .toUpperCase();\n\nexport interface Person {\n name: string;\n hue?: number;\n}\n\nexport const Avatar = defineComponent({\n name: 'VspAvatar',\n props: {\n name: { type: String, required: true },\n hue: { type: Number, default: 0 },\n size: { type: Number, default: 34 },\n },\n setup(props) {\n return () =>\n h(\n 'span',\n {\n class: 'vsp-avatar',\n style: {\n width: px(props.size),\n height: px(props.size),\n fontSize: px(props.size * 0.38),\n background: `linear-gradient(140deg, oklch(0.62 0.16 ${props.hue}), oklch(0.55 0.17 ${(props.hue + 50) % 360}))`,\n },\n },\n initialsOf(props.name),\n );\n },\n});\n\nexport const AvatarGroup = defineComponent({\n name: 'VspAvatarGroup',\n props: {\n people: { type: Array as PropType<Person[]>, default: () => [] },\n max: { type: Number, default: 4 },\n size: { type: Number, default: 32 },\n },\n setup(props) {\n return () => {\n const shown = props.people.slice(0, props.max);\n const extra = props.people.length - shown.length;\n return h('div', { style: { display: 'flex', alignItems: 'center' } }, [\n ...shown.map((p, i) =>\n h(\n 'span',\n {\n key: i,\n style: {\n marginLeft: i ? '-10px' : '0',\n border: '2px solid var(--surface-1)',\n borderRadius: '50%',\n position: 'relative',\n zIndex: shown.length - i,\n },\n },\n [h(Avatar, { name: p.name, hue: p.hue ?? 0, size: props.size })],\n ),\n ),\n extra > 0\n ? h(\n 'span',\n {\n style: {\n marginLeft: '-10px',\n width: px(props.size),\n height: px(props.size),\n borderRadius: '50%',\n display: 'grid',\n placeItems: 'center',\n background: 'var(--surface-3)',\n border: '2px solid var(--surface-1)',\n fontSize: px(props.size * 0.34),\n fontWeight: 700,\n color: 'var(--text-dim)',\n },\n },\n `+${extra}`,\n )\n : null,\n ]);\n };\n },\n});\n\nexport const Segmented = defineComponent({\n name: 'VspSegmented',\n props: {\n modelValue: { type: String, default: undefined },\n options: { type: Array as PropType<string[]>, default: () => [] },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () =>\n h(\n 'div',\n { class: 'ui-seg' },\n props.options.map((o) =>\n h(\n 'button',\n {\n key: o,\n type: 'button',\n class: cx(props.modelValue === o && 'on'),\n onClick: () => emit('update:modelValue', o),\n },\n o,\n ),\n ),\n );\n },\n});\n\nconst ICON_PATHS = { chevL: 'M15 18l-6-6 6-6', chevR: 'M9 18l6-6-6-6', check: 'M20 6L9 17l-5-5' };\nconst svgIcon = (d: string, size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d })],\n );\n\nexport type TabItem = string | { value: string; label: string; count?: number };\n\nexport const Tabs = defineComponent({\n name: 'VspTabs',\n props: {\n tabs: { type: Array as PropType<TabItem[]>, default: () => [] },\n modelValue: { type: String, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n return () =>\n h('div', { class: 'ui-tabs', style: { alignItems: 'center' } }, [\n ...props.tabs.map((t) => {\n const id = typeof t === 'string' ? t : t.value;\n const label = typeof t === 'string' ? t : t.label;\n const count = typeof t === 'object' ? t.count : undefined;\n return h(\n 'button',\n {\n key: id,\n type: 'button',\n class: cx('ui-tab', props.modelValue === id && 'on'),\n onClick: () => emit('update:modelValue', id),\n },\n [\n label,\n count != null\n ? h('span', { class: 'badge badge-muted', style: { marginLeft: '7px' } }, count)\n : null,\n ],\n );\n }),\n slots.right ? h('div', { style: { flex: 1 } }) : null,\n slots.right?.(),\n ]);\n },\n});\n\nexport const Breadcrumb = defineComponent({\n name: 'VspBreadcrumb',\n props: { items: { type: Array as PropType<string[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'nav',\n { style: { display: 'flex', alignItems: 'center', gap: '7px', fontSize: '12.5px' } },\n props.items.flatMap((it, i) => {\n const last = i === props.items.length - 1;\n return [\n i > 0\n ? h(\n 'span',\n { key: `s${i}`, style: { color: 'var(--text-faint)', display: 'flex' } },\n [svgIcon(ICON_PATHS.chevR, 13)],\n )\n : null,\n h(\n 'span',\n {\n key: i,\n style: {\n color: last ? 'var(--text)' : 'var(--text-dim)',\n fontWeight: last ? 600 : 500,\n },\n },\n it,\n ),\n ];\n }),\n );\n },\n});\n\nexport const Pagination = defineComponent({\n name: 'VspPagination',\n props: {\n modelValue: { type: Number, default: 0 },\n pages: { type: Number, default: 1 },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n return () => {\n const page = props.modelValue;\n const nums: (number | '…')[] = [];\n for (let i = 0; i < props.pages; i++) {\n if (i === 0 || i === props.pages - 1 || Math.abs(i - page) <= 1) nums.push(i);\n else if (nums[nums.length - 1] !== '…') nums.push('…');\n }\n return h('div', { style: { display: 'flex', gap: '4px', alignItems: 'center' } }, [\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page === 0,\n 'aria-label': 'Previous page',\n onClick: () => emit('update:modelValue', page - 1),\n },\n [svgIcon(ICON_PATHS.chevL)],\n ),\n ...nums.map((n, i) =>\n n === '…'\n ? h(\n 'span',\n {\n key: `g${i}`,\n class: 'mono',\n style: { padding: '0 6px', color: 'var(--text-faint)' },\n },\n '…',\n )\n : h(\n 'button',\n {\n key: n,\n type: 'button',\n class: cx('btn', 'btn-sm', n === page ? 'btn-primary' : 'btn-subtle'),\n style: { minWidth: '32px', padding: 0 },\n onClick: () => emit('update:modelValue', n),\n },\n n + 1,\n ),\n ),\n h(\n 'button',\n {\n type: 'button',\n class: 'btn btn-ghost btn-sm',\n disabled: page >= props.pages - 1,\n 'aria-label': 'Next page',\n onClick: () => emit('update:modelValue', page + 1),\n },\n [svgIcon(ICON_PATHS.chevR)],\n ),\n ]);\n };\n },\n});\n\nexport const Stepper = defineComponent({\n name: 'VspStepper',\n props: {\n steps: { type: Array as PropType<string[]>, default: () => [] },\n current: { type: Number, default: 0 },\n },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-steps' },\n props.steps.flatMap((s, i) => [\n i > 0\n ? h('div', { key: `b${i}`, class: cx('ui-step-bar', i <= props.current && 'done') })\n : null,\n h(\n 'div',\n {\n key: i,\n class: cx(\n 'ui-step',\n i < props.current && 'done',\n i === props.current && 'active',\n i > props.current && 'pending',\n ),\n },\n [\n h('span', { class: 'ui-step-dot' }, [\n i < props.current ? svgIcon(ICON_PATHS.check) : i + 1,\n ]),\n h('span', { class: 'ui-step-label' }, s),\n ],\n ),\n ]),\n );\n },\n});\n\nexport const CircularProgress = defineComponent({\n name: 'VspCircularProgress',\n props: {\n value: { type: Number, default: 0 },\n size: { type: Number, default: 76 },\n thickness: { type: Number, default: 7 },\n color: { type: String, default: 'var(--accent)' },\n label: { type: String, default: undefined },\n },\n setup(props) {\n return () => {\n const r = (props.size - props.thickness) / 2;\n const circ = 2 * Math.PI * r;\n return h(\n 'div',\n { style: { position: 'relative', width: px(props.size), height: px(props.size) } },\n [\n h(\n 'svg',\n { width: props.size, height: props.size, style: { transform: 'rotate(-90deg)' } },\n [\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n h('circle', {\n cx: props.size / 2,\n cy: props.size / 2,\n r,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': props.thickness,\n 'stroke-linecap': 'round',\n 'stroke-dasharray': circ,\n 'stroke-dashoffset': circ * (1 - Math.min(100, props.value) / 100),\n style: { transition: 'stroke-dashoffset .5s cubic-bezier(.3,.7,.3,1)' },\n }),\n ],\n ),\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n position: 'absolute',\n inset: 0,\n display: 'grid',\n placeItems: 'center',\n fontWeight: 800,\n fontSize: px(props.size * 0.24),\n },\n },\n props.label ?? `${Math.round(props.value)}%`,\n ),\n ],\n );\n };\n },\n});\n\nexport const Stat = defineComponent({\n name: 'VspStat',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n tone: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n { class: 'card card-pad', style: { display: 'flex', alignItems: 'center', gap: '13px' } },\n [\n slots.icon\n ? h(\n 'span',\n {\n style: {\n width: '38px',\n height: '38px',\n borderRadius: 'var(--r-sm)',\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n background: `color-mix(in oklab, ${props.tone} 14%, transparent)`,\n color: props.tone,\n },\n },\n slots.icon(),\n )\n : null,\n h('div', { style: { minWidth: 0 } }, [\n h('div', { class: 'eyebrow' }, props.label),\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'baseline', gap: '8px', marginTop: '3px' } },\n [\n h(\n 'span',\n {\n class: 'tnum',\n style: { fontSize: '22px', fontWeight: 800, letterSpacing: '-.02em' },\n },\n props.value,\n ),\n props.delta != null\n ? h(\n 'span',\n {\n class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg'),\n style: { padding: '1px 6px' },\n },\n [\n svgIcon(\n props.deltaDir === 'up'\n ? 'M12 19V5M5 12l7-7 7 7'\n : 'M12 5v14M5 12l7 7 7-7',\n 10,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n ]),\n ],\n );\n },\n});\n\nconst clockSvg = (size = 14) =>\n h(\n 'svg',\n {\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('circle', { cx: 12, cy: 12, r: 9 }), h('path', { d: 'M12 7v5l3 2' })],\n );\n\nconst TL_TONE: Record<string, string> = {\n pos: 'var(--success)',\n neg: 'var(--danger)',\n warn: 'var(--warning)',\n info: 'var(--accent)',\n};\n\nexport interface TimelineItem {\n title: string;\n time?: string;\n body?: string;\n tone?: 'pos' | 'neg' | 'warn' | 'info';\n}\n\nexport const Timeline = defineComponent({\n name: 'VspTimeline',\n props: { items: { type: Array as PropType<TimelineItem[]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'div',\n { class: 'ui-tl' },\n props.items.map((it, i) => {\n const c = it.tone ? TL_TONE[it.tone] : undefined;\n return h('div', { key: i, class: 'ui-tl-item' }, [\n h(\n 'span',\n {\n class: 'ui-tl-dot',\n style: c\n ? {\n background: `color-mix(in oklab, ${c} 14%, transparent)`,\n color: c,\n borderColor: `color-mix(in oklab, ${c} 30%, transparent)`,\n }\n : undefined,\n },\n [clockSvg()],\n ),\n h('div', { class: 'ui-tl-body' }, [\n h(\n 'div',\n {\n style: { display: 'flex', alignItems: 'baseline', gap: '8px', flexWrap: 'wrap' },\n },\n [\n h('span', { style: { fontWeight: 600, fontSize: '13.5px' } }, it.title),\n it.time\n ? h('span', { class: 'eyebrow', style: { marginLeft: 'auto' } }, it.time)\n : null,\n ],\n ),\n it.body\n ? h(\n 'div',\n { style: { fontSize: '12.5px', color: 'var(--text-dim)', marginTop: '3px' } },\n it.body,\n )\n : null,\n ]),\n ]);\n }),\n );\n },\n});\n\nexport const DescriptionList = defineComponent({\n name: 'VspDescriptionList',\n props: { items: { type: Array as PropType<[string, string][]>, default: () => [] } },\n setup(props) {\n return () =>\n h(\n 'dl',\n { class: 'ui-dl' },\n props.items.flatMap(([k, v], i) => {\n const last = i === props.items.length - 1 ? 'last' : '';\n return [\n h('dt', { key: `k${i}`, class: last }, k),\n h('dd', { key: `v${i}`, class: last }, v),\n ];\n }),\n );\n },\n});\n\nconst BANNER_ICON: Record<string, string> = {\n info: 'M12 3l1.6 5L19 9.6l-5 1.6L12 16l-1.6-4.8L5 9.6l5.4-1.6z',\n warn: 'M18 8a6 6 0 00-12 0c0 7-3 9-3 9h18s-3-2-3-9',\n accent: 'M13 2L3 14h9l-1 8 10-12h-9l1-8z',\n};\nconst X_PATH = 'M18 6L6 18M6 6l12 12';\nconst INBOX_PATH =\n 'M22 12h-6l-2 3h-4l-2-3H2M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z';\n\nexport const Banner = defineComponent({\n name: 'VspBanner',\n props: {\n tone: { type: String as PropType<'info' | 'warn' | 'accent'>, default: 'info' },\n dismissible: Boolean,\n },\n emits: ['dismiss'],\n setup(props, { slots, emit }) {\n return () =>\n h('div', { class: cx('ui-banner', props.tone) }, [\n slots.icon ? slots.icon() : svgIcon(BANNER_ICON[props.tone]!, 18),\n h('div', { style: { flex: 1, fontSize: '13px', fontWeight: 500 } }, slots.default?.()),\n slots.action?.(),\n props.dismissible\n ? h(\n 'button',\n {\n type: 'button',\n class: 'ui-banner-x',\n 'aria-label': 'Dismiss',\n onClick: () => emit('dismiss'),\n },\n [svgIcon(X_PATH, 15)],\n )\n : null,\n ]);\n },\n});\n\nexport const EmptyState = defineComponent({\n name: 'VspEmptyState',\n props: {\n title: { type: String, default: undefined },\n desc: { type: String, default: undefined },\n compact: Boolean,\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n style: {\n display: 'grid',\n placeItems: 'center',\n textAlign: 'center',\n padding: props.compact ? '32px 20px' : '56px 24px',\n },\n },\n [\n h('div', { style: { maxWidth: '340px' } }, [\n h(\n 'span',\n {\n style: {\n width: '56px',\n height: '56px',\n borderRadius: '16px',\n display: 'grid',\n placeItems: 'center',\n margin: '0 auto 18px',\n background: 'color-mix(in oklab, var(--accent) 12%, transparent)',\n color: 'var(--accent)',\n border: '1px solid color-mix(in oklab, var(--accent) 22%, transparent)',\n },\n },\n slots.icon ? slots.icon() : [svgIcon(INBOX_PATH, 26)],\n ),\n h('div', { style: { fontSize: '17px', fontWeight: 700 } }, props.title),\n props.desc\n ? h(\n 'p',\n {\n style: {\n margin: '7px 0 0',\n color: 'var(--text-dim)',\n fontSize: '13.5px',\n lineHeight: 1.6,\n },\n },\n props.desc,\n )\n : null,\n slots.action\n ? h(\n 'div',\n {\n style: {\n marginTop: '20px',\n display: 'flex',\n gap: '8px',\n justifyContent: 'center',\n },\n },\n slots.action(),\n )\n : null,\n ]),\n ],\n );\n },\n});\n\nexport interface AccordionItem {\n title: string;\n body: string;\n}\n\nexport const Accordion = defineComponent({\n name: 'VspAccordion',\n props: {\n items: { type: Array as PropType<AccordionItem[]>, default: () => [] },\n multiple: Boolean,\n defaultOpen: { type: Array as PropType<number[]>, default: () => [] },\n },\n setup(props) {\n const open = ref(new Set<number>(props.defaultOpen));\n const toggle = (i: number) => {\n const s = open.value;\n const n = new Set<number>(props.multiple ? s : []);\n if (s.has(i)) n.delete(i);\n else n.add(i);\n open.value = n;\n };\n return () =>\n h(\n 'div',\n { class: 'ui-acc' },\n props.items.map((it, i) =>\n h('div', { key: i, class: cx('ui-acc-item', open.value.has(i) && 'open') }, [\n h('button', { type: 'button', class: 'ui-acc-head', onClick: () => toggle(i) }, [\n it.title,\n h(\n 'svg',\n {\n class: 'chev',\n viewBox: '0 0 24 24',\n width: 17,\n height: 17,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d: ICON_PATHS.chevR })],\n ),\n ]),\n h('div', { class: 'ui-acc-bodywrap' }, [\n h('div', null, [h('div', { class: 'ui-acc-body' }, it.body)]),\n ]),\n ]),\n ),\n );\n },\n});\n\ntype Pt = [number, number];\n/** Smooth (cubic) SVG path through points. */\nexport function smoothPath(pts: Pt[]): string {\n if (pts.length < 2) return '';\n let d = `M ${pts[0]![0]} ${pts[0]![1]}`;\n for (let i = 0; i < pts.length - 1; i++) {\n const [x0, y0] = pts[i]!;\n const [x1, y1] = pts[i + 1]!;\n const cx = (x0 + x1) / 2;\n d += ` C ${cx} ${y0} ${cx} ${y1} ${x1} ${y1}`;\n }\n return d;\n}\n\nexport const Sparkline = defineComponent({\n name: 'VspSparkline',\n props: {\n data: { type: Array as PropType<number[]>, default: () => [] },\n color: { type: String, default: 'var(--accent)' },\n w: { type: Number, default: 110 },\n h: { type: Number, default: 34 },\n fill: { type: Boolean, default: true },\n },\n setup(props) {\n const gid = 'spk' + useId().replace(/[^a-zA-Z0-9]/g, '');\n return () => {\n const data = props.data;\n const min = Math.min(...data);\n const max = Math.max(...data);\n const rng = max - min || 1;\n const pts: Pt[] = data.map((v, i) => [\n (i / (data.length - 1)) * props.w,\n props.h - 3 - ((v - min) / rng) * (props.h - 6),\n ]);\n const d = smoothPath(pts);\n const last = pts[pts.length - 1] ?? [0, 0];\n return h(\n 'svg',\n {\n width: props.w,\n height: props.h,\n viewBox: `0 0 ${props.w} ${props.h}`,\n style: { display: 'block', overflow: 'visible' },\n },\n [\n props.fill\n ? h('defs', null, [\n h('linearGradient', { id: gid, x1: '0', x2: '0', y1: '0', y2: '1' }, [\n h('stop', { offset: '0', 'stop-color': props.color, 'stop-opacity': '0.28' }),\n h('stop', { offset: '1', 'stop-color': props.color, 'stop-opacity': '0' }),\n ]),\n ])\n : null,\n props.fill\n ? h('path', {\n d: `${d} L ${props.w} ${props.h} L 0 ${props.h} Z`,\n fill: `url(#${gid})`,\n })\n : null,\n h('path', {\n d,\n fill: 'none',\n stroke: props.color,\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n }),\n h('circle', { cx: last[0], cy: last[1], r: '2.6', fill: props.color }),\n ],\n );\n };\n },\n});\n\nexport interface DonutDatum {\n label: string;\n value: number;\n color: string;\n}\n\nexport const Donut = defineComponent({\n name: 'VspDonut',\n props: {\n data: { type: Array as PropType<DonutDatum[]>, default: () => [] },\n size: { type: Number, default: 168 },\n thickness: { type: Number, default: 22 },\n },\n setup(props) {\n return () => {\n const total = props.data.reduce((s, d) => s + d.value, 0) || 1;\n const r = (props.size - props.thickness) / 2;\n const c = props.size / 2;\n const circ = 2 * Math.PI * r;\n let acc = 0;\n const segs = props.data.map((d, i) => {\n const len = (d.value / total) * circ;\n const seg = h('circle', {\n key: i,\n cx: c,\n cy: c,\n r,\n fill: 'none',\n stroke: d.color,\n 'stroke-width': props.thickness,\n 'stroke-dasharray': `${len - 2.5} ${circ - len + 2.5}`,\n 'stroke-dashoffset': -acc,\n 'stroke-linecap': 'round',\n });\n acc += len;\n return seg;\n });\n return h('div', { style: { display: 'flex', alignItems: 'center', gap: '22px' } }, [\n h(\n 'svg',\n {\n width: props.size,\n height: props.size,\n style: { transform: 'rotate(-90deg)', flexShrink: 0 },\n },\n [\n h('circle', {\n cx: c,\n cy: c,\n r,\n fill: 'none',\n stroke: 'var(--surface-3)',\n 'stroke-width': props.thickness,\n }),\n ...segs,\n ],\n ),\n h(\n 'div',\n { style: { display: 'flex', flexDirection: 'column', gap: '9px', flex: 1 } },\n props.data.map((d, i) =>\n h(\n 'div',\n {\n key: i,\n style: { display: 'flex', alignItems: 'center', gap: '9px', fontSize: '12.5px' },\n },\n [\n h('i', {\n style: {\n width: '9px',\n height: '9px',\n borderRadius: '3px',\n background: d.color,\n flexShrink: 0,\n },\n }),\n h('span', { style: { color: 'var(--text-dim)', flex: 1 } }, d.label),\n h(\n 'span',\n { class: 'mono tnum', style: { fontWeight: 600 } },\n `${Math.round((d.value / total) * 100)}%`,\n ),\n ],\n ),\n ),\n ),\n ]);\n };\n },\n});\n\nexport const StatCard = defineComponent({\n name: 'VspStatCard',\n props: {\n label: { type: String, default: undefined },\n value: { type: String, default: undefined },\n delta: { type: String, default: undefined },\n deltaDir: { type: String as PropType<'up' | 'down'>, default: 'up' },\n spark: { type: Array as PropType<number[]>, default: undefined },\n sparkColor: { type: String, default: 'var(--accent)' },\n },\n setup(props, { slots }) {\n return () =>\n h(\n 'div',\n {\n class: 'card card-pad vsp-rise',\n style: { display: 'flex', flexDirection: 'column', gap: '14px' },\n },\n [\n h(\n 'div',\n { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' } },\n [\n h('div', { style: { display: 'flex', alignItems: 'center', gap: '10px' } }, [\n h(\n 'span',\n {\n style: {\n width: '34px',\n height: '34px',\n borderRadius: 'var(--r-sm)',\n display: 'grid',\n placeItems: 'center',\n background: 'color-mix(in oklab, var(--accent) 13%, transparent)',\n color: 'var(--accent)',\n },\n },\n slots.icon?.(),\n ),\n h('span', { class: 'eyebrow' }, props.label),\n ]),\n props.delta != null\n ? h(\n 'span',\n { class: cx('badge', props.deltaDir === 'up' ? 'badge-pos' : 'badge-neg') },\n [\n svgIcon(\n props.deltaDir === 'up' ? 'M12 19V5M5 12l7-7 7 7' : 'M12 5v14M5 12l7 7 7-7',\n 11,\n ),\n props.delta,\n ],\n )\n : null,\n ],\n ),\n h(\n 'div',\n {\n style: {\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: '12px',\n },\n },\n [\n h(\n 'div',\n {\n class: 'tnum',\n style: {\n fontSize: '30px',\n fontWeight: 800,\n letterSpacing: '-.02em',\n lineHeight: 1,\n },\n },\n props.value,\n ),\n props.spark ? h(Sparkline, { data: props.spark, color: props.sparkColor }) : null,\n ],\n ),\n ],\n );\n },\n});\n\nconst ICON_CHECK = 'M20 6L9 17l-5-5';\nconst ICON_DOC = 'M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8zM14 2v6h6';\nconst ICON_PENCIL = 'M12 20h9M16.5 3.5a2.12 2.12 0 013 3L7 19l-4 1 1-4z';\n\nexport const NumberStepper = defineComponent({\n name: 'VspNumberStepper',\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: undefined },\n max: { type: Number, default: undefined },\n step: { type: Number, default: 1 },\n unit: { type: String, default: undefined },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const set = (v: number) => {\n let n = v;\n if (props.min != null && n < props.min) n = props.min;\n if (props.max != null && n > props.max) n = props.max;\n emit('update:modelValue', n);\n };\n return () =>\n h('div', { class: 'ui-stepper' }, [\n h(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Decrease',\n disabled: props.min != null && props.modelValue <= props.min,\n onClick: () => set(props.modelValue - props.step),\n },\n '−',\n ),\n h('span', { class: 'val' }, [\n props.modelValue,\n props.unit ? h('i', null, props.unit) : null,\n ]),\n h(\n 'button',\n {\n type: 'button',\n 'aria-label': 'Increase',\n disabled: props.max != null && props.modelValue >= props.max,\n onClick: () => set(props.modelValue + props.step),\n },\n '+',\n ),\n ]);\n },\n});\n\nexport const CopyButton = defineComponent({\n name: 'VspCopyButton',\n props: {\n text: { type: String, required: true },\n label: { type: String, default: 'Copy' },\n size: { type: String as PropType<'sm'>, default: 'sm' },\n },\n setup(props) {\n const done = ref(false);\n const copy = async () => {\n try {\n await navigator.clipboard?.writeText(props.text);\n } catch {\n /* clipboard unavailable */\n }\n done.value = true;\n setTimeout(() => (done.value = false), 1400);\n };\n return () =>\n h(\n 'button',\n {\n type: 'button',\n class: cx('btn', 'btn-ghost', props.size === 'sm' && 'btn-sm'),\n onClick: copy,\n },\n [\n done.value\n ? h('span', { style: { color: 'var(--success)', display: 'inline-flex' } }, [\n svgIcon(ICON_CHECK, 15),\n ])\n : svgIcon(ICON_DOC, 15),\n done.value ? 'Copied' : props.label,\n ],\n );\n },\n});\n\nexport const InlineEdit = defineComponent({\n name: 'VspInlineEdit',\n props: {\n value: { type: String, default: '' },\n placeholder: { type: String, default: 'Empty' },\n },\n emits: ['save'],\n setup(props, { emit }) {\n const editing = ref(false);\n const draft = ref(props.value);\n const commit = () => {\n editing.value = false;\n if (draft.value !== props.value) emit('save', draft.value);\n };\n return () =>\n editing.value\n ? h('input', {\n class: 'ui-input',\n value: draft.value,\n style: { height: '32px', maxWidth: '240px' },\n onVnodeMounted: (vn: { el: unknown }) => (vn.el as HTMLInputElement)?.focus(),\n onInput: (e: Event) => (draft.value = (e.target as HTMLInputElement).value),\n onBlur: commit,\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Enter') commit();\n if (e.key === 'Escape') {\n draft.value = props.value;\n editing.value = false;\n }\n },\n })\n : h(\n 'span',\n {\n class: 'ui-inline',\n onClick: () => {\n draft.value = props.value;\n editing.value = true;\n },\n },\n [\n h(\n 'span',\n { style: { color: props.value ? 'var(--text)' : 'var(--text-faint)' } },\n props.value || props.placeholder,\n ),\n h('span', { class: 'pen', style: { display: 'inline-flex' } }, [\n svgIcon(ICON_PENCIL, 14),\n ]),\n ],\n );\n },\n});\n\nconst svgIconClass = (d: string, size: number, cls: string) =>\n h(\n 'svg',\n {\n class: cls,\n viewBox: '0 0 24 24',\n width: size,\n height: size,\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n },\n [h('path', { d })],\n );\n\nconst ICON_LAYERS = 'M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5';\n\nexport interface TreeNodeData {\n id?: string;\n label: string;\n badge?: string;\n children?: TreeNodeData[];\n}\nconst treeNodeId = (n: TreeNodeData) => n.id ?? n.label;\n\nconst VspTreeNode: Component = defineComponent({\n name: 'VspTreeNode',\n props: {\n node: { type: Object as PropType<TreeNodeData>, required: true },\n expanded: { type: Object as PropType<Set<string>>, required: true },\n selected: { type: String as PropType<string | null>, default: null },\n toggle: { type: Function as PropType<(id: string) => void>, required: true },\n select: { type: Function as PropType<(id: string) => void>, required: true },\n },\n setup(props) {\n return () => {\n const node = props.node;\n const id = treeNodeId(node);\n const kids = node.children ?? [];\n const hasKids = kids.length > 0;\n const open = props.expanded.has(id);\n return h('div', null, [\n h(\n 'div',\n {\n class: cx('ui-tree-row', open && 'open', props.selected === id && 'sel'),\n onClick: () => {\n if (hasKids) props.toggle(id);\n props.select(id);\n },\n },\n [\n hasKids\n ? svgIconClass(ICON_PATHS.chevR, 16, 'tw-chev')\n : h('span', { style: { width: '16px', flexShrink: 0 } }),\n svgIconClass(hasKids ? ICON_LAYERS : ICON_DOC, 16, 'tw-icon'),\n h(\n 'span',\n {\n style: {\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n },\n node.label,\n ),\n node.badge != null\n ? h(\n 'span',\n { class: 'mono', style: { fontSize: '11px', color: 'var(--text-faint)' } },\n node.badge,\n )\n : null,\n ],\n ),\n hasKids && open\n ? h(\n 'div',\n { class: 'ui-tree-children' },\n kids.map((c, i) =>\n h(VspTreeNode, {\n key: i,\n node: c,\n expanded: props.expanded,\n selected: props.selected,\n toggle: props.toggle,\n select: props.select,\n }),\n ),\n )\n : null,\n ]);\n };\n },\n});\n\nexport const Tree = defineComponent({\n name: 'VspTree',\n props: {\n data: { type: Array as PropType<TreeNodeData[]>, default: () => [] },\n defaultExpanded: { type: Array as PropType<string[]>, default: () => [] },\n },\n setup(props) {\n const expanded = ref(new Set<string>(props.defaultExpanded));\n const selected = ref<string | null>(null);\n const toggle = (id: string) => {\n const n = new Set(expanded.value);\n if (n.has(id)) n.delete(id);\n else n.add(id);\n expanded.value = n;\n };\n return () =>\n h(\n 'div',\n { class: 'ui-tree' },\n props.data.map((n, i) =>\n h(VspTreeNode, {\n key: i,\n node: n,\n expanded: expanded.value,\n selected: selected.value,\n toggle,\n select: (id: string) => (selected.value = id),\n }),\n ),\n );\n },\n});\n\nexport const OTPInput = defineComponent({\n name: 'VspOTPInput',\n props: {\n length: { type: Number, default: 6 },\n modelValue: { type: String, default: '' },\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const refs: (HTMLInputElement | null)[] = [];\n const set = (i: number, ch: string) => {\n const chars = Array.from({ length: props.length }, (_, k) => props.modelValue[k] ?? '');\n chars[i] = ch.slice(-1);\n emit('update:modelValue', chars.join(''));\n if (ch && i < props.length - 1) refs[i + 1]?.focus();\n };\n const onKey = (i: number, e: KeyboardEvent) => {\n if (e.key === 'Backspace' && !props.modelValue[i] && i > 0) refs[i - 1]?.focus();\n };\n return () =>\n h(\n 'div',\n { class: 'ui-otp' },\n Array.from({ length: props.length }, (_, i) =>\n h('input', {\n key: i,\n ref: (el: unknown) => {\n refs[i] = el as HTMLInputElement | null;\n },\n inputmode: 'numeric',\n maxlength: 1,\n value: props.modelValue[i] ?? '',\n onInput: (e: Event) => set(i, (e.target as HTMLInputElement).value.replace(/\\D/g, '')),\n onKeydown: (e: KeyboardEvent) => onKey(i, e),\n }),\n ),\n );\n },\n});\n\nexport function niceNum(n: number): string {\n if (Math.abs(n) >= 1e6) return (n / 1e6).toFixed(n % 1e6 === 0 ? 0 : 1) + 'M';\n if (Math.abs(n) >= 1e3) return (n / 1e3).toFixed(n % 1e3 === 0 ? 0 : 1) + 'k';\n return String(n);\n}\n\nexport const AreaChart = defineComponent({\n name: 'VspAreaChart',\n props: {\n series: { type: Array as PropType<number[][]>, default: () => [] },\n labels: { type: Array as PropType<string[]>, default: undefined },\n width: { type: Number, default: 760 },\n height: { type: Number, default: 260 },\n color: { type: String, default: 'var(--accent)' },\n color2: { type: String, default: 'var(--accent-2)' },\n dual: Boolean,\n },\n setup(props) {\n const gid = 'ac' + useId().replace(/[^a-zA-Z0-9]/g, '');\n const txt = (x: number, y: number, anchor: string, val: string) =>\n h(\n 'text',\n {\n x,\n y,\n 'text-anchor': anchor,\n 'font-size': '10',\n fill: 'var(--text-faint)',\n 'font-family': 'var(--font-mono)',\n },\n val,\n );\n return () => {\n const w = props.width;\n const height = props.height;\n const padL = 38;\n const padB = 26;\n const padT = 12;\n const padR = 8;\n const innerW = Math.max(10, w - padL - padR);\n const innerH = height - padB - padT;\n const s0 = props.series[0] ?? [];\n const s1 = props.series[1];\n const all = props.dual && s1 ? [...s0, ...s1] : s0;\n const max = Math.max(...all, 0) * 1.12;\n const rng = max || 1;\n const sx = (i: number, len: number) => padL + (i / Math.max(1, len - 1)) * innerW;\n const sy = (v: number) => padT + innerH - (v / rng) * innerH;\n const mkPts = (arr: number[]): Pt[] => arr.map((v, i) => [sx(i, arr.length), sy(v)]);\n const lines = (props.dual && s1 ? [s0, s1] : [s0]).map(mkPts);\n const yTicks = 4;\n const grid = Array.from({ length: yTicks + 1 }, (_, i) => {\n const y = sy((max / yTicks) * i);\n return h('g', { key: 'g' + i }, [\n h('line', {\n x1: padL,\n x2: w - padR,\n y1: y,\n y2: y,\n stroke: 'var(--grid-line)',\n 'stroke-width': '1',\n }),\n txt(padL - 8, y + 3.5, 'end', niceNum(Math.round((max / yTicks) * i))),\n ]);\n });\n const lbls = props.labels\n ? props.labels.map((lb, i) =>\n i % Math.ceil(props.labels!.length / 7) === 0\n ? txt(sx(i, props.labels!.length), height - 8, 'middle', lb)\n : null,\n )\n : [];\n const lineEls = lines.map((pts, li) => {\n const stroke = li === 0 ? props.color : props.color2;\n const lastPt = pts[pts.length - 1];\n const firstPt = pts[0];\n return h('g', { key: 'ln' + li }, [\n li === 0 && firstPt && lastPt\n ? h('path', {\n d: `${smoothPath(pts)} L ${lastPt[0]} ${padT + innerH} L ${firstPt[0]} ${padT + innerH} Z`,\n fill: `url(#${gid})`,\n })\n : null,\n h('path', {\n d: smoothPath(pts),\n fill: 'none',\n stroke,\n 'stroke-width': '2.4',\n 'stroke-linecap': 'round',\n 'stroke-dasharray': li === 1 ? '5 5' : undefined,\n style: { opacity: li === 1 ? 0.7 : 1 },\n }),\n ]);\n });\n return h('svg', { width: w, height, style: { display: 'block' } }, [\n h('defs', null, [\n h('linearGradient', { id: gid, x1: '0', x2: '0', y1: '0', y2: '1' }, [\n h('stop', { offset: '0', 'stop-color': props.color, 'stop-opacity': '0.22' }),\n h('stop', { offset: '1', 'stop-color': props.color, 'stop-opacity': '0' }),\n ]),\n ]),\n ...grid,\n ...lbls,\n ...lineEls,\n ]);\n };\n },\n});\n\nexport const BarChart = defineComponent({\n name: 'VspBarChart',\n props: {\n data: { type: Array as PropType<number[]>, default: () => [] },\n labels: { type: Array as PropType<string[]>, default: undefined },\n width: { type: Number, default: 620 },\n height: { type: Number, default: 240 },\n color: { type: String, default: 'var(--accent)' },\n },\n setup(props) {\n return () => {\n const w = props.width;\n const height = props.height;\n const padL = 34;\n const padB = 26;\n const padT = 10;\n const innerW = Math.max(10, w - padL - 8);\n const innerH = height - padB - padT;\n const max = Math.max(...props.data, 0) * 1.15 || 1;\n const bw = innerW / (props.data.length || 1);\n const grid = [0, 0.5, 1].map((f, i) => {\n const y = padT + innerH - f * innerH;\n return h('g', { key: 'g' + i }, [\n h('line', { x1: padL, x2: w - 8, y1: y, y2: y, stroke: 'var(--grid-line)' }),\n h(\n 'text',\n {\n x: padL - 8,\n y: y + 3.5,\n 'text-anchor': 'end',\n 'font-size': '10',\n fill: 'var(--text-faint)',\n 'font-family': 'var(--font-mono)',\n },\n niceNum(Math.round(max * f)),\n ),\n ]);\n });\n const bars = props.data.map((v, i) => {\n const bh = (v / max) * innerH;\n const x = padL + i * bw + bw * 0.18;\n const bwi = bw * 0.64;\n return h('g', { key: 'b' + i }, [\n h('rect', {\n x,\n y: padT + innerH - bh,\n width: bwi,\n height: bh,\n rx: '4',\n fill: `color-mix(in oklab, ${props.color} 78%, transparent)`,\n }),\n props.labels?.[i] != null\n ? h(\n 'text',\n {\n x: x + bwi / 2,\n y: height - 8,\n 'text-anchor': 'middle',\n 'font-size': '10',\n fill: 'var(--text-faint)',\n 'font-family': 'var(--font-mono)',\n },\n props.labels[i],\n )\n : null,\n ]);\n });\n return h('svg', { width: w, height, style: { display: 'block' } }, [...grid, ...bars]);\n };\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,iBAA8E;AAE9E,IAAM,KAAK,IAAI,UAAiD,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAMvF,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS,EAAE,MAAM,QAAmC,SAAS,QAAQ;AAAA,IACrE,MAAM,EAAE,MAAM,QAA0B,SAAS,OAAU;AAAA,IAC3D,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO,GAAG,OAAO,OAAO,MAAM,OAAO,IAAI,MAAM,SAAS,QAAQ,QAAQ;AAAA,QACxE,UAAU,MAAM,YAAY,MAAM;AAAA,QAClC,GAAG;AAAA,MACL;AAAA,MACA;AAAA,QACE,MAAM,cACF,cAAE,QAAQ,EAAE,OAAO,cAAc,eAAe,OAAO,CAAC,IACxD,MAAM,UAAU;AAAA,QACpB,MAAM,UAAU;AAAA,QAChB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU,EAAE;AAAA,EACrD,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,WAAO,UACL,cAAE,UAAU,EAAE,OAAO,gBAAgB,MAAM,UAAU,cAAc,MAAM,OAAO,GAAG,MAAM,GAAG;AAAA,MAC1F,MAAM,UAAU;AAAA,IAClB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAA+B,SAAS,QAAQ;AAAA,IAC9D,KAAK;AAAA,EACP;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,SAAS,MAAM,IAAI,EAAE,EAAE,GAAG;AAAA,MACvD,MAAM,UAAM,cAAE,GAAG,IAAI;AAAA,MACrB,MAAM,UAAU;AAAA,IAClB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,UAAM,4BAAgB;AAAA,EACjC,MAAM;AAAA,EACN,OAAO,CAAC,QAAQ;AAAA,EAChB,MAAM,OAAO,EAAE,OAAO,KAAK,GAAG;AAC5B,WAAO,UACL,cAAE,QAAQ,EAAE,OAAO,SAAS,GAAG;AAAA,MAC7B,MAAM,UAAU;AAAA,UAChB,cAAE,UAAU,EAAE,MAAM,UAAU,cAAc,UAAU,SAAS,MAAM,KAAK,QAAQ,EAAE,GAAG,MAAG;AAAA,IAC5F,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,UAAM,4BAAgB;AAAA,EACjC,MAAM;AAAA,EACN,MAAM,GAAG,EAAE,MAAM,GAAG;AAClB,WAAO,UAAM,cAAE,OAAO,EAAE,OAAO,SAAS,GAAG,MAAM,UAAU,CAAC;AAAA,EAC9D;AACF,CAAC;AAEM,IAAM,cAAU,4BAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO,EAAE,UAAU,QAAQ;AAAA,EAC3B,MAAM,OAAO;AACX,WAAO,UAAM,cAAE,MAAM,EAAE,OAAO,GAAG,cAAc,MAAM,YAAY,GAAG,EAAE,CAAC;AAAA,EACzE;AACF,CAAC;AAEM,IAAM,cAAU,4BAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO,EAAE,MAAM,EAAE,MAAM,QAA0B,SAAS,OAAU,EAAE;AAAA,EACtE,MAAM,OAAO;AACX,WAAO,UACL,cAAE,QAAQ,EAAE,OAAO,GAAG,cAAc,MAAM,SAAS,QAAQ,IAAI,GAAG,eAAe,OAAO,CAAC;AAAA,EAC7F;AACF,CAAC;AAEM,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO,EAAE,KAAK,QAAQ;AAAA,EACtB,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,MAAM,OAAO,UAAU,GAAG,GAAG,MAAM,GAAG,MAAM,UAAU,CAAC;AAAA,EACxF;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC3C;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,YAAY,GAAG;AAAA,UAC/B,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG;AAAA,YACnC,cAAE,OAAO,EAAE,OAAO,MAAM,GAAG,MAAM,KAAK;AAAA,QACtC,MAAM,WACF,cAAE,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,WAAW,MAAM,EAAE,GAAG,MAAM,IAAI,IACtE;AAAA,MACN,CAAC;AAAA,MACD,MAAM,YAAQ,cAAE,OAAO,EAAE,OAAO,iBAAiB,CAAC,IAAI;AAAA,MACtD,MAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAA+B,SAAS,OAAO;AAAA,IAC7D,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC5C;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,GAAG,YAAY,MAAM,IAAI,EAAE,GAAG;AAAA,MAC9C,MAAM,OAAO;AAAA,UACb,cAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG;AAAA,QAC/B,MAAM,YAAQ,cAAE,OAAO,EAAE,OAAO,iBAAiB,GAAG,MAAM,KAAK,IAAI;AAAA,QACnE,MAAM,cAAU,cAAE,OAAO,EAAE,OAAO,gBAAgB,GAAG,MAAM,QAAQ,CAAC,IAAI;AAAA,MAC1E,CAAC;AAAA,MACD,MAAM,SAAS;AAAA,IACjB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,UAAU;AAAA,IACV,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACzC,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,SAAS,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,WAAW,GAAG;AAAA,MAC9B,MAAM,YACF,cAAE,SAAS,EAAE,OAAO,YAAY,KAAK,MAAM,QAAQ,GAAG;AAAA,YACpD,cAAE,QAAQ,MAAM;AAAA,UACd,MAAM;AAAA,UACN,MAAM,eAAW,cAAE,QAAQ,EAAE,OAAO,MAAM,GAAG,IAAI,IAAI;AAAA,QACvD,CAAC;AAAA,MACH,CAAC,IACD;AAAA,MACJ,MAAM,UAAU;AAAA,MAChB,MAAM,SAAS,MAAM,WACjB,cAAE,QAAQ,EAAE,OAAO,GAAG,WAAW,MAAM,SAAS,KAAK,EAAE,GAAG,MAAM,SAAS,MAAM,IAAI,IACnF;AAAA,IACN,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IACxC,SAAS;AAAA,EACX;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG;AAC5B,WAAO,UACL,cAAE,SAAS;AAAA,MACT,OAAO,GAAG,YAAY,MAAM,WAAW,SAAS;AAAA,MAChD,OAAO,MAAM;AAAA,MACb,SAAS,CAAC,MAAa,KAAK,qBAAsB,EAAE,OAA4B,KAAK;AAAA,MACrF,GAAG;AAAA,IACL,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,SAAS,GAAG,EAAE;AAAA,EACnD,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,OAAO,KAAK,GAAG;AAC5B,WAAO,UACL,cAAE,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,MACb,SAAS,CAAC,MAAa,KAAK,qBAAsB,EAAE,OAA+B,KAAK;AAAA,MACxF,GAAG;AAAA,IACL,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,MAAM,EAAE,MAAM,QAA0B,SAAS,OAAU;AAAA,IAC3D,UAAU;AAAA,EACZ;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL,cAAE,UAAU;AAAA,MACV,MAAM;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,OAAO,GAAG,aAAa,MAAM,SAAS,QAAQ,MAAM,MAAM,cAAc,IAAI;AAAA,MAC5E,gBAAgB,OAAO,MAAM,UAAU;AAAA,MACvC,SAAS,MAAM,KAAK,qBAAqB,CAAC,MAAM,UAAU;AAAA,IAC5D,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,KAAK,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACxC,UAAU;AAAA,EACZ;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,UAAM,SAAS,MAAM;AACnB,UAAI,CAAC,MAAM,SAAU,MAAK,qBAAqB,CAAC,MAAM,UAAU;AAAA,IAClE;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,UAAU,OAAO,EAAE,SAAS,MAAM,WAAW,MAAM,EAAE,GAAG,SAAS,OAAO;AAAA,MACjF;AAAA,YACE,cAAE,QAAQ,EAAE,OAAO,GAAG,YAAY,MAAM,cAAc,IAAI,EAAE,CAAC;AAAA,YAC7D,cAAE,QAAQ,MAAM;AAAA,cACd,cAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,UAC3B,MAAM,UAAM,cAAE,QAAQ,EAAE,OAAO,aAAa,GAAG,MAAM,GAAG,IAAI;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAGD,IAAM,WAAW,CAAC,MAAqB,OAAO,MAAM,WAAW,IAAI,EAAE;AACrE,IAAM,WAAW,CAAC,MAAqB,OAAO,MAAM,WAAW,IAAI,EAAE;AAE9D,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,KAAK,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC1C;AAAA,EACA,OAAO,CAAC,QAAQ;AAAA,EAChB,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,SAAS,CAAC,MAAa;AACrB,YAAE,eAAe;AACjB,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,MACA;AAAA,YACE,cAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,MAAM,WAAW,IAAI,EAAE,CAAC;AAAA,YAC9D,cAAE,QAAQ,MAAM;AAAA,cACd,cAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,UAC3B,MAAM,UAAM,cAAE,QAAQ,EAAE,OAAO,aAAa,GAAG,MAAM,GAAG,IAAI;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC/C,SAAS,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE;AAAA,EACxE;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO,EAAE;AAAA,MACnE,MAAM,QAAQ;AAAA,QAAI,CAAC,UACjB,cAAE,OAAO;AAAA,UACP,KAAK,SAAS,CAAC;AAAA,UACf,OAAO,SAAS,CAAC;AAAA,UACjB,KAAK,OAAO,MAAM,WAAW,EAAE,MAAM;AAAA,UACrC,SAAS,MAAM,eAAe,SAAS,CAAC;AAAA,UACxC,UAAU,MAAM,KAAK,qBAAqB,SAAS,CAAC,CAAC;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACvC,KAAK,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAChC,KAAK,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IAClC,MAAM,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACnC;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL,cAAE,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,MACb,KAAK,MAAM;AAAA,MACX,KAAK,MAAM;AAAA,MACX,MAAM,MAAM;AAAA,MACZ,SAAS,CAAC,MACR,KAAK,qBAAqB,OAAQ,EAAE,OAA4B,KAAK,CAAC;AAAA,IAC1E,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,mBAAe,4BAAgB;AAAA,EAC1C,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC/C,SAAS,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE;AAAA,EACxE;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG;AAC5B,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO,MAAM;AAAA,QACb,UAAU,CAAC,MAAa,KAAK,qBAAsB,EAAE,OAA6B,KAAK;AAAA,QACvF,GAAG;AAAA,MACL;AAAA,MACA,MAAM,QAAQ;AAAA,QAAI,CAAC,UACjB,cAAE,UAAU,EAAE,KAAK,SAAS,CAAC,GAAG,OAAO,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;AAAA,MACnE;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,KAAK,CAAC,MAAwB,OAAO,MAAM,WAAW,GAAG,CAAC,OAAO;AAEhE,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAClC,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACzC,QAAQ,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACrC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,SAAS,OAAO,EAAE,QAAQ,GAAG,MAAM,MAAM,EAAE,EAAE,GAAG;AAAA,UAChE,cAAE,KAAK;AAAA,QACL,OAAO;AAAA,UACL,OAAO,GAAG,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,UACpC,YAAY,MAAM;AAAA,UAClB,YAAY;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG,EAAE,MAAM,CAAC,QAAQ,MAAM,GAAgC,SAAS,OAAO;AAAA,IAC1E,GAAG,EAAE,MAAM,CAAC,QAAQ,MAAM,GAAgC,SAAS,GAAG;AAAA,IACtE,GAAG,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EAChC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL,cAAE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,EAAE;AAAA,IAC9E,CAAC;AAAA,EACL;AACF,CAAC;AAED,IAAM,aAAa,CAAC,SAClB,KACG,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACtB,MAAM,GAAG,CAAC,EACV,KAAK,EAAE,EACP,YAAY;AAOV,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAQ,UAAU,KAAK;AAAA,IACrC,KAAK,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAChC,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EACpC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,UACL,OAAO,GAAG,MAAM,IAAI;AAAA,UACpB,QAAQ,GAAG,MAAM,IAAI;AAAA,UACrB,UAAU,GAAG,MAAM,OAAO,IAAI;AAAA,UAC9B,YAAY,2CAA2C,MAAM,GAAG,uBAAuB,MAAM,MAAM,MAAM,GAAG;AAAA,QAC9G;AAAA,MACF;AAAA,MACA,WAAW,MAAM,IAAI;AAAA,IACvB;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,kBAAc,4BAAgB;AAAA,EACzC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,QAAQ,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC/D,KAAK,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAChC,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EACpC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,MAAM,GAAG;AAC7C,YAAM,QAAQ,MAAM,OAAO,SAAS,MAAM;AAC1C,iBAAO,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,EAAE,GAAG;AAAA,QACpE,GAAG,MAAM;AAAA,UAAI,CAAC,GAAG,UACf;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK;AAAA,cACL,OAAO;AAAA,gBACL,YAAY,IAAI,UAAU;AAAA,gBAC1B,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,UAAU;AAAA,gBACV,QAAQ,MAAM,SAAS;AAAA,cACzB;AAAA,YACF;AAAA,YACA,KAAC,cAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,EAAE,OAAO,GAAG,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,UACjE;AAAA,QACF;AAAA,QACA,QAAQ,QACJ;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,OAAO,GAAG,MAAM,IAAI;AAAA,cACpB,QAAQ,GAAG,MAAM,IAAI;AAAA,cACrB,cAAc;AAAA,cACd,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU,GAAG,MAAM,OAAO,IAAI;AAAA,cAC9B,YAAY;AAAA,cACZ,OAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,IAAI,KAAK;AAAA,QACX,IACA;AAAA,MACN,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC/C,SAAS,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,EAClE;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,SAAS;AAAA,MAClB,MAAM,QAAQ;AAAA,QAAI,CAAC,UACjB;AAAA,UACE;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,GAAG,MAAM,eAAe,KAAK,IAAI;AAAA,YACxC,SAAS,MAAM,KAAK,qBAAqB,CAAC;AAAA,UAC5C;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,aAAa,EAAE,OAAO,mBAAmB,OAAO,iBAAiB,OAAO,kBAAkB;AAChG,IAAM,UAAU,CAAC,GAAW,OAAO,WACjC;AAAA,EACE;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAC,cAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnB;AAIK,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAA8B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC9D,YAAY,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EACjD;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG;AAC5B,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,YAAY,SAAS,EAAE,GAAG;AAAA,MAC9D,GAAG,MAAM,KAAK,IAAI,CAAC,MAAM;AACvB,cAAM,KAAK,OAAO,MAAM,WAAW,IAAI,EAAE;AACzC,cAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,EAAE;AAC5C,cAAM,QAAQ,OAAO,MAAM,WAAW,EAAE,QAAQ;AAChD,mBAAO;AAAA,UACL;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,GAAG,UAAU,MAAM,eAAe,MAAM,IAAI;AAAA,YACnD,SAAS,MAAM,KAAK,qBAAqB,EAAE;AAAA,UAC7C;AAAA,UACA;AAAA,YACE;AAAA,YACA,SAAS,WACL,cAAE,QAAQ,EAAE,OAAO,qBAAqB,OAAO,EAAE,YAAY,MAAM,EAAE,GAAG,KAAK,IAC7E;AAAA,UACN;AAAA,QACF;AAAA,MACF,CAAC;AAAA,MACD,MAAM,YAAQ,cAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI;AAAA,MACjD,MAAM,QAAQ;AAAA,IAChB,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE,EAAE;AAAA,EACzE,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,UAAU,SAAS,EAAE;AAAA,MACnF,MAAM,MAAM,QAAQ,CAAC,IAAI,MAAM;AAC7B,cAAM,OAAO,MAAM,MAAM,MAAM,SAAS;AACxC,eAAO;AAAA,UACL,IAAI,QACA;AAAA,YACE;AAAA,YACA,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE,OAAO,qBAAqB,SAAS,OAAO,EAAE;AAAA,YACvE,CAAC,QAAQ,WAAW,OAAO,EAAE,CAAC;AAAA,UAChC,IACA;AAAA,cACJ;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK;AAAA,cACL,OAAO;AAAA,gBACL,OAAO,OAAO,gBAAgB;AAAA,gBAC9B,YAAY,OAAO,MAAM;AAAA,cAC3B;AAAA,YACF;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACvC,OAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACpC;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,WAAO,MAAM;AACX,YAAM,OAAO,MAAM;AACnB,YAAM,OAAyB,CAAC;AAChC,eAAS,IAAI,GAAG,IAAI,MAAM,OAAO,KAAK;AACpC,YAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,EAAG,MAAK,KAAK,CAAC;AAAA,iBACnE,KAAK,KAAK,SAAS,CAAC,MAAM,SAAK,MAAK,KAAK,QAAG;AAAA,MACvD;AACA,iBAAO,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,KAAK,OAAO,YAAY,SAAS,EAAE,GAAG;AAAA,YAChF;AAAA,UACE;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,YACP,UAAU,SAAS;AAAA,YACnB,cAAc;AAAA,YACd,SAAS,MAAM,KAAK,qBAAqB,OAAO,CAAC;AAAA,UACnD;AAAA,UACA,CAAC,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC5B;AAAA,QACA,GAAG,KAAK;AAAA,UAAI,CAAC,GAAG,MACd,MAAM,eACF;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK,IAAI,CAAC;AAAA,cACV,OAAO;AAAA,cACP,OAAO,EAAE,SAAS,SAAS,OAAO,oBAAoB;AAAA,YACxD;AAAA,YACA;AAAA,UACF,QACA;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK;AAAA,cACL,MAAM;AAAA,cACN,OAAO,GAAG,OAAO,UAAU,MAAM,OAAO,gBAAgB,YAAY;AAAA,cACpE,OAAO,EAAE,UAAU,QAAQ,SAAS,EAAE;AAAA,cACtC,SAAS,MAAM,KAAK,qBAAqB,CAAC;AAAA,YAC5C;AAAA,YACA,IAAI;AAAA,UACN;AAAA,QACN;AAAA,YACA;AAAA,UACE;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,YACP,UAAU,QAAQ,MAAM,QAAQ;AAAA,YAChC,cAAc;AAAA,YACd,SAAS,MAAM,KAAK,qBAAqB,OAAO,CAAC;AAAA,UACnD;AAAA,UACA,CAAC,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,cAAU,4BAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC9D,SAAS,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACtC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,WAAW;AAAA,MACpB,MAAM,MAAM,QAAQ,CAAC,GAAG,MAAM;AAAA,QAC5B,IAAI,QACA,cAAE,OAAO,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,GAAG,eAAe,KAAK,MAAM,WAAW,MAAM,EAAE,CAAC,IACjF;AAAA,YACJ;AAAA,UACE;AAAA,UACA;AAAA,YACE,KAAK;AAAA,YACL,OAAO;AAAA,cACL;AAAA,cACA,IAAI,MAAM,WAAW;AAAA,cACrB,MAAM,MAAM,WAAW;AAAA,cACvB,IAAI,MAAM,WAAW;AAAA,YACvB;AAAA,UACF;AAAA,UACA;AAAA,gBACE,cAAE,QAAQ,EAAE,OAAO,cAAc,GAAG;AAAA,cAClC,IAAI,MAAM,UAAU,QAAQ,WAAW,KAAK,IAAI,IAAI;AAAA,YACtD,CAAC;AAAA,gBACD,cAAE,QAAQ,EAAE,OAAO,gBAAgB,GAAG,CAAC;AAAA,UACzC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,uBAAmB,4BAAgB;AAAA,EAC9C,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IAClC,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IAClC,WAAW,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACtC,OAAO,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,IAChD,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC5C;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAC3C,YAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,iBAAO;AAAA,QACL;AAAA,QACA,EAAE,OAAO,EAAE,UAAU,YAAY,OAAO,GAAG,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,IAAI,EAAE,EAAE;AAAA,QACjF;AAAA,cACE;AAAA,YACE;AAAA,YACA,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,EAAE,WAAW,iBAAiB,EAAE;AAAA,YAChF;AAAA,kBACE,cAAE,UAAU;AAAA,gBACV,IAAI,MAAM,OAAO;AAAA,gBACjB,IAAI,MAAM,OAAO;AAAA,gBACjB;AAAA,gBACA,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB,MAAM;AAAA,cACxB,CAAC;AAAA,kBACD,cAAE,UAAU;AAAA,gBACV,IAAI,MAAM,OAAO;AAAA,gBACjB,IAAI,MAAM,OAAO;AAAA,gBACjB;AAAA,gBACA,MAAM;AAAA,gBACN,QAAQ,MAAM;AAAA,gBACd,gBAAgB,MAAM;AAAA,gBACtB,kBAAkB;AAAA,gBAClB,oBAAoB;AAAA,gBACpB,qBAAqB,QAAQ,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,gBAC9D,OAAO,EAAE,YAAY,iDAAiD;AAAA,cACxE,CAAC;AAAA,YACH;AAAA,UACF;AAAA,cACA;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,cACP,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,OAAO;AAAA,gBACP,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,YAAY;AAAA,gBACZ,UAAU,GAAG,MAAM,OAAO,IAAI;AAAA,cAChC;AAAA,YACF;AAAA,YACA,MAAM,SAAS,GAAG,KAAK,MAAM,MAAM,KAAK,CAAC;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEM,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,UAAU,EAAE,MAAM,QAAmC,SAAS,KAAK;AAAA,IACnE,MAAM,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,EACjD;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,iBAAiB,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,EAAE;AAAA,MACxF;AAAA,QACE,MAAM,WACF;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,YAAY,uBAAuB,MAAM,IAAI;AAAA,cAC7C,OAAO,MAAM;AAAA,YACf;AAAA,UACF;AAAA,UACA,MAAM,KAAK;AAAA,QACb,IACA;AAAA,YACJ,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG;AAAA,cACnC,cAAE,OAAO,EAAE,OAAO,UAAU,GAAG,MAAM,KAAK;AAAA,cAC1C;AAAA,YACE;AAAA,YACA,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,YAAY,KAAK,OAAO,WAAW,MAAM,EAAE;AAAA,YACnF;AAAA,kBACE;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO;AAAA,kBACP,OAAO,EAAE,UAAU,QAAQ,YAAY,KAAK,eAAe,SAAS;AAAA,gBACtE;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,cACA,MAAM,SAAS,WACX;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO,GAAG,SAAS,MAAM,aAAa,OAAO,cAAc,WAAW;AAAA,kBACtE,OAAO,EAAE,SAAS,UAAU;AAAA,gBAC9B;AAAA,gBACA;AAAA,kBACE;AAAA,oBACE,MAAM,aAAa,OACf,0BACA;AAAA,oBACJ;AAAA,kBACF;AAAA,kBACA,MAAM;AAAA,gBACR;AAAA,cACF,IACA;AAAA,YACN;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,WAAW,CAAC,OAAO,WACvB;AAAA,EACE;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAC,cAAE,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,OAAG,cAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,CAAC;AACzE;AAEF,IAAM,UAAkC;AAAA,EACtC,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AACR;AASO,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE,EAAE;AAAA,EAC/E,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,QAAQ;AAAA,MACjB,MAAM,MAAM,IAAI,CAAC,IAAI,MAAM;AACzB,cAAM,IAAI,GAAG,OAAO,QAAQ,GAAG,IAAI,IAAI;AACvC,mBAAO,cAAE,OAAO,EAAE,KAAK,GAAG,OAAO,aAAa,GAAG;AAAA,cAC/C;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,cACP,OAAO,IACH;AAAA,gBACE,YAAY,uBAAuB,CAAC;AAAA,gBACpC,OAAO;AAAA,gBACP,aAAa,uBAAuB,CAAC;AAAA,cACvC,IACA;AAAA,YACN;AAAA,YACA,CAAC,SAAS,CAAC;AAAA,UACb;AAAA,cACA,cAAE,OAAO,EAAE,OAAO,aAAa,GAAG;AAAA,gBAChC;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO,EAAE,SAAS,QAAQ,YAAY,YAAY,KAAK,OAAO,UAAU,OAAO;AAAA,cACjF;AAAA,cACA;AAAA,oBACE,cAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,KAAK,UAAU,SAAS,EAAE,GAAG,GAAG,KAAK;AAAA,gBACtE,GAAG,WACC,cAAE,QAAQ,EAAE,OAAO,WAAW,OAAO,EAAE,YAAY,OAAO,EAAE,GAAG,GAAG,IAAI,IACtE;AAAA,cACN;AAAA,YACF;AAAA,YACA,GAAG,WACC;AAAA,cACE;AAAA,cACA,EAAE,OAAO,EAAE,UAAU,UAAU,OAAO,mBAAmB,WAAW,MAAM,EAAE;AAAA,cAC5E,GAAG;AAAA,YACL,IACA;AAAA,UACN,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,sBAAkB,4BAAgB;AAAA,EAC7C,MAAM;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,MAAM,OAAuC,SAAS,MAAM,CAAC,EAAE,EAAE;AAAA,EACnF,MAAM,OAAO;AACX,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,QAAQ;AAAA,MACjB,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;AACjC,cAAM,OAAO,MAAM,MAAM,MAAM,SAAS,IAAI,SAAS;AACrD,eAAO;AAAA,cACL,cAAE,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,cACxC,cAAE,MAAM,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ;AACF,CAAC;AAED,IAAM,cAAsC;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AACV;AACA,IAAM,SAAS;AACf,IAAM,aACJ;AAEK,IAAM,aAAS,4BAAgB;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAgD,SAAS,OAAO;AAAA,IAC9E,aAAa;AAAA,EACf;AAAA,EACA,OAAO,CAAC,SAAS;AAAA,EACjB,MAAM,OAAO,EAAE,OAAO,KAAK,GAAG;AAC5B,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,GAAG,aAAa,MAAM,IAAI,EAAE,GAAG;AAAA,MAC/C,MAAM,OAAO,MAAM,KAAK,IAAI,QAAQ,YAAY,MAAM,IAAI,GAAI,EAAE;AAAA,UAChE,cAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,QAAQ,YAAY,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC;AAAA,MACrF,MAAM,SAAS;AAAA,MACf,MAAM,kBACF;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,cAAc;AAAA,UACd,SAAS,MAAM,KAAK,SAAS;AAAA,QAC/B;AAAA,QACA,CAAC,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACtB,IACA;AAAA,IACN,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACzC,SAAS;AAAA,EACX;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,SAAS,MAAM,UAAU,cAAc;AAAA,QACzC;AAAA,MACF;AAAA,MACA;AAAA,YACE,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,EAAE,GAAG;AAAA,cACzC;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,QAAQ;AAAA,gBACR,YAAY;AAAA,gBACZ,OAAO;AAAA,gBACP,QAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,MAAM,OAAO,MAAM,KAAK,IAAI,CAAC,QAAQ,YAAY,EAAE,CAAC;AAAA,UACtD;AAAA,cACA,cAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,YAAY,IAAI,EAAE,GAAG,MAAM,KAAK;AAAA,UACtE,MAAM,WACF;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,gBACL,QAAQ;AAAA,gBACR,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,MAAM;AAAA,UACR,IACA;AAAA,UACJ,MAAM,aACF;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,YACA,MAAM,OAAO;AAAA,UACf,IACA;AAAA,QACN,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAOM,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,OAAoC,SAAS,MAAM,CAAC,EAAE;AAAA,IACrE,UAAU;AAAA,IACV,aAAa,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,EACtE;AAAA,EACA,MAAM,OAAO;AACX,UAAM,WAAO,gBAAI,IAAI,IAAY,MAAM,WAAW,CAAC;AACnD,UAAM,SAAS,CAAC,MAAc;AAC5B,YAAM,IAAI,KAAK;AACf,YAAM,IAAI,IAAI,IAAY,MAAM,WAAW,IAAI,CAAC,CAAC;AACjD,UAAI,EAAE,IAAI,CAAC,EAAG,GAAE,OAAO,CAAC;AAAA,UACnB,GAAE,IAAI,CAAC;AACZ,WAAK,QAAQ;AAAA,IACf;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,SAAS;AAAA,MAClB,MAAM,MAAM;AAAA,QAAI,CAAC,IAAI,UACnB,cAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,eAAe,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,GAAG;AAAA,cAC1E,cAAE,UAAU,EAAE,MAAM,UAAU,OAAO,eAAe,SAAS,MAAM,OAAO,CAAC,EAAE,GAAG;AAAA,YAC9E,GAAG;AAAA,gBACH;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO;AAAA,gBACP,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,kBAAkB;AAAA,gBAClB,mBAAmB;AAAA,cACrB;AAAA,cACA,KAAC,cAAE,QAAQ,EAAE,GAAG,WAAW,MAAM,CAAC,CAAC;AAAA,YACrC;AAAA,UACF,CAAC;AAAA,cACD,cAAE,OAAO,EAAE,OAAO,kBAAkB,GAAG;AAAA,gBACrC,cAAE,OAAO,MAAM,KAAC,cAAE,OAAO,EAAE,OAAO,cAAc,GAAG,GAAG,IAAI,CAAC,CAAC;AAAA,UAC9D,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAIM,SAAS,WAAW,KAAmB;AAC5C,MAAI,IAAI,SAAS,EAAG,QAAO;AAC3B,MAAI,IAAI,KAAK,IAAI,CAAC,EAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAG,CAAC,CAAC;AACrC,WAAS,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK;AACvC,UAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACtB,UAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;AAC1B,UAAMA,OAAM,KAAK,MAAM;AACvB,SAAK,MAAMA,GAAE,IAAI,EAAE,IAAIA,GAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,EAC7C;AACA,SAAO;AACT;AAEO,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC7D,OAAO,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,IAChD,GAAG,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IAChC,GAAG,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IAC/B,MAAM,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EACvC;AAAA,EACA,MAAM,OAAO;AACX,UAAM,MAAM,YAAQ,kBAAM,EAAE,QAAQ,iBAAiB,EAAE;AACvD,WAAO,MAAM;AACX,YAAM,OAAO,MAAM;AACnB,YAAM,MAAM,KAAK,IAAI,GAAG,IAAI;AAC5B,YAAM,MAAM,KAAK,IAAI,GAAG,IAAI;AAC5B,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,MAAY,KAAK,IAAI,CAAC,GAAG,MAAM;AAAA,QAClC,KAAK,KAAK,SAAS,KAAM,MAAM;AAAA,QAChC,MAAM,IAAI,KAAM,IAAI,OAAO,OAAQ,MAAM,IAAI;AAAA,MAC/C,CAAC;AACD,YAAM,IAAI,WAAW,GAAG;AACxB,YAAM,OAAO,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,UACE,OAAO,MAAM;AAAA,UACb,QAAQ,MAAM;AAAA,UACd,SAAS,OAAO,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,UAClC,OAAO,EAAE,SAAS,SAAS,UAAU,UAAU;AAAA,QACjD;AAAA,QACA;AAAA,UACE,MAAM,WACF,cAAE,QAAQ,MAAM;AAAA,gBACd,cAAE,kBAAkB,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG;AAAA,kBACnE,cAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,MAAM,OAAO,gBAAgB,OAAO,CAAC;AAAA,kBAC5E,cAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,MAAM,OAAO,gBAAgB,IAAI,CAAC;AAAA,YAC3E,CAAC;AAAA,UACH,CAAC,IACD;AAAA,UACJ,MAAM,WACF,cAAE,QAAQ;AAAA,YACR,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,MAAM,CAAC;AAAA,YAC9C,MAAM,QAAQ,GAAG;AAAA,UACnB,CAAC,IACD;AAAA,cACJ,cAAE,QAAQ;AAAA,YACR;AAAA,YACA,MAAM;AAAA,YACN,QAAQ,MAAM;AAAA,YACd,gBAAgB;AAAA,YAChB,kBAAkB;AAAA,UACpB,CAAC;AAAA,cACD,cAAE,UAAU,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,OAAO,MAAM,MAAM,MAAM,CAAC;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAQM,IAAM,YAAQ,4BAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAAiC,SAAS,MAAM,CAAC,EAAE;AAAA,IACjE,MAAM,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IACnC,WAAW,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EACzC;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,QAAQ,MAAM,KAAK,OAAO,CAAC,GAAG,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK;AAC7D,YAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAC3C,YAAM,IAAI,MAAM,OAAO;AACvB,YAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,UAAI,MAAM;AACV,YAAM,OAAO,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM;AACpC,cAAM,MAAO,EAAE,QAAQ,QAAS;AAChC,cAAM,UAAM,cAAE,UAAU;AAAA,UACtB,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,UACN,QAAQ,EAAE;AAAA,UACV,gBAAgB,MAAM;AAAA,UACtB,oBAAoB,GAAG,MAAM,GAAG,IAAI,OAAO,MAAM,GAAG;AAAA,UACpD,qBAAqB,CAAC;AAAA,UACtB,kBAAkB;AAAA,QACpB,CAAC;AACD,eAAO;AACP,eAAO;AAAA,MACT,CAAC;AACD,iBAAO,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,EAAE,GAAG;AAAA,YACjF;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,MAAM;AAAA,YACb,QAAQ,MAAM;AAAA,YACd,OAAO,EAAE,WAAW,kBAAkB,YAAY,EAAE;AAAA,UACtD;AAAA,UACA;AAAA,gBACE,cAAE,UAAU;AAAA,cACV,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ;AAAA,cACA,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,gBAAgB,MAAM;AAAA,YACxB,CAAC;AAAA,YACD,GAAG;AAAA,UACL;AAAA,QACF;AAAA,YACA;AAAA,UACE;AAAA,UACA,EAAE,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO,MAAM,EAAE,EAAE;AAAA,UAC3E,MAAM,KAAK;AAAA,YAAI,CAAC,GAAG,UACjB;AAAA,cACE;AAAA,cACA;AAAA,gBACE,KAAK;AAAA,gBACL,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,UAAU,SAAS;AAAA,cACjF;AAAA,cACA;AAAA,oBACE,cAAE,KAAK;AAAA,kBACL,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,YAAY,EAAE;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA,gBACF,CAAC;AAAA,oBACD,cAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,mBAAmB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;AAAA,oBACnE;AAAA,kBACE;AAAA,kBACA,EAAE,OAAO,aAAa,OAAO,EAAE,YAAY,IAAI,EAAE;AAAA,kBACjD,GAAG,KAAK,MAAO,EAAE,QAAQ,QAAS,GAAG,CAAC;AAAA,gBACxC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IAC1C,UAAU,EAAE,MAAM,QAAmC,SAAS,KAAK;AAAA,IACnE,OAAO,EAAE,MAAM,OAA6B,SAAS,OAAU;AAAA,IAC/D,YAAY,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,EACvD;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,OAAO;AAAA,MACjE;AAAA,MACA;AAAA,YACE;AAAA,UACE;AAAA,UACA,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,gBAAgB,EAAE;AAAA,UACpF;AAAA,gBACE,cAAE,OAAO,EAAE,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,EAAE,GAAG;AAAA,kBAC1E;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,YAAY;AAAA,oBACZ,OAAO;AAAA,kBACT;AAAA,gBACF;AAAA,gBACA,MAAM,OAAO;AAAA,cACf;AAAA,kBACA,cAAE,QAAQ,EAAE,OAAO,UAAU,GAAG,MAAM,KAAK;AAAA,YAC7C,CAAC;AAAA,YACD,MAAM,SAAS,WACX;AAAA,cACE;AAAA,cACA,EAAE,OAAO,GAAG,SAAS,MAAM,aAAa,OAAO,cAAc,WAAW,EAAE;AAAA,cAC1E;AAAA,gBACE;AAAA,kBACE,MAAM,aAAa,OAAO,0BAA0B;AAAA,kBACpD;AAAA,gBACF;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,YACF,IACA;AAAA,UACN;AAAA,QACF;AAAA,YACA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,KAAK;AAAA,YACP;AAAA,UACF;AAAA,UACA;AAAA,gBACE;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO;AAAA,gBACP,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,eAAe;AAAA,kBACf,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,MAAM;AAAA,YACR;AAAA,YACA,MAAM,YAAQ,cAAE,WAAW,EAAE,MAAM,MAAM,OAAO,OAAO,MAAM,WAAW,CAAC,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,cAAc;AAEb,IAAM,oBAAgB,4BAAgB;AAAA,EAC3C,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACvC,KAAK,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACxC,KAAK,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,IACxC,MAAM,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACjC,MAAM,EAAE,MAAM,QAAQ,SAAS,OAAU;AAAA,EAC3C;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,UAAM,MAAM,CAAC,MAAc;AACzB,UAAI,IAAI;AACR,UAAI,MAAM,OAAO,QAAQ,IAAI,MAAM,IAAK,KAAI,MAAM;AAClD,UAAI,MAAM,OAAO,QAAQ,IAAI,MAAM,IAAK,KAAI,MAAM;AAClD,WAAK,qBAAqB,CAAC;AAAA,IAC7B;AACA,WAAO,UACL,cAAE,OAAO,EAAE,OAAO,aAAa,GAAG;AAAA,UAChC;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,cAAc;AAAA,UACd,UAAU,MAAM,OAAO,QAAQ,MAAM,cAAc,MAAM;AAAA,UACzD,SAAS,MAAM,IAAI,MAAM,aAAa,MAAM,IAAI;AAAA,QAClD;AAAA,QACA;AAAA,MACF;AAAA,UACA,cAAE,QAAQ,EAAE,OAAO,MAAM,GAAG;AAAA,QAC1B,MAAM;AAAA,QACN,MAAM,WAAO,cAAE,KAAK,MAAM,MAAM,IAAI,IAAI;AAAA,MAC1C,CAAC;AAAA,UACD;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,cAAc;AAAA,UACd,UAAU,MAAM,OAAO,QAAQ,MAAM,cAAc,MAAM;AAAA,UACzD,SAAS,MAAM,IAAI,MAAM,aAAa,MAAM,IAAI;AAAA,QAClD;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACL;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAQ,UAAU,KAAK;AAAA,IACrC,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAO;AAAA,IACvC,MAAM,EAAE,MAAM,QAA0B,SAAS,KAAK;AAAA,EACxD;AAAA,EACA,MAAM,OAAO;AACX,UAAM,WAAO,gBAAI,KAAK;AACtB,UAAM,OAAO,YAAY;AACvB,UAAI;AACF,cAAM,UAAU,WAAW,UAAU,MAAM,IAAI;AAAA,MACjD,QAAQ;AAAA,MAER;AACA,WAAK,QAAQ;AACb,iBAAW,MAAO,KAAK,QAAQ,OAAQ,IAAI;AAAA,IAC7C;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO,GAAG,OAAO,aAAa,MAAM,SAAS,QAAQ,QAAQ;AAAA,QAC7D,SAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,KAAK,YACD,cAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,kBAAkB,SAAS,cAAc,EAAE,GAAG;AAAA,UACxE,QAAQ,YAAY,EAAE;AAAA,QACxB,CAAC,IACD,QAAQ,UAAU,EAAE;AAAA,QACxB,KAAK,QAAQ,WAAW,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,iBAAa,4BAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,IACnC,aAAa,EAAE,MAAM,QAAQ,SAAS,QAAQ;AAAA,EAChD;AAAA,EACA,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,UAAM,cAAU,gBAAI,KAAK;AACzB,UAAM,YAAQ,gBAAI,MAAM,KAAK;AAC7B,UAAM,SAAS,MAAM;AACnB,cAAQ,QAAQ;AAChB,UAAI,MAAM,UAAU,MAAM,MAAO,MAAK,QAAQ,MAAM,KAAK;AAAA,IAC3D;AACA,WAAO,MACL,QAAQ,YACJ,cAAE,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,MACb,OAAO,EAAE,QAAQ,QAAQ,UAAU,QAAQ;AAAA,MAC3C,gBAAgB,CAAC,OAAyB,GAAG,IAAyB,MAAM;AAAA,MAC5E,SAAS,CAAC,MAAc,MAAM,QAAS,EAAE,OAA4B;AAAA,MACrE,QAAQ;AAAA,MACR,WAAW,CAAC,MAAqB;AAC/B,YAAI,EAAE,QAAQ,QAAS,QAAO;AAC9B,YAAI,EAAE,QAAQ,UAAU;AACtB,gBAAM,QAAQ,MAAM;AACpB,kBAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC,QACD;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,SAAS,MAAM;AACb,gBAAM,QAAQ,MAAM;AACpB,kBAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,MACA;AAAA,YACE;AAAA,UACE;AAAA,UACA,EAAE,OAAO,EAAE,OAAO,MAAM,QAAQ,gBAAgB,oBAAoB,EAAE;AAAA,UACtE,MAAM,SAAS,MAAM;AAAA,QACvB;AAAA,YACA,cAAE,QAAQ,EAAE,OAAO,OAAO,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG;AAAA,UAC7D,QAAQ,aAAa,EAAE;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACR;AACF,CAAC;AAED,IAAM,eAAe,CAAC,GAAW,MAAc,YAC7C;AAAA,EACE;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAC,cAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnB;AAEF,IAAM,cAAc;AAQpB,IAAM,aAAa,CAAC,MAAoB,EAAE,MAAM,EAAE;AAElD,IAAM,kBAAyB,4BAAgB;AAAA,EAC7C,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAkC,UAAU,KAAK;AAAA,IAC/D,UAAU,EAAE,MAAM,QAAiC,UAAU,KAAK;AAAA,IAClE,UAAU,EAAE,MAAM,QAAmC,SAAS,KAAK;AAAA,IACnE,QAAQ,EAAE,MAAM,UAA4C,UAAU,KAAK;AAAA,IAC3E,QAAQ,EAAE,MAAM,UAA4C,UAAU,KAAK;AAAA,EAC7E;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,OAAO,MAAM;AACnB,YAAM,KAAK,WAAW,IAAI;AAC1B,YAAM,OAAO,KAAK,YAAY,CAAC;AAC/B,YAAM,UAAU,KAAK,SAAS;AAC9B,YAAM,OAAO,MAAM,SAAS,IAAI,EAAE;AAClC,iBAAO,cAAE,OAAO,MAAM;AAAA,YACpB;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,GAAG,eAAe,QAAQ,QAAQ,MAAM,aAAa,MAAM,KAAK;AAAA,YACvE,SAAS,MAAM;AACb,kBAAI,QAAS,OAAM,OAAO,EAAE;AAC5B,oBAAM,OAAO,EAAE;AAAA,YACjB;AAAA,UACF;AAAA,UACA;AAAA,YACE,UACI,aAAa,WAAW,OAAO,IAAI,SAAS,QAC5C,cAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,QAAQ,YAAY,EAAE,EAAE,CAAC;AAAA,YACzD,aAAa,UAAU,cAAc,UAAU,IAAI,SAAS;AAAA,gBAC5D;AAAA,cACE;AAAA,cACA;AAAA,gBACE,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,cACA,KAAK;AAAA,YACP;AAAA,YACA,KAAK,SAAS,WACV;AAAA,cACE;AAAA,cACA,EAAE,OAAO,QAAQ,OAAO,EAAE,UAAU,QAAQ,OAAO,oBAAoB,EAAE;AAAA,cACzE,KAAK;AAAA,YACP,IACA;AAAA,UACN;AAAA,QACF;AAAA,QACA,WAAW,WACP;AAAA,UACE;AAAA,UACA,EAAE,OAAO,mBAAmB;AAAA,UAC5B,KAAK;AAAA,YAAI,CAAC,GAAG,UACX,cAAE,aAAa;AAAA,cACb,KAAK;AAAA,cACL,MAAM;AAAA,cACN,UAAU,MAAM;AAAA,cAChB,UAAU,MAAM;AAAA,cAChB,QAAQ,MAAM;AAAA,cACd,QAAQ,MAAM;AAAA,YAChB,CAAC;AAAA,UACH;AAAA,QACF,IACA;AAAA,MACN,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,WAAO,4BAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAAmC,SAAS,MAAM,CAAC,EAAE;AAAA,IACnE,iBAAiB,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,EAC1E;AAAA,EACA,MAAM,OAAO;AACX,UAAM,eAAW,gBAAI,IAAI,IAAY,MAAM,eAAe,CAAC;AAC3D,UAAM,eAAW,gBAAmB,IAAI;AACxC,UAAM,SAAS,CAAC,OAAe;AAC7B,YAAM,IAAI,IAAI,IAAI,SAAS,KAAK;AAChC,UAAI,EAAE,IAAI,EAAE,EAAG,GAAE,OAAO,EAAE;AAAA,UACrB,GAAE,IAAI,EAAE;AACb,eAAS,QAAQ;AAAA,IACnB;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,UAAU;AAAA,MACnB,MAAM,KAAK;AAAA,QAAI,CAAC,GAAG,UACjB,cAAE,aAAa;AAAA,UACb,KAAK;AAAA,UACL,MAAM;AAAA,UACN,UAAU,SAAS;AAAA,UACnB,UAAU,SAAS;AAAA,UACnB;AAAA,UACA,QAAQ,CAAC,OAAgB,SAAS,QAAQ;AAAA,QAC5C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,QAAQ,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,IACnC,YAAY,EAAE,MAAM,QAAQ,SAAS,GAAG;AAAA,EAC1C;AAAA,EACA,OAAO,CAAC,mBAAmB;AAAA,EAC3B,MAAM,OAAO,EAAE,KAAK,GAAG;AACrB,UAAM,OAAoC,CAAC;AAC3C,UAAM,MAAM,CAAC,GAAW,OAAe;AACrC,YAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE;AACtF,YAAM,CAAC,IAAI,GAAG,MAAM,EAAE;AACtB,WAAK,qBAAqB,MAAM,KAAK,EAAE,CAAC;AACxC,UAAI,MAAM,IAAI,MAAM,SAAS,EAAG,MAAK,IAAI,CAAC,GAAG,MAAM;AAAA,IACrD;AACA,UAAM,QAAQ,CAAC,GAAW,MAAqB;AAC7C,UAAI,EAAE,QAAQ,eAAe,CAAC,MAAM,WAAW,CAAC,KAAK,IAAI,EAAG,MAAK,IAAI,CAAC,GAAG,MAAM;AAAA,IACjF;AACA,WAAO,UACL;AAAA,MACE;AAAA,MACA,EAAE,OAAO,SAAS;AAAA,MAClB,MAAM;AAAA,QAAK,EAAE,QAAQ,MAAM,OAAO;AAAA,QAAG,CAAC,GAAG,UACvC,cAAE,SAAS;AAAA,UACT,KAAK;AAAA,UACL,KAAK,CAAC,OAAgB;AACpB,iBAAK,CAAC,IAAI;AAAA,UACZ;AAAA,UACA,WAAW;AAAA,UACX,WAAW;AAAA,UACX,OAAO,MAAM,WAAW,CAAC,KAAK;AAAA,UAC9B,SAAS,CAAC,MAAa,IAAI,GAAI,EAAE,OAA4B,MAAM,QAAQ,OAAO,EAAE,CAAC;AAAA,UACrF,WAAW,CAAC,MAAqB,MAAM,GAAG,CAAC;AAAA,QAC7C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACJ;AACF,CAAC;AAEM,SAAS,QAAQ,GAAmB;AACzC,MAAI,KAAK,IAAI,CAAC,KAAK,IAAK,SAAQ,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;AAC1E,MAAI,KAAK,IAAI,CAAC,KAAK,IAAK,SAAQ,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;AAC1E,SAAO,OAAO,CAAC;AACjB;AAEO,IAAM,gBAAY,4BAAgB;AAAA,EACvC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,QAAQ,EAAE,MAAM,OAA+B,SAAS,MAAM,CAAC,EAAE;AAAA,IACjE,QAAQ,EAAE,MAAM,OAA6B,SAAS,OAAU;AAAA,IAChE,OAAO,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IACpC,QAAQ,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IACrC,OAAO,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,IAChD,QAAQ,EAAE,MAAM,QAAQ,SAAS,kBAAkB;AAAA,IACnD,MAAM;AAAA,EACR;AAAA,EACA,MAAM,OAAO;AACX,UAAM,MAAM,WAAO,kBAAM,EAAE,QAAQ,iBAAiB,EAAE;AACtD,UAAM,MAAM,CAAC,GAAW,GAAW,QAAgB,YACjD;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,aAAa;AAAA,QACb,MAAM;AAAA,QACN,eAAe;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AACF,WAAO,MAAM;AACX,YAAM,IAAI,MAAM;AAChB,YAAM,SAAS,MAAM;AACrB,YAAM,OAAO;AACb,YAAM,OAAO;AACb,YAAM,OAAO;AACb,YAAM,OAAO;AACb,YAAM,SAAS,KAAK,IAAI,IAAI,IAAI,OAAO,IAAI;AAC3C,YAAM,SAAS,SAAS,OAAO;AAC/B,YAAM,KAAK,MAAM,OAAO,CAAC,KAAK,CAAC;AAC/B,YAAM,KAAK,MAAM,OAAO,CAAC;AACzB,YAAM,MAAM,MAAM,QAAQ,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI;AAChD,YAAM,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI;AAClC,YAAM,MAAM,OAAO;AACnB,YAAM,KAAK,CAAC,GAAW,QAAgB,OAAQ,IAAI,KAAK,IAAI,GAAG,MAAM,CAAC,IAAK;AAC3E,YAAM,KAAK,CAAC,MAAc,OAAO,SAAU,IAAI,MAAO;AACtD,YAAM,QAAQ,CAAC,QAAwB,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;AACnF,YAAM,SAAS,MAAM,QAAQ,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK;AAC5D,YAAM,SAAS;AACf,YAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,SAAS,EAAE,GAAG,CAAC,GAAG,MAAM;AACxD,cAAM,IAAI,GAAI,MAAM,SAAU,CAAC;AAC/B,mBAAO,cAAE,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG;AAAA,cAC9B,cAAE,QAAQ;AAAA,YACR,IAAI;AAAA,YACJ,IAAI,IAAI;AAAA,YACR,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB,CAAC;AAAA,UACD,IAAI,OAAO,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK,MAAO,MAAM,SAAU,CAAC,CAAC,CAAC;AAAA,QACvE,CAAC;AAAA,MACH,CAAC;AACD,YAAM,OAAO,MAAM,SACf,MAAM,OAAO;AAAA,QAAI,CAAC,IAAI,MACpB,IAAI,KAAK,KAAK,MAAM,OAAQ,SAAS,CAAC,MAAM,IACxC,IAAI,GAAG,GAAG,MAAM,OAAQ,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE,IACzD;AAAA,MACN,IACA,CAAC;AACL,YAAM,UAAU,MAAM,IAAI,CAAC,KAAK,OAAO;AACrC,cAAM,SAAS,OAAO,IAAI,MAAM,QAAQ,MAAM;AAC9C,cAAM,SAAS,IAAI,IAAI,SAAS,CAAC;AACjC,cAAM,UAAU,IAAI,CAAC;AACrB,mBAAO,cAAE,KAAK,EAAE,KAAK,OAAO,GAAG,GAAG;AAAA,UAChC,OAAO,KAAK,WAAW,aACnB,cAAE,QAAQ;AAAA,YACR,GAAG,GAAG,WAAW,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,IAAI,OAAO,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,MAAM;AAAA,YACtF,MAAM,QAAQ,GAAG;AAAA,UACnB,CAAC,IACD;AAAA,cACJ,cAAE,QAAQ;AAAA,YACR,GAAG,WAAW,GAAG;AAAA,YACjB,MAAM;AAAA,YACN;AAAA,YACA,gBAAgB;AAAA,YAChB,kBAAkB;AAAA,YAClB,oBAAoB,OAAO,IAAI,QAAQ;AAAA,YACvC,OAAO,EAAE,SAAS,OAAO,IAAI,MAAM,EAAE;AAAA,UACvC,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AACD,iBAAO,cAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG;AAAA,YACjE,cAAE,QAAQ,MAAM;AAAA,cACd,cAAE,kBAAkB,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG;AAAA,gBACnE,cAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,MAAM,OAAO,gBAAgB,OAAO,CAAC;AAAA,gBAC5E,cAAE,QAAQ,EAAE,QAAQ,KAAK,cAAc,MAAM,OAAO,gBAAgB,IAAI,CAAC;AAAA,UAC3E,CAAC;AAAA,QACH,CAAC;AAAA,QACD,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,eAAW,4BAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,OAA6B,SAAS,MAAM,CAAC,EAAE;AAAA,IAC7D,QAAQ,EAAE,MAAM,OAA6B,SAAS,OAAU;AAAA,IAChE,OAAO,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IACpC,QAAQ,EAAE,MAAM,QAAQ,SAAS,IAAI;AAAA,IACrC,OAAO,EAAE,MAAM,QAAQ,SAAS,gBAAgB;AAAA,EAClD;AAAA,EACA,MAAM,OAAO;AACX,WAAO,MAAM;AACX,YAAM,IAAI,MAAM;AAChB,YAAM,SAAS,MAAM;AACrB,YAAM,OAAO;AACb,YAAM,OAAO;AACb,YAAM,OAAO;AACb,YAAM,SAAS,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC;AACxC,YAAM,SAAS,SAAS,OAAO;AAC/B,YAAM,MAAM,KAAK,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,QAAQ;AACjD,YAAM,KAAK,UAAU,MAAM,KAAK,UAAU;AAC1C,YAAM,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM;AACrC,cAAM,IAAI,OAAO,SAAS,IAAI;AAC9B,mBAAO,cAAE,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG;AAAA,cAC9B,cAAE,QAAQ,EAAE,IAAI,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,mBAAmB,CAAC;AAAA,cAC3E;AAAA,YACE;AAAA,YACA;AAAA,cACE,GAAG,OAAO;AAAA,cACV,GAAG,IAAI;AAAA,cACP,eAAe;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,cACN,eAAe;AAAA,YACjB;AAAA,YACA,QAAQ,KAAK,MAAM,MAAM,CAAC,CAAC;AAAA,UAC7B;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,YAAM,OAAO,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM;AACpC,cAAM,KAAM,IAAI,MAAO;AACvB,cAAM,IAAI,OAAO,IAAI,KAAK,KAAK;AAC/B,cAAM,MAAM,KAAK;AACjB,mBAAO,cAAE,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG;AAAA,cAC9B,cAAE,QAAQ;AAAA,YACR;AAAA,YACA,GAAG,OAAO,SAAS;AAAA,YACnB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,IAAI;AAAA,YACJ,MAAM,uBAAuB,MAAM,KAAK;AAAA,UAC1C,CAAC;AAAA,UACD,MAAM,SAAS,CAAC,KAAK,WACjB;AAAA,YACE;AAAA,YACA;AAAA,cACE,GAAG,IAAI,MAAM;AAAA,cACb,GAAG,SAAS;AAAA,cACZ,eAAe;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,cACN,eAAe;AAAA,YACjB;AAAA,YACA,MAAM,OAAO,CAAC;AAAA,UAChB,IACA;AAAA,QACN,CAAC;AAAA,MACH,CAAC;AACD,iBAAO,cAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,OAAO,EAAE,SAAS,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AAAA,IACvF;AAAA,EACF;AACF,CAAC;","names":["cx"]}
|