@qtalo/qt-ui-library 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["days: CalendarDay[]","toasts: ToastItem[]","positionClasses: Record<ToastPosition, string>","align: Align","DIRECTION_CLASS: Record<ArrowDirection, string>","colorKey: AvatarColorKey","actionGroups: Record<string, BulkAction[]>","densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }>"],"sources":["../src/tokens/colors.ts","../src/utils/calendar.ts","../src/utils/classnames.ts","../src/utils/string.ts","../src/utils/color.ts","../src/utils/hooks/use-long-press.ts","../src/primitives/button.tsx","../src/primitives/checkbox.tsx","../src/primitives/dropdown/dropdown-context.tsx","../src/primitives/dropdown/dropdown.tsx","../src/primitives/input.tsx","../src/primitives/pressable.tsx","../src/primitives/stop-propagation.tsx","../src/primitives/toast/toast-store.ts","../src/primitives/toast/toast.tsx","../src/primitives/toast/toaster.tsx","../src/primitives/tooltip.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-content.tsx","../src/icons/icon.tsx","../src/icons/brand/logo.tsx","../src/icons/integrations/airtable.tsx","../src/icons/integrations/asana.tsx","../src/icons/integrations/clickup.tsx","../src/icons/integrations/gmail.tsx","../src/icons/integrations/google-calendar.tsx","../src/icons/integrations/jira.tsx","../src/icons/integrations/outlook-calendar.tsx","../src/icons/integrations/outlook.tsx","../src/icons/integrations/slack.tsx","../src/icons/integrations/teams.tsx","../src/icons/states/checkbox.tsx","../src/icons/states/check-cirlcle-empty.tsx","../src/icons/states/check-circle.tsx","../src/icons/states/fire.tsx","../src/icons/states/insight.tsx","../src/icons/states/not-fire.tsx","../src/icons/states/read.tsx","../src/icons/states/unread.tsx","../src/icons/system/account.tsx","../src/icons/system/add.tsx","../src/icons/system/arrow.tsx","../src/icons/system/calendar.tsx","../src/icons/system/close.tsx","../src/icons/system/compact-density.tsx","../src/icons/system/copy.tsx","../src/icons/system/dark.tsx","../src/icons/system/external-link.tsx","../src/icons/system/light.tsx","../src/icons/system/minus.tsx","../src/icons/system/more.tsx","../src/icons/system/normal-density.tsx","../src/icons/system/search.tsx","../src/icons/system/summary.tsx","../src/icons/system/system.tsx","../src/components/badge/badge.tsx","../src/components/card/card.tsx","../src/components/card/card-layout.tsx","../src/components/card/card-sidebar.tsx","../src/components/card/card-header.tsx","../src/components/card/card-title.tsx","../src/components/card/card-content.tsx","../src/components/card/card-footer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/patterns/avatar/types/avatar.ts","../src/patterns/avatar/avatar.tsx","../src/patterns/badges/status-badge.tsx","../src/patterns/buttons/icon-button/icon-button.tsx","../src/patterns/tooltips/info-tooltip.tsx","../src/patterns/bulk-actions/bulk-actions.tsx","../src/patterns/buttons/filter-button/filter-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button.tsx","../src/patterns/dropdowns/action-menu/action-menu.tsx","../src/patterns/dropdowns/date-picker/date-picker.tsx","../src/patterns/filter-bar/filter-bar.tsx","../src/patterns/layout/divider.tsx","../src/patterns/integration-bar/integration-bar.tsx","../src/types/sizes.ts","../src/patterns/preview-card/preview-card.tsx","../src/patterns/search-input/search-input.tsx"],"sourcesContent":["/**\n * Brand color tokens\n *\n * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css\n *\n * The single source of truth is src/styles/tailwind.css (@theme directive).\n * These TypeScript tokens are provided for programmatic access in components.\n *\n * When updating colors:\n * 1. Update the value in src/styles/tailwind.css first\n * 2. Then update the corresponding value here to keep them in sync\n *\n * Usage:\n * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)\n * - For programmatic access: Import and use these tokens\n */\nexport const colors = {\n brandPrimary: \"#6558fd\", // Must match --color-brand-primary in tailwind.css\n brandSecondary: \"#ceff1a\", // Must match --color-brand-secondary in tailwind.css\n} as const;\n","/**\n * Calendar utility functions using native Date API\n */\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\nconst WEEKDAYS = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"] as const;\n\n/**\n * Get the number of days in a given month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n // month is 0-indexed (0 = January, 11 = December)\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n * Returns 0-6 where 0 is Sunday\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)\n * Sunday (0) becomes 6, Monday (1) becomes 0, etc.\n */\nexport function toMondayBased(dayOfWeek: number): number {\n return dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n}\n\n/**\n * Format a date to \"Dec 3, 2025\" format\n */\nexport function formatDate(date: Date | null): string {\n if (!date) return \"\";\n const monthName = MONTH_NAMES[date.getMonth()] ?? \"\";\n const monthAbbr = monthName.substring(0, 3);\n const day = date.getDate();\n const year = date.getFullYear();\n return `${monthAbbr} ${day}, ${year}`;\n}\n\n/**\n * Parse MM/DD/YYYY format to Date\n */\nexport function parseDate(dateString: string): Date | null {\n if (!dateString) return null;\n const parts = dateString.split(\"/\");\n if (parts.length !== 3) return null;\n const month = parseInt(parts[0], 10) - 1; // 0-indexed\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n // Validate the date\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\n/**\n * Check if two dates are the same day\n */\nexport function isSameDay(date1: Date | null, date2: Date | null): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/**\n * Check if a date is today\n */\nexport function isToday(date: Date): boolean {\n const today = new Date();\n return isSameDay(date, today);\n}\n\n/**\n * Check if date1 is before date2 (ignoring time)\n */\nexport function isDateBefore(date1: Date, date2: Date): boolean {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1 < d2;\n}\n\n/**\n * Check if a date is within a range (inclusive)\n */\nexport function isDateInRange(\n date: Date,\n startDate: Date | null,\n endDate: Date | null\n): boolean {\n if (!startDate || !endDate) return false;\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const start = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n );\n const end = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n return d >= start && d <= end;\n}\n\n/**\n * Format a date or date range for display\n * Single day: \"Dec 3, 2025\"\n * Same year range: \"Jan 5 - Jan 17, 2026\"\n * Different years: \"Nov 5, 2025 - Jan 17, 2026\"\n */\nexport function formatDateRange(\n startDate: Date | null,\n endDate: Date | null\n): string {\n if (!startDate) return \"\";\n\n // If only start date exists, treat as single date\n if (!endDate) {\n return formatSingleDate(startDate);\n }\n\n const isSameDay =\n startDate.getFullYear() === endDate.getFullYear() &&\n startDate.getMonth() === endDate.getMonth() &&\n startDate.getDate() === endDate.getDate();\n\n if (isSameDay) {\n return formatSingleDate(startDate);\n }\n\n const startMonth = MONTH_NAMES[startDate.getMonth()]?.substring(0, 3) ?? \"\";\n const startDay = startDate.getDate();\n const startYear = startDate.getFullYear();\n\n const endMonth = MONTH_NAMES[endDate.getMonth()]?.substring(0, 3) ?? \"\";\n const endDay = endDate.getDate();\n const endYear = endDate.getFullYear();\n\n if (startYear === endYear) {\n return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n }\n\n return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n}\n\n/**\n * Format a single date\n * \"Dec 3, 2025\"\n */\nfunction formatSingleDate(date: Date): string {\n const month = MONTH_NAMES[date.getMonth()]?.substring(0, 3) ?? \"\";\n const day = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${day}, ${year}`;\n}\n\n/**\n * Get month name\n */\nexport function getMonthName(month: number): string {\n return MONTH_NAMES[month] ?? \"\";\n}\n\n/**\n * Get weekday labels\n */\nexport function getWeekdays(): readonly string[] {\n return WEEKDAYS;\n}\n\n/**\n * Calendar day metadata\n */\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n};\n\n/**\n * Generate a full calendar grid with days from previous, current, and next month\n * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)\n * The first column is always Monday\n */\nexport function generateCalendarDays(\n year: number,\n month: number\n): CalendarDay[] {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayMondayBased = toMondayBased(getFirstDayOfMonth(year, month));\n\n const days: CalendarDay[] = [];\n\n // Add days from previous month\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\n\n // Start from the day that fills the first empty slot\n const startDayPrevMonth = daysInPrevMonth - firstDayMondayBased + 1;\n for (let day = startDayPrevMonth; day <= daysInPrevMonth; day++) {\n days.push({\n date: new Date(prevYear, prevMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n // Add all days from current month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push({\n date: new Date(year, month, day),\n day,\n isCurrentMonth: true,\n });\n }\n\n // Calculate how many days from next month are needed to complete the grid\n const totalDays = days.length;\n const remainingDays = (7 - (totalDays % 7)) % 7; // Ensure we get a multiple of 7\n\n // Add days from next month\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= remainingDays; day++) {\n days.push({\n date: new Date(nextYear, nextMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n return days;\n}\n","import clsx, { type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const capitalize = (s: string) => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport function stringHash(input: string): number {\n let hash = 0;\n\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash) + i * 31;\n }\n\n return hash + input.length * 997;\n}\n\nexport function getInitials(value: string) {\n const parts = value.trim().split(/\\s+/);\n const initials =\n parts.length >= 2\n ? parts[0][0] + parts[1][0]\n : (parts[0]?.substring(0, 2) ?? \"\");\n\n return initials.toUpperCase();\n}\n","import { stringHash } from \"./string\";\n\nexport function pickColorFromPalette<T>(\n value: string,\n palette: readonly T[]\n): T {\n const normalized = value.trim().toLowerCase();\n const hash = stringHash(normalized);\n const index = Math.abs(hash) % palette.length;\n return palette[index];\n}\n","import { useRef } from \"react\";\n\nexport function useLongPress(\n onLongPress: () => void,\n onClick: () => void,\n delay = 450\n) {\n const timer = useRef<number | null>(null);\n const isLongPress = useRef(false);\n\n const start = () => {\n isLongPress.current = false;\n timer.current = window.setTimeout(() => {\n onLongPress();\n isLongPress.current = true;\n }, delay);\n };\n\n const clear = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n\n const click = () => {\n if (!isLongPress.current) {\n onClick();\n }\n };\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onClick: click,\n };\n}\n","import { type ButtonHTMLAttributes } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string;\n};\n\nexport function Button({ className, children, ...props }: ButtonProps) {\n return (\n <button {...props} className={cn(\"btn-base\", className)}>\n {children}\n </button>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n children?: ReactNode;\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n};\n\nexport function Checkbox({\n checked,\n defaultChecked,\n icon,\n indeterminate,\n indeterminateIcon,\n onChange,\n disabled,\n children,\n className,\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Internal state for uncontrolled usage\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false\n );\n\n const isChecked = checked ?? internalChecked;\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate]);\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.checked;\n\n if (checked === undefined) {\n setInternalChecked(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <label\n className={cn(\n \"relative inline-flex w-fit cursor-pointer items-center gap-2 select-none\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {/* Hidden native checkbox */}\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={cn(\n \"absolute h-px w-px overflow-hidden p-0 whitespace-nowrap\",\n \"[clip-path:inset(50%)]\",\n \"border-0\"\n )}\n disabled={disabled}\n onChange={handleChange}\n {...(checked !== undefined ? { checked } : { defaultChecked })}\n />\n\n {/* Visual checkbox */}\n <span\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n tabIndex={-1}\n data-state={\n indeterminate ? \"indeterminate\" : isChecked ? \"checked\" : \"unchecked\"\n }\n className=\"checkbox-box inline-flex items-center justify-center\"\n >\n <span\n className={cn(\n \"checkbox-icon\",\n !(isChecked || indeterminate) && \"opacity-0\"\n )}\n >\n {indeterminate ? (indeterminateIcon ?? \"—\") : (icon ?? \"✓\")}\n </span>\n </span>\n\n {/* Label */}\n {children && <span className=\"checkbox-label\">{children}</span>}\n </label>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype DropdownContextValue = {\n close: () => void;\n};\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\"useDropdown must be used inside Dropdown\");\n }\n return ctx;\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { DropdownContext } from \"./dropdown-context\";\n\ntype DropdownAlign = \"start\" | \"end\";\n\nexport type DropdownProps = {\n trigger: ReactNode;\n children: ReactNode;\n align?: DropdownAlign;\n disabled?: boolean;\n};\n\nexport function Dropdown({\n trigger,\n children,\n align = \"start\",\n disabled = false,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const closeTimeout = useRef<number | null>(null);\n\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n // Position the dropdown content based on the trigger and alignment\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n let left = triggerRect.left;\n\n if (align === \"end\") {\n left = triggerRect.right - contentRect.width;\n }\n\n setPosition({\n top: triggerRect.bottom,\n left,\n });\n }, [open, align]);\n\n // Open the dropdown on hover or click\n function openDropdown() {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n closeTimeout.current = null;\n }\n setOpen(true);\n }\n\n // Schedule the close of the dropdown after a delay\n function scheduleClose() {\n closeTimeout.current = window.setTimeout(() => {\n setOpen(false);\n }, 120);\n }\n\n // Close the dropdown if clicked outside\n useEffect(() => {\n function onClickOutside(e: MouseEvent) {\n const target = e.target as Node;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n }\n\n document.addEventListener(\"mousedown\", onClickOutside);\n return () => document.removeEventListener(\"mousedown\", onClickOutside);\n }, []);\n\n // Clear the timeout when the component unmounts\n useEffect(() => {\n return () => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n }\n };\n }, []);\n\n return (\n <DropdownContext.Provider value={{ close: () => setOpen(false) }}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n >\n {trigger}\n </div>\n\n {/* Content (Portal) */}\n {open &&\n !disabled &&\n createPortal(\n <div\n ref={contentRef}\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n visibility: position ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n >\n {children}\n </div>,\n document.body\n )}\n </DropdownContext.Provider>\n );\n}\n","import { useState, type ChangeEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype InputProps = {\n type?: \"text\" | \"email\" | \"password\";\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n error?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n className?: string;\n};\n\nexport function Input({\n type = \"text\",\n value,\n defaultValue,\n disabled = false,\n error = false,\n placeholder,\n onChange,\n className,\n}: InputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.value;\n\n if (!isControlled) {\n setInternalValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <input\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n onChange={handleChange}\n className={cn(\n \"bg-transparent outline-none\",\n disabled && \"pointer-events-none\",\n className\n )}\n />\n );\n}\n","import {\n useCallback,\n type JSX,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype PressableProps = {\n as?: keyof JSX.IntrinsicElements;\n disabled?: boolean;\n onPress?: () => void;\n className?: string;\n children?: ReactNode;\n};\n\nexport function Pressable({\n as: Component = \"div\",\n disabled = false,\n onPress,\n className,\n children,\n}: PressableProps) {\n const handleClick = useCallback(() => {\n if (disabled) return;\n onPress?.();\n }, [disabled, onPress]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onPress?.();\n }\n },\n [disabled, onPress]\n );\n\n return (\n <Component\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"select-none\",\n !disabled && \"cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype StopPropagationProps = {\n children: ReactNode;\n};\n\n/**\n * Prevents click and keyboard events from bubbling to parent components\n * (e.g. Pressable, Card, ListRow).\n */\nexport function StopPropagation({ children }: StopPropagationProps) {\n return (\n <div\n className=\"contents\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport type ToastItem = {\n id: string;\n content: ReactNode;\n position: ToastPosition;\n duration: number;\n};\n\ntype Listener = (toasts: ToastItem[]) => void;\n\nlet toasts: ToastItem[] = [];\nconst listeners = new Set<Listener>();\n\nfunction notify() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport const toastStore = {\n subscribe(listener: Listener) {\n listeners.add(listener);\n listener(toasts);\n\n return () => {\n listeners.delete(listener);\n };\n },\n\n add(toast: ToastItem) {\n toasts = [toast, ...toasts];\n notify();\n },\n\n remove(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n },\n};\n","import type { ReactNode } from \"react\";\n\nimport { toastStore, type ToastPosition } from \"./toast-store\";\n\nexport type ShowToastOptions = {\n content: ReactNode;\n duration?: number;\n position?: ToastPosition;\n};\n\nfunction showToast({\n content,\n duration = 4000,\n position = \"bottom-right\",\n}: ShowToastOptions) {\n const id = crypto.randomUUID();\n\n toastStore.add({\n id,\n content,\n duration,\n position,\n });\n\n return {\n id,\n dismiss: () => toastStore.remove(id),\n };\n}\n\nfunction isShowToastOptions(value: unknown): value is ShowToastOptions {\n return typeof value === \"object\" && value !== null && \"content\" in value;\n}\n\nexport function toast(\n content: ReactNode | ShowToastOptions,\n options?: Omit<ShowToastOptions, \"content\">\n) {\n if (isShowToastOptions(content)) {\n return showToast(content);\n }\n\n return showToast({\n content,\n ...options,\n });\n}\n","import { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { toastStore, type ToastItem, type ToastPosition } from \"./toast-store\";\n\n// Position classes\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 items-start\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 items-center\",\n \"top-right\": \"top-0 right-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n};\n\n// Toaster\nexport function Toaster() {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const timers = useRef<Map<string, number>>(new Map());\n\n /* Subscribe once */\n useEffect(() => {\n return toastStore.subscribe(setToasts);\n }, []);\n\n // Timer helpers\n\n const clearTimer = useCallback((id: string) => {\n const timer = timers.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timers.current.delete(id);\n }\n }, []);\n\n const startTimer = useCallback(\n (toast: ToastItem) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(() => {\n toastStore.remove(toast.id);\n }, toast.duration);\n\n timers.current.set(toast.id, timeout);\n },\n [clearTimer]\n );\n\n const pauseAll = () => {\n timers.current.forEach(clearTimeout);\n timers.current.clear();\n };\n\n const restartAll = () => {\n toasts.forEach((toast, index) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(\n () => {\n toastStore.remove(toast.id);\n },\n toast.duration + index * 120\n );\n\n timers.current.set(toast.id, timeout);\n });\n };\n\n /* Start timers when new toasts appear */\n useEffect(() => {\n toasts.forEach((toast) => {\n if (!timers.current.has(toast.id)) {\n startTimer(toast);\n }\n });\n }, [toasts, startTimer]);\n\n /* Group by position */\n const grouped = toasts.reduce(\n (acc, toast) => {\n (acc[toast.position] ??= []).push(toast);\n return acc;\n },\n {} as Record<ToastPosition, ToastItem[]>\n );\n\n return createPortal(\n <>\n {(Object.entries(grouped) as [ToastPosition, ToastItem[]][]).map(\n ([position, items]) => (\n <div\n key={position}\n className={cn(\n \"fixed z-1000 flex flex-col items-end gap-2 p-4\",\n positionClasses[position]\n )}\n onMouseEnter={pauseAll}\n onMouseLeave={restartAll}\n >\n {items.map((toast) => (\n <Fragment key={toast.id}>{toast.content}</Fragment>\n ))}\n </div>\n )\n )}\n </>,\n document.body\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type TooltipPosition =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n className?: string;\n};\n\nfunction getHorizontalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.left;\n if (align === \"end\") return trigger.right - tooltip.width;\n return trigger.left + trigger.width / 2 - tooltip.width / 2;\n}\n\nfunction getVerticalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.top;\n if (align === \"end\") return trigger.bottom - tooltip.height;\n return trigger.top + trigger.height / 2 - tooltip.height / 2;\n}\n\nexport function Tooltip({\n children,\n content,\n position = \"top\",\n delay = 120,\n className,\n}: TooltipProps) {\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const [open, setOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number } | null>(\n null\n );\n\n const openTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delay);\n };\n\n const closeTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setOpen(false);\n };\n\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !tooltipRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const tooltip = tooltipRef.current.getBoundingClientRect();\n const offset = 4;\n\n const [side, rawAlign] = position.split(\"-\") as [Side, Align | undefined];\n const align: Align = rawAlign ?? \"center\";\n\n let top = 0;\n let left = 0;\n\n if (side === \"top\" || side === \"bottom\") {\n top =\n side === \"top\"\n ? trigger.top - tooltip.height - offset\n : trigger.bottom + offset;\n\n left = getHorizontalAlign(trigger, tooltip, align);\n } else {\n left =\n side === \"left\"\n ? trigger.left - tooltip.width - offset\n : trigger.right + offset;\n\n top = getVerticalAlign(trigger, tooltip, align);\n }\n\n setCoords((prev) =>\n prev && prev.top === top && prev.left === left ? prev : { top, left }\n );\n }, [open, position]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n >\n {children}\n </div>\n\n {/* Tooltip */}\n {open &&\n createPortal(\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n style={{\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n visibility: coords ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n className={cn(className)}\n >\n {content}\n </div>,\n document.body\n )}\n </>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype AccordionContextValue = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n type: \"single\" | \"multiple\";\n};\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n null\n);\n\nexport function useAccordion() {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"useAccordion must be used inside Accordion\");\n }\n return ctx;\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { AccordionContext } from \"./accordion-context\";\n\nexport type AccordionProps = {\n children: ReactNode;\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n className?: string;\n};\n\nexport function Accordion({\n children,\n type = \"single\",\n defaultValue,\n className,\n}: AccordionProps) {\n const getInitialOpenItems = (): Set<string> => {\n if (!defaultValue) return new Set();\n if (type === \"single\") {\n return defaultValue ? new Set([defaultValue as string]) : new Set();\n }\n return Array.isArray(defaultValue)\n ? new Set(defaultValue)\n : new Set([defaultValue]);\n };\n\n const [openItems, setOpenItems] = useState<Set<string>>(getInitialOpenItems);\n\n const toggleItem = (value: string) => {\n setOpenItems((prev) => {\n const next = new Set(prev);\n if (type === \"single\") {\n // Close all items and open only the clicked one\n if (next.has(value)) {\n return new Set(); // Close if already open\n }\n return new Set([value]);\n } else {\n // Toggle the item in multiple mode\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n return next;\n }\n });\n };\n\n return (\n <AccordionContext.Provider value={{ openItems, toggleItem, type }}>\n <div className={className}>{children}</div>\n </AccordionContext.Provider>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionItemProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionItem({\n value,\n children,\n className,\n ...props\n}: AccordionItemProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import {\n cloneElement,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\n\nimport { Pressable } from \"@primitives/pressable\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionTriggerProps = {\n value: string;\n children: ReactNode;\n className?: string;\n asChild?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport function AccordionTrigger({\n value,\n children,\n className,\n asChild = false,\n onClick,\n ...props\n}: AccordionTriggerProps) {\n const { toggleItem, openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n const handleClick = (e?: MouseEvent<HTMLButtonElement>) => {\n toggleItem(value);\n if (e && onClick) {\n onClick(e);\n }\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children, {\n onClick: handleClick,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n } as Record<string, unknown>);\n }\n\n return (\n <Pressable\n type=\"button\"\n className={className}\n onPress={() => handleClick(undefined)}\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n {...props}\n >\n {children}\n </Pressable>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionContentProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionContent({\n value,\n children,\n className,\n ...props\n}: AccordionContentProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type IconProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function Icon({\n size = 16,\n className,\n viewBox = \"0 0 24 24\",\n children,\n ...props\n}: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n fill=\"none\"\n aria-hidden\n focusable=\"false\"\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </svg>\n );\n}\n","\"use client\";\n\nimport { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LogoIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path\n d=\"M25.82 25.44C28.07 23.02 29.5 19.74 29.5 15.92C29.5 7.7 22.8 2 15.98 2C9.16 2 2.5 7.7 2.5 15.92C2.5 24.15 9.2 29.84 15.98 29.84C18.23 29.84 20.43 29.22 22.41 28.13L23.61 29.38C24 29.77 24.54 30 25.12 30C26.32 30 27.29 29.03 27.29 27.82C27.29 27.27 27.05 26.76 26.7 26.33L25.81 25.44H25.82ZM22.18 21.73L19.66 19.12C19.31 18.69 18.72 18.46 18.15 18.46C16.95 18.46 15.98 19.47 15.98 20.64C15.98 21.22 16.25 21.73 16.64 22.13L18.77 24.35C17.88 24.66 16.95 24.86 15.98 24.86C11.72 24.86 7.96 21.27 7.96 15.93C7.96 10.58 11.72 7 15.98 7C20.24 7 24.03 10.58 24.03 15.93C24.03 18.23 23.34 20.22 22.18 21.74V21.73Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AirtableIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M16.56 6.99L6.49 11.16C5.93 11.39 5.94 12.18 6.5 12.41L16.61 16.42C17.5 16.77 18.49 16.77 19.37 16.42L29.48 12.41C30.05 12.18 30.05 11.39 29.49 11.16L19.43 6.99C18.51 6.61 17.48 6.61 16.56 6.99\"\n fill=\"#FCB400\"\n />\n <path\n d=\"M18.89 18.6V28.62C18.89 29.09 19.37 29.42 19.81 29.25L31.07 24.87C31.2 24.82 31.31 24.74 31.38 24.63C31.46 24.51 31.5 24.38 31.5 24.25V14.23C31.5 13.76 31.02 13.43 30.58 13.61L19.31 17.98C19.19 18.03 19.08 18.11 19 18.23C18.93 18.34 18.89 18.47 18.89 18.6Z\"\n fill=\"#18BFFF\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L12.57 20.9L5.52 24.28C5.07 24.5 4.5 24.17 4.5 23.67V14.28C4.5 14.1 4.59 13.94 4.72 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.06 13.59 5.3 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"#F82B60\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L4.71 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.05 13.59 5.29 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"black\"\n fillOpacity=\"0.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AsanaIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.46 8.33C9.99 8.33 8.8 9.5 8.8 10.94C8.8 12.38 9.99 13.55 11.46 13.55C12.92 13.55 14.11 12.38 14.11 10.94C14.11 9.5 12.92 8.33 11.46 8.33ZM4.55 8.33C3.08 8.33 1.89 9.5 1.89 10.94C1.89 12.38 3.08 13.55 4.55 13.55C6.02 13.55 7.21 12.38 7.21 10.94C7.21 9.5 6.02 8.33 4.55 8.33ZM10.66 5.06C10.66 6.5 9.47 7.67 8 7.67C6.53 7.67 5.34 6.5 5.34 5.06C5.34 3.61 6.53 2.44 8 2.44C9.47 2.44 10.66 3.61 10.66 5.06Z\"\n fill=\"#F06A6A\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ClickUpIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.03 11.43L10.65 17.81L7.23 13.84L18.05 4.5L28.78 13.85L25.35 17.81L18.03 11.43Z\"\n fill=\"url(#paint0_linear_5796_19610)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.76 25.23L10.91 22.05C13.11 24.93 15.46 26.26 18.06 26.26C20.67 26.26 22.93 24.95 25.03 22.08L29.24 25.19C26.21 29.32 22.43 31.5 18.06 31.5C13.69 31.5 9.89 29.33 6.76 25.23Z\"\n fill=\"url(#paint1_linear_5796_19610)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19610\"\n x1=\"6.83\"\n y1=\"10.64\"\n x2=\"28.36\"\n y2=\"10.64\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF02F0\" />\n <stop offset=\"1\" stopColor=\"#FFC800\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19610\"\n x1=\"6.37\"\n y1=\"26.25\"\n x2=\"28.82\"\n y2=\"26.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#8930FD\" />\n <stop offset=\"1\" stopColor=\"#49CCF9\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GmailIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M3.02 14.09H5.2V8.79L2.09 6.45V13.15C2.09 13.67 2.51 14.09 3.02 14.09Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.68 14.09H14.87C15.38 14.09 15.8 13.67 15.8 13.15V6.45L12.68 8.79\"\n fill=\"#34A853\"\n />\n <path\n d=\"M12.68 4.74V8.79L15.8 6.45V5.21C15.8 4.05 14.48 3.39 13.56 4.08\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M5.2 8.79V4.74L8.94 7.54L12.68 4.74V8.79L8.94 11.59\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M2.09 5.21V6.45L5.2 8.79V4.74L4.33 4.08C3.4 3.39 2.09 4.05 2.09 5.21Z\"\n fill=\"#C5221F\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GoogleCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M25.1 10.89L18.71 10.18L10.89 10.89L10.18 18L10.89 25.1L18 25.99L25.1 25.1L25.82 17.82L25.1 10.89Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.81 21.92C13.28 21.56 12.91 21.04 12.71 20.34L13.94 19.83C14.06 20.26 14.25 20.59 14.53 20.83C14.81 21.06 15.14 21.18 15.54 21.18C15.94 21.18 16.29 21.05 16.58 20.81C16.87 20.56 17.01 20.25 17.01 19.87C17.01 19.48 16.86 19.17 16.55 18.92C16.25 18.68 15.87 18.56 15.41 18.56H14.7V17.34H15.33C15.73 17.34 16.06 17.23 16.33 17.02C16.6 16.8 16.74 16.51 16.74 16.14C16.74 15.81 16.62 15.55 16.37 15.35C16.13 15.15 15.83 15.05 15.46 15.05C15.09 15.05 14.81 15.15 14.59 15.34C14.38 15.54 14.22 15.77 14.13 16.05L12.91 15.55C13.07 15.09 13.36 14.68 13.8 14.33C14.24 13.98 14.79 13.81 15.47 13.81C15.97 13.81 16.41 13.9 16.81 14.1C17.21 14.29 17.52 14.56 17.75 14.9C17.97 15.24 18.09 15.63 18.09 16.05C18.09 16.49 17.98 16.86 17.77 17.16C17.56 17.46 17.3 17.69 17 17.85V17.93C17.4 18.09 17.73 18.35 17.99 18.7C18.25 19.04 18.38 19.46 18.38 19.94C18.38 20.42 18.25 20.86 18.01 21.23C17.76 21.61 17.43 21.91 17 22.13C16.56 22.34 16.08 22.45 15.54 22.45C14.92 22.46 14.34 22.28 13.81 21.92Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M21.37 15.8L20.03 16.78L19.35 15.75L21.78 14H22.71V22.26H21.37V15.8Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M25.1 31.5L31.5 25.1L28.3 23.68L25.1 25.1L23.68 28.3L25.1 31.5Z\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M9.47 28.3L10.89 31.5H25.1V25.11H10.89L9.47 28.3Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.63 4.5C5.45 4.5 4.5 5.45 4.5 6.63V25.1L7.7 26.53L10.89 25.1V10.89H25.11L26.53 7.7L25.11 4.5H6.63Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M4.5 25.11V29.37C4.5 30.55 5.45 31.5 6.63 31.5H10.89V25.11H4.5Z\"\n fill=\"#188038\"\n />\n <path\n d=\"M25.1 10.89V25.11H31.5V10.89L28.3 9.47L25.1 10.89Z\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M31.5 10.89V6.63C31.5 5.45 30.54 4.5 29.37 4.5H25.1V10.89H31.5Z\"\n fill=\"#1967D2\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function JiraIcon(props: IconProps) {\n const gradientId0 = \"jira-gradient-0\";\n const gradientId1 = \"jira-gradient-1\";\n\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M16.42 3H9.68C9.68 4.68 11.04 6.04 12.72 6.04H13.96V7.24C13.96 8.92 15.32 10.28 17 10.28V3.58C17 3.26 16.74 3 16.42 3Z\"\n fill=\"#2684FF\"\n />\n <path\n d=\"M13.08 6.36H6.34C6.34 8.04 7.7 9.4 9.38 9.4H10.62V10.6C10.62 12.28 11.98 13.64 13.66 13.64V6.94C13.66 6.62 13.4 6.36 13.08 6.36Z\"\n fill={`url(#${gradientId0})`}\n />\n <path\n d=\"M9.74 9.72H3C3 11.4 4.36 12.76 6.04 12.76H7.28V13.96C7.28 15.64 8.64 17 10.32 17V10.3C10.32 9.98 10.06 9.72 9.74 9.72Z\"\n fill={`url(#${gradientId1})`}\n />\n <defs>\n <linearGradient\n id={gradientId0}\n x1=\"16.73\"\n y1=\"3.02\"\n x2=\"11.22\"\n y2=\"8.67\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n <linearGradient\n id={gradientId1}\n x1=\"10.37\"\n y1=\"9.75\"\n x2=\"7.06\"\n y2=\"12.97\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M31.5 11.93V9.35C31.5 6.67 29.33 4.5 26.65 4.5H9.35C6.67 4.5 4.5 6.67 4.5 9.35V11.93H31.5Z\"\n fill=\"url(#paint0_linear_5796_19583)\"\n />\n <path\n d=\"M4.5 11.91V26.65C4.5 29.33 6.67 31.5 9.35 31.5H26.65C29.33 31.5 31.5 29.33 31.5 26.65V11.91H4.5Z\"\n fill=\"url(#paint1_linear_5796_19583)\"\n />\n <g filter=\"url(#filter0_d_5796_19583)\">\n <path\n d=\"M18.0186 25.5176C19.0579 25.5176 19.9004 24.6751 19.9004 23.6358C19.9004 22.5964 19.0579 21.7539 18.0186 21.7539C16.9793 21.7539 16.1367 22.5964 16.1367 23.6358C16.1367 24.6751 16.9793 25.5176 18.0186 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter1_d_5796_19583)\">\n <path\n d=\"M11.5987 25.5176C12.638 25.5176 13.4805 24.6751 13.4805 23.6358C13.4805 22.5964 12.638 21.7539 11.5987 21.7539C10.5593 21.7539 9.7168 22.5964 9.7168 23.6358C9.7168 24.6751 10.5593 25.5176 11.5987 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter2_d_5796_19583)\">\n <path\n d=\"M18.0186 19.5C19.0579 19.5 19.9004 18.6575 19.9004 17.6182C19.9004 16.5789 19.0579 15.7363 18.0186 15.7363C16.9793 15.7363 16.1367 16.5789 16.1367 17.6182C16.1367 18.6575 16.9793 19.5 18.0186 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter3_d_5796_19583)\">\n <path\n d=\"M24.4385 19.5C25.4778 19.5 26.3203 18.6575 26.3203 17.6182C26.3203 16.5789 25.4778 15.7363 24.4385 15.7363C23.3992 15.7363 22.5566 16.5789 22.5566 17.6182C22.5566 18.6575 23.3992 19.5 24.4385 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter4_d_5796_19583)\">\n <path\n d=\"M11.5987 19.5C12.638 19.5 13.4805 18.6575 13.4805 17.6182C13.4805 16.5789 12.638 15.7363 11.5987 15.7363C10.5593 15.7363 9.7168 16.5789 9.7168 17.6182C9.7168 18.6575 10.5593 19.5 11.5987 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_5796_19583\"\n x=\"14.4916\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_5796_19583\"\n x=\"8.07168\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_5796_19583\"\n x=\"14.4916\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_5796_19583\"\n x=\"20.9115\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_5796_19583\"\n x=\"8.07168\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_5796_19583\"\n x1=\"4.5\"\n y1=\"8.21\"\n x2=\"31.38\"\n y2=\"10.12\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#0879D1\" />\n <stop offset=\"1\" stopColor=\"#056EC9\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19583\"\n x1=\"18\"\n y1=\"11.91\"\n x2=\"18\"\n y2=\"31.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#44CBFD\" />\n <stop offset=\"1\" stopColor=\"#1195EA\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <mask\n id=\"mask0_5796_22925\"\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"5\"\n width=\"26\"\n height=\"26\"\n >\n <path d=\"M30.38 5.63H5.63V30.38H30.38V5.63Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_5796_22925)\">\n <path\n d=\"M27.74 7.17H14.45C13.85 7.17 13.36 7.66 13.36 8.26V9.49L20.85 11.81L28.83 9.49V8.26C28.83 7.66 28.34 7.17 27.74 7.17Z\"\n fill=\"#0364B8\"\n />\n <path\n d=\"M30.1 19.09C30.22 18.73 30.31 18.37 30.37 18C30.37 17.82 30.28 17.65 30.12 17.55L30.11 17.55L30.1 17.55L21.72 12.77C21.69 12.75 21.65 12.73 21.61 12.71C21.28 12.55 20.9 12.55 20.58 12.71C20.54 12.73 20.5 12.75 20.47 12.77L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18C11.88 18.37 11.97 18.73 12.08 19.09L20.97 25.59L30.1 19.09Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M24.19 9.49H18.77L17.21 11.81L18.77 14.13L24.19 18.77H28.83V14.13L24.19 9.49Z\"\n fill=\"#28A8EA\"\n />\n <path d=\"M13.36 9.49H18.77V14.13H13.36V9.49Z\" fill=\"#0078D4\" />\n <path d=\"M24.19 9.49H28.83V14.13H24.19V9.49Z\" fill=\"#50D9FF\" />\n <path\n d=\"M24.19 18.77L18.77 14.13H13.36V18.77L18.77 23.41L27.15 24.78L24.19 18.77Z\"\n fill=\"#0364B8\"\n />\n <path d=\"M18.77 14.13H24.19V18.77H18.77V14.13Z\" fill=\"#0078D4\" />\n <path d=\"M13.36 18.77H18.77V23.42H13.36V18.77Z\" fill=\"#064A8C\" />\n <path d=\"M24.19 18.77H28.83V23.42H24.19V18.77Z\" fill=\"#0078D4\" />\n <path\n opacity=\"0.5\"\n d=\"M21.24 25.13L12.12 18.48L12.5 17.81C12.5 17.81 20.81 22.54 20.94 22.61C21.04 22.65 21.16 22.65 21.26 22.6L29.72 17.78L30.1 18.46L21.24 25.13Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M30.12 18.45L30.11 18.45L30.11 18.45L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67V18C30.38 18.18 30.28 18.35 30.12 18.45Z\"\n fill=\"#1490DF\"\n />\n <path\n opacity=\"0.05\"\n d=\"M30.38 27.67V27.1L22.66 22.7L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M30.34 27.97L21.87 23.14L21.72 23.23C21.38 23.45 20.96 23.48 20.59 23.3L23.51 27.22L29.9 28.61V28.61C30.11 28.45 30.27 28.22 30.34 27.97Z\"\n fill=\"black\"\n />\n <path\n d=\"M12.08 18.46V18.45H12.08L12.05 18.43C11.9 18.34 11.81 18.18 11.81 18V27.67C11.81 28.31 12.33 28.83 12.97 28.83C12.97 28.83 12.97 28.83 12.97 28.83H29.21C29.31 28.83 29.41 28.81 29.5 28.79C29.55 28.78 29.6 28.77 29.64 28.75C29.66 28.74 29.67 28.74 29.69 28.73C29.75 28.7 29.81 28.67 29.86 28.63C29.88 28.62 29.89 28.62 29.9 28.6L12.08 18.46Z\"\n fill=\"#28A8EA\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.55 24.7V12.07C19.55 11.5 19.08 11.04 18.52 11.04H13.38V16.81L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18V25.73H18.52C19.08 25.73 19.55 25.27 19.55 24.7Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 25.48V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V26.51H17.74C18.31 26.51 18.77 26.04 18.77 25.48Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 23.93V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H17.74C18.31 24.96 18.77 24.5 18.77 23.93Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18 23.93V12.84C18 12.27 17.54 11.81 16.97 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H16.97C17.54 24.96 18 24.5 18 23.93Z\"\n fill=\"black\"\n />\n <path\n d=\"M6.66 11.81H16.97C17.54 11.81 18 12.27 18 12.84V23.16C18 23.72 17.54 24.19 16.97 24.19H6.66C6.09 24.19 5.63 23.72 5.63 23.16V12.84C5.63 12.27 6.09 11.81 6.66 11.81Z\"\n fill=\"#0078D4\"\n />\n <path\n d=\"M8.62 16.04C8.89 15.46 9.33 14.97 9.89 14.64C10.5 14.29 11.2 14.11 11.91 14.13C12.56 14.12 13.21 14.28 13.77 14.61C14.31 14.93 14.73 15.4 15.01 15.95C15.31 16.57 15.45 17.24 15.44 17.92C15.46 18.64 15.3 19.34 15 19.99C14.72 20.56 14.27 21.05 13.72 21.37C13.13 21.71 12.46 21.88 11.79 21.87C11.12 21.88 10.46 21.72 9.88 21.38C9.34 21.06 8.9 20.6 8.62 20.04C8.33 19.43 8.17 18.77 8.19 18.09C8.17 17.38 8.32 16.68 8.62 16.04ZM9.97 19.33C10.12 19.7 10.36 20.02 10.68 20.26C11.01 20.49 11.4 20.6 11.8 20.59C12.23 20.61 12.64 20.49 12.99 20.25C13.31 20.01 13.55 19.69 13.69 19.32C13.84 18.91 13.91 18.47 13.91 18.03C13.91 17.59 13.84 17.15 13.7 16.73C13.57 16.35 13.34 16.02 13.03 15.77C12.69 15.52 12.27 15.39 11.85 15.4C11.44 15.39 11.04 15.51 10.71 15.74C10.38 15.98 10.13 16.3 9.98 16.67C9.64 17.53 9.64 18.48 9.97 19.33Z\"\n fill=\"white\"\n />\n </g>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SlackIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M5.26 10.79C5.29 11.53 4.7 12.17 3.96 12.19C3.21 12.22 2.58 11.64 2.55 10.89C2.52 10.14 3.11 9.51 3.86 9.48L5.21 9.43L5.26 10.79Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M5.95 10.76C5.92 10.01 6.51 9.38 7.25 9.35C8 9.33 8.63 9.91 8.66 10.66L8.79 14.06C8.81 14.8 8.23 15.44 7.48 15.46C6.73 15.49 6.1 14.9 6.07 14.16L5.95 10.76Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M7.1 5.26C6.35 5.29 5.72 4.7 5.69 3.96C5.67 3.21 6.25 2.58 7 2.55C7.75 2.52 8.38 3.11 8.41 3.86L8.46 5.21L7.1 5.26Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M7.13 5.95C7.87 5.92 8.51 6.51 8.53 7.25C8.56 8 7.97 8.63 7.23 8.66L3.83 8.79C3.08 8.82 2.45 8.23 2.42 7.48C2.4 6.73 2.98 6.1 3.73 6.07L7.13 5.95Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M12.62 7.1C12.6 6.35 13.18 5.72 13.93 5.69C14.68 5.67 15.31 6.25 15.34 7C15.37 7.75 14.78 8.38 14.03 8.41L12.68 8.46L12.62 7.1Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M11.94 7.13C11.97 7.87 11.38 8.51 10.63 8.53C9.89 8.56 9.25 7.97 9.23 7.23L9.1 3.83C9.07 3.08 9.66 2.45 10.41 2.42C11.15 2.4 11.78 2.98 11.81 3.73L11.94 7.13Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M10.79 12.63C11.53 12.6 12.17 13.18 12.19 13.93C12.22 14.68 11.63 15.31 10.89 15.34C10.14 15.37 9.51 14.78 9.48 14.03L9.43 12.68L10.79 12.63Z\"\n fill=\"#ECB22E\"\n />\n <path\n d=\"M10.76 11.94C10.01 11.97 9.38 11.38 9.35 10.63C9.33 9.89 9.91 9.26 10.66 9.23L14.06 9.1C14.8 9.07 15.44 9.66 15.46 10.41C15.49 11.15 14.9 11.79 14.16 11.81L10.76 11.94Z\"\n fill=\"#ECB22E\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function TeamsIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <g clipPath=\"url(#clip0_5796_19548)\">\n <path\n d=\"M23.33 14.85H30.31C30.97 14.85 31.5 15.39 31.5 16.05V22.42C31.5 24.84 29.54 26.81 27.12 26.81H27.09C24.67 26.81 22.71 24.84 22.71 22.42V15.48C22.71 15.13 22.99 14.85 23.33 14.85Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M28.05 13.59C29.61 13.59 30.87 12.33 30.87 10.76C30.87 9.2 29.61 7.93 28.05 7.93C26.49 7.93 25.22 9.2 25.22 10.76C25.22 12.33 26.49 13.59 28.05 13.59Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M19.26 13.6C21.51 13.6 23.34 11.76 23.34 9.51C23.34 7.25 21.51 5.42 19.26 5.42C17 5.42 15.17 7.25 15.17 9.51C15.17 11.76 17 13.6 19.26 13.6Z\"\n fill=\"#7B83EB\"\n />\n <path\n d=\"M24.7 14.85H13.19C12.54 14.87 12.02 15.41 12.04 16.06V23.33C11.94 27.24 15.04 30.49 18.94 30.59C22.85 30.49 25.94 27.24 25.85 23.33V16.06C25.86 15.41 25.35 14.87 24.7 14.85Z\"\n fill=\"#7B83EB\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5704 14.8545V25.0293C19.5673 25.4958 19.2851 25.915 18.8546 26.0927C18.7175 26.1508 18.5702 26.1807 18.4213 26.1808H12.588C12.5064 25.9731 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H19.5704Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V25.6585C18.9424 25.8077 18.9126 25.9553 18.8546 26.0927C18.6773 26.5241 18.259 26.8069 17.7934 26.81H12.8832C12.7764 26.6023 12.676 26.3947 12.588 26.1808C12.5001 25.9668 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V24.4C18.9377 25.034 18.426 25.5467 17.7934 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1845 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3145 14.8545V24.4C18.3098 25.034 17.7981 25.5467 17.1655 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.3145Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5694 11.6017V13.5838C19.4627 13.5901 19.3622 13.5964 19.2555 13.5964C19.1487 13.5964 19.0483 13.5901 18.9415 13.5838C18.7296 13.5697 18.5194 13.536 18.3136 13.4831C17.0421 13.1814 15.9916 12.2877 15.488 11.0794C15.4014 10.8765 15.3341 10.6658 15.2871 10.4502H18.4204C19.054 10.4526 19.567 10.9667 19.5694 11.6017Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9418 12.2296V13.5825C18.7298 13.5684 18.5196 13.5347 18.3139 13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.7927C18.4263 11.0805 18.9394 11.5947 18.9418 12.2296Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3139 12.2296V13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.1648C17.7984 11.0805 18.3115 11.5947 18.3139 12.2296Z\"\n fill=\"black\"\n />\n <path\n d=\"M5.65 11.08H17.16C17.8 11.08 18.31 11.59 18.31 12.23V23.77C18.31 24.4 17.8 24.92 17.16 24.92H5.65C5.02 24.92 4.5 24.4 4.5 23.77V12.23C4.5 11.59 5.02 11.08 5.65 11.08Z\"\n fill=\"url(#paint0_linear_5796_19548)\"\n />\n <path\n d=\"M14.44 15.47H12.14V21.75H10.67V15.47H8.38V14.25H14.44V15.47Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19548\"\n x1=\"6.9\"\n y1=\"10.18\"\n x2=\"15.94\"\n y2=\"25.81\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5A62C3\" />\n <stop offset=\"0.5\" stopColor=\"#4D55BD\" />\n <stop offset=\"1\" stopColor=\"#3940AB\" />\n </linearGradient>\n <clipPath id=\"clip0_5796_19548\">\n <rect\n width=\"27\"\n height=\"25.1695\"\n fill=\"white\"\n transform=\"translate(4.5 5.41504)\"\n />\n </clipPath>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckboxIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M4 8L6.5 10.5L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleEmptyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 28 28\" {...props}>\n <circle\n cx=\"14\"\n cy=\"14\"\n r=\"10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M8.82 13.55L14.42 7.94L13.54 7.06L8.82 11.79L6.44 9.41L5.56 10.29L8.82 13.55ZM10 17.92C8.91 17.92 7.88 17.71 6.91 17.29C5.95 16.88 5.11 16.31 4.4 15.6C3.69 14.89 3.12 14.05 2.71 13.09C2.29 12.13 2.08 11.1 2.08 10C2.08 8.91 2.29 7.88 2.71 6.91C3.12 5.95 3.69 5.11 4.4 4.4C5.11 3.69 5.95 3.12 6.91 2.71C7.88 2.29 8.9 2.08 10 2.08C11.09 2.08 12.12 2.29 13.09 2.71C14.05 3.12 14.89 3.69 15.6 4.4C16.31 5.11 16.88 5.95 17.29 6.91C17.71 7.87 17.92 8.9 17.92 10C17.92 11.09 17.71 12.12 17.29 13.09C16.88 14.05 16.31 14.89 15.6 15.6C14.89 16.31 14.05 16.88 13.09 17.29C12.13 17.71 11.1 17.92 10 17.92ZM10 16.67C11.86 16.67 13.44 16.02 14.73 14.73C16.02 13.44 16.67 11.86 16.67 10C16.67 8.14 16.02 6.56 14.73 5.27C13.44 3.98 11.86 3.33 10 3.33C8.14 3.33 6.56 3.98 5.27 5.27C3.98 6.56 3.33 8.14 3.33 10C3.33 11.86 3.98 13.44 5.27 14.73C6.56 16.02 8.14 16.67 10 16.67Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function FireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function InsightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M8 4.52C8.72 6.07 10.03 7.31 11.64 8.01C10.03 8.71 8.72 9.95 8 11.5C7.27 9.95 5.97 8.71 4.36 8.01C5.97 7.31 7.27 6.07 8 4.52Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NotFireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n <line\n x1=\"17.8311\"\n y1=\"3.53033\"\n x2=\"2.83111\"\n y2=\"18.5303\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ReadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M10.77 1.78L17.32 5.69C17.5 5.81 17.65 5.97 17.76 6.16C17.86 6.36 17.92 6.57 17.92 6.79V15.58C17.92 16 17.77 16.35 17.48 16.65C17.19 16.94 16.83 17.08 16.41 17.08H3.59C3.17 17.08 2.81 16.94 2.52 16.65C2.23 16.35 2.08 16 2.08 15.58V6.79C2.08 6.57 2.14 6.36 2.24 6.16C2.35 5.97 2.5 5.81 2.68 5.69L9.23 1.78C9.46 1.65 9.72 1.58 10 1.58C10.28 1.58 10.54 1.65 10.77 1.78ZM10.13 10.46L16.5 6.67L10.13 2.87C10.09 2.84 10.04 2.83 10 2.83C9.96 2.83 9.92 2.84 9.87 2.87L3.5 6.67L9.87 10.46C9.92 10.49 9.96 10.5 10 10.5C10.04 10.5 10.09 10.49 10.13 10.46ZM9.23 11.54L3.33 8.02V15.58C3.33 15.65 3.36 15.71 3.41 15.76C3.45 15.81 3.52 15.83 3.59 15.83H16.41C16.49 15.83 16.55 15.81 16.6 15.76C16.64 15.71 16.67 15.65 16.67 15.58V8.02L10.77 11.54C10.54 11.67 10.28 11.74 10 11.74C9.72 11.74 9.46 11.67 9.23 11.54ZM10.77 15.83H16.67H3.33H10.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function UnreadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M3.59 16.25C3.17 16.25 2.81 16.1 2.52 15.81C2.23 15.52 2.08 15.16 2.08 14.74V5.26C2.08 4.84 2.23 4.48 2.52 4.19C2.81 3.9 3.17 3.75 3.59 3.75H11.23C11.4 3.75 11.55 3.81 11.68 3.93C11.8 4.06 11.86 4.21 11.85 4.38C11.85 4.56 11.78 4.7 11.66 4.82C11.54 4.94 11.4 5 11.23 5H3.33V14.74C3.33 14.82 3.36 14.88 3.41 14.93C3.45 14.98 3.52 15 3.59 15H16.41C16.49 15 16.55 14.98 16.6 14.93C16.64 14.88 16.67 14.82 16.67 14.74V9.17C16.67 8.99 16.73 8.84 16.85 8.72C16.97 8.6 17.12 8.54 17.29 8.54C17.47 8.54 17.62 8.6 17.74 8.72C17.86 8.84 17.92 8.99 17.92 9.17V14.74C17.92 15.16 17.77 15.52 17.48 15.81C17.19 16.1 16.83 16.25 16.41 16.25H3.59ZM10 9.17L12.71 7.44C12.86 7.35 13.01 7.32 13.14 7.37C13.27 7.41 13.38 7.5 13.45 7.62C13.53 7.74 13.56 7.87 13.54 8C13.52 8.14 13.43 8.26 13.28 8.36L10.4 10.21C10.27 10.29 10.14 10.33 10 10.33C9.86 10.33 9.73 10.3 9.6 10.22L3.33 6.29V5L10 9.17ZM15.83 6.78C15.2 6.78 14.66 6.56 14.21 6.11C13.77 5.66 13.54 5.12 13.54 4.49C13.54 3.85 13.77 3.31 14.21 2.86C14.66 2.42 15.2 2.2 15.83 2.2C16.47 2.2 17.01 2.42 17.46 2.86C17.9 3.31 18.13 3.85 18.13 4.49C18.13 5.12 17.9 5.66 17.46 6.11C17.01 6.56 16.47 6.78 15.83 6.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AccountIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.02 17.29C6.87 16.66 7.8 16.16 8.8 15.8C9.8 15.43 10.87 15.25 12 15.25C13.13 15.25 14.2 15.43 15.2 15.8C16.2 16.16 17.13 16.66 17.98 17.29C18.6 16.61 19.09 15.82 19.45 14.92C19.82 14.02 20 13.05 20 12C20 9.78 19.22 7.9 17.66 6.34C16.1 4.78 14.22 4 12 4C9.78 4 7.9 4.78 6.34 6.34C4.78 7.9 4 9.78 4 12C4 13.05 4.18 14.02 4.55 14.92C4.91 15.82 5.4 16.61 6.02 17.29ZM12 12.75C11.09 12.75 10.32 12.44 9.69 11.81C9.06 11.18 8.75 10.41 8.75 9.5C8.75 8.59 9.06 7.82 9.69 7.19C10.32 6.56 11.09 6.25 12 6.25C12.91 6.25 13.68 6.56 14.31 7.19C14.94 7.82 15.25 8.59 15.25 9.5C15.25 10.41 14.94 11.18 14.31 11.81C13.68 12.44 12.91 12.75 12 12.75ZM12 21.5C10.68 21.5 9.44 21.25 8.29 20.76C7.13 20.26 6.13 19.58 5.27 18.73C4.42 17.87 3.74 16.87 3.24 15.71C2.75 14.56 2.5 13.32 2.5 12C2.5 10.68 2.75 9.44 3.24 8.29C3.74 7.13 4.42 6.13 5.27 5.27C6.13 4.42 7.13 3.74 8.29 3.24C9.44 2.75 10.68 2.5 12 2.5C13.32 2.5 14.56 2.75 15.71 3.24C16.87 3.74 17.87 4.42 18.73 5.27C19.58 6.13 20.26 7.13 20.76 8.29C21.25 9.44 21.5 10.68 21.5 12C21.5 13.32 21.25 14.56 20.76 15.71C20.26 16.87 19.58 17.87 18.73 18.73C17.87 19.58 16.87 20.26 15.71 20.76C14.56 21.25 13.32 21.5 12 21.5ZM12 20C12.9 20 13.77 19.85 14.61 19.56C15.45 19.27 16.19 18.87 16.84 18.35C16.19 17.84 15.46 17.45 14.64 17.17C13.82 16.89 12.94 16.75 12 16.75C11.06 16.75 10.18 16.89 9.36 17.17C8.53 17.44 7.8 17.84 7.16 18.35C7.81 18.87 8.55 19.27 9.39 19.56C10.23 19.85 11.1 20 12 20ZM12 11.25C12.5 11.25 12.91 11.08 13.25 10.75C13.58 10.41 13.75 10 13.75 9.5C13.75 9 13.58 8.59 13.25 8.25C12.91 7.92 12.5 7.75 12 7.75C11.5 7.75 11.09 7.92 10.75 8.25C10.42 8.59 10.25 9 10.25 9.5C10.25 10 10.42 10.41 10.75 10.75C11.09 11.08 11.5 11.25 12 11.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AddIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.5 12.5H6V11.5H11.5V6H12.5V11.5H18V12.5H12.5V18H11.5V12.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Icon, type IconProps } from \"@icons/index\";\n\ntype ArrowDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\nconst DIRECTION_CLASS: Record<ArrowDirection, string> = {\n down: \"\",\n left: \"rotate-90\",\n up: \"-rotate-180\",\n right: \"-rotate-90\",\n};\n\nexport type ArrowIconProps = IconProps & {\n direction?: ArrowDirection;\n};\n\nexport default function ArrowIcon({\n direction = \"down\",\n className,\n ...props\n}: ArrowIconProps) {\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n className={cn(DIRECTION_CLASS[direction], className)}\n {...props}\n >\n <path\n d=\"m5 8.5 7 7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M5.31 21.5C4.8 21.5 4.38 21.33 4.03 20.98C3.68 20.63 3.5 20.2 3.5 19.69V6.31C3.5 5.8 3.68 5.38 4.03 5.03C4.38 4.68 4.8 4.5 5.31 4.5H6.69V2.38H8.23V4.5H15.81V2.38H17.31V4.5H18.69C19.2 4.5 19.63 4.68 19.98 5.03C20.33 5.38 20.5 5.8 20.5 6.31V19.69C20.5 20.2 20.33 20.63 19.98 20.98C19.63 21.33 19.2 21.5 18.69 21.5H5.31ZM5.31 20H18.69C18.77 20 18.84 19.97 18.9 19.9C18.97 19.84 19 19.77 19 19.69V10.31H5V19.69C5 19.77 5.03 19.84 5.1 19.9C5.16 19.97 5.23 20 5.31 20ZM5 8.81H19V6.31C19 6.23 18.97 6.16 18.9 6.1C18.84 6.03 18.77 6 18.69 6H5.31C5.23 6 5.16 6.03 5.1 6.1C5.03 6.16 5 6.23 5 6.31V8.81Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CloseIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.4 18.65L5.35 17.6L10.95 12L5.35 6.4L6.4 5.35L12 10.95L17.6 5.35L18.65 6.4L13.05 12L18.65 17.6L17.6 18.65L12 13.05L6.4 18.65Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CompactDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 16.625V15.125H20.5V16.625H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 8.875V7.375H20.5V8.875H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CopyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M9.06 17.5C8.55 17.5 8.13 17.33 7.78 16.98C7.43 16.63 7.25 16.2 7.25 15.69V4.31C7.25 3.8 7.43 3.38 7.78 3.03C8.13 2.68 8.55 2.5 9.06 2.5H17.44C17.95 2.5 18.38 2.68 18.73 3.03C19.08 3.38 19.25 3.8 19.25 4.31V15.69C19.25 16.2 19.08 16.63 18.73 16.98C18.38 17.33 17.95 17.5 17.44 17.5H9.06ZM9.06 16H17.44C17.52 16 17.59 15.97 17.65 15.9C17.72 15.84 17.75 15.77 17.75 15.69V4.31C17.75 4.23 17.72 4.16 17.65 4.1C17.59 4.03 17.52 4 17.44 4H9.06C8.98 4 8.91 4.03 8.85 4.1C8.78 4.16 8.75 4.23 8.75 4.31V15.69C8.75 15.77 8.78 15.84 8.85 15.9C8.91 15.97 8.98 16 9.06 16ZM5.56 21C5.05 21 4.63 20.83 4.28 20.48C3.93 20.13 3.75 19.7 3.75 19.19V6.31H5.25V19.19C5.25 19.27 5.28 19.34 5.35 19.4C5.41 19.47 5.48 19.5 5.56 19.5H15.44V21H5.56Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function DarkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M12.1 21.5C10.77 21.5 9.52 21.25 8.36 20.74C7.2 20.24 6.18 19.55 5.31 18.69C4.45 17.82 3.76 16.8 3.26 15.64C2.75 14.48 2.5 13.23 2.5 11.9C2.5 9.71 3.17 7.76 4.5 6.05C5.84 4.34 7.56 3.22 9.68 2.68C9.5 4.29 9.66 5.84 10.18 7.35C10.69 8.86 11.52 10.19 12.67 11.33C13.81 12.48 15.14 13.31 16.65 13.82C18.16 14.34 19.71 14.5 21.32 14.32C20.79 16.44 19.67 18.16 17.96 19.5C16.24 20.83 14.29 21.5 12.1 21.5ZM12.1 20C13.57 20 14.93 19.63 16.18 18.9C17.43 18.17 18.41 17.16 19.13 15.87C17.69 15.74 16.33 15.38 15.05 14.78C13.77 14.19 12.62 13.39 11.6 12.37C10.58 11.35 9.78 10.2 9.18 8.92C8.58 7.64 8.22 6.28 8.1 4.85C6.82 5.57 5.81 6.55 5.09 7.81C4.36 9.07 4 10.43 4 11.9C4 14.15 4.79 16.06 6.36 17.64C7.94 19.21 9.85 20 12.1 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ExternalLinkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M4.42 17.08C4 17.08 3.64 16.94 3.35 16.65C3.06 16.35 2.91 16 2.91 15.58V4.42C2.91 4 3.06 3.65 3.35 3.35C3.64 3.06 4 2.92 4.42 2.92H9.68V4.17H4.42C4.36 4.17 4.3 4.19 4.24 4.25C4.19 4.3 4.16 4.36 4.16 4.42V15.58C4.16 15.64 4.19 15.7 4.24 15.75C4.3 15.81 4.36 15.83 4.42 15.83H15.57C15.64 15.83 15.7 15.81 15.75 15.75C15.8 15.7 15.83 15.64 15.83 15.58V10.32H17.08V15.58C17.08 16 16.93 16.35 16.64 16.65C16.35 16.94 16 17.08 15.57 17.08H4.42ZM8.1 12.78L7.22 11.9L14.95 4.17H11.66V2.92H17.08V8.33H15.83V5.04L8.1 12.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.25 5.21V1.52H12.75V5.21H11.25ZM17.32 7.73L16.29 6.7L18.87 4.04L19.94 5.12L17.32 7.73ZM18.79 12.75V11.25H22.48V12.75H18.79ZM11.25 22.48V18.8H12.75V22.48H11.25ZM6.7 7.69L4.04 5.13L5.13 4.07L7.74 6.68L6.7 7.69ZM18.86 19.96L16.29 17.3L17.31 16.29L19.93 18.84L18.86 19.96ZM1.52 12.75V11.25H5.21V12.75H1.52ZM5.12 19.96L4.07 18.87L6.65 16.29L7.19 16.81L7.75 17.33L5.12 19.96ZM12 17.5C10.48 17.5 9.18 16.97 8.11 15.9C7.04 14.83 6.5 13.53 6.5 12C6.5 10.48 7.03 9.18 8.1 8.11C9.17 7.04 10.47 6.5 12 6.5C13.53 6.5 14.82 7.03 15.89 8.1C16.97 9.17 17.5 10.47 17.5 12C17.5 13.53 16.97 14.82 15.9 15.89C14.83 16.97 13.53 17.5 12 17.5ZM12 16C13.1 16 14.04 15.61 14.83 14.83C15.61 14.04 16 13.1 16 12C16 10.9 15.61 9.96 14.83 9.18C14.04 8.39 13.1 8 12 8C10.9 8 9.96 8.39 9.18 9.18C8.39 9.96 8 10.9 8 12C8 13.1 8.39 14.04 9.18 14.83C9.96 15.61 10.9 16 12 16Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MinusIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MoreIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M10.5 6.23C10.5 5.82 10.65 5.47 10.94 5.17C11.23 4.88 11.59 4.73 12 4.73C12.41 4.73 12.77 4.88 13.06 5.17C13.35 5.47 13.5 5.82 13.5 6.23C13.5 6.64 13.35 7 13.06 7.29C12.77 7.58 12.41 7.73 12 7.73C11.59 7.73 11.23 7.58 10.94 7.29C10.65 7 10.5 6.64 10.5 6.23ZM10.5 12C10.5 11.59 10.65 11.23 10.94 10.94C11.23 10.65 11.59 10.5 12 10.5C12.41 10.5 12.77 10.65 13.06 10.94C13.35 11.23 13.5 11.59 13.5 12C13.5 12.41 13.35 12.77 13.06 13.06C12.77 13.35 12.41 13.5 12 13.5C11.59 13.5 11.23 13.35 10.94 13.06C10.65 12.77 10.5 12.41 10.5 12ZM10.5 17.77C10.5 17.36 10.65 17 10.94 16.71C11.23 16.42 11.59 16.27 12 16.27C12.41 16.27 12.77 16.42 13.06 16.71C13.35 17 13.5 17.36 13.5 17.77C13.5 18.18 13.35 18.54 13.06 18.83C12.77 19.12 12.41 19.27 12 19.27C11.59 19.27 11.23 19.12 10.94 18.83C10.65 18.54 10.5 18.18 10.5 17.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NormalDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SearchIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SummaryIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 17.6347V16.135H9.5V17.6347H3.5ZM3.5 12.7502V11.2502H13.5V12.7502H3.5ZM3.5 7.86547V6.36572H20.5V7.86547H3.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M17.12 12.22C17.87 13.84 19.23 15.13 20.91 15.85C19.23 16.57 17.87 17.86 17.13 19.48C16.38 17.86 15.02 16.57 13.34 15.85C15.02 15.13 16.38 13.84 17.12 12.22Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SystemIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <g>\n <path\n d=\"M10.07 13.93C9.49 13.34 8.96 12.72 8.48 12.07C8.01 11.42 7.59 10.72 7.21 9.99C7.05 10.31 6.94 10.63 6.87 10.97C6.81 11.31 6.77 11.65 6.77 12C6.77 13.45 7.28 14.69 8.3 15.7C9.31 16.72 10.55 17.23 12 17.23C12.34 17.23 12.68 17.19 13.03 17.11C13.37 17.04 13.7 16.93 14.01 16.78C13.28 16.41 12.58 15.99 11.93 15.51C11.28 15.04 10.66 14.51 10.07 13.93ZM11.14 12.88C11.96 13.7 12.87 14.41 13.88 15.01C14.88 15.61 15.95 16.08 17.1 16.43C16.46 17.16 15.7 17.73 14.82 18.14C13.94 18.55 13 18.75 12.02 18.75C10.14 18.75 8.55 18.1 7.24 16.79C5.93 15.48 5.27 13.88 5.27 12C5.27 11.02 5.48 10.09 5.89 9.2C6.29 8.32 6.86 7.56 7.6 6.93C7.95 8.07 8.42 9.14 9.02 10.15C9.62 11.15 10.32 12.06 11.14 12.88ZM18.3 14.49C18.05 14.43 17.81 14.36 17.56 14.28C17.32 14.2 17.08 14.11 16.84 14.02C16.98 13.7 17.08 13.37 17.15 13.03C17.22 12.7 17.25 12.35 17.25 12C17.25 10.55 16.74 9.31 15.71 8.29C14.69 7.26 13.45 6.75 12 6.75C11.65 6.75 11.3 6.78 10.96 6.85C10.63 6.91 10.3 7.01 9.98 7.15C9.89 6.91 9.8 6.68 9.73 6.44C9.66 6.21 9.6 5.97 9.53 5.72C9.93 5.56 10.33 5.45 10.75 5.37C11.17 5.29 11.59 5.25 12.02 5.25C13.9 5.25 15.5 5.91 16.81 7.21C18.12 8.52 18.77 10.12 18.77 12C18.77 12.43 18.74 12.86 18.66 13.28C18.58 13.69 18.46 14.1 18.3 14.49ZM11.25 3.13V0.44H12.75V3.13H11.25ZM11.25 23.56V20.87H12.75V23.56H11.25ZM18.8 6.26L17.74 5.19L19.62 3.33L20.69 4.38L18.8 6.26ZM4.38 20.68L3.31 19.62L5.19 17.74L6.26 18.81L4.38 20.68ZM20.86 12.75V11.25H23.56V12.75H20.86ZM0.44 12.75V11.25H3.13V12.75H0.44ZM19.62 20.69L17.74 18.81L18.8 17.74L20.67 19.62L19.62 20.69ZM5.19 6.26L3.32 4.38L4.38 3.31L6.26 5.19L5.19 6.26Z\"\n fill=\"currentColor\"\n />\n </g>\n </Icon>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactElement<IconProps>;\n label?: ReactNode;\n action?: ReactElement<ButtonProps>;\n className?: string;\n};\n\nexport function Badge({\n icon,\n label,\n action,\n className,\n ...props\n}: BadgeProps) {\n return (\n <div className={cn(\"w-fit\", className)} {...props}>\n {icon}\n {label}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardOwnProps = {\n children: ReactNode;\n className?: string;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | \"as\">;\n\nexport function Card<T extends ElementType = \"div\">({\n as,\n children,\n className,\n ...props\n}: CardProps<T>) {\n const Component = as || \"div\";\n\n return (\n <Component className={cn(className)} {...props}>\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardLayoutProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardLayout({ children, className }: CardLayoutProps) {\n return (\n <div\n className={cn(\n `grid grid-cols-[auto_1fr] grid-rows-[auto_auto_1fr_auto]`,\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardSidebarProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardSidebar({ children, className }: CardSidebarProps) {\n return <div className={cn(\"row-span-4\", className)}>{children}</div>;\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardHeaderProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardHeader({ children, className }: CardHeaderProps) {\n return (\n <div className={cn(\"col-start-2 row-start-1\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardTitleProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardTitle({ children, className }: CardTitleProps) {\n return (\n <h3 className={cn(\"col-start-2 row-start-2\", className)}>{children}</h3>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardContentProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardContent({ children, className }: CardContentProps) {\n return (\n <div className={cn(\"col-start-2 row-start-3\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardFooter({ children, className }: CardFooterProps) {\n return (\n <div className={cn(\"col-start-2 row-start-4\", className)}>{children}</div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { Dropdown, type DropdownProps } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\n\nexport type DropdownMenuItemProps = ButtonProps & {\n closeOnClick?: boolean;\n};\n\nexport type DropdownMenuProps = DropdownProps & {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n};\n\nfunction DropdownMenuContent({\n children,\n className,\n}: {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n}) {\n const { close } = useDropdown();\n\n return (\n <div\n role=\"menu\"\n tabIndex={-1}\n className={cn(\"flex flex-col outline-none\", className)}\n >\n {Children.map(children, (child) =>\n cloneElement(child, {\n role: \"menuitem\",\n onClick: (e) => {\n child.props.onClick?.(e);\n if (child.props.closeOnClick !== false) {\n close();\n }\n },\n })\n )}\n </div>\n );\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n return <Button {...props} />;\n}\n\nexport function DropdownMenu({\n trigger,\n children,\n className,\n ...props\n}: DropdownMenuProps) {\n return (\n <Dropdown trigger={trigger} {...props}>\n <DropdownMenuContent className={className}>\n {children}\n </DropdownMenuContent>\n </Dropdown>\n );\n}\n","export const AVATAR_COLOR = {\n amber: { bg: \"bg-amber-200\", text: \"text-amber-700\" },\n blue: { bg: \"bg-blue-200\", text: \"text-blue-700\" },\n cyan: { bg: \"bg-cyan-200\", text: \"text-cyan-700\" },\n emerald: { bg: \"bg-emerald-200\", text: \"text-emerald-700\" },\n fuchsia: { bg: \"bg-fuchsia-200\", text: \"text-fuchsia-700\" },\n green: { bg: \"bg-green-200\", text: \"text-green-700\" },\n indigo: { bg: \"bg-indigo-200\", text: \"text-indigo-700\" },\n lime: { bg: \"bg-lime-200\", text: \"text-lime-700\" },\n orange: { bg: \"bg-orange-200\", text: \"text-orange-700\" },\n pink: { bg: \"bg-pink-200\", text: \"text-pink-700\" },\n purple: { bg: \"bg-purple-200\", text: \"text-purple-700\" },\n rose: { bg: \"bg-rose-200\", text: \"text-rose-700\" },\n sky: { bg: \"bg-sky-200\", text: \"text-sky-700\" },\n slate: { bg: \"bg-slate-200\", text: \"text-slate-700\" },\n stone: { bg: \"bg-stone-200\", text: \"text-stone-700\" },\n teal: { bg: \"bg-teal-200\", text: \"text-teal-700\" },\n violet: { bg: \"bg-violet-200\", text: \"text-violet-700\" },\n} as const;\n\nexport type AvatarColorKey = keyof typeof AVATAR_COLOR;\nexport type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];\n\nexport const AVATAR_COLOR_KEYS = Object.keys(AVATAR_COLOR) as AvatarColorKey[];\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { pickColorFromPalette } from \"@utils/color\";\nimport { getInitials } from \"@utils/string\";\n\nimport {\n AVATAR_COLOR,\n AVATAR_COLOR_KEYS,\n type AvatarColorKey,\n} from \"./types/avatar\";\n\nconst avatarStyles = tv({\n base: \"flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none\",\n variants: {\n size: {\n xs: \"h-[16px] w-[16px] text-[0.5em]\",\n sm: \"h-[20px] w-[20px] text-[0.625em]\",\n md: \"h-[28px] w-[28px] text-[0.75em]\",\n lg: \"h-[36px] w-[36px] text-[0.875em]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type AvatarProps = {\n name: string;\n className?: string;\n} & VariantProps<typeof avatarStyles>;\n\nfunction getAvatarInitials(name: string) {\n const base = name.includes(\"@\") ? name.split(\"@\")[0] : name;\n return getInitials(base);\n}\n\nexport function Avatar({ name, size = \"sm\", className }: AvatarProps) {\n const initials = getAvatarInitials(name);\n\n const colorKey: AvatarColorKey = pickColorFromPalette(\n name,\n AVATAR_COLOR_KEYS\n );\n\n const color = AVATAR_COLOR[colorKey];\n\n return (\n <div\n role=\"img\"\n aria-label={name}\n className={cn(avatarStyles({ size }), color.bg, color.text, className)}\n >\n {initials}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Badge, type BadgeProps } from \"@components/badge/badge\";\nimport {\n CheckCircleIcon,\n CloseIcon,\n FireIcon,\n InsightIcon,\n} from \"@icons/index\";\n\nconst statusBadgeStyles = tv({\n slots: {\n root: \"relative flex items-center gap-1 rounded-full border\",\n text: \"truncate text-xs font-semibold whitespace-nowrap\",\n },\n variants: {\n status: {\n fire: {\n root: \"border-tertiary-400 bg-tertiary-50\",\n text: \"text-tertiary-500-variant-2\",\n },\n insight: {\n root: \"border-primary-400-variant-1 bg-primary-subtle\",\n text: \"text-primary-600\",\n },\n done: {\n root: \"border-success-base bg-success-light\",\n text: \"text-success-base\",\n },\n },\n },\n});\n\ntype BadgeLayout =\n | \"icon-label\"\n | \"icon-action\"\n | \"icon-label-action\"\n | \"label-only\";\n\nconst STATUS_CONFIG = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insight\",\n compact: \"label-only\",\n normal: \"icon-label\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n} as const satisfies Record<\n string,\n {\n icon: React.FC<{ size?: number; className?: string }>;\n label: string;\n compact: BadgeLayout;\n normal: BadgeLayout;\n }\n>;\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"icon\" | \"action\" | \"label\"> &\n Required<VariantProps<typeof statusBadgeStyles>> & {\n label?: ReactNode;\n onAction?: () => void;\n density?: Density;\n };\n\nexport function StatusBadge({\n className,\n label,\n status,\n onAction,\n density = \"normal\",\n}: StatusBadgeProps) {\n const [hovered, setHovered] = useState(false);\n\n const isCompact = density === \"compact\";\n const config = STATUS_CONFIG[status];\n const layout = isCompact ? config.compact : config.normal;\n\n const styles = statusBadgeStyles({ status });\n\n const showIcon = layout.includes(\"icon\");\n const showLabel = layout.includes(\"label\");\n const showAction = layout.includes(\"action\") && onAction;\n\n return (\n <Badge\n className={cn(\n styles.root(),\n isCompact ? \"h-6 w-6\" : \"py-1 pr-2.5 pl-2\",\n className\n )}\n icon={\n showIcon ? (\n <config.icon\n size={16}\n className={cn(\n styles.text(),\n isCompact && showAction && \"absolute inset-0 m-auto\",\n isCompact && showAction && hovered && \"opacity-0\"\n )}\n />\n ) : undefined\n }\n label={\n showLabel ? (\n <span\n className={cn(\n styles.text(),\n isCompact &&\n \"absolute inset-0 flex items-center justify-center text-center text-[10px]\"\n )}\n >\n {label ?? config.label}\n </span>\n ) : undefined\n }\n action={\n showAction ? (\n <Button\n onClick={onAction}\n aria-label=\"Dismiss status\"\n className={cn(\n \"group\",\n isCompact\n ? cn(\n \"absolute inset-0 m-auto transition-opacity\",\n hovered ? \"opacity-100\" : \"opacity-0\"\n )\n : undefined\n )}\n >\n <CloseIcon\n size={16}\n className={cn(styles.text(), \"group-hover:scale-90\")}\n />\n </Button>\n ) : undefined\n }\n onMouseEnter={isCompact ? () => setHovered(true) : undefined}\n onMouseLeave={isCompact ? () => setHovered(false) : undefined}\n />\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n icon: ReactElement<IconProps>;\n};\n\n// IconButton is a button with an icon. It only supports one child icon.\n// The icon is only decorative and should not be focusable.\nexport function IconButton({ icon, ...props }: IconButtonProps) {\n return (\n <Button {...props}>\n {cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n className: cn(\"shrink-0\", icon.props.className),\n })}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Tooltip, type TooltipProps } from \"@primitives/tooltip\";\n\n// InfoTooltip is a styled preset of Tooltip.\n// It intentionally exposes the same API as Tooltip.\nexport type InfoTooltipProps = TooltipProps;\n\nexport function InfoTooltip({ className, ...props }: InfoTooltipProps) {\n return (\n <Tooltip\n {...props}\n className={cn(\n \"rounded bg-neutral-700 px-2 py-1 text-[0.625em] font-medium whitespace-nowrap text-white\",\n className\n )}\n />\n );\n}\n","import { useState, type ReactElement } from \"react\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n CompactDensityIcon,\n FireIcon,\n MinusIcon,\n NormalDensityIcon,\n NotFireIcon,\n ReadIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\ntype BulkAction = {\n id: string;\n tooltip: string;\n icon: ReactElement<IconProps>;\n onClick: () => void;\n};\n\ntype BulkActionsProps = {\n totalItems: number;\n selectedItems: number;\n\n onSelectAll: (select: boolean) => void;\n\n actions: {\n fire: { on: () => void; off: () => void };\n done: { on: () => void; off: () => void };\n read: { on: () => void; off: () => void };\n };\n\n defaultDensity?: Density;\n onDensityChange: (density: Density) => void;\n\n className?: string;\n};\n\nexport function BulkActions({\n totalItems = 0,\n selectedItems = 0,\n onSelectAll,\n actions,\n defaultDensity = \"normal\",\n onDensityChange,\n className,\n}: BulkActionsProps) {\n const hasItems = totalItems > 0;\n const isAllSelected = hasItems && selectedItems === totalItems;\n const isPartiallySelected =\n hasItems && selectedItems > 0 && selectedItems < totalItems;\n\n const label = isAllSelected\n ? `All (${totalItems})`\n : isPartiallySelected\n ? `${selectedItems}/${totalItems} selected`\n : `Select all (${totalItems})`;\n\n const [density, setDensity] = useState<Density>(defaultDensity ?? \"normal\");\n\n const handleSelectAll = () => {\n onSelectAll(!isAllSelected);\n };\n\n function changeDensity(next: Density) {\n setDensity(next);\n onDensityChange?.(next);\n }\n\n const actionGroups: Record<string, BulkAction[]> = {\n fire: [\n {\n id: \"fire\",\n tooltip: \"Mark as fire\",\n icon: <FireIcon size={20} className=\"text-tertiary-500-variant-2\" />,\n onClick: actions.fire.on,\n },\n {\n id: \"not-fire\",\n tooltip: \"Mark as not fire\",\n icon: <NotFireIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.fire.off,\n },\n ],\n done: [\n {\n id: \"done\",\n tooltip: \"Mark as done\",\n icon: <CheckCircleIcon size={20} className=\"text-success-base\" />,\n onClick: actions.done.on,\n },\n {\n id: \"not-done\",\n tooltip: \"Mark as not done\",\n icon: <CheckCircleEmptyIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.done.off,\n },\n ],\n read: [\n {\n id: \"unread\",\n tooltip: \"Mark as unread\",\n icon: <UnreadIcon size={20} className=\"text-primary-600-variant-1\" />,\n onClick: actions.read.on,\n },\n {\n id: \"read\",\n tooltip: \"Mark as read\",\n icon: <ReadIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.read.off,\n },\n ],\n };\n\n const densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }> = [\n {\n value: \"normal\",\n tooltip: \"Normal density\",\n icon: <NormalDensityIcon size={20} />,\n },\n {\n value: \"compact\",\n tooltip: \"Compact density\",\n icon: <CompactDensityIcon size={20} />,\n },\n ];\n\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all */}\n <div className=\"contents\">\n <Checkbox\n checked={isAllSelected}\n indeterminate={isPartiallySelected}\n onChange={handleSelectAll}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n indeterminateIcon={\n <MinusIcon size={12} className=\"text-neutral-900\" />\n }\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n >\n {label}\n </Checkbox>\n </div>\n\n {/* Bulk actions */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\">\n {selectedItems > 0 && (\n <>\n {Object.entries(actionGroups).map(([groupKey, actions]) => (\n <div key={groupKey} className=\"flex items-center gap-2 px-1\">\n {actions.map((action) => (\n <InfoTooltip\n key={action.id}\n content={action.tooltip}\n className=\"border-black\"\n >\n <IconButton\n className=\"h-7 w-7 p-0\"\n onClick={action.onClick}\n icon={action.icon}\n />\n </InfoTooltip>\n ))}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Density */}\n <div className=\"flex items-center gap-2\">\n {densityOptions.map(({ value, tooltip, icon }) => {\n const isActive = density === value;\n\n return (\n <InfoTooltip key={value} content={tooltip}>\n <IconButton\n className={cn(\n \"h-7 w-7 p-0 text-neutral-900\",\n isActive && \"bg-white-variant-4\"\n )}\n onClick={() => changeDensity(value)}\n icon={icon}\n aria-pressed={isActive}\n />\n </InfoTooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cloneElement, type ComponentType, type ReactElement } from \"react\";\n\nimport { tv } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport {\n CheckCircleIcon,\n FireIcon,\n InsightIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\nconst filterButtonStyles = tv({\n slots: {\n root: \"inline-flex w-fit items-center gap-1 rounded-full border px-2 py-1 transition-colors\",\n label: \"flex shrink-0 items-center gap-1 text-xs whitespace-nowrap\",\n },\n variants: {\n selected: {\n false: {\n root: \"border-neutral-300 bg-white hover:border-neutral-500-variant-4 hover:bg-neutral-100\",\n label:\n \"font-semibold text-neutral-800 opacity-80 group-hover:opacity-100\",\n },\n true: {\n root: \"border-primary-400 bg-primary-light hover:border-primary-400\",\n label: \"font-semibold text-neutral-900\",\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst FILTER_BUTTON_META = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n iconColor: \"text-tertiary-500\",\n },\n unread: {\n icon: UnreadIcon,\n label: \"Unread\",\n iconColor: \"text-primary-500\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insights\",\n iconColor: \"text-primary-600\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n iconColor: \"text-success-base\",\n },\n} as const;\n\ntype FilterButtonVariant = keyof typeof FILTER_BUTTON_META | \"custom\";\n\ntype FilterButtonClassNames = Partial<{\n root: string;\n icon: string;\n label: string;\n count: string;\n}>;\n\nexport type FilterButtonProps = Omit<ButtonProps, \"children\" | \"className\"> & {\n variant?: FilterButtonVariant;\n label?: string;\n count?: number;\n selected?: boolean;\n icon?: ReactElement<IconProps>;\n classNames?: FilterButtonClassNames;\n};\n\nfunction renderIcon(\n Icon: ReactElement<IconProps> | ComponentType<IconProps>,\n className: string\n) {\n if (typeof Icon === \"function\") {\n return <Icon size={20} className={className} />;\n }\n\n return cloneElement(Icon, {\n size: Icon.props.size ?? 20,\n className: cn(className, Icon.props.className),\n });\n}\n\nexport function FilterButton({\n variant = \"custom\",\n label,\n count,\n selected = false,\n icon,\n classNames,\n disabled,\n ...props\n}: FilterButtonProps) {\n const isDisabled = Boolean(disabled);\n\n const styles = filterButtonStyles({\n selected: !isDisabled && selected,\n });\n\n const meta = variant !== \"custom\" ? FILTER_BUTTON_META[variant] : undefined;\n\n const resolvedIcon = icon ?? meta?.icon;\n const resolvedLabel = label ?? meta?.label;\n\n const iconColor = isDisabled\n ? \"text-neutral-400\"\n : selected && meta?.iconColor\n ? meta.iconColor\n : \"text-neutral-900 opacity-60 group-hover:opacity-80\";\n\n return (\n <Button\n {...props}\n disabled={disabled}\n aria-label={props[\"aria-label\"] ?? resolvedLabel}\n className={cn(\n \"group\",\n styles.root(),\n isDisabled && \"border-neutral-300 bg-white hover:border-neutral-300\",\n classNames?.root\n )}\n >\n {resolvedIcon && (\n <span className={cn(\"flex items-center\", classNames?.icon)}>\n {renderIcon(resolvedIcon, cn(\"shrink-0\", iconColor))}\n </span>\n )}\n\n {resolvedLabel && (\n <span\n className={cn(\n styles.label(),\n isDisabled && \"font-medium text-neutral-400\",\n classNames?.label\n )}\n >\n <span>{resolvedLabel}</span>\n\n {typeof count === \"number\" && count > 0 && (\n <span\n aria-label={`${count} items`}\n className={cn(\"font-medium\", classNames?.count)}\n >\n ({count})\n </span>\n )}\n </span>\n )}\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nconst iconCountButtonStyles = tv({\n slots: {\n root: \"flex w-fit items-center\",\n bubble:\n \"flex size-8 items-center justify-center rounded-full border-[1.5px] transition-opacity hover:opacity-70\",\n label: \"flex items-center gap-1 transition-colors\",\n count: \"font-normal\",\n icon: \"\",\n },\n variants: {\n variant: {\n primary: {},\n secondary: {},\n minimal: {\n bubble: \"border-none text-primary-500\",\n label: \"text-primary-500\",\n },\n },\n status: {\n active: {},\n inactive: {},\n },\n orientation: {\n vertical: {\n root: \"flex-col gap-1\",\n label: \"text-[9px] font-semibold\",\n },\n horizontal: {\n root: \"flex-row gap-2\",\n label: \"text-xs font-semibold\",\n },\n },\n },\n compoundVariants: [\n // Primary - Active\n {\n variant: \"primary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n },\n },\n // Primary - Inactive\n {\n variant: \"primary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"opacity-60\",\n icon: \"opacity-50 grayscale\",\n },\n },\n // Secondary - Active\n {\n variant: \"secondary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n icon: \"text-success-base\",\n },\n },\n // Secondary - Inactive\n {\n variant: \"secondary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"text-neutral-900\",\n },\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n orientation: \"vertical\",\n status: \"active\",\n },\n});\n\ntype IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;\n\ntype IconCountButtonClassNames = Partial<{\n root: string;\n bubble: string;\n label: string;\n count: string;\n}>;\n\nexport type IconCountButtonProps = IconCountButtonVariant &\n Omit<ButtonProps, \"children\" | \"className\"> & {\n icon: ReactElement<IconProps>;\n label: string;\n count?: number;\n alwaysShowCount?: boolean;\n classNames?: IconCountButtonClassNames;\n };\n\nexport function IconCountButton({\n icon,\n label,\n count,\n variant = \"primary\",\n orientation = \"vertical\",\n status = \"active\",\n alwaysShowCount = false,\n classNames,\n ...props\n}: IconCountButtonProps) {\n const styles = iconCountButtonStyles({ variant, orientation, status });\n\n return (\n <Button {...props} className={cn(styles.root(), classNames?.root)}>\n <div className={cn(styles.bubble(), classNames?.bubble)}>\n {cloneElement(icon, {\n size: icon.props.size ?? 20,\n className: cn(styles.icon(), icon.props.className),\n })}\n </div>\n\n <div className={cn(styles.label(), classNames?.label)}>\n <span>{label}</span>\n {typeof count === \"number\" &&\n count > 0 &&\n (alwaysShowCount || status === \"active\") && (\n <span\n aria-label={`${count} items`}\n className={cn(styles.count(), classNames?.count)}\n >\n ({count})\n </span>\n )}\n </div>\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport {\n DropdownMenu,\n type DropdownMenuItemProps,\n type DropdownMenuProps,\n} from \"@components/dropdown-menu/dropdown-menu\";\nimport { type IconProps } from \"@icons/index\";\n\ntype ActionMenuProps = DropdownMenuProps;\n\ntype ActionMenuItemProps = DropdownMenuItemProps & {\n icon?: ReactElement<IconProps>;\n label: string;\n selected?: boolean;\n};\n\nexport function ActionMenuItem({\n icon,\n label,\n className,\n selected,\n ...props\n}: ActionMenuItemProps) {\n return (\n <Button\n className={cn(\n \"flex items-center justify-start gap-2 bg-white px-3 py-2 hover:bg-neutral-100\",\n selected && \"bg-primary-500 text-white hover:bg-primary-bright\",\n className\n )}\n {...props}\n >\n {icon &&\n cloneElement(icon, {\n size: icon.props.size ?? 16,\n className: cn(\n selected ? \"text-white\" : \"text-neutral-600-variant-7\",\n icon.props.className\n ),\n })}\n <span\n className={cn(\n \"text-xs font-medium transition-colors\",\n selected ? \"text-white\" : \"text-neutral-900\"\n )}\n >\n {label}\n </span>\n </Button>\n );\n}\n\nexport function ActionMenu({\n trigger,\n children,\n className,\n ...props\n}: ActionMenuProps) {\n return (\n <DropdownMenu\n trigger={trigger}\n className={cn(\n \"mt-1 min-w-20 overflow-hidden rounded border border-neutral-400 bg-white p-0 shadow-lg\",\n className\n )}\n {...props}\n >\n {children}\n </DropdownMenu>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n formatDate,\n formatDateRange,\n generateCalendarDays,\n getMonthName,\n getWeekdays,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isToday,\n} from \"@utils/calendar\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Dropdown } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, CalendarIcon, CloseIcon } from \"@icons/index\";\n\ntype DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype DatePickerProps = {\n mode?: \"single\" | \"range\";\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: (date: Date | null | DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nfunction CalendarPanel({\n mode,\n selectedDate,\n selectedRange,\n onDateSelect,\n onRangeSelect,\n}: {\n mode: \"single\" | \"range\";\n selectedDate: Date | null;\n selectedRange: DateRange;\n onDateSelect: (date: Date) => void;\n onRangeSelect: (range: DateRange) => void;\n}) {\n const { close } = useDropdown();\n const today = useMemo(() => new Date(), []);\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const prevSelectedDateRef = useRef<Date | null>(selectedDate);\n const prevSelectedRangeRef = useRef<DateRange>(selectedRange);\n\n // Initialize to selected date/range or today\n const [currentMonth, setCurrentMonth] = useState(() => {\n const date =\n mode === \"single\"\n ? (selectedDate ?? today)\n : (selectedRange.startDate ?? selectedRange.endDate ?? today);\n return { year: date.getFullYear(), month: date.getMonth() };\n });\n\n // Update current month when selectedDate/selectedRange changes\n useEffect(() => {\n // Only update if the selected date/range actually changed\n const hasChanged =\n (mode === \"single\" &&\n selectedDate &&\n (!prevSelectedDateRef.current ||\n selectedDate.getTime() !== prevSelectedDateRef.current.getTime())) ||\n (mode === \"range\" &&\n (selectedRange.startDate?.getTime() !==\n prevSelectedRangeRef.current.startDate?.getTime() ||\n selectedRange.endDate?.getTime() !==\n prevSelectedRangeRef.current.endDate?.getTime()));\n\n if (hasChanged) {\n // Defer state update to avoid cascading renders\n queueMicrotask(() => {\n if (mode === \"single\" && selectedDate) {\n setCurrentMonth({\n year: selectedDate.getFullYear(),\n month: selectedDate.getMonth(),\n });\n } else if (mode === \"range\") {\n const date = selectedRange.startDate ?? selectedRange.endDate;\n if (date) {\n setCurrentMonth({\n year: date.getFullYear(),\n month: date.getMonth(),\n });\n }\n }\n });\n }\n\n // Update refs\n prevSelectedDateRef.current = selectedDate;\n prevSelectedRangeRef.current = selectedRange;\n }, [mode, selectedDate, selectedRange]);\n\n // Generate full calendar days array with previous/next month days\n const calendarDays = useMemo(() => {\n return generateCalendarDays(currentMonth.year, currentMonth.month);\n }, [currentMonth.year, currentMonth.month]);\n\n function handleDateClick(date: Date) {\n // If clicking a day from previous/next month, update currentMonth first\n const clickedMonth = date.getMonth();\n const clickedYear = date.getFullYear();\n\n if (\n clickedMonth !== currentMonth.month ||\n clickedYear !== currentMonth.year\n ) {\n setCurrentMonth({\n year: clickedYear,\n month: clickedMonth,\n });\n }\n\n if (mode === \"single\") {\n onDateSelect(date);\n close();\n } else {\n // Range mode\n const { startDate, endDate } = selectedRange;\n\n if (!startDate || endDate) {\n // No start date or range is complete - start a new range\n onRangeSelect({ startDate: date, endDate: null });\n // Don't close - wait for end date\n } else {\n // Start date exists, selecting end date\n if (isDateBefore(date, startDate)) {\n // Date is before start - make it the new start\n onRangeSelect({ startDate: date, endDate: null });\n } else {\n // Valid end date\n onRangeSelect({ startDate, endDate: date });\n close();\n }\n }\n }\n }\n\n function handlePrevMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 0) {\n return { year: prev.year - 1, month: 11 };\n }\n return { year: prev.year, month: prev.month - 1 };\n });\n }\n\n function handleNextMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 11) {\n return { year: prev.year + 1, month: 0 };\n }\n return { year: prev.year, month: prev.month + 1 };\n });\n }\n\n const weekdays = getWeekdays();\n\n return (\n <div className=\"mt-1 w-fit rounded-lg border border-neutral-400 bg-white p-2 shadow-lg\">\n {/* Header */}\n <div className=\"mb-4 flex items-center justify-between border-b border-neutral-400 pb-2\">\n <IconButton\n icon={<ArrowIcon direction=\"left\" size={20} />}\n onClick={handlePrevMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Previous month\"\n />\n <div className=\"text-[10px] font-bold text-neutral-900\">\n {getMonthName(currentMonth.month)} {currentMonth.year}\n </div>\n <IconButton\n icon={<ArrowIcon direction=\"right\" size={20} />}\n onClick={handleNextMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Next month\"\n />\n </div>\n\n {/* Weekdays */}\n <div className=\"mb-2 grid grid-cols-7\">\n {weekdays.map((day) => (\n <div\n key={day}\n className=\"flex items-center justify-center p-0.5 text-[9px] font-bold text-neutral-900\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7\">\n {calendarDays.map(({ day, date, isCurrentMonth }) => {\n const isTodayDate = isToday(date);\n\n // Single mode states\n const isSelectedSingle =\n mode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n\n // Range mode states\n const { startDate, endDate } = selectedRange;\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n\n // Determine preview range (hover state)\n let previewStart = startDate;\n let previewEnd = hoveredDate;\n\n // Only show preview if startDate exists, no endDate yet, and hovered date is after start\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n hoveredDate &&\n !isDateBefore(hoveredDate, startDate)\n ) {\n previewStart = startDate;\n previewEnd = hoveredDate;\n } else {\n previewStart = null;\n previewEnd = null;\n }\n\n const isInRange =\n mode === \"range\" &&\n (isDateInRange(date, startDate, endDate) ||\n isDateInRange(date, previewStart, previewEnd));\n\n // Visual state priority: start/end > selected (single) > inRange > today > base\n const isSelected = isSelectedSingle || isStart || isEnd;\n\n return (\n <Button\n key={`${date.getFullYear()}-${date.getMonth()}-${day}`}\n type=\"button\"\n onClick={() => handleDateClick(date)}\n onMouseEnter={() => {\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n !isDateBefore(date, startDate)\n ) {\n setHoveredDate(date);\n }\n }}\n onMouseLeave={() => {\n if (mode === \"range\") {\n setHoveredDate(null);\n }\n }}\n className=\"p-0.5\"\n aria-label={`Select ${formatDate(date)}`}\n aria-selected={isSelected || undefined}\n >\n <div\n className={cn(\n \"flex h-[26px] w-[26px] items-center justify-center rounded text-[9px] transition-colors\",\n // Start/End/Selected state (highest priority)\n isSelected &&\n \"bg-primary-500 font-semibold text-white-variant-1 hover:bg-primary-500\",\n // In-range state (between start and end, or in preview)\n isInRange &&\n !isSelected &&\n \"bg-primary-500/20 font-normal text-neutral-900 hover:bg-primary-500/30\",\n // Today state (only if not selected and not in range)\n isTodayDate &&\n !isSelected &&\n !isInRange &&\n \"border border-primary-500 bg-primary-500/15 font-bold hover:bg-primary-500 hover:text-white\",\n // Base styles (only if not selected and not in range)\n !isSelected &&\n !isInRange &&\n (isCurrentMonth\n ? \"text-neutral-900 hover:bg-neutral-300\"\n : \"text-neutral-600 hover:bg-neutral-200\")\n )}\n >\n {day}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction DatePickerTrigger({\n displayText,\n disabled,\n className,\n onClear,\n}: {\n displayText: string | null;\n disabled: boolean;\n className?: string;\n onClear: () => void;\n}) {\n const { close } = useDropdown();\n\n function handleClear() {\n onClear();\n close();\n }\n\n return (\n <Pressable\n disabled={disabled}\n className={cn(\n \"flex items-center justify-start gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1 text-left text-xs text-neutral-800 transition-colors hover:border-neutral-500\",\n displayText &&\n \"border-primary-400 hover:border-primary-500 hover:bg-primary-light\",\n className\n )}\n >\n <CalendarIcon size={20} className=\"text-primary-600\" />\n <span className=\"font-semibold\">Date</span>\n {displayText && (\n <>\n <span className=\"font-normal\">({displayText})</span>\n <StopPropagation>\n <IconButton\n icon={<CloseIcon size={16} />}\n onClick={handleClear}\n className=\"text-neutral-600 hover:opacity-70\"\n aria-label=\"Close\"\n />\n </StopPropagation>\n </>\n )}\n </Pressable>\n );\n}\n\nexport function DatePicker({\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n}: DatePickerProps) {\n // Single mode state\n const [internalValue, setInternalValue] = useState<Date | null>(\n mode === \"single\" && (defaultValue as Date | null | undefined)\n ? (defaultValue as Date | null)\n : null\n );\n\n // Range mode state\n const [internalRange, setInternalRange] = useState<DateRange>(() => {\n if (mode === \"range\" && defaultValue) {\n const range = defaultValue as DateRange;\n return {\n startDate: range.startDate ?? null,\n endDate: range.endDate ?? null,\n };\n }\n return { startDate: null, endDate: null };\n });\n\n const isControlled = value !== undefined;\n\n // Get current values based on mode\n const currentValue =\n mode === \"single\"\n ? isControlled\n ? ((value as Date | null | undefined) ?? null)\n : internalValue\n : null;\n\n const currentRange =\n mode === \"range\"\n ? isControlled\n ? ((value as DateRange | undefined) ?? {\n startDate: null,\n endDate: null,\n })\n : internalRange\n : { startDate: null, endDate: null };\n\n function handleDateSelect(date: Date | null) {\n if (mode === \"single\") {\n if (!isControlled) {\n setInternalValue(date);\n }\n onChange?.(date);\n }\n }\n\n function handleRangeSelect(range: DateRange) {\n if (mode === \"range\") {\n if (!isControlled) {\n setInternalRange(range);\n }\n onChange?.(range);\n }\n }\n\n function handleClear() {\n if (mode === \"single\") {\n handleDateSelect(null);\n } else {\n handleRangeSelect({ startDate: null, endDate: null });\n }\n }\n\n // Format display text\n const displayText =\n mode === \"single\"\n ? formatDate(currentValue)\n : formatDateRange(currentRange.startDate, currentRange.endDate);\n\n return (\n <>\n <Dropdown\n trigger={\n <DatePickerTrigger\n displayText={displayText}\n disabled={disabled}\n className={className}\n onClear={handleClear}\n />\n }\n disabled={disabled}\n >\n <CalendarPanel\n mode={mode}\n selectedDate={currentValue}\n selectedRange={currentRange}\n onDateSelect={handleDateSelect}\n onRangeSelect={handleRangeSelect}\n />\n </Dropdown>\n </>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport type { FilterButtonProps } from \"@patterns/buttons/filter-button/filter-button\";\n\ntype FilterBarProps = {\n children: ReactElement<FilterButtonProps>[];\n className?: string;\n};\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children.map((child) => cloneElement(child, {}))}\n </div>\n );\n}\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\n\nconst dividerStyles = tv({\n base: \"bg-neutral-400-variant-4\",\n variants: {\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"h-full w-px\",\n },\n inset: {\n none: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n /* Horizontal */\n { orientation: \"horizontal\", inset: \"sm\", class: \"mx-2\" },\n { orientation: \"horizontal\", inset: \"md\", class: \"mx-4\" },\n { orientation: \"horizontal\", inset: \"lg\", class: \"mx-6\" },\n /* Vertical */\n { orientation: \"vertical\", inset: \"sm\", class: \"my-2\" },\n { orientation: \"vertical\", inset: \"md\", class: \"my-4\" },\n { orientation: \"vertical\", inset: \"lg\", class: \"my-6\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n inset: \"none\",\n },\n});\n\ntype DividerVariants = VariantProps<typeof dividerStyles>;\n\ntype DividerProps = DividerVariants & {\n className?: string;\n};\n\nexport function Divider({ className, ...variants }: DividerProps) {\n return <div className={cn(dividerStyles(variants), className)} />;\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport {\n IconCountButton,\n type IconCountButtonProps,\n} from \"@patterns/buttons/icon-count-button/icon-count-button\";\nimport { Divider } from \"@patterns/layout/divider\";\nimport { AddIcon } from \"@icons/index\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\ntype IntegrationBarProps = {\n orientation?: IntegrationBarOrientation;\n children: ReactElement<IconCountButtonProps>[];\n onAddMore: () => void;\n className?: string;\n};\n\nexport function IntegrationBar({\n orientation = \"vertical\",\n children,\n onAddMore,\n className,\n}: IntegrationBarProps) {\n return (\n <div\n className={cn(\n \"size-full\",\n orientation === \"vertical\" ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n )}\n >\n <div\n className={cn(\n \"grid h-full w-full place-items-center gap-4\",\n orientation === \"vertical\"\n ? \"grid-cols-1\"\n : \"auto-cols-max grid-flow-col\",\n className\n )}\n >\n {children.map((child) => cloneElement(child, {}))}\n <Divider\n orientation={orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n />\n <IconCountButton\n icon={<AddIcon size={24} />}\n label=\"Add\"\n onClick={onAddMore}\n variant=\"minimal\"\n orientation={orientation}\n />\n </div>\n </div>\n );\n}\n","export const PREVIEW_CARD_HEIGHT_SIZE = {\n normal: 165,\n compact: 60,\n};\n","import type { ReactNode } from \"react\";\n\nimport { PREVIEW_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Avatar } from \"@patterns/avatar/avatar\";\nimport { StatusBadge } from \"@patterns/badges/status-badge\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n ExternalLinkIcon,\n FireIcon,\n} from \"@icons/index\";\n\nexport type PreviewStatusType = \"fire\" | \"insight\" | \"done\";\nexport type PreviewActionType = \"fire\" | \"done\" | \"link\";\n\ntype StatusConfig = {\n label?: string;\n onAction?: () => void;\n};\n\ntype ActionConfig = {\n onClick: () => void;\n};\n\nexport type PreviewStatuses = Partial<Record<PreviewStatusType, StatusConfig>>;\nexport type PreviewActions = Partial<Record<PreviewActionType, ActionConfig>>;\n\nexport type PreviewCardProps = {\n icon: ReactNode;\n sender: string;\n title: string;\n content: string;\n timestamp: string;\n workspace: string;\n\n read?: boolean;\n selected?: boolean;\n onSelect?: () => void;\n\n // Checkbox (bulk selection)\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n\n statuses?: PreviewStatuses;\n actions?: PreviewActions;\n\n // Density\n density?: Density;\n};\n\nconst PREVIEW_ACTION_CONFIG = {\n fire: {\n className: \"group\",\n icon: (\n <FireIcon\n size={20}\n className=\"text-neutral-600 group-hover:text-tertiary-500-variant-2\"\n />\n ),\n },\n done: {\n className: \"group relative flex items-center justify-center w-6 h-6\",\n icon: (\n <span className=\"contents\">\n <CheckCircleEmptyIcon\n size={24}\n className=\"block text-neutral-600-variant-1 group-hover:hidden\"\n />\n <CheckCircleIcon\n size={24}\n className=\"hidden text-success-base group-hover:block\"\n />\n </span>\n ),\n },\n link: {\n className: \"\",\n icon: <ExternalLinkIcon size={20} className=\"text-primary-500\" />,\n },\n} as const;\n\nfunction PreviewCheckbox({\n checked,\n onCheckedChange,\n}: {\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}) {\n return (\n <StopPropagation>\n <Checkbox\n checked={checked}\n onChange={onCheckedChange}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n />\n </StopPropagation>\n );\n}\n\nfunction PreviewStatusesList({\n statuses,\n density,\n}: {\n statuses: PreviewStatuses;\n density?: Density;\n}) {\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(statuses) as PreviewStatusType[]).map((status) => {\n const config = statuses[status];\n if (!config) return null;\n\n return (\n <StatusBadge\n key={status}\n status={status}\n label={config.label}\n onAction={config.onAction}\n density={density}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nfunction PreviewActionsList({ actions }: { actions: PreviewActions }) {\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(actions) as PreviewActionType[]).map((type) => {\n const action = actions[type];\n if (!action) return null;\n\n return (\n <IconButton\n key={type}\n {...PREVIEW_ACTION_CONFIG[type]}\n onClick={action.onClick}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nexport function PreviewCard({\n icon,\n sender,\n title,\n content,\n timestamp,\n workspace,\n read = false,\n selected = false,\n onSelect,\n checked = false,\n onCheckedChange,\n statuses = {},\n actions = {},\n density = \"normal\",\n}: PreviewCardProps) {\n return (\n <Card\n as={Pressable}\n onPress={onSelect}\n className={cn(\n \"w-full rounded-lg border-[1.5px] border-primary-400 bg-white-variant-5 p-4 hover:bg-primary-light\",\n read && \"border-neutral-400\",\n selected && \"border-primary-500 bg-primary-light\",\n density === \"normal\"\n ? `h-[${PREVIEW_CARD_HEIGHT_SIZE.normal}px]`\n : `h-[${PREVIEW_CARD_HEIGHT_SIZE.compact}px]`\n )}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <PreviewCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n {icon}\n\n <span\n className={cn(\n \"min-w-0 -translate-x-0.5 truncate text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n </span>\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n\n <CardTitle\n className={cn(\n \"text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {title}\n </CardTitle>\n\n <CardContent className=\"line-clamp-2 min-w-0 text-sm text-neutral-900\">\n {content}\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <PreviewStatusesList statuses={statuses} />\n <PreviewActionsList actions={actions} />\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <PreviewCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_auto_minmax(0,1fr)_auto_auto_auto] items-center gap-2\">\n {icon}\n\n <PreviewStatusesList statuses={statuses} density={density} />\n\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 text-sm font-bold whitespace-nowrap text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n <span className=\"shrink-0 text-sm text-neutral-500\">•</span>\n <span className=\"truncate\">{title}</span>\n </div>\n\n <PreviewActionsList actions={actions} />\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import { useState } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Input } from \"@primitives/input\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon, SearchIcon } from \"@icons/index\";\n\ntype SearchInputProps = {\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n onChange?: (value: string) => void;\n onClear?: () => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport function SearchInput({\n value,\n defaultValue,\n placeholder = \"Search...\",\n onChange,\n onClear,\n disabled = false,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n function handleChange(newValue: string) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n\n function handleClear() {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n onClear?.();\n }\n\n return (\n <fieldset\n role=\"search\"\n className={cn(\n \"flex h-8 min-w-0 items-center gap-1.5 rounded-full border border-neutral-500-variant-3 bg-white px-2 py-1\",\n disabled && \"pointer-events-none bg-neutral-200 opacity-70\",\n className\n )}\n disabled={disabled}\n >\n <SearchIcon size={20} className=\"text-neutral-700\" />\n\n <Input\n type=\"text\"\n value={currentValue}\n placeholder={placeholder}\n onChange={handleChange}\n className={cn(\n \"m-0 h-5 min-w-0 flex-1 border-0 p-0 text-xs text-neutral-800\",\n \"bg-transparent outline-none\",\n \"placeholder:text-neutral-700-alpha-60\",\n disabled && \"text-neutral-700-alpha-60\"\n )}\n />\n\n {hasValue && !disabled && (\n <IconButton\n type=\"button\"\n icon={<CloseIcon size={16} className=\"text-neutral-700\" />}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"rounded p-0 transition-opacity hover:opacity-70\"\n />\n )}\n </fieldset>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["days: CalendarDay[]","freeze","x","seal","apply","construct","getGlobal","_createTrustedTypesPolicy","html","_","_createHooksMap","window","document","isRegexOrFunction","_parseConfig","_checkValidNamespace","_forceRemove","_removeAttribute","_initDocument","_createNodeIterator","_isClobbered","_isNode","hooks","_sanitizeElements","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","_isValidAttribute","DATA_ATTR","ARIA_ATTR","ATTR_WHITESPACE","IS_SCRIPT_OR_DATA","_isBasicCustomElement","CUSTOM_ELEMENT","_sanitizeAttributes","_sanitizeShadowDOM","html: string","toasts: ToastItem[]","positionClasses: Record<ToastPosition, string>","align: Align","DIRECTION_CLASS: Record<ArrowDirection, string>","colorKey: AvatarColorKey","actionGroups: Record<string, BulkAction[]>","densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }>"],"sources":["../src/tokens/colors.ts","../src/utils/calendar.ts","../src/utils/classnames.ts","../src/utils/string.ts","../src/utils/color.ts","../src/utils/hooks/use-long-press.ts","../node_modules/dompurify/dist/purify.es.mjs","../node_modules/emojilib/dist/emoji-en-US.json","../node_modules/marked/lib/marked.esm.js","../src/utils/rich-content.ts","../src/utils/timestamp.ts","../src/primitives/button.tsx","../src/primitives/checkbox.tsx","../src/primitives/dropdown/dropdown-context.tsx","../src/primitives/dropdown/dropdown.tsx","../src/primitives/input.tsx","../src/primitives/pressable.tsx","../src/primitives/stop-propagation.tsx","../src/primitives/toast/toast-store.ts","../src/primitives/toast/toast.tsx","../src/primitives/toast/toaster.tsx","../src/primitives/tooltip.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-content.tsx","../src/icons/icon.tsx","../src/icons/brand/logo.tsx","../src/icons/integrations/airtable.tsx","../src/icons/integrations/asana.tsx","../src/icons/integrations/clickup.tsx","../src/icons/integrations/gmail.tsx","../src/icons/integrations/google-calendar.tsx","../src/icons/integrations/jira.tsx","../src/icons/integrations/outlook-calendar.tsx","../src/icons/integrations/outlook.tsx","../src/icons/integrations/slack.tsx","../src/icons/integrations/teams.tsx","../src/icons/states/checkbox.tsx","../src/icons/states/check-cirlcle-empty.tsx","../src/icons/states/check-circle.tsx","../src/icons/states/fire.tsx","../src/icons/states/insight.tsx","../src/icons/states/not-fire.tsx","../src/icons/states/read.tsx","../src/icons/states/unread.tsx","../src/icons/system/account.tsx","../src/icons/system/add.tsx","../src/icons/system/arrow.tsx","../src/icons/system/calendar.tsx","../src/icons/system/close.tsx","../src/icons/system/compact-density.tsx","../src/icons/system/copy.tsx","../src/icons/system/dark.tsx","../src/icons/system/external-link.tsx","../src/icons/system/light.tsx","../src/icons/system/minus.tsx","../src/icons/system/more.tsx","../src/icons/system/normal-density.tsx","../src/icons/system/search.tsx","../src/icons/system/summary.tsx","../src/icons/system/system.tsx","../src/components/badge/badge.tsx","../src/components/card/card.tsx","../src/components/card/card-layout.tsx","../src/components/card/card-sidebar.tsx","../src/components/card/card-header.tsx","../src/components/card/card-title.tsx","../src/components/card/card-content.tsx","../src/components/card/card-footer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/rich-content/rich-content.tsx","../src/patterns/avatar/types/avatar.ts","../src/patterns/avatar/avatar.tsx","../src/patterns/badges/status-badge.tsx","../src/components/skeleton/skeleton.tsx","../src/patterns/bulk-actions/bulk-actions-skeleton.tsx","../src/patterns/buttons/icon-button/icon-button.tsx","../src/patterns/tooltips/info-tooltip.tsx","../src/patterns/bulk-actions/bulk-actions.tsx","../src/patterns/buttons/filter-button/filter-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button-skeleton.tsx","../src/patterns/buttons/icon-count-button/icon-count-button.tsx","../src/patterns/dropdowns/action-menu/action-menu.tsx","../src/patterns/dropdowns/date-picker/date-picker.tsx","../src/types/sizes.ts","../src/patterns/event-card/event-card-skeleton.tsx","../src/patterns/event-card/event-card.tsx","../src/patterns/event-detail/event-detail-priority.tsx","../src/patterns/event-detail/event-detail-summary.tsx","../src/patterns/event-detail/event-detail-content-header.tsx","../src/patterns/event-detail/event-detail-content-calendar.tsx","../src/patterns/event-detail/event-detail-content-email.tsx","../src/patterns/event-detail/event-detail-content-message.tsx","../src/patterns/event-detail/event-detail-content-ticket.tsx","../src/patterns/event-detail/event-detail-header.tsx","../src/patterns/event-detail/event-detail-skeleton.tsx","../src/patterns/event-detail/event-detail.tsx","../src/patterns/filter-bar/filter-bar-skeleton.tsx","../src/patterns/filter-bar/filter-bar.tsx","../src/patterns/layout/divider.tsx","../src/patterns/integration-bar/integration-bar-skeleton.tsx","../src/patterns/integration-bar/integration-bar.tsx","../src/patterns/search-input/search-input.tsx"],"sourcesContent":["/**\n * Brand color tokens\n *\n * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css\n *\n * The single source of truth is src/styles/tailwind.css (@theme directive).\n * These TypeScript tokens are provided for programmatic access in components.\n *\n * When updating colors:\n * 1. Update the value in src/styles/tailwind.css first\n * 2. Then update the corresponding value here to keep them in sync\n *\n * Usage:\n * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)\n * - For programmatic access: Import and use these tokens\n */\nexport const colors = {\n brandPrimary: \"#6558fd\", // Must match --color-brand-primary in tailwind.css\n brandSecondary: \"#ceff1a\", // Must match --color-brand-secondary in tailwind.css\n} as const;\n","/**\n * Calendar utility functions using native Date API\n */\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\nconst WEEKDAYS = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"] as const;\n\n/**\n * Get the number of days in a given month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n // month is 0-indexed (0 = January, 11 = December)\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n * Returns 0-6 where 0 is Sunday\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)\n * Sunday (0) becomes 6, Monday (1) becomes 0, etc.\n */\nexport function toMondayBased(dayOfWeek: number): number {\n return dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n}\n\n/**\n * Format a date to \"Dec 3, 2025\" format\n */\nexport function formatDate(date: Date | null): string {\n if (!date) return \"\";\n const monthName = MONTH_NAMES[date.getMonth()] ?? \"\";\n const monthAbbr = monthName.substring(0, 3);\n const day = date.getDate();\n const year = date.getFullYear();\n return `${monthAbbr} ${day}, ${year}`;\n}\n\n/**\n * Parse MM/DD/YYYY format to Date\n */\nexport function parseDate(dateString: string): Date | null {\n if (!dateString) return null;\n const parts = dateString.split(\"/\");\n if (parts.length !== 3) return null;\n const month = parseInt(parts[0], 10) - 1; // 0-indexed\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n // Validate the date\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\n/**\n * Check if two dates are the same day\n */\nexport function isSameDay(date1: Date | null, date2: Date | null): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/**\n * Check if a date is today\n */\nexport function isToday(date: Date): boolean {\n const today = new Date();\n return isSameDay(date, today);\n}\n\n/**\n * Check if date1 is before date2 (ignoring time)\n */\nexport function isDateBefore(date1: Date, date2: Date): boolean {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1 < d2;\n}\n\n/**\n * Check if a date is within a range (inclusive)\n */\nexport function isDateInRange(\n date: Date,\n startDate: Date | null,\n endDate: Date | null\n): boolean {\n if (!startDate || !endDate) return false;\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const start = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n );\n const end = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n return d >= start && d <= end;\n}\n\n/**\n * Format a date or date range for display\n * Single day: \"Dec 3, 2025\"\n * Same year range: \"Jan 5 - Jan 17, 2026\"\n * Different years: \"Nov 5, 2025 - Jan 17, 2026\"\n */\nexport function formatDateRange(\n startDate: Date | null,\n endDate: Date | null\n): string {\n if (!startDate) return \"\";\n\n // If only start date exists, treat as single date\n if (!endDate) {\n return formatSingleDate(startDate);\n }\n\n const isSameDay =\n startDate.getFullYear() === endDate.getFullYear() &&\n startDate.getMonth() === endDate.getMonth() &&\n startDate.getDate() === endDate.getDate();\n\n if (isSameDay) {\n return formatSingleDate(startDate);\n }\n\n const startMonth = MONTH_NAMES[startDate.getMonth()]?.substring(0, 3) ?? \"\";\n const startDay = startDate.getDate();\n const startYear = startDate.getFullYear();\n\n const endMonth = MONTH_NAMES[endDate.getMonth()]?.substring(0, 3) ?? \"\";\n const endDay = endDate.getDate();\n const endYear = endDate.getFullYear();\n\n if (startYear === endYear) {\n return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n }\n\n return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n}\n\n/**\n * Format a single date\n * \"Dec 3, 2025\"\n */\nfunction formatSingleDate(date: Date): string {\n const month = MONTH_NAMES[date.getMonth()]?.substring(0, 3) ?? \"\";\n const day = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${day}, ${year}`;\n}\n\n/**\n * Get month name\n */\nexport function getMonthName(month: number): string {\n return MONTH_NAMES[month] ?? \"\";\n}\n\n/**\n * Get weekday labels\n */\nexport function getWeekdays(): readonly string[] {\n return WEEKDAYS;\n}\n\n/**\n * Calendar day metadata\n */\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n};\n\n/**\n * Generate a full calendar grid with days from previous, current, and next month\n * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)\n * The first column is always Monday\n */\nexport function generateCalendarDays(\n year: number,\n month: number\n): CalendarDay[] {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayMondayBased = toMondayBased(getFirstDayOfMonth(year, month));\n\n const days: CalendarDay[] = [];\n\n // Add days from previous month\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\n\n // Start from the day that fills the first empty slot\n const startDayPrevMonth = daysInPrevMonth - firstDayMondayBased + 1;\n for (let day = startDayPrevMonth; day <= daysInPrevMonth; day++) {\n days.push({\n date: new Date(prevYear, prevMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n // Add all days from current month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push({\n date: new Date(year, month, day),\n day,\n isCurrentMonth: true,\n });\n }\n\n // Calculate how many days from next month are needed to complete the grid\n const totalDays = days.length;\n const remainingDays = (7 - (totalDays % 7)) % 7; // Ensure we get a multiple of 7\n\n // Add days from next month\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= remainingDays; day++) {\n days.push({\n date: new Date(nextYear, nextMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n return days;\n}\n","import clsx, { type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const capitalize = (s: string) => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport function stringHash(input: string): number {\n let hash = 0;\n\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash) + i * 31;\n }\n\n return hash + input.length * 997;\n}\n\nexport function getInitials(value: string) {\n const parts = value.trim().split(/\\s+/);\n const initials =\n parts.length >= 2\n ? parts[0][0] + parts[1][0]\n : (parts[0]?.substring(0, 2) ?? \"\");\n\n return initials.toUpperCase();\n}\n","import { stringHash } from \"./string\";\n\nexport function pickColorFromPalette<T>(\n value: string,\n palette: readonly T[]\n): T {\n const normalized = value.trim().toLowerCase();\n const hash = stringHash(normalized);\n const index = Math.abs(hash) % palette.length;\n return palette[index];\n}\n","import { useRef } from \"react\";\n\nexport function useLongPress(\n onLongPress: () => void,\n onClick: () => void,\n delay = 450\n) {\n const timer = useRef<number | null>(null);\n const isLongPress = useRef(false);\n\n const start = () => {\n isLongPress.current = false;\n timer.current = window.setTimeout(() => {\n onLongPress();\n isLongPress.current = true;\n }, delay);\n };\n\n const clear = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n\n const click = () => {\n if (!isLongPress.current) {\n onClick();\n }\n };\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onClick: click,\n };\n}\n","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","{\n \"😀\": [\n \"grinning_face\",\n \"face\",\n \"smile\",\n \"happy\",\n \"joy\",\n \":D\",\n \"grin\",\n \"smiley\"\n ],\n \"😃\": [\n \"grinning_face_with_big_eyes\",\n \"face\",\n \"happy\",\n \"joy\",\n \"haha\",\n \":D\",\n \":)\",\n \"smile\",\n \"funny\",\n \"mouth\",\n \"open\",\n \"smiley\",\n \"smiling\"\n ],\n \"😄\": [\n \"grinning_face_with_smiling_eyes\",\n \"face\",\n \"happy\",\n \"joy\",\n \"funny\",\n \"haha\",\n \"laugh\",\n \"like\",\n \":D\",\n \":)\",\n \"smile\",\n \"eye\",\n \"grin\",\n \"mouth\",\n \"open\",\n \"pleased\",\n \"smiley\"\n ],\n \"😁\": [\n \"beaming_face_with_smiling_eyes\",\n \"face\",\n \"happy\",\n \"smile\",\n \"joy\",\n \"kawaii\",\n \"eye\",\n \"grin\",\n \"grinning\"\n ],\n \"😆\": [\n \"grinning_squinting_face\",\n \"happy\",\n \"joy\",\n \"lol\",\n \"satisfied\",\n \"haha\",\n \"face\",\n \"glad\",\n \"XD\",\n \"laugh\",\n \"big\",\n \"closed\",\n \"eyes\",\n \"grin\",\n \"laughing\",\n \"mouth\",\n \"open\",\n \"smile\",\n \"smiling\",\n \"tightly\"\n ],\n \"😅\": [\n \"grinning_face_with_sweat\",\n \"face\",\n \"hot\",\n \"happy\",\n \"laugh\",\n \"sweat\",\n \"smile\",\n \"relief\",\n \"cold\",\n \"exercise\",\n \"mouth\",\n \"open\",\n \"smiling\"\n ],\n \"🤣\": [\n \"rolling_on_the_floor_laughing\",\n \"face\",\n \"rolling\",\n \"floor\",\n \"laughing\",\n \"lol\",\n \"haha\",\n \"rofl\",\n \"laugh\",\n \"rotfl\"\n ],\n \"😂\": [\n \"face_with_tears_of_joy\",\n \"face\",\n \"cry\",\n \"tears\",\n \"weep\",\n \"happy\",\n \"happytears\",\n \"haha\",\n \"crying\",\n \"laugh\",\n \"laughing\",\n \"lol\",\n \"tear\"\n ],\n \"🙂\": [\n \"slightly_smiling_face\",\n \"face\",\n \"smile\",\n \"fine\",\n \"happy\",\n \"this\"\n ],\n \"🙃\": [\n \"upside_down_face\",\n \"face\",\n \"flipped\",\n \"silly\",\n \"smile\",\n \"sarcasm\"\n ],\n \"😉\": [\n \"winking_face\",\n \"face\",\n \"happy\",\n \"mischievous\",\n \"secret\",\n \";)\",\n \"smile\",\n \"eye\",\n \"flirt\",\n \"wink\",\n \"winky\"\n ],\n \"😊\": [\n \"smiling_face_with_smiling_eyes\",\n \"face\",\n \"smile\",\n \"happy\",\n \"flushed\",\n \"crush\",\n \"embarrassed\",\n \"shy\",\n \"joy\",\n \"^^\",\n \"blush\",\n \"eye\",\n \"proud\",\n \"smiley\"\n ],\n \"😇\": [\n \"smiling_face_with_halo\",\n \"face\",\n \"angel\",\n \"heaven\",\n \"halo\",\n \"innocent\",\n \"fairy\",\n \"fantasy\",\n \"smile\",\n \"tale\"\n ],\n \"🥰\": [\n \"smiling_face_with_hearts\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"crush\",\n \"hearts\",\n \"adore\",\n \"eyes\",\n \"three\"\n ],\n \"😍\": [\n \"smiling_face_with_heart_eyes\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"crush\",\n \"heart\",\n \"eye\",\n \"shaped\",\n \"smile\"\n ],\n \"🤩\": [\n \"star_struck\",\n \"face\",\n \"smile\",\n \"starry\",\n \"eyes\",\n \"grinning\",\n \"excited\",\n \"eyed\",\n \"wow\"\n ],\n \"😘\": [\n \"face_blowing_a_kiss\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"blow\",\n \"flirt\",\n \"heart\",\n \"kissing\",\n \"throwing\"\n ],\n \"😗\": [\n \"kissing_face\",\n \"love\",\n \"like\",\n \"face\",\n \"3\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"duck\",\n \"kissy\",\n \"whistling\"\n ],\n \"☺️\": [\n \"smiling_face\",\n \"face\",\n \"blush\",\n \"massage\",\n \"happiness\",\n \"happy\",\n \"outlined\",\n \"pleased\",\n \"relaxed\",\n \"smile\",\n \"smiley\",\n \"white\"\n ],\n \"😚\": [\n \"kissing_face_with_closed_eyes\",\n \"face\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"eye\",\n \"kissy\"\n ],\n \"😙\": [\n \"kissing_face_with_smiling_eyes\",\n \"face\",\n \"affection\",\n \"valentines\",\n \"infatuation\",\n \"kiss\",\n \"eye\",\n \"kissy\",\n \"smile\",\n \"whistle\",\n \"whistling\"\n ],\n \"😋\": [\n \"face_savoring_food\",\n \"happy\",\n \"joy\",\n \"tongue\",\n \"smile\",\n \"face\",\n \"silly\",\n \"yummy\",\n \"nom\",\n \"delicious\",\n \"savouring\",\n \"goofy\",\n \"hungry\",\n \"lick\",\n \"licking\",\n \"lips\",\n \"smiling\",\n \"um\",\n \"yum\"\n ],\n \"😛\": [\n \"face_with_tongue\",\n \"face\",\n \"prank\",\n \"childish\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"tongue\",\n \"cheeky\",\n \"out\",\n \"stuck\"\n ],\n \"😜\": [\n \"winking_face_with_tongue\",\n \"face\",\n \"prank\",\n \"childish\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"wink\",\n \"tongue\",\n \"crazy\",\n \"eye\",\n \"joke\",\n \"out\",\n \"silly\",\n \"stuck\"\n ],\n \"🤪\": [\n \"zany_face\",\n \"face\",\n \"goofy\",\n \"crazy\",\n \"excited\",\n \"eye\",\n \"eyes\",\n \"grinning\",\n \"large\",\n \"one\",\n \"small\",\n \"wacky\",\n \"wild\"\n ],\n \"😝\": [\n \"squinting_face_with_tongue\",\n \"face\",\n \"prank\",\n \"playful\",\n \"mischievous\",\n \"smile\",\n \"tongue\",\n \"closed\",\n \"eye\",\n \"eyes\",\n \"horrible\",\n \"out\",\n \"stuck\",\n \"taste\",\n \"tightly\"\n ],\n \"🤑\": [\n \"money_mouth_face\",\n \"face\",\n \"rich\",\n \"dollar\",\n \"money\",\n \"eyes\",\n \"sign\"\n ],\n \"🤗\": [\n \"hugging_face\",\n \"face\",\n \"smile\",\n \"hug\",\n \"hands\",\n \"hugs\",\n \"open\",\n \"smiling\"\n ],\n \"🤭\": [\n \"face_with_hand_over_mouth\",\n \"face\",\n \"whoops\",\n \"shock\",\n \"surprise\",\n \"blushing\",\n \"covering\",\n \"eyes\",\n \"quiet\",\n \"smiling\"\n ],\n \"🤫\": [\n \"shushing_face\",\n \"face\",\n \"quiet\",\n \"shhh\",\n \"closed\",\n \"covering\",\n \"finger\",\n \"hush\",\n \"lips\",\n \"shh\",\n \"shush\",\n \"silence\"\n ],\n \"🤔\": [\n \"thinking_face\",\n \"face\",\n \"hmmm\",\n \"think\",\n \"consider\",\n \"chin\",\n \"shade\",\n \"thinker\",\n \"throwing\",\n \"thumb\"\n ],\n \"🤐\": [\n \"zipper_mouth_face\",\n \"face\",\n \"sealed\",\n \"zipper\",\n \"secret\",\n \"hush\",\n \"lips\",\n \"silence\",\n \"zip\"\n ],\n \"🤨\": [\n \"face_with_raised_eyebrow\",\n \"face\",\n \"distrust\",\n \"scepticism\",\n \"disapproval\",\n \"disbelief\",\n \"surprise\",\n \"suspicious\",\n \"colbert\",\n \"mild\",\n \"one\",\n \"rock\",\n \"skeptic\"\n ],\n \"😐\": [\n \"neutral_face\",\n \"indifference\",\n \"meh\",\n \":|\",\n \"neutral\",\n \"deadpan\",\n \"faced\",\n \"mouth\",\n \"straight\"\n ],\n \"😑\": [\n \"expressionless_face\",\n \"face\",\n \"indifferent\",\n \"-_-\",\n \"meh\",\n \"deadpan\",\n \"inexpressive\",\n \"mouth\",\n \"straight\",\n \"unexpressive\"\n ],\n \"😶\": [\n \"face_without_mouth\",\n \"face\",\n \"blank\",\n \"mouthless\",\n \"mute\",\n \"no\",\n \"quiet\",\n \"silence\",\n \"silent\"\n ],\n \"😏\": [\n \"smirking_face\",\n \"face\",\n \"smile\",\n \"mean\",\n \"prank\",\n \"smug\",\n \"sarcasm\",\n \"flirting\",\n \"sexual\",\n \"smirk\",\n \"suggestive\"\n ],\n \"😒\": [\n \"unamused_face\",\n \"indifference\",\n \"bored\",\n \"straight face\",\n \"serious\",\n \"sarcasm\",\n \"unimpressed\",\n \"skeptical\",\n \"dubious\",\n \"ugh\",\n \"side_eye\",\n \"dissatisfied\",\n \"meh\",\n \"unhappy\"\n ],\n \"🙄\": [\n \"face_with_rolling_eyes\",\n \"face\",\n \"eyeroll\",\n \"frustrated\",\n \"eye\",\n \"roll\"\n ],\n \"😬\": [\n \"grimacing_face\",\n \"face\",\n \"grimace\",\n \"teeth\",\n \"awkward\",\n \"eek\",\n \"nervous\"\n ],\n \"🤥\": [\n \"lying_face\",\n \"face\",\n \"lie\",\n \"pinocchio\",\n \"liar\",\n \"long\",\n \"nose\"\n ],\n \"😌\": [\n \"relieved_face\",\n \"face\",\n \"relaxed\",\n \"phew\",\n \"massage\",\n \"happiness\",\n \"content\",\n \"pleased\",\n \"whew\"\n ],\n \"😔\": [\n \"pensive_face\",\n \"face\",\n \"sad\",\n \"depressed\",\n \"upset\",\n \"dejected\",\n \"sadface\",\n \"sorrowful\"\n ],\n \"😪\": [\n \"sleepy_face\",\n \"face\",\n \"tired\",\n \"rest\",\n \"nap\",\n \"bubble\",\n \"side\",\n \"sleep\",\n \"snot\",\n \"tear\"\n ],\n \"🤤\": [\n \"drooling_face\",\n \"face\",\n \"drool\"\n ],\n \"😴\": [\n \"sleeping_face\",\n \"face\",\n \"tired\",\n \"sleepy\",\n \"night\",\n \"zzz\",\n \"sleep\",\n \"snoring\"\n ],\n \"😷\": [\n \"face_with_medical_mask\",\n \"face\",\n \"sick\",\n \"ill\",\n \"disease\",\n \"covid\",\n \"cold\",\n \"coronavirus\",\n \"doctor\",\n \"medicine\",\n \"surgical\"\n ],\n \"🤒\": [\n \"face_with_thermometer\",\n \"sick\",\n \"temperature\",\n \"thermometer\",\n \"cold\",\n \"fever\",\n \"covid\",\n \"ill\"\n ],\n \"🤕\": [\n \"face_with_head_bandage\",\n \"injured\",\n \"clumsy\",\n \"bandage\",\n \"hurt\",\n \"bandaged\",\n \"injury\"\n ],\n \"🤢\": [\n \"nauseated_face\",\n \"face\",\n \"vomit\",\n \"gross\",\n \"green\",\n \"sick\",\n \"throw up\",\n \"ill\",\n \"barf\",\n \"disgust\",\n \"disgusted\",\n \"green face\"\n ],\n \"🤮\": [\n \"face_vomiting\",\n \"face\",\n \"sick\",\n \"barf\",\n \"ill\",\n \"mouth\",\n \"open\",\n \"puke\",\n \"spew\",\n \"throwing\",\n \"up\",\n \"vomit\"\n ],\n \"🤧\": [\n \"sneezing_face\",\n \"face\",\n \"gesundheit\",\n \"sneeze\",\n \"sick\",\n \"allergy\",\n \"achoo\"\n ],\n \"🥵\": [\n \"hot_face\",\n \"face\",\n \"feverish\",\n \"heat\",\n \"red\",\n \"sweating\",\n \"overheated\",\n \"stroke\"\n ],\n \"🥶\": [\n \"cold_face\",\n \"face\",\n \"blue\",\n \"freezing\",\n \"frozen\",\n \"frostbite\",\n \"icicles\",\n \"ice\"\n ],\n \"🥴\": [\n \"woozy_face\",\n \"face\",\n \"dizzy\",\n \"intoxicated\",\n \"tipsy\",\n \"wavy\",\n \"drunk\",\n \"eyes\",\n \"groggy\",\n \"mouth\",\n \"uneven\"\n ],\n \"😵\": [\n \"dizzy_face\",\n \"spent\",\n \"unconscious\",\n \"xox\",\n \"dizzy\",\n \"cross\",\n \"crossed\",\n \"dead\",\n \"eyes\",\n \"knocked\",\n \"out\",\n \"spiral eyes\"\n ],\n \"🤯\": [\n \"exploding_head\",\n \"face\",\n \"shocked\",\n \"mind\",\n \"blown\",\n \"blowing\",\n \"explosion\",\n \"mad\"\n ],\n \"🤠\": [\n \"cowboy_hat_face\",\n \"face\",\n \"cowgirl\",\n \"hat\"\n ],\n \"🥳\": [\n \"partying_face\",\n \"face\",\n \"celebration\",\n \"woohoo\",\n \"birthday\",\n \"hat\",\n \"horn\",\n \"party\"\n ],\n \"😎\": [\n \"smiling_face_with_sunglasses\",\n \"face\",\n \"cool\",\n \"smile\",\n \"summer\",\n \"beach\",\n \"sunglass\",\n \"best\",\n \"bright\",\n \"eye\",\n \"eyewear\",\n \"friends\",\n \"glasses\",\n \"mutual\",\n \"snapchat\",\n \"sun\",\n \"weather\"\n ],\n \"🤓\": [\n \"nerd_face\",\n \"face\",\n \"nerdy\",\n \"geek\",\n \"dork\",\n \"glasses\",\n \"smiling\"\n ],\n \"🧐\": [\n \"face_with_monocle\",\n \"face\",\n \"stuffy\",\n \"wealthy\",\n \"rich\",\n \"exploration\",\n \"inspection\"\n ],\n \"😕\": [\n \"confused_face\",\n \"face\",\n \"indifference\",\n \"huh\",\n \"weird\",\n \"hmmm\",\n \":/\",\n \"meh\",\n \"nonplussed\",\n \"puzzled\",\n \"s\"\n ],\n \"😟\": [\n \"worried_face\",\n \"face\",\n \"concern\",\n \"nervous\",\n \":(\",\n \"sad\",\n \"sadface\"\n ],\n \"🙁\": [\n \"slightly_frowning_face\",\n \"face\",\n \"frowning\",\n \"disappointed\",\n \"sad\",\n \"upset\",\n \"frown\",\n \"unhappy\"\n ],\n \"☹️\": [\n \"frowning_face\",\n \"face\",\n \"sad\",\n \"upset\",\n \"frown\",\n \"megafrown\",\n \"unhappy\",\n \"white\"\n ],\n \"😮\": [\n \"face_with_open_mouth\",\n \"face\",\n \"surprise\",\n \"impressed\",\n \"wow\",\n \"whoa\",\n \":O\",\n \"surprised\",\n \"sympathy\"\n ],\n \"😯\": [\n \"hushed_face\",\n \"face\",\n \"woo\",\n \"shh\",\n \"silence\",\n \"speechless\",\n \"stunned\",\n \"surprise\",\n \"surprised\"\n ],\n \"😲\": [\n \"astonished_face\",\n \"face\",\n \"xox\",\n \"surprised\",\n \"poisoned\",\n \"amazed\",\n \"drunk face\",\n \"gasp\",\n \"gasping\",\n \"shocked\",\n \"totally\"\n ],\n \"😳\": [\n \"flushed_face\",\n \"face\",\n \"blush\",\n \"shy\",\n \"flattered\",\n \"blushing\",\n \"dazed\",\n \"embarrassed\",\n \"eyes\",\n \"open\",\n \"shame\",\n \"wide\"\n ],\n \"🥺\": [\n \"pleading_face\",\n \"face\",\n \"begging\",\n \"mercy\",\n \"cry\",\n \"tears\",\n \"sad\",\n \"grievance\",\n \"eyes\",\n \"glossy\",\n \"puppy\",\n \"simp\"\n ],\n \"😦\": [\n \"frowning_face_with_open_mouth\",\n \"face\",\n \"aw\",\n \"what\",\n \"frown\",\n \"yawning\"\n ],\n \"😧\": [\n \"anguished_face\",\n \"face\",\n \"stunned\",\n \"nervous\",\n \"pained\"\n ],\n \"😨\": [\n \"fearful_face\",\n \"face\",\n \"scared\",\n \"terrified\",\n \"nervous\",\n \"fear\",\n \"oops\",\n \"shocked\",\n \"surprised\"\n ],\n \"😰\": [\n \"anxious_face_with_sweat\",\n \"face\",\n \"nervous\",\n \"sweat\",\n \"blue\",\n \"cold\",\n \"concerned face\",\n \"mouth\",\n \"open\",\n \"rushed\"\n ],\n \"😥\": [\n \"sad_but_relieved_face\",\n \"face\",\n \"phew\",\n \"sweat\",\n \"nervous\",\n \"disappointed\",\n \"eyebrow\",\n \"whew\"\n ],\n \"😢\": [\n \"crying_face\",\n \"face\",\n \"tears\",\n \"sad\",\n \"depressed\",\n \"upset\",\n \":'(\",\n \"cry\",\n \"tear\"\n ],\n \"😭\": [\n \"loudly_crying_face\",\n \"sobbing\",\n \"face\",\n \"cry\",\n \"tears\",\n \"sad\",\n \"upset\",\n \"depressed\",\n \"bawling\",\n \"sob\",\n \"tear\"\n ],\n \"😱\": [\n \"face_screaming_in_fear\",\n \"face\",\n \"munch\",\n \"scared\",\n \"omg\",\n \"alone\",\n \"fearful\",\n \"home\",\n \"horror\",\n \"scream\",\n \"shocked\"\n ],\n \"😖\": [\n \"confounded_face\",\n \"face\",\n \"confused\",\n \"sick\",\n \"unwell\",\n \"oops\",\n \":S\",\n \"mouth\",\n \"quivering\",\n \"scrunched\"\n ],\n \"😣\": [\n \"persevering_face\",\n \"face\",\n \"sick\",\n \"no\",\n \"upset\",\n \"oops\",\n \"eyes\",\n \"helpless\",\n \"persevere\",\n \"scrunched\",\n \"struggling\"\n ],\n \"😞\": [\n \"disappointed_face\",\n \"face\",\n \"sad\",\n \"upset\",\n \"depressed\",\n \":(\",\n \"sadface\"\n ],\n \"😓\": [\n \"downcast_face_with_sweat\",\n \"face\",\n \"hot\",\n \"sad\",\n \"tired\",\n \"exercise\",\n \"cold\",\n \"hard\",\n \"work\"\n ],\n \"😩\": [\n \"weary_face\",\n \"face\",\n \"tired\",\n \"sleepy\",\n \"sad\",\n \"frustrated\",\n \"upset\",\n \"distraught\",\n \"wailing\"\n ],\n \"😫\": [\n \"tired_face\",\n \"sick\",\n \"whine\",\n \"upset\",\n \"frustrated\",\n \"distraught\",\n \"exhausted\",\n \"fed\",\n \"up\"\n ],\n \"🥱\": [\n \"yawning_face\",\n \"tired\",\n \"sleepy\",\n \"bored\",\n \"yawn\"\n ],\n \"😤\": [\n \"face_with_steam_from_nose\",\n \"face\",\n \"gas\",\n \"phew\",\n \"proud\",\n \"pride\",\n \"triumph\",\n \"airing\",\n \"frustrated\",\n \"grievances\",\n \"look\",\n \"mad\",\n \"smug\",\n \"steaming\",\n \"won\"\n ],\n \"😡\": [\n \"pouting_face\",\n \"angry\",\n \"mad\",\n \"hate\",\n \"despise\",\n \"enraged\",\n \"grumpy\",\n \"pout\",\n \"rage\",\n \"red\"\n ],\n \"😠\": [\n \"angry_face\",\n \"mad\",\n \"face\",\n \"annoyed\",\n \"frustrated\",\n \"anger\",\n \"grumpy\"\n ],\n \"🤬\": [\n \"face_with_symbols_on_mouth\",\n \"face\",\n \"swearing\",\n \"cursing\",\n \"cussing\",\n \"profanity\",\n \"expletive\",\n \"covering\",\n \"foul\",\n \"grawlix\",\n \"over\",\n \"serious\"\n ],\n \"😈\": [\n \"smiling_face_with_horns\",\n \"devil\",\n \"horns\",\n \"evil\",\n \"fairy\",\n \"fantasy\",\n \"happy\",\n \"imp\",\n \"purple\",\n \"red devil\",\n \"smile\",\n \"tale\"\n ],\n \"👿\": [\n \"angry_face_with_horns\",\n \"devil\",\n \"angry\",\n \"horns\",\n \"demon\",\n \"evil\",\n \"fairy\",\n \"fantasy\",\n \"goblin\",\n \"imp\",\n \"purple\",\n \"sad\",\n \"tale\"\n ],\n \"💀\": [\n \"skull\",\n \"dead\",\n \"skeleton\",\n \"creepy\",\n \"death\",\n \"dead\",\n \"body\",\n \"danger\",\n \"face\",\n \"fairy\",\n \"grey\",\n \"halloween\",\n \"monster\",\n \"poison\",\n \"tale\"\n ],\n \"☠️\": [\n \"skull_and_crossbones\",\n \"poison\",\n \"danger\",\n \"deadly\",\n \"scary\",\n \"death\",\n \"pirate\",\n \"evil\",\n \"body\",\n \"face\",\n \"halloween\",\n \"monster\"\n ],\n \"💩\": [\n \"pile_of_poo\",\n \"hankey\",\n \"shitface\",\n \"fail\",\n \"turd\",\n \"shit\",\n \"comic\",\n \"crap\",\n \"dirt\",\n \"dog\",\n \"dung\",\n \"face\",\n \"monster\",\n \"poop\",\n \"smiling\",\n \"bad\",\n \"needs_improvement\"\n ],\n \"🤡\": [\n \"clown_face\",\n \"face\",\n \"mock\"\n ],\n \"👹\": [\n \"ogre\",\n \"monster\",\n \"red\",\n \"mask\",\n \"halloween\",\n \"scary\",\n \"creepy\",\n \"devil\",\n \"demon\",\n \"japanese_ogre\",\n \"creature\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"oni\",\n \"tale\",\n \"shrek\"\n ],\n \"👺\": [\n \"goblin\",\n \"red\",\n \"evil\",\n \"mask\",\n \"monster\",\n \"scary\",\n \"creepy\",\n \"japanese_goblin\",\n \"creature\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"long\",\n \"nose\",\n \"tale\",\n \"tengu\"\n ],\n \"👻\": [\n \"ghost\",\n \"halloween\",\n \"spooky\",\n \"scary\",\n \"creature\",\n \"disappear\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"ghoul\",\n \"monster\",\n \"tale\"\n ],\n \"👽\": [\n \"alien\",\n \"UFO\",\n \"paul\",\n \"weird\",\n \"outer_space\",\n \"creature\",\n \"et\",\n \"extraterrestrial\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"monster\",\n \"tale\",\n \"external\"\n ],\n \"👾\": [\n \"alien_monster\",\n \"game\",\n \"arcade\",\n \"play\",\n \"creature\",\n \"extraterrestrial\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"invader\",\n \"retro\",\n \"space\",\n \"tale\",\n \"ufo\",\n \"video\"\n ],\n \"🤖\": [\n \"robot\",\n \"computer\",\n \"machine\",\n \"bot\",\n \"face\",\n \"monster\"\n ],\n \"😺\": [\n \"grinning_cat\",\n \"animal\",\n \"cats\",\n \"happy\",\n \"smile\",\n \"face\",\n \"mouth\",\n \"open\",\n \"smiley\",\n \"smiling\"\n ],\n \"😸\": [\n \"grinning_cat_with_smiling_eyes\",\n \"animal\",\n \"cats\",\n \"smile\",\n \"eye\",\n \"face\",\n \"grin\",\n \"happy\"\n ],\n \"😹\": [\n \"cat_with_tears_of_joy\",\n \"animal\",\n \"cats\",\n \"haha\",\n \"happy\",\n \"tears\",\n \"face\",\n \"laughing\",\n \"tear\"\n ],\n \"😻\": [\n \"smiling_cat_with_heart_eyes\",\n \"animal\",\n \"love\",\n \"like\",\n \"affection\",\n \"cats\",\n \"valentines\",\n \"heart\",\n \"eye\",\n \"face\",\n \"loving cat\",\n \"shaped\",\n \"smile\"\n ],\n \"😼\": [\n \"cat_with_wry_smile\",\n \"animal\",\n \"cats\",\n \"smirk\",\n \"face\",\n \"ironic\",\n \"smirking\"\n ],\n \"😽\": [\n \"kissing_cat\",\n \"animal\",\n \"cats\",\n \"kiss\",\n \"closed\",\n \"eye\",\n \"eyes\",\n \"face\"\n ],\n \"🙀\": [\n \"weary_cat\",\n \"animal\",\n \"cats\",\n \"munch\",\n \"scared\",\n \"scream\",\n \"face\",\n \"fear\",\n \"horror\",\n \"oh\",\n \"screaming\",\n \"surprised\"\n ],\n \"😿\": [\n \"crying_cat\",\n \"animal\",\n \"tears\",\n \"weep\",\n \"sad\",\n \"cats\",\n \"upset\",\n \"cry\",\n \"face\",\n \"sad cat\",\n \"tear\"\n ],\n \"😾\": [\n \"pouting_cat\",\n \"animal\",\n \"cats\",\n \"face\",\n \"grumpy\"\n ],\n \"🙈\": [\n \"see_no_evil_monkey\",\n \"monkey\",\n \"animal\",\n \"nature\",\n \"haha\",\n \"blind\",\n \"covering\",\n \"eyes\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"ignore\",\n \"mizaru\",\n \"not\",\n \"prohibited\"\n ],\n \"🙉\": [\n \"hear_no_evil_monkey\",\n \"animal\",\n \"monkey\",\n \"nature\",\n \"covering\",\n \"deaf\",\n \"ears\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"kikazaru\",\n \"not\",\n \"prohibited\"\n ],\n \"🙊\": [\n \"speak_no_evil_monkey\",\n \"monkey\",\n \"animal\",\n \"nature\",\n \"omg\",\n \"covering\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"hush\",\n \"iwazaru\",\n \"mouth\",\n \"mute\",\n \"not\",\n \"no speaking\",\n \"prohibited\",\n \"ignore\"\n ],\n \"💋\": [\n \"kiss_mark\",\n \"face\",\n \"lips\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"kissing\",\n \"lipstick\",\n \"romance\"\n ],\n \"💌\": [\n \"love_letter\",\n \"email\",\n \"like\",\n \"affection\",\n \"envelope\",\n \"valentines\",\n \"heart\",\n \"mail\",\n \"note\",\n \"romance\"\n ],\n \"💘\": [\n \"heart_with_arrow\",\n \"love\",\n \"like\",\n \"heart\",\n \"affection\",\n \"valentines\",\n \"cupid\",\n \"lovestruck\",\n \"romance\"\n ],\n \"💝\": [\n \"heart_with_ribbon\",\n \"love\",\n \"valentines\",\n \"box\",\n \"chocolate\",\n \"chocolates\",\n \"gift\",\n \"valentine\"\n ],\n \"💖\": [\n \"sparkling_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"excited\",\n \"sparkle\",\n \"sparkly\",\n \"stars heart\"\n ],\n \"💗\": [\n \"growing_heart\",\n \"like\",\n \"love\",\n \"affection\",\n \"valentines\",\n \"pink\",\n \"excited\",\n \"heartpulse\",\n \"multiple\",\n \"nervous\",\n \"pulse\",\n \"triple\"\n ],\n \"💓\": [\n \"beating_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"pink\",\n \"heart\",\n \"alarm\",\n \"heartbeat\",\n \"pulsating\",\n \"wifi\"\n ],\n \"💞\": [\n \"revolving_hearts\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"two\"\n ],\n \"💕\": [\n \"two_hearts\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"heart\",\n \"pink\",\n \"small\"\n ],\n \"💟\": [\n \"heart_decoration\",\n \"purple-square\",\n \"love\",\n \"like\"\n ],\n \"❣️\": [\n \"heart_exclamation\",\n \"decoration\",\n \"love\",\n \"above\",\n \"an\",\n \"as\",\n \"dot\",\n \"heavy\",\n \"mark\",\n \"ornament\",\n \"punctuation\",\n \"red\"\n ],\n \"💔\": [\n \"broken_heart\",\n \"sad\",\n \"sorry\",\n \"break\",\n \"heart\",\n \"heartbreak\",\n \"breaking\",\n \"brokenhearted\"\n ],\n \"❤️\": [\n \"red_heart\",\n \"love\",\n \"like\",\n \"valentines\",\n \"black\",\n \"heavy\"\n ],\n \"🧡\": [\n \"orange_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\"\n ],\n \"💛\": [\n \"yellow_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"bf\",\n \"gold\",\n \"snapchat\"\n ],\n \"💚\": [\n \"green_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"nct\"\n ],\n \"💙\": [\n \"blue_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"brand\",\n \"neutral\"\n ],\n \"💜\": [\n \"purple_heart\",\n \"love\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"bts\",\n \"emoji\"\n ],\n \"🤎\": [\n \"brown_heart\",\n \"coffee\"\n ],\n \"🖤\": [\n \"black_heart\",\n \"evil\",\n \"dark\",\n \"wicked\"\n ],\n \"🤍\": [\n \"white_heart\",\n \"pure\"\n ],\n \"💯\": [\n \"hundred_points\",\n \"score\",\n \"perfect\",\n \"numbers\",\n \"century\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"pass\",\n \"hundred\",\n \"100\",\n \"full\",\n \"keep\",\n \"symbol\"\n ],\n \"💢\": [\n \"anger_symbol\",\n \"angry\",\n \"mad\",\n \"comic\",\n \"pop\",\n \"sign\",\n \"vein\"\n ],\n \"💥\": [\n \"collision\",\n \"bomb\",\n \"explode\",\n \"explosion\",\n \"blown\",\n \"bang\",\n \"boom\",\n \"comic\",\n \"impact\",\n \"red\",\n \"spark\",\n \"symbol\",\n \"break\"\n ],\n \"💫\": [\n \"dizzy\",\n \"star\",\n \"sparkle\",\n \"shoot\",\n \"magic\",\n \"circle\",\n \"comic\",\n \"symbol\",\n \"animations\",\n \"transitions\"\n ],\n \"💦\": [\n \"sweat_droplets\",\n \"water\",\n \"drip\",\n \"oops\",\n \"comic\",\n \"drops\",\n \"plewds\",\n \"splashing\",\n \"symbol\",\n \"workout\"\n ],\n \"💨\": [\n \"dashing_away\",\n \"wind\",\n \"air\",\n \"fast\",\n \"shoo\",\n \"fart\",\n \"smoke\",\n \"puff\",\n \"blow\",\n \"comic\",\n \"dash\",\n \"gust\",\n \"running\",\n \"steam\",\n \"symbol\",\n \"vaping\"\n ],\n \"🕳️\": [\n \"hole\",\n \"embarrassing\"\n ],\n \"💣\": [\n \"bomb\",\n \"boom\",\n \"explode\",\n \"explosion\",\n \"terrorism\",\n \"comic\"\n ],\n \"💬\": [\n \"speech_balloon\",\n \"bubble\",\n \"words\",\n \"message\",\n \"talk\",\n \"chatting\",\n \"chat\",\n \"comic\",\n \"comment\",\n \"dialog\",\n \"text\",\n \"literals\"\n ],\n \"👁️‍🗨️\": [\n \"eye_in_speech_bubble\",\n \"info\",\n \"am\",\n \"i\",\n \"witness\"\n ],\n \"🗨️\": [\n \"left_speech_bubble\",\n \"words\",\n \"message\",\n \"talk\",\n \"chatting\",\n \"dialog\"\n ],\n \"🗯️\": [\n \"right_anger_bubble\",\n \"caption\",\n \"speech\",\n \"thinking\",\n \"mad\",\n \"angry\",\n \"balloon\",\n \"zag\",\n \"zig\"\n ],\n \"💭\": [\n \"thought_balloon\",\n \"bubble\",\n \"cloud\",\n \"speech\",\n \"thinking\",\n \"dream\",\n \"comic\"\n ],\n \"💤\": [\n \"zzz\",\n \"sleepy\",\n \"tired\",\n \"dream\",\n \"bedtime\",\n \"boring\",\n \"comic\",\n \"sign\",\n \"sleep\",\n \"sleeping\",\n \"symbol\"\n ],\n \"👋\": [\n \"waving_hand\",\n \"wave\",\n \"hands\",\n \"gesture\",\n \"goodbye\",\n \"solong\",\n \"farewell\",\n \"hello\",\n \"hi\",\n \"palm\",\n \"body\",\n \"sign\"\n ],\n \"🤚\": [\n \"raised_back_of_hand\",\n \"fingers\",\n \"raised\",\n \"backhand\",\n \"body\"\n ],\n \"🖐️\": [\n \"hand_with_fingers_splayed\",\n \"hand\",\n \"fingers\",\n \"palm\",\n \"body\",\n \"finger\",\n \"five\",\n \"raised\"\n ],\n \"✋\": [\n \"raised_hand\",\n \"fingers\",\n \"stop\",\n \"highfive\",\n \"palm\",\n \"ban\",\n \"body\",\n \"five\",\n \"high\"\n ],\n \"🖖\": [\n \"vulcan_salute\",\n \"hand\",\n \"fingers\",\n \"spock\",\n \"star trek\",\n \"between\",\n \"body\",\n \"finger\",\n \"middle\",\n \"part\",\n \"prosper\",\n \"raised\",\n \"ring\",\n \"split\"\n ],\n \"👌\": [\n \"ok_hand\",\n \"fingers\",\n \"limbs\",\n \"perfect\",\n \"ok\",\n \"okay\",\n \"body\",\n \"sign\"\n ],\n \"🤏\": [\n \"pinching_hand\",\n \"tiny\",\n \"small\",\n \"size\",\n \"amount\",\n \"body\",\n \"little\"\n ],\n \"✌️\": [\n \"victory_hand\",\n \"fingers\",\n \"ohyeah\",\n \"hand\",\n \"peace\",\n \"victory\",\n \"two\",\n \"air\",\n \"body\",\n \"quotes\",\n \"sign\",\n \"v\"\n ],\n \"🤞\": [\n \"crossed_fingers\",\n \"good\",\n \"lucky\",\n \"body\",\n \"cross\",\n \"finger\",\n \"hand\",\n \"hopeful\",\n \"index\",\n \"luck\",\n \"middle\"\n ],\n \"🤟\": [\n \"love_you_gesture\",\n \"hand\",\n \"fingers\",\n \"gesture\",\n \"body\",\n \"i\",\n \"ily\",\n \"sign\"\n ],\n \"🤘\": [\n \"sign_of_the_horns\",\n \"hand\",\n \"fingers\",\n \"evil_eye\",\n \"sign_of_horns\",\n \"rock_on\",\n \"body\",\n \"devil\",\n \"finger\",\n \"heavy\",\n \"metal\"\n ],\n \"🤙\": [\n \"call_me_hand\",\n \"hands\",\n \"gesture\",\n \"shaka\",\n \"body\",\n \"phone\",\n \"sign\"\n ],\n \"👈\": [\n \"backhand_index_pointing_left\",\n \"direction\",\n \"fingers\",\n \"hand\",\n \"left\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"👉\": [\n \"backhand_index_pointing_right\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"right\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"👆\": [\n \"backhand_index_pointing_up\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"up\",\n \"body\",\n \"finger\",\n \"middle\",\n \"point\",\n \"white\"\n ],\n \"🖕\": [\n \"middle_finger\",\n \"hand\",\n \"fingers\",\n \"rude\",\n \"middle\",\n \"flipping\",\n \"bird\",\n \"body\",\n \"dito\",\n \"extended\",\n \"fu\",\n \"medio\",\n \"middle finger\",\n \"reversed\"\n ],\n \"👇\": [\n \"backhand_index_pointing_down\",\n \"fingers\",\n \"hand\",\n \"direction\",\n \"down\",\n \"body\",\n \"finger\",\n \"point\",\n \"white\"\n ],\n \"☝️\": [\n \"index_pointing_up\",\n \"hand\",\n \"fingers\",\n \"direction\",\n \"up\",\n \"body\",\n \"finger\",\n \"point\",\n \"secret\",\n \"white\"\n ],\n \"👍\": [\n \"thumbs_up\",\n \"thumbsup\",\n \"yes\",\n \"awesome\",\n \"good\",\n \"agree\",\n \"accept\",\n \"cool\",\n \"hand\",\n \"like\",\n \"+1\",\n \"approve\",\n \"body\",\n \"ok\",\n \"sign\",\n \"thumb\"\n ],\n \"👎\": [\n \"thumbs_down\",\n \"thumbsdown\",\n \"no\",\n \"dislike\",\n \"hand\",\n \"-1\",\n \"bad\",\n \"body\",\n \"bury\",\n \"disapprove\",\n \"sign\",\n \"thumb\"\n ],\n \"✊\": [\n \"raised_fist\",\n \"fingers\",\n \"hand\",\n \"grasp\",\n \"body\",\n \"clenched\",\n \"power\",\n \"pump\",\n \"punch\"\n ],\n \"👊\": [\n \"oncoming_fist\",\n \"angry\",\n \"violence\",\n \"fist\",\n \"hit\",\n \"attack\",\n \"hand\",\n \"body\",\n \"bro\",\n \"brofist\",\n \"bump\",\n \"clenched\",\n \"closed\",\n \"facepunch\",\n \"fisted\",\n \"punch\",\n \"sign\"\n ],\n \"🤛\": [\n \"left_facing_fist\",\n \"hand\",\n \"fistbump\",\n \"body\",\n \"bump\",\n \"leftwards\"\n ],\n \"🤜\": [\n \"right_facing_fist\",\n \"hand\",\n \"fistbump\",\n \"body\",\n \"bump\",\n \"rightwards\",\n \"right fist\"\n ],\n \"👏\": [\n \"clapping_hands\",\n \"hands\",\n \"praise\",\n \"applause\",\n \"congrats\",\n \"yay\",\n \"body\",\n \"clap\",\n \"golf\",\n \"hand\",\n \"round\",\n \"sign\"\n ],\n \"🙌\": [\n \"raising_hands\",\n \"gesture\",\n \"hooray\",\n \"yea\",\n \"celebration\",\n \"hands\",\n \"air\",\n \"arms\",\n \"banzai\",\n \"body\",\n \"both\",\n \"festivus\",\n \"hallelujah\",\n \"hand\",\n \"miracle\",\n \"person\",\n \"praise\",\n \"raised\",\n \"two\"\n ],\n \"👐\": [\n \"open_hands\",\n \"fingers\",\n \"butterfly\",\n \"hands\",\n \"open\",\n \"body\",\n \"hand\",\n \"hug\",\n \"jazz\",\n \"sign\"\n ],\n \"🤲\": [\n \"palms_up_together\",\n \"hands\",\n \"gesture\",\n \"cupped\",\n \"prayer\",\n \"body\",\n \"dua\",\n \"facing\"\n ],\n \"🤝\": [\n \"handshake\",\n \"agreement\",\n \"shake\",\n \"deal\",\n \"hand\",\n \"hands\",\n \"meeting\",\n \"shaking\"\n ],\n \"🙏\": [\n \"folded_hands\",\n \"please\",\n \"hope\",\n \"wish\",\n \"namaste\",\n \"highfive\",\n \"pray\",\n \"thank you\",\n \"thanks\",\n \"appreciate\",\n \"ask\",\n \"body\",\n \"bow\",\n \"five\",\n \"gesture\",\n \"hand\",\n \"high\",\n \"person\",\n \"prayer\",\n \"pressed\",\n \"together\"\n ],\n \"✍️\": [\n \"writing_hand\",\n \"lower_left_ballpoint_pen\",\n \"stationery\",\n \"write\",\n \"compose\",\n \"body\"\n ],\n \"💅\": [\n \"nail_polish\",\n \"nail_care\",\n \"beauty\",\n \"manicure\",\n \"finger\",\n \"fashion\",\n \"nail\",\n \"slay\",\n \"body\",\n \"cosmetics\",\n \"fingers\",\n \"nonchalant\"\n ],\n \"🤳\": [\n \"selfie\",\n \"camera\",\n \"phone\",\n \"arm\",\n \"hand\"\n ],\n \"💪\": [\n \"flexed_biceps\",\n \"arm\",\n \"flex\",\n \"hand\",\n \"summer\",\n \"strong\",\n \"biceps\",\n \"bicep\",\n \"body\",\n \"comic\",\n \"feats\",\n \"flexing\",\n \"muscle\",\n \"muscles\",\n \"strength\",\n \"workout\"\n ],\n \"🦾\": [\n \"mechanical_arm\",\n \"accessibility\",\n \"body\",\n \"prosthetic\"\n ],\n \"🦿\": [\n \"mechanical_leg\",\n \"accessibility\",\n \"body\",\n \"prosthetic\"\n ],\n \"🦵\": [\n \"leg\",\n \"kick\",\n \"limb\",\n \"body\"\n ],\n \"🦶\": [\n \"foot\",\n \"kick\",\n \"stomp\",\n \"body\"\n ],\n \"👂\": [\n \"ear\",\n \"face\",\n \"hear\",\n \"sound\",\n \"listen\",\n \"body\",\n \"ears\",\n \"hearing\",\n \"listening\",\n \"nose\"\n ],\n \"🦻\": [\n \"ear_with_hearing_aid\",\n \"accessibility\",\n \"body\",\n \"hard\"\n ],\n \"👃\": [\n \"nose\",\n \"smell\",\n \"sniff\",\n \"body\",\n \"smelling\",\n \"sniffing\",\n \"stinky\"\n ],\n \"🧠\": [\n \"brain\",\n \"smart\",\n \"intelligent\",\n \"body\",\n \"organ\"\n ],\n \"🦷\": [\n \"tooth\",\n \"teeth\",\n \"dentist\",\n \"body\"\n ],\n \"🦴\": [\n \"bone\",\n \"skeleton\",\n \"body\"\n ],\n \"👀\": [\n \"eyes\",\n \"look\",\n \"watch\",\n \"stalk\",\n \"peek\",\n \"see\",\n \"body\",\n \"eye\",\n \"eyeballs\",\n \"face\",\n \"shifty\",\n \"wide\"\n ],\n \"👁️\": [\n \"eye\",\n \"face\",\n \"look\",\n \"see\",\n \"watch\",\n \"stare\",\n \"body\",\n \"single\"\n ],\n \"👅\": [\n \"tongue\",\n \"mouth\",\n \"playful\",\n \"body\",\n \"out\",\n \"taste\"\n ],\n \"👄\": [\n \"mouth\",\n \"kiss\",\n \"body\",\n \"kissing\",\n \"lips\"\n ],\n \"👶\": [\n \"baby\",\n \"child\",\n \"boy\",\n \"girl\",\n \"toddler\",\n \"newborn\",\n \"young\"\n ],\n \"🧒\": [\n \"child\",\n \"gender-neutral\",\n \"young\",\n \"boy\",\n \"gender\",\n \"girl\",\n \"inclusive\",\n \"neutral\",\n \"person\",\n \"unspecified\"\n ],\n \"👦\": [\n \"boy\",\n \"man\",\n \"male\",\n \"guy\",\n \"teenager\",\n \"child\",\n \"young\"\n ],\n \"👧\": [\n \"girl\",\n \"female\",\n \"woman\",\n \"teenager\",\n \"child\",\n \"maiden\",\n \"virgin\",\n \"virgo\",\n \"young\",\n \"zodiac\"\n ],\n \"🧑\": [\n \"person\",\n \"gender-neutral\",\n \"adult\",\n \"female\",\n \"gender\",\n \"inclusive\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"unspecified\",\n \"woman\",\n \"women\"\n ],\n \"👱\": [\n \"person_blond_hair\",\n \"hairstyle\",\n \"blonde\",\n \"haired\",\n \"man\"\n ],\n \"👨\": [\n \"man\",\n \"mustache\",\n \"father\",\n \"dad\",\n \"guy\",\n \"classy\",\n \"sir\",\n \"moustache\",\n \"adult\",\n \"male\",\n \"men\"\n ],\n \"🧔\": [\n \"man_beard\",\n \"person\",\n \"bewhiskered\",\n \"bearded\"\n ],\n \"👨‍🦰\": [\n \"man_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"ginger\",\n \"haired\",\n \"male\",\n \"men\",\n \"redhead\"\n ],\n \"👨‍🦱\": [\n \"man_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"haired\",\n \"male\",\n \"men\"\n ],\n \"👨‍🦳\": [\n \"man_white_hair\",\n \"old\",\n \"elder\",\n \"adult\",\n \"haired\",\n \"male\",\n \"men\"\n ],\n \"👨‍🦲\": [\n \"man_bald\",\n \"hairless\",\n \"adult\",\n \"hair\",\n \"male\",\n \"men\",\n \"no\"\n ],\n \"👩\": [\n \"woman\",\n \"female\",\n \"girls\",\n \"lady\",\n \"adult\",\n \"women\",\n \"yellow\"\n ],\n \"👩‍🦰\": [\n \"woman_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"female\",\n \"ginger\",\n \"haired\",\n \"redhead\",\n \"women\"\n ],\n \"🧑‍🦰\": [\n \"person_red_hair\",\n \"hairstyle\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩‍🦱\": [\n \"woman_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"female\",\n \"haired\",\n \"women\"\n ],\n \"🧑‍🦱\": [\n \"person_curly_hair\",\n \"hairstyle\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩‍🦳\": [\n \"woman_white_hair\",\n \"old\",\n \"elder\",\n \"adult\",\n \"female\",\n \"haired\",\n \"women\"\n ],\n \"🧑‍🦳\": [\n \"person_white_hair\",\n \"elder\",\n \"old\",\n \"adult\",\n \"gender\",\n \"haired\",\n \"unspecified\"\n ],\n \"👩‍🦲\": [\n \"woman_bald\",\n \"hairless\",\n \"adult\",\n \"female\",\n \"hair\",\n \"no\",\n \"women\"\n ],\n \"🧑‍🦲\": [\n \"person_bald\",\n \"hairless\",\n \"adult\",\n \"gender\",\n \"hair\",\n \"no\",\n \"unspecified\"\n ],\n \"👱‍♀️\": [\n \"woman_blond_hair\",\n \"woman\",\n \"female\",\n \"girl\",\n \"blonde\",\n \"person\",\n \"haired\",\n \"women\"\n ],\n \"👱‍♂️\": [\n \"man_blond_hair\",\n \"man\",\n \"male\",\n \"boy\",\n \"blonde\",\n \"guy\",\n \"person\",\n \"haired\",\n \"men\"\n ],\n \"🧓\": [\n \"older_person\",\n \"human\",\n \"elder\",\n \"senior\",\n \"gender-neutral\",\n \"adult\",\n \"female\",\n \"gender\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"old\",\n \"unspecified\",\n \"woman\",\n \"women\"\n ],\n \"👴\": [\n \"old_man\",\n \"human\",\n \"male\",\n \"men\",\n \"old\",\n \"elder\",\n \"senior\",\n \"adult\",\n \"elderly\",\n \"grandpa\",\n \"older\"\n ],\n \"👵\": [\n \"old_woman\",\n \"human\",\n \"female\",\n \"women\",\n \"lady\",\n \"old\",\n \"elder\",\n \"senior\",\n \"adult\",\n \"elderly\",\n \"grandma\",\n \"nanna\",\n \"older\"\n ],\n \"🙍\": [\n \"person_frowning\",\n \"worried\",\n \"frown\",\n \"gesture\",\n \"sad\",\n \"woman\"\n ],\n \"🙍‍♂️\": [\n \"man_frowning\",\n \"male\",\n \"boy\",\n \"man\",\n \"sad\",\n \"depressed\",\n \"discouraged\",\n \"unhappy\",\n \"frown\",\n \"gesture\",\n \"men\"\n ],\n \"🙍‍♀️\": [\n \"woman_frowning\",\n \"female\",\n \"girl\",\n \"woman\",\n \"sad\",\n \"depressed\",\n \"discouraged\",\n \"unhappy\",\n \"frown\",\n \"gesture\",\n \"women\"\n ],\n \"🙎\": [\n \"person_pouting\",\n \"upset\",\n \"blank\",\n \"face\",\n \"fed\",\n \"gesture\",\n \"look\",\n \"up\"\n ],\n \"🙎‍♂️\": [\n \"man_pouting\",\n \"male\",\n \"boy\",\n \"man\",\n \"gesture\",\n \"men\"\n ],\n \"🙎‍♀️\": [\n \"woman_pouting\",\n \"female\",\n \"girl\",\n \"woman\",\n \"gesture\",\n \"women\"\n ],\n \"🙅\": [\n \"person_gesturing_no\",\n \"decline\",\n \"arms\",\n \"deal\",\n \"denied\",\n \"face\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\",\n \"x\"\n ],\n \"🙅‍♂️\": [\n \"man_gesturing_no\",\n \"male\",\n \"boy\",\n \"man\",\n \"nope\",\n \"denied\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"men\",\n \"ng\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\"\n ],\n \"🙅‍♀️\": [\n \"woman_gesturing_no\",\n \"female\",\n \"girl\",\n \"woman\",\n \"nope\",\n \"denied\",\n \"forbidden\",\n \"gesture\",\n \"good\",\n \"halt\",\n \"hand\",\n \"ng\",\n \"not\",\n \"ok\",\n \"prohibited\",\n \"stop\",\n \"women\"\n ],\n \"🙆\": [\n \"person_gesturing_ok\",\n \"agree\",\n \"ballerina\",\n \"face\",\n \"gesture\",\n \"hand\",\n \"hands\",\n \"head\"\n ],\n \"🙆‍♂️\": [\n \"man_gesturing_ok\",\n \"men\",\n \"boy\",\n \"male\",\n \"blue\",\n \"human\",\n \"man\",\n \"gesture\",\n \"hand\"\n ],\n \"🙆‍♀️\": [\n \"woman_gesturing_ok\",\n \"women\",\n \"girl\",\n \"female\",\n \"pink\",\n \"human\",\n \"woman\",\n \"gesture\",\n \"hand\"\n ],\n \"💁\": [\n \"person_tipping_hand\",\n \"information\",\n \"attendant\",\n \"bellhop\",\n \"concierge\",\n \"desk\",\n \"female\",\n \"flick\",\n \"girl\",\n \"hair\",\n \"help\",\n \"sassy\",\n \"woman\",\n \"women\"\n ],\n \"💁‍♂️\": [\n \"man_tipping_hand\",\n \"male\",\n \"boy\",\n \"man\",\n \"human\",\n \"information\",\n \"desk\",\n \"help\",\n \"men\",\n \"sassy\"\n ],\n \"💁‍♀️\": [\n \"woman_tipping_hand\",\n \"female\",\n \"girl\",\n \"woman\",\n \"human\",\n \"information\",\n \"desk\",\n \"help\",\n \"sassy\",\n \"women\"\n ],\n \"🙋\": [\n \"person_raising_hand\",\n \"question\",\n \"answering\",\n \"gesture\",\n \"happy\",\n \"one\",\n \"raised\",\n \"up\"\n ],\n \"🙋‍♂️\": [\n \"man_raising_hand\",\n \"male\",\n \"boy\",\n \"man\",\n \"gesture\",\n \"happy\",\n \"men\",\n \"one\",\n \"raised\"\n ],\n \"🙋‍♀️\": [\n \"woman_raising_hand\",\n \"female\",\n \"girl\",\n \"woman\",\n \"gesture\",\n \"happy\",\n \"one\",\n \"raised\",\n \"women\"\n ],\n \"🧏\": [\n \"deaf_person\",\n \"accessibility\",\n \"ear\",\n \"hear\"\n ],\n \"🧏‍♂️\": [\n \"deaf_man\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"🧏‍♀️\": [\n \"deaf_woman\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🙇\": [\n \"person_bowing\",\n \"respectiful\",\n \"apology\",\n \"bow\",\n \"boy\",\n \"cute\",\n \"deeply\",\n \"dogeza\",\n \"gesture\",\n \"man\",\n \"massage\",\n \"respect\",\n \"sorry\",\n \"thanks\"\n ],\n \"🙇‍♂️\": [\n \"man_bowing\",\n \"man\",\n \"male\",\n \"boy\",\n \"apology\",\n \"bow\",\n \"deeply\",\n \"favor\",\n \"gesture\",\n \"men\",\n \"respect\",\n \"sorry\",\n \"thanks\"\n ],\n \"🙇‍♀️\": [\n \"woman_bowing\",\n \"woman\",\n \"female\",\n \"girl\",\n \"apology\",\n \"bow\",\n \"deeply\",\n \"favor\",\n \"gesture\",\n \"respect\",\n \"sorry\",\n \"thanks\",\n \"women\"\n ],\n \"🤦\": [\n \"person_facepalming\",\n \"disappointed\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"head\",\n \"hitting\",\n \"palm\",\n \"picard\",\n \"smh\"\n ],\n \"🤦‍♂️\": [\n \"man_facepalming\",\n \"man\",\n \"male\",\n \"boy\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"men\",\n \"palm\"\n ],\n \"🤦‍♀️\": [\n \"woman_facepalming\",\n \"woman\",\n \"female\",\n \"girl\",\n \"disbelief\",\n \"exasperation\",\n \"face\",\n \"facepalm\",\n \"palm\",\n \"women\"\n ],\n \"🤷\": [\n \"person_shrugging\",\n \"regardless\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"shrug\",\n \"shruggie\",\n \"¯\\\\\"\n ],\n \"🤷‍♂️\": [\n \"man_shrugging\",\n \"man\",\n \"male\",\n \"boy\",\n \"confused\",\n \"indifferent\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"men\",\n \"shrug\"\n ],\n \"🤷‍♀️\": [\n \"woman_shrugging\",\n \"woman\",\n \"female\",\n \"girl\",\n \"confused\",\n \"indifferent\",\n \"doubt\",\n \"ignorance\",\n \"indifference\",\n \"shrug\",\n \"women\"\n ],\n \"🧑‍⚕️\": [\n \"health_worker\",\n \"hospital\",\n \"dentist\",\n \"doctor\",\n \"healthcare\",\n \"md\",\n \"nurse\",\n \"physician\",\n \"professional\",\n \"therapist\"\n ],\n \"👨‍⚕️\": [\n \"man_health_worker\",\n \"doctor\",\n \"nurse\",\n \"therapist\",\n \"healthcare\",\n \"man\",\n \"human\",\n \"dentist\",\n \"male\",\n \"md\",\n \"men\",\n \"physician\",\n \"professional\"\n ],\n \"👩‍⚕️\": [\n \"woman_health_worker\",\n \"doctor\",\n \"nurse\",\n \"therapist\",\n \"healthcare\",\n \"woman\",\n \"human\",\n \"dentist\",\n \"female\",\n \"md\",\n \"physician\",\n \"professional\",\n \"women\"\n ],\n \"🧑‍🎓\": [\n \"student\",\n \"learn\",\n \"education\",\n \"graduate\",\n \"pupil\",\n \"school\"\n ],\n \"👨‍🎓\": [\n \"man_student\",\n \"graduate\",\n \"man\",\n \"human\",\n \"education\",\n \"graduation\",\n \"male\",\n \"men\",\n \"pupil\",\n \"school\"\n ],\n \"👩‍🎓\": [\n \"woman_student\",\n \"graduate\",\n \"woman\",\n \"human\",\n \"education\",\n \"female\",\n \"graduation\",\n \"pupil\",\n \"school\",\n \"women\"\n ],\n \"🧑‍🏫\": [\n \"teacher\",\n \"professor\",\n \"education\",\n \"educator\",\n \"instructor\"\n ],\n \"👨‍🏫\": [\n \"man_teacher\",\n \"instructor\",\n \"professor\",\n \"man\",\n \"human\",\n \"education\",\n \"educator\",\n \"male\",\n \"men\",\n \"school\"\n ],\n \"👩‍🏫\": [\n \"woman_teacher\",\n \"instructor\",\n \"professor\",\n \"woman\",\n \"human\",\n \"education\",\n \"educator\",\n \"female\",\n \"school\",\n \"women\"\n ],\n \"🧑‍⚖️\": [\n \"judge\",\n \"law\",\n \"court\",\n \"justice\",\n \"scales\"\n ],\n \"👨‍⚖️\": [\n \"man_judge\",\n \"justice\",\n \"court\",\n \"man\",\n \"human\",\n \"law\",\n \"male\",\n \"men\",\n \"scales\"\n ],\n \"👩‍⚖️\": [\n \"woman_judge\",\n \"justice\",\n \"court\",\n \"woman\",\n \"human\",\n \"female\",\n \"law\",\n \"scales\",\n \"women\"\n ],\n \"🧑‍🌾\": [\n \"farmer\",\n \"crops\",\n \"farm\",\n \"farming\",\n \"gardener\",\n \"rancher\",\n \"worker\"\n ],\n \"👨‍🌾\": [\n \"man_farmer\",\n \"rancher\",\n \"gardener\",\n \"man\",\n \"human\",\n \"farm\",\n \"farming\",\n \"male\",\n \"men\",\n \"worker\"\n ],\n \"👩‍🌾\": [\n \"woman_farmer\",\n \"rancher\",\n \"gardener\",\n \"woman\",\n \"human\",\n \"farm\",\n \"farming\",\n \"female\",\n \"women\",\n \"worker\"\n ],\n \"🧑‍🍳\": [\n \"cook\",\n \"food\",\n \"kitchen\",\n \"culinary\",\n \"chef\",\n \"cooking\",\n \"service\"\n ],\n \"👨‍🍳\": [\n \"man_cook\",\n \"chef\",\n \"man\",\n \"human\",\n \"cooking\",\n \"food\",\n \"male\",\n \"men\",\n \"service\"\n ],\n \"👩‍🍳\": [\n \"woman_cook\",\n \"chef\",\n \"woman\",\n \"human\",\n \"cooking\",\n \"female\",\n \"food\",\n \"service\",\n \"women\"\n ],\n \"🧑‍🔧\": [\n \"mechanic\",\n \"worker\",\n \"technician\",\n \"electrician\",\n \"person\",\n \"plumber\",\n \"repair\",\n \"tradesperson\"\n ],\n \"👨‍🔧\": [\n \"man_mechanic\",\n \"plumber\",\n \"man\",\n \"human\",\n \"wrench\",\n \"electrician\",\n \"male\",\n \"men\",\n \"person\",\n \"repair\",\n \"tradesperson\"\n ],\n \"👩‍🔧\": [\n \"woman_mechanic\",\n \"plumber\",\n \"woman\",\n \"human\",\n \"wrench\",\n \"electrician\",\n \"female\",\n \"person\",\n \"repair\",\n \"tradesperson\",\n \"women\"\n ],\n \"🧑‍🏭\": [\n \"factory_worker\",\n \"labor\",\n \"assembly\",\n \"industrial\",\n \"welder\"\n ],\n \"👨‍🏭\": [\n \"man_factory_worker\",\n \"assembly\",\n \"industrial\",\n \"man\",\n \"human\",\n \"male\",\n \"men\",\n \"welder\"\n ],\n \"👩‍🏭\": [\n \"woman_factory_worker\",\n \"assembly\",\n \"industrial\",\n \"woman\",\n \"human\",\n \"female\",\n \"welder\",\n \"women\"\n ],\n \"🧑‍💼\": [\n \"office_worker\",\n \"business\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"clerk\",\n \"manager\"\n ],\n \"👨‍💼\": [\n \"man_office_worker\",\n \"business\",\n \"manager\",\n \"man\",\n \"human\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"businessman\",\n \"ceo\",\n \"clerk\",\n \"male\",\n \"men\"\n ],\n \"👩‍💼\": [\n \"woman_office_worker\",\n \"business\",\n \"manager\",\n \"woman\",\n \"human\",\n \"accountant\",\n \"adviser\",\n \"analyst\",\n \"architect\",\n \"banker\",\n \"businesswoman\",\n \"ceo\",\n \"clerk\",\n \"female\",\n \"women\"\n ],\n \"🧑‍🔬\": [\n \"scientist\",\n \"chemistry\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"lab\",\n \"mathematician\",\n \"physicist\",\n \"technician\"\n ],\n \"👨‍🔬\": [\n \"man_scientist\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"physicist\",\n \"man\",\n \"human\",\n \"lab\",\n \"male\",\n \"mathematician\",\n \"men\",\n \"research\",\n \"technician\"\n ],\n \"👩‍🔬\": [\n \"woman_scientist\",\n \"biologist\",\n \"chemist\",\n \"engineer\",\n \"physicist\",\n \"woman\",\n \"human\",\n \"female\",\n \"lab\",\n \"mathematician\",\n \"research\",\n \"technician\",\n \"women\"\n ],\n \"🧑‍💻\": [\n \"technologist\",\n \"computer\",\n \"coder\",\n \"engineer\",\n \"laptop\",\n \"software\",\n \"technology\",\n \"developer\"\n ],\n \"👨‍💻\": [\n \"man_technologist\",\n \"coder\",\n \"developer\",\n \"engineer\",\n \"programmer\",\n \"software\",\n \"man\",\n \"human\",\n \"laptop\",\n \"computer\",\n \"blogger\",\n \"male\",\n \"men\",\n \"technology\"\n ],\n \"👩‍💻\": [\n \"woman_technologist\",\n \"coder\",\n \"developer\",\n \"engineer\",\n \"programmer\",\n \"software\",\n \"woman\",\n \"human\",\n \"laptop\",\n \"computer\",\n \"blogger\",\n \"female\",\n \"technology\",\n \"women\"\n ],\n \"🧑‍🎤\": [\n \"singer\",\n \"song\",\n \"artist\",\n \"performer\",\n \"actor\",\n \"entertainer\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"rockstar\",\n \"star\"\n ],\n \"👨‍🎤\": [\n \"man_singer\",\n \"rockstar\",\n \"entertainer\",\n \"man\",\n \"human\",\n \"actor\",\n \"aladdin\",\n \"bowie\",\n \"male\",\n \"men\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"sane\",\n \"star\"\n ],\n \"👩‍🎤\": [\n \"woman_singer\",\n \"rockstar\",\n \"entertainer\",\n \"woman\",\n \"human\",\n \"actor\",\n \"female\",\n \"music\",\n \"musician\",\n \"rock\",\n \"rocker\",\n \"star\",\n \"women\"\n ],\n \"🧑‍🎨\": [\n \"artist\",\n \"painting\",\n \"draw\",\n \"creativity\",\n \"art\",\n \"paint\",\n \"painter\",\n \"palette\"\n ],\n \"👨‍🎨\": [\n \"man_artist\",\n \"painter\",\n \"man\",\n \"human\",\n \"art\",\n \"male\",\n \"men\",\n \"paint\",\n \"palette\"\n ],\n \"👩‍🎨\": [\n \"woman_artist\",\n \"painter\",\n \"woman\",\n \"human\",\n \"art\",\n \"female\",\n \"paint\",\n \"palette\",\n \"women\"\n ],\n \"🧑‍✈️\": [\n \"pilot\",\n \"fly\",\n \"plane\",\n \"airplane\",\n \"aviation\",\n \"aviator\"\n ],\n \"👨‍✈️\": [\n \"man_pilot\",\n \"aviator\",\n \"plane\",\n \"man\",\n \"human\",\n \"airplane\",\n \"aviation\",\n \"male\",\n \"men\"\n ],\n \"👩‍✈️\": [\n \"woman_pilot\",\n \"aviator\",\n \"plane\",\n \"woman\",\n \"human\",\n \"airplane\",\n \"aviation\",\n \"female\",\n \"women\"\n ],\n \"🧑‍🚀\": [\n \"astronaut\",\n \"outerspace\",\n \"moon\",\n \"planets\",\n \"rocket\",\n \"space\",\n \"stars\"\n ],\n \"👨‍🚀\": [\n \"man_astronaut\",\n \"space\",\n \"rocket\",\n \"man\",\n \"human\",\n \"cosmonaut\",\n \"male\",\n \"men\",\n \"moon\",\n \"planets\",\n \"stars\"\n ],\n \"👩‍🚀\": [\n \"woman_astronaut\",\n \"space\",\n \"rocket\",\n \"woman\",\n \"human\",\n \"cosmonaut\",\n \"female\",\n \"moon\",\n \"planets\",\n \"stars\",\n \"women\"\n ],\n \"🧑‍🚒\": [\n \"firefighter\",\n \"fire\",\n \"firetruck\"\n ],\n \"👨‍🚒\": [\n \"man_firefighter\",\n \"fireman\",\n \"man\",\n \"human\",\n \"fire\",\n \"firetruck\",\n \"male\",\n \"men\"\n ],\n \"👩‍🚒\": [\n \"woman_firefighter\",\n \"fireman\",\n \"woman\",\n \"human\",\n \"female\",\n \"fire\",\n \"firetruck\",\n \"women\"\n ],\n \"👮\": [\n \"police_officer\",\n \"cop\",\n \"law\",\n \"policeman\",\n \"policewoman\"\n ],\n \"👮‍♂️\": [\n \"man_police_officer\",\n \"man\",\n \"police\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"arrest\",\n \"911\",\n \"cop\",\n \"male\",\n \"men\",\n \"policeman\"\n ],\n \"👮‍♀️\": [\n \"woman_police_officer\",\n \"woman\",\n \"police\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"arrest\",\n \"911\",\n \"female\",\n \"cop\",\n \"policewoman\",\n \"women\"\n ],\n \"🕵️\": [\n \"detective\",\n \"human\",\n \"spy\",\n \"eye\",\n \"or\",\n \"private\",\n \"sleuth\"\n ],\n \"🕵️‍♂️\": [\n \"man_detective\",\n \"crime\",\n \"male\",\n \"men\",\n \"sleuth\",\n \"spy\"\n ],\n \"🕵️‍♀️\": [\n \"woman_detective\",\n \"human\",\n \"spy\",\n \"detective\",\n \"female\",\n \"woman\",\n \"sleuth\",\n \"women\"\n ],\n \"💂\": [\n \"guard\",\n \"protect\",\n \"british\",\n \"guardsman\"\n ],\n \"💂‍♂️\": [\n \"man_guard\",\n \"uk\",\n \"gb\",\n \"british\",\n \"male\",\n \"guy\",\n \"royal\",\n \"guardsman\",\n \"men\"\n ],\n \"💂‍♀️\": [\n \"woman_guard\",\n \"uk\",\n \"gb\",\n \"british\",\n \"female\",\n \"royal\",\n \"woman\",\n \"guardsman\",\n \"guardswoman\",\n \"women\"\n ],\n \"👷\": [\n \"construction_worker\",\n \"labor\",\n \"build\",\n \"builder\",\n \"face\",\n \"hard\",\n \"hat\",\n \"helmet\",\n \"safety\",\n \"add_ci\",\n \"update_ci\"\n ],\n \"👷‍♂️\": [\n \"man_construction_worker\",\n \"male\",\n \"human\",\n \"wip\",\n \"guy\",\n \"build\",\n \"construction\",\n \"worker\",\n \"labor\",\n \"helmet\",\n \"men\"\n ],\n \"👷‍♀️\": [\n \"woman_construction_worker\",\n \"female\",\n \"human\",\n \"wip\",\n \"build\",\n \"construction\",\n \"worker\",\n \"labor\",\n \"woman\",\n \"helmet\",\n \"women\"\n ],\n \"🤴\": [\n \"prince\",\n \"boy\",\n \"man\",\n \"male\",\n \"crown\",\n \"royal\",\n \"king\",\n \"fairy\",\n \"fantasy\",\n \"men\",\n \"tale\"\n ],\n \"👸\": [\n \"princess\",\n \"girl\",\n \"woman\",\n \"female\",\n \"blond\",\n \"crown\",\n \"royal\",\n \"queen\",\n \"blonde\",\n \"fairy\",\n \"fantasy\",\n \"tale\",\n \"tiara\",\n \"women\"\n ],\n \"👳\": [\n \"person_wearing_turban\",\n \"headdress\",\n \"arab\",\n \"man\",\n \"muslim\",\n \"sikh\"\n ],\n \"👳‍♂️\": [\n \"man_wearing_turban\",\n \"male\",\n \"indian\",\n \"hinduism\",\n \"arabs\",\n \"men\"\n ],\n \"👳‍♀️\": [\n \"woman_wearing_turban\",\n \"female\",\n \"indian\",\n \"hinduism\",\n \"arabs\",\n \"woman\",\n \"women\"\n ],\n \"👲\": [\n \"man_with_skullcap\",\n \"male\",\n \"boy\",\n \"chinese\",\n \"asian\",\n \"cap\",\n \"gua\",\n \"hat\",\n \"mao\",\n \"person\",\n \"pi\"\n ],\n \"🧕\": [\n \"woman_with_headscarf\",\n \"female\",\n \"hijab\",\n \"mantilla\",\n \"tichel\"\n ],\n \"🤵\": [\n \"man_in_tuxedo\",\n \"couple\",\n \"marriage\",\n \"wedding\",\n \"groom\",\n \"male\",\n \"men\",\n \"person\",\n \"suit\"\n ],\n \"👰\": [\n \"bride_with_veil\",\n \"couple\",\n \"marriage\",\n \"wedding\",\n \"woman\",\n \"bride\",\n \"person\"\n ],\n \"🤰\": [\n \"pregnant_woman\",\n \"baby\",\n \"female\",\n \"pregnancy\",\n \"pregnant lady\",\n \"women\"\n ],\n \"🤱\": [\n \"breast_feeding\",\n \"nursing\",\n \"baby\",\n \"breastfeeding\",\n \"child\",\n \"female\",\n \"infant\",\n \"milk\",\n \"mother\",\n \"woman\",\n \"women\"\n ],\n \"👼\": [\n \"baby_angel\",\n \"heaven\",\n \"wings\",\n \"halo\",\n \"cherub\",\n \"cupid\",\n \"face\",\n \"fairy\",\n \"fantasy\",\n \"putto\",\n \"tale\"\n ],\n \"🎅\": [\n \"santa_claus\",\n \"festival\",\n \"man\",\n \"male\",\n \"xmas\",\n \"father christmas\",\n \"activity\",\n \"celebration\",\n \"men\",\n \"nicholas\",\n \"saint\",\n \"sinterklaas\"\n ],\n \"🤶\": [\n \"mrs_claus\",\n \"woman\",\n \"female\",\n \"xmas\",\n \"mother christmas\",\n \"activity\",\n \"celebration\",\n \"mrs.\",\n \"santa\",\n \"women\"\n ],\n \"🦸\": [\n \"superhero\",\n \"marvel\",\n \"fantasy\",\n \"good\",\n \"hero\",\n \"heroine\",\n \"superpower\",\n \"superpowers\"\n ],\n \"🦸‍♂️\": [\n \"man_superhero\",\n \"man\",\n \"male\",\n \"good\",\n \"hero\",\n \"superpowers\",\n \"fantasy\",\n \"men\",\n \"superpower\"\n ],\n \"🦸‍♀️\": [\n \"woman_superhero\",\n \"woman\",\n \"female\",\n \"good\",\n \"heroine\",\n \"superpowers\",\n \"fantasy\",\n \"hero\",\n \"superpower\",\n \"women\"\n ],\n \"🦹\": [\n \"supervillain\",\n \"marvel\",\n \"bad\",\n \"criminal\",\n \"evil\",\n \"fantasy\",\n \"superpower\",\n \"superpowers\",\n \"villain\"\n ],\n \"🦹‍♂️\": [\n \"man_supervillain\",\n \"man\",\n \"male\",\n \"evil\",\n \"bad\",\n \"criminal\",\n \"hero\",\n \"superpowers\",\n \"fantasy\",\n \"men\",\n \"superpower\",\n \"villain\"\n ],\n \"🦹‍♀️\": [\n \"woman_supervillain\",\n \"woman\",\n \"female\",\n \"evil\",\n \"bad\",\n \"criminal\",\n \"heroine\",\n \"superpowers\",\n \"fantasy\",\n \"superpower\",\n \"villain\",\n \"women\"\n ],\n \"🧙\": [\n \"mage\",\n \"magic\",\n \"fantasy\",\n \"sorcerer\",\n \"sorceress\",\n \"witch\",\n \"wizard\"\n ],\n \"🧙‍♂️\": [\n \"man_mage\",\n \"man\",\n \"male\",\n \"mage\",\n \"sorcerer\",\n \"fantasy\",\n \"men\",\n \"wizard\"\n ],\n \"🧙‍♀️\": [\n \"woman_mage\",\n \"woman\",\n \"female\",\n \"mage\",\n \"witch\",\n \"fantasy\",\n \"sorceress\",\n \"wizard\",\n \"women\"\n ],\n \"🧚\": [\n \"fairy\",\n \"wings\",\n \"magical\",\n \"fantasy\",\n \"oberon\",\n \"puck\",\n \"titania\"\n ],\n \"🧚‍♂️\": [\n \"man_fairy\",\n \"man\",\n \"male\",\n \"fantasy\",\n \"men\",\n \"oberon\",\n \"puck\"\n ],\n \"🧚‍♀️\": [\n \"woman_fairy\",\n \"woman\",\n \"female\",\n \"fantasy\",\n \"titania\",\n \"wings\",\n \"women\"\n ],\n \"🧛\": [\n \"vampire\",\n \"blood\",\n \"twilight\",\n \"dracula\",\n \"fantasy\",\n \"undead\"\n ],\n \"🧛‍♂️\": [\n \"man_vampire\",\n \"man\",\n \"male\",\n \"dracula\",\n \"fantasy\",\n \"men\",\n \"undead\"\n ],\n \"🧛‍♀️\": [\n \"woman_vampire\",\n \"woman\",\n \"female\",\n \"fantasy\",\n \"undead\",\n \"unded\",\n \"women\"\n ],\n \"🧜\": [\n \"merperson\",\n \"sea\",\n \"fantasy\",\n \"merboy\",\n \"mergirl\",\n \"mermaid\",\n \"merman\",\n \"merwoman\"\n ],\n \"🧜‍♂️\": [\n \"merman\",\n \"man\",\n \"male\",\n \"triton\",\n \"fantasy\",\n \"men\",\n \"mermaid\"\n ],\n \"🧜‍♀️\": [\n \"mermaid\",\n \"woman\",\n \"female\",\n \"merwoman\",\n \"ariel\",\n \"fantasy\",\n \"women\"\n ],\n \"🧝\": [\n \"elf\",\n \"magical\",\n \"ears\",\n \"fantasy\",\n \"legolas\",\n \"pointed\"\n ],\n \"🧝‍♂️\": [\n \"man_elf\",\n \"man\",\n \"male\",\n \"ears\",\n \"fantasy\",\n \"magical\",\n \"men\",\n \"pointed\"\n ],\n \"🧝‍♀️\": [\n \"woman_elf\",\n \"woman\",\n \"female\",\n \"ears\",\n \"fantasy\",\n \"magical\",\n \"pointed\",\n \"women\"\n ],\n \"🧞\": [\n \"genie\",\n \"magical\",\n \"wishes\",\n \"djinn\",\n \"djinni\",\n \"fantasy\",\n \"jinni\"\n ],\n \"🧞‍♂️\": [\n \"man_genie\",\n \"man\",\n \"male\",\n \"djinn\",\n \"fantasy\",\n \"men\"\n ],\n \"🧞‍♀️\": [\n \"woman_genie\",\n \"woman\",\n \"female\",\n \"djinn\",\n \"fantasy\",\n \"women\"\n ],\n \"🧟\": [\n \"zombie\",\n \"dead\",\n \"fantasy\",\n \"undead\",\n \"walking\"\n ],\n \"🧟‍♂️\": [\n \"man_zombie\",\n \"man\",\n \"male\",\n \"dracula\",\n \"undead\",\n \"walking dead\",\n \"fantasy\",\n \"men\"\n ],\n \"🧟‍♀️\": [\n \"woman_zombie\",\n \"woman\",\n \"female\",\n \"undead\",\n \"walking dead\",\n \"fantasy\",\n \"women\"\n ],\n \"💆\": [\n \"person_getting_massage\",\n \"relax\",\n \"face\",\n \"head\",\n \"massaging\",\n \"salon\",\n \"spa\"\n ],\n \"💆‍♂️\": [\n \"man_getting_massage\",\n \"male\",\n \"boy\",\n \"man\",\n \"head\",\n \"face\",\n \"men\",\n \"salon\",\n \"spa\"\n ],\n \"💆‍♀️\": [\n \"woman_getting_massage\",\n \"female\",\n \"girl\",\n \"woman\",\n \"head\",\n \"face\",\n \"salon\",\n \"spa\",\n \"women\"\n ],\n \"💇\": [\n \"person_getting_haircut\",\n \"hairstyle\",\n \"barber\",\n \"beauty\",\n \"cutting\",\n \"hair\",\n \"hairdresser\",\n \"parlor\"\n ],\n \"💇‍♂️\": [\n \"man_getting_haircut\",\n \"male\",\n \"boy\",\n \"man\",\n \"barber\",\n \"beauty\",\n \"men\",\n \"parlor\"\n ],\n \"💇‍♀️\": [\n \"woman_getting_haircut\",\n \"female\",\n \"girl\",\n \"woman\",\n \"barber\",\n \"beauty\",\n \"parlor\",\n \"women\"\n ],\n \"🚶\": [\n \"person_walking\",\n \"move\",\n \"hike\",\n \"pedestrian\",\n \"walk\",\n \"walker\"\n ],\n \"🚶‍♂️\": [\n \"man_walking\",\n \"human\",\n \"feet\",\n \"steps\",\n \"hike\",\n \"male\",\n \"men\",\n \"pedestrian\",\n \"walk\"\n ],\n \"🚶‍♀️\": [\n \"woman_walking\",\n \"human\",\n \"feet\",\n \"steps\",\n \"woman\",\n \"female\",\n \"hike\",\n \"pedestrian\",\n \"walk\",\n \"women\"\n ],\n \"🧍\": [\n \"person_standing\",\n \"still\",\n \"stand\"\n ],\n \"🧍‍♂️\": [\n \"man_standing\",\n \"still\",\n \"male\",\n \"men\",\n \"stand\"\n ],\n \"🧍‍♀️\": [\n \"woman_standing\",\n \"still\",\n \"female\",\n \"stand\",\n \"women\"\n ],\n \"🧎\": [\n \"person_kneeling\",\n \"pray\",\n \"respectful\",\n \"kneel\"\n ],\n \"🧎‍♂️\": [\n \"man_kneeling\",\n \"pray\",\n \"respectful\",\n \"kneel\",\n \"male\",\n \"men\"\n ],\n \"🧎‍♀️\": [\n \"woman_kneeling\",\n \"respectful\",\n \"pray\",\n \"female\",\n \"kneel\",\n \"women\"\n ],\n \"🧑‍🦯\": [\n \"person_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"white\"\n ],\n \"👨‍🦯\": [\n \"man_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"male\",\n \"men\",\n \"white\"\n ],\n \"👩‍🦯\": [\n \"woman_with_probing_cane\",\n \"blind\",\n \"accessibility\",\n \"female\",\n \"white\",\n \"women\"\n ],\n \"🧑‍🦼\": [\n \"person_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\"\n ],\n \"👨‍🦼\": [\n \"man_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"👩‍🦼\": [\n \"woman_in_motorized_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🧑‍🦽\": [\n \"person_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\"\n ],\n \"👨‍🦽\": [\n \"man_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"male\",\n \"men\"\n ],\n \"👩‍🦽\": [\n \"woman_in_manual_wheelchair\",\n \"disability\",\n \"accessibility\",\n \"female\",\n \"women\"\n ],\n \"🏃\": [\n \"person_running\",\n \"move\",\n \"exercise\",\n \"jogging\",\n \"marathon\",\n \"run\",\n \"runner\",\n \"workout\"\n ],\n \"🏃‍♂️\": [\n \"man_running\",\n \"man\",\n \"walking\",\n \"exercise\",\n \"race\",\n \"running\",\n \"male\",\n \"marathon\",\n \"men\",\n \"racing\",\n \"runner\",\n \"workout\"\n ],\n \"🏃‍♀️\": [\n \"woman_running\",\n \"woman\",\n \"walking\",\n \"exercise\",\n \"race\",\n \"running\",\n \"female\",\n \"boy\",\n \"marathon\",\n \"racing\",\n \"runner\",\n \"women\",\n \"workout\"\n ],\n \"💃\": [\n \"woman_dancing\",\n \"female\",\n \"girl\",\n \"woman\",\n \"fun\",\n \"dance\",\n \"dancer\",\n \"dress\",\n \"red\",\n \"salsa\",\n \"women\"\n ],\n \"🕺\": [\n \"man_dancing\",\n \"male\",\n \"boy\",\n \"fun\",\n \"dancer\",\n \"dance\",\n \"disco\",\n \"men\"\n ],\n \"🕴️\": [\n \"man_in_suit_levitating\",\n \"suit\",\n \"business\",\n \"levitate\",\n \"hover\",\n \"jump\",\n \"boy\",\n \"hovering\",\n \"jabsco\",\n \"male\",\n \"men\",\n \"person\",\n \"rude\",\n \"walt\"\n ],\n \"👯\": [\n \"people_with_bunny_ears\",\n \"perform\",\n \"costume\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"partying\",\n \"wearing\",\n \"women\"\n ],\n \"👯‍♂️\": [\n \"men_with_bunny_ears\",\n \"male\",\n \"bunny\",\n \"men\",\n \"boys\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"man\",\n \"partying\",\n \"wearing\"\n ],\n \"👯‍♀️\": [\n \"women_with_bunny_ears\",\n \"female\",\n \"bunny\",\n \"women\",\n \"girls\",\n \"dancer\",\n \"dancing\",\n \"ear\",\n \"partying\",\n \"people\",\n \"wearing\"\n ],\n \"🧖\": [\n \"person_in_steamy_room\",\n \"relax\",\n \"spa\",\n \"hamam\",\n \"sauna\",\n \"steam\",\n \"steambath\"\n ],\n \"🧖‍♂️\": [\n \"man_in_steamy_room\",\n \"male\",\n \"man\",\n \"spa\",\n \"steamroom\",\n \"sauna\",\n \"hamam\",\n \"men\",\n \"steam\",\n \"steambath\"\n ],\n \"🧖‍♀️\": [\n \"woman_in_steamy_room\",\n \"female\",\n \"woman\",\n \"spa\",\n \"steamroom\",\n \"sauna\",\n \"hamam\",\n \"steam\",\n \"steambath\",\n \"women\"\n ],\n \"🧗\": [\n \"person_climbing\",\n \"sport\",\n \"bouldering\",\n \"climber\",\n \"rock\"\n ],\n \"🧗‍♂️\": [\n \"man_climbing\",\n \"sports\",\n \"hobby\",\n \"man\",\n \"male\",\n \"rock\",\n \"bouldering\",\n \"climber\",\n \"men\"\n ],\n \"🧗‍♀️\": [\n \"woman_climbing\",\n \"sports\",\n \"hobby\",\n \"woman\",\n \"female\",\n \"rock\",\n \"bouldering\",\n \"climber\",\n \"women\"\n ],\n \"🤺\": [\n \"person_fencing\",\n \"sports\",\n \"fencing\",\n \"sword\",\n \"fencer\"\n ],\n \"🏇\": [\n \"horse_racing\",\n \"animal\",\n \"betting\",\n \"competition\",\n \"gambling\",\n \"luck\",\n \"jockey\",\n \"race\",\n \"racehorse\"\n ],\n \"⛷️\": [\n \"skier\",\n \"sports\",\n \"winter\",\n \"snow\",\n \"ski\"\n ],\n \"🏂\": [\n \"snowboarder\",\n \"sports\",\n \"winter\",\n \"ski\",\n \"snow\",\n \"snowboard\",\n \"snowboarding\"\n ],\n \"🏌️\": [\n \"person_golfing\",\n \"sports\",\n \"business\",\n \"ball\",\n \"club\",\n \"golf\",\n \"golfer\"\n ],\n \"🏌️‍♂️\": [\n \"man_golfing\",\n \"sport\",\n \"ball\",\n \"golf\",\n \"golfer\",\n \"male\",\n \"men\"\n ],\n \"🏌️‍♀️\": [\n \"woman_golfing\",\n \"sports\",\n \"business\",\n \"woman\",\n \"female\",\n \"ball\",\n \"golf\",\n \"golfer\",\n \"women\"\n ],\n \"🏄\": [\n \"person_surfing\",\n \"sport\",\n \"sea\",\n \"surf\",\n \"surfer\"\n ],\n \"🏄‍♂️\": [\n \"man_surfing\",\n \"sports\",\n \"ocean\",\n \"sea\",\n \"summer\",\n \"beach\",\n \"male\",\n \"men\",\n \"surfer\"\n ],\n \"🏄‍♀️\": [\n \"woman_surfing\",\n \"sports\",\n \"ocean\",\n \"sea\",\n \"summer\",\n \"beach\",\n \"woman\",\n \"female\",\n \"surfer\",\n \"women\"\n ],\n \"🚣\": [\n \"person_rowing_boat\",\n \"sport\",\n \"move\",\n \"paddles\",\n \"rowboat\",\n \"vehicle\"\n ],\n \"🚣‍♂️\": [\n \"man_rowing_boat\",\n \"sports\",\n \"hobby\",\n \"water\",\n \"ship\",\n \"male\",\n \"men\",\n \"rowboat\",\n \"vehicle\"\n ],\n \"🚣‍♀️\": [\n \"woman_rowing_boat\",\n \"sports\",\n \"hobby\",\n \"water\",\n \"ship\",\n \"woman\",\n \"female\",\n \"rowboat\",\n \"vehicle\",\n \"women\"\n ],\n \"🏊\": [\n \"person_swimming\",\n \"sport\",\n \"pool\",\n \"swim\",\n \"swimmer\"\n ],\n \"🏊‍♂️\": [\n \"man_swimming\",\n \"sports\",\n \"exercise\",\n \"human\",\n \"athlete\",\n \"water\",\n \"summer\",\n \"male\",\n \"men\",\n \"swim\",\n \"swimmer\"\n ],\n \"🏊‍♀️\": [\n \"woman_swimming\",\n \"sports\",\n \"exercise\",\n \"human\",\n \"athlete\",\n \"water\",\n \"summer\",\n \"woman\",\n \"female\",\n \"swim\",\n \"swimmer\",\n \"women\"\n ],\n \"⛹️\": [\n \"person_bouncing_ball\",\n \"sports\",\n \"human\",\n \"basketball\",\n \"player\"\n ],\n \"⛹️‍♂️\": [\n \"man_bouncing_ball\",\n \"sport\",\n \"basketball\",\n \"male\",\n \"men\",\n \"player\"\n ],\n \"⛹️‍♀️\": [\n \"woman_bouncing_ball\",\n \"sports\",\n \"human\",\n \"woman\",\n \"female\",\n \"basketball\",\n \"player\",\n \"women\"\n ],\n \"🏋️\": [\n \"person_lifting_weights\",\n \"sports\",\n \"training\",\n \"exercise\",\n \"bodybuilder\",\n \"gym\",\n \"lifter\",\n \"weight\",\n \"weightlifter\",\n \"workout\"\n ],\n \"🏋️‍♂️\": [\n \"man_lifting_weights\",\n \"sport\",\n \"gym\",\n \"lifter\",\n \"male\",\n \"men\",\n \"weight\",\n \"weightlifter\",\n \"workout\"\n ],\n \"🏋️‍♀️\": [\n \"woman_lifting_weights\",\n \"sports\",\n \"training\",\n \"exercise\",\n \"woman\",\n \"female\",\n \"gym\",\n \"lifter\",\n \"weight\",\n \"weightlifter\",\n \"women\",\n \"workout\"\n ],\n \"🚴\": [\n \"person_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sport\",\n \"move\",\n \"bicyclist\"\n ],\n \"🚴‍♂️\": [\n \"man_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"bicyclist\",\n \"male\",\n \"men\"\n ],\n \"🚴‍♀️\": [\n \"woman_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"woman\",\n \"female\",\n \"bicyclist\",\n \"women\"\n ],\n \"🚵\": [\n \"person_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"sport\",\n \"move\",\n \"bicyclist\",\n \"biker\"\n ],\n \"🚵‍♂️\": [\n \"man_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"transportation\",\n \"sports\",\n \"human\",\n \"race\",\n \"bicyclist\",\n \"biker\",\n \"male\",\n \"men\"\n ],\n \"🚵‍♀️\": [\n \"woman_mountain_biking\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"transportation\",\n \"sports\",\n \"human\",\n \"race\",\n \"woman\",\n \"female\",\n \"bicyclist\",\n \"biker\",\n \"women\"\n ],\n \"🤸\": [\n \"person_cartwheeling\",\n \"sport\",\n \"gymnastic\",\n \"cartwheel\",\n \"doing\",\n \"gymnast\",\n \"gymnastics\"\n ],\n \"🤸‍♂️\": [\n \"man_cartwheeling\",\n \"gymnastics\",\n \"cartwheel\",\n \"doing\",\n \"male\",\n \"men\"\n ],\n \"🤸‍♀️\": [\n \"woman_cartwheeling\",\n \"gymnastics\",\n \"cartwheel\",\n \"doing\",\n \"female\",\n \"women\"\n ],\n \"🤼\": [\n \"people_wrestling\",\n \"sport\",\n \"wrestle\",\n \"wrestler\",\n \"wrestlers\"\n ],\n \"🤼‍♂️\": [\n \"men_wrestling\",\n \"sports\",\n \"wrestlers\",\n \"male\",\n \"man\",\n \"wrestle\",\n \"wrestler\"\n ],\n \"🤼‍♀️\": [\n \"women_wrestling\",\n \"sports\",\n \"wrestlers\",\n \"female\",\n \"woman\",\n \"wrestle\",\n \"wrestler\"\n ],\n \"🤽\": [\n \"person_playing_water_polo\",\n \"sport\"\n ],\n \"🤽‍♂️\": [\n \"man_playing_water_polo\",\n \"sports\",\n \"pool\",\n \"male\",\n \"men\"\n ],\n \"🤽‍♀️\": [\n \"woman_playing_water_polo\",\n \"sports\",\n \"pool\",\n \"female\",\n \"women\"\n ],\n \"🤾\": [\n \"person_playing_handball\",\n \"sport\",\n \"ball\"\n ],\n \"🤾‍♂️\": [\n \"man_playing_handball\",\n \"sports\",\n \"ball\",\n \"male\",\n \"men\"\n ],\n \"🤾‍♀️\": [\n \"woman_playing_handball\",\n \"sports\",\n \"ball\",\n \"female\",\n \"women\"\n ],\n \"🤹\": [\n \"person_juggling\",\n \"performance\",\n \"balance\",\n \"juggle\",\n \"juggler\",\n \"multitask\",\n \"skill\"\n ],\n \"🤹‍♂️\": [\n \"man_juggling\",\n \"juggle\",\n \"balance\",\n \"skill\",\n \"multitask\",\n \"juggler\",\n \"male\",\n \"men\"\n ],\n \"🤹‍♀️\": [\n \"woman_juggling\",\n \"juggle\",\n \"balance\",\n \"skill\",\n \"multitask\",\n \"female\",\n \"juggler\",\n \"women\"\n ],\n \"🧘\": [\n \"person_in_lotus_position\",\n \"meditate\",\n \"meditation\",\n \"serenity\",\n \"yoga\"\n ],\n \"🧘‍♂️\": [\n \"man_in_lotus_position\",\n \"man\",\n \"male\",\n \"meditation\",\n \"yoga\",\n \"serenity\",\n \"zen\",\n \"mindfulness\",\n \"men\"\n ],\n \"🧘‍♀️\": [\n \"woman_in_lotus_position\",\n \"woman\",\n \"female\",\n \"meditation\",\n \"yoga\",\n \"serenity\",\n \"zen\",\n \"mindfulness\",\n \"women\"\n ],\n \"🛀\": [\n \"person_taking_bath\",\n \"clean\",\n \"shower\",\n \"bathroom\",\n \"bathing\",\n \"bathtub\",\n \"hot\"\n ],\n \"🛌\": [\n \"person_in_bed\",\n \"bed\",\n \"rest\",\n \"accommodation\",\n \"hotel\",\n \"sleep\",\n \"sleeping\"\n ],\n \"🧑‍🤝‍🧑\": [\n \"people_holding_hands\",\n \"friendship\",\n \"couple\",\n \"date\",\n \"gender\",\n \"hand\",\n \"hold\",\n \"inclusive\",\n \"neutral\",\n \"nonconforming\"\n ],\n \"👭\": [\n \"women_holding_hands\",\n \"pair\",\n \"friendship\",\n \"couple\",\n \"love\",\n \"like\",\n \"female\",\n \"people\",\n \"human\",\n \"date\",\n \"hand\",\n \"hold\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"two\",\n \"woman\"\n ],\n \"👫\": [\n \"woman_and_man_holding_hands\",\n \"pair\",\n \"people\",\n \"human\",\n \"love\",\n \"date\",\n \"dating\",\n \"like\",\n \"affection\",\n \"valentines\",\n \"marriage\",\n \"couple\",\n \"female\",\n \"hand\",\n \"heterosexual\",\n \"hold\",\n \"male\",\n \"men\",\n \"straight\",\n \"women\"\n ],\n \"👬\": [\n \"men_holding_hands\",\n \"pair\",\n \"couple\",\n \"love\",\n \"like\",\n \"bromance\",\n \"friendship\",\n \"people\",\n \"human\",\n \"date\",\n \"gay\",\n \"hand\",\n \"hold\",\n \"lgbt\",\n \"male\",\n \"man\",\n \"pride\",\n \"two\"\n ],\n \"💏\": [\n \"kiss\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"gender\",\n \"heart\",\n \"kissing\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"romance\",\n \"woman\",\n \"women\"\n ],\n \"👩‍❤️‍💋‍👨\": [\n \"kiss_woman_man\",\n \"love\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"heart\",\n \"kissing\",\n \"male\",\n \"men\",\n \"romance\",\n \"women\"\n ],\n \"👨‍❤️‍💋‍👨\": [\n \"kiss_man_man\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"gay\",\n \"heart\",\n \"kissing\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"romance\",\n \"two\"\n ],\n \"👩‍❤️‍💋‍👩\": [\n \"kiss_woman_woman\",\n \"pair\",\n \"valentines\",\n \"love\",\n \"like\",\n \"dating\",\n \"marriage\",\n \"couple\",\n \"couplekiss\",\n \"female\",\n \"heart\",\n \"kissing\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"romance\",\n \"two\",\n \"women\"\n ],\n \"💑\": [\n \"couple_with_heart\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"female\",\n \"gender\",\n \"loving\",\n \"male\",\n \"man\",\n \"men\",\n \"neutral\",\n \"romance\",\n \"woman\",\n \"women\"\n ],\n \"👩‍❤️‍👨\": [\n \"couple_with_heart_woman_man\",\n \"love\",\n \"female\",\n \"male\",\n \"men\",\n \"romance\",\n \"women\"\n ],\n \"👨‍❤️‍👨\": [\n \"couple_with_heart_man_man\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"romance\",\n \"two\"\n ],\n \"👩‍❤️‍👩\": [\n \"couple_with_heart_woman_woman\",\n \"pair\",\n \"love\",\n \"like\",\n \"affection\",\n \"human\",\n \"dating\",\n \"valentines\",\n \"marriage\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"pride\",\n \"romance\",\n \"two\",\n \"women\"\n ],\n \"👪\": [\n \"family\",\n \"home\",\n \"parents\",\n \"child\",\n \"mom\",\n \"dad\",\n \"father\",\n \"mother\",\n \"people\",\n \"human\",\n \"boy\",\n \"female\",\n \"male\",\n \"man\",\n \"men\",\n \"woman\",\n \"women\"\n ],\n \"👨‍👩‍👦\": [\n \"family_man_woman_boy\",\n \"love\",\n \"father\",\n \"mother\",\n \"son\"\n ],\n \"👨‍👩‍👧\": [\n \"family_man_woman_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"women\"\n ],\n \"👨‍👩‍👧‍👦\": [\n \"family_man_woman_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"son\",\n \"women\"\n ],\n \"👨‍👩‍👦‍👦\": [\n \"family_man_woman_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👨‍👩‍👧‍👧\": [\n \"family_man_woman_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"female\",\n \"male\",\n \"men\",\n \"mother\",\n \"two\",\n \"women\"\n ],\n \"👨‍👨‍👦\": [\n \"family_man_man_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"son\",\n \"two\"\n ],\n \"👨‍👨‍👧\": [\n \"family_man_man_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"two\"\n ],\n \"👨‍👨‍👧‍👦\": [\n \"family_man_man_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"son\",\n \"two\"\n ],\n \"👨‍👨‍👦‍👦\": [\n \"family_man_man_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"sons\",\n \"two\"\n ],\n \"👨‍👨‍👧‍👧\": [\n \"family_man_man_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"fathers\",\n \"gay\",\n \"lgbt\",\n \"male\",\n \"men\",\n \"pride\",\n \"two\"\n ],\n \"👩‍👩‍👦\": [\n \"family_woman_woman_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"son\",\n \"two\",\n \"women\"\n ],\n \"👩‍👩‍👧\": [\n \"family_woman_woman_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"two\",\n \"women\"\n ],\n \"👩‍👩‍👧‍👦\": [\n \"family_woman_woman_girl_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"son\",\n \"two\",\n \"women\"\n ],\n \"👩‍👩‍👦‍👦\": [\n \"family_woman_woman_boy_boy\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👩‍👩‍👧‍👧\": [\n \"family_woman_woman_girl_girl\",\n \"home\",\n \"parents\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"female\",\n \"lesbian\",\n \"lgbt\",\n \"mother\",\n \"mothers\",\n \"pride\",\n \"two\",\n \"women\"\n ],\n \"👨‍👦\": [\n \"family_man_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"father\",\n \"male\",\n \"men\",\n \"son\"\n ],\n \"👨‍👦‍👦\": [\n \"family_man_boy_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"father\",\n \"male\",\n \"men\",\n \"sons\",\n \"two\"\n ],\n \"👨‍👧\": [\n \"family_man_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"father\",\n \"female\",\n \"male\"\n ],\n \"👨‍👧‍👦\": [\n \"family_man_girl_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"father\",\n \"male\",\n \"men\",\n \"son\"\n ],\n \"👨‍👧‍👧\": [\n \"family_man_girl_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"father\",\n \"female\",\n \"male\",\n \"two\"\n ],\n \"👩‍👦\": [\n \"family_woman_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"female\",\n \"mother\",\n \"son\",\n \"women\"\n ],\n \"👩‍👦‍👦\": [\n \"family_woman_boy_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"female\",\n \"mother\",\n \"sons\",\n \"two\",\n \"women\"\n ],\n \"👩‍👧\": [\n \"family_woman_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"child\",\n \"daughter\",\n \"female\",\n \"mother\",\n \"women\"\n ],\n \"👩‍👧‍👦\": [\n \"family_woman_girl_boy\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughter\",\n \"female\",\n \"male\",\n \"mother\",\n \"son\"\n ],\n \"👩‍👧‍👧\": [\n \"family_woman_girl_girl\",\n \"home\",\n \"parent\",\n \"people\",\n \"human\",\n \"children\",\n \"child\",\n \"daughters\",\n \"female\",\n \"mother\",\n \"two\",\n \"women\"\n ],\n \"🗣️\": [\n \"speaking_head\",\n \"user\",\n \"person\",\n \"human\",\n \"sing\",\n \"say\",\n \"talk\",\n \"face\",\n \"mansplaining\",\n \"shout\",\n \"shouting\",\n \"silhouette\",\n \"speak\"\n ],\n \"👤\": [\n \"bust_in_silhouette\",\n \"user\",\n \"person\",\n \"human\",\n \"shadow\"\n ],\n \"👥\": [\n \"busts_in_silhouette\",\n \"user\",\n \"person\",\n \"human\",\n \"group\",\n \"team\",\n \"bust\",\n \"people\",\n \"shadows\",\n \"silhouettes\",\n \"two\",\n \"users\",\n \"contributors\"\n ],\n \"👣\": [\n \"footprints\",\n \"feet\",\n \"tracking\",\n \"walking\",\n \"beach\",\n \"body\",\n \"clothing\",\n \"footprint\",\n \"footsteps\",\n \"print\",\n \"tracks\"\n ],\n \"🐵\": [\n \"monkey_face\",\n \"animal\",\n \"nature\",\n \"circus\",\n \"head\"\n ],\n \"🐒\": [\n \"monkey\",\n \"animal\",\n \"nature\",\n \"banana\",\n \"circus\",\n \"cheeky\"\n ],\n \"🦍\": [\n \"gorilla\",\n \"animal\",\n \"nature\",\n \"circus\"\n ],\n \"🦧\": [\n \"orangutan\",\n \"animal\",\n \"ape\"\n ],\n \"🐶\": [\n \"dog_face\",\n \"animal\",\n \"friend\",\n \"nature\",\n \"woof\",\n \"puppy\",\n \"pet\",\n \"faithful\"\n ],\n \"🐕\": [\n \"dog\",\n \"animal\",\n \"nature\",\n \"friend\",\n \"doge\",\n \"pet\",\n \"faithful\",\n \"dog2\",\n \"doggo\"\n ],\n \"🦮\": [\n \"guide_dog\",\n \"animal\",\n \"blind\",\n \"accessibility\",\n \"eye\",\n \"seeing\"\n ],\n \"🐕‍🦺\": [\n \"service_dog\",\n \"blind\",\n \"animal\",\n \"accessibility\",\n \"assistance\"\n ],\n \"🐩\": [\n \"poodle\",\n \"dog\",\n \"animal\",\n \"101\",\n \"nature\",\n \"pet\",\n \"miniature\",\n \"standard\",\n \"toy\"\n ],\n \"🐺\": [\n \"wolf\",\n \"animal\",\n \"nature\",\n \"wild\",\n \"face\"\n ],\n \"🦊\": [\n \"fox\",\n \"animal\",\n \"nature\",\n \"face\"\n ],\n \"🦝\": [\n \"raccoon\",\n \"animal\",\n \"nature\",\n \"curious\",\n \"face\",\n \"sly\"\n ],\n \"🐱\": [\n \"cat_face\",\n \"animal\",\n \"meow\",\n \"nature\",\n \"pet\",\n \"kitten\",\n \"kitty\"\n ],\n \"🐈\": [\n \"cat\",\n \"animal\",\n \"meow\",\n \"pet\",\n \"cats\",\n \"cat2\",\n \"domestic\",\n \"feline\",\n \"housecat\"\n ],\n \"🦁\": [\n \"lion\",\n \"animal\",\n \"nature\",\n \"face\",\n \"leo\",\n \"zodiac\"\n ],\n \"🐯\": [\n \"tiger_face\",\n \"animal\",\n \"cat\",\n \"danger\",\n \"wild\",\n \"nature\",\n \"roar\",\n \"cute\"\n ],\n \"🐅\": [\n \"tiger\",\n \"animal\",\n \"nature\",\n \"roar\",\n \"bengal\",\n \"tiger2\"\n ],\n \"🐆\": [\n \"leopard\",\n \"animal\",\n \"nature\",\n \"african\",\n \"jaguar\"\n ],\n \"🐴\": [\n \"horse_face\",\n \"animal\",\n \"brown\",\n \"nature\",\n \"head\"\n ],\n \"🐎\": [\n \"horse\",\n \"animal\",\n \"gamble\",\n \"luck\",\n \"equestrian\",\n \"galloping\",\n \"racehorse\",\n \"racing\",\n \"speed\"\n ],\n \"🦄\": [\n \"unicorn\",\n \"animal\",\n \"nature\",\n \"mystical\",\n \"face\"\n ],\n \"🦓\": [\n \"zebra\",\n \"animal\",\n \"nature\",\n \"stripes\",\n \"safari\",\n \"face\",\n \"stripe\"\n ],\n \"🦌\": [\n \"deer\",\n \"animal\",\n \"nature\",\n \"horns\",\n \"venison\",\n \"buck\",\n \"reindeer\",\n \"stag\"\n ],\n \"🐮\": [\n \"cow_face\",\n \"beef\",\n \"ox\",\n \"animal\",\n \"nature\",\n \"moo\",\n \"milk\",\n \"happy\"\n ],\n \"🐂\": [\n \"ox\",\n \"animal\",\n \"cow\",\n \"beef\",\n \"bull\",\n \"bullock\",\n \"oxen\",\n \"steer\",\n \"taurus\",\n \"zodiac\"\n ],\n \"🐃\": [\n \"water_buffalo\",\n \"animal\",\n \"nature\",\n \"ox\",\n \"cow\",\n \"domestic\"\n ],\n \"🐄\": [\n \"cow\",\n \"beef\",\n \"ox\",\n \"animal\",\n \"nature\",\n \"moo\",\n \"milk\",\n \"cow2\",\n \"dairy\"\n ],\n \"🐷\": [\n \"pig_face\",\n \"animal\",\n \"oink\",\n \"nature\",\n \"head\"\n ],\n \"🐖\": [\n \"pig\",\n \"animal\",\n \"nature\",\n \"hog\",\n \"pig2\",\n \"sow\"\n ],\n \"🐗\": [\n \"boar\",\n \"animal\",\n \"nature\",\n \"pig\",\n \"warthog\",\n \"wild\"\n ],\n \"🐽\": [\n \"pig_nose\",\n \"animal\",\n \"oink\",\n \"face\",\n \"snout\"\n ],\n \"🐏\": [\n \"ram\",\n \"animal\",\n \"sheep\",\n \"nature\",\n \"aries\",\n \"male\",\n \"zodiac\"\n ],\n \"🐑\": [\n \"ewe\",\n \"animal\",\n \"nature\",\n \"wool\",\n \"shipit\",\n \"female\",\n \"lamb\",\n \"sheep\"\n ],\n \"🐐\": [\n \"goat\",\n \"animal\",\n \"nature\",\n \"capricorn\",\n \"zodiac\"\n ],\n \"🐪\": [\n \"camel\",\n \"animal\",\n \"hot\",\n \"desert\",\n \"hump\",\n \"arabian\",\n \"bump\",\n \"dromedary\",\n \"one\"\n ],\n \"🐫\": [\n \"two_hump_camel\",\n \"animal\",\n \"nature\",\n \"hot\",\n \"desert\",\n \"hump\",\n \"asian\",\n \"bactrian\",\n \"bump\"\n ],\n \"🦙\": [\n \"llama\",\n \"animal\",\n \"nature\",\n \"alpaca\",\n \"guanaco\",\n \"vicuña\",\n \"wool\"\n ],\n \"🦒\": [\n \"giraffe\",\n \"animal\",\n \"nature\",\n \"spots\",\n \"safari\",\n \"face\"\n ],\n \"🐘\": [\n \"elephant\",\n \"animal\",\n \"nature\",\n \"nose\",\n \"th\",\n \"circus\"\n ],\n \"🦏\": [\n \"rhinoceros\",\n \"animal\",\n \"nature\",\n \"horn\",\n \"rhino\"\n ],\n \"🦛\": [\n \"hippopotamus\",\n \"animal\",\n \"nature\",\n \"hippo\"\n ],\n \"🐭\": [\n \"mouse_face\",\n \"animal\",\n \"nature\",\n \"cheese_wedge\",\n \"rodent\"\n ],\n \"🐁\": [\n \"mouse\",\n \"animal\",\n \"nature\",\n \"rodent\",\n \"dormouse\",\n \"mice\",\n \"mouse2\"\n ],\n \"🐀\": [\n \"rat\",\n \"animal\",\n \"mouse\",\n \"rodent\"\n ],\n \"🐹\": [\n \"hamster\",\n \"animal\",\n \"nature\",\n \"face\",\n \"pet\"\n ],\n \"🐰\": [\n \"rabbit_face\",\n \"animal\",\n \"nature\",\n \"pet\",\n \"spring\",\n \"magic\",\n \"bunny\",\n \"easter\"\n ],\n \"🐇\": [\n \"rabbit\",\n \"animal\",\n \"nature\",\n \"pet\",\n \"magic\",\n \"spring\",\n \"bunny\",\n \"rabbit2\"\n ],\n \"🐿️\": [\n \"chipmunk\",\n \"animal\",\n \"nature\",\n \"rodent\",\n \"squirrel\"\n ],\n \"🦔\": [\n \"hedgehog\",\n \"animal\",\n \"nature\",\n \"spiny\",\n \"face\"\n ],\n \"🦇\": [\n \"bat\",\n \"animal\",\n \"nature\",\n \"blind\",\n \"vampire\",\n \"batman\"\n ],\n \"🐻\": [\n \"bear\",\n \"animal\",\n \"nature\",\n \"wild\",\n \"face\",\n \"teddy\"\n ],\n \"🐨\": [\n \"koala\",\n \"animal\",\n \"nature\",\n \"bear\",\n \"face\",\n \"marsupial\"\n ],\n \"🐼\": [\n \"panda\",\n \"animal\",\n \"nature\",\n \"face\"\n ],\n \"🦥\": [\n \"sloth\",\n \"animal\",\n \"lazy\",\n \"slow\"\n ],\n \"🦦\": [\n \"otter\",\n \"animal\",\n \"fishing\",\n \"playful\"\n ],\n \"🦨\": [\n \"skunk\",\n \"animal\",\n \"smelly\",\n \"stink\"\n ],\n \"🦘\": [\n \"kangaroo\",\n \"animal\",\n \"nature\",\n \"australia\",\n \"joey\",\n \"hop\",\n \"marsupial\",\n \"jump\",\n \"roo\"\n ],\n \"🦡\": [\n \"badger\",\n \"animal\",\n \"nature\",\n \"honey\",\n \"pester\"\n ],\n \"🐾\": [\n \"paw_prints\",\n \"animal\",\n \"tracking\",\n \"footprints\",\n \"dog\",\n \"cat\",\n \"pet\",\n \"feet\",\n \"kitten\",\n \"print\",\n \"puppy\"\n ],\n \"🦃\": [\n \"turkey\",\n \"animal\",\n \"bird\",\n \"thanksgiving\",\n \"wild\"\n ],\n \"🐔\": [\n \"chicken\",\n \"animal\",\n \"cluck\",\n \"nature\",\n \"bird\",\n \"hen\"\n ],\n \"🐓\": [\n \"rooster\",\n \"animal\",\n \"nature\",\n \"chicken\",\n \"bird\",\n \"cock\",\n \"cockerel\"\n ],\n \"🐣\": [\n \"hatching_chick\",\n \"animal\",\n \"chicken\",\n \"egg\",\n \"born\",\n \"baby\",\n \"bird\"\n ],\n \"🐤\": [\n \"baby_chick\",\n \"animal\",\n \"chicken\",\n \"bird\",\n \"yellow\"\n ],\n \"🐥\": [\n \"front_facing_baby_chick\",\n \"animal\",\n \"chicken\",\n \"baby\",\n \"bird\",\n \"hatched\",\n \"standing\"\n ],\n \"🐦\": [\n \"bird\",\n \"animal\",\n \"nature\",\n \"fly\",\n \"tweet\",\n \"spring\"\n ],\n \"🐧\": [\n \"penguin\",\n \"animal\",\n \"nature\",\n \"bird\"\n ],\n \"🕊️\": [\n \"dove\",\n \"animal\",\n \"bird\",\n \"fly\",\n \"peace\"\n ],\n \"🦅\": [\n \"eagle\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"bald\"\n ],\n \"🦆\": [\n \"duck\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"mallard\"\n ],\n \"🦢\": [\n \"swan\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"cygnet\",\n \"duckling\",\n \"ugly\"\n ],\n \"🦉\": [\n \"owl\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"hoot\",\n \"wise\"\n ],\n \"🦩\": [\n \"flamingo\",\n \"animal\",\n \"flamboyant\",\n \"tropical\"\n ],\n \"🦚\": [\n \"peacock\",\n \"animal\",\n \"nature\",\n \"peahen\",\n \"bird\",\n \"ostentatious\",\n \"proud\"\n ],\n \"🦜\": [\n \"parrot\",\n \"animal\",\n \"nature\",\n \"bird\",\n \"pirate\",\n \"talk\"\n ],\n \"🐸\": [\n \"frog\",\n \"animal\",\n \"nature\",\n \"croak\",\n \"toad\",\n \"face\"\n ],\n \"🐊\": [\n \"crocodile\",\n \"animal\",\n \"nature\",\n \"reptile\",\n \"lizard\",\n \"alligator\",\n \"croc\"\n ],\n \"🐢\": [\n \"turtle\",\n \"animal\",\n \"slow\",\n \"nature\",\n \"tortoise\",\n \"terrapin\"\n ],\n \"🦎\": [\n \"lizard\",\n \"animal\",\n \"nature\",\n \"reptile\",\n \"gecko\"\n ],\n \"🐍\": [\n \"snake\",\n \"animal\",\n \"evil\",\n \"nature\",\n \"hiss\",\n \"python\",\n \"bearer\",\n \"ophiuchus\",\n \"serpent\",\n \"zodiac\"\n ],\n \"🐲\": [\n \"dragon_face\",\n \"animal\",\n \"myth\",\n \"nature\",\n \"chinese\",\n \"green\",\n \"fairy\",\n \"head\",\n \"tale\"\n ],\n \"🐉\": [\n \"dragon\",\n \"animal\",\n \"myth\",\n \"nature\",\n \"chinese\",\n \"green\",\n \"fairy\",\n \"tale\"\n ],\n \"🦕\": [\n \"sauropod\",\n \"animal\",\n \"nature\",\n \"dinosaur\",\n \"brachiosaurus\",\n \"brontosaurus\",\n \"diplodocus\",\n \"extinct\"\n ],\n \"🦖\": [\n \"t_rex\",\n \"animal\",\n \"nature\",\n \"dinosaur\",\n \"tyrannosaurus\",\n \"extinct\",\n \"trex\"\n ],\n \"🐳\": [\n \"spouting_whale\",\n \"animal\",\n \"nature\",\n \"sea\",\n \"ocean\",\n \"cute\",\n \"face\"\n ],\n \"🐋\": [\n \"whale\",\n \"animal\",\n \"nature\",\n \"sea\",\n \"ocean\",\n \"whale2\"\n ],\n \"🐬\": [\n \"dolphin\",\n \"animal\",\n \"nature\",\n \"fish\",\n \"sea\",\n \"ocean\",\n \"flipper\",\n \"fins\",\n \"beach\"\n ],\n \"🐟\": [\n \"fish\",\n \"animal\",\n \"food\",\n \"nature\",\n \"freshwater\",\n \"pisces\",\n \"zodiac\"\n ],\n \"🐠\": [\n \"tropical_fish\",\n \"animal\",\n \"swim\",\n \"ocean\",\n \"beach\",\n \"nemo\",\n \"blue\",\n \"yellow\"\n ],\n \"🐡\": [\n \"blowfish\",\n \"animal\",\n \"nature\",\n \"food\",\n \"sea\",\n \"ocean\",\n \"fish\",\n \"fugu\",\n \"pufferfish\"\n ],\n \"🦈\": [\n \"shark\",\n \"animal\",\n \"nature\",\n \"fish\",\n \"sea\",\n \"ocean\",\n \"jaws\",\n \"fins\",\n \"beach\",\n \"great\",\n \"white\"\n ],\n \"🐙\": [\n \"octopus\",\n \"animal\",\n \"creature\",\n \"ocean\",\n \"sea\",\n \"nature\",\n \"beach\"\n ],\n \"🐚\": [\n \"spiral_shell\",\n \"nature\",\n \"sea\",\n \"beach\",\n \"seashell\"\n ],\n \"🐌\": [\n \"snail\",\n \"slow\",\n \"animal\",\n \"shell\",\n \"garden\",\n \"slug\"\n ],\n \"🦋\": [\n \"butterfly\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"caterpillar\",\n \"pretty\"\n ],\n \"🐛\": [\n \"bug\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"worm\",\n \"caterpillar\"\n ],\n \"🐜\": [\n \"ant\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"bug\"\n ],\n \"🐝\": [\n \"honeybee\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"bug\",\n \"spring\",\n \"honey\",\n \"bee\",\n \"bumblebee\"\n ],\n \"🐞\": [\n \"lady_beetle\",\n \"animal\",\n \"insect\",\n \"nature\",\n \"ladybug\",\n \"bug\",\n \"ladybird\"\n ],\n \"🦗\": [\n \"cricket\",\n \"animal\",\n \"chirp\",\n \"grasshopper\",\n \"insect\",\n \"orthoptera\"\n ],\n \"🕷️\": [\n \"spider\",\n \"animal\",\n \"arachnid\",\n \"insect\"\n ],\n \"🕸️\": [\n \"spider_web\",\n \"animal\",\n \"insect\",\n \"arachnid\",\n \"silk\",\n \"cobweb\",\n \"spiderweb\"\n ],\n \"🦂\": [\n \"scorpion\",\n \"animal\",\n \"arachnid\",\n \"scorpio\",\n \"scorpius\",\n \"zodiac\"\n ],\n \"🦟\": [\n \"mosquito\",\n \"animal\",\n \"nature\",\n \"insect\",\n \"malaria\",\n \"disease\",\n \"fever\",\n \"pest\",\n \"virus\"\n ],\n \"🦠\": [\n \"microbe\",\n \"amoeba\",\n \"bacteria\",\n \"germs\",\n \"virus\",\n \"covid\",\n \"cell\",\n \"coronavirus\",\n \"germ\",\n \"microorganism\"\n ],\n \"💐\": [\n \"bouquet\",\n \"flowers\",\n \"nature\",\n \"spring\",\n \"flower\",\n \"plant\",\n \"romance\"\n ],\n \"🌸\": [\n \"cherry_blossom\",\n \"nature\",\n \"plant\",\n \"spring\",\n \"flower\",\n \"pink\",\n \"sakura\"\n ],\n \"💮\": [\n \"white_flower\",\n \"japanese\",\n \"spring\",\n \"blossom\",\n \"cherry\",\n \"doily\",\n \"done\",\n \"paper\",\n \"stamp\",\n \"well\"\n ],\n \"🏵️\": [\n \"rosette\",\n \"flower\",\n \"decoration\",\n \"military\",\n \"plant\"\n ],\n \"🌹\": [\n \"rose\",\n \"flowers\",\n \"valentines\",\n \"love\",\n \"spring\",\n \"flower\",\n \"plant\",\n \"red\"\n ],\n \"🥀\": [\n \"wilted_flower\",\n \"plant\",\n \"nature\",\n \"flower\",\n \"rose\",\n \"dead\",\n \"drooping\"\n ],\n \"🌺\": [\n \"hibiscus\",\n \"plant\",\n \"vegetable\",\n \"flowers\",\n \"beach\",\n \"flower\"\n ],\n \"🌻\": [\n \"sunflower\",\n \"nature\",\n \"plant\",\n \"fall\",\n \"flower\",\n \"sun\",\n \"yellow\"\n ],\n \"🌼\": [\n \"blossom\",\n \"nature\",\n \"flowers\",\n \"yellow\",\n \"blossoming flower\",\n \"daisy\",\n \"flower\",\n \"plant\"\n ],\n \"🌷\": [\n \"tulip\",\n \"flowers\",\n \"plant\",\n \"nature\",\n \"summer\",\n \"spring\",\n \"flower\"\n ],\n \"🌱\": [\n \"seedling\",\n \"plant\",\n \"nature\",\n \"grass\",\n \"lawn\",\n \"spring\",\n \"sprout\",\n \"sprouting\",\n \"young\",\n \"seed\"\n ],\n \"🌲\": [\n \"evergreen_tree\",\n \"plant\",\n \"nature\",\n \"fir\",\n \"pine\",\n \"wood\"\n ],\n \"🌳\": [\n \"deciduous_tree\",\n \"plant\",\n \"nature\",\n \"rounded\",\n \"shedding\",\n \"wood\"\n ],\n \"🌴\": [\n \"palm_tree\",\n \"plant\",\n \"vegetable\",\n \"nature\",\n \"summer\",\n \"beach\",\n \"mojito\",\n \"tropical\",\n \"coconut\"\n ],\n \"🌵\": [\n \"cactus\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"desert\"\n ],\n \"🌾\": [\n \"sheaf_of_rice\",\n \"nature\",\n \"plant\",\n \"crop\",\n \"ear\",\n \"farming\",\n \"grain\",\n \"wheat\"\n ],\n \"🌿\": [\n \"herb\",\n \"vegetable\",\n \"plant\",\n \"medicine\",\n \"weed\",\n \"grass\",\n \"lawn\",\n \"crop\",\n \"leaf\"\n ],\n \"☘️\": [\n \"shamrock\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"irish\",\n \"clover\",\n \"trefoil\"\n ],\n \"🍀\": [\n \"four_leaf_clover\",\n \"vegetable\",\n \"plant\",\n \"nature\",\n \"lucky\",\n \"irish\",\n \"ireland\",\n \"luck\"\n ],\n \"🍁\": [\n \"maple_leaf\",\n \"nature\",\n \"plant\",\n \"vegetable\",\n \"ca\",\n \"fall\",\n \"canada\",\n \"canadian\",\n \"falling\"\n ],\n \"🍂\": [\n \"fallen_leaf\",\n \"nature\",\n \"plant\",\n \"vegetable\",\n \"leaves\",\n \"autumn\",\n \"brown\",\n \"fall\",\n \"falling\"\n ],\n \"🍃\": [\n \"leaf_fluttering_in_wind\",\n \"nature\",\n \"plant\",\n \"tree\",\n \"vegetable\",\n \"grass\",\n \"lawn\",\n \"spring\",\n \"blow\",\n \"flutter\",\n \"green\",\n \"leaves\"\n ],\n \"🍇\": [\n \"grapes\",\n \"fruit\",\n \"food\",\n \"wine\",\n \"grape\",\n \"plant\"\n ],\n \"🍈\": [\n \"melon\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"cantaloupe\",\n \"honeydew\",\n \"muskmelon\",\n \"plant\"\n ],\n \"🍉\": [\n \"watermelon\",\n \"fruit\",\n \"food\",\n \"picnic\",\n \"summer\",\n \"plant\"\n ],\n \"🍊\": [\n \"tangerine\",\n \"food\",\n \"fruit\",\n \"nature\",\n \"orange\",\n \"mandarin\",\n \"plant\"\n ],\n \"🍋\": [\n \"lemon\",\n \"fruit\",\n \"nature\",\n \"citrus\",\n \"lemonade\",\n \"plant\"\n ],\n \"🍌\": [\n \"banana\",\n \"fruit\",\n \"food\",\n \"monkey\",\n \"plant\",\n \"plantain\"\n ],\n \"🍍\": [\n \"pineapple\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🥭\": [\n \"mango\",\n \"fruit\",\n \"food\",\n \"tropical\"\n ],\n \"🍎\": [\n \"red_apple\",\n \"fruit\",\n \"mac\",\n \"school\",\n \"delicious\",\n \"plant\"\n ],\n \"🍏\": [\n \"green_apple\",\n \"fruit\",\n \"nature\",\n \"delicious\",\n \"golden\",\n \"granny\",\n \"plant\",\n \"smith\"\n ],\n \"🍐\": [\n \"pear\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🍑\": [\n \"peach\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"bottom\",\n \"butt\",\n \"plant\"\n ],\n \"🍒\": [\n \"cherries\",\n \"food\",\n \"fruit\",\n \"berries\",\n \"cherry\",\n \"plant\",\n \"red\",\n \"wild\"\n ],\n \"🍓\": [\n \"strawberry\",\n \"fruit\",\n \"food\",\n \"nature\",\n \"berry\",\n \"plant\"\n ],\n \"🥝\": [\n \"kiwi_fruit\",\n \"fruit\",\n \"food\",\n \"chinese\",\n \"gooseberry\",\n \"kiwifruit\"\n ],\n \"🍅\": [\n \"tomato\",\n \"fruit\",\n \"vegetable\",\n \"nature\",\n \"food\",\n \"plant\"\n ],\n \"🥥\": [\n \"coconut\",\n \"fruit\",\n \"nature\",\n \"food\",\n \"palm\",\n \"cocoanut\",\n \"colada\",\n \"piña\"\n ],\n \"🥑\": [\n \"avocado\",\n \"fruit\",\n \"food\"\n ],\n \"🍆\": [\n \"eggplant\",\n \"vegetable\",\n \"nature\",\n \"food\",\n \"aubergine\",\n \"phallic\",\n \"plant\",\n \"purple\"\n ],\n \"🥔\": [\n \"potato\",\n \"food\",\n \"tuber\",\n \"vegatable\",\n \"starch\",\n \"baked\",\n \"idaho\",\n \"vegetable\"\n ],\n \"🥕\": [\n \"carrot\",\n \"vegetable\",\n \"food\",\n \"orange\"\n ],\n \"🌽\": [\n \"ear_of_corn\",\n \"food\",\n \"vegetable\",\n \"plant\",\n \"cob\",\n \"maize\",\n \"maze\"\n ],\n \"🌶️\": [\n \"hot_pepper\",\n \"food\",\n \"spicy\",\n \"chilli\",\n \"chili\",\n \"plant\"\n ],\n \"🥒\": [\n \"cucumber\",\n \"fruit\",\n \"food\",\n \"pickle\",\n \"gherkin\",\n \"vegetable\"\n ],\n \"🥬\": [\n \"leafy_green\",\n \"food\",\n \"vegetable\",\n \"plant\",\n \"bok choy\",\n \"cabbage\",\n \"kale\",\n \"lettuce\",\n \"chinese\",\n \"cos\",\n \"greens\",\n \"romaine\"\n ],\n \"🥦\": [\n \"broccoli\",\n \"fruit\",\n \"food\",\n \"vegetable\",\n \"cabbage\",\n \"wild\"\n ],\n \"🧄\": [\n \"garlic\",\n \"food\",\n \"spice\",\n \"cook\",\n \"flavoring\",\n \"plant\",\n \"vegetable\"\n ],\n \"🧅\": [\n \"onion\",\n \"cook\",\n \"food\",\n \"spice\",\n \"flavoring\",\n \"plant\",\n \"vegetable\"\n ],\n \"🍄\": [\n \"mushroom\",\n \"plant\",\n \"vegetable\",\n \"fungus\",\n \"shroom\",\n \"toadstool\"\n ],\n \"🥜\": [\n \"peanuts\",\n \"food\",\n \"nut\",\n \"nuts\",\n \"peanut\",\n \"vegetable\"\n ],\n \"🌰\": [\n \"chestnut\",\n \"food\",\n \"squirrel\",\n \"acorn\",\n \"nut\",\n \"plant\"\n ],\n \"🍞\": [\n \"bread\",\n \"food\",\n \"wheat\",\n \"breakfast\",\n \"toast\",\n \"loaf\"\n ],\n \"🥐\": [\n \"croissant\",\n \"food\",\n \"bread\",\n \"french\",\n \"breakfast\",\n \"crescent\",\n \"roll\"\n ],\n \"🥖\": [\n \"baguette_bread\",\n \"food\",\n \"bread\",\n \"french\",\n \"france\",\n \"bakery\"\n ],\n \"🥨\": [\n \"pretzel\",\n \"food\",\n \"bread\",\n \"twisted\",\n \"germany\",\n \"bakery\",\n \"soft\",\n \"twist\"\n ],\n \"🥯\": [\n \"bagel\",\n \"food\",\n \"bread\",\n \"bakery\",\n \"schmear\",\n \"jewish_bakery\",\n \"breakfast\",\n \"cheese\",\n \"cream\"\n ],\n \"🥞\": [\n \"pancakes\",\n \"food\",\n \"breakfast\",\n \"flapjacks\",\n \"hotcakes\",\n \"brunch\",\n \"crêpe\",\n \"crêpes\",\n \"hotcake\",\n \"pancake\"\n ],\n \"🧇\": [\n \"waffle\",\n \"food\",\n \"breakfast\",\n \"brunch\",\n \"indecisive\",\n \"iron\"\n ],\n \"🧀\": [\n \"cheese_wedge\",\n \"food\",\n \"chadder\",\n \"swiss\"\n ],\n \"🍖\": [\n \"meat_on_bone\",\n \"good\",\n \"food\",\n \"drumstick\",\n \"barbecue\",\n \"bbq\",\n \"manga\"\n ],\n \"🍗\": [\n \"poultry_leg\",\n \"food\",\n \"meat\",\n \"drumstick\",\n \"bird\",\n \"chicken\",\n \"turkey\",\n \"bone\"\n ],\n \"🥩\": [\n \"cut_of_meat\",\n \"food\",\n \"cow\",\n \"meat\",\n \"cut\",\n \"chop\",\n \"lambchop\",\n \"porkchop\",\n \"steak\"\n ],\n \"🥓\": [\n \"bacon\",\n \"food\",\n \"breakfast\",\n \"pork\",\n \"pig\",\n \"meat\",\n \"brunch\",\n \"rashers\"\n ],\n \"🍔\": [\n \"hamburger\",\n \"meat\",\n \"fast food\",\n \"beef\",\n \"cheeseburger\",\n \"mcdonalds\",\n \"burger king\"\n ],\n \"🍟\": [\n \"french_fries\",\n \"chips\",\n \"snack\",\n \"fast food\",\n \"potato\",\n \"mcdonald's\"\n ],\n \"🍕\": [\n \"pizza\",\n \"food\",\n \"party\",\n \"italy\",\n \"cheese\",\n \"pepperoni\",\n \"slice\"\n ],\n \"🌭\": [\n \"hot_dog\",\n \"food\",\n \"frankfurter\",\n \"america\",\n \"hotdog\",\n \"redhot\",\n \"sausage\",\n \"wiener\"\n ],\n \"🥪\": [\n \"sandwich\",\n \"food\",\n \"lunch\",\n \"bread\",\n \"toast\",\n \"bakery\",\n \"cheese\",\n \"deli\",\n \"meat\",\n \"vegetables\"\n ],\n \"🌮\": [\n \"taco\",\n \"food\",\n \"mexican\"\n ],\n \"🌯\": [\n \"burrito\",\n \"food\",\n \"mexican\",\n \"wrap\"\n ],\n \"🥙\": [\n \"stuffed_flatbread\",\n \"food\",\n \"flatbread\",\n \"stuffed\",\n \"gyro\",\n \"mediterranean\",\n \"doner\",\n \"falafel\",\n \"kebab\",\n \"pita\",\n \"sandwich\",\n \"shawarma\"\n ],\n \"🧆\": [\n \"falafel\",\n \"food\",\n \"mediterranean\",\n \"chickpea\",\n \"falfel\",\n \"meatball\"\n ],\n \"🥚\": [\n \"egg\",\n \"food\",\n \"chicken\",\n \"breakfast\",\n \"easter_egg\"\n ],\n \"🍳\": [\n \"cooking\",\n \"food\",\n \"breakfast\",\n \"kitchen\",\n \"egg\",\n \"skillet\",\n \"fried\",\n \"frying\",\n \"pan\"\n ],\n \"🥘\": [\n \"shallow_pan_of_food\",\n \"food\",\n \"cooking\",\n \"casserole\",\n \"paella\",\n \"skillet\",\n \"curry\"\n ],\n \"🍲\": [\n \"pot_of_food\",\n \"food\",\n \"meat\",\n \"soup\",\n \"hot pot\",\n \"bowl\",\n \"stew\"\n ],\n \"🥣\": [\n \"bowl_with_spoon\",\n \"food\",\n \"breakfast\",\n \"cereal\",\n \"oatmeal\",\n \"porridge\",\n \"congee\",\n \"tableware\"\n ],\n \"🥗\": [\n \"green_salad\",\n \"food\",\n \"healthy\",\n \"lettuce\",\n \"vegetable\"\n ],\n \"🍿\": [\n \"popcorn\",\n \"food\",\n \"movie theater\",\n \"films\",\n \"snack\",\n \"drama\",\n \"corn\",\n \"popping\"\n ],\n \"🧈\": [\n \"butter\",\n \"food\",\n \"cook\",\n \"dairy\"\n ],\n \"🧂\": [\n \"salt\",\n \"condiment\",\n \"shaker\"\n ],\n \"🥫\": [\n \"canned_food\",\n \"food\",\n \"soup\",\n \"tomatoes\",\n \"can\",\n \"preserve\",\n \"tin\",\n \"tinned\"\n ],\n \"🍱\": [\n \"bento_box\",\n \"food\",\n \"japanese\",\n \"box\",\n \"lunch\",\n \"assets\"\n ],\n \"🍘\": [\n \"rice_cracker\",\n \"food\",\n \"japanese\",\n \"snack\",\n \"senbei\"\n ],\n \"🍙\": [\n \"rice_ball\",\n \"food\",\n \"japanese\",\n \"onigiri\",\n \"omusubi\"\n ],\n \"🍚\": [\n \"cooked_rice\",\n \"food\",\n \"asian\",\n \"boiled\",\n \"bowl\",\n \"steamed\"\n ],\n \"🍛\": [\n \"curry_rice\",\n \"food\",\n \"spicy\",\n \"hot\",\n \"indian\"\n ],\n \"🍜\": [\n \"steaming_bowl\",\n \"food\",\n \"japanese\",\n \"noodle\",\n \"chopsticks\",\n \"ramen\",\n \"noodles\",\n \"soup\"\n ],\n \"🍝\": [\n \"spaghetti\",\n \"food\",\n \"italian\",\n \"pasta\",\n \"noodle\"\n ],\n \"🍠\": [\n \"roasted_sweet_potato\",\n \"food\",\n \"nature\",\n \"plant\",\n \"goguma\",\n \"yam\"\n ],\n \"🍢\": [\n \"oden\",\n \"skewer\",\n \"food\",\n \"japanese\",\n \"kebab\",\n \"seafood\",\n \"stick\"\n ],\n \"🍣\": [\n \"sushi\",\n \"food\",\n \"fish\",\n \"japanese\",\n \"rice\",\n \"sashimi\",\n \"seafood\"\n ],\n \"🍤\": [\n \"fried_shrimp\",\n \"food\",\n \"animal\",\n \"appetizer\",\n \"summer\",\n \"prawn\",\n \"tempura\"\n ],\n \"🍥\": [\n \"fish_cake_with_swirl\",\n \"food\",\n \"japan\",\n \"sea\",\n \"beach\",\n \"narutomaki\",\n \"pink\",\n \"swirl\",\n \"kamaboko\",\n \"surimi\",\n \"ramen\",\n \"design\",\n \"fishcake\",\n \"pastry\"\n ],\n \"🥮\": [\n \"moon_cake\",\n \"food\",\n \"autumn\",\n \"dessert\",\n \"festival\",\n \"mooncake\",\n \"yuèbǐng\"\n ],\n \"🍡\": [\n \"dango\",\n \"food\",\n \"dessert\",\n \"sweet\",\n \"japanese\",\n \"barbecue\",\n \"meat\",\n \"balls\",\n \"green\",\n \"pink\",\n \"skewer\",\n \"stick\",\n \"white\"\n ],\n \"🥟\": [\n \"dumpling\",\n \"food\",\n \"empanada\",\n \"pierogi\",\n \"potsticker\",\n \"gyoza\",\n \"gyōza\",\n \"jiaozi\"\n ],\n \"🥠\": [\n \"fortune_cookie\",\n \"food\",\n \"prophecy\",\n \"dessert\"\n ],\n \"🥡\": [\n \"takeout_box\",\n \"food\",\n \"leftovers\",\n \"chinese\",\n \"container\",\n \"out\",\n \"oyster\",\n \"pail\",\n \"take\"\n ],\n \"🦀\": [\n \"crab\",\n \"animal\",\n \"crustacean\",\n \"cancer\",\n \"zodiac\"\n ],\n \"🦞\": [\n \"lobster\",\n \"animal\",\n \"nature\",\n \"bisque\",\n \"claws\",\n \"seafood\"\n ],\n \"🦐\": [\n \"shrimp\",\n \"animal\",\n \"ocean\",\n \"nature\",\n \"seafood\",\n \"food\",\n \"prawn\",\n \"shellfish\",\n \"small\"\n ],\n \"🦑\": [\n \"squid\",\n \"animal\",\n \"nature\",\n \"ocean\",\n \"sea\",\n \"food\",\n \"molusc\"\n ],\n \"🦪\": [\n \"oyster\",\n \"food\",\n \"diving\",\n \"pearl\"\n ],\n \"🍦\": [\n \"soft_ice_cream\",\n \"food\",\n \"hot\",\n \"dessert\",\n \"summer\",\n \"icecream\",\n \"mr.\",\n \"serve\",\n \"sweet\",\n \"whippy\"\n ],\n \"🍧\": [\n \"shaved_ice\",\n \"hot\",\n \"dessert\",\n \"summer\",\n \"cone\",\n \"snow\",\n \"sweet\"\n ],\n \"🍨\": [\n \"ice_cream\",\n \"food\",\n \"hot\",\n \"dessert\",\n \"bowl\",\n \"sweet\"\n ],\n \"🍩\": [\n \"doughnut\",\n \"food\",\n \"dessert\",\n \"snack\",\n \"sweet\",\n \"donut\",\n \"breakfast\"\n ],\n \"🍪\": [\n \"cookie\",\n \"food\",\n \"snack\",\n \"oreo\",\n \"chocolate\",\n \"sweet\",\n \"dessert\",\n \"biscuit\",\n \"chip\"\n ],\n \"🎂\": [\n \"birthday_cake\",\n \"food\",\n \"dessert\",\n \"cake\",\n \"candles\",\n \"celebration\",\n \"party\",\n \"pastry\",\n \"sweet\"\n ],\n \"🍰\": [\n \"shortcake\",\n \"food\",\n \"dessert\",\n \"cake\",\n \"pastry\",\n \"piece\",\n \"slice\",\n \"strawberry\",\n \"sweet\"\n ],\n \"🧁\": [\n \"cupcake\",\n \"food\",\n \"dessert\",\n \"bakery\",\n \"sweet\",\n \"cake\",\n \"fairy\",\n \"pastry\"\n ],\n \"🥧\": [\n \"pie\",\n \"food\",\n \"dessert\",\n \"pastry\",\n \"filling\",\n \"sweet\"\n ],\n \"🍫\": [\n \"chocolate_bar\",\n \"food\",\n \"snack\",\n \"dessert\",\n \"sweet\",\n \"candy\"\n ],\n \"🍬\": [\n \"candy\",\n \"snack\",\n \"dessert\",\n \"sweet\",\n \"lolly\"\n ],\n \"🍭\": [\n \"lollipop\",\n \"food\",\n \"snack\",\n \"candy\",\n \"sweet\",\n \"dessert\",\n \"lollypop\",\n \"sucker\"\n ],\n \"🍮\": [\n \"custard\",\n \"dessert\",\n \"food\",\n \"pudding\",\n \"flan\",\n \"caramel\",\n \"creme\",\n \"sweet\"\n ],\n \"🍯\": [\n \"honey_pot\",\n \"bees\",\n \"sweet\",\n \"kitchen\",\n \"honeypot\"\n ],\n \"🍼\": [\n \"baby_bottle\",\n \"food\",\n \"container\",\n \"milk\",\n \"drink\",\n \"feeding\"\n ],\n \"🥛\": [\n \"glass_of_milk\",\n \"beverage\",\n \"drink\",\n \"cow\"\n ],\n \"☕\": [\n \"hot_beverage\",\n \"beverage\",\n \"caffeine\",\n \"latte\",\n \"espresso\",\n \"coffee\",\n \"mug\",\n \"cafe\",\n \"chocolate\",\n \"drink\",\n \"steaming\",\n \"tea\"\n ],\n \"🍵\": [\n \"teacup_without_handle\",\n \"drink\",\n \"bowl\",\n \"breakfast\",\n \"green\",\n \"british\",\n \"beverage\",\n \"cup\",\n \"matcha\",\n \"tea\"\n ],\n \"🍶\": [\n \"sake\",\n \"wine\",\n \"drink\",\n \"drunk\",\n \"beverage\",\n \"japanese\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"bottle\",\n \"cup\",\n \"rice\"\n ],\n \"🍾\": [\n \"bottle_with_popping_cork\",\n \"drink\",\n \"wine\",\n \"bottle\",\n \"celebration\",\n \"bar\",\n \"bubbly\",\n \"champagne\",\n \"party\",\n \"sparkling\"\n ],\n \"🍷\": [\n \"wine_glass\",\n \"drink\",\n \"beverage\",\n \"drunk\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"red\"\n ],\n \"🍸\": [\n \"cocktail_glass\",\n \"drink\",\n \"drunk\",\n \"alcohol\",\n \"beverage\",\n \"booze\",\n \"mojito\",\n \"bar\",\n \"martini\"\n ],\n \"🍹\": [\n \"tropical_drink\",\n \"beverage\",\n \"cocktail\",\n \"summer\",\n \"beach\",\n \"alcohol\",\n \"booze\",\n \"mojito\",\n \"bar\",\n \"fruit\",\n \"punch\",\n \"tiki\",\n \"vacation\"\n ],\n \"🍺\": [\n \"beer_mug\",\n \"relax\",\n \"beverage\",\n \"drink\",\n \"drunk\",\n \"party\",\n \"pub\",\n \"summer\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"stein\"\n ],\n \"🍻\": [\n \"clinking_beer_mugs\",\n \"relax\",\n \"beverage\",\n \"drink\",\n \"drunk\",\n \"party\",\n \"pub\",\n \"summer\",\n \"alcohol\",\n \"booze\",\n \"bar\",\n \"beers\",\n \"cheers\",\n \"clink\",\n \"drinks\",\n \"mug\"\n ],\n \"🥂\": [\n \"clinking_glasses\",\n \"beverage\",\n \"drink\",\n \"party\",\n \"alcohol\",\n \"celebrate\",\n \"cheers\",\n \"wine\",\n \"champagne\",\n \"toast\",\n \"celebration\",\n \"clink\",\n \"glass\"\n ],\n \"🥃\": [\n \"tumbler_glass\",\n \"drink\",\n \"beverage\",\n \"drunk\",\n \"alcohol\",\n \"liquor\",\n \"booze\",\n \"bourbon\",\n \"scotch\",\n \"whisky\",\n \"glass\",\n \"shot\",\n \"rum\",\n \"whiskey\"\n ],\n \"🥤\": [\n \"cup_with_straw\",\n \"drink\",\n \"soda\",\n \"go\",\n \"juice\",\n \"malt\",\n \"milkshake\",\n \"pop\",\n \"smoothie\",\n \"soft\",\n \"tableware\",\n \"water\"\n ],\n \"🧃\": [\n \"beverage_box\",\n \"drink\",\n \"juice\",\n \"straw\",\n \"sweet\"\n ],\n \"🧉\": [\n \"mate\",\n \"drink\",\n \"tea\",\n \"beverage\",\n \"bombilla\",\n \"chimarrão\",\n \"cimarrón\",\n \"maté\",\n \"yerba\"\n ],\n \"🧊\": [\n \"ice\",\n \"water\",\n \"cold\",\n \"cube\",\n \"iceberg\"\n ],\n \"🥢\": [\n \"chopsticks\",\n \"food\",\n \"hashi\",\n \"jeotgarak\",\n \"kuaizi\"\n ],\n \"🍽️\": [\n \"fork_and_knife_with_plate\",\n \"food\",\n \"eat\",\n \"meal\",\n \"lunch\",\n \"dinner\",\n \"restaurant\",\n \"cooking\",\n \"cutlery\",\n \"dining\",\n \"tableware\"\n ],\n \"🍴\": [\n \"fork_and_knife\",\n \"cutlery\",\n \"kitchen\",\n \"cooking\",\n \"silverware\",\n \"tableware\"\n ],\n \"🥄\": [\n \"spoon\",\n \"cutlery\",\n \"kitchen\",\n \"tableware\"\n ],\n \"🔪\": [\n \"kitchen_knife\",\n \"knife\",\n \"blade\",\n \"cutlery\",\n \"kitchen\",\n \"weapon\",\n \"butchers\",\n \"chop\",\n \"cooking\",\n \"cut\",\n \"hocho\",\n \"tool\"\n ],\n \"🏺\": [\n \"amphora\",\n \"vase\",\n \"jar\",\n \"aquarius\",\n \"cooking\",\n \"drink\",\n \"jug\",\n \"tool\",\n \"zodiac\"\n ],\n \"🌍\": [\n \"globe_showing_europe_africa\",\n \"globe\",\n \"world\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌎\": [\n \"globe_showing_americas\",\n \"globe\",\n \"world\",\n \"USA\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌏\": [\n \"globe_showing_asia_australia\",\n \"globe\",\n \"world\",\n \"east\",\n \"earth\",\n \"international\",\n \"planet\"\n ],\n \"🌐\": [\n \"globe_with_meridians\",\n \"earth\",\n \"international\",\n \"world\",\n \"internet\",\n \"interweb\",\n \"i18n\",\n \"global\",\n \"web\",\n \"wide\",\n \"www\",\n \"internationalization\",\n \"localization\"\n ],\n \"🗺️\": [\n \"world_map\",\n \"location\",\n \"direction\",\n \"travel\"\n ],\n \"🗾\": [\n \"map_of_japan\",\n \"nation\",\n \"country\",\n \"japanese\",\n \"asia\",\n \"silhouette\"\n ],\n \"🧭\": [\n \"compass\",\n \"magnetic\",\n \"navigation\",\n \"orienteering\"\n ],\n \"🏔️\": [\n \"snow_capped_mountain\",\n \"photo\",\n \"nature\",\n \"environment\",\n \"winter\",\n \"cold\"\n ],\n \"⛰️\": [\n \"mountain\",\n \"photo\",\n \"nature\",\n \"environment\"\n ],\n \"🌋\": [\n \"volcano\",\n \"photo\",\n \"nature\",\n \"disaster\",\n \"eruption\",\n \"mountain\",\n \"weather\"\n ],\n \"🗻\": [\n \"mount_fuji\",\n \"photo\",\n \"mountain\",\n \"nature\",\n \"japanese\",\n \"capped\",\n \"san\",\n \"snow\"\n ],\n \"🏕️\": [\n \"camping\",\n \"photo\",\n \"outdoors\",\n \"tent\",\n \"campsite\"\n ],\n \"🏖️\": [\n \"beach_with_umbrella\",\n \"weather\",\n \"summer\",\n \"sunny\",\n \"sand\",\n \"mojito\"\n ],\n \"🏜️\": [\n \"desert\",\n \"photo\",\n \"warm\",\n \"saharah\"\n ],\n \"🏝️\": [\n \"desert_island\",\n \"photo\",\n \"tropical\",\n \"mojito\"\n ],\n \"🏞️\": [\n \"national_park\",\n \"photo\",\n \"environment\",\n \"nature\"\n ],\n \"🏟️\": [\n \"stadium\",\n \"photo\",\n \"place\",\n \"sports\",\n \"concert\",\n \"venue\",\n \"grandstand\",\n \"sport\"\n ],\n \"🏛️\": [\n \"classical_building\",\n \"art\",\n \"culture\",\n \"history\"\n ],\n \"🏗️\": [\n \"building_construction\",\n \"wip\",\n \"working\",\n \"progress\",\n \"crane\",\n \"architectural\"\n ],\n \"🧱\": [\n \"brick\",\n \"bricks\",\n \"clay\",\n \"construction\",\n \"mortar\",\n \"wall\",\n \"infrastructure\"\n ],\n \"🏘️\": [\n \"houses\",\n \"buildings\",\n \"photo\",\n \"building\",\n \"group\",\n \"house\"\n ],\n \"🏚️\": [\n \"derelict_house\",\n \"abandon\",\n \"evict\",\n \"broken\",\n \"building\",\n \"abandoned\",\n \"haunted\",\n \"old\"\n ],\n \"🏠\": [\n \"house\",\n \"building\",\n \"home\"\n ],\n \"🏡\": [\n \"house_with_garden\",\n \"home\",\n \"plant\",\n \"nature\",\n \"building\",\n \"tree\"\n ],\n \"🏢\": [\n \"office_building\",\n \"building\",\n \"bureau\",\n \"work\",\n \"city\",\n \"high\",\n \"rise\"\n ],\n \"🏣\": [\n \"japanese_post_office\",\n \"building\",\n \"envelope\",\n \"communication\",\n \"japan\",\n \"mark\",\n \"postal\"\n ],\n \"🏤\": [\n \"post_office\",\n \"building\",\n \"email\",\n \"european\"\n ],\n \"🏥\": [\n \"hospital\",\n \"building\",\n \"health\",\n \"surgery\",\n \"doctor\",\n \"cross\",\n \"emergency\",\n \"medical\",\n \"medicine\",\n \"red\",\n \"room\"\n ],\n \"🏦\": [\n \"bank\",\n \"building\",\n \"money\",\n \"sales\",\n \"cash\",\n \"business\",\n \"enterprise\",\n \"bakkureru\",\n \"bk\",\n \"branch\"\n ],\n \"🏨\": [\n \"hotel\",\n \"building\",\n \"accomodation\",\n \"checkin\",\n \"accommodation\",\n \"h\"\n ],\n \"🏩\": [\n \"love_hotel\",\n \"like\",\n \"affection\",\n \"dating\",\n \"building\",\n \"heart\",\n \"hospital\"\n ],\n \"🏪\": [\n \"convenience_store\",\n \"building\",\n \"shopping\",\n \"groceries\",\n \"corner\",\n \"e\",\n \"eleven®\",\n \"hour\",\n \"kwik\",\n \"mart\",\n \"shop\"\n ],\n \"🏫\": [\n \"school\",\n \"building\",\n \"student\",\n \"education\",\n \"learn\",\n \"teach\",\n \"clock\",\n \"elementary\",\n \"high\",\n \"middle\",\n \"tower\"\n ],\n \"🏬\": [\n \"department_store\",\n \"building\",\n \"shopping\",\n \"mall\",\n \"center\",\n \"shops\"\n ],\n \"🏭\": [\n \"factory\",\n \"building\",\n \"industry\",\n \"pollution\",\n \"smoke\",\n \"industrial\",\n \"smog\"\n ],\n \"🏯\": [\n \"japanese_castle\",\n \"photo\",\n \"building\",\n \"fortress\"\n ],\n \"🏰\": [\n \"castle\",\n \"building\",\n \"royalty\",\n \"history\",\n \"european\",\n \"turrets\"\n ],\n \"💒\": [\n \"wedding\",\n \"love\",\n \"like\",\n \"affection\",\n \"couple\",\n \"marriage\",\n \"bride\",\n \"groom\",\n \"activity\",\n \"chapel\",\n \"church\",\n \"heart\",\n \"romance\"\n ],\n \"🗼\": [\n \"tokyo_tower\",\n \"photo\",\n \"japanese\",\n \"eiffel\",\n \"red\"\n ],\n \"🗽\": [\n \"statue_of_liberty\",\n \"american\",\n \"newyork\",\n \"new\",\n \"york\"\n ],\n \"⛪\": [\n \"church\",\n \"building\",\n \"religion\",\n \"christ\",\n \"christian\",\n \"cross\"\n ],\n \"🕌\": [\n \"mosque\",\n \"islam\",\n \"worship\",\n \"minaret\",\n \"domed\",\n \"muslim\",\n \"religion\",\n \"roof\"\n ],\n \"🛕\": [\n \"hindu_temple\",\n \"religion\"\n ],\n \"🕍\": [\n \"synagogue\",\n \"judaism\",\n \"worship\",\n \"temple\",\n \"jewish\",\n \"jew\",\n \"religion\",\n \"synagog\"\n ],\n \"⛩️\": [\n \"shinto_shrine\",\n \"temple\",\n \"japan\",\n \"kyoto\",\n \"kami\",\n \"michi\",\n \"no\",\n \"religion\"\n ],\n \"🕋\": [\n \"kaaba\",\n \"mecca\",\n \"mosque\",\n \"islam\",\n \"muslim\",\n \"religion\"\n ],\n \"⛲\": [\n \"fountain\",\n \"photo\",\n \"summer\",\n \"water\",\n \"fresh\",\n \"feature\",\n \"park\"\n ],\n \"⛺\": [\n \"tent\",\n \"photo\",\n \"camping\",\n \"outdoors\"\n ],\n \"🌁\": [\n \"foggy\",\n \"photo\",\n \"mountain\",\n \"bridge\",\n \"city\",\n \"fog\",\n \"fog bridge\",\n \"karl\",\n \"under\",\n \"weather\"\n ],\n \"🌃\": [\n \"night_with_stars\",\n \"evening\",\n \"city\",\n \"downtown\",\n \"star\",\n \"starry\",\n \"weather\"\n ],\n \"🏙️\": [\n \"cityscape\",\n \"photo\",\n \"night life\",\n \"urban\",\n \"building\",\n \"city\",\n \"skyline\"\n ],\n \"🌄\": [\n \"sunrise_over_mountains\",\n \"view\",\n \"vacation\",\n \"photo\",\n \"morning\",\n \"mountain\",\n \"sun\",\n \"weather\"\n ],\n \"🌅\": [\n \"sunrise\",\n \"morning\",\n \"view\",\n \"vacation\",\n \"photo\",\n \"sun\",\n \"sunset\",\n \"weather\"\n ],\n \"🌆\": [\n \"cityscape_at_dusk\",\n \"photo\",\n \"evening\",\n \"sky\",\n \"buildings\",\n \"building\",\n \"city\",\n \"landscape\",\n \"orange\",\n \"sun\",\n \"sunset\",\n \"weather\"\n ],\n \"🌇\": [\n \"sunset\",\n \"photo\",\n \"good morning\",\n \"dawn\",\n \"building\",\n \"buildings\",\n \"city\",\n \"dusk\",\n \"over\",\n \"sun\",\n \"sunrise\",\n \"weather\"\n ],\n \"🌉\": [\n \"bridge_at_night\",\n \"photo\",\n \"sanfrancisco\",\n \"gate\",\n \"golden\",\n \"weather\"\n ],\n \"♨️\": [\n \"hot_springs\",\n \"bath\",\n \"warm\",\n \"relax\",\n \"hotsprings\",\n \"onsen\",\n \"steam\",\n \"steaming\"\n ],\n \"🎠\": [\n \"carousel_horse\",\n \"photo\",\n \"carnival\",\n \"activity\",\n \"entertainment\",\n \"fairground\",\n \"go\",\n \"merry\",\n \"round\"\n ],\n \"🎡\": [\n \"ferris_wheel\",\n \"photo\",\n \"carnival\",\n \"londoneye\",\n \"activity\",\n \"amusement\",\n \"big\",\n \"entertainment\",\n \"fairground\",\n \"observation\",\n \"park\"\n ],\n \"🎢\": [\n \"roller_coaster\",\n \"carnival\",\n \"playground\",\n \"photo\",\n \"fun\",\n \"activity\",\n \"amusement\",\n \"entertainment\",\n \"park\",\n \"rollercoaster\",\n \"theme\"\n ],\n \"💈\": [\n \"barber_pole\",\n \"hair\",\n \"salon\",\n \"style\",\n \"barber's\",\n \"haircut\",\n \"hairdresser\",\n \"shop\",\n \"stripes\"\n ],\n \"🎪\": [\n \"circus_tent\",\n \"festival\",\n \"carnival\",\n \"party\",\n \"activity\",\n \"big\",\n \"entertainment\",\n \"top\"\n ],\n \"🚂\": [\n \"locomotive\",\n \"transportation\",\n \"vehicle\",\n \"train\",\n \"engine\",\n \"railway\",\n \"steam\"\n ],\n \"🚃\": [\n \"railway_car\",\n \"transportation\",\n \"vehicle\",\n \"carriage\",\n \"electric\",\n \"railcar\",\n \"railroad\",\n \"train\",\n \"tram\",\n \"trolleybus\",\n \"wagon\"\n ],\n \"🚄\": [\n \"high_speed_train\",\n \"transportation\",\n \"vehicle\",\n \"bullettrain\",\n \"railway\",\n \"shinkansen\",\n \"side\"\n ],\n \"🚅\": [\n \"bullet_train\",\n \"transportation\",\n \"vehicle\",\n \"speed\",\n \"fast\",\n \"public\",\n \"travel\",\n \"bullettrain\",\n \"front\",\n \"high\",\n \"nose\",\n \"railway\",\n \"shinkansen\"\n ],\n \"🚆\": [\n \"train\",\n \"transportation\",\n \"vehicle\",\n \"diesel\",\n \"electric\",\n \"passenger\",\n \"railway\",\n \"regular\",\n \"train2\"\n ],\n \"🚇\": [\n \"metro\",\n \"transportation\",\n \"blue-square\",\n \"mrt\",\n \"underground\",\n \"tube\",\n \"subway\",\n \"train\",\n \"vehicle\"\n ],\n \"🚈\": [\n \"light_rail\",\n \"transportation\",\n \"vehicle\",\n \"railway\"\n ],\n \"🚉\": [\n \"station\",\n \"transportation\",\n \"vehicle\",\n \"public\",\n \"platform\",\n \"railway\",\n \"train\"\n ],\n \"🚊\": [\n \"tram\",\n \"transportation\",\n \"vehicle\",\n \"trolleybus\"\n ],\n \"🚝\": [\n \"monorail\",\n \"transportation\",\n \"vehicle\"\n ],\n \"🚞\": [\n \"mountain_railway\",\n \"transportation\",\n \"vehicle\",\n \"car\",\n \"funicular\",\n \"train\"\n ],\n \"🚋\": [\n \"tram_car\",\n \"transportation\",\n \"vehicle\",\n \"carriage\",\n \"public\",\n \"travel\",\n \"train\",\n \"trolleybus\"\n ],\n \"🚌\": [\n \"bus\",\n \"car\",\n \"vehicle\",\n \"transportation\",\n \"school\"\n ],\n \"🚍\": [\n \"oncoming_bus\",\n \"vehicle\",\n \"transportation\",\n \"front\"\n ],\n \"🚎\": [\n \"trolleybus\",\n \"bart\",\n \"transportation\",\n \"vehicle\",\n \"bus\",\n \"electric bus\",\n \"tram\",\n \"trolley\"\n ],\n \"🚐\": [\n \"minibus\",\n \"vehicle\",\n \"car\",\n \"transportation\",\n \"bus\",\n \"minivan\",\n \"mover\",\n \"people\"\n ],\n \"🚑\": [\n \"ambulance\",\n \"health\",\n \"911\",\n \"hospital\",\n \"vehicle\"\n ],\n \"🚒\": [\n \"fire_engine\",\n \"transportation\",\n \"cars\",\n \"vehicle\",\n \"department\",\n \"truck\"\n ],\n \"🚓\": [\n \"police_car\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"cop\",\n \"patrol\",\n \"side\"\n ],\n \"🚔\": [\n \"oncoming_police_car\",\n \"vehicle\",\n \"law\",\n \"legal\",\n \"enforcement\",\n \"911\",\n \"front of\",\n \"🚓 cop\"\n ],\n \"🚕\": [\n \"taxi\",\n \"uber\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"new\",\n \"side\",\n \"taxicab\",\n \"york\"\n ],\n \"🚖\": [\n \"oncoming_taxi\",\n \"vehicle\",\n \"cars\",\n \"uber\",\n \"front\",\n \"taxicab\"\n ],\n \"🚗\": [\n \"automobile\",\n \"red\",\n \"transportation\",\n \"vehicle\",\n \"car\",\n \"side\"\n ],\n \"🚘\": [\n \"oncoming_automobile\",\n \"car\",\n \"vehicle\",\n \"transportation\",\n \"front\"\n ],\n \"🚙\": [\n \"sport_utility_vehicle\",\n \"transportation\",\n \"vehicle\",\n \"blue\",\n \"campervan\",\n \"car\",\n \"motorhome\",\n \"recreational\",\n \"rv\"\n ],\n \"🚚\": [\n \"delivery_truck\",\n \"cars\",\n \"transportation\",\n \"vehicle\",\n \"resources\"\n ],\n \"🚛\": [\n \"articulated_lorry\",\n \"vehicle\",\n \"cars\",\n \"transportation\",\n \"express\",\n \"green\",\n \"semi\",\n \"truck\"\n ],\n \"🚜\": [\n \"tractor\",\n \"vehicle\",\n \"car\",\n \"farming\",\n \"agriculture\",\n \"farm\"\n ],\n \"🏎️\": [\n \"racing_car\",\n \"sports\",\n \"race\",\n \"fast\",\n \"formula\",\n \"f1\",\n \"one\"\n ],\n \"🏍️\": [\n \"motorcycle\",\n \"race\",\n \"sports\",\n \"fast\",\n \"motorbike\",\n \"racing\"\n ],\n \"🛵\": [\n \"motor_scooter\",\n \"vehicle\",\n \"vespa\",\n \"sasha\",\n \"bike\",\n \"cycle\"\n ],\n \"🦽\": [\n \"manual_wheelchair\",\n \"accessibility\"\n ],\n \"🦼\": [\n \"motorized_wheelchair\",\n \"accessibility\"\n ],\n \"🛺\": [\n \"auto_rickshaw\",\n \"move\",\n \"transportation\",\n \"tuk\"\n ],\n \"🚲\": [\n \"bicycle\",\n \"bike\",\n \"sports\",\n \"exercise\",\n \"hipster\",\n \"push\",\n \"vehicle\"\n ],\n \"🛴\": [\n \"kick_scooter\",\n \"vehicle\",\n \"kick\",\n \"razor\"\n ],\n \"🛹\": [\n \"skateboard\",\n \"board\",\n \"skate\"\n ],\n \"🚏\": [\n \"bus_stop\",\n \"transportation\",\n \"wait\",\n \"busstop\"\n ],\n \"🛣️\": [\n \"motorway\",\n \"road\",\n \"cupertino\",\n \"interstate\",\n \"highway\"\n ],\n \"🛤️\": [\n \"railway_track\",\n \"train\",\n \"transportation\"\n ],\n \"🛢️\": [\n \"oil_drum\",\n \"barrell\"\n ],\n \"⛽\": [\n \"fuel_pump\",\n \"gas station\",\n \"petroleum\",\n \"diesel\",\n \"fuelpump\",\n \"petrol\"\n ],\n \"🚨\": [\n \"police_car_light\",\n \"police\",\n \"ambulance\",\n \"911\",\n \"emergency\",\n \"alert\",\n \"error\",\n \"pinged\",\n \"law\",\n \"legal\",\n \"beacon\",\n \"cars\",\n \"car’s\",\n \"emergency light\",\n \"flashing\",\n \"revolving\",\n \"rotating\",\n \"siren\",\n \"vehicle\",\n \"warning\"\n ],\n \"🚥\": [\n \"horizontal_traffic_light\",\n \"transportation\",\n \"signal\"\n ],\n \"🚦\": [\n \"vertical_traffic_light\",\n \"transportation\",\n \"driving\",\n \"semaphore\",\n \"signal\"\n ],\n \"🛑\": [\n \"stop_sign\",\n \"stop\",\n \"octagonal\"\n ],\n \"🚧\": [\n \"construction\",\n \"wip\",\n \"progress\",\n \"caution\",\n \"warning\",\n \"barrier\",\n \"black\",\n \"roadwork\",\n \"sign\",\n \"striped\",\n \"yellow\",\n \"work_in_progress\"\n ],\n \"⚓\": [\n \"anchor\",\n \"ship\",\n \"ferry\",\n \"sea\",\n \"boat\",\n \"admiralty\",\n \"fisherman\",\n \"pattern\",\n \"tool\"\n ],\n \"⛵\": [\n \"sailboat\",\n \"ship\",\n \"summer\",\n \"transportation\",\n \"water\",\n \"sailing\",\n \"boat\",\n \"dinghy\",\n \"resort\",\n \"sea\",\n \"vehicle\",\n \"yacht\"\n ],\n \"🛶\": [\n \"canoe\",\n \"boat\",\n \"paddle\",\n \"water\",\n \"ship\"\n ],\n \"🚤\": [\n \"speedboat\",\n \"ship\",\n \"transportation\",\n \"vehicle\",\n \"summer\",\n \"boat\",\n \"motorboat\",\n \"powerboat\"\n ],\n \"🛳️\": [\n \"passenger_ship\",\n \"yacht\",\n \"cruise\",\n \"ferry\",\n \"vehicle\"\n ],\n \"⛴️\": [\n \"ferry\",\n \"boat\",\n \"ship\",\n \"yacht\",\n \"passenger\"\n ],\n \"🛥️\": [\n \"motor_boat\",\n \"ship\",\n \"motorboat\",\n \"vehicle\"\n ],\n \"🚢\": [\n \"ship\",\n \"transportation\",\n \"titanic\",\n \"deploy\",\n \"boat\",\n \"cruise\",\n \"passenger\",\n \"vehicle\"\n ],\n \"✈️\": [\n \"airplane\",\n \"vehicle\",\n \"transportation\",\n \"flight\",\n \"fly\",\n \"aeroplane\",\n \"plane\"\n ],\n \"🛩️\": [\n \"small_airplane\",\n \"flight\",\n \"transportation\",\n \"fly\",\n \"vehicle\",\n \"aeroplane\",\n \"plane\"\n ],\n \"🛫\": [\n \"airplane_departure\",\n \"airport\",\n \"flight\",\n \"landing\",\n \"aeroplane\",\n \"departures\",\n \"off\",\n \"plane\",\n \"taking\",\n \"vehicle\"\n ],\n \"🛬\": [\n \"airplane_arrival\",\n \"airport\",\n \"flight\",\n \"boarding\",\n \"aeroplane\",\n \"arrivals\",\n \"arriving\",\n \"landing\",\n \"plane\",\n \"vehicle\"\n ],\n \"🪂\": [\n \"parachute\",\n \"fly\",\n \"glide\",\n \"hang\",\n \"parasail\",\n \"skydive\"\n ],\n \"💺\": [\n \"seat\",\n \"sit\",\n \"airplane\",\n \"transport\",\n \"bus\",\n \"flight\",\n \"fly\",\n \"aeroplane\",\n \"chair\",\n \"train\"\n ],\n \"🚁\": [\n \"helicopter\",\n \"transportation\",\n \"vehicle\",\n \"fly\"\n ],\n \"🚟\": [\n \"suspension_railway\",\n \"vehicle\",\n \"transportation\"\n ],\n \"🚠\": [\n \"mountain_cableway\",\n \"transportation\",\n \"vehicle\",\n \"ski\",\n \"cable\",\n \"gondola\"\n ],\n \"🚡\": [\n \"aerial_tramway\",\n \"transportation\",\n \"vehicle\",\n \"ski\",\n \"cable\",\n \"car\",\n \"gondola\",\n \"ropeway\"\n ],\n \"🛰️\": [\n \"satellite\",\n \"communication\",\n \"gps\",\n \"orbit\",\n \"spaceflight\",\n \"NASA\",\n \"ISS\",\n \"artificial\",\n \"space\",\n \"vehicle\"\n ],\n \"🚀\": [\n \"rocket\",\n \"launch\",\n \"ship\",\n \"staffmode\",\n \"NASA\",\n \"outer space\",\n \"outer_space\",\n \"fly\",\n \"shuttle\",\n \"vehicle\",\n \"deploy\"\n ],\n \"🛸\": [\n \"flying_saucer\",\n \"transportation\",\n \"vehicle\",\n \"ufo\",\n \"alien\",\n \"extraterrestrial\",\n \"fantasy\",\n \"space\"\n ],\n \"🛎️\": [\n \"bellhop_bell\",\n \"service\",\n \"hotel\"\n ],\n \"🧳\": [\n \"luggage\",\n \"packing\",\n \"travel\",\n \"suitcase\"\n ],\n \"⌛\": [\n \"hourglass_done\",\n \"time\",\n \"clock\",\n \"oldschool\",\n \"limit\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"sand\",\n \"timer\"\n ],\n \"⏳\": [\n \"hourglass_not_done\",\n \"oldschool\",\n \"time\",\n \"countdown\",\n \"flowing\",\n \"sand\",\n \"timer\"\n ],\n \"⌚\": [\n \"watch\",\n \"time\",\n \"accessories\",\n \"apple\",\n \"clock\",\n \"timepiece\",\n \"wrist\",\n \"wristwatch\"\n ],\n \"⏰\": [\n \"alarm_clock\",\n \"time\",\n \"wake\",\n \"morning\"\n ],\n \"⏱️\": [\n \"stopwatch\",\n \"time\",\n \"deadline\",\n \"clock\"\n ],\n \"⏲️\": [\n \"timer_clock\",\n \"alarm\"\n ],\n \"🕰️\": [\n \"mantelpiece_clock\",\n \"time\"\n ],\n \"🕛\": [\n \"twelve_o_clock\",\n \"12\",\n \"00:00\",\n \"0000\",\n \"12:00\",\n \"1200\",\n \"time\",\n \"noon\",\n \"midnight\",\n \"midday\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock12\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕧\": [\n \"twelve_thirty\",\n \"00:30\",\n \"0030\",\n \"12:30\",\n \"1230\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1230\",\n \"face\"\n ],\n \"🕐\": [\n \"one_o_clock\",\n \"1\",\n \"1:00\",\n \"100\",\n \"13:00\",\n \"1300\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock1\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕜\": [\n \"one_thirty\",\n \"1:30\",\n \"130\",\n \"13:30\",\n \"1330\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock130\",\n \"face\"\n ],\n \"🕑\": [\n \"two_o_clock\",\n \"2\",\n \"2:00\",\n \"200\",\n \"14:00\",\n \"1400\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock2\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕝\": [\n \"two_thirty\",\n \"2:30\",\n \"230\",\n \"14:30\",\n \"1430\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock230\",\n \"face\"\n ],\n \"🕒\": [\n \"three_o_clock\",\n \"3\",\n \"3:00\",\n \"300\",\n \"15:00\",\n \"1500\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock3\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕞\": [\n \"three_thirty\",\n \"3:30\",\n \"330\",\n \"15:30\",\n \"1530\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock330\",\n \"face\"\n ],\n \"🕓\": [\n \"four_o_clock\",\n \"4\",\n \"4:00\",\n \"400\",\n \"16:00\",\n \"1600\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock4\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕟\": [\n \"four_thirty\",\n \"4:30\",\n \"430\",\n \"16:30\",\n \"1630\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock430\",\n \"face\"\n ],\n \"🕔\": [\n \"five_o_clock\",\n \"5\",\n \"5:00\",\n \"500\",\n \"17:00\",\n \"1700\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock5\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕠\": [\n \"five_thirty\",\n \"5:30\",\n \"530\",\n \"17:30\",\n \"1730\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock530\",\n \"face\"\n ],\n \"🕕\": [\n \"six_o_clock\",\n \"6\",\n \"6:00\",\n \"600\",\n \"18:00\",\n \"1800\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"dawn\",\n \"dusk\",\n \"clock6\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕡\": [\n \"six_thirty\",\n \"6:30\",\n \"630\",\n \"18:30\",\n \"1830\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock630\",\n \"face\"\n ],\n \"🕖\": [\n \"seven_o_clock\",\n \"7\",\n \"7:00\",\n \"700\",\n \"19:00\",\n \"1900\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock7\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕢\": [\n \"seven_thirty\",\n \"7:30\",\n \"730\",\n \"19:30\",\n \"1930\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock730\",\n \"face\"\n ],\n \"🕗\": [\n \"eight_o_clock\",\n \"8\",\n \"8:00\",\n \"800\",\n \"20:00\",\n \"2000\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock8\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕣\": [\n \"eight_thirty\",\n \"8:30\",\n \"830\",\n \"20:30\",\n \"2030\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock830\",\n \"face\"\n ],\n \"🕘\": [\n \"nine_o_clock\",\n \"9\",\n \"9:00\",\n \"900\",\n \"21:00\",\n \"2100\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock9\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕤\": [\n \"nine_thirty\",\n \"9:30\",\n \"930\",\n \"21:30\",\n \"2130\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock930\",\n \"face\"\n ],\n \"🕙\": [\n \"ten_o_clock\",\n \"10\",\n \"10:00\",\n \"1000\",\n \"22:00\",\n \"2200\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock10\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕥\": [\n \"ten_thirty\",\n \"10:30\",\n \"1030\",\n \"22:30\",\n \"2230\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1030\",\n \"face\"\n ],\n \"🕚\": [\n \"eleven_o_clock\",\n \"11\",\n \"11:00\",\n \"1100\",\n \"23:00\",\n \"2300\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock11\",\n \"face\",\n \"oclock\",\n \"o’clock\"\n ],\n \"🕦\": [\n \"eleven_thirty\",\n \"11:30\",\n \"1130\",\n \"23:30\",\n \"2330\",\n \"time\",\n \"late\",\n \"early\",\n \"schedule\",\n \"clock\",\n \"clock1130\",\n \"face\"\n ],\n \"🌑\": [\n \"new_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"dark\",\n \"eclipse\",\n \"shadow moon\",\n \"solar\",\n \"symbol\",\n \"weather\"\n ],\n \"🌒\": [\n \"waxing_crescent_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌓\": [\n \"first_quarter_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌔\": [\n \"waxing_gibbous_moon\",\n \"nature\",\n \"night\",\n \"sky\",\n \"gray\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌕\": [\n \"full_moon\",\n \"nature\",\n \"yellow\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌖\": [\n \"waning_gibbous_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"waxing_gibbous_moon\",\n \"symbol\",\n \"weather\"\n ],\n \"🌗\": [\n \"last_quarter_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌘\": [\n \"waning_crescent_moon\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"symbol\",\n \"weather\"\n ],\n \"🌙\": [\n \"crescent_moon\",\n \"night\",\n \"sleep\",\n \"sky\",\n \"evening\",\n \"magic\",\n \"space\",\n \"weather\"\n ],\n \"🌚\": [\n \"new_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"creepy\",\n \"dark\",\n \"molester\",\n \"weather\"\n ],\n \"🌛\": [\n \"first_quarter_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"weather\"\n ],\n \"🌜\": [\n \"last_quarter_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"weather\"\n ],\n \"🌡️\": [\n \"thermometer\",\n \"weather\",\n \"temperature\",\n \"hot\",\n \"cold\"\n ],\n \"☀️\": [\n \"sun\",\n \"weather\",\n \"nature\",\n \"brightness\",\n \"summer\",\n \"beach\",\n \"spring\",\n \"black\",\n \"bright\",\n \"rays\",\n \"space\",\n \"sunny\",\n \"sunshine\"\n ],\n \"🌝\": [\n \"full_moon_face\",\n \"nature\",\n \"twilight\",\n \"planet\",\n \"space\",\n \"night\",\n \"evening\",\n \"sleep\",\n \"bright\",\n \"moonface\",\n \"smiley\",\n \"smiling\",\n \"weather\"\n ],\n \"🌞\": [\n \"sun_with_face\",\n \"nature\",\n \"morning\",\n \"sky\",\n \"bright\",\n \"smiley\",\n \"smiling\",\n \"space\",\n \"summer\",\n \"sunface\",\n \"weather\"\n ],\n \"🪐\": [\n \"ringed_planet\",\n \"outerspace\",\n \"planets\",\n \"saturn\",\n \"saturnine\",\n \"space\"\n ],\n \"⭐\": [\n \"star\",\n \"night\",\n \"yellow\",\n \"gold\",\n \"medium\",\n \"white\"\n ],\n \"🌟\": [\n \"glowing_star\",\n \"night\",\n \"sparkle\",\n \"awesome\",\n \"good\",\n \"magic\",\n \"glittery\",\n \"glow\",\n \"shining\",\n \"star2\"\n ],\n \"🌠\": [\n \"shooting_star\",\n \"night\",\n \"photo\",\n \"activity\",\n \"falling\",\n \"meteoroid\",\n \"space\",\n \"stars\",\n \"upon\",\n \"when\",\n \"wish\",\n \"you\"\n ],\n \"🌌\": [\n \"milky_way\",\n \"photo\",\n \"space\",\n \"stars\",\n \"galaxy\",\n \"night\",\n \"sky\",\n \"universe\",\n \"weather\"\n ],\n \"☁️\": [\n \"cloud\",\n \"weather\",\n \"sky\",\n \"cloudy\",\n \"overcast\"\n ],\n \"⛅\": [\n \"sun_behind_cloud\",\n \"weather\",\n \"nature\",\n \"cloudy\",\n \"morning\",\n \"fall\",\n \"spring\",\n \"partly\",\n \"sunny\"\n ],\n \"⛈️\": [\n \"cloud_with_lightning_and_rain\",\n \"weather\",\n \"lightning\",\n \"thunder\"\n ],\n \"🌤️\": [\n \"sun_behind_small_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌥️\": [\n \"sun_behind_large_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌦️\": [\n \"sun_behind_rain_cloud\",\n \"weather\",\n \"white\"\n ],\n \"🌧️\": [\n \"cloud_with_rain\",\n \"weather\"\n ],\n \"🌨️\": [\n \"cloud_with_snow\",\n \"weather\",\n \"cold\"\n ],\n \"🌩️\": [\n \"cloud_with_lightning\",\n \"weather\",\n \"thunder\"\n ],\n \"🌪️\": [\n \"tornado\",\n \"weather\",\n \"cyclone\",\n \"twister\",\n \"cloud\",\n \"whirlwind\"\n ],\n \"🌫️\": [\n \"fog\",\n \"weather\",\n \"cloud\"\n ],\n \"🌬️\": [\n \"wind_face\",\n \"gust\",\n \"air\",\n \"blow\",\n \"blowing\",\n \"cloud\",\n \"mother\",\n \"nature\",\n \"weather\"\n ],\n \"🌀\": [\n \"cyclone\",\n \"weather\",\n \"swirl\",\n \"blue\",\n \"cloud\",\n \"vortex\",\n \"spiral\",\n \"whirlpool\",\n \"spin\",\n \"tornado\",\n \"hurricane\",\n \"typhoon\",\n \"dizzy\",\n \"twister\"\n ],\n \"🌈\": [\n \"rainbow\",\n \"nature\",\n \"happy\",\n \"unicorn_face\",\n \"photo\",\n \"sky\",\n \"spring\",\n \"gay\",\n \"lgbt\",\n \"pride\",\n \"primary\",\n \"rain\",\n \"weather\"\n ],\n \"🌂\": [\n \"closed_umbrella\",\n \"weather\",\n \"rain\",\n \"drizzle\",\n \"clothing\",\n \"collapsed umbrella\",\n \"pink\"\n ],\n \"☂️\": [\n \"umbrella\",\n \"weather\",\n \"spring\",\n \"clothing\",\n \"open\",\n \"rain\"\n ],\n \"☔\": [\n \"umbrella_with_rain_drops\",\n \"rainy\",\n \"weather\",\n \"spring\",\n \"clothing\",\n \"drop\",\n \"raining\"\n ],\n \"⛱️\": [\n \"umbrella_on_ground\",\n \"weather\",\n \"summer\",\n \"beach\",\n \"parasol\",\n \"rain\",\n \"sun\"\n ],\n \"⚡\": [\n \"high_voltage\",\n \"thunder\",\n \"weather\",\n \"lightning bolt\",\n \"fast\",\n \"zap\",\n \"danger\",\n \"electric\",\n \"electricity\",\n \"sign\",\n \"thunderbolt\",\n \"speed\"\n ],\n \"❄️\": [\n \"snowflake\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"snow\",\n \"snowing\"\n ],\n \"☃️\": [\n \"snowman\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"frozen\",\n \"snow\",\n \"snowflakes\",\n \"snowing\"\n ],\n \"⛄\": [\n \"snowman_without_snow\",\n \"winter\",\n \"season\",\n \"cold\",\n \"weather\",\n \"christmas\",\n \"xmas\",\n \"frozen\",\n \"without_snow\",\n \"frosty\",\n \"olaf\"\n ],\n \"☄️\": [\n \"comet\",\n \"space\"\n ],\n \"🔥\": [\n \"fire\",\n \"hot\",\n \"cook\",\n \"flame\",\n \"burn\",\n \"lit\",\n \"snapstreak\",\n \"tool\",\n \"remove\"\n ],\n \"💧\": [\n \"droplet\",\n \"water\",\n \"drip\",\n \"faucet\",\n \"spring\",\n \"cold\",\n \"comic\",\n \"drop\",\n \"sweat\",\n \"weather\"\n ],\n \"🌊\": [\n \"water_wave\",\n \"sea\",\n \"water\",\n \"wave\",\n \"nature\",\n \"tsunami\",\n \"disaster\",\n \"beach\",\n \"ocean\",\n \"waves\",\n \"weather\"\n ],\n \"🎃\": [\n \"jack_o_lantern\",\n \"halloween\",\n \"light\",\n \"pumpkin\",\n \"creepy\",\n \"fall\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"gourd\"\n ],\n \"🎄\": [\n \"christmas_tree\",\n \"festival\",\n \"vacation\",\n \"december\",\n \"xmas\",\n \"celebration\",\n \"activity\",\n \"entertainment\",\n \"xmas tree\"\n ],\n \"🎆\": [\n \"fireworks\",\n \"photo\",\n \"festival\",\n \"carnival\",\n \"congratulations\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"explosion\"\n ],\n \"🎇\": [\n \"sparkler\",\n \"stars\",\n \"night\",\n \"shine\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"firework\",\n \"fireworks\",\n \"hanabi\",\n \"senko\",\n \"sparkle\"\n ],\n \"🧨\": [\n \"firecracker\",\n \"dynamite\",\n \"boom\",\n \"explode\",\n \"explosion\",\n \"explosive\",\n \"fireworks\"\n ],\n \"✨\": [\n \"sparkles\",\n \"stars\",\n \"shine\",\n \"shiny\",\n \"cool\",\n \"awesome\",\n \"good\",\n \"magic\",\n \"entertainment\",\n \"glitter\",\n \"sparkle\",\n \"star\"\n ],\n \"🎈\": [\n \"balloon\",\n \"party\",\n \"celebration\",\n \"birthday\",\n \"circus\",\n \"activity\",\n \"entertainment\",\n \"red\"\n ],\n \"🎉\": [\n \"party_popper\",\n \"party\",\n \"congratulations\",\n \"birthday\",\n \"magic\",\n \"circus\",\n \"celebration\",\n \"tada\",\n \"activity\",\n \"entertainment\",\n \"hat\",\n \"hooray\"\n ],\n \"🎊\": [\n \"confetti_ball\",\n \"festival\",\n \"party\",\n \"birthday\",\n \"circus\",\n \"activity\",\n \"celebration\",\n \"entertainment\"\n ],\n \"🎋\": [\n \"tanabata_tree\",\n \"plant\",\n \"nature\",\n \"branch\",\n \"summer\",\n \"bamboo\",\n \"wish\",\n \"star_festival\",\n \"tanzaku\",\n \"activity\",\n \"banner\",\n \"celebration\",\n \"entertainment\",\n \"japanese\"\n ],\n \"🎍\": [\n \"pine_decoration\",\n \"japanese\",\n \"plant\",\n \"nature\",\n \"vegetable\",\n \"panda\",\n \"new_years\",\n \"bamboo\",\n \"activity\",\n \"celebration\",\n \"kadomatsu\",\n \"year\"\n ],\n \"🎎\": [\n \"japanese_dolls\",\n \"japanese\",\n \"toy\",\n \"kimono\",\n \"activity\",\n \"celebration\",\n \"doll\",\n \"entertainment\",\n \"festival\",\n \"hinamatsuri\",\n \"imperial\"\n ],\n \"🎏\": [\n \"carp_streamer\",\n \"fish\",\n \"japanese\",\n \"koinobori\",\n \"carp\",\n \"banner\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"flag\",\n \"flags\",\n \"socks\",\n \"wind\"\n ],\n \"🎐\": [\n \"wind_chime\",\n \"nature\",\n \"ding\",\n \"spring\",\n \"bell\",\n \"activity\",\n \"celebration\",\n \"entertainment\",\n \"furin\",\n \"jellyfish\"\n ],\n \"🎑\": [\n \"moon_viewing_ceremony\",\n \"photo\",\n \"japan\",\n \"asia\",\n \"tsukimi\",\n \"activity\",\n \"autumn\",\n \"celebration\",\n \"dumplings\",\n \"entertainment\",\n \"festival\",\n \"grass\",\n \"harvest\",\n \"mid\",\n \"rice\",\n \"scene\"\n ],\n \"🧧\": [\n \"red_envelope\",\n \"gift\",\n \"ang\",\n \"good\",\n \"hóngbāo\",\n \"lai\",\n \"luck\",\n \"money\",\n \"packet\",\n \"pao\",\n \"see\"\n ],\n \"🎀\": [\n \"ribbon\",\n \"decoration\",\n \"pink\",\n \"girl\",\n \"bowtie\",\n \"bow\",\n \"celebration\"\n ],\n \"🎁\": [\n \"wrapped_gift\",\n \"present\",\n \"birthday\",\n \"christmas\",\n \"xmas\",\n \"box\",\n \"celebration\",\n \"entertainment\"\n ],\n \"🎗️\": [\n \"reminder_ribbon\",\n \"sports\",\n \"cause\",\n \"support\",\n \"awareness\",\n \"celebration\"\n ],\n \"🎟️\": [\n \"admission_tickets\",\n \"sports\",\n \"concert\",\n \"entrance\",\n \"entertainment\",\n \"ticket\"\n ],\n \"🎫\": [\n \"ticket\",\n \"event\",\n \"concert\",\n \"pass\",\n \"activity\",\n \"admission\",\n \"entertainment\",\n \"stub\",\n \"tour\",\n \"world\"\n ],\n \"🎖️\": [\n \"military_medal\",\n \"award\",\n \"winning\",\n \"army\",\n \"celebration\",\n \"decoration\",\n \"medallion\"\n ],\n \"🏆\": [\n \"trophy\",\n \"win\",\n \"award\",\n \"contest\",\n \"place\",\n \"ftw\",\n \"ceremony\",\n \"championship\",\n \"prize\",\n \"winner\",\n \"winners\"\n ],\n \"🏅\": [\n \"sports_medal\",\n \"award\",\n \"winning\",\n \"gold\",\n \"winner\"\n ],\n \"🥇\": [\n \"1st_place_medal\",\n \"award\",\n \"winning\",\n \"first\",\n \"gold\"\n ],\n \"🥈\": [\n \"2nd_place_medal\",\n \"award\",\n \"second\",\n \"silver\"\n ],\n \"🥉\": [\n \"3rd_place_medal\",\n \"award\",\n \"third\",\n \"bronze\"\n ],\n \"⚽\": [\n \"soccer_ball\",\n \"sports\",\n \"football\"\n ],\n \"⚾\": [\n \"baseball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"softball\"\n ],\n \"🥎\": [\n \"softball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"game\",\n \"glove\",\n \"sport\",\n \"underarm\"\n ],\n \"🏀\": [\n \"basketball\",\n \"sports\",\n \"balls\",\n \"NBA\",\n \"ball\",\n \"hoop\",\n \"orange\"\n ],\n \"🏐\": [\n \"volleyball\",\n \"sports\",\n \"balls\",\n \"ball\",\n \"game\"\n ],\n \"🏈\": [\n \"american_football\",\n \"sports\",\n \"balls\",\n \"NFL\",\n \"ball\",\n \"gridiron\",\n \"superbowl\"\n ],\n \"🏉\": [\n \"rugby_football\",\n \"sports\",\n \"team\",\n \"ball\",\n \"league\",\n \"union\"\n ],\n \"🎾\": [\n \"tennis\",\n \"sports\",\n \"balls\",\n \"green\",\n \"ball\",\n \"racket\",\n \"racquet\"\n ],\n \"🥏\": [\n \"flying_disc\",\n \"sports\",\n \"frisbee\",\n \"ultimate\",\n \"game\",\n \"golf\",\n \"sport\"\n ],\n \"🎳\": [\n \"bowling\",\n \"sports\",\n \"fun\",\n \"play\",\n \"ball\",\n \"game\",\n \"pin\",\n \"pins\",\n \"skittles\",\n \"ten\"\n ],\n \"🏏\": [\n \"cricket_game\",\n \"sports\",\n \"ball\",\n \"bat\",\n \"field\"\n ],\n \"🏑\": [\n \"field_hockey\",\n \"sports\",\n \"ball\",\n \"game\",\n \"stick\"\n ],\n \"🏒\": [\n \"ice_hockey\",\n \"sports\",\n \"game\",\n \"puck\",\n \"stick\"\n ],\n \"🥍\": [\n \"lacrosse\",\n \"sports\",\n \"ball\",\n \"stick\",\n \"game\",\n \"goal\",\n \"sport\"\n ],\n \"🏓\": [\n \"ping_pong\",\n \"sports\",\n \"pingpong\",\n \"ball\",\n \"bat\",\n \"game\",\n \"paddle\",\n \"table\",\n \"tennis\"\n ],\n \"🏸\": [\n \"badminton\",\n \"sports\",\n \"birdie\",\n \"game\",\n \"racquet\",\n \"shuttlecock\"\n ],\n \"🥊\": [\n \"boxing_glove\",\n \"sports\",\n \"fighting\"\n ],\n \"🥋\": [\n \"martial_arts_uniform\",\n \"judo\",\n \"karate\",\n \"taekwondo\"\n ],\n \"🥅\": [\n \"goal_net\",\n \"sports\",\n \"catch\"\n ],\n \"⛳\": [\n \"flag_in_hole\",\n \"sports\",\n \"business\",\n \"flag\",\n \"hole\",\n \"summer\",\n \"golf\"\n ],\n \"⛸️\": [\n \"ice_skate\",\n \"sports\",\n \"skating\"\n ],\n \"🎣\": [\n \"fishing_pole\",\n \"food\",\n \"hobby\",\n \"summer\",\n \"entertainment\",\n \"fish\",\n \"rod\"\n ],\n \"🤿\": [\n \"diving_mask\",\n \"sport\",\n \"ocean\",\n \"scuba\",\n \"snorkeling\"\n ],\n \"🎽\": [\n \"running_shirt\",\n \"play\",\n \"pageant\",\n \"athletics\",\n \"marathon\",\n \"sash\",\n \"singlet\"\n ],\n \"🎿\": [\n \"skis\",\n \"sports\",\n \"winter\",\n \"cold\",\n \"snow\",\n \"boot\",\n \"ski\",\n \"skiing\"\n ],\n \"🛷\": [\n \"sled\",\n \"sleigh\",\n \"luge\",\n \"toboggan\",\n \"sledge\"\n ],\n \"🥌\": [\n \"curling_stone\",\n \"sports\",\n \"game\",\n \"rock\"\n ],\n \"🎯\": [\n \"direct_hit\",\n \"game\",\n \"play\",\n \"bar\",\n \"target\",\n \"bullseye\",\n \"activity\",\n \"archery\",\n \"bull\",\n \"dart\",\n \"darts\",\n \"entertainment\",\n \"eye\"\n ],\n \"🪀\": [\n \"yo_yo\",\n \"toy\",\n \"fluctuate\",\n \"yoyo\"\n ],\n \"🪁\": [\n \"kite\",\n \"wind\",\n \"fly\",\n \"soar\",\n \"toy\"\n ],\n \"🎱\": [\n \"pool_8_ball\",\n \"pool\",\n \"hobby\",\n \"game\",\n \"luck\",\n \"magic\",\n \"8ball\",\n \"billiard\",\n \"billiards\",\n \"cue\",\n \"eight\",\n \"snooker\"\n ],\n \"🔮\": [\n \"crystal_ball\",\n \"disco\",\n \"party\",\n \"magic\",\n \"circus\",\n \"fortune_teller\",\n \"clairvoyant\",\n \"fairy\",\n \"fantasy\",\n \"psychic\",\n \"purple\",\n \"tale\",\n \"tool\"\n ],\n \"🧿\": [\n \"nazar_amulet\",\n \"bead\",\n \"charm\",\n \"boncuğu\",\n \"evil\",\n \"eye\",\n \"talisman\"\n ],\n \"🎮\": [\n \"video_game\",\n \"play\",\n \"console\",\n \"PS4\",\n \"controller\",\n \"entertainment\",\n \"gamepad\",\n \"playstation\",\n \"u\",\n \"wii\",\n \"xbox\"\n ],\n \"🕹️\": [\n \"joystick\",\n \"game\",\n \"play\",\n \"entertainment\",\n \"video\"\n ],\n \"🎰\": [\n \"slot_machine\",\n \"bet\",\n \"gamble\",\n \"vegas\",\n \"fruit machine\",\n \"luck\",\n \"casino\",\n \"activity\",\n \"gambling\",\n \"game\",\n \"poker\"\n ],\n \"🎲\": [\n \"game_die\",\n \"dice\",\n \"random\",\n \"tabletop\",\n \"play\",\n \"luck\",\n \"entertainment\",\n \"gambling\"\n ],\n \"🧩\": [\n \"puzzle_piece\",\n \"interlocking\",\n \"puzzle\",\n \"piece\",\n \"clue\",\n \"jigsaw\"\n ],\n \"🧸\": [\n \"teddy_bear\",\n \"plush\",\n \"stuffed\",\n \"plaything\",\n \"toy\"\n ],\n \"♠️\": [\n \"spade_suit\",\n \"poker\",\n \"cards\",\n \"suits\",\n \"magic\",\n \"black\",\n \"card\",\n \"game\",\n \"spades\"\n ],\n \"♥️\": [\n \"heart_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"game\",\n \"hearts\"\n ],\n \"♦️\": [\n \"diamond_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"diamonds\",\n \"game\"\n ],\n \"♣️\": [\n \"club_suit\",\n \"poker\",\n \"cards\",\n \"magic\",\n \"suits\",\n \"black\",\n \"card\",\n \"clubs\",\n \"game\"\n ],\n \"♟️\": [\n \"chess_pawn\",\n \"expendable\",\n \"black\",\n \"dupe\",\n \"game\",\n \"piece\"\n ],\n \"🃏\": [\n \"joker\",\n \"poker\",\n \"cards\",\n \"game\",\n \"play\",\n \"magic\",\n \"black\",\n \"card\",\n \"entertainment\",\n \"playing\",\n \"wildcard\"\n ],\n \"🀄\": [\n \"mahjong_red_dragon\",\n \"game\",\n \"play\",\n \"chinese\",\n \"kanji\",\n \"tile\"\n ],\n \"🎴\": [\n \"flower_playing_cards\",\n \"game\",\n \"sunset\",\n \"red\",\n \"activity\",\n \"card\",\n \"deck\",\n \"entertainment\",\n \"hanafuda\",\n \"hwatu\",\n \"japanese\",\n \"of cards\"\n ],\n \"🎭\": [\n \"performing_arts\",\n \"acting\",\n \"theater\",\n \"drama\",\n \"activity\",\n \"art\",\n \"comedy\",\n \"entertainment\",\n \"greek\",\n \"logo\",\n \"mask\",\n \"masks\",\n \"theatre\",\n \"theatre masks\",\n \"tragedy\"\n ],\n \"🖼️\": [\n \"framed_picture\",\n \"photography\",\n \"art\",\n \"frame\",\n \"museum\",\n \"painting\"\n ],\n \"🎨\": [\n \"artist_palette\",\n \"design\",\n \"paint\",\n \"draw\",\n \"colors\",\n \"activity\",\n \"art\",\n \"entertainment\",\n \"museum\",\n \"painting\",\n \"improve\"\n ],\n \"🧵\": [\n \"thread\",\n \"needle\",\n \"sewing\",\n \"spool\",\n \"string\",\n \"crafts\"\n ],\n \"🧶\": [\n \"yarn\",\n \"ball\",\n \"crochet\",\n \"knit\",\n \"crafts\"\n ],\n \"👓\": [\n \"glasses\",\n \"fashion\",\n \"accessories\",\n \"eyesight\",\n \"nerdy\",\n \"dork\",\n \"geek\",\n \"clothing\",\n \"eye\",\n \"eyeglasses\",\n \"eyewear\"\n ],\n \"🕶️\": [\n \"sunglasses\",\n \"face\",\n \"cool\",\n \"accessories\",\n \"dark\",\n \"eye\",\n \"eyewear\",\n \"glasses\"\n ],\n \"🥽\": [\n \"goggles\",\n \"eyes\",\n \"protection\",\n \"safety\",\n \"clothing\",\n \"eye\",\n \"swimming\",\n \"welding\"\n ],\n \"🥼\": [\n \"lab_coat\",\n \"doctor\",\n \"experiment\",\n \"scientist\",\n \"chemist\",\n \"clothing\"\n ],\n \"🦺\": [\n \"safety_vest\",\n \"protection\",\n \"emergency\"\n ],\n \"👔\": [\n \"necktie\",\n \"shirt\",\n \"suitup\",\n \"formal\",\n \"fashion\",\n \"cloth\",\n \"business\",\n \"clothing\",\n \"tie\"\n ],\n \"👕\": [\n \"t_shirt\",\n \"fashion\",\n \"cloth\",\n \"casual\",\n \"shirt\",\n \"tee\",\n \"clothing\",\n \"polo\",\n \"tshirt\"\n ],\n \"👖\": [\n \"jeans\",\n \"fashion\",\n \"shopping\",\n \"clothing\",\n \"denim\",\n \"pants\",\n \"trousers\"\n ],\n \"🧣\": [\n \"scarf\",\n \"neck\",\n \"winter\",\n \"clothes\",\n \"clothing\"\n ],\n \"🧤\": [\n \"gloves\",\n \"hands\",\n \"winter\",\n \"clothes\",\n \"clothing\",\n \"hand\"\n ],\n \"🧥\": [\n \"coat\",\n \"jacket\",\n \"clothing\"\n ],\n \"🧦\": [\n \"socks\",\n \"stockings\",\n \"clothes\",\n \"clothing\",\n \"pair\",\n \"stocking\"\n ],\n \"👗\": [\n \"dress\",\n \"clothes\",\n \"fashion\",\n \"shopping\",\n \"clothing\",\n \"gown\",\n \"skirt\"\n ],\n \"👘\": [\n \"kimono\",\n \"dress\",\n \"fashion\",\n \"women\",\n \"female\",\n \"japanese\",\n \"clothing\",\n \"dressing\",\n \"gown\"\n ],\n \"🥻\": [\n \"sari\",\n \"dress\",\n \"clothing\",\n \"saree\",\n \"shari\"\n ],\n \"🩱\": [\n \"one_piece_swimsuit\",\n \"fashion\",\n \"bathing\",\n \"clothing\",\n \"suit\",\n \"swim\"\n ],\n \"🩲\": [\n \"briefs\",\n \"clothing\",\n \"bathing\",\n \"brief\",\n \"suit\",\n \"swim\",\n \"swimsuit\",\n \"underwear\"\n ],\n \"🩳\": [\n \"shorts\",\n \"clothing\",\n \"bathing\",\n \"pants\",\n \"suit\",\n \"swim\",\n \"swimsuit\",\n \"underwear\"\n ],\n \"👙\": [\n \"bikini\",\n \"swimming\",\n \"female\",\n \"woman\",\n \"girl\",\n \"fashion\",\n \"beach\",\n \"summer\",\n \"bathers\",\n \"clothing\",\n \"swim\",\n \"swimsuit\"\n ],\n \"👚\": [\n \"woman_s_clothes\",\n \"fashion\",\n \"shopping_bags\",\n \"female\",\n \"blouse\",\n \"clothing\",\n \"pink\",\n \"shirt\",\n \"womans\",\n \"woman’s\"\n ],\n \"👛\": [\n \"purse\",\n \"fashion\",\n \"accessories\",\n \"money\",\n \"sales\",\n \"shopping\",\n \"clothing\",\n \"coin\",\n \"wallet\"\n ],\n \"👜\": [\n \"handbag\",\n \"fashion\",\n \"accessory\",\n \"accessories\",\n \"shopping\",\n \"bag\",\n \"clothing\",\n \"purse\",\n \"women’s\"\n ],\n \"👝\": [\n \"clutch_bag\",\n \"bag\",\n \"accessories\",\n \"shopping\",\n \"clothing\",\n \"pouch\",\n \"small\"\n ],\n \"🛍️\": [\n \"shopping_bags\",\n \"mall\",\n \"buy\",\n \"purchase\",\n \"bag\",\n \"hotel\"\n ],\n \"🎒\": [\n \"backpack\",\n \"student\",\n \"education\",\n \"bag\",\n \"activity\",\n \"rucksack\",\n \"satchel\",\n \"school\"\n ],\n \"👞\": [\n \"man_s_shoe\",\n \"fashion\",\n \"male\",\n \"brown\",\n \"clothing\",\n \"dress\",\n \"mans\",\n \"man’s\"\n ],\n \"👟\": [\n \"running_shoe\",\n \"shoes\",\n \"sports\",\n \"sneakers\",\n \"athletic\",\n \"clothing\",\n \"runner\",\n \"sneaker\",\n \"sport\",\n \"tennis\",\n \"trainer\"\n ],\n \"🥾\": [\n \"hiking_boot\",\n \"backpacking\",\n \"camping\",\n \"hiking\",\n \"clothing\"\n ],\n \"🥿\": [\n \"flat_shoe\",\n \"ballet\",\n \"slip-on\",\n \"slipper\",\n \"clothing\",\n \"woman’s\"\n ],\n \"👠\": [\n \"high_heeled_shoe\",\n \"fashion\",\n \"shoes\",\n \"female\",\n \"pumps\",\n \"stiletto\",\n \"clothing\",\n \"heel\",\n \"heels\",\n \"woman\"\n ],\n \"👡\": [\n \"woman_s_sandal\",\n \"shoes\",\n \"fashion\",\n \"flip flops\",\n \"clothing\",\n \"heeled\",\n \"sandals\",\n \"shoe\",\n \"womans\",\n \"woman’s\"\n ],\n \"🩰\": [\n \"ballet_shoes\",\n \"dance\",\n \"clothing\",\n \"pointe\",\n \"shoe\"\n ],\n \"👢\": [\n \"woman_s_boot\",\n \"shoes\",\n \"fashion\",\n \"boots\",\n \"clothing\",\n \"cowgirl\",\n \"heeled\",\n \"high\",\n \"knee\",\n \"shoe\",\n \"womans\",\n \"woman’s\"\n ],\n \"👑\": [\n \"crown\",\n \"king\",\n \"kod\",\n \"leader\",\n \"royalty\",\n \"lord\",\n \"clothing\",\n \"queen\",\n \"royal\"\n ],\n \"👒\": [\n \"woman_s_hat\",\n \"fashion\",\n \"accessories\",\n \"female\",\n \"lady\",\n \"spring\",\n \"bow\",\n \"clothing\",\n \"ladies\",\n \"womans\",\n \"woman’s\"\n ],\n \"🎩\": [\n \"top_hat\",\n \"magic\",\n \"gentleman\",\n \"classy\",\n \"circus\",\n \"activity\",\n \"clothing\",\n \"entertainment\",\n \"formal\",\n \"groom\",\n \"tophat\",\n \"wear\"\n ],\n \"🎓\": [\n \"graduation_cap\",\n \"school\",\n \"college\",\n \"degree\",\n \"university\",\n \"graduation\",\n \"cap\",\n \"hat\",\n \"legal\",\n \"learn\",\n \"education\",\n \"academic\",\n \"activity\",\n \"board\",\n \"celebration\",\n \"clothing\",\n \"graduate\",\n \"mortar\",\n \"square\"\n ],\n \"🧢\": [\n \"billed_cap\",\n \"cap\",\n \"baseball\",\n \"clothing\",\n \"hat\"\n ],\n \"⛑️\": [\n \"rescue_worker_s_helmet\",\n \"construction\",\n \"build\",\n \"aid\",\n \"cross\",\n \"face\",\n \"hat\",\n \"white\",\n \"worker’s\"\n ],\n \"📿\": [\n \"prayer_beads\",\n \"dhikr\",\n \"religious\",\n \"clothing\",\n \"necklace\",\n \"religion\",\n \"rosary\"\n ],\n \"💄\": [\n \"lipstick\",\n \"female\",\n \"girl\",\n \"fashion\",\n \"woman\",\n \"cosmetics\",\n \"gloss\",\n \"lip\",\n \"makeup\",\n \"style\"\n ],\n \"💍\": [\n \"ring\",\n \"wedding\",\n \"propose\",\n \"marriage\",\n \"valentines\",\n \"diamond\",\n \"fashion\",\n \"jewelry\",\n \"gem\",\n \"engagement\",\n \"engaged\",\n \"romance\"\n ],\n \"💎\": [\n \"gem_stone\",\n \"blue\",\n \"ruby\",\n \"diamond\",\n \"jewelry\",\n \"gemstone\",\n \"jewel\",\n \"romance\"\n ],\n \"🔇\": [\n \"muted_speaker\",\n \"sound\",\n \"volume\",\n \"silence\",\n \"quiet\",\n \"cancellation\",\n \"mute\",\n \"off\",\n \"silent\",\n \"stroke\"\n ],\n \"🔈\": [\n \"speaker_low_volume\",\n \"sound\",\n \"volume\",\n \"silence\",\n \"broadcast\",\n \"soft\"\n ],\n \"🔉\": [\n \"speaker_medium_volume\",\n \"volume\",\n \"speaker\",\n \"broadcast\",\n \"low\",\n \"one\",\n \"reduce\",\n \"sound\",\n \"wave\"\n ],\n \"🔊\": [\n \"speaker_high_volume\",\n \"volume\",\n \"noise\",\n \"noisy\",\n \"speaker\",\n \"broadcast\",\n \"entertainment\",\n \"increase\",\n \"loud\",\n \"sound\",\n \"three\",\n \"waves\"\n ],\n \"📢\": [\n \"loudspeaker\",\n \"volume\",\n \"sound\",\n \"address\",\n \"announcement\",\n \"bullhorn\",\n \"communication\",\n \"loud\",\n \"megaphone\",\n \"pa\",\n \"public\",\n \"system\"\n ],\n \"📣\": [\n \"megaphone\",\n \"sound\",\n \"speaker\",\n \"volume\",\n \"bullhorn\",\n \"cheering\",\n \"communication\",\n \"mega\"\n ],\n \"📯\": [\n \"postal_horn\",\n \"instrument\",\n \"music\",\n \"bugle\",\n \"communication\",\n \"entertainment\",\n \"french\",\n \"post\"\n ],\n \"🔔\": [\n \"bell\",\n \"sound\",\n \"notification\",\n \"christmas\",\n \"xmas\",\n \"chime\",\n \"liberty\",\n \"ringer\",\n \"wedding\"\n ],\n \"🔕\": [\n \"bell_with_slash\",\n \"sound\",\n \"volume\",\n \"mute\",\n \"quiet\",\n \"silent\",\n \"cancellation\",\n \"disabled\",\n \"forbidden\",\n \"muted\",\n \"no\",\n \"not\",\n \"notifications\",\n \"off\",\n \"prohibited\",\n \"ringer\",\n \"stroke\"\n ],\n \"🎼\": [\n \"musical_score\",\n \"treble\",\n \"clef\",\n \"compose\",\n \"activity\",\n \"entertainment\",\n \"music\",\n \"sheet\"\n ],\n \"🎵\": [\n \"musical_note\",\n \"score\",\n \"tone\",\n \"sound\",\n \"activity\",\n \"beamed\",\n \"eighth\",\n \"entertainment\",\n \"music\",\n \"notes\",\n \"pair\",\n \"quavers\"\n ],\n \"🎶\": [\n \"musical_notes\",\n \"music\",\n \"score\",\n \"activity\",\n \"entertainment\",\n \"multiple\",\n \"note\",\n \"singing\"\n ],\n \"🎙️\": [\n \"studio_microphone\",\n \"sing\",\n \"recording\",\n \"artist\",\n \"talkshow\",\n \"mic\",\n \"music\",\n \"podcast\"\n ],\n \"🎚️\": [\n \"level_slider\",\n \"scale\",\n \"music\"\n ],\n \"🎛️\": [\n \"control_knobs\",\n \"dial\",\n \"music\"\n ],\n \"🎤\": [\n \"microphone\",\n \"sound\",\n \"music\",\n \"PA\",\n \"sing\",\n \"talkshow\",\n \"activity\",\n \"entertainment\",\n \"karaoke\",\n \"mic\",\n \"singing\"\n ],\n \"🎧\": [\n \"headphone\",\n \"music\",\n \"score\",\n \"gadgets\",\n \"activity\",\n \"earbud\",\n \"earphone\",\n \"earphones\",\n \"entertainment\",\n \"headphones\",\n \"ipod\"\n ],\n \"📻\": [\n \"radio\",\n \"communication\",\n \"music\",\n \"podcast\",\n \"program\",\n \"digital\",\n \"entertainment\",\n \"video\",\n \"wireless\"\n ],\n \"🎷\": [\n \"saxophone\",\n \"music\",\n \"instrument\",\n \"jazz\",\n \"blues\",\n \"activity\",\n \"entertainment\",\n \"sax\"\n ],\n \"🎸\": [\n \"guitar\",\n \"music\",\n \"instrument\",\n \"acoustic guitar\",\n \"activity\",\n \"bass\",\n \"electric\",\n \"entertainment\",\n \"rock\"\n ],\n \"🎹\": [\n \"musical_keyboard\",\n \"piano\",\n \"instrument\",\n \"compose\",\n \"activity\",\n \"entertainment\",\n \"music\"\n ],\n \"🎺\": [\n \"trumpet\",\n \"music\",\n \"brass\",\n \"activity\",\n \"entertainment\",\n \"horn\",\n \"instrument\",\n \"jazz\"\n ],\n \"🎻\": [\n \"violin\",\n \"music\",\n \"instrument\",\n \"orchestra\",\n \"symphony\",\n \"activity\",\n \"entertainment\",\n \"quartet\",\n \"smallest\",\n \"string\",\n \"world’s\"\n ],\n \"🪕\": [\n \"banjo\",\n \"music\",\n \"instructment\",\n \"activity\",\n \"entertainment\",\n \"instrument\",\n \"stringed\"\n ],\n \"🥁\": [\n \"drum\",\n \"music\",\n \"instrument\",\n \"drumsticks\",\n \"snare\"\n ],\n \"📱\": [\n \"mobile_phone\",\n \"technology\",\n \"apple\",\n \"gadgets\",\n \"dial\",\n \"cell\",\n \"communication\",\n \"iphone\",\n \"smartphone\",\n \"telephone\",\n \"responsive_design\"\n ],\n \"📲\": [\n \"mobile_phone_with_arrow\",\n \"iphone\",\n \"incoming\",\n \"call\",\n \"calling\",\n \"cell\",\n \"communication\",\n \"left\",\n \"pointing\",\n \"receive\",\n \"rightwards\",\n \"telephone\"\n ],\n \"☎️\": [\n \"telephone\",\n \"technology\",\n \"communication\",\n \"dial\",\n \"black\",\n \"phone\",\n \"rotary\"\n ],\n \"📞\": [\n \"telephone_receiver\",\n \"technology\",\n \"communication\",\n \"dial\",\n \"call\",\n \"handset\",\n \"phone\"\n ],\n \"📟\": [\n \"pager\",\n \"bbcall\",\n \"oldschool\",\n \"90s\",\n \"beeper\",\n \"bleeper\",\n \"communication\"\n ],\n \"📠\": [\n \"fax_machine\",\n \"communication\",\n \"technology\",\n \"facsimile\"\n ],\n \"🔋\": [\n \"battery\",\n \"power\",\n \"energy\",\n \"sustain\",\n \"aa\",\n \"phone\"\n ],\n \"🔌\": [\n \"electric_plug\",\n \"charger\",\n \"power\",\n \"ac\",\n \"adaptor\",\n \"cable\",\n \"electricity\"\n ],\n \"💻\": [\n \"laptop\",\n \"technology\",\n \"screen\",\n \"display\",\n \"monitor\",\n \"computer\",\n \"desktop\",\n \"notebook\",\n \"pc\",\n \"personal\"\n ],\n \"🖥️\": [\n \"desktop_computer\",\n \"technology\",\n \"computing\",\n \"screen\",\n \"imac\"\n ],\n \"🖨️\": [\n \"printer\",\n \"paper\",\n \"ink\",\n \"computer\"\n ],\n \"⌨️\": [\n \"keyboard\",\n \"technology\",\n \"computer\",\n \"type\",\n \"input\",\n \"text\"\n ],\n \"🖱️\": [\n \"computer_mouse\",\n \"click\",\n \"button\",\n \"three\"\n ],\n \"🖲️\": [\n \"trackball\",\n \"technology\",\n \"trackpad\",\n \"computer\"\n ],\n \"💽\": [\n \"computer_disk\",\n \"technology\",\n \"record\",\n \"data\",\n \"disk\",\n \"90s\",\n \"entertainment\",\n \"minidisc\",\n \"minidisk\",\n \"optical\"\n ],\n \"💾\": [\n \"floppy_disk\",\n \"oldschool\",\n \"technology\",\n \"save\",\n \"90s\",\n \"80s\",\n \"computer\"\n ],\n \"💿\": [\n \"optical_disk\",\n \"technology\",\n \"dvd\",\n \"disk\",\n \"disc\",\n \"90s\",\n \"cd\",\n \"compact\",\n \"computer\",\n \"rom\"\n ],\n \"📀\": [\n \"dvd\",\n \"cd\",\n \"disk\",\n \"disc\",\n \"computer\",\n \"entertainment\",\n \"optical\",\n \"rom\",\n \"video\"\n ],\n \"🧮\": [\n \"abacus\",\n \"calculation\",\n \"count\",\n \"counting\",\n \"frame\",\n \"math\"\n ],\n \"🎥\": [\n \"movie_camera\",\n \"film\",\n \"record\",\n \"activity\",\n \"cinema\",\n \"entertainment\",\n \"hollywood\",\n \"video\"\n ],\n \"🎞️\": [\n \"film_frames\",\n \"movie\",\n \"cinema\",\n \"entertainment\",\n \"strip\"\n ],\n \"📽️\": [\n \"film_projector\",\n \"video\",\n \"tape\",\n \"record\",\n \"movie\",\n \"cinema\",\n \"entertainment\"\n ],\n \"🎬\": [\n \"clapper_board\",\n \"movie\",\n \"film\",\n \"record\",\n \"activity\",\n \"clapboard\",\n \"director\",\n \"entertainment\",\n \"slate\"\n ],\n \"📺\": [\n \"television\",\n \"technology\",\n \"program\",\n \"oldschool\",\n \"show\",\n \"entertainment\",\n \"tv\",\n \"video\"\n ],\n \"📷\": [\n \"camera\",\n \"gadgets\",\n \"photography\",\n \"digital\",\n \"entertainment\",\n \"photo\",\n \"video\"\n ],\n \"📸\": [\n \"camera_with_flash\",\n \"photography\",\n \"gadgets\",\n \"photo\",\n \"video\",\n \"snapshots\"\n ],\n \"📹\": [\n \"video_camera\",\n \"film\",\n \"record\",\n \"camcorder\",\n \"entertainment\"\n ],\n \"📼\": [\n \"videocassette\",\n \"record\",\n \"video\",\n \"oldschool\",\n \"90s\",\n \"80s\",\n \"entertainment\",\n \"tape\",\n \"vcr\",\n \"vhs\"\n ],\n \"🔍\": [\n \"magnifying_glass_tilted_left\",\n \"search\",\n \"zoom\",\n \"find\",\n \"detective\",\n \"icon\",\n \"mag\",\n \"magnifier\",\n \"pointing\",\n \"tool\"\n ],\n \"🔎\": [\n \"magnifying_glass_tilted_right\",\n \"search\",\n \"zoom\",\n \"find\",\n \"detective\",\n \"icon\",\n \"mag\",\n \"magnifier\",\n \"pointing\",\n \"tool\",\n \"seo\"\n ],\n \"🕯️\": [\n \"candle\",\n \"fire\",\n \"wax\",\n \"light\"\n ],\n \"💡\": [\n \"light_bulb\",\n \"light\",\n \"electricity\",\n \"idea\",\n \"comic\",\n \"electric\"\n ],\n \"🔦\": [\n \"flashlight\",\n \"dark\",\n \"camping\",\n \"sight\",\n \"night\",\n \"electric\",\n \"light\",\n \"tool\",\n \"torch\"\n ],\n \"🏮\": [\n \"red_paper_lantern\",\n \"light\",\n \"paper\",\n \"halloween\",\n \"spooky\",\n \"asian\",\n \"bar\",\n \"izakaya\",\n \"japanese\"\n ],\n \"🪔\": [\n \"diya_lamp\",\n \"lighting\",\n \"oil\"\n ],\n \"📔\": [\n \"notebook_with_decorative_cover\",\n \"classroom\",\n \"notes\",\n \"record\",\n \"paper\",\n \"study\",\n \"book\",\n \"decorated\"\n ],\n \"📕\": [\n \"closed_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"textbook\",\n \"learn\",\n \"red\"\n ],\n \"📖\": [\n \"open_book\",\n \"book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"literature\",\n \"learn\",\n \"study\",\n \"novel\"\n ],\n \"📗\": [\n \"green_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"study\",\n \"textbook\"\n ],\n \"📘\": [\n \"blue_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"learn\",\n \"study\",\n \"textbook\"\n ],\n \"📙\": [\n \"orange_book\",\n \"read\",\n \"library\",\n \"knowledge\",\n \"textbook\",\n \"study\"\n ],\n \"📚\": [\n \"books\",\n \"literature\",\n \"library\",\n \"study\",\n \"book\",\n \"pile\",\n \"stack\"\n ],\n \"📓\": [\n \"notebook\",\n \"stationery\",\n \"record\",\n \"notes\",\n \"paper\",\n \"study\",\n \"black\",\n \"book\",\n \"composition\",\n \"white\"\n ],\n \"📒\": [\n \"ledger\",\n \"notes\",\n \"paper\",\n \"binder\",\n \"book\",\n \"bound\",\n \"notebook\",\n \"spiral\",\n \"yellow\"\n ],\n \"📃\": [\n \"page_with_curl\",\n \"documents\",\n \"office\",\n \"paper\",\n \"curled\",\n \"curly page\",\n \"document\",\n \"license\"\n ],\n \"📜\": [\n \"scroll\",\n \"documents\",\n \"ancient\",\n \"history\",\n \"paper\",\n \"degree\",\n \"document\",\n \"parchment\"\n ],\n \"📄\": [\n \"page_facing_up\",\n \"documents\",\n \"office\",\n \"paper\",\n \"information\",\n \"document\",\n \"printed\"\n ],\n \"📰\": [\n \"newspaper\",\n \"press\",\n \"headline\",\n \"communication\",\n \"news\",\n \"paper\"\n ],\n \"🗞️\": [\n \"rolled_up_newspaper\",\n \"press\",\n \"headline\",\n \"delivery\",\n \"news\",\n \"paper\",\n \"roll\"\n ],\n \"📑\": [\n \"bookmark_tabs\",\n \"favorite\",\n \"save\",\n \"order\",\n \"tidy\",\n \"mark\",\n \"marker\"\n ],\n \"🔖\": [\n \"bookmark\",\n \"favorite\",\n \"label\",\n \"save\",\n \"mark\",\n \"price\",\n \"tag\"\n ],\n \"🏷️\": [\n \"label\",\n \"sale\",\n \"tag\"\n ],\n \"💰\": [\n \"money_bag\",\n \"dollar\",\n \"payment\",\n \"coins\",\n \"sale\",\n \"cream\",\n \"moneybag\",\n \"moneybags\",\n \"rich\"\n ],\n \"💴\": [\n \"yen_banknote\",\n \"money\",\n \"sales\",\n \"japanese\",\n \"dollar\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"sign\"\n ],\n \"💵\": [\n \"dollar_banknote\",\n \"money\",\n \"sales\",\n \"bill\",\n \"currency\",\n \"american\",\n \"bank\",\n \"banknotes\",\n \"note\",\n \"sign\"\n ],\n \"💶\": [\n \"euro_banknote\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"sign\"\n ],\n \"💷\": [\n \"pound_banknote\",\n \"british\",\n \"sterling\",\n \"money\",\n \"sales\",\n \"bills\",\n \"uk\",\n \"england\",\n \"currency\",\n \"bank\",\n \"banknotes\",\n \"bill\",\n \"note\",\n \"quid\",\n \"sign\",\n \"twenty\"\n ],\n \"💸\": [\n \"money_with_wings\",\n \"dollar\",\n \"bills\",\n \"payment\",\n \"sale\",\n \"bank\",\n \"banknote\",\n \"bill\",\n \"fly\",\n \"flying\",\n \"losing\",\n \"note\"\n ],\n \"💳\": [\n \"credit_card\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"bill\",\n \"payment\",\n \"shopping\",\n \"amex\",\n \"bank\",\n \"club\",\n \"diners\",\n \"mastercard\",\n \"subscription\",\n \"visa\"\n ],\n \"🧾\": [\n \"receipt\",\n \"accounting\",\n \"expenses\",\n \"bookkeeping\",\n \"evidence\",\n \"proof\"\n ],\n \"💹\": [\n \"chart_increasing_with_yen\",\n \"green-square\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"bank\",\n \"currency\",\n \"exchange\",\n \"growth\",\n \"market\",\n \"money\",\n \"rate\",\n \"rise\",\n \"sign\",\n \"trend\",\n \"upward\",\n \"upwards\"\n ],\n \"💱\": [\n \"currency_exchange\",\n \"money\",\n \"sales\",\n \"dollar\",\n \"travel\",\n \"bank\"\n ],\n \"💲\": [\n \"heavy_dollar_sign\",\n \"money\",\n \"sales\",\n \"payment\",\n \"currency\",\n \"buck\"\n ],\n \"✉️\": [\n \"envelope\",\n \"letter\",\n \"postal\",\n \"inbox\",\n \"communication\",\n \"email\",\n \"✉ letter\"\n ],\n \"📧\": [\n \"e_mail\",\n \"communication\",\n \"inbox\",\n \"email\",\n \"letter\",\n \"symbol\"\n ],\n \"📨\": [\n \"incoming_envelope\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"fast\",\n \"letter\",\n \"lines\",\n \"mail\",\n \"receive\"\n ],\n \"📩\": [\n \"envelope_with_arrow\",\n \"email\",\n \"communication\",\n \"above\",\n \"down\",\n \"downwards\",\n \"insert\",\n \"letter\",\n \"mail\",\n \"outgoing\",\n \"sent\"\n ],\n \"📤\": [\n \"outbox_tray\",\n \"inbox\",\n \"email\",\n \"box\",\n \"communication\",\n \"letter\",\n \"mail\",\n \"sent\"\n ],\n \"📥\": [\n \"inbox_tray\",\n \"email\",\n \"documents\",\n \"box\",\n \"communication\",\n \"letter\",\n \"mail\",\n \"receive\"\n ],\n \"📦\": [\n \"package\",\n \"mail\",\n \"gift\",\n \"cardboard\",\n \"box\",\n \"moving\",\n \"communication\",\n \"parcel\",\n \"shipping\",\n \"container\"\n ],\n \"📫\": [\n \"closed_mailbox_with_raised_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"postbox\"\n ],\n \"📪\": [\n \"closed_mailbox_with_lowered_flag\",\n \"email\",\n \"communication\",\n \"inbox\",\n \"mail\",\n \"postbox\"\n ],\n \"📬\": [\n \"open_mailbox_with_raised_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"postbox\"\n ],\n \"📭\": [\n \"open_mailbox_with_lowered_flag\",\n \"email\",\n \"inbox\",\n \"communication\",\n \"mail\",\n \"no\",\n \"postbox\"\n ],\n \"📮\": [\n \"postbox\",\n \"email\",\n \"letter\",\n \"envelope\",\n \"communication\",\n \"mail\",\n \"mailbox\"\n ],\n \"🗳️\": [\n \"ballot_box_with_ballot\",\n \"election\",\n \"vote\",\n \"voting\"\n ],\n \"✏️\": [\n \"pencil\",\n \"stationery\",\n \"write\",\n \"paper\",\n \"writing\",\n \"school\",\n \"study\",\n \"lead\",\n \"pencil2\",\n \"typos\"\n ],\n \"✒️\": [\n \"black_nib\",\n \"pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"fountain\",\n \"✒ fountain\"\n ],\n \"🖋️\": [\n \"fountain_pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"🖊️\": [\n \"pen\",\n \"stationery\",\n \"writing\",\n \"write\",\n \"ballpoint\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"🖌️\": [\n \"paintbrush\",\n \"drawing\",\n \"creativity\",\n \"art\",\n \"brush\",\n \"communication\",\n \"left\",\n \"lower\",\n \"painting\"\n ],\n \"🖍️\": [\n \"crayon\",\n \"drawing\",\n \"creativity\",\n \"communication\",\n \"left\",\n \"lower\"\n ],\n \"📝\": [\n \"memo\",\n \"write\",\n \"documents\",\n \"stationery\",\n \"pencil\",\n \"paper\",\n \"writing\",\n \"legal\",\n \"exam\",\n \"quiz\",\n \"test\",\n \"study\",\n \"compose\",\n \"communication\",\n \"document\",\n \"memorandum\",\n \"note\",\n \"documentation\"\n ],\n \"💼\": [\n \"briefcase\",\n \"business\",\n \"documents\",\n \"work\",\n \"law\",\n \"legal\",\n \"job\",\n \"career\",\n \"suitcase\"\n ],\n \"📁\": [\n \"file_folder\",\n \"documents\",\n \"business\",\n \"office\",\n \"closed\",\n \"directory\",\n \"manilla\"\n ],\n \"📂\": [\n \"open_file_folder\",\n \"documents\",\n \"load\"\n ],\n \"🗂️\": [\n \"card_index_dividers\",\n \"organizing\",\n \"business\",\n \"stationery\"\n ],\n \"📅\": [\n \"calendar\",\n \"schedule\",\n \"date\",\n \"day\",\n \"emoji\",\n \"july\",\n \"world\"\n ],\n \"📆\": [\n \"tear_off_calendar\",\n \"schedule\",\n \"date\",\n \"planning\",\n \"day\",\n \"desk\"\n ],\n \"🗒️\": [\n \"spiral_notepad\",\n \"memo\",\n \"stationery\",\n \"note\",\n \"pad\"\n ],\n \"🗓️\": [\n \"spiral_calendar\",\n \"date\",\n \"schedule\",\n \"planning\",\n \"pad\"\n ],\n \"📇\": [\n \"card_index\",\n \"business\",\n \"stationery\",\n \"rolodex\",\n \"system\"\n ],\n \"📈\": [\n \"chart_increasing\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"recovery\",\n \"business\",\n \"economics\",\n \"money\",\n \"sales\",\n \"good\",\n \"success\",\n \"growth\",\n \"metrics\",\n \"pointing\",\n \"positive chart\",\n \"trend\",\n \"up\",\n \"upward\",\n \"upwards\",\n \"analytics\"\n ],\n \"📉\": [\n \"chart_decreasing\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"recession\",\n \"business\",\n \"economics\",\n \"money\",\n \"sales\",\n \"bad\",\n \"failure\",\n \"down\",\n \"downwards\",\n \"down pointing\",\n \"metrics\",\n \"negative chart\",\n \"trend\"\n ],\n \"📊\": [\n \"bar_chart\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"metrics\"\n ],\n \"📋\": [\n \"clipboard\",\n \"stationery\",\n \"documents\"\n ],\n \"📌\": [\n \"pushpin\",\n \"stationery\",\n \"mark\",\n \"here\",\n \"location\",\n \"pin\",\n \"tack\",\n \"thumb\"\n ],\n \"📍\": [\n \"round_pushpin\",\n \"stationery\",\n \"location\",\n \"map\",\n \"here\",\n \"dropped\",\n \"pin\",\n \"red\"\n ],\n \"📎\": [\n \"paperclip\",\n \"documents\",\n \"stationery\",\n \"clippy\"\n ],\n \"🖇️\": [\n \"linked_paperclips\",\n \"documents\",\n \"stationery\",\n \"communication\",\n \"link\",\n \"paperclip\"\n ],\n \"📏\": [\n \"straight_ruler\",\n \"stationery\",\n \"calculate\",\n \"length\",\n \"math\",\n \"school\",\n \"drawing\",\n \"architect\",\n \"sketch\",\n \"edge\"\n ],\n \"📐\": [\n \"triangular_ruler\",\n \"stationery\",\n \"math\",\n \"architect\",\n \"sketch\",\n \"set\",\n \"triangle\"\n ],\n \"✂️\": [\n \"scissors\",\n \"stationery\",\n \"cut\",\n \"black\",\n \"cutting\",\n \"tool\"\n ],\n \"🗃️\": [\n \"card_file_box\",\n \"business\",\n \"stationery\",\n \"database\"\n ],\n \"🗄️\": [\n \"file_cabinet\",\n \"filing\",\n \"organizing\"\n ],\n \"🗑️\": [\n \"wastebasket\",\n \"bin\",\n \"trash\",\n \"rubbish\",\n \"garbage\",\n \"toss\",\n \"basket\",\n \"can\",\n \"litter\",\n \"wastepaper\"\n ],\n \"🔒\": [\n \"locked\",\n \"security\",\n \"password\",\n \"padlock\",\n \"closed\",\n \"lock\",\n \"private\",\n \"privacy\"\n ],\n \"🔓\": [\n \"unlocked\",\n \"privacy\",\n \"security\",\n \"lock\",\n \"open\",\n \"padlock\",\n \"unlock\"\n ],\n \"🔏\": [\n \"locked_with_pen\",\n \"security\",\n \"secret\",\n \"fountain\",\n \"ink\",\n \"lock\",\n \"lock with\",\n \"nib\",\n \"privacy\"\n ],\n \"🔐\": [\n \"locked_with_key\",\n \"security\",\n \"privacy\",\n \"closed\",\n \"lock\",\n \"secure\",\n \"secret\"\n ],\n \"🔑\": [\n \"key\",\n \"lock\",\n \"door\",\n \"password\",\n \"gold\"\n ],\n \"🗝️\": [\n \"old_key\",\n \"lock\",\n \"door\",\n \"password\",\n \"clue\"\n ],\n \"🔨\": [\n \"hammer\",\n \"tools\",\n \"build\",\n \"create\",\n \"claw\",\n \"handyman\",\n \"tool\"\n ],\n \"🪓\": [\n \"axe\",\n \"tool\",\n \"chop\",\n \"cut\",\n \"hatchet\",\n \"split\",\n \"wood\"\n ],\n \"⛏️\": [\n \"pick\",\n \"tools\",\n \"dig\",\n \"mining\",\n \"pickaxe\",\n \"tool\"\n ],\n \"⚒️\": [\n \"hammer_and_pick\",\n \"tools\",\n \"build\",\n \"create\",\n \"tool\"\n ],\n \"🛠️\": [\n \"hammer_and_wrench\",\n \"tools\",\n \"build\",\n \"create\",\n \"spanner\",\n \"tool\"\n ],\n \"🗡️\": [\n \"dagger\",\n \"weapon\",\n \"knife\"\n ],\n \"⚔️\": [\n \"crossed_swords\",\n \"weapon\"\n ],\n \"🔫\": [\n \"pistol\",\n \"violence\",\n \"weapon\",\n \"revolver\",\n \"gun\",\n \"handgun\",\n \"shoot\",\n \"squirt\",\n \"tool\",\n \"water\"\n ],\n \"🏹\": [\n \"bow_and_arrow\",\n \"sports\",\n \"archer\",\n \"archery\",\n \"sagittarius\",\n \"tool\",\n \"zodiac\"\n ],\n \"🛡️\": [\n \"shield\",\n \"protection\",\n \"security\",\n \"weapon\"\n ],\n \"🔧\": [\n \"wrench\",\n \"tools\",\n \"diy\",\n \"ikea\",\n \"fix\",\n \"maintainer\",\n \"spanner\",\n \"tool\"\n ],\n \"🔩\": [\n \"nut_and_bolt\",\n \"handy\",\n \"tools\",\n \"fix\",\n \"screw\",\n \"tool\"\n ],\n \"⚙️\": [\n \"gear\",\n \"cog\",\n \"cogwheel\",\n \"tool\"\n ],\n \"🗜️\": [\n \"clamp\",\n \"tool\",\n \"compress\",\n \"compression\",\n \"table\",\n \"vice\",\n \"winzip\"\n ],\n \"⚖️\": [\n \"balance_scale\",\n \"law\",\n \"fairness\",\n \"weight\",\n \"justice\",\n \"libra\",\n \"scales\",\n \"tool\",\n \"zodiac\"\n ],\n \"🦯\": [\n \"probing_cane\",\n \"accessibility\",\n \"blind\",\n \"white\"\n ],\n \"🔗\": [\n \"link\",\n \"rings\",\n \"url\",\n \"chain\",\n \"hyperlink\",\n \"linked\",\n \"symbol\"\n ],\n \"⛓️\": [\n \"chains\",\n \"lock\",\n \"arrest\",\n \"chain\"\n ],\n \"🧰\": [\n \"toolbox\",\n \"tools\",\n \"diy\",\n \"fix\",\n \"maintainer\",\n \"mechanic\",\n \"chest\",\n \"tool\"\n ],\n \"🧲\": [\n \"magnet\",\n \"attraction\",\n \"magnetic\",\n \"horseshoe\"\n ],\n \"⚗️\": [\n \"alembic\",\n \"distilling\",\n \"science\",\n \"experiment\",\n \"chemistry\",\n \"tool\"\n ],\n \"🧪\": [\n \"test_tube\",\n \"chemistry\",\n \"experiment\",\n \"lab\",\n \"science\",\n \"chemist\",\n \"test\"\n ],\n \"🧫\": [\n \"petri_dish\",\n \"bacteria\",\n \"biology\",\n \"culture\",\n \"lab\",\n \"biologist\"\n ],\n \"🧬\": [\n \"dna\",\n \"biologist\",\n \"genetics\",\n \"life\",\n \"double\",\n \"evolution\",\n \"gene\",\n \"helix\"\n ],\n \"🔬\": [\n \"microscope\",\n \"laboratory\",\n \"experiment\",\n \"zoomin\",\n \"science\",\n \"study\",\n \"investigate\",\n \"magnify\",\n \"tool\"\n ],\n \"🔭\": [\n \"telescope\",\n \"stars\",\n \"space\",\n \"zoom\",\n \"science\",\n \"astronomy\",\n \"stargazing\",\n \"tool\"\n ],\n \"📡\": [\n \"satellite_antenna\",\n \"communication\",\n \"future\",\n \"radio\",\n \"space\",\n \"dish\",\n \"signal\"\n ],\n \"💉\": [\n \"syringe\",\n \"health\",\n \"hospital\",\n \"drugs\",\n \"blood\",\n \"medicine\",\n \"needle\",\n \"doctor\",\n \"nurse\",\n \"shot\",\n \"sick\",\n \"tool\",\n \"vaccination\",\n \"vaccine\"\n ],\n \"🩸\": [\n \"drop_of_blood\",\n \"period\",\n \"hurt\",\n \"harm\",\n \"wound\",\n \"bleed\",\n \"doctor\",\n \"donation\",\n \"injury\",\n \"medicine\",\n \"menstruation\"\n ],\n \"💊\": [\n \"pill\",\n \"health\",\n \"medicine\",\n \"doctor\",\n \"pharmacy\",\n \"drug\",\n \"capsule\",\n \"drugs\",\n \"sick\",\n \"tablet\"\n ],\n \"🩹\": [\n \"adhesive_bandage\",\n \"heal\",\n \"aid\",\n \"band\",\n \"doctor\",\n \"medicine\",\n \"plaster\"\n ],\n \"🩺\": [\n \"stethoscope\",\n \"health\",\n \"doctor\",\n \"heart\",\n \"medicine\",\n \"healthcheck\"\n ],\n \"🚪\": [\n \"door\",\n \"house\",\n \"entry\",\n \"exit\",\n \"doorway\",\n \"front\"\n ],\n \"🛏️\": [\n \"bed\",\n \"sleep\",\n \"rest\",\n \"bedroom\",\n \"hotel\"\n ],\n \"🛋️\": [\n \"couch_and_lamp\",\n \"read\",\n \"chill\",\n \"hotel\",\n \"lounge\",\n \"settee\",\n \"sofa\"\n ],\n \"🪑\": [\n \"chair\",\n \"sit\",\n \"furniture\",\n \"seat\"\n ],\n \"🚽\": [\n \"toilet\",\n \"restroom\",\n \"wc\",\n \"washroom\",\n \"bathroom\",\n \"potty\",\n \"loo\"\n ],\n \"🚿\": [\n \"shower\",\n \"clean\",\n \"water\",\n \"bathroom\",\n \"bath\",\n \"head\"\n ],\n \"🛁\": [\n \"bathtub\",\n \"clean\",\n \"shower\",\n \"bathroom\",\n \"bath\",\n \"bubble\"\n ],\n \"🪒\": [\n \"razor\",\n \"cut\",\n \"sharp\",\n \"shave\"\n ],\n \"🧴\": [\n \"lotion_bottle\",\n \"moisturizer\",\n \"sunscreen\",\n \"shampoo\"\n ],\n \"🧷\": [\n \"safety_pin\",\n \"diaper\",\n \"punk\",\n \"rock\"\n ],\n \"🧹\": [\n \"broom\",\n \"cleaning\",\n \"sweeping\",\n \"witch\",\n \"brush\",\n \"sweep\"\n ],\n \"🧺\": [\n \"basket\",\n \"laundry\",\n \"farming\",\n \"picnic\"\n ],\n \"🧻\": [\n \"roll_of_paper\",\n \"roll\",\n \"toilet\",\n \"towels\"\n ],\n \"🧼\": [\n \"soap\",\n \"bar\",\n \"bathing\",\n \"cleaning\",\n \"lather\",\n \"soapdish\"\n ],\n \"🧽\": [\n \"sponge\",\n \"absorbing\",\n \"cleaning\",\n \"porous\"\n ],\n \"🧯\": [\n \"fire_extinguisher\",\n \"quench\",\n \"extinguish\"\n ],\n \"🛒\": [\n \"shopping_cart\",\n \"trolley\"\n ],\n \"🚬\": [\n \"cigarette\",\n \"kills\",\n \"tobacco\",\n \"joint\",\n \"smoke\",\n \"activity\",\n \"smoking\",\n \"symbol\"\n ],\n \"⚰️\": [\n \"coffin\",\n \"vampire\",\n \"dead\",\n \"die\",\n \"death\",\n \"rip\",\n \"graveyard\",\n \"cemetery\",\n \"casket\",\n \"funeral\",\n \"box\",\n \"remove\"\n ],\n \"⚱️\": [\n \"funeral_urn\",\n \"dead\",\n \"die\",\n \"death\",\n \"rip\",\n \"ashes\",\n \"vase\"\n ],\n \"🗿\": [\n \"moai\",\n \"rock\",\n \"easter island\",\n \"carving\",\n \"face\",\n \"human\",\n \"moyai\",\n \"statue\",\n \"stone\"\n ],\n \"🏧\": [\n \"atm_sign\",\n \"money\",\n \"sales\",\n \"cash\",\n \"blue-square\",\n \"payment\",\n \"bank\",\n \"automated\",\n \"machine\",\n \"teller\"\n ],\n \"🚮\": [\n \"litter_in_bin_sign\",\n \"blue-square\",\n \"sign\",\n \"human\",\n \"info\",\n \"its\",\n \"litterbox\",\n \"person\",\n \"place\",\n \"put\",\n \"symbol\",\n \"trash\"\n ],\n \"🚰\": [\n \"potable_water\",\n \"blue-square\",\n \"liquid\",\n \"restroom\",\n \"cleaning\",\n \"faucet\",\n \"drink\",\n \"drinking\",\n \"symbol\",\n \"tap\",\n \"thirst\",\n \"thirsty\"\n ],\n \"♿\": [\n \"wheelchair_symbol\",\n \"blue-square\",\n \"disabled\",\n \"accessibility\",\n \"access\",\n \"accessible\",\n \"bathroom\"\n ],\n \"🚹\": [\n \"men_s_room\",\n \"toilet\",\n \"restroom\",\n \"wc\",\n \"blue-square\",\n \"gender\",\n \"male\",\n \"lavatory\",\n \"man\",\n \"mens\",\n \"men’s\",\n \"symbol\"\n ],\n \"🚺\": [\n \"women_s_room\",\n \"purple-square\",\n \"woman\",\n \"female\",\n \"toilet\",\n \"loo\",\n \"restroom\",\n \"gender\",\n \"lavatory\",\n \"symbol\",\n \"wc\",\n \"womens\",\n \"womens toilet\",\n \"women’s\"\n ],\n \"🚻\": [\n \"restroom\",\n \"blue-square\",\n \"toilet\",\n \"refresh\",\n \"wc\",\n \"gender\",\n \"bathroom\",\n \"lavatory\",\n \"sign\"\n ],\n \"🚼\": [\n \"baby_symbol\",\n \"orange-square\",\n \"child\",\n \"change\",\n \"changing\",\n \"nursery\",\n \"station\"\n ],\n \"🚾\": [\n \"water_closet\",\n \"toilet\",\n \"restroom\",\n \"blue-square\",\n \"lavatory\",\n \"wc\"\n ],\n \"🛂\": [\n \"passport_control\",\n \"custom\",\n \"blue-square\",\n \"border\",\n \"permissions\",\n \"authorization\",\n \"roles\"\n ],\n \"🛃\": [\n \"customs\",\n \"passport\",\n \"border\",\n \"blue-square\"\n ],\n \"🛄\": [\n \"baggage_claim\",\n \"blue-square\",\n \"airport\",\n \"transport\"\n ],\n \"🛅\": [\n \"left_luggage\",\n \"blue-square\",\n \"travel\",\n \"baggage\",\n \"bag with\",\n \"key\",\n \"locked\",\n \"locker\",\n \"suitcase\"\n ],\n \"⚠️\": [\n \"warning\",\n \"exclamation\",\n \"wip\",\n \"alert\",\n \"error\",\n \"problem\",\n \"issue\",\n \"sign\",\n \"symbol\"\n ],\n \"🚸\": [\n \"children_crossing\",\n \"school\",\n \"warning\",\n \"danger\",\n \"sign\",\n \"driving\",\n \"yellow-diamond\",\n \"child\",\n \"kids\",\n \"pedestrian\",\n \"traffic\",\n \"experience\",\n \"usability\"\n ],\n \"⛔\": [\n \"no_entry\",\n \"limit\",\n \"security\",\n \"privacy\",\n \"bad\",\n \"denied\",\n \"stop\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"prohibited\",\n \"traffic\"\n ],\n \"🚫\": [\n \"prohibited\",\n \"forbid\",\n \"stop\",\n \"limit\",\n \"denied\",\n \"disallow\",\n \"circle\",\n \"backslash\",\n \"banned\",\n \"block\",\n \"crossed\",\n \"entry\",\n \"forbidden\",\n \"no\",\n \"not\",\n \"red\",\n \"restricted\",\n \"sign\"\n ],\n \"🚳\": [\n \"no_bicycles\",\n \"no_bikes\",\n \"bicycle\",\n \"bike\",\n \"cyclist\",\n \"prohibited\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"sign\",\n \"vehicle\"\n ],\n \"🚭\": [\n \"no_smoking\",\n \"cigarette\",\n \"blue-square\",\n \"smell\",\n \"smoke\",\n \"forbidden\",\n \"not\",\n \"prohibited\",\n \"sign\",\n \"symbol\"\n ],\n \"🚯\": [\n \"no_littering\",\n \"trash\",\n \"bin\",\n \"garbage\",\n \"circle\",\n \"do\",\n \"forbidden\",\n \"litter\",\n \"not\",\n \"prohibited\",\n \"symbol\"\n ],\n \"🚱\": [\n \"non_potable_water\",\n \"drink\",\n \"faucet\",\n \"tap\",\n \"circle\",\n \"drinking\",\n \"forbidden\",\n \"no\",\n \"not\",\n \"prohibited\",\n \"symbol\"\n ],\n \"🚷\": [\n \"no_pedestrians\",\n \"rules\",\n \"crossing\",\n \"walking\",\n \"circle\",\n \"forbidden\",\n \"not\",\n \"pedestrian\",\n \"people\",\n \"prohibited\"\n ],\n \"📵\": [\n \"no_mobile_phones\",\n \"iphone\",\n \"mute\",\n \"circle\",\n \"cell\",\n \"communication\",\n \"forbidden\",\n \"not\",\n \"phone\",\n \"prohibited\",\n \"smartphones\",\n \"telephone\"\n ],\n \"🔞\": [\n \"no_one_under_eighteen\",\n \"18\",\n \"drink\",\n \"pub\",\n \"night\",\n \"minor\",\n \"circle\",\n \"age\",\n \"forbidden\",\n \"not\",\n \"nsfw\",\n \"prohibited\",\n \"restriction\",\n \"symbol\",\n \"underage\"\n ],\n \"☢️\": [\n \"radioactive\",\n \"nuclear\",\n \"danger\",\n \"international\",\n \"radiation\",\n \"sign\",\n \"symbol\"\n ],\n \"☣️\": [\n \"biohazard\",\n \"danger\",\n \"sign\"\n ],\n \"⬆️\": [\n \"up_arrow\",\n \"blue-square\",\n \"continue\",\n \"top\",\n \"direction\",\n \"black\",\n \"cardinal\",\n \"north\",\n \"pointing\",\n \"upwards\",\n \"upgrade\"\n ],\n \"↗️\": [\n \"up_right_arrow\",\n \"blue-square\",\n \"point\",\n \"direction\",\n \"diagonal\",\n \"northeast\",\n \"east\",\n \"intercardinal\",\n \"north\",\n \"upper\"\n ],\n \"➡️\": [\n \"right_arrow\",\n \"blue-square\",\n \"next\",\n \"black\",\n \"cardinal\",\n \"direction\",\n \"east\",\n \"pointing\",\n \"rightwards\",\n \"right arrow\"\n ],\n \"↘️\": [\n \"down_right_arrow\",\n \"blue-square\",\n \"direction\",\n \"diagonal\",\n \"southeast\",\n \"east\",\n \"intercardinal\",\n \"lower\",\n \"right arrow\",\n \"south\"\n ],\n \"⬇️\": [\n \"down_arrow\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"black\",\n \"cardinal\",\n \"downwards\",\n \"down arrow\",\n \"pointing\",\n \"south\",\n \"downgrade\"\n ],\n \"↙️\": [\n \"down_left_arrow\",\n \"blue-square\",\n \"direction\",\n \"diagonal\",\n \"southwest\",\n \"intercardinal\",\n \"left arrow\",\n \"lower\",\n \"south\",\n \"west\"\n ],\n \"⬅️\": [\n \"left_arrow\",\n \"blue-square\",\n \"previous\",\n \"back\",\n \"black\",\n \"cardinal\",\n \"direction\",\n \"leftwards\",\n \"left arrow\",\n \"pointing\",\n \"west\"\n ],\n \"↖️\": [\n \"up_left_arrow\",\n \"blue-square\",\n \"point\",\n \"direction\",\n \"diagonal\",\n \"northwest\",\n \"intercardinal\",\n \"left arrow\",\n \"north\",\n \"upper\",\n \"west\"\n ],\n \"↕️\": [\n \"up_down_arrow\",\n \"blue-square\",\n \"direction\",\n \"way\",\n \"vertical\",\n \"arrows\",\n \"intercardinal\",\n \"northwest\"\n ],\n \"↔️\": [\n \"left_right_arrow\",\n \"shape\",\n \"direction\",\n \"horizontal\",\n \"sideways\",\n \"arrows\",\n \"horizontal arrows\"\n ],\n \"↩️\": [\n \"right_arrow_curving_left\",\n \"back\",\n \"return\",\n \"blue-square\",\n \"undo\",\n \"enter\",\n \"curved\",\n \"email\",\n \"hook\",\n \"leftwards\",\n \"reply\"\n ],\n \"↪️\": [\n \"left_arrow_curving_right\",\n \"blue-square\",\n \"return\",\n \"rotate\",\n \"direction\",\n \"email\",\n \"forward\",\n \"hook\",\n \"rightwards\",\n \"right curved\"\n ],\n \"⤴️\": [\n \"right_arrow_curving_up\",\n \"blue-square\",\n \"direction\",\n \"top\",\n \"heading\",\n \"pointing\",\n \"rightwards\",\n \"then\",\n \"upwards\"\n ],\n \"⤵️\": [\n \"right_arrow_curving_down\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"curved\",\n \"downwards\",\n \"heading\",\n \"pointing\",\n \"rightwards\",\n \"then\"\n ],\n \"🔃\": [\n \"clockwise_vertical_arrows\",\n \"sync\",\n \"cycle\",\n \"round\",\n \"repeat\",\n \"arrow\",\n \"circle\",\n \"downwards\",\n \"open\",\n \"reload\",\n \"upwards\"\n ],\n \"🔄\": [\n \"counterclockwise_arrows_button\",\n \"blue-square\",\n \"sync\",\n \"cycle\",\n \"anticlockwise\",\n \"arrow\",\n \"circle\",\n \"downwards\",\n \"open\",\n \"refresh\",\n \"rotate\",\n \"switch\",\n \"upwards\",\n \"withershins\"\n ],\n \"🔙\": [\n \"back_arrow\",\n \"arrow\",\n \"words\",\n \"return\",\n \"above\",\n \"leftwards\"\n ],\n \"🔚\": [\n \"end_arrow\",\n \"words\",\n \"arrow\",\n \"above\",\n \"leftwards\"\n ],\n \"🔛\": [\n \"on_arrow\",\n \"arrow\",\n \"words\",\n \"above\",\n \"exclamation\",\n \"left\",\n \"mark\",\n \"on!\",\n \"right\"\n ],\n \"🔜\": [\n \"soon_arrow\",\n \"arrow\",\n \"words\",\n \"above\",\n \"rightwards\"\n ],\n \"🔝\": [\n \"top_arrow\",\n \"words\",\n \"blue-square\",\n \"above\",\n \"up\",\n \"upwards\"\n ],\n \"🛐\": [\n \"place_of_worship\",\n \"religion\",\n \"church\",\n \"temple\",\n \"prayer\",\n \"building\",\n \"religious\"\n ],\n \"⚛️\": [\n \"atom_symbol\",\n \"science\",\n \"physics\",\n \"chemistry\",\n \"atheist\"\n ],\n \"🕉️\": [\n \"om\",\n \"hinduism\",\n \"buddhism\",\n \"sikhism\",\n \"jainism\",\n \"aumkara\",\n \"hindu\",\n \"omkara\",\n \"pranava\",\n \"religion\",\n \"symbol\"\n ],\n \"✡️\": [\n \"star_of_david\",\n \"judaism\",\n \"jew\",\n \"jewish\",\n \"magen\",\n \"religion\"\n ],\n \"☸️\": [\n \"wheel_of_dharma\",\n \"hinduism\",\n \"buddhism\",\n \"sikhism\",\n \"jainism\",\n \"buddhist\",\n \"helm\",\n \"religion\"\n ],\n \"☯️\": [\n \"yin_yang\",\n \"balance\",\n \"religion\",\n \"tao\",\n \"taoist\"\n ],\n \"✝️\": [\n \"latin_cross\",\n \"christianity\",\n \"christian\",\n \"religion\"\n ],\n \"☦️\": [\n \"orthodox_cross\",\n \"suppedaneum\",\n \"religion\",\n \"christian\"\n ],\n \"☪️\": [\n \"star_and_crescent\",\n \"islam\",\n \"muslim\",\n \"religion\"\n ],\n \"☮️\": [\n \"peace_symbol\",\n \"hippie\",\n \"sign\"\n ],\n \"🕎\": [\n \"menorah\",\n \"hanukkah\",\n \"candles\",\n \"jewish\",\n \"branches\",\n \"candelabrum\",\n \"candlestick\",\n \"chanukiah\",\n \"nine\",\n \"religion\"\n ],\n \"🔯\": [\n \"dotted_six_pointed_star\",\n \"purple-square\",\n \"religion\",\n \"jewish\",\n \"hexagram\",\n \"dot\",\n \"fortune\",\n \"middle\"\n ],\n \"♈\": [\n \"aries\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"ram\"\n ],\n \"♉\": [\n \"taurus\",\n \"purple-square\",\n \"sign\",\n \"zodiac\",\n \"astrology\",\n \"bull\",\n \"ox\"\n ],\n \"♊\": [\n \"gemini\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"twins\"\n ],\n \"♋\": [\n \"cancer\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"crab\"\n ],\n \"♌\": [\n \"leo\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"lion\"\n ],\n \"♍\": [\n \"virgo\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"maiden\",\n \"virgin\"\n ],\n \"♎\": [\n \"libra\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"balance\",\n \"justice\",\n \"scales\"\n ],\n \"♏\": [\n \"scorpio\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"scorpion\",\n \"scorpius\"\n ],\n \"♐\": [\n \"sagittarius\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"archer\"\n ],\n \"♑\": [\n \"capricorn\",\n \"sign\",\n \"zodiac\",\n \"purple-square\",\n \"astrology\",\n \"goat\"\n ],\n \"♒\": [\n \"aquarius\",\n \"sign\",\n \"purple-square\",\n \"zodiac\",\n \"astrology\",\n \"bearer\",\n \"water\"\n ],\n \"♓\": [\n \"pisces\",\n \"purple-square\",\n \"sign\",\n \"zodiac\",\n \"astrology\",\n \"fish\"\n ],\n \"⛎\": [\n \"ophiuchus\",\n \"sign\",\n \"purple-square\",\n \"constellation\",\n \"astrology\",\n \"bearer\",\n \"serpent\",\n \"snake\",\n \"zodiac\"\n ],\n \"🔀\": [\n \"shuffle_tracks_button\",\n \"blue-square\",\n \"shuffle\",\n \"music\",\n \"random\",\n \"arrow\",\n \"arrows\",\n \"crossed\",\n \"rightwards\",\n \"symbol\",\n \"twisted\",\n \"merge\"\n ],\n \"🔁\": [\n \"repeat_button\",\n \"loop\",\n \"record\",\n \"arrow\",\n \"arrows\",\n \"circle\",\n \"clockwise\",\n \"leftwards\",\n \"open\",\n \"retweet\",\n \"rightwards\",\n \"symbol\"\n ],\n \"🔂\": [\n \"repeat_single_button\",\n \"blue-square\",\n \"loop\",\n \"arrow\",\n \"arrows\",\n \"circle\",\n \"circled\",\n \"clockwise\",\n \"leftwards\",\n \"number\",\n \"once\",\n \"one\",\n \"open\",\n \"overlay\",\n \"rightwards\",\n \"symbol\",\n \"track\"\n ],\n \"▶️\": [\n \"play_button\",\n \"blue-square\",\n \"right\",\n \"direction\",\n \"play\",\n \"arrow\",\n \"black\",\n \"forward\",\n \"pointing\",\n \"right triangle\",\n \"triangle\"\n ],\n \"⏩\": [\n \"fast_forward_button\",\n \"blue-square\",\n \"play\",\n \"speed\",\n \"continue\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"right\",\n \"symbol\",\n \"triangle\"\n ],\n \"⏭️\": [\n \"next_track_button\",\n \"forward\",\n \"next\",\n \"blue-square\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"pointing\",\n \"right\",\n \"scene\",\n \"skip\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"⏯️\": [\n \"play_or_pause_button\",\n \"blue-square\",\n \"play\",\n \"pause\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"play/pause\",\n \"pointing\",\n \"right\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"◀️\": [\n \"reverse_button\",\n \"blue-square\",\n \"left\",\n \"direction\",\n \"arrow\",\n \"backward\",\n \"black\",\n \"pointing\",\n \"triangle\"\n ],\n \"⏪\": [\n \"fast_reverse_button\",\n \"play\",\n \"blue-square\",\n \"arrow\",\n \"black\",\n \"double\",\n \"left\",\n \"pointing\",\n \"rewind\",\n \"symbol\",\n \"triangle\",\n \"revert\"\n ],\n \"⏮️\": [\n \"last_track_button\",\n \"backward\",\n \"arrow\",\n \"bar\",\n \"black\",\n \"double\",\n \"left\",\n \"pointing\",\n \"previous\",\n \"scene\",\n \"skip\",\n \"symbol\",\n \"triangle\",\n \"vertical\"\n ],\n \"🔼\": [\n \"upwards_button\",\n \"blue-square\",\n \"triangle\",\n \"direction\",\n \"point\",\n \"forward\",\n \"top\",\n \"arrow\",\n \"pointing\",\n \"red\",\n \"small\",\n \"up\"\n ],\n \"⏫\": [\n \"fast_up_button\",\n \"blue-square\",\n \"direction\",\n \"top\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"triangle\"\n ],\n \"🔽\": [\n \"downwards_button\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"arrow\",\n \"down\",\n \"pointing\",\n \"red\",\n \"small\",\n \"triangle\"\n ],\n \"⏬\": [\n \"fast_down_button\",\n \"blue-square\",\n \"direction\",\n \"bottom\",\n \"arrow\",\n \"black\",\n \"double\",\n \"pointing\",\n \"triangle\"\n ],\n \"⏸️\": [\n \"pause_button\",\n \"pause\",\n \"blue-square\",\n \"bar\",\n \"double\",\n \"symbol\",\n \"vertical\"\n ],\n \"⏹️\": [\n \"stop_button\",\n \"blue-square\",\n \"black\",\n \"for\",\n \"square\",\n \"symbol\"\n ],\n \"⏺️\": [\n \"record_button\",\n \"blue-square\",\n \"black\",\n \"circle\",\n \"for\",\n \"symbol\"\n ],\n \"⏏️\": [\n \"eject_button\",\n \"blue-square\",\n \"symbol\"\n ],\n \"🎦\": [\n \"cinema\",\n \"blue-square\",\n \"record\",\n \"film\",\n \"movie\",\n \"curtain\",\n \"stage\",\n \"theater\",\n \"activity\",\n \"camera\",\n \"entertainment\",\n \"movies\",\n \"screen\",\n \"symbol\"\n ],\n \"🔅\": [\n \"dim_button\",\n \"sun\",\n \"afternoon\",\n \"warm\",\n \"summer\",\n \"brightness\",\n \"decrease\",\n \"low\",\n \"symbol\"\n ],\n \"🔆\": [\n \"bright_button\",\n \"sun\",\n \"light\",\n \"brightness\",\n \"high\",\n \"increase\",\n \"symbol\"\n ],\n \"📶\": [\n \"antenna_bars\",\n \"blue-square\",\n \"reception\",\n \"phone\",\n \"internet\",\n \"connection\",\n \"wifi\",\n \"bluetooth\",\n \"bars\",\n \"bar\",\n \"cell\",\n \"cellular\",\n \"communication\",\n \"mobile\",\n \"signal\",\n \"stairs\",\n \"strength\",\n \"telephone\"\n ],\n \"📳\": [\n \"vibration_mode\",\n \"orange-square\",\n \"phone\",\n \"cell\",\n \"communication\",\n \"heart\",\n \"mobile\",\n \"silent\",\n \"telephone\"\n ],\n \"📴\": [\n \"mobile_phone_off\",\n \"mute\",\n \"orange-square\",\n \"silence\",\n \"quiet\",\n \"cell\",\n \"communication\",\n \"telephone\"\n ],\n \"♀️\": [\n \"female_sign\",\n \"woman\",\n \"women\",\n \"lady\",\n \"girl\",\n \"symbol\",\n \"venus\"\n ],\n \"♂️\": [\n \"male_sign\",\n \"man\",\n \"boy\",\n \"men\",\n \"mars\",\n \"symbol\"\n ],\n \"⚕️\": [\n \"medical_symbol\",\n \"health\",\n \"hospital\",\n \"aesculapius\",\n \"asclepius\",\n \"asklepios\",\n \"care\",\n \"doctor\",\n \"medicine\",\n \"rod\",\n \"snake\",\n \"staff\"\n ],\n \"♾️\": [\n \"infinity\",\n \"forever\",\n \"paper\",\n \"permanent\",\n \"sign\",\n \"unbounded\",\n \"universal\"\n ],\n \"♻️\": [\n \"recycling_symbol\",\n \"arrow\",\n \"environment\",\n \"garbage\",\n \"trash\",\n \"black\",\n \"green\",\n \"logo\",\n \"recycle\",\n \"universal\",\n \"reuse\"\n ],\n \"⚜️\": [\n \"fleur_de_lis\",\n \"decorative\",\n \"scout\",\n \"new\",\n \"orleans\",\n \"saints\",\n \"scouts\"\n ],\n \"🔱\": [\n \"trident_emblem\",\n \"weapon\",\n \"spear\",\n \"anchor\",\n \"pitchfork\",\n \"ship\",\n \"tool\"\n ],\n \"📛\": [\n \"name_badge\",\n \"fire\",\n \"forbid\",\n \"tag\",\n \"tofu\"\n ],\n \"🔰\": [\n \"japanese_symbol_for_beginner\",\n \"badge\",\n \"shield\",\n \"chevron\",\n \"green\",\n \"leaf\",\n \"mark\",\n \"shoshinsha\",\n \"tool\",\n \"yellow\"\n ],\n \"⭕\": [\n \"hollow_red_circle\",\n \"circle\",\n \"round\",\n \"correct\",\n \"heavy\",\n \"large\",\n \"mark\",\n \"o\"\n ],\n \"✅\": [\n \"check_mark_button\",\n \"green-square\",\n \"ok\",\n \"agree\",\n \"vote\",\n \"election\",\n \"answer\",\n \"tick\",\n \"green\",\n \"heavy\",\n \"symbol\",\n \"white\",\n \"pass_tests\"\n ],\n \"☑️\": [\n \"check_box_with_check\",\n \"ok\",\n \"agree\",\n \"confirm\",\n \"black-square\",\n \"vote\",\n \"election\",\n \"yes\",\n \"tick\",\n \"ballot\",\n \"checkbox\",\n \"mark\"\n ],\n \"✔️\": [\n \"check_mark\",\n \"ok\",\n \"nike\",\n \"answer\",\n \"yes\",\n \"tick\",\n \"heavy\"\n ],\n \"✖️\": [\n \"multiplication_sign\",\n \"math\",\n \"calculation\",\n \"cancel\",\n \"heavy\",\n \"multiply\",\n \"symbol\",\n \"x\"\n ],\n \"❌\": [\n \"cross_mark\",\n \"no\",\n \"delete\",\n \"remove\",\n \"cancel\",\n \"red\",\n \"multiplication\",\n \"multiply\",\n \"x\"\n ],\n \"❎\": [\n \"cross_mark_button\",\n \"x\",\n \"green-square\",\n \"no\",\n \"deny\",\n \"negative\",\n \"square\",\n \"squared\"\n ],\n \"➕\": [\n \"plus_sign\",\n \"math\",\n \"calculation\",\n \"addition\",\n \"more\",\n \"increase\",\n \"heavy\",\n \"symbol\",\n \"add\"\n ],\n \"➖\": [\n \"minus_sign\",\n \"math\",\n \"calculation\",\n \"subtract\",\n \"less\",\n \"heavy\",\n \"symbol\",\n \"remove\"\n ],\n \"➗\": [\n \"division_sign\",\n \"divide\",\n \"math\",\n \"calculation\",\n \"heavy\",\n \"symbol\"\n ],\n \"➰\": [\n \"curly_loop\",\n \"scribble\",\n \"draw\",\n \"shape\",\n \"squiggle\",\n \"curl\",\n \"curling\"\n ],\n \"➿\": [\n \"double_curly_loop\",\n \"tape\",\n \"cassette\",\n \"curl\",\n \"curling\",\n \"voicemail\"\n ],\n \"〽️\": [\n \"part_alternation_mark\",\n \"graph\",\n \"presentation\",\n \"stats\",\n \"business\",\n \"economics\",\n \"bad\",\n \"m\",\n \"mcdonald’s\"\n ],\n \"✳️\": [\n \"eight_spoked_asterisk\",\n \"star\",\n \"sparkle\",\n \"green-square\"\n ],\n \"✴️\": [\n \"eight_pointed_star\",\n \"orange-square\",\n \"shape\",\n \"polygon\",\n \"black\",\n \"orange\"\n ],\n \"❇️\": [\n \"sparkle\",\n \"stars\",\n \"green-square\",\n \"awesome\",\n \"good\",\n \"fireworks\"\n ],\n \"‼️\": [\n \"double_exclamation_mark\",\n \"exclamation\",\n \"surprise\",\n \"bangbang\",\n \"punctuation\",\n \"red\"\n ],\n \"⁉️\": [\n \"exclamation_question_mark\",\n \"wat\",\n \"punctuation\",\n \"surprise\",\n \"interrobang\",\n \"red\"\n ],\n \"❓\": [\n \"question_mark\",\n \"doubt\",\n \"confused\",\n \"black\",\n \"ornament\",\n \"punctuation\",\n \"red\"\n ],\n \"❔\": [\n \"white_question_mark\",\n \"doubts\",\n \"gray\",\n \"huh\",\n \"confused\",\n \"grey\",\n \"ornament\",\n \"outlined\",\n \"punctuation\"\n ],\n \"❕\": [\n \"white_exclamation_mark\",\n \"surprise\",\n \"punctuation\",\n \"gray\",\n \"wow\",\n \"warning\",\n \"grey\",\n \"ornament\",\n \"outlined\"\n ],\n \"❗\": [\n \"exclamation_mark\",\n \"heavy_exclamation_mark\",\n \"danger\",\n \"surprise\",\n \"punctuation\",\n \"wow\",\n \"warning\",\n \"bang\",\n \"red\",\n \"symbol\"\n ],\n \"〰️\": [\n \"wavy_dash\",\n \"draw\",\n \"line\",\n \"moustache\",\n \"mustache\",\n \"squiggle\",\n \"scribble\",\n \"punctuation\",\n \"wave\"\n ],\n \"©️\": [\n \"copyright\",\n \"ip\",\n \"license\",\n \"circle\",\n \"law\",\n \"legal\",\n \"c\",\n \"sign\"\n ],\n \"®️\": [\n \"registered\",\n \"alphabet\",\n \"circle\",\n \"r\",\n \"sign\"\n ],\n \"™️\": [\n \"trade_mark\",\n \"trademark\",\n \"brand\",\n \"law\",\n \"legal\",\n \"sign\",\n \"tm\"\n ],\n \"#️⃣\": [\n \"keycap_\",\n \"symbol\",\n \"blue-square\",\n \"twitter\",\n \"hash\",\n \"hashtag\",\n \"key\",\n \"number\",\n \"octothorpe\",\n \"pound\",\n \"sign\"\n ],\n \"*️⃣\": [\n \"keycap_\",\n \"star\",\n \"keycap\",\n \"asterisk\"\n ],\n \"0️⃣\": [\n \"keycap_0\",\n \"0\",\n \"numbers\",\n \"blue-square\",\n \"null\",\n \"zero\",\n \"digit\"\n ],\n \"1️⃣\": [\n \"keycap_1\",\n \"blue-square\",\n \"numbers\",\n \"1\",\n \"one\",\n \"digit\"\n ],\n \"2️⃣\": [\n \"keycap_2\",\n \"numbers\",\n \"2\",\n \"prime\",\n \"blue-square\",\n \"two\",\n \"digit\"\n ],\n \"3️⃣\": [\n \"keycap_3\",\n \"3\",\n \"numbers\",\n \"prime\",\n \"blue-square\",\n \"three\",\n \"digit\"\n ],\n \"4️⃣\": [\n \"keycap_4\",\n \"4\",\n \"numbers\",\n \"blue-square\",\n \"four\",\n \"digit\"\n ],\n \"5️⃣\": [\n \"keycap_5\",\n \"5\",\n \"numbers\",\n \"blue-square\",\n \"prime\",\n \"five\",\n \"digit\"\n ],\n \"6️⃣\": [\n \"keycap_6\",\n \"6\",\n \"numbers\",\n \"blue-square\",\n \"six\",\n \"digit\"\n ],\n \"7️⃣\": [\n \"keycap_7\",\n \"7\",\n \"numbers\",\n \"blue-square\",\n \"prime\",\n \"seven\",\n \"digit\"\n ],\n \"8️⃣\": [\n \"keycap_8\",\n \"8\",\n \"blue-square\",\n \"numbers\",\n \"eight\",\n \"digit\"\n ],\n \"9️⃣\": [\n \"keycap_9\",\n \"blue-square\",\n \"numbers\",\n \"9\",\n \"nine\",\n \"digit\"\n ],\n \"🔟\": [\n \"keycap_10\",\n \"numbers\",\n \"10\",\n \"blue-square\",\n \"ten\",\n \"number\"\n ],\n \"🔠\": [\n \"input_latin_uppercase\",\n \"alphabet\",\n \"words\",\n \"letters\",\n \"uppercase\",\n \"blue-square\",\n \"abcd\",\n \"capital\",\n \"for\",\n \"symbol\"\n ],\n \"🔡\": [\n \"input_latin_lowercase\",\n \"blue-square\",\n \"letters\",\n \"lowercase\",\n \"alphabet\",\n \"abcd\",\n \"for\",\n \"small\",\n \"symbol\"\n ],\n \"🔢\": [\n \"input_numbers\",\n \"numbers\",\n \"blue-square\",\n \"1234\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"for\",\n \"numeric\",\n \"symbol\"\n ],\n \"🔣\": [\n \"input_symbols\",\n \"blue-square\",\n \"music\",\n \"note\",\n \"ampersand\",\n \"percent\",\n \"glyphs\",\n \"characters\",\n \"for\",\n \"symbol\",\n \"symbol input\"\n ],\n \"🔤\": [\n \"input_latin_letters\",\n \"blue-square\",\n \"alphabet\",\n \"abc\",\n \"for\",\n \"symbol\"\n ],\n \"🅰️\": [\n \"a_button\",\n \"red-square\",\n \"alphabet\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🆎\": [\n \"ab_button\",\n \"red-square\",\n \"alphabet\",\n \"blood\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🅱️\": [\n \"b_button\",\n \"red-square\",\n \"alphabet\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"squared\",\n \"type\"\n ],\n \"🆑\": [\n \"cl_button\",\n \"alphabet\",\n \"words\",\n \"red-square\",\n \"clear\",\n \"sign\",\n \"squared\"\n ],\n \"🆒\": [\n \"cool_button\",\n \"words\",\n \"blue-square\",\n \"sign\",\n \"square\",\n \"squared\"\n ],\n \"🆓\": [\n \"free_button\",\n \"blue-square\",\n \"words\",\n \"sign\",\n \"squared\"\n ],\n \"ℹ️\": [\n \"information\",\n \"blue-square\",\n \"alphabet\",\n \"letter\",\n \"i\",\n \"info\",\n \"lowercase\",\n \"source\",\n \"tourist\"\n ],\n \"🆔\": [\n \"id_button\",\n \"purple-square\",\n \"words\",\n \"identification\",\n \"identity\",\n \"sign\",\n \"squared\"\n ],\n \"Ⓜ️\": [\n \"circled_m\",\n \"alphabet\",\n \"blue-circle\",\n \"letter\",\n \"capital\",\n \"circle\",\n \"latin\",\n \"metro\"\n ],\n \"🆕\": [\n \"new_button\",\n \"blue-square\",\n \"words\",\n \"start\",\n \"fresh\",\n \"sign\",\n \"squared\"\n ],\n \"🆖\": [\n \"ng_button\",\n \"blue-square\",\n \"words\",\n \"shape\",\n \"icon\",\n \"blooper\",\n \"good\",\n \"no\",\n \"sign\",\n \"squared\"\n ],\n \"🅾️\": [\n \"o_button\",\n \"alphabet\",\n \"red-square\",\n \"letter\",\n \"blood\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"o2\",\n \"squared\",\n \"type\"\n ],\n \"🆗\": [\n \"ok_button\",\n \"good\",\n \"agree\",\n \"yes\",\n \"blue-square\",\n \"okay\",\n \"sign\",\n \"square\",\n \"squared\"\n ],\n \"🅿️\": [\n \"p_button\",\n \"cars\",\n \"blue-square\",\n \"alphabet\",\n \"letter\",\n \"capital\",\n \"latin\",\n \"negative\",\n \"parking\",\n \"sign\",\n \"squared\"\n ],\n \"🆘\": [\n \"sos_button\",\n \"help\",\n \"red-square\",\n \"words\",\n \"emergency\",\n \"911\",\n \"distress\",\n \"sign\",\n \"signal\",\n \"squared\"\n ],\n \"🆙\": [\n \"up_button\",\n \"blue-square\",\n \"above\",\n \"high\",\n \"exclamation\",\n \"level\",\n \"mark\",\n \"sign\",\n \"squared\",\n \"up!\"\n ],\n \"🆚\": [\n \"vs_button\",\n \"words\",\n \"orange-square\",\n \"squared\",\n \"versus\"\n ],\n \"🈁\": [\n \"japanese_here_button\",\n \"blue-square\",\n \"here\",\n \"katakana\",\n \"japanese\",\n \"destination\",\n \"koko\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"word\",\n \"“here”\"\n ],\n \"🈂️\": [\n \"japanese_service_charge_button\",\n \"japanese\",\n \"blue-square\",\n \"katakana\",\n \"charge”\",\n \"meaning\",\n \"or\",\n \"sa\",\n \"sign\",\n \"squared\",\n \"“service\",\n \"“service”\"\n ],\n \"🈷️\": [\n \"japanese_monthly_amount_button\",\n \"chinese\",\n \"month\",\n \"moon\",\n \"japanese\",\n \"orange-square\",\n \"kanji\",\n \"amount”\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"radical\",\n \"sign\",\n \"squared\",\n \"u6708\",\n \"unified\",\n \"“monthly\"\n ],\n \"🈶\": [\n \"japanese_not_free_of_charge_button\",\n \"orange-square\",\n \"chinese\",\n \"have\",\n \"kanji\",\n \"charge”\",\n \"cjk\",\n \"exist\",\n \"ideograph\",\n \"meaning\",\n \"own\",\n \"sign\",\n \"squared\",\n \"u6709\",\n \"unified\",\n \"“not\"\n ],\n \"🈯\": [\n \"japanese_reserved_button\",\n \"chinese\",\n \"point\",\n \"green-square\",\n \"kanji\",\n \"cjk\",\n \"finger\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u6307\",\n \"unified\",\n \"“reserved”\"\n ],\n \"🉐\": [\n \"japanese_bargain_button\",\n \"chinese\",\n \"kanji\",\n \"obtain\",\n \"get\",\n \"circle\",\n \"acquire\",\n \"advantage\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“bargain”\"\n ],\n \"🈹\": [\n \"japanese_discount_button\",\n \"cut\",\n \"divide\",\n \"chinese\",\n \"kanji\",\n \"pink-square\",\n \"bargain\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"sale\",\n \"sign\",\n \"squared\",\n \"u5272\",\n \"unified\",\n \"“discount”\"\n ],\n \"🈚\": [\n \"japanese_free_of_charge_button\",\n \"nothing\",\n \"chinese\",\n \"kanji\",\n \"japanese\",\n \"orange-square\",\n \"charge”\",\n \"cjk\",\n \"ideograph\",\n \"lacking\",\n \"meaning\",\n \"negation\",\n \"sign\",\n \"squared\",\n \"u7121\",\n \"unified\",\n \"“free\"\n ],\n \"🈲\": [\n \"japanese_prohibited_button\",\n \"kanji\",\n \"japanese\",\n \"chinese\",\n \"forbidden\",\n \"limit\",\n \"restricted\",\n \"red-square\",\n \"cjk\",\n \"forbid\",\n \"ideograph\",\n \"meaning\",\n \"prohibit\",\n \"sign\",\n \"squared\",\n \"u7981\",\n \"unified\",\n \"“prohibited”\"\n ],\n \"🉑\": [\n \"japanese_acceptable_button\",\n \"ok\",\n \"good\",\n \"chinese\",\n \"kanji\",\n \"agree\",\n \"yes\",\n \"orange-circle\",\n \"accept\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“acceptable”\"\n ],\n \"🈸\": [\n \"japanese_application_button\",\n \"chinese\",\n \"japanese\",\n \"kanji\",\n \"orange-square\",\n \"apply\",\n \"cjk\",\n \"form\",\n \"ideograph\",\n \"meaning\",\n \"monkey\",\n \"request\",\n \"sign\",\n \"squared\",\n \"u7533\",\n \"unified\",\n \"“application”\"\n ],\n \"🈴\": [\n \"japanese_passing_grade_button\",\n \"japanese\",\n \"chinese\",\n \"join\",\n \"kanji\",\n \"red-square\",\n \"agreement\",\n \"cjk\",\n \"grade”\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"together\",\n \"u5408\",\n \"unified\",\n \"“passing\"\n ],\n \"🈳\": [\n \"japanese_vacancy_button\",\n \"kanji\",\n \"japanese\",\n \"chinese\",\n \"empty\",\n \"sky\",\n \"blue-square\",\n \"7a7a\",\n \"available\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u7a7a\",\n \"unified\",\n \"“vacancy”\"\n ],\n \"㊗️\": [\n \"japanese_congratulations_button\",\n \"chinese\",\n \"kanji\",\n \"japanese\",\n \"red-circle\",\n \"circled\",\n \"congratulate\",\n \"congratulation\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“congratulations”\"\n ],\n \"㊙️\": [\n \"japanese_secret_button\",\n \"privacy\",\n \"chinese\",\n \"sshh\",\n \"kanji\",\n \"red-circle\",\n \"circled\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"“secret”\"\n ],\n \"🈺\": [\n \"japanese_open_for_business_button\",\n \"japanese\",\n \"opening hours\",\n \"orange-square\",\n \"55b6\",\n \"business”\",\n \"chinese\",\n \"cjk\",\n \"ideograph\",\n \"meaning\",\n \"operating\",\n \"sign\",\n \"squared\",\n \"u55b6\",\n \"unified\",\n \"work\",\n \"“open\"\n ],\n \"🈵\": [\n \"japanese_no_vacancy_button\",\n \"full\",\n \"chinese\",\n \"japanese\",\n \"red-square\",\n \"kanji\",\n \"6e80\",\n \"cjk\",\n \"fullness\",\n \"ideograph\",\n \"meaning\",\n \"sign\",\n \"squared\",\n \"u6e80\",\n \"unified\",\n \"vacancy”\",\n \"“full;\",\n \"“no\"\n ],\n \"🔴\": [\n \"red_circle\",\n \"shape\",\n \"error\",\n \"danger\",\n \"geometric\",\n \"large\"\n ],\n \"🟠\": [\n \"orange_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟡\": [\n \"yellow_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟢\": [\n \"green_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🔵\": [\n \"blue_circle\",\n \"shape\",\n \"icon\",\n \"button\",\n \"geometric\",\n \"large\"\n ],\n \"🟣\": [\n \"purple_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"🟤\": [\n \"brown_circle\",\n \"round\",\n \"geometric\",\n \"large\"\n ],\n \"⚫\": [\n \"black_circle\",\n \"shape\",\n \"button\",\n \"round\",\n \"geometric\",\n \"medium\"\n ],\n \"⚪\": [\n \"white_circle\",\n \"shape\",\n \"round\",\n \"geometric\",\n \"medium\"\n ],\n \"🟥\": [\n \"red_square\",\n \"card\",\n \"geometric\",\n \"large\"\n ],\n \"🟧\": [\n \"orange_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟨\": [\n \"yellow_square\",\n \"card\",\n \"geometric\",\n \"large\"\n ],\n \"🟩\": [\n \"green_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟦\": [\n \"blue_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟪\": [\n \"purple_square\",\n \"geometric\",\n \"large\"\n ],\n \"🟫\": [\n \"brown_square\",\n \"geometric\",\n \"large\"\n ],\n \"⬛\": [\n \"black_large_square\",\n \"shape\",\n \"icon\",\n \"button\",\n \"geometric\"\n ],\n \"⬜\": [\n \"white_large_square\",\n \"shape\",\n \"icon\",\n \"stone\",\n \"button\",\n \"geometric\"\n ],\n \"◼️\": [\n \"black_medium_square\",\n \"shape\",\n \"button\",\n \"icon\",\n \"geometric\"\n ],\n \"◻️\": [\n \"white_medium_square\",\n \"shape\",\n \"stone\",\n \"icon\",\n \"geometric\"\n ],\n \"◾\": [\n \"black_medium_small_square\",\n \"icon\",\n \"shape\",\n \"button\",\n \"geometric\"\n ],\n \"◽\": [\n \"white_medium_small_square\",\n \"shape\",\n \"stone\",\n \"icon\",\n \"button\",\n \"geometric\"\n ],\n \"▪️\": [\n \"black_small_square\",\n \"shape\",\n \"icon\",\n \"geometric\"\n ],\n \"▫️\": [\n \"white_small_square\",\n \"shape\",\n \"icon\",\n \"geometric\"\n ],\n \"🔶\": [\n \"large_orange_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔷\": [\n \"large_blue_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔸\": [\n \"small_orange_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔹\": [\n \"small_blue_diamond\",\n \"shape\",\n \"jewel\",\n \"gem\",\n \"geometric\"\n ],\n \"🔺\": [\n \"red_triangle_pointed_up\",\n \"shape\",\n \"direction\",\n \"up\",\n \"top\",\n \"geometric\",\n \"pointing\",\n \"small\"\n ],\n \"🔻\": [\n \"red_triangle_pointed_down\",\n \"shape\",\n \"direction\",\n \"bottom\",\n \"geometric\",\n \"pointing\",\n \"small\"\n ],\n \"💠\": [\n \"diamond_with_a_dot\",\n \"jewel\",\n \"blue\",\n \"gem\",\n \"crystal\",\n \"fancy\",\n \"comic\",\n \"cuteness\",\n \"flower\",\n \"geometric\",\n \"inside\",\n \"kawaii\",\n \"shape\"\n ],\n \"🔘\": [\n \"radio_button\",\n \"input\",\n \"old\",\n \"music\",\n \"circle\",\n \"geometric\"\n ],\n \"🔳\": [\n \"white_square_button\",\n \"shape\",\n \"input\",\n \"geometric\",\n \"outlined\"\n ],\n \"🔲\": [\n \"black_square_button\",\n \"shape\",\n \"input\",\n \"frame\",\n \"geometric\"\n ],\n \"🏁\": [\n \"chequered_flag\",\n \"contest\",\n \"finishline\",\n \"race\",\n \"gokart\",\n \"checkered\",\n \"finish\",\n \"girl\",\n \"grid\",\n \"milestone\",\n \"racing\"\n ],\n \"🚩\": [\n \"triangular_flag\",\n \"mark\",\n \"milestone\",\n \"place\",\n \"pole\",\n \"post\",\n \"red\",\n \"flag\"\n ],\n \"🎌\": [\n \"crossed_flags\",\n \"japanese\",\n \"nation\",\n \"country\",\n \"border\",\n \"activity\",\n \"celebration\",\n \"cross\",\n \"flag\",\n \"two\"\n ],\n \"🏴\": [\n \"black_flag\",\n \"pirate\",\n \"waving\"\n ],\n \"🏳️\": [\n \"white_flag\",\n \"losing\",\n \"loser\",\n \"lost\",\n \"surrender\",\n \"give up\",\n \"fail\",\n \"waving\"\n ],\n \"🏳️‍🌈\": [\n \"rainbow_flag\",\n \"flag\",\n \"rainbow\",\n \"pride\",\n \"gay\",\n \"lgbt\",\n \"queer\",\n \"homosexual\",\n \"lesbian\",\n \"bisexual\"\n ],\n \"🏴‍☠️\": [\n \"pirate_flag\",\n \"skull\",\n \"crossbones\",\n \"flag\",\n \"banner\",\n \"jolly\",\n \"plunder\",\n \"roger\",\n \"treasure\"\n ],\n \"🇦🇨\": [\n \"flag_ascension_island\"\n ],\n \"🇦🇩\": [\n \"flag_andorra\",\n \"ad\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"andorra\",\n \"andorran\"\n ],\n \"🇦🇪\": [\n \"flag_united_arab_emirates\",\n \"united\",\n \"arab\",\n \"emirates\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"united_arab_emirates\",\n \"emirati\",\n \"uae\"\n ],\n \"🇦🇫\": [\n \"flag_afghanistan\",\n \"af\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"afghanistan\",\n \"afghan\"\n ],\n \"🇦🇬\": [\n \"flag_antigua_barbuda\",\n \"antigua\",\n \"barbuda\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"antigua_barbuda\"\n ],\n \"🇦🇮\": [\n \"flag_anguilla\",\n \"ai\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"anguilla\",\n \"anguillan\"\n ],\n \"🇦🇱\": [\n \"flag_albania\",\n \"al\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"albania\",\n \"albanian\"\n ],\n \"🇦🇲\": [\n \"flag_armenia\",\n \"am\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"armenia\",\n \"armenian\"\n ],\n \"🇦🇴\": [\n \"flag_angola\",\n \"ao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"angola\",\n \"angolan\"\n ],\n \"🇦🇶\": [\n \"flag_antarctica\",\n \"aq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"antarctica\",\n \"antarctic\"\n ],\n \"🇦🇷\": [\n \"flag_argentina\",\n \"ar\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"argentina\",\n \"argentinian\"\n ],\n \"🇦🇸\": [\n \"flag_american_samoa\",\n \"american\",\n \"ws\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"american_samoa\",\n \"samoan\"\n ],\n \"🇦🇹\": [\n \"flag_austria\",\n \"at\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"austria\",\n \"austrian\"\n ],\n \"🇦🇺\": [\n \"flag_australia\",\n \"au\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"australia\",\n \"aussie\",\n \"australian\",\n \"heard\",\n \"mcdonald\"\n ],\n \"🇦🇼\": [\n \"flag_aruba\",\n \"aw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"aruba\",\n \"aruban\"\n ],\n \"🇦🇽\": [\n \"flag_aland_islands\",\n \"Åland\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"aland_islands\"\n ],\n \"🇦🇿\": [\n \"flag_azerbaijan\",\n \"az\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"azerbaijan\",\n \"azerbaijani\"\n ],\n \"🇧🇦\": [\n \"flag_bosnia_herzegovina\",\n \"bosnia\",\n \"herzegovina\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bosnia_herzegovina\"\n ],\n \"🇧🇧\": [\n \"flag_barbados\",\n \"bb\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"barbados\",\n \"bajan\",\n \"barbadian\"\n ],\n \"🇧🇩\": [\n \"flag_bangladesh\",\n \"bd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bangladesh\",\n \"bangladeshi\"\n ],\n \"🇧🇪\": [\n \"flag_belgium\",\n \"be\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belgium\",\n \"belgian\"\n ],\n \"🇧🇫\": [\n \"flag_burkina_faso\",\n \"burkina\",\n \"faso\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"burkina_faso\",\n \"burkinabe\"\n ],\n \"🇧🇬\": [\n \"flag_bulgaria\",\n \"bg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bulgaria\",\n \"bulgarian\"\n ],\n \"🇧🇭\": [\n \"flag_bahrain\",\n \"bh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bahrain\",\n \"bahrainian\",\n \"bahrani\"\n ],\n \"🇧🇮\": [\n \"flag_burundi\",\n \"bi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"burundi\",\n \"burundian\"\n ],\n \"🇧🇯\": [\n \"flag_benin\",\n \"bj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"benin\",\n \"beninese\"\n ],\n \"🇧🇱\": [\n \"flag_st_barthelemy\",\n \"saint\",\n \"barthélemy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_barthelemy\",\n \"st.\"\n ],\n \"🇧🇲\": [\n \"flag_bermuda\",\n \"bm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bermuda\",\n \"bermudan flag\"\n ],\n \"🇧🇳\": [\n \"flag_brunei\",\n \"bn\",\n \"darussalam\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"brunei\",\n \"bruneian\"\n ],\n \"🇧🇴\": [\n \"flag_bolivia\",\n \"bo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bolivia\",\n \"bolivian\"\n ],\n \"🇧🇶\": [\n \"flag_caribbean_netherlands\",\n \"bonaire\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"caribbean_netherlands\",\n \"eustatius\",\n \"saba\",\n \"sint\"\n ],\n \"🇧🇷\": [\n \"flag_brazil\",\n \"br\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"brazil\",\n \"brasil\",\n \"brazilian\",\n \"for\"\n ],\n \"🇧🇸\": [\n \"flag_bahamas\",\n \"bs\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bahamas\",\n \"bahamian\"\n ],\n \"🇧🇹\": [\n \"flag_bhutan\",\n \"bt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"bhutan\",\n \"bhutanese\"\n ],\n \"🇧🇻\": [\n \"flag_bouvet_island\",\n \"norway\"\n ],\n \"🇧🇼\": [\n \"flag_botswana\",\n \"bw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"botswana\",\n \"batswana\"\n ],\n \"🇧🇾\": [\n \"flag_belarus\",\n \"by\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belarus\",\n \"belarusian\"\n ],\n \"🇧🇿\": [\n \"flag_belize\",\n \"bz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"belize\",\n \"belizean\"\n ],\n \"🇨🇦\": [\n \"flag_canada\",\n \"ca\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"canada\",\n \"canadian\"\n ],\n \"🇨🇨\": [\n \"flag_cocos_islands\",\n \"cocos\",\n \"keeling\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cocos_islands\",\n \"island\"\n ],\n \"🇨🇩\": [\n \"flag_congo_kinshasa\",\n \"congo\",\n \"democratic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"congo_kinshasa\",\n \"drc\"\n ],\n \"🇨🇫\": [\n \"flag_central_african_republic\",\n \"central\",\n \"african\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"central_african_republic\"\n ],\n \"🇨🇬\": [\n \"flag_congo_brazzaville\",\n \"congo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"congo_brazzaville\",\n \"republic\"\n ],\n \"🇨🇭\": [\n \"flag_switzerland\",\n \"ch\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"switzerland\",\n \"cross\",\n \"red\",\n \"swiss\"\n ],\n \"🇨🇮\": [\n \"flag_cote_d_ivoire\",\n \"ivory\",\n \"coast\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cote_d_ivoire\",\n \"côte\",\n \"divoire\",\n \"d’ivoire\"\n ],\n \"🇨🇰\": [\n \"flag_cook_islands\",\n \"cook\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cook_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇨🇱\": [\n \"flag_chile\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"chile\",\n \"chilean\"\n ],\n \"🇨🇲\": [\n \"flag_cameroon\",\n \"cm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cameroon\",\n \"cameroonian\"\n ],\n \"🇨🇳\": [\n \"flag_china\",\n \"china\",\n \"chinese\",\n \"prc\",\n \"flag\",\n \"country\",\n \"nation\",\n \"banner\",\n \"cn\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇨🇴\": [\n \"flag_colombia\",\n \"co\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"colombia\",\n \"colombian\"\n ],\n \"🇨🇵\": [\n \"flag_clipperton_island\"\n ],\n \"🇨🇷\": [\n \"flag_costa_rica\",\n \"costa\",\n \"rica\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"costa_rica\",\n \"rican\"\n ],\n \"🇨🇺\": [\n \"flag_cuba\",\n \"cu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cuba\",\n \"cuban\"\n ],\n \"🇨🇻\": [\n \"flag_cape_verde\",\n \"cabo\",\n \"verde\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cape_verde\",\n \"verdian\"\n ],\n \"🇨🇼\": [\n \"flag_curacao\",\n \"curaçao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"curacao\",\n \"antilles\",\n \"curaçaoan\"\n ],\n \"🇨🇽\": [\n \"flag_christmas_island\",\n \"christmas\",\n \"island\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"christmas_island\"\n ],\n \"🇨🇾\": [\n \"flag_cyprus\",\n \"cy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cyprus\",\n \"cypriot\"\n ],\n \"🇨🇿\": [\n \"flag_czechia\",\n \"cz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"czechia\",\n \"czech\",\n \"republic\"\n ],\n \"🇩🇪\": [\n \"flag_germany\",\n \"german\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"germany\",\n \"de\",\n \"deutsch\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇩🇬\": [\n \"flag_diego_garcia\"\n ],\n \"🇩🇯\": [\n \"flag_djibouti\",\n \"dj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"djibouti\",\n \"djiboutian\"\n ],\n \"🇩🇰\": [\n \"flag_denmark\",\n \"dk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"denmark\",\n \"danish\"\n ],\n \"🇩🇲\": [\n \"flag_dominica\",\n \"dm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"dominica\"\n ],\n \"🇩🇴\": [\n \"flag_dominican_republic\",\n \"dominican\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"dominican_republic\",\n \"dom\",\n \"rep\"\n ],\n \"🇩🇿\": [\n \"flag_algeria\",\n \"dz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"algeria\",\n \"algerian\"\n ],\n \"🇪🇦\": [\n \"flag_ceuta_melilla\"\n ],\n \"🇪🇨\": [\n \"flag_ecuador\",\n \"ec\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ecuador\",\n \"ecuadorian\"\n ],\n \"🇪🇪\": [\n \"flag_estonia\",\n \"ee\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"estonia\",\n \"estonian\"\n ],\n \"🇪🇬\": [\n \"flag_egypt\",\n \"eg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"egypt\",\n \"egyptian\"\n ],\n \"🇪🇭\": [\n \"flag_western_sahara\",\n \"western\",\n \"sahara\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"western_sahara\",\n \"saharan\",\n \"west\"\n ],\n \"🇪🇷\": [\n \"flag_eritrea\",\n \"er\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"eritrea\",\n \"eritrean\"\n ],\n \"🇪🇸\": [\n \"flag_spain\",\n \"spain\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ceuta\",\n \"es\",\n \"indicator\",\n \"letters\",\n \"melilla\",\n \"regional\",\n \"spanish\",\n \"symbol\"\n ],\n \"🇪🇹\": [\n \"flag_ethiopia\",\n \"et\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ethiopia\",\n \"ethiopian\"\n ],\n \"🇪🇺\": [\n \"flag_european_union\",\n \"european\",\n \"union\",\n \"flag\",\n \"banner\",\n \"eu\"\n ],\n \"🇫🇮\": [\n \"flag_finland\",\n \"fi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"finland\",\n \"finnish\"\n ],\n \"🇫🇯\": [\n \"flag_fiji\",\n \"fj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"fiji\",\n \"fijian\"\n ],\n \"🇫🇰\": [\n \"flag_falkland_islands\",\n \"falkland\",\n \"islands\",\n \"malvinas\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"falkland_islands\",\n \"falklander\",\n \"falklands\",\n \"island\",\n \"islas\"\n ],\n \"🇫🇲\": [\n \"flag_micronesia\",\n \"micronesia\",\n \"federated\",\n \"states\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"micronesian\"\n ],\n \"🇫🇴\": [\n \"flag_faroe_islands\",\n \"faroe\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"faroe_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇫🇷\": [\n \"flag_france\",\n \"banner\",\n \"flag\",\n \"nation\",\n \"france\",\n \"french\",\n \"country\",\n \"clipperton\",\n \"fr\",\n \"indicator\",\n \"island\",\n \"letters\",\n \"martin\",\n \"regional\",\n \"saint\",\n \"st.\",\n \"symbol\"\n ],\n \"🇬🇦\": [\n \"flag_gabon\",\n \"ga\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gabon\",\n \"gabonese\"\n ],\n \"🇬🇧\": [\n \"flag_united_kingdom\",\n \"united\",\n \"kingdom\",\n \"great\",\n \"britain\",\n \"northern\",\n \"ireland\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british\",\n \"UK\",\n \"english\",\n \"england\",\n \"union jack\",\n \"united_kingdom\",\n \"cornwall\",\n \"gb\",\n \"scotland\",\n \"wales\"\n ],\n \"🇬🇩\": [\n \"flag_grenada\",\n \"gd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"grenada\",\n \"grenadian\"\n ],\n \"🇬🇪\": [\n \"flag_georgia\",\n \"ge\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"georgia\",\n \"georgian\"\n ],\n \"🇬🇫\": [\n \"flag_french_guiana\",\n \"french\",\n \"guiana\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_guiana\",\n \"guinean\"\n ],\n \"🇬🇬\": [\n \"flag_guernsey\",\n \"gg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guernsey\"\n ],\n \"🇬🇭\": [\n \"flag_ghana\",\n \"gh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ghana\",\n \"ghanaian\"\n ],\n \"🇬🇮\": [\n \"flag_gibraltar\",\n \"gi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gibraltar\",\n \"gibraltarian\"\n ],\n \"🇬🇱\": [\n \"flag_greenland\",\n \"gl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"greenland\",\n \"greenlandic\"\n ],\n \"🇬🇲\": [\n \"flag_gambia\",\n \"gm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"gambia\",\n \"gambian flag\"\n ],\n \"🇬🇳\": [\n \"flag_guinea\",\n \"gn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guinea\",\n \"guinean\"\n ],\n \"🇬🇵\": [\n \"flag_guadeloupe\",\n \"gp\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guadeloupe\",\n \"guadeloupean\"\n ],\n \"🇬🇶\": [\n \"flag_equatorial_guinea\",\n \"equatorial\",\n \"gn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"equatorial_guinea\",\n \"equatoguinean\",\n \"guinean\"\n ],\n \"🇬🇷\": [\n \"flag_greece\",\n \"gr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"greece\",\n \"greek\"\n ],\n \"🇬🇸\": [\n \"flag_south_georgia_south_sandwich_islands\",\n \"south\",\n \"georgia\",\n \"sandwich\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_georgia_south_sandwich_islands\",\n \"island\"\n ],\n \"🇬🇹\": [\n \"flag_guatemala\",\n \"gt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guatemala\",\n \"guatemalan\"\n ],\n \"🇬🇺\": [\n \"flag_guam\",\n \"gu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guam\",\n \"chamorro\",\n \"guamanian\"\n ],\n \"🇬🇼\": [\n \"flag_guinea_bissau\",\n \"gw\",\n \"bissau\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guinea_bissau\"\n ],\n \"🇬🇾\": [\n \"flag_guyana\",\n \"gy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"guyana\",\n \"guyanese\"\n ],\n \"🇭🇰\": [\n \"flag_hong_kong_sar_china\",\n \"hong\",\n \"kong\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"hong_kong_sar_china\"\n ],\n \"🇭🇲\": [\n \"flag_heard_mcdonald_islands\"\n ],\n \"🇭🇳\": [\n \"flag_honduras\",\n \"hn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"honduras\",\n \"honduran\"\n ],\n \"🇭🇷\": [\n \"flag_croatia\",\n \"hr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"croatia\",\n \"croatian\"\n ],\n \"🇭🇹\": [\n \"flag_haiti\",\n \"ht\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"haiti\",\n \"haitian\"\n ],\n \"🇭🇺\": [\n \"flag_hungary\",\n \"hu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"hungary\",\n \"hungarian\"\n ],\n \"🇮🇨\": [\n \"flag_canary_islands\",\n \"canary\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"canary_islands\",\n \"island\"\n ],\n \"🇮🇩\": [\n \"flag_indonesia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"indonesia\",\n \"indonesian\"\n ],\n \"🇮🇪\": [\n \"flag_ireland\",\n \"ie\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ireland\",\n \"irish flag\"\n ],\n \"🇮🇱\": [\n \"flag_israel\",\n \"il\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"israel\",\n \"israeli\"\n ],\n \"🇮🇲\": [\n \"flag_isle_of_man\",\n \"isle\",\n \"man\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"isle_of_man\",\n \"manx\"\n ],\n \"🇮🇳\": [\n \"flag_india\",\n \"in\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"india\",\n \"indian\"\n ],\n \"🇮🇴\": [\n \"flag_british_indian_ocean_territory\",\n \"british\",\n \"indian\",\n \"ocean\",\n \"territory\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british_indian_ocean_territory\",\n \"chagos\",\n \"diego\",\n \"garcia\",\n \"island\"\n ],\n \"🇮🇶\": [\n \"flag_iraq\",\n \"iq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iraq\",\n \"iraqi\"\n ],\n \"🇮🇷\": [\n \"flag_iran\",\n \"iran\",\n \"islamic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iranian flag\"\n ],\n \"🇮🇸\": [\n \"flag_iceland\",\n \"is\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"iceland\",\n \"icelandic\"\n ],\n \"🇮🇹\": [\n \"flag_italy\",\n \"italy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"indicator\",\n \"italian\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇯🇪\": [\n \"flag_jersey\",\n \"je\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jersey\"\n ],\n \"🇯🇲\": [\n \"flag_jamaica\",\n \"jm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jamaica\",\n \"jamaican flag\"\n ],\n \"🇯🇴\": [\n \"flag_jordan\",\n \"jo\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"jordan\",\n \"jordanian\"\n ],\n \"🇯🇵\": [\n \"flag_japan\",\n \"japanese\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"japan\",\n \"jp\",\n \"ja\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇰🇪\": [\n \"flag_kenya\",\n \"ke\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kenya\",\n \"kenyan\"\n ],\n \"🇰🇬\": [\n \"flag_kyrgyzstan\",\n \"kg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kyrgyzstan\",\n \"kyrgyzstani\"\n ],\n \"🇰🇭\": [\n \"flag_cambodia\",\n \"kh\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cambodia\",\n \"cambodian\"\n ],\n \"🇰🇮\": [\n \"flag_kiribati\",\n \"ki\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kiribati\",\n \"i\"\n ],\n \"🇰🇲\": [\n \"flag_comoros\",\n \"km\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"comoros\",\n \"comoran\"\n ],\n \"🇰🇳\": [\n \"flag_st_kitts_nevis\",\n \"saint\",\n \"kitts\",\n \"nevis\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_kitts_nevis\",\n \"st.\"\n ],\n \"🇰🇵\": [\n \"flag_north_korea\",\n \"north\",\n \"korea\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"north_korea\",\n \"korean\"\n ],\n \"🇰🇷\": [\n \"flag_south_korea\",\n \"south\",\n \"korea\",\n \"nation\",\n \"flag\",\n \"country\",\n \"banner\",\n \"south_korea\",\n \"indicator\",\n \"korean\",\n \"kr\",\n \"letters\",\n \"regional\",\n \"symbol\"\n ],\n \"🇰🇼\": [\n \"flag_kuwait\",\n \"kw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kuwait\",\n \"kuwaiti\"\n ],\n \"🇰🇾\": [\n \"flag_cayman_islands\",\n \"cayman\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"cayman_islands\",\n \"caymanian\",\n \"island\"\n ],\n \"🇰🇿\": [\n \"flag_kazakhstan\",\n \"kz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kazakhstan\",\n \"kazakh\",\n \"kazakhstani\"\n ],\n \"🇱🇦\": [\n \"flag_laos\",\n \"lao\",\n \"democratic\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"laos\",\n \"laotian\"\n ],\n \"🇱🇧\": [\n \"flag_lebanon\",\n \"lb\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lebanon\",\n \"lebanese\"\n ],\n \"🇱🇨\": [\n \"flag_st_lucia\",\n \"saint\",\n \"lucia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_lucia\",\n \"st.\"\n ],\n \"🇱🇮\": [\n \"flag_liechtenstein\",\n \"li\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"liechtenstein\",\n \"liechtensteiner\"\n ],\n \"🇱🇰\": [\n \"flag_sri_lanka\",\n \"sri\",\n \"lanka\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sri_lanka\",\n \"lankan\"\n ],\n \"🇱🇷\": [\n \"flag_liberia\",\n \"lr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"liberia\",\n \"liberian\"\n ],\n \"🇱🇸\": [\n \"flag_lesotho\",\n \"ls\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lesotho\",\n \"basotho\"\n ],\n \"🇱🇹\": [\n \"flag_lithuania\",\n \"lt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"lithuania\",\n \"lithuanian\"\n ],\n \"🇱🇺\": [\n \"flag_luxembourg\",\n \"lu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"luxembourg\",\n \"luxembourger\"\n ],\n \"🇱🇻\": [\n \"flag_latvia\",\n \"lv\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"latvia\",\n \"latvian\"\n ],\n \"🇱🇾\": [\n \"flag_libya\",\n \"ly\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"libya\",\n \"libyan\"\n ],\n \"🇲🇦\": [\n \"flag_morocco\",\n \"ma\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"morocco\",\n \"moroccan\"\n ],\n \"🇲🇨\": [\n \"flag_monaco\",\n \"mc\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"monaco\",\n \"monégasque\"\n ],\n \"🇲🇩\": [\n \"flag_moldova\",\n \"moldova\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"moldovan\"\n ],\n \"🇲🇪\": [\n \"flag_montenegro\",\n \"me\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"montenegro\",\n \"montenegrin\"\n ],\n \"🇲🇫\": [\n \"flag_st_martin\",\n \"st.\"\n ],\n \"🇲🇬\": [\n \"flag_madagascar\",\n \"mg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"madagascar\",\n \"madagascan\"\n ],\n \"🇲🇭\": [\n \"flag_marshall_islands\",\n \"marshall\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"marshall_islands\",\n \"island\",\n \"marshallese\"\n ],\n \"🇲🇰\": [\n \"flag_north_macedonia\",\n \"macedonia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"north_macedonia\",\n \"macedonian\"\n ],\n \"🇲🇱\": [\n \"flag_mali\",\n \"ml\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mali\",\n \"malian\"\n ],\n \"🇲🇲\": [\n \"flag_myanmar\",\n \"mm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"myanmar\",\n \"burma\",\n \"burmese\",\n \"for\",\n \"myanmarese flag\"\n ],\n \"🇲🇳\": [\n \"flag_mongolia\",\n \"mn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mongolia\",\n \"mongolian\"\n ],\n \"🇲🇴\": [\n \"flag_macao_sar_china\",\n \"macao\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"macao_sar_china\",\n \"macanese flag\",\n \"macau\"\n ],\n \"🇲🇵\": [\n \"flag_northern_mariana_islands\",\n \"northern\",\n \"mariana\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"northern_mariana_islands\",\n \"island\",\n \"micronesian\",\n \"north\"\n ],\n \"🇲🇶\": [\n \"flag_martinique\",\n \"mq\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"martinique\",\n \"martiniquais flag\",\n \"of martinique\",\n \"snake\"\n ],\n \"🇲🇷\": [\n \"flag_mauritania\",\n \"mr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mauritania\",\n \"mauritanian\"\n ],\n \"🇲🇸\": [\n \"flag_montserrat\",\n \"ms\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"montserrat\",\n \"montserratian\"\n ],\n \"🇲🇹\": [\n \"flag_malta\",\n \"mt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malta\",\n \"maltese\"\n ],\n \"🇲🇺\": [\n \"flag_mauritius\",\n \"mu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mauritius\",\n \"mauritian\"\n ],\n \"🇲🇻\": [\n \"flag_maldives\",\n \"mv\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"maldives\",\n \"maldivian\"\n ],\n \"🇲🇼\": [\n \"flag_malawi\",\n \"mw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malawi\",\n \"malawian flag\"\n ],\n \"🇲🇽\": [\n \"flag_mexico\",\n \"mx\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mexico\",\n \"mexican\"\n ],\n \"🇲🇾\": [\n \"flag_malaysia\",\n \"my\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"malaysia\",\n \"malaysian\"\n ],\n \"🇲🇿\": [\n \"flag_mozambique\",\n \"mz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mozambique\",\n \"mozambican\"\n ],\n \"🇳🇦\": [\n \"flag_namibia\",\n \"na\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"namibia\",\n \"namibian\"\n ],\n \"🇳🇨\": [\n \"flag_new_caledonia\",\n \"new\",\n \"caledonia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"new_caledonia\",\n \"caledonian\"\n ],\n \"🇳🇪\": [\n \"flag_niger\",\n \"ne\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"niger\",\n \"nigerien flag\"\n ],\n \"🇳🇫\": [\n \"flag_norfolk_island\",\n \"norfolk\",\n \"island\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"norfolk_island\"\n ],\n \"🇳🇬\": [\n \"flag_nigeria\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nigeria\",\n \"nigerian\"\n ],\n \"🇳🇮\": [\n \"flag_nicaragua\",\n \"ni\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nicaragua\",\n \"nicaraguan\"\n ],\n \"🇳🇱\": [\n \"flag_netherlands\",\n \"nl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"netherlands\",\n \"dutch\"\n ],\n \"🇳🇴\": [\n \"flag_norway\",\n \"no\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"norway\",\n \"bouvet\",\n \"jan\",\n \"mayen\",\n \"norwegian\",\n \"svalbard\"\n ],\n \"🇳🇵\": [\n \"flag_nepal\",\n \"np\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nepal\",\n \"nepalese\"\n ],\n \"🇳🇷\": [\n \"flag_nauru\",\n \"nr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"nauru\",\n \"nauruan\"\n ],\n \"🇳🇺\": [\n \"flag_niue\",\n \"nu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"niue\",\n \"niuean\"\n ],\n \"🇳🇿\": [\n \"flag_new_zealand\",\n \"new\",\n \"zealand\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"new_zealand\",\n \"kiwi\"\n ],\n \"🇴🇲\": [\n \"flag_oman\",\n \"om_symbol\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"oman\",\n \"omani\"\n ],\n \"🇵🇦\": [\n \"flag_panama\",\n \"pa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"panama\",\n \"panamanian\"\n ],\n \"🇵🇪\": [\n \"flag_peru\",\n \"pe\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"peru\",\n \"peruvian\"\n ],\n \"🇵🇫\": [\n \"flag_french_polynesia\",\n \"french\",\n \"polynesia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_polynesia\",\n \"polynesian\"\n ],\n \"🇵🇬\": [\n \"flag_papua_new_guinea\",\n \"papua\",\n \"new\",\n \"guinea\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"papua_new_guinea\",\n \"guinean\",\n \"png\"\n ],\n \"🇵🇭\": [\n \"flag_philippines\",\n \"ph\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"philippines\"\n ],\n \"🇵🇰\": [\n \"flag_pakistan\",\n \"pk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"pakistan\",\n \"pakistani\"\n ],\n \"🇵🇱\": [\n \"flag_poland\",\n \"pl\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"poland\",\n \"polish\"\n ],\n \"🇵🇲\": [\n \"flag_st_pierre_miquelon\",\n \"saint\",\n \"pierre\",\n \"miquelon\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_pierre_miquelon\",\n \"st.\"\n ],\n \"🇵🇳\": [\n \"flag_pitcairn_islands\",\n \"pitcairn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"pitcairn_islands\",\n \"island\"\n ],\n \"🇵🇷\": [\n \"flag_puerto_rico\",\n \"puerto\",\n \"rico\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"puerto_rico\",\n \"rican\"\n ],\n \"🇵🇸\": [\n \"flag_palestinian_territories\",\n \"palestine\",\n \"palestinian\",\n \"territories\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"palestinian_territories\"\n ],\n \"🇵🇹\": [\n \"flag_portugal\",\n \"pt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"portugal\",\n \"portugese\"\n ],\n \"🇵🇼\": [\n \"flag_palau\",\n \"pw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"palau\",\n \"palauan\"\n ],\n \"🇵🇾\": [\n \"flag_paraguay\",\n \"py\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"paraguay\",\n \"paraguayan\"\n ],\n \"🇶🇦\": [\n \"flag_qatar\",\n \"qa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"qatar\",\n \"qatari\"\n ],\n \"🇷🇪\": [\n \"flag_reunion\",\n \"réunion\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"reunion\",\n \"réunionnais\"\n ],\n \"🇷🇴\": [\n \"flag_romania\",\n \"ro\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"romania\",\n \"romanian\"\n ],\n \"🇨🇶\": [\n \"flag_sark\",\n \"cq\",\n \"flag\",\n \"banner\"\n ],\n \"🇷🇸\": [\n \"flag_serbia\",\n \"rs\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"serbia\",\n \"serbian flag\"\n ],\n \"🇷🇺\": [\n \"flag_russia\",\n \"russian\",\n \"federation\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"russia\",\n \"indicator\",\n \"letters\",\n \"regional\",\n \"ru\",\n \"symbol\"\n ],\n \"🇷🇼\": [\n \"flag_rwanda\",\n \"rw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"rwanda\",\n \"rwandan\"\n ],\n \"🇸🇦\": [\n \"flag_saudi_arabia\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"saudi_arabia\",\n \"arabian flag\"\n ],\n \"🇸🇧\": [\n \"flag_solomon_islands\",\n \"solomon\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"solomon_islands\",\n \"island\",\n \"islander flag\"\n ],\n \"🇸🇨\": [\n \"flag_seychelles\",\n \"sc\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"seychelles\",\n \"seychellois flag\"\n ],\n \"🇸🇩\": [\n \"flag_sudan\",\n \"sd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sudan\",\n \"sudanese\"\n ],\n \"🇸🇪\": [\n \"flag_sweden\",\n \"se\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sweden\",\n \"swedish\"\n ],\n \"🇸🇬\": [\n \"flag_singapore\",\n \"sg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"singapore\",\n \"singaporean\"\n ],\n \"🇸🇭\": [\n \"flag_st_helena\",\n \"saint\",\n \"helena\",\n \"ascension\",\n \"tristan\",\n \"cunha\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_helena\",\n \"st.\"\n ],\n \"🇸🇮\": [\n \"flag_slovenia\",\n \"si\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"slovenia\",\n \"slovenian\"\n ],\n \"🇸🇯\": [\n \"flag_svalbard_jan_mayen\"\n ],\n \"🇸🇰\": [\n \"flag_slovakia\",\n \"sk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"slovakia\",\n \"slovakian\",\n \"slovak flag\"\n ],\n \"🇸🇱\": [\n \"flag_sierra_leone\",\n \"sierra\",\n \"leone\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sierra_leone\",\n \"leonean\"\n ],\n \"🇸🇲\": [\n \"flag_san_marino\",\n \"san\",\n \"marino\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"san_marino\",\n \"sammarinese\"\n ],\n \"🇸🇳\": [\n \"flag_senegal\",\n \"sn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"senegal\",\n \"sengalese\"\n ],\n \"🇸🇴\": [\n \"flag_somalia\",\n \"so\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"somalia\",\n \"somalian flag\"\n ],\n \"🇸🇷\": [\n \"flag_suriname\",\n \"sr\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"suriname\",\n \"surinamer\"\n ],\n \"🇸🇸\": [\n \"flag_south_sudan\",\n \"south\",\n \"sd\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_sudan\",\n \"sudanese flag\"\n ],\n \"🇸🇹\": [\n \"flag_sao_tome_principe\",\n \"sao\",\n \"tome\",\n \"principe\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sao_tome_principe\",\n \"príncipe\",\n \"são\",\n \"tomé\"\n ],\n \"🇸🇻\": [\n \"flag_el_salvador\",\n \"el\",\n \"salvador\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"el_salvador\",\n \"salvadoran\"\n ],\n \"🇸🇽\": [\n \"flag_sint_maarten\",\n \"sint\",\n \"maarten\",\n \"dutch\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"sint_maarten\"\n ],\n \"🇸🇾\": [\n \"flag_syria\",\n \"syrian\",\n \"arab\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"syria\"\n ],\n \"🇸🇿\": [\n \"flag_eswatini\",\n \"sz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"eswatini\",\n \"swaziland\"\n ],\n \"🇹🇦\": [\n \"flag_tristan_da_cunha\"\n ],\n \"🇹🇨\": [\n \"flag_turks_caicos_islands\",\n \"turks\",\n \"caicos\",\n \"islands\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"turks_caicos_islands\",\n \"island\"\n ],\n \"🇹🇩\": [\n \"flag_chad\",\n \"td\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"chad\",\n \"chadian\"\n ],\n \"🇹🇫\": [\n \"flag_french_southern_territories\",\n \"french\",\n \"southern\",\n \"territories\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"french_southern_territories\",\n \"antarctic\",\n \"lands\"\n ],\n \"🇹🇬\": [\n \"flag_togo\",\n \"tg\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"togo\",\n \"togolese\"\n ],\n \"🇹🇭\": [\n \"flag_thailand\",\n \"th\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"thailand\",\n \"thai\"\n ],\n \"🇹🇯\": [\n \"flag_tajikistan\",\n \"tj\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tajikistan\",\n \"tajik\"\n ],\n \"🇹🇰\": [\n \"flag_tokelau\",\n \"tk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tokelau\",\n \"tokelauan\"\n ],\n \"🇹🇱\": [\n \"flag_timor_leste\",\n \"timor\",\n \"leste\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"timor_leste\",\n \"east\",\n \"leste flag\",\n \"timorese\"\n ],\n \"🇹🇲\": [\n \"flag_turkmenistan\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"turkmenistan\",\n \"turkmen\"\n ],\n \"🇹🇳\": [\n \"flag_tunisia\",\n \"tn\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tunisia\",\n \"tunisian\"\n ],\n \"🇹🇴\": [\n \"flag_tonga\",\n \"to\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tonga\",\n \"tongan flag\"\n ],\n \"🇹🇷\": [\n \"flag_turkey\",\n \"turkey\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tr\",\n \"turkish flag\",\n \"türkiye\"\n ],\n \"🇹🇹\": [\n \"flag_trinidad_tobago\",\n \"trinidad\",\n \"tobago\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"trinidad_tobago\"\n ],\n \"🇹🇻\": [\n \"flag_tuvalu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tuvalu\",\n \"tuvaluan\"\n ],\n \"🇹🇼\": [\n \"flag_taiwan\",\n \"tw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"taiwan\",\n \"china\",\n \"taiwanese\"\n ],\n \"🇹🇿\": [\n \"flag_tanzania\",\n \"tanzania\",\n \"united\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"tanzanian\"\n ],\n \"🇺🇦\": [\n \"flag_ukraine\",\n \"ua\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"ukraine\",\n \"ukrainian\"\n ],\n \"🇺🇬\": [\n \"flag_uganda\",\n \"ug\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uganda\",\n \"ugandan flag\"\n ],\n \"🇺🇲\": [\n \"flag_u_s_outlying_islands\",\n \"u.s.\",\n \"us\"\n ],\n \"🇺🇳\": [\n \"flag_united_nations\",\n \"un\",\n \"flag\",\n \"banner\"\n ],\n \"🇺🇸\": [\n \"flag_united_states\",\n \"united\",\n \"states\",\n \"america\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"united_states\",\n \"american\",\n \"indicator\",\n \"islands\",\n \"letters\",\n \"outlying\",\n \"regional\",\n \"symbol\",\n \"us\",\n \"usa\"\n ],\n \"🇺🇾\": [\n \"flag_uruguay\",\n \"uy\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uruguay\",\n \"uruguayan\"\n ],\n \"🇺🇿\": [\n \"flag_uzbekistan\",\n \"uz\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"uzbekistan\",\n \"uzbek\",\n \"uzbekistani\"\n ],\n \"🇻🇦\": [\n \"flag_vatican_city\",\n \"vatican\",\n \"city\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vatican_city\",\n \"vanticanien\"\n ],\n \"🇻🇨\": [\n \"flag_st_vincent_grenadines\",\n \"saint\",\n \"vincent\",\n \"grenadines\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"st_vincent_grenadines\",\n \"st.\"\n ],\n \"🇻🇪\": [\n \"flag_venezuela\",\n \"ve\",\n \"bolivarian\",\n \"republic\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"venezuela\",\n \"venezuelan\"\n ],\n \"🇻🇬\": [\n \"flag_british_virgin_islands\",\n \"british\",\n \"virgin\",\n \"islands\",\n \"bvi\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"british_virgin_islands\",\n \"island\",\n \"islander\"\n ],\n \"🇻🇮\": [\n \"flag_u_s_virgin_islands\",\n \"virgin\",\n \"islands\",\n \"us\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"u_s_virgin_islands\",\n \"america\",\n \"island\",\n \"islander\",\n \"states\",\n \"u.s.\",\n \"united\",\n \"usa\"\n ],\n \"🇻🇳\": [\n \"flag_vietnam\",\n \"viet\",\n \"nam\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vietnam\",\n \"vietnamese\"\n ],\n \"🇻🇺\": [\n \"flag_vanuatu\",\n \"vu\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"vanuatu\",\n \"ni\",\n \"vanuatu flag\"\n ],\n \"🇼🇫\": [\n \"flag_wallis_futuna\",\n \"wallis\",\n \"futuna\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"wallis_futuna\"\n ],\n \"🇼🇸\": [\n \"flag_samoa\",\n \"ws\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"samoa\",\n \"samoan flag\"\n ],\n \"🇽🇰\": [\n \"flag_kosovo\",\n \"xk\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"kosovo\",\n \"kosovar\"\n ],\n \"🇾🇪\": [\n \"flag_yemen\",\n \"ye\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"yemen\",\n \"yemeni flag\"\n ],\n \"🇾🇹\": [\n \"flag_mayotte\",\n \"yt\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"mayotte\"\n ],\n \"🇿🇦\": [\n \"flag_south_africa\",\n \"south\",\n \"africa\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"south_africa\",\n \"african flag\"\n ],\n \"🇿🇲\": [\n \"flag_zambia\",\n \"zm\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"zambia\",\n \"zambian\"\n ],\n \"🇿🇼\": [\n \"flag_zimbabwe\",\n \"zw\",\n \"flag\",\n \"nation\",\n \"country\",\n \"banner\",\n \"zimbabwe\",\n \"zim\",\n \"zimbabwean flag\"\n ],\n \"🏴󠁧󠁢󠁥󠁮󠁧󠁿\": [\n \"flag_england\",\n \"flag\",\n \"english\",\n \"cross\",\n \"george's\",\n \"st\"\n ],\n \"🏴󠁧󠁢󠁳󠁣󠁴󠁿\": [\n \"flag_scotland\",\n \"flag\",\n \"scottish\",\n \"andrew's\",\n \"cross\",\n \"saltire\",\n \"st\"\n ],\n \"🏴󠁧󠁢󠁷󠁬󠁳󠁿\": [\n \"flag_wales\",\n \"flag\",\n \"welsh\",\n \"baner\",\n \"cymru\",\n \"ddraig\",\n \"dragon\",\n \"goch\",\n \"red\",\n \"y\"\n ],\n \"🥲\": [\n \"smiling face with tear\",\n \"sad\",\n \"cry\",\n \"pretend\",\n \"grateful\",\n \"happy\",\n \"proud\",\n \"relieved\",\n \"smile\",\n \"touched\"\n ],\n \"🥸\": [\n \"disguised face\",\n \"pretent\",\n \"brows\",\n \"glasses\",\n \"moustache\",\n \"disguise\",\n \"incognito\",\n \"nose\"\n ],\n \"🤌\": [\n \"pinched fingers\",\n \"size\",\n \"tiny\",\n \"small\",\n \"che\",\n \"finger\",\n \"gesture\",\n \"hand\",\n \"interrogation\",\n \"ma\",\n \"purse\",\n \"sarcastic\",\n \"vuoi\"\n ],\n \"🫀\": [\n \"anatomical heart\",\n \"health\",\n \"heartbeat\",\n \"cardiology\",\n \"organ\",\n \"pulse\"\n ],\n \"🫁\": [\n \"lungs\",\n \"breathe\",\n \"breath\",\n \"exhalation\",\n \"inhalation\",\n \"organ\",\n \"respiration\"\n ],\n \"🥷\": [\n \"ninja\",\n \"ninjutsu\",\n \"skills\",\n \"japanese\",\n \"fighter\",\n \"hidden\",\n \"stealth\"\n ],\n \"🤵‍♂️\": [\n \"man in tuxedo\",\n \"formal\",\n \"fashion\",\n \"groom\",\n \"male\",\n \"men\",\n \"person\",\n \"suit\",\n \"wedding\"\n ],\n \"🤵‍♀️\": [\n \"woman in tuxedo\",\n \"formal\",\n \"fashion\",\n \"female\",\n \"wedding\",\n \"women\"\n ],\n \"👰‍♂️\": [\n \"man with veil\",\n \"wedding\",\n \"marriage\",\n \"bride\",\n \"male\",\n \"men\"\n ],\n \"👰‍♀️\": [\n \"woman with veil\",\n \"wedding\",\n \"marriage\",\n \"bride\",\n \"female\",\n \"women\"\n ],\n \"👩‍🍼\": [\n \"woman feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"female\",\n \"infant\",\n \"milk\",\n \"nursing\",\n \"women\"\n ],\n \"👨‍🍼\": [\n \"man feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"infant\",\n \"male\",\n \"men\",\n \"milk\",\n \"nursing\"\n ],\n \"🧑‍🍼\": [\n \"person feeding baby\",\n \"birth\",\n \"food\",\n \"bottle\",\n \"child\",\n \"infant\",\n \"milk\",\n \"nursing\"\n ],\n \"🧑‍🎄\": [\n \"mx claus\",\n \"christmas\",\n \"activity\",\n \"celebration\",\n \"mx.\",\n \"santa\"\n ],\n \"🫂\": [\n \"people hugging\",\n \"care\",\n \"goodbye\",\n \"hello\",\n \"hug\",\n \"thanks\"\n ],\n \"🐈‍⬛\": [\n \"black cat\",\n \"superstition\",\n \"luck\",\n \"halloween\",\n \"pet\",\n \"unlucky\"\n ],\n \"🦬\": [\n \"bison\",\n \"ox\",\n \"buffalo\",\n \"herd\",\n \"wisent\"\n ],\n \"🦣\": [\n \"mammoth\",\n \"elephant\",\n \"tusks\",\n \"extinct\",\n \"extinction\",\n \"large\",\n \"tusk\",\n \"woolly\"\n ],\n \"🦫\": [\n \"beaver\",\n \"animal\",\n \"rodent\",\n \"dam\"\n ],\n \"🐻‍❄️\": [\n \"polar bear\",\n \"animal\",\n \"arctic\",\n \"face\",\n \"white\"\n ],\n \"🦤\": [\n \"dodo\",\n \"animal\",\n \"bird\",\n \"extinct\",\n \"extinction\",\n \"large\",\n \"mauritius\",\n \"obsolete\"\n ],\n \"🪶\": [\n \"feather\",\n \"bird\",\n \"fly\",\n \"flight\",\n \"light\",\n \"plumage\"\n ],\n \"🦭\": [\n \"seal\",\n \"animal\",\n \"creature\",\n \"sea\",\n \"lion\"\n ],\n \"🪲\": [\n \"beetle\",\n \"insect\",\n \"bug\"\n ],\n \"🪳\": [\n \"cockroach\",\n \"insect\",\n \"pests\",\n \"pest\",\n \"roach\"\n ],\n \"🪰\": [\n \"fly\",\n \"insect\",\n \"disease\",\n \"maggot\",\n \"pest\",\n \"rotting\"\n ],\n \"🪱\": [\n \"worm\",\n \"animal\",\n \"annelid\",\n \"earthworm\",\n \"parasite\"\n ],\n \"🪴\": [\n \"potted plant\",\n \"greenery\",\n \"house\",\n \"boring\",\n \"grow\",\n \"houseplant\",\n \"nurturing\",\n \"useless\"\n ],\n \"🫐\": [\n \"blueberries\",\n \"fruit\",\n \"berry\",\n \"bilberry\",\n \"blue\",\n \"blueberry\"\n ],\n \"🫒\": [\n \"olive\",\n \"fruit\",\n \"food\",\n \"olives\"\n ],\n \"🫑\": [\n \"bell pepper\",\n \"fruit\",\n \"plant\",\n \"capsicum\",\n \"vegetable\"\n ],\n \"🫓\": [\n \"flatbread\",\n \"flour\",\n \"food\",\n \"bakery\",\n \"arepa\",\n \"bread\",\n \"flat\",\n \"lavash\",\n \"naan\",\n \"pita\"\n ],\n \"🫔\": [\n \"tamale\",\n \"food\",\n \"masa\",\n \"mexican\",\n \"tamal\",\n \"wrapped\"\n ],\n \"🫕\": [\n \"fondue\",\n \"cheese\",\n \"pot\",\n \"food\",\n \"chocolate\",\n \"melted\",\n \"swiss\"\n ],\n \"🫖\": [\n \"teapot\",\n \"drink\",\n \"hot\",\n \"kettle\",\n \"pot\",\n \"tea\"\n ],\n \"🧋\": [\n \"bubble tea\",\n \"taiwan\",\n \"boba\",\n \"milk tea\",\n \"straw\",\n \"momi\",\n \"pearl\",\n \"tapioca\"\n ],\n \"🪨\": [\n \"rock\",\n \"stone\",\n \"boulder\",\n \"construction\",\n \"heavy\",\n \"solid\"\n ],\n \"🪵\": [\n \"wood\",\n \"nature\",\n \"timber\",\n \"trunk\",\n \"construction\",\n \"log\",\n \"lumber\"\n ],\n \"🛖\": [\n \"hut\",\n \"house\",\n \"structure\",\n \"roundhouse\",\n \"yurt\"\n ],\n \"🛻\": [\n \"pickup truck\",\n \"car\",\n \"transportation\",\n \"vehicle\"\n ],\n \"🛼\": [\n \"roller skate\",\n \"footwear\",\n \"sports\",\n \"derby\",\n \"inline\"\n ],\n \"🪄\": [\n \"magic wand\",\n \"supernature\",\n \"power\",\n \"witch\",\n \"wizard\"\n ],\n \"🪅\": [\n \"pinata\",\n \"mexico\",\n \"candy\",\n \"celebration\",\n \"party\",\n \"piñata\"\n ],\n \"🪆\": [\n \"nesting dolls\",\n \"matryoshka\",\n \"toy\",\n \"doll\",\n \"russia\",\n \"russian\"\n ],\n \"🪡\": [\n \"sewing needle\",\n \"stitches\",\n \"embroidery\",\n \"sutures\",\n \"tailoring\"\n ],\n \"🪢\": [\n \"knot\",\n \"rope\",\n \"scout\",\n \"tangled\",\n \"tie\",\n \"twine\",\n \"twist\"\n ],\n \"🩴\": [\n \"thong sandal\",\n \"footwear\",\n \"summer\",\n \"beach\",\n \"flip\",\n \"flops\",\n \"jandals\",\n \"sandals\",\n \"thongs\",\n \"zōri\"\n ],\n \"🪖\": [\n \"military helmet\",\n \"army\",\n \"protection\",\n \"soldier\",\n \"warrior\"\n ],\n \"🪗\": [\n \"accordion\",\n \"music\",\n \"accordian\",\n \"box\",\n \"concertina\",\n \"squeeze\"\n ],\n \"🪘\": [\n \"long drum\",\n \"music\",\n \"beat\",\n \"conga\",\n \"djembe\",\n \"rhythm\"\n ],\n \"🪙\": [\n \"coin\",\n \"money\",\n \"currency\",\n \"gold\",\n \"metal\",\n \"silver\",\n \"treasure\"\n ],\n \"🪃\": [\n \"boomerang\",\n \"weapon\",\n \"australia\",\n \"rebound\",\n \"repercussion\"\n ],\n \"🪚\": [\n \"carpentry saw\",\n \"cut\",\n \"chop\",\n \"carpenter\",\n \"hand\",\n \"lumber\",\n \"tool\"\n ],\n \"🪛\": [\n \"screwdriver\",\n \"tools\",\n \"screw\",\n \"tool\"\n ],\n \"🪝\": [\n \"hook\",\n \"tools\",\n \"catch\",\n \"crook\",\n \"curve\",\n \"ensnare\",\n \"fishing\",\n \"point\",\n \"selling\",\n \"tool\"\n ],\n \"🪜\": [\n \"ladder\",\n \"tools\",\n \"climb\",\n \"rung\",\n \"step\",\n \"tool\"\n ],\n \"🛗\": [\n \"elevator\",\n \"lift\",\n \"accessibility\",\n \"hoist\"\n ],\n \"🪞\": [\n \"mirror\",\n \"reflection\",\n \"reflector\",\n \"speculum\"\n ],\n \"🪟\": [\n \"window\",\n \"scenery\",\n \"air\",\n \"frame\",\n \"fresh\",\n \"glass\",\n \"opening\",\n \"transparent\",\n \"view\"\n ],\n \"🪠\": [\n \"plunger\",\n \"toilet\",\n \"cup\",\n \"force\",\n \"plumber\",\n \"suction\"\n ],\n \"🪤\": [\n \"mouse trap\",\n \"cheese\",\n \"bait\",\n \"mousetrap\",\n \"rodent\",\n \"snare\"\n ],\n \"🪣\": [\n \"bucket\",\n \"water\",\n \"container\",\n \"cask\",\n \"pail\",\n \"vat\"\n ],\n \"🪥\": [\n \"toothbrush\",\n \"hygiene\",\n \"dental\",\n \"bathroom\",\n \"brush\",\n \"clean\",\n \"teeth\"\n ],\n \"🪦\": [\n \"headstone\",\n \"death\",\n \"rip\",\n \"grave\",\n \"cemetery\",\n \"graveyard\",\n \"halloween\",\n \"tombstone\"\n ],\n \"🪧\": [\n \"placard\",\n \"announcement\",\n \"demonstration\",\n \"lawn\",\n \"picket\",\n \"post\",\n \"protest\",\n \"sign\"\n ],\n \"⚧️\": [\n \"transgender symbol\",\n \"transgender\",\n \"lgbtq\",\n \"female\",\n \"lgbt\",\n \"male\",\n \"pride\",\n \"sign\",\n \"stroke\"\n ],\n \"🏳️‍⚧️\": [\n \"transgender flag\",\n \"transgender\",\n \"flag\",\n \"pride\",\n \"lgbtq\",\n \"blue\",\n \"lgbt\",\n \"light\",\n \"pink\",\n \"trans\",\n \"white\"\n ],\n \"😶‍🌫️\": [\n \"face in clouds\",\n \"shower\",\n \"steam\",\n \"dream\",\n \"absentminded\",\n \"brain\",\n \"fog\",\n \"forgetful\",\n \"haze\",\n \"head\",\n \"impractical\",\n \"unrealistic\"\n ],\n \"😮‍💨\": [\n \"face exhaling\",\n \"relieve\",\n \"relief\",\n \"tired\",\n \"sigh\",\n \"exhale\",\n \"gasp\",\n \"groan\",\n \"whisper\",\n \"whistle\"\n ],\n \"😵‍💫\": [\n \"face with spiral eyes\",\n \"sick\",\n \"ill\",\n \"confused\",\n \"nauseous\",\n \"nausea\",\n \"dizzy\",\n \"hypnotized\",\n \"trouble\",\n \"whoa\"\n ],\n \"❤️‍🔥\": [\n \"heart on fire\",\n \"passionate\",\n \"enthusiastic\",\n \"burn\",\n \"love\",\n \"lust\",\n \"sacred\"\n ],\n \"❤️‍🩹\": [\n \"mending heart\",\n \"broken heart\",\n \"bandage\",\n \"wounded\",\n \"bandaged\",\n \"healing\",\n \"healthier\",\n \"improving\",\n \"recovering\",\n \"recuperating\",\n \"unbroken\",\n \"well\"\n ],\n \"🧔‍♂️\": [\n \"man beard\",\n \"facial hair\",\n \"bearded\",\n \"bewhiskered\",\n \"male\",\n \"men\"\n ],\n \"🧔‍♀️\": [\n \"woman beard\",\n \"facial hair\",\n \"bearded\",\n \"bewhiskered\",\n \"female\",\n \"women\"\n ],\n \"🫠\": [\n \"melting face\",\n \"hot\",\n \"heat\",\n \"disappear\",\n \"dissolve\",\n \"dread\",\n \"liquid\",\n \"melt\",\n \"sarcasm\"\n ],\n \"🫢\": [\n \"face with open eyes and hand over mouth\",\n \"silence\",\n \"secret\",\n \"shock\",\n \"surprise\",\n \"amazement\",\n \"awe\",\n \"disbelief\",\n \"embarrass\",\n \"gasp\",\n \"scared\"\n ],\n \"🫣\": [\n \"face with peeking eye\",\n \"scared\",\n \"frightening\",\n \"embarrassing\",\n \"shy\",\n \"captivated\",\n \"peep\",\n \"stare\"\n ],\n \"🫡\": [\n \"saluting face\",\n \"respect\",\n \"salute\",\n \"ok\",\n \"sunny\",\n \"troops\",\n \"yes\"\n ],\n \"🫥\": [\n \"dotted line face\",\n \"invisible\",\n \"lonely\",\n \"isolation\",\n \"depression\",\n \"depressed\",\n \"disappear\",\n \"hide\",\n \"introvert\"\n ],\n \"🫤\": [\n \"face with diagonal mouth\",\n \"skeptic\",\n \"confuse\",\n \"frustrated\",\n \"indifferent\",\n \"confused\",\n \"disappointed\",\n \"meh\",\n \"skeptical\",\n \"unsure\"\n ],\n \"🥹\": [\n \"face holding back tears\",\n \"touched\",\n \"gratitude\",\n \"cry\",\n \"angry\",\n \"proud\",\n \"resist\",\n \"sad\"\n ],\n \"🫱\": [\n \"rightwards hand\",\n \"palm\",\n \"offer\",\n \"right\",\n \"rightward\"\n ],\n \"🫲\": [\n \"leftwards hand\",\n \"palm\",\n \"offer\",\n \"left\",\n \"leftward\"\n ],\n \"🫳\": [\n \"palm down hand\",\n \"palm\",\n \"drop\",\n \"dismiss\",\n \"shoo\"\n ],\n \"🫴\": [\n \"palm up hand\",\n \"lift\",\n \"offer\",\n \"demand\",\n \"beckon\",\n \"catch\",\n \"come\"\n ],\n \"🫰\": [\n \"hand with index finger and thumb crossed\",\n \"heart\",\n \"love\",\n \"money\",\n \"expensive\",\n \"snap\"\n ],\n \"🫵\": [\n \"index pointing at the viewer\",\n \"you\",\n \"recruit\",\n \"point\"\n ],\n \"🫶\": [\n \"heart hands\",\n \"love\",\n \"appreciation\",\n \"support\"\n ],\n \"🫦\": [\n \"biting lip\",\n \"flirt\",\n \"sexy\",\n \"pain\",\n \"worry\",\n \"anxious\",\n \"fear\",\n \"flirting\",\n \"nervous\",\n \"uncomfortable\",\n \"worried\"\n ],\n \"🫅\": [\n \"person with crown\",\n \"royalty\",\n \"power\",\n \"monarch\",\n \"noble\",\n \"regal\"\n ],\n \"🫃\": [\n \"pregnant man\",\n \"baby\",\n \"belly\",\n \"bloated\",\n \"full\"\n ],\n \"🫄\": [\n \"pregnant person\",\n \"baby\",\n \"belly\",\n \"bloated\",\n \"full\"\n ],\n \"🧌\": [\n \"troll\",\n \"mystical\",\n \"monster\",\n \"fairy\",\n \"fantasy\",\n \"tale\",\n \"shrek\"\n ],\n \"🪸\": [\n \"coral\",\n \"ocean\",\n \"sea\",\n \"reef\"\n ],\n \"🪷\": [\n \"lotus\",\n \"flower\",\n \"calm\",\n \"meditation\",\n \"buddhism\",\n \"hinduism\",\n \"india\",\n \"purity\",\n \"vietnam\"\n ],\n \"🪹\": [\n \"empty nest\",\n \"bird\",\n \"nesting\"\n ],\n \"🪺\": [\n \"nest with eggs\",\n \"bird\",\n \"nesting\"\n ],\n \"🫘\": [\n \"beans\",\n \"food\",\n \"kidney\",\n \"legume\"\n ],\n \"🫗\": [\n \"pouring liquid\",\n \"cup\",\n \"water\",\n \"drink\",\n \"empty\",\n \"glass\",\n \"spill\"\n ],\n \"🫙\": [\n \"jar\",\n \"container\",\n \"sauce\",\n \"condiment\",\n \"empty\",\n \"store\"\n ],\n \"🛝\": [\n \"playground slide\",\n \"fun\",\n \"park\",\n \"amusement\",\n \"play\"\n ],\n \"🛞\": [\n \"wheel\",\n \"car\",\n \"transport\",\n \"circle\",\n \"tire\",\n \"turn\"\n ],\n \"🛟\": [\n \"ring buoy\",\n \"life saver\",\n \"life preserver\",\n \"float\",\n \"rescue\",\n \"safety\"\n ],\n \"🪬\": [\n \"hamsa\",\n \"religion\",\n \"protection\",\n \"amulet\",\n \"fatima\",\n \"hand\",\n \"mary\",\n \"miriam\"\n ],\n \"🪩\": [\n \"mirror ball\",\n \"disco\",\n \"dance\",\n \"party\",\n \"glitter\"\n ],\n \"🪫\": [\n \"low battery\",\n \"drained\",\n \"dead\",\n \"electronic\",\n \"energy\",\n \"no\",\n \"red\"\n ],\n \"🩼\": [\n \"crutch\",\n \"accessibility\",\n \"assist\",\n \"aid\",\n \"cane\",\n \"disability\",\n \"hurt\",\n \"mobility\",\n \"stick\"\n ],\n \"🩻\": [\n \"x-ray\",\n \"skeleton\",\n \"medicine\",\n \"bones\",\n \"doctor\",\n \"medical\",\n \"ray\",\n \"x\"\n ],\n \"🫧\": [\n \"bubbles\",\n \"soap\",\n \"fun\",\n \"carbonation\",\n \"sparkling\",\n \"burp\",\n \"clean\",\n \"underwater\"\n ],\n \"🪪\": [\n \"identification card\",\n \"document\",\n \"credentials\",\n \"id\",\n \"license\",\n \"security\"\n ],\n \"🟰\": [\n \"heavy equals sign\",\n \"math\",\n \"equality\"\n ],\n \"🫨\": [\n \"shaking face\",\n \"dizzy\",\n \"shock\",\n \"blurry\",\n \"earthquake\"\n ],\n \"🩷\": [\n \"pink heart\",\n \"valentines\"\n ],\n \"🩵\": [\n \"light blue heart\",\n \"ice\",\n \"baby blue\"\n ],\n \"🩶\": [\n \"grey heart\",\n \"silver\",\n \"monochrome\"\n ],\n \"🫷\": [\n \"leftwards pushing hand\",\n \"highfive\",\n \"pressing\",\n \"stop\"\n ],\n \"🫸\": [\n \"rightwards pushing hand\",\n \"highfive\",\n \"pressing\",\n \"stop\"\n ],\n \"🫎\": [\n \"moose\",\n \"canada\",\n \"sweden\",\n \"sven\",\n \"cool\"\n ],\n \"🫏\": [\n \"donkey\",\n \"eeyore\",\n \"mule\"\n ],\n \"🪽\": [\n \"wing\",\n \"angel\",\n \"birds\",\n \"flying\",\n \"fly\"\n ],\n \"🐦‍⬛\": [\n \"black bird\",\n \"crow\"\n ],\n \"🪿\": [\n \"goose\",\n \"silly\",\n \"jemima\",\n \"goosebumps\",\n \"honk\"\n ],\n \"🪼\": [\n \"jellyfish\",\n \"sting\",\n \"tentacles\"\n ],\n \"🪻\": [\n \"hyacinth\",\n \"flower\",\n \"lavender\"\n ],\n \"🫚\": [\n \"ginger root\",\n \"spice\",\n \"yellow\",\n \"cooking\",\n \"gingerbread\"\n ],\n \"🫛\": [\n \"pea pod\",\n \"cozy\",\n \"green\"\n ],\n \"🪭\": [\n \"folding hand fan\",\n \"flamenco\",\n \"hot\",\n \"sensu\"\n ],\n \"🪮\": [\n \"hair pick\",\n \"afro\",\n \"comb\"\n ],\n \"🪇\": [\n \"maracas\",\n \"music\",\n \"instrument\",\n \"percussion\",\n \"shaker\"\n ],\n \"🪈\": [\n \"flute\",\n \"bamboo\",\n \"music\",\n \"instrument\",\n \"pied piper\",\n \"recorder\"\n ],\n \"🪯\": [\n \"khanda\",\n \"Sikhism\",\n \"religion\"\n ],\n \"🛜\": [\n \"wireless\",\n \"wifi\",\n \"internet\",\n \"contactless\",\n \"signal\"\n ],\n \"🙂‍↔️\": [\n \"head shaking horizontally\",\n \"disapprove\",\n \"indiffernt\",\n \"left\"\n ],\n \"🙂‍↕️\": [\n \"head shaking vertically\",\n \"down\",\n \"nod\"\n ],\n \"🚶‍➡️\": [\n \"person walking facing right\",\n \"peerson\",\n \"exercise\"\n ],\n \"🚶‍♀️‍➡️\": [\n \"woman walking facing right\",\n \"person\",\n \"exercise\"\n ],\n \"🚶‍♂️‍➡️\": [\n \"man walking facing right\",\n \"person\",\n \"exercise\"\n ],\n \"🧎‍➡️\": [\n \"person kneeling facing right\",\n \"pray\"\n ],\n \"🧎‍♀️‍➡️\": [\n \"woman kneeling facing right\",\n \"pray\",\n \"worship\"\n ],\n \"🧎‍♂️‍➡️\": [\n \"man kneeling facing right\",\n \"pray\",\n \"worship\"\n ],\n \"🧑‍🦯‍➡️\": [\n \"person with white cane facing right\",\n \"walk\",\n \"walk\",\n \"visually impaired\",\n \"blind\"\n ],\n \"👨‍🦯‍➡️\": [\n \"man with white cane facing right\",\n \"visually impaired\",\n \"blind\",\n \"walk\",\n \"stick\"\n ],\n \"👩‍🦯‍➡️\": [\n \"woman with white cane facing right\",\n \"stick\",\n \"visually impaired\",\n \"blind\"\n ],\n \"🧑‍🦼‍➡️\": [\n \"person in motorized wheelchair facing right\",\n \"accessibility\",\n \"disability\"\n ],\n \"👨‍🦼‍➡️\": [\n \"man in motorized wheelchair facing right\",\n \"disability\",\n \"accessibility\",\n \"mobility\"\n ],\n \"👩‍🦼‍➡️\": [\n \"woman in motorized wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"🧑‍🦽‍➡️\": [\n \"person in manual wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"👨‍🦽‍➡️\": [\n \"man in manual wheelchair facing right\",\n \"mobility\",\n \"accessibility\",\n \"disability\"\n ],\n \"👩‍🦽‍➡️\": [\n \"woman in manual wheelchair facing right\",\n \"disability\",\n \"mobility\",\n \"accessibility\"\n ],\n \"🏃‍➡️\": [\n \"person running facing right\",\n \"exercise\",\n \"jog\"\n ],\n \"🏃‍♀️‍➡️\": [\n \"woman running facing right\",\n \"exercise\",\n \"jog\"\n ],\n \"🏃‍♂️‍➡️\": [\n \"man running facing right\",\n \"jog\",\n \"exercise\"\n ],\n \"🧑‍🧑‍🧒\": [\n \"family adult, adult, child\",\n \"kid\",\n \"parents\"\n ],\n \"🧑‍🧑‍🧒‍🧒\": [\n \"family adult, adult, child, child\",\n \"children\",\n \"parents\"\n ],\n \"🧑‍🧒\": [\n \"family adult, child\",\n \"parent\",\n \"kid\"\n ],\n \"🧑‍🧒‍🧒\": [\n \"family adult, child, child\",\n \"parent\",\n \"children\"\n ],\n \"🐦‍🔥\": [\n \"phoenix\",\n \"immortal\",\n \"bird\",\n \"mythtical\",\n \"reborn\"\n ],\n \"🍋‍🟩\": [\n \"lime\",\n \"fruit\",\n \"acidic\",\n \"citric\"\n ],\n \"🍄‍🟫\": [\n \"brown mushroom\",\n \"toadstool\",\n \"fungus\"\n ],\n \"⛓️‍💥\": [\n \"broken chain\",\n \"constraint\",\n \"break\"\n ],\n \"🫩\": [\n \"face with bags under eyes\",\n \"tired\",\n \"sleepy\",\n \"exhausted\"\n ],\n \"🫆\": [\n \"fingerprint\"\n ],\n \"🪾\": [\n \"leafless tree\"\n ],\n \"🫜\": [\n \"root vegetable\",\n \"radish\"\n ],\n \"🪉\": [\n \"harp\",\n \"music\",\n \"instrument\"\n ],\n \"🪏\": [\n \"shovel\",\n \"tool\",\n \"dig\"\n ],\n \"🫟\": [\n \"splatter\"\n ]\n}\n","/**\n * marked v17.0.1 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function Z(u){T=u}var C={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var me=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Te=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,N=/(?:[*+-]|\\d{1,9}[.)])/,re=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,se=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Oe=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),Q=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,ye=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=k(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,N).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",j=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",j).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ie=k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ie).getRegex(),U={blockquote:$e,code:be,def:ye,fences:Re,heading:Te,hr:I,html:Se,lheading:se,list:Pe,newline:xe,paragraph:ie,table:C,text:we},te=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...U,lheading:Oe,table:te,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",te).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...U,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",j).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:C,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",se).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,oe=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,K=/[\\s\\p{P}\\p{S}]/u,ae=/[^\\s\\p{P}\\p{S}]/u,Ce=k(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,K).getRegex(),le=/(?!~)[\\p{P}\\p{S}]/u,Ie=/(?!~)[\\s\\p{P}\\p{S}]/u,Ee=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=k(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",me?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=k(ue,\"u\").replace(/punct/g,D).getRegex(),ve=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=k(pe,\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),He=k(pe,\"gu\").replace(/notPunctSpace/g,Ee).replace(/punctSpace/g,Ie).replace(/punct/g,le).getRegex(),Ze=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),Ge=k(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qe=k(j).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=k(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ue=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),ne=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,W={_backpedal:C,anyPunctuation:Ge,autolink:Ne,blockSkip:Be,br:oe,code:ze,del:C,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ze,escape:Me,link:je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ue,tag:Fe,text:Ae,url:C},Ke={...W,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},G={...W,emStrongRDelimAst:He,emStrongLDelim:ve,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",ne).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",ne).getRegex()},We={...G,br:k(oe).replace(\"{2,}\",\"*\").getRegex(),text:k(G.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},E={normal:U,gfm:_e,pedantic:Le},M={normal:W,gfm:G,breaks:We,pedantic:Ke};var Xe={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ke=u=>Xe[u];function w(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function X(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function J(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(u,e,t){let n=u.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function de(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]===\"\\\\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function ge(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Je(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,O=>\" \".repeat(3*O.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let O=this.rules.other.nextBulletRegex(f),V=this.rules.other.hrRegex(f),Y=this.rules.other.fencesBeginRegex(f),ee=this.rules.other.headingBeginRegex(f),fe=this.rules.other.htmlBeginRegex(f);for(;e;){let H=e.split(`\n`,1)[0],A;if(h=H,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),Y.test(h)||ee.test(h)||fe.test(h)||O.test(h)||V.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||Y.test(g)||ee.test(g)||V.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),p+=H+`\n`,e=e.substring(H.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(g=>g.type===\"space\"),c=p.length>0&&p.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=J(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(J(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),ge(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return ge(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:E.normal,inline:M.normal};this.options.pedantic?(t.block=E.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=E.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:E,inline:M}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(p=Math.min(p,g))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=X(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=X(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){let t=\"\";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(s.type)){t+=a||\"\";continue}}let i=r;switch(i.type){case\"space\":{t+=this.renderer.space(i);break}case\"hr\":{t+=this.renderer.hr(i);break}case\"heading\":{t+=this.renderer.heading(i);break}case\"code\":{t+=this.renderer.code(i);break}case\"table\":{t+=this.renderer.table(i);break}case\"blockquote\":{t+=this.renderer.blockquote(i);break}case\"list\":{t+=this.renderer.list(i);break}case\"checkbox\":{t+=this.renderer.checkbox(i);break}case\"html\":{t+=this.renderer.html(i);break}case\"def\":{t+=this.renderer.def(i);break}case\"paragraph\":{t+=this.renderer.paragraph(i);break}case\"text\":{t+=this.renderer.text(i);break}default:{let s='Token with \"'+i.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"checkbox\":{n+=t.checkbox(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];S.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,p);return l.call(i,g)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,p);return g===!1&&(g=await l.apply(i,p)),g})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(u,e){return _.parse(u,e)}d.options=d.setOptions=function(u){return _.setOptions(u),d.defaults=_.defaults,Z(d.defaults),d};d.getDefaults=L;d.defaults=T;d.use=function(...u){return _.use(...u),d.defaults=_.defaults,Z(d.defaults),d};d.walkTokens=function(u,e){return _.walkTokens(u,e)};d.parseInline=_.parseInline;d.Parser=b;d.parser=b.parse;d.Renderer=P;d.TextRenderer=$;d.Lexer=x;d.lexer=x.lex;d.Tokenizer=y;d.Hooks=S;d.parse=d;var Dt=d.options,Ht=d.setOptions,Zt=d.use,Gt=d.walkTokens,Nt=d.parseInline,Qt=d,Ft=b.parse,jt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,jt as lexer,d as marked,Dt as options,Qt as parse,Nt as parseInline,Ft as parser,Ht as setOptions,Zt as use,Gt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","import DOMPurify from \"dompurify\";\nimport emojilib from \"emojilib\";\nimport { marked } from \"marked\";\n\nconst emojiMap = new Map<string, string>();\nfor (const [emoji, keywords] of Object.entries(emojilib)) {\n if (Array.isArray(keywords)) {\n for (const keyword of keywords) {\n const normalized = keyword.toLowerCase();\n if (!emojiMap.has(normalized)) {\n emojiMap.set(normalized, emoji);\n }\n }\n }\n}\n\nfunction detectContentType(content: string): \"html\" | \"markdown\" | \"text\" {\n const trimmed = content.trim();\n const htmlTagPattern = /<[a-z][\\s\\S]*>/i;\n if (htmlTagPattern.test(trimmed)) {\n return \"html\";\n }\n const markdownPatterns = [\n /^#{1,6}\\s+/m,\n /^\\s*[-*+]\\s+/m,\n /^\\s*\\d+\\.\\s+/m,\n /\\[([^\\]]+)\\]\\(([^)]+)\\)/,\n /\\*\\*[^*]+\\*\\*/,\n /\\*[^*]+\\*/,\n /`[^`]+`/,\n ];\n if (markdownPatterns.some((pattern) => pattern.test(trimmed))) {\n return \"markdown\";\n }\n return \"text\";\n}\n\nfunction processEmojis(text: string): string {\n return text.replace(/:([a-z0-9_+-]+):/gi, (match, name) => {\n const normalized = name.toLowerCase();\n const emoji = emojiMap.get(normalized);\n return emoji || match;\n });\n}\n\nfunction textToHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\\n/g, \"<br>\");\n}\n\nfunction normalizeInvisibleChars(text: string): string {\n return (\n text\n // Unify Windows/Mac line endings\n .replace(/\\r\\n?|\\u2028|\\u2029/g, \"\\n\")\n // Remove invisible Unicode format chars\n .replace(/\\p{Cf}/gu, \"\")\n // Convert all Unicode whitespace to normal spaces\n .replace(/\\p{Zs}/gu, \" \")\n // Remove control characters except \\n and \\t\n .replace(/[^\\S\\n\\t]+/g, \" \")\n // Remove trailing spaces before newline\n .replace(/[ \\t]+\\n/g, \"\\n\")\n // Collapse any combination of empty lines into max 2 line breaks\n .replace(/(\\n\\s*){2,}/g, \"\\n\\n\")\n .trim()\n );\n}\n\nexport function normalizeContent(content: string): string {\n if (!content) {\n return \"\";\n }\n\n const cleaned = normalizeInvisibleChars(content);\n\n const contentType = detectContentType(cleaned);\n let html: string;\n switch (contentType) {\n case \"html\":\n html = processEmojis(cleaned);\n break;\n case \"markdown\":\n html = marked.parse(cleaned, {\n breaks: true,\n gfm: true,\n }) as string;\n html = processEmojis(html);\n break;\n case \"text\":\n default: {\n const textWithEmojis = processEmojis(cleaned);\n html = textToHtml(textWithEmojis);\n break;\n }\n }\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [\n \"p\",\n \"br\",\n \"strong\",\n \"em\",\n \"u\",\n \"s\",\n \"a\",\n \"ul\",\n \"ol\",\n \"li\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"blockquote\",\n \"code\",\n \"pre\",\n \"img\",\n \"div\",\n \"span\",\n ],\n ALLOWED_ATTR: [\"href\", \"src\", \"alt\", \"title\", \"target\", \"rel\"],\n ALLOWED_URI_REGEXP:\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i,\n });\n}\n","type DateFormatOptions = {\n todayAsText?: boolean; // Today vs 14:32\n showWeekday?: boolean; // Friday, Dec 11\n longMonth?: boolean; // December vs Dec\n withOrdinal?: boolean; // 11th, 2nd, 3rd\n includeTime?: boolean; // Adds time for older dates\n};\n\nexport function formatTimestamp(\n iso: string,\n options: DateFormatOptions = {}\n): string {\n const {\n todayAsText = false,\n showWeekday = false,\n longMonth = false,\n withOrdinal = false,\n includeTime = true,\n } = options;\n\n const date = new Date(iso);\n const now = new Date();\n\n const isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\n const yesterday = new Date(now);\n yesterday.setDate(now.getDate() - 1);\n\n // --- TODAY ---\n if (isSameDay(date, now)) {\n if (todayAsText) return \"Today\";\n\n return date.toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n });\n }\n\n // --- YESTERDAY ---\n if (isSameDay(date, yesterday)) {\n return \"Yesterday\";\n }\n\n // --- OLDER DATES ---\n const day = date.getDate();\n const monthFormat = longMonth ? \"long\" : \"short\";\n\n const month = date.toLocaleDateString([], { month: monthFormat });\n const weekday = date.toLocaleDateString([], { weekday: \"long\" });\n\n const dayFormatted = withOrdinal ? `${day}${getOrdinal(day)}` : `${day}`;\n\n let result = `${month} ${dayFormatted}`;\n\n if (showWeekday) {\n result = `${weekday}, ${result}`;\n }\n\n if (includeTime) {\n const time = date.toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n });\n result += `, ${time}`;\n }\n\n return result;\n}\n\nfunction getOrdinal(n: number): string {\n if (n % 100 >= 11 && n % 100 <= 13) return \"th\";\n\n switch (n % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n}\n","import { type ButtonHTMLAttributes } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string;\n};\n\nexport function Button({ className, children, ...props }: ButtonProps) {\n return (\n <button {...props} className={cn(\"btn-base\", className)}>\n {children}\n </button>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n children?: ReactNode;\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n};\n\nexport function Checkbox({\n checked,\n defaultChecked,\n icon,\n indeterminate,\n indeterminateIcon,\n onChange,\n disabled,\n children,\n className,\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Internal state for uncontrolled usage\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false\n );\n\n const isChecked = checked ?? internalChecked;\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate]);\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.checked;\n\n if (checked === undefined) {\n setInternalChecked(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <label\n className={cn(\n \"relative inline-flex w-fit cursor-pointer items-center gap-2 select-none\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {/* Hidden native checkbox */}\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={cn(\n \"absolute h-px w-px overflow-hidden p-0 whitespace-nowrap\",\n \"[clip-path:inset(50%)]\",\n \"border-0\"\n )}\n disabled={disabled}\n onChange={handleChange}\n {...(checked !== undefined ? { checked } : { defaultChecked })}\n />\n\n {/* Visual checkbox */}\n <span\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n tabIndex={-1}\n data-state={\n indeterminate ? \"indeterminate\" : isChecked ? \"checked\" : \"unchecked\"\n }\n className=\"checkbox-box inline-flex items-center justify-center\"\n >\n <span\n className={cn(\n \"checkbox-icon\",\n !(isChecked || indeterminate) && \"opacity-0\"\n )}\n >\n {indeterminate ? (indeterminateIcon ?? \"—\") : (icon ?? \"✓\")}\n </span>\n </span>\n\n {/* Label */}\n {children && <span className=\"checkbox-label\">{children}</span>}\n </label>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype DropdownContextValue = {\n close: () => void;\n};\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\"useDropdown must be used inside Dropdown\");\n }\n return ctx;\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { DropdownContext } from \"./dropdown-context\";\n\ntype DropdownAlign = \"start\" | \"end\";\n\nexport type DropdownProps = {\n trigger: ReactNode;\n children: ReactNode;\n align?: DropdownAlign;\n disabled?: boolean;\n};\n\nexport function Dropdown({\n trigger,\n children,\n align = \"start\",\n disabled = false,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const closeTimeout = useRef<number | null>(null);\n\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n // Position the dropdown content based on the trigger and alignment\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n let left = triggerRect.left;\n\n if (align === \"end\") {\n left = triggerRect.right - contentRect.width;\n }\n\n setPosition({\n top: triggerRect.bottom,\n left,\n });\n }, [open, align]);\n\n // Open the dropdown on hover or click\n function openDropdown() {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n closeTimeout.current = null;\n }\n setOpen(true);\n }\n\n // Schedule the close of the dropdown after a delay\n function scheduleClose() {\n closeTimeout.current = window.setTimeout(() => {\n setOpen(false);\n }, 120);\n }\n\n // Close the dropdown if clicked outside\n useEffect(() => {\n function onClickOutside(e: MouseEvent) {\n const target = e.target as Node;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n }\n\n document.addEventListener(\"mousedown\", onClickOutside);\n return () => document.removeEventListener(\"mousedown\", onClickOutside);\n }, []);\n\n // Clear the timeout when the component unmounts\n useEffect(() => {\n return () => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n }\n };\n }, []);\n\n return (\n <DropdownContext.Provider value={{ close: () => setOpen(false) }}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n >\n {trigger}\n </div>\n\n {/* Content (Portal) */}\n {open &&\n !disabled &&\n createPortal(\n <div\n ref={contentRef}\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n visibility: position ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n >\n {children}\n </div>,\n document.body\n )}\n </DropdownContext.Provider>\n );\n}\n","import { useState, type ChangeEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype InputProps = {\n type?: \"text\" | \"email\" | \"password\";\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n error?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n className?: string;\n};\n\nexport function Input({\n type = \"text\",\n value,\n defaultValue,\n disabled = false,\n error = false,\n placeholder,\n onChange,\n className,\n}: InputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.value;\n\n if (!isControlled) {\n setInternalValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <input\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n onChange={handleChange}\n className={cn(\n \"bg-transparent outline-none\",\n disabled && \"pointer-events-none\",\n className\n )}\n />\n );\n}\n","import {\n useCallback,\n type ComponentPropsWithoutRef,\n type ElementType,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype PressableOwnProps = {\n disabled?: boolean;\n onPress?: () => void;\n className?: string;\n children?: ReactNode;\n};\n\ntype PressableProps<T extends ElementType = \"div\"> = PressableOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof PressableOwnProps | \"as\">;\n\nexport function Pressable<T extends ElementType = \"div\">({\n as,\n disabled = false,\n onPress,\n className,\n children,\n ...props\n}: PressableProps<T>) {\n const Component = as || \"div\";\n const handleClick = useCallback(() => {\n if (disabled) return;\n onPress?.();\n }, [disabled, onPress]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onPress?.();\n }\n },\n [disabled, onPress]\n );\n\n return (\n <Component\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"select-none\",\n !disabled && \"cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype StopPropagationProps = {\n children: ReactNode;\n};\n\n/**\n * Prevents click and keyboard events from bubbling to parent components\n * (e.g. Pressable, Card, ListRow).\n */\nexport function StopPropagation({ children }: StopPropagationProps) {\n return (\n <div\n className=\"contents\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport type ToastItem = {\n id: string;\n content: ReactNode;\n position: ToastPosition;\n duration: number;\n};\n\ntype Listener = (toasts: ToastItem[]) => void;\n\nlet toasts: ToastItem[] = [];\nconst listeners = new Set<Listener>();\n\nfunction notify() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport const toastStore = {\n subscribe(listener: Listener) {\n listeners.add(listener);\n listener(toasts);\n\n return () => {\n listeners.delete(listener);\n };\n },\n\n add(toast: ToastItem) {\n toasts = [toast, ...toasts];\n notify();\n },\n\n remove(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n },\n};\n","import type { ReactNode } from \"react\";\n\nimport { toastStore, type ToastPosition } from \"./toast-store\";\n\nexport type ShowToastOptions = {\n content: ReactNode;\n duration?: number;\n position?: ToastPosition;\n};\n\nfunction showToast({\n content,\n duration = 4000,\n position = \"bottom-right\",\n}: ShowToastOptions) {\n const id = crypto.randomUUID();\n\n toastStore.add({\n id,\n content,\n duration,\n position,\n });\n\n return {\n id,\n dismiss: () => toastStore.remove(id),\n };\n}\n\nfunction isShowToastOptions(value: unknown): value is ShowToastOptions {\n return typeof value === \"object\" && value !== null && \"content\" in value;\n}\n\nexport function toast(\n content: ReactNode | ShowToastOptions,\n options?: Omit<ShowToastOptions, \"content\">\n) {\n if (isShowToastOptions(content)) {\n return showToast(content);\n }\n\n return showToast({\n content,\n ...options,\n });\n}\n","import { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { toastStore, type ToastItem, type ToastPosition } from \"./toast-store\";\n\n// Position classes\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 items-start\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 items-center\",\n \"top-right\": \"top-0 right-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n};\n\n// Toaster\nexport function Toaster() {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const timers = useRef<Map<string, number>>(new Map());\n\n /* Subscribe once */\n useEffect(() => {\n return toastStore.subscribe(setToasts);\n }, []);\n\n // Timer helpers\n\n const clearTimer = useCallback((id: string) => {\n const timer = timers.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timers.current.delete(id);\n }\n }, []);\n\n const startTimer = useCallback(\n (toast: ToastItem) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(() => {\n toastStore.remove(toast.id);\n }, toast.duration);\n\n timers.current.set(toast.id, timeout);\n },\n [clearTimer]\n );\n\n const pauseAll = () => {\n timers.current.forEach(clearTimeout);\n timers.current.clear();\n };\n\n const restartAll = () => {\n toasts.forEach((toast, index) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(\n () => {\n toastStore.remove(toast.id);\n },\n toast.duration + index * 120\n );\n\n timers.current.set(toast.id, timeout);\n });\n };\n\n /* Start timers when new toasts appear */\n useEffect(() => {\n toasts.forEach((toast) => {\n if (!timers.current.has(toast.id)) {\n startTimer(toast);\n }\n });\n }, [toasts, startTimer]);\n\n /* Group by position */\n const grouped = toasts.reduce(\n (acc, toast) => {\n (acc[toast.position] ??= []).push(toast);\n return acc;\n },\n {} as Record<ToastPosition, ToastItem[]>\n );\n\n return createPortal(\n <>\n {(Object.entries(grouped) as [ToastPosition, ToastItem[]][]).map(\n ([position, items]) => (\n <div\n key={position}\n className={cn(\n \"fixed z-1000 flex flex-col items-end gap-2 p-4\",\n positionClasses[position]\n )}\n onMouseEnter={pauseAll}\n onMouseLeave={restartAll}\n >\n {items.map((toast) => (\n <Fragment key={toast.id}>{toast.content}</Fragment>\n ))}\n </div>\n )\n )}\n </>,\n document.body\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type TooltipPosition =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n className?: string;\n};\n\nfunction getHorizontalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.left;\n if (align === \"end\") return trigger.right - tooltip.width;\n return trigger.left + trigger.width / 2 - tooltip.width / 2;\n}\n\nfunction getVerticalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.top;\n if (align === \"end\") return trigger.bottom - tooltip.height;\n return trigger.top + trigger.height / 2 - tooltip.height / 2;\n}\n\nexport function Tooltip({\n children,\n content,\n position = \"top\",\n delay = 120,\n className,\n}: TooltipProps) {\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const [open, setOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number } | null>(\n null\n );\n\n const openTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delay);\n };\n\n const closeTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setOpen(false);\n };\n\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !tooltipRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const tooltip = tooltipRef.current.getBoundingClientRect();\n const offset = 4;\n\n const [side, rawAlign] = position.split(\"-\") as [Side, Align | undefined];\n const align: Align = rawAlign ?? \"center\";\n\n let top = 0;\n let left = 0;\n\n if (side === \"top\" || side === \"bottom\") {\n top =\n side === \"top\"\n ? trigger.top - tooltip.height - offset\n : trigger.bottom + offset;\n\n left = getHorizontalAlign(trigger, tooltip, align);\n } else {\n left =\n side === \"left\"\n ? trigger.left - tooltip.width - offset\n : trigger.right + offset;\n\n top = getVerticalAlign(trigger, tooltip, align);\n }\n\n setCoords((prev) =>\n prev && prev.top === top && prev.left === left ? prev : { top, left }\n );\n }, [open, position]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n >\n {children}\n </div>\n\n {/* Tooltip */}\n {open &&\n createPortal(\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n style={{\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n visibility: coords ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n className={cn(className)}\n >\n {content}\n </div>,\n document.body\n )}\n </>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype AccordionContextValue = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n type: \"single\" | \"multiple\";\n};\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n null\n);\n\nexport function useAccordion() {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"useAccordion must be used inside Accordion\");\n }\n return ctx;\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { AccordionContext } from \"./accordion-context\";\n\nexport type AccordionState = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n};\n\nexport type AccordionProps = {\n children: ReactNode | ((state: AccordionState) => ReactNode);\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n className?: string;\n};\n\nexport function Accordion({\n children,\n type = \"single\",\n defaultValue,\n className,\n}: AccordionProps) {\n const getInitialOpenItems = (): Set<string> => {\n if (!defaultValue) return new Set();\n\n if (type === \"single\") {\n return new Set([defaultValue as string]);\n }\n\n return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);\n };\n\n const [openItems, setOpenItems] = useState<Set<string>>(getInitialOpenItems);\n\n const toggleItem = (value: string) => {\n setOpenItems((prev) => {\n if (type === \"single\") {\n return prev.has(value) ? new Set() : new Set([value]);\n }\n\n const next = new Set(prev);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n return next;\n });\n };\n\n return (\n <AccordionContext.Provider value={{ openItems, toggleItem, type }}>\n <div className={className} data-type={type}>\n {typeof children === \"function\"\n ? children({ openItems, toggleItem })\n : children}\n </div>\n </AccordionContext.Provider>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionItemProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionItem({\n value,\n children,\n className,\n ...props\n}: AccordionItemProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import {\n cloneElement,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\n\nimport { Pressable } from \"@primitives/pressable\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionTriggerProps = {\n value: string;\n children: ReactNode;\n className?: string;\n asChild?: boolean;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionTrigger({\n value,\n children,\n className,\n asChild = false,\n onClick,\n ...props\n}: AccordionTriggerProps) {\n const { toggleItem, openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n const handleClick = (e?: MouseEvent<HTMLDivElement>) => {\n toggleItem(value);\n if (e && onClick) {\n onClick(e);\n }\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children, {\n onClick: handleClick,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n } as Record<string, unknown>);\n }\n\n return (\n <Pressable\n className={className}\n onPress={() => handleClick(undefined)}\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n {...props}\n >\n {children}\n </Pressable>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionContentProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionContent({\n value,\n children,\n className,\n ...props\n}: AccordionContentProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type IconProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function Icon({\n size = 16,\n className,\n viewBox = \"0 0 24 24\",\n children,\n ...props\n}: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n fill=\"none\"\n aria-hidden\n focusable=\"false\"\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </svg>\n );\n}\n","\"use client\";\n\nimport { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LogoIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path\n d=\"M25.82 25.44C28.07 23.02 29.5 19.74 29.5 15.92C29.5 7.7 22.8 2 15.98 2C9.16 2 2.5 7.7 2.5 15.92C2.5 24.15 9.2 29.84 15.98 29.84C18.23 29.84 20.43 29.22 22.41 28.13L23.61 29.38C24 29.77 24.54 30 25.12 30C26.32 30 27.29 29.03 27.29 27.82C27.29 27.27 27.05 26.76 26.7 26.33L25.81 25.44H25.82ZM22.18 21.73L19.66 19.12C19.31 18.69 18.72 18.46 18.15 18.46C16.95 18.46 15.98 19.47 15.98 20.64C15.98 21.22 16.25 21.73 16.64 22.13L18.77 24.35C17.88 24.66 16.95 24.86 15.98 24.86C11.72 24.86 7.96 21.27 7.96 15.93C7.96 10.58 11.72 7 15.98 7C20.24 7 24.03 10.58 24.03 15.93C24.03 18.23 23.34 20.22 22.18 21.74V21.73Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AirtableIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M16.56 6.99L6.49 11.16C5.93 11.39 5.94 12.18 6.5 12.41L16.61 16.42C17.5 16.77 18.49 16.77 19.37 16.42L29.48 12.41C30.05 12.18 30.05 11.39 29.49 11.16L19.43 6.99C18.51 6.61 17.48 6.61 16.56 6.99\"\n fill=\"#FCB400\"\n />\n <path\n d=\"M18.89 18.6V28.62C18.89 29.09 19.37 29.42 19.81 29.25L31.07 24.87C31.2 24.82 31.31 24.74 31.38 24.63C31.46 24.51 31.5 24.38 31.5 24.25V14.23C31.5 13.76 31.02 13.43 30.58 13.61L19.31 17.98C19.19 18.03 19.08 18.11 19 18.23C18.93 18.34 18.89 18.47 18.89 18.6Z\"\n fill=\"#18BFFF\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L12.57 20.9L5.52 24.28C5.07 24.5 4.5 24.17 4.5 23.67V14.28C4.5 14.1 4.59 13.94 4.72 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.06 13.59 5.3 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"#F82B60\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L4.71 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.05 13.59 5.29 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"black\"\n fillOpacity=\"0.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AsanaIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.46 8.33C9.99 8.33 8.8 9.5 8.8 10.94C8.8 12.38 9.99 13.55 11.46 13.55C12.92 13.55 14.11 12.38 14.11 10.94C14.11 9.5 12.92 8.33 11.46 8.33ZM4.55 8.33C3.08 8.33 1.89 9.5 1.89 10.94C1.89 12.38 3.08 13.55 4.55 13.55C6.02 13.55 7.21 12.38 7.21 10.94C7.21 9.5 6.02 8.33 4.55 8.33ZM10.66 5.06C10.66 6.5 9.47 7.67 8 7.67C6.53 7.67 5.34 6.5 5.34 5.06C5.34 3.61 6.53 2.44 8 2.44C9.47 2.44 10.66 3.61 10.66 5.06Z\"\n fill=\"#F06A6A\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ClickUpIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.03 11.43L10.65 17.81L7.23 13.84L18.05 4.5L28.78 13.85L25.35 17.81L18.03 11.43Z\"\n fill=\"url(#paint0_linear_5796_19610)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.76 25.23L10.91 22.05C13.11 24.93 15.46 26.26 18.06 26.26C20.67 26.26 22.93 24.95 25.03 22.08L29.24 25.19C26.21 29.32 22.43 31.5 18.06 31.5C13.69 31.5 9.89 29.33 6.76 25.23Z\"\n fill=\"url(#paint1_linear_5796_19610)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19610\"\n x1=\"6.83\"\n y1=\"10.64\"\n x2=\"28.36\"\n y2=\"10.64\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF02F0\" />\n <stop offset=\"1\" stopColor=\"#FFC800\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19610\"\n x1=\"6.37\"\n y1=\"26.25\"\n x2=\"28.82\"\n y2=\"26.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#8930FD\" />\n <stop offset=\"1\" stopColor=\"#49CCF9\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GmailIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M3.02 14.09H5.2V8.79L2.09 6.45V13.15C2.09 13.67 2.51 14.09 3.02 14.09Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.68 14.09H14.87C15.38 14.09 15.8 13.67 15.8 13.15V6.45L12.68 8.79\"\n fill=\"#34A853\"\n />\n <path\n d=\"M12.68 4.74V8.79L15.8 6.45V5.21C15.8 4.05 14.48 3.39 13.56 4.08\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M5.2 8.79V4.74L8.94 7.54L12.68 4.74V8.79L8.94 11.59\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M2.09 5.21V6.45L5.2 8.79V4.74L4.33 4.08C3.4 3.39 2.09 4.05 2.09 5.21Z\"\n fill=\"#C5221F\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GoogleCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M25.1 10.89L18.71 10.18L10.89 10.89L10.18 18L10.89 25.1L18 25.99L25.1 25.1L25.82 17.82L25.1 10.89Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.81 21.92C13.28 21.56 12.91 21.04 12.71 20.34L13.94 19.83C14.06 20.26 14.25 20.59 14.53 20.83C14.81 21.06 15.14 21.18 15.54 21.18C15.94 21.18 16.29 21.05 16.58 20.81C16.87 20.56 17.01 20.25 17.01 19.87C17.01 19.48 16.86 19.17 16.55 18.92C16.25 18.68 15.87 18.56 15.41 18.56H14.7V17.34H15.33C15.73 17.34 16.06 17.23 16.33 17.02C16.6 16.8 16.74 16.51 16.74 16.14C16.74 15.81 16.62 15.55 16.37 15.35C16.13 15.15 15.83 15.05 15.46 15.05C15.09 15.05 14.81 15.15 14.59 15.34C14.38 15.54 14.22 15.77 14.13 16.05L12.91 15.55C13.07 15.09 13.36 14.68 13.8 14.33C14.24 13.98 14.79 13.81 15.47 13.81C15.97 13.81 16.41 13.9 16.81 14.1C17.21 14.29 17.52 14.56 17.75 14.9C17.97 15.24 18.09 15.63 18.09 16.05C18.09 16.49 17.98 16.86 17.77 17.16C17.56 17.46 17.3 17.69 17 17.85V17.93C17.4 18.09 17.73 18.35 17.99 18.7C18.25 19.04 18.38 19.46 18.38 19.94C18.38 20.42 18.25 20.86 18.01 21.23C17.76 21.61 17.43 21.91 17 22.13C16.56 22.34 16.08 22.45 15.54 22.45C14.92 22.46 14.34 22.28 13.81 21.92Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M21.37 15.8L20.03 16.78L19.35 15.75L21.78 14H22.71V22.26H21.37V15.8Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M25.1 31.5L31.5 25.1L28.3 23.68L25.1 25.1L23.68 28.3L25.1 31.5Z\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M9.47 28.3L10.89 31.5H25.1V25.11H10.89L9.47 28.3Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.63 4.5C5.45 4.5 4.5 5.45 4.5 6.63V25.1L7.7 26.53L10.89 25.1V10.89H25.11L26.53 7.7L25.11 4.5H6.63Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M4.5 25.11V29.37C4.5 30.55 5.45 31.5 6.63 31.5H10.89V25.11H4.5Z\"\n fill=\"#188038\"\n />\n <path\n d=\"M25.1 10.89V25.11H31.5V10.89L28.3 9.47L25.1 10.89Z\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M31.5 10.89V6.63C31.5 5.45 30.54 4.5 29.37 4.5H25.1V10.89H31.5Z\"\n fill=\"#1967D2\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function JiraIcon(props: IconProps) {\n const gradientId0 = \"jira-gradient-0\";\n const gradientId1 = \"jira-gradient-1\";\n\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M16.42 3H9.68C9.68 4.68 11.04 6.04 12.72 6.04H13.96V7.24C13.96 8.92 15.32 10.28 17 10.28V3.58C17 3.26 16.74 3 16.42 3Z\"\n fill=\"#2684FF\"\n />\n <path\n d=\"M13.08 6.36H6.34C6.34 8.04 7.7 9.4 9.38 9.4H10.62V10.6C10.62 12.28 11.98 13.64 13.66 13.64V6.94C13.66 6.62 13.4 6.36 13.08 6.36Z\"\n fill={`url(#${gradientId0})`}\n />\n <path\n d=\"M9.74 9.72H3C3 11.4 4.36 12.76 6.04 12.76H7.28V13.96C7.28 15.64 8.64 17 10.32 17V10.3C10.32 9.98 10.06 9.72 9.74 9.72Z\"\n fill={`url(#${gradientId1})`}\n />\n <defs>\n <linearGradient\n id={gradientId0}\n x1=\"16.73\"\n y1=\"3.02\"\n x2=\"11.22\"\n y2=\"8.67\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n <linearGradient\n id={gradientId1}\n x1=\"10.37\"\n y1=\"9.75\"\n x2=\"7.06\"\n y2=\"12.97\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M31.5 11.93V9.35C31.5 6.67 29.33 4.5 26.65 4.5H9.35C6.67 4.5 4.5 6.67 4.5 9.35V11.93H31.5Z\"\n fill=\"url(#paint0_linear_5796_19583)\"\n />\n <path\n d=\"M4.5 11.91V26.65C4.5 29.33 6.67 31.5 9.35 31.5H26.65C29.33 31.5 31.5 29.33 31.5 26.65V11.91H4.5Z\"\n fill=\"url(#paint1_linear_5796_19583)\"\n />\n <g filter=\"url(#filter0_d_5796_19583)\">\n <path\n d=\"M18.0186 25.5176C19.0579 25.5176 19.9004 24.6751 19.9004 23.6358C19.9004 22.5964 19.0579 21.7539 18.0186 21.7539C16.9793 21.7539 16.1367 22.5964 16.1367 23.6358C16.1367 24.6751 16.9793 25.5176 18.0186 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter1_d_5796_19583)\">\n <path\n d=\"M11.5987 25.5176C12.638 25.5176 13.4805 24.6751 13.4805 23.6358C13.4805 22.5964 12.638 21.7539 11.5987 21.7539C10.5593 21.7539 9.7168 22.5964 9.7168 23.6358C9.7168 24.6751 10.5593 25.5176 11.5987 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter2_d_5796_19583)\">\n <path\n d=\"M18.0186 19.5C19.0579 19.5 19.9004 18.6575 19.9004 17.6182C19.9004 16.5789 19.0579 15.7363 18.0186 15.7363C16.9793 15.7363 16.1367 16.5789 16.1367 17.6182C16.1367 18.6575 16.9793 19.5 18.0186 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter3_d_5796_19583)\">\n <path\n d=\"M24.4385 19.5C25.4778 19.5 26.3203 18.6575 26.3203 17.6182C26.3203 16.5789 25.4778 15.7363 24.4385 15.7363C23.3992 15.7363 22.5566 16.5789 22.5566 17.6182C22.5566 18.6575 23.3992 19.5 24.4385 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter4_d_5796_19583)\">\n <path\n d=\"M11.5987 19.5C12.638 19.5 13.4805 18.6575 13.4805 17.6182C13.4805 16.5789 12.638 15.7363 11.5987 15.7363C10.5593 15.7363 9.7168 16.5789 9.7168 17.6182C9.7168 18.6575 10.5593 19.5 11.5987 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_5796_19583\"\n x=\"14.4916\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_5796_19583\"\n x=\"8.07168\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_5796_19583\"\n x=\"14.4916\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_5796_19583\"\n x=\"20.9115\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_5796_19583\"\n x=\"8.07168\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_5796_19583\"\n x1=\"4.5\"\n y1=\"8.21\"\n x2=\"31.38\"\n y2=\"10.12\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#0879D1\" />\n <stop offset=\"1\" stopColor=\"#056EC9\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19583\"\n x1=\"18\"\n y1=\"11.91\"\n x2=\"18\"\n y2=\"31.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#44CBFD\" />\n <stop offset=\"1\" stopColor=\"#1195EA\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <mask\n id=\"mask0_5796_22925\"\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"5\"\n width=\"26\"\n height=\"26\"\n >\n <path d=\"M30.38 5.63H5.63V30.38H30.38V5.63Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_5796_22925)\">\n <path\n d=\"M27.74 7.17H14.45C13.85 7.17 13.36 7.66 13.36 8.26V9.49L20.85 11.81L28.83 9.49V8.26C28.83 7.66 28.34 7.17 27.74 7.17Z\"\n fill=\"#0364B8\"\n />\n <path\n d=\"M30.1 19.09C30.22 18.73 30.31 18.37 30.37 18C30.37 17.82 30.28 17.65 30.12 17.55L30.11 17.55L30.1 17.55L21.72 12.77C21.69 12.75 21.65 12.73 21.61 12.71C21.28 12.55 20.9 12.55 20.58 12.71C20.54 12.73 20.5 12.75 20.47 12.77L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18C11.88 18.37 11.97 18.73 12.08 19.09L20.97 25.59L30.1 19.09Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M24.19 9.49H18.77L17.21 11.81L18.77 14.13L24.19 18.77H28.83V14.13L24.19 9.49Z\"\n fill=\"#28A8EA\"\n />\n <path d=\"M13.36 9.49H18.77V14.13H13.36V9.49Z\" fill=\"#0078D4\" />\n <path d=\"M24.19 9.49H28.83V14.13H24.19V9.49Z\" fill=\"#50D9FF\" />\n <path\n d=\"M24.19 18.77L18.77 14.13H13.36V18.77L18.77 23.41L27.15 24.78L24.19 18.77Z\"\n fill=\"#0364B8\"\n />\n <path d=\"M18.77 14.13H24.19V18.77H18.77V14.13Z\" fill=\"#0078D4\" />\n <path d=\"M13.36 18.77H18.77V23.42H13.36V18.77Z\" fill=\"#064A8C\" />\n <path d=\"M24.19 18.77H28.83V23.42H24.19V18.77Z\" fill=\"#0078D4\" />\n <path\n opacity=\"0.5\"\n d=\"M21.24 25.13L12.12 18.48L12.5 17.81C12.5 17.81 20.81 22.54 20.94 22.61C21.04 22.65 21.16 22.65 21.26 22.6L29.72 17.78L30.1 18.46L21.24 25.13Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M30.12 18.45L30.11 18.45L30.11 18.45L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67V18C30.38 18.18 30.28 18.35 30.12 18.45Z\"\n fill=\"#1490DF\"\n />\n <path\n opacity=\"0.05\"\n d=\"M30.38 27.67V27.1L22.66 22.7L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M30.34 27.97L21.87 23.14L21.72 23.23C21.38 23.45 20.96 23.48 20.59 23.3L23.51 27.22L29.9 28.61V28.61C30.11 28.45 30.27 28.22 30.34 27.97Z\"\n fill=\"black\"\n />\n <path\n d=\"M12.08 18.46V18.45H12.08L12.05 18.43C11.9 18.34 11.81 18.18 11.81 18V27.67C11.81 28.31 12.33 28.83 12.97 28.83C12.97 28.83 12.97 28.83 12.97 28.83H29.21C29.31 28.83 29.41 28.81 29.5 28.79C29.55 28.78 29.6 28.77 29.64 28.75C29.66 28.74 29.67 28.74 29.69 28.73C29.75 28.7 29.81 28.67 29.86 28.63C29.88 28.62 29.89 28.62 29.9 28.6L12.08 18.46Z\"\n fill=\"#28A8EA\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.55 24.7V12.07C19.55 11.5 19.08 11.04 18.52 11.04H13.38V16.81L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18V25.73H18.52C19.08 25.73 19.55 25.27 19.55 24.7Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 25.48V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V26.51H17.74C18.31 26.51 18.77 26.04 18.77 25.48Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 23.93V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H17.74C18.31 24.96 18.77 24.5 18.77 23.93Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18 23.93V12.84C18 12.27 17.54 11.81 16.97 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H16.97C17.54 24.96 18 24.5 18 23.93Z\"\n fill=\"black\"\n />\n <path\n d=\"M6.66 11.81H16.97C17.54 11.81 18 12.27 18 12.84V23.16C18 23.72 17.54 24.19 16.97 24.19H6.66C6.09 24.19 5.63 23.72 5.63 23.16V12.84C5.63 12.27 6.09 11.81 6.66 11.81Z\"\n fill=\"#0078D4\"\n />\n <path\n d=\"M8.62 16.04C8.89 15.46 9.33 14.97 9.89 14.64C10.5 14.29 11.2 14.11 11.91 14.13C12.56 14.12 13.21 14.28 13.77 14.61C14.31 14.93 14.73 15.4 15.01 15.95C15.31 16.57 15.45 17.24 15.44 17.92C15.46 18.64 15.3 19.34 15 19.99C14.72 20.56 14.27 21.05 13.72 21.37C13.13 21.71 12.46 21.88 11.79 21.87C11.12 21.88 10.46 21.72 9.88 21.38C9.34 21.06 8.9 20.6 8.62 20.04C8.33 19.43 8.17 18.77 8.19 18.09C8.17 17.38 8.32 16.68 8.62 16.04ZM9.97 19.33C10.12 19.7 10.36 20.02 10.68 20.26C11.01 20.49 11.4 20.6 11.8 20.59C12.23 20.61 12.64 20.49 12.99 20.25C13.31 20.01 13.55 19.69 13.69 19.32C13.84 18.91 13.91 18.47 13.91 18.03C13.91 17.59 13.84 17.15 13.7 16.73C13.57 16.35 13.34 16.02 13.03 15.77C12.69 15.52 12.27 15.39 11.85 15.4C11.44 15.39 11.04 15.51 10.71 15.74C10.38 15.98 10.13 16.3 9.98 16.67C9.64 17.53 9.64 18.48 9.97 19.33Z\"\n fill=\"white\"\n />\n </g>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SlackIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M5.26 10.79C5.29 11.53 4.7 12.17 3.96 12.19C3.21 12.22 2.58 11.64 2.55 10.89C2.52 10.14 3.11 9.51 3.86 9.48L5.21 9.43L5.26 10.79Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M5.95 10.76C5.92 10.01 6.51 9.38 7.25 9.35C8 9.33 8.63 9.91 8.66 10.66L8.79 14.06C8.81 14.8 8.23 15.44 7.48 15.46C6.73 15.49 6.1 14.9 6.07 14.16L5.95 10.76Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M7.1 5.26C6.35 5.29 5.72 4.7 5.69 3.96C5.67 3.21 6.25 2.58 7 2.55C7.75 2.52 8.38 3.11 8.41 3.86L8.46 5.21L7.1 5.26Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M7.13 5.95C7.87 5.92 8.51 6.51 8.53 7.25C8.56 8 7.97 8.63 7.23 8.66L3.83 8.79C3.08 8.82 2.45 8.23 2.42 7.48C2.4 6.73 2.98 6.1 3.73 6.07L7.13 5.95Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M12.62 7.1C12.6 6.35 13.18 5.72 13.93 5.69C14.68 5.67 15.31 6.25 15.34 7C15.37 7.75 14.78 8.38 14.03 8.41L12.68 8.46L12.62 7.1Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M11.94 7.13C11.97 7.87 11.38 8.51 10.63 8.53C9.89 8.56 9.25 7.97 9.23 7.23L9.1 3.83C9.07 3.08 9.66 2.45 10.41 2.42C11.15 2.4 11.78 2.98 11.81 3.73L11.94 7.13Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M10.79 12.63C11.53 12.6 12.17 13.18 12.19 13.93C12.22 14.68 11.63 15.31 10.89 15.34C10.14 15.37 9.51 14.78 9.48 14.03L9.43 12.68L10.79 12.63Z\"\n fill=\"#ECB22E\"\n />\n <path\n d=\"M10.76 11.94C10.01 11.97 9.38 11.38 9.35 10.63C9.33 9.89 9.91 9.26 10.66 9.23L14.06 9.1C14.8 9.07 15.44 9.66 15.46 10.41C15.49 11.15 14.9 11.79 14.16 11.81L10.76 11.94Z\"\n fill=\"#ECB22E\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function TeamsIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <g clipPath=\"url(#clip0_5796_19548)\">\n <path\n d=\"M23.33 14.85H30.31C30.97 14.85 31.5 15.39 31.5 16.05V22.42C31.5 24.84 29.54 26.81 27.12 26.81H27.09C24.67 26.81 22.71 24.84 22.71 22.42V15.48C22.71 15.13 22.99 14.85 23.33 14.85Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M28.05 13.59C29.61 13.59 30.87 12.33 30.87 10.76C30.87 9.2 29.61 7.93 28.05 7.93C26.49 7.93 25.22 9.2 25.22 10.76C25.22 12.33 26.49 13.59 28.05 13.59Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M19.26 13.6C21.51 13.6 23.34 11.76 23.34 9.51C23.34 7.25 21.51 5.42 19.26 5.42C17 5.42 15.17 7.25 15.17 9.51C15.17 11.76 17 13.6 19.26 13.6Z\"\n fill=\"#7B83EB\"\n />\n <path\n d=\"M24.7 14.85H13.19C12.54 14.87 12.02 15.41 12.04 16.06V23.33C11.94 27.24 15.04 30.49 18.94 30.59C22.85 30.49 25.94 27.24 25.85 23.33V16.06C25.86 15.41 25.35 14.87 24.7 14.85Z\"\n fill=\"#7B83EB\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5704 14.8545V25.0293C19.5673 25.4958 19.2851 25.915 18.8546 26.0927C18.7175 26.1508 18.5702 26.1807 18.4213 26.1808H12.588C12.5064 25.9731 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H19.5704Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V25.6585C18.9424 25.8077 18.9126 25.9553 18.8546 26.0927C18.6773 26.5241 18.259 26.8069 17.7934 26.81H12.8832C12.7764 26.6023 12.676 26.3947 12.588 26.1808C12.5001 25.9668 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V24.4C18.9377 25.034 18.426 25.5467 17.7934 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1845 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3145 14.8545V24.4C18.3098 25.034 17.7981 25.5467 17.1655 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.3145Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5694 11.6017V13.5838C19.4627 13.5901 19.3622 13.5964 19.2555 13.5964C19.1487 13.5964 19.0483 13.5901 18.9415 13.5838C18.7296 13.5697 18.5194 13.536 18.3136 13.4831C17.0421 13.1814 15.9916 12.2877 15.488 11.0794C15.4014 10.8765 15.3341 10.6658 15.2871 10.4502H18.4204C19.054 10.4526 19.567 10.9667 19.5694 11.6017Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9418 12.2296V13.5825C18.7298 13.5684 18.5196 13.5347 18.3139 13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.7927C18.4263 11.0805 18.9394 11.5947 18.9418 12.2296Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3139 12.2296V13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.1648C17.7984 11.0805 18.3115 11.5947 18.3139 12.2296Z\"\n fill=\"black\"\n />\n <path\n d=\"M5.65 11.08H17.16C17.8 11.08 18.31 11.59 18.31 12.23V23.77C18.31 24.4 17.8 24.92 17.16 24.92H5.65C5.02 24.92 4.5 24.4 4.5 23.77V12.23C4.5 11.59 5.02 11.08 5.65 11.08Z\"\n fill=\"url(#paint0_linear_5796_19548)\"\n />\n <path\n d=\"M14.44 15.47H12.14V21.75H10.67V15.47H8.38V14.25H14.44V15.47Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19548\"\n x1=\"6.9\"\n y1=\"10.18\"\n x2=\"15.94\"\n y2=\"25.81\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5A62C3\" />\n <stop offset=\"0.5\" stopColor=\"#4D55BD\" />\n <stop offset=\"1\" stopColor=\"#3940AB\" />\n </linearGradient>\n <clipPath id=\"clip0_5796_19548\">\n <rect\n width=\"27\"\n height=\"25.1695\"\n fill=\"white\"\n transform=\"translate(4.5 5.41504)\"\n />\n </clipPath>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckboxIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M4 8L6.5 10.5L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleEmptyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 28 28\" {...props}>\n <circle\n cx=\"14\"\n cy=\"14\"\n r=\"10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M8.82 13.55L14.42 7.94L13.54 7.06L8.82 11.79L6.44 9.41L5.56 10.29L8.82 13.55ZM10 17.92C8.91 17.92 7.88 17.71 6.91 17.29C5.95 16.88 5.11 16.31 4.4 15.6C3.69 14.89 3.12 14.05 2.71 13.09C2.29 12.13 2.08 11.1 2.08 10C2.08 8.91 2.29 7.88 2.71 6.91C3.12 5.95 3.69 5.11 4.4 4.4C5.11 3.69 5.95 3.12 6.91 2.71C7.88 2.29 8.9 2.08 10 2.08C11.09 2.08 12.12 2.29 13.09 2.71C14.05 3.12 14.89 3.69 15.6 4.4C16.31 5.11 16.88 5.95 17.29 6.91C17.71 7.87 17.92 8.9 17.92 10C17.92 11.09 17.71 12.12 17.29 13.09C16.88 14.05 16.31 14.89 15.6 15.6C14.89 16.31 14.05 16.88 13.09 17.29C12.13 17.71 11.1 17.92 10 17.92ZM10 16.67C11.86 16.67 13.44 16.02 14.73 14.73C16.02 13.44 16.67 11.86 16.67 10C16.67 8.14 16.02 6.56 14.73 5.27C13.44 3.98 11.86 3.33 10 3.33C8.14 3.33 6.56 3.98 5.27 5.27C3.98 6.56 3.33 8.14 3.33 10C3.33 11.86 3.98 13.44 5.27 14.73C6.56 16.02 8.14 16.67 10 16.67Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function FireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function InsightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M8 4.52C8.72 6.07 10.03 7.31 11.64 8.01C10.03 8.71 8.72 9.95 8 11.5C7.27 9.95 5.97 8.71 4.36 8.01C5.97 7.31 7.27 6.07 8 4.52Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NotFireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n <line\n x1=\"17.8311\"\n y1=\"3.53033\"\n x2=\"2.83111\"\n y2=\"18.5303\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ReadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M10.77 1.78L17.32 5.69C17.5 5.81 17.65 5.97 17.76 6.16C17.86 6.36 17.92 6.57 17.92 6.79V15.58C17.92 16 17.77 16.35 17.48 16.65C17.19 16.94 16.83 17.08 16.41 17.08H3.59C3.17 17.08 2.81 16.94 2.52 16.65C2.23 16.35 2.08 16 2.08 15.58V6.79C2.08 6.57 2.14 6.36 2.24 6.16C2.35 5.97 2.5 5.81 2.68 5.69L9.23 1.78C9.46 1.65 9.72 1.58 10 1.58C10.28 1.58 10.54 1.65 10.77 1.78ZM10.13 10.46L16.5 6.67L10.13 2.87C10.09 2.84 10.04 2.83 10 2.83C9.96 2.83 9.92 2.84 9.87 2.87L3.5 6.67L9.87 10.46C9.92 10.49 9.96 10.5 10 10.5C10.04 10.5 10.09 10.49 10.13 10.46ZM9.23 11.54L3.33 8.02V15.58C3.33 15.65 3.36 15.71 3.41 15.76C3.45 15.81 3.52 15.83 3.59 15.83H16.41C16.49 15.83 16.55 15.81 16.6 15.76C16.64 15.71 16.67 15.65 16.67 15.58V8.02L10.77 11.54C10.54 11.67 10.28 11.74 10 11.74C9.72 11.74 9.46 11.67 9.23 11.54ZM10.77 15.83H16.67H3.33H10.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function UnreadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M3.59 16.25C3.17 16.25 2.81 16.1 2.52 15.81C2.23 15.52 2.08 15.16 2.08 14.74V5.26C2.08 4.84 2.23 4.48 2.52 4.19C2.81 3.9 3.17 3.75 3.59 3.75H11.23C11.4 3.75 11.55 3.81 11.68 3.93C11.8 4.06 11.86 4.21 11.85 4.38C11.85 4.56 11.78 4.7 11.66 4.82C11.54 4.94 11.4 5 11.23 5H3.33V14.74C3.33 14.82 3.36 14.88 3.41 14.93C3.45 14.98 3.52 15 3.59 15H16.41C16.49 15 16.55 14.98 16.6 14.93C16.64 14.88 16.67 14.82 16.67 14.74V9.17C16.67 8.99 16.73 8.84 16.85 8.72C16.97 8.6 17.12 8.54 17.29 8.54C17.47 8.54 17.62 8.6 17.74 8.72C17.86 8.84 17.92 8.99 17.92 9.17V14.74C17.92 15.16 17.77 15.52 17.48 15.81C17.19 16.1 16.83 16.25 16.41 16.25H3.59ZM10 9.17L12.71 7.44C12.86 7.35 13.01 7.32 13.14 7.37C13.27 7.41 13.38 7.5 13.45 7.62C13.53 7.74 13.56 7.87 13.54 8C13.52 8.14 13.43 8.26 13.28 8.36L10.4 10.21C10.27 10.29 10.14 10.33 10 10.33C9.86 10.33 9.73 10.3 9.6 10.22L3.33 6.29V5L10 9.17ZM15.83 6.78C15.2 6.78 14.66 6.56 14.21 6.11C13.77 5.66 13.54 5.12 13.54 4.49C13.54 3.85 13.77 3.31 14.21 2.86C14.66 2.42 15.2 2.2 15.83 2.2C16.47 2.2 17.01 2.42 17.46 2.86C17.9 3.31 18.13 3.85 18.13 4.49C18.13 5.12 17.9 5.66 17.46 6.11C17.01 6.56 16.47 6.78 15.83 6.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AccountIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.02 17.29C6.87 16.66 7.8 16.16 8.8 15.8C9.8 15.43 10.87 15.25 12 15.25C13.13 15.25 14.2 15.43 15.2 15.8C16.2 16.16 17.13 16.66 17.98 17.29C18.6 16.61 19.09 15.82 19.45 14.92C19.82 14.02 20 13.05 20 12C20 9.78 19.22 7.9 17.66 6.34C16.1 4.78 14.22 4 12 4C9.78 4 7.9 4.78 6.34 6.34C4.78 7.9 4 9.78 4 12C4 13.05 4.18 14.02 4.55 14.92C4.91 15.82 5.4 16.61 6.02 17.29ZM12 12.75C11.09 12.75 10.32 12.44 9.69 11.81C9.06 11.18 8.75 10.41 8.75 9.5C8.75 8.59 9.06 7.82 9.69 7.19C10.32 6.56 11.09 6.25 12 6.25C12.91 6.25 13.68 6.56 14.31 7.19C14.94 7.82 15.25 8.59 15.25 9.5C15.25 10.41 14.94 11.18 14.31 11.81C13.68 12.44 12.91 12.75 12 12.75ZM12 21.5C10.68 21.5 9.44 21.25 8.29 20.76C7.13 20.26 6.13 19.58 5.27 18.73C4.42 17.87 3.74 16.87 3.24 15.71C2.75 14.56 2.5 13.32 2.5 12C2.5 10.68 2.75 9.44 3.24 8.29C3.74 7.13 4.42 6.13 5.27 5.27C6.13 4.42 7.13 3.74 8.29 3.24C9.44 2.75 10.68 2.5 12 2.5C13.32 2.5 14.56 2.75 15.71 3.24C16.87 3.74 17.87 4.42 18.73 5.27C19.58 6.13 20.26 7.13 20.76 8.29C21.25 9.44 21.5 10.68 21.5 12C21.5 13.32 21.25 14.56 20.76 15.71C20.26 16.87 19.58 17.87 18.73 18.73C17.87 19.58 16.87 20.26 15.71 20.76C14.56 21.25 13.32 21.5 12 21.5ZM12 20C12.9 20 13.77 19.85 14.61 19.56C15.45 19.27 16.19 18.87 16.84 18.35C16.19 17.84 15.46 17.45 14.64 17.17C13.82 16.89 12.94 16.75 12 16.75C11.06 16.75 10.18 16.89 9.36 17.17C8.53 17.44 7.8 17.84 7.16 18.35C7.81 18.87 8.55 19.27 9.39 19.56C10.23 19.85 11.1 20 12 20ZM12 11.25C12.5 11.25 12.91 11.08 13.25 10.75C13.58 10.41 13.75 10 13.75 9.5C13.75 9 13.58 8.59 13.25 8.25C12.91 7.92 12.5 7.75 12 7.75C11.5 7.75 11.09 7.92 10.75 8.25C10.42 8.59 10.25 9 10.25 9.5C10.25 10 10.42 10.41 10.75 10.75C11.09 11.08 11.5 11.25 12 11.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AddIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.5 12.5H6V11.5H11.5V6H12.5V11.5H18V12.5H12.5V18H11.5V12.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Icon, type IconProps } from \"@icons/index\";\n\ntype ArrowDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\nconst DIRECTION_CLASS: Record<ArrowDirection, string> = {\n down: \"\",\n left: \"rotate-90\",\n up: \"-rotate-180\",\n right: \"-rotate-90\",\n};\n\nexport type ArrowIconProps = IconProps & {\n direction?: ArrowDirection;\n};\n\nexport default function ArrowIcon({\n direction = \"down\",\n className,\n ...props\n}: ArrowIconProps) {\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n className={cn(DIRECTION_CLASS[direction], className)}\n {...props}\n >\n <path\n d=\"m5 8.5 7 7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M5.31 21.5C4.8 21.5 4.38 21.33 4.03 20.98C3.68 20.63 3.5 20.2 3.5 19.69V6.31C3.5 5.8 3.68 5.38 4.03 5.03C4.38 4.68 4.8 4.5 5.31 4.5H6.69V2.38H8.23V4.5H15.81V2.38H17.31V4.5H18.69C19.2 4.5 19.63 4.68 19.98 5.03C20.33 5.38 20.5 5.8 20.5 6.31V19.69C20.5 20.2 20.33 20.63 19.98 20.98C19.63 21.33 19.2 21.5 18.69 21.5H5.31ZM5.31 20H18.69C18.77 20 18.84 19.97 18.9 19.9C18.97 19.84 19 19.77 19 19.69V10.31H5V19.69C5 19.77 5.03 19.84 5.1 19.9C5.16 19.97 5.23 20 5.31 20ZM5 8.81H19V6.31C19 6.23 18.97 6.16 18.9 6.1C18.84 6.03 18.77 6 18.69 6H5.31C5.23 6 5.16 6.03 5.1 6.1C5.03 6.16 5 6.23 5 6.31V8.81Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CloseIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.4 18.65L5.35 17.6L10.95 12L5.35 6.4L6.4 5.35L12 10.95L17.6 5.35L18.65 6.4L13.05 12L18.65 17.6L17.6 18.65L12 13.05L6.4 18.65Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CompactDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 16.625V15.125H20.5V16.625H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 8.875V7.375H20.5V8.875H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CopyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M9.06 17.5C8.55 17.5 8.13 17.33 7.78 16.98C7.43 16.63 7.25 16.2 7.25 15.69V4.31C7.25 3.8 7.43 3.38 7.78 3.03C8.13 2.68 8.55 2.5 9.06 2.5H17.44C17.95 2.5 18.38 2.68 18.73 3.03C19.08 3.38 19.25 3.8 19.25 4.31V15.69C19.25 16.2 19.08 16.63 18.73 16.98C18.38 17.33 17.95 17.5 17.44 17.5H9.06ZM9.06 16H17.44C17.52 16 17.59 15.97 17.65 15.9C17.72 15.84 17.75 15.77 17.75 15.69V4.31C17.75 4.23 17.72 4.16 17.65 4.1C17.59 4.03 17.52 4 17.44 4H9.06C8.98 4 8.91 4.03 8.85 4.1C8.78 4.16 8.75 4.23 8.75 4.31V15.69C8.75 15.77 8.78 15.84 8.85 15.9C8.91 15.97 8.98 16 9.06 16ZM5.56 21C5.05 21 4.63 20.83 4.28 20.48C3.93 20.13 3.75 19.7 3.75 19.19V6.31H5.25V19.19C5.25 19.27 5.28 19.34 5.35 19.4C5.41 19.47 5.48 19.5 5.56 19.5H15.44V21H5.56Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function DarkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M12.1 21.5C10.77 21.5 9.52 21.25 8.36 20.74C7.2 20.24 6.18 19.55 5.31 18.69C4.45 17.82 3.76 16.8 3.26 15.64C2.75 14.48 2.5 13.23 2.5 11.9C2.5 9.71 3.17 7.76 4.5 6.05C5.84 4.34 7.56 3.22 9.68 2.68C9.5 4.29 9.66 5.84 10.18 7.35C10.69 8.86 11.52 10.19 12.67 11.33C13.81 12.48 15.14 13.31 16.65 13.82C18.16 14.34 19.71 14.5 21.32 14.32C20.79 16.44 19.67 18.16 17.96 19.5C16.24 20.83 14.29 21.5 12.1 21.5ZM12.1 20C13.57 20 14.93 19.63 16.18 18.9C17.43 18.17 18.41 17.16 19.13 15.87C17.69 15.74 16.33 15.38 15.05 14.78C13.77 14.19 12.62 13.39 11.6 12.37C10.58 11.35 9.78 10.2 9.18 8.92C8.58 7.64 8.22 6.28 8.1 4.85C6.82 5.57 5.81 6.55 5.09 7.81C4.36 9.07 4 10.43 4 11.9C4 14.15 4.79 16.06 6.36 17.64C7.94 19.21 9.85 20 12.1 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ExternalLinkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M4.42 17.08C4 17.08 3.64 16.94 3.35 16.65C3.06 16.35 2.91 16 2.91 15.58V4.42C2.91 4 3.06 3.65 3.35 3.35C3.64 3.06 4 2.92 4.42 2.92H9.68V4.17H4.42C4.36 4.17 4.3 4.19 4.24 4.25C4.19 4.3 4.16 4.36 4.16 4.42V15.58C4.16 15.64 4.19 15.7 4.24 15.75C4.3 15.81 4.36 15.83 4.42 15.83H15.57C15.64 15.83 15.7 15.81 15.75 15.75C15.8 15.7 15.83 15.64 15.83 15.58V10.32H17.08V15.58C17.08 16 16.93 16.35 16.64 16.65C16.35 16.94 16 17.08 15.57 17.08H4.42ZM8.1 12.78L7.22 11.9L14.95 4.17H11.66V2.92H17.08V8.33H15.83V5.04L8.1 12.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.25 5.21V1.52H12.75V5.21H11.25ZM17.32 7.73L16.29 6.7L18.87 4.04L19.94 5.12L17.32 7.73ZM18.79 12.75V11.25H22.48V12.75H18.79ZM11.25 22.48V18.8H12.75V22.48H11.25ZM6.7 7.69L4.04 5.13L5.13 4.07L7.74 6.68L6.7 7.69ZM18.86 19.96L16.29 17.3L17.31 16.29L19.93 18.84L18.86 19.96ZM1.52 12.75V11.25H5.21V12.75H1.52ZM5.12 19.96L4.07 18.87L6.65 16.29L7.19 16.81L7.75 17.33L5.12 19.96ZM12 17.5C10.48 17.5 9.18 16.97 8.11 15.9C7.04 14.83 6.5 13.53 6.5 12C6.5 10.48 7.03 9.18 8.1 8.11C9.17 7.04 10.47 6.5 12 6.5C13.53 6.5 14.82 7.03 15.89 8.1C16.97 9.17 17.5 10.47 17.5 12C17.5 13.53 16.97 14.82 15.9 15.89C14.83 16.97 13.53 17.5 12 17.5ZM12 16C13.1 16 14.04 15.61 14.83 14.83C15.61 14.04 16 13.1 16 12C16 10.9 15.61 9.96 14.83 9.18C14.04 8.39 13.1 8 12 8C10.9 8 9.96 8.39 9.18 9.18C8.39 9.96 8 10.9 8 12C8 13.1 8.39 14.04 9.18 14.83C9.96 15.61 10.9 16 12 16Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MinusIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MoreIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M10.5 6.23C10.5 5.82 10.65 5.47 10.94 5.17C11.23 4.88 11.59 4.73 12 4.73C12.41 4.73 12.77 4.88 13.06 5.17C13.35 5.47 13.5 5.82 13.5 6.23C13.5 6.64 13.35 7 13.06 7.29C12.77 7.58 12.41 7.73 12 7.73C11.59 7.73 11.23 7.58 10.94 7.29C10.65 7 10.5 6.64 10.5 6.23ZM10.5 12C10.5 11.59 10.65 11.23 10.94 10.94C11.23 10.65 11.59 10.5 12 10.5C12.41 10.5 12.77 10.65 13.06 10.94C13.35 11.23 13.5 11.59 13.5 12C13.5 12.41 13.35 12.77 13.06 13.06C12.77 13.35 12.41 13.5 12 13.5C11.59 13.5 11.23 13.35 10.94 13.06C10.65 12.77 10.5 12.41 10.5 12ZM10.5 17.77C10.5 17.36 10.65 17 10.94 16.71C11.23 16.42 11.59 16.27 12 16.27C12.41 16.27 12.77 16.42 13.06 16.71C13.35 17 13.5 17.36 13.5 17.77C13.5 18.18 13.35 18.54 13.06 18.83C12.77 19.12 12.41 19.27 12 19.27C11.59 19.27 11.23 19.12 10.94 18.83C10.65 18.54 10.5 18.18 10.5 17.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NormalDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SearchIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SummaryIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 17.6347V16.135H9.5V17.6347H3.5ZM3.5 12.7502V11.2502H13.5V12.7502H3.5ZM3.5 7.86547V6.36572H20.5V7.86547H3.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M17.12 12.22C17.87 13.84 19.23 15.13 20.91 15.85C19.23 16.57 17.87 17.86 17.13 19.48C16.38 17.86 15.02 16.57 13.34 15.85C15.02 15.13 16.38 13.84 17.12 12.22Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SystemIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <g>\n <path\n d=\"M10.07 13.93C9.49 13.34 8.96 12.72 8.48 12.07C8.01 11.42 7.59 10.72 7.21 9.99C7.05 10.31 6.94 10.63 6.87 10.97C6.81 11.31 6.77 11.65 6.77 12C6.77 13.45 7.28 14.69 8.3 15.7C9.31 16.72 10.55 17.23 12 17.23C12.34 17.23 12.68 17.19 13.03 17.11C13.37 17.04 13.7 16.93 14.01 16.78C13.28 16.41 12.58 15.99 11.93 15.51C11.28 15.04 10.66 14.51 10.07 13.93ZM11.14 12.88C11.96 13.7 12.87 14.41 13.88 15.01C14.88 15.61 15.95 16.08 17.1 16.43C16.46 17.16 15.7 17.73 14.82 18.14C13.94 18.55 13 18.75 12.02 18.75C10.14 18.75 8.55 18.1 7.24 16.79C5.93 15.48 5.27 13.88 5.27 12C5.27 11.02 5.48 10.09 5.89 9.2C6.29 8.32 6.86 7.56 7.6 6.93C7.95 8.07 8.42 9.14 9.02 10.15C9.62 11.15 10.32 12.06 11.14 12.88ZM18.3 14.49C18.05 14.43 17.81 14.36 17.56 14.28C17.32 14.2 17.08 14.11 16.84 14.02C16.98 13.7 17.08 13.37 17.15 13.03C17.22 12.7 17.25 12.35 17.25 12C17.25 10.55 16.74 9.31 15.71 8.29C14.69 7.26 13.45 6.75 12 6.75C11.65 6.75 11.3 6.78 10.96 6.85C10.63 6.91 10.3 7.01 9.98 7.15C9.89 6.91 9.8 6.68 9.73 6.44C9.66 6.21 9.6 5.97 9.53 5.72C9.93 5.56 10.33 5.45 10.75 5.37C11.17 5.29 11.59 5.25 12.02 5.25C13.9 5.25 15.5 5.91 16.81 7.21C18.12 8.52 18.77 10.12 18.77 12C18.77 12.43 18.74 12.86 18.66 13.28C18.58 13.69 18.46 14.1 18.3 14.49ZM11.25 3.13V0.44H12.75V3.13H11.25ZM11.25 23.56V20.87H12.75V23.56H11.25ZM18.8 6.26L17.74 5.19L19.62 3.33L20.69 4.38L18.8 6.26ZM4.38 20.68L3.31 19.62L5.19 17.74L6.26 18.81L4.38 20.68ZM20.86 12.75V11.25H23.56V12.75H20.86ZM0.44 12.75V11.25H3.13V12.75H0.44ZM19.62 20.69L17.74 18.81L18.8 17.74L20.67 19.62L19.62 20.69ZM5.19 6.26L3.32 4.38L4.38 3.31L6.26 5.19L5.19 6.26Z\"\n fill=\"currentColor\"\n />\n </g>\n </Icon>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactElement<IconProps>;\n label?: ReactNode;\n action?: ReactElement<ButtonProps>;\n className?: string;\n};\n\nexport function Badge({\n icon,\n label,\n action,\n className,\n ...props\n}: BadgeProps) {\n return (\n <div className={cn(\"w-fit\", className)} {...props}>\n {icon}\n {label}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardOwnProps = {\n children: ReactNode;\n className?: string;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | \"as\">;\n\nexport function Card<T extends ElementType = \"div\">({\n as,\n children,\n className,\n ...props\n}: CardProps<T>) {\n const Component = as || \"div\";\n\n return (\n <Component className={cn(className)} {...props}>\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardLayoutProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardLayout({ children, className }: CardLayoutProps) {\n return (\n <div\n className={cn(\n `grid h-full grid-cols-[auto_1fr] grid-rows-[auto_auto_1fr_auto]`,\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardSidebarProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardSidebar({ children, className }: CardSidebarProps) {\n return <div className={cn(\"row-span-4\", className)}>{children}</div>;\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardHeaderProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardHeader({ children, className }: CardHeaderProps) {\n return (\n <div className={cn(\"col-start-2 row-start-1\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardTitleProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardTitle({ children, className }: CardTitleProps) {\n return (\n <h3 className={cn(\"col-start-2 row-start-2\", className)}>{children}</h3>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardContentProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardContent({ children, className }: CardContentProps) {\n return (\n <div className={cn(\"col-start-2 row-start-3\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardFooter({ children, className }: CardFooterProps) {\n return (\n <div className={cn(\"col-start-2 row-start-4\", className)}>{children}</div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { Dropdown, type DropdownProps } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\n\nexport type DropdownMenuItemProps = ButtonProps & {\n closeOnClick?: boolean;\n};\n\nexport type DropdownMenuProps = DropdownProps & {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n};\n\nfunction DropdownMenuContent({\n children,\n className,\n}: {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n}) {\n const { close } = useDropdown();\n\n return (\n <div\n role=\"menu\"\n tabIndex={-1}\n className={cn(\"flex flex-col outline-none\", className)}\n >\n {Children.map(children, (child) =>\n cloneElement(child, {\n role: \"menuitem\",\n onClick: (e) => {\n child.props.onClick?.(e);\n if (child.props.closeOnClick !== false) {\n close();\n }\n },\n })\n )}\n </div>\n );\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n return <Button {...props} />;\n}\n\nexport function DropdownMenu({\n trigger,\n children,\n className,\n ...props\n}: DropdownMenuProps) {\n return (\n <Dropdown trigger={trigger} {...props}>\n <DropdownMenuContent className={className}>\n {children}\n </DropdownMenuContent>\n </Dropdown>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { normalizeContent } from \"@utils/rich-content\";\n\nexport type RichContentProps = {\n content: string;\n className?: string;\n};\n\nexport function RichContent({ content, className }: RichContentProps) {\n const sanitizedHtml = normalizeContent(content);\n\n return (\n <div\n className={cn(\n \"normalized-content text-sm leading-[1.3] font-normal text-neutral-900\",\n className\n )}\n dangerouslySetInnerHTML={{ __html: sanitizedHtml }}\n />\n );\n}\n","export const AVATAR_COLOR = {\n amber: { bg: \"bg-amber-200\", text: \"text-amber-700\" },\n blue: { bg: \"bg-blue-200\", text: \"text-blue-700\" },\n cyan: { bg: \"bg-cyan-200\", text: \"text-cyan-700\" },\n emerald: { bg: \"bg-emerald-200\", text: \"text-emerald-700\" },\n fuchsia: { bg: \"bg-fuchsia-200\", text: \"text-fuchsia-700\" },\n green: { bg: \"bg-green-200\", text: \"text-green-700\" },\n indigo: { bg: \"bg-indigo-200\", text: \"text-indigo-700\" },\n lime: { bg: \"bg-lime-200\", text: \"text-lime-700\" },\n orange: { bg: \"bg-orange-200\", text: \"text-orange-700\" },\n pink: { bg: \"bg-pink-200\", text: \"text-pink-700\" },\n purple: { bg: \"bg-purple-200\", text: \"text-purple-700\" },\n rose: { bg: \"bg-rose-200\", text: \"text-rose-700\" },\n sky: { bg: \"bg-sky-200\", text: \"text-sky-700\" },\n slate: { bg: \"bg-slate-200\", text: \"text-slate-700\" },\n stone: { bg: \"bg-stone-200\", text: \"text-stone-700\" },\n teal: { bg: \"bg-teal-200\", text: \"text-teal-700\" },\n violet: { bg: \"bg-violet-200\", text: \"text-violet-700\" },\n} as const;\n\nexport type AvatarColorKey = keyof typeof AVATAR_COLOR;\nexport type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];\n\nexport const AVATAR_COLOR_KEYS = Object.keys(AVATAR_COLOR) as AvatarColorKey[];\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { pickColorFromPalette } from \"@utils/color\";\nimport { getInitials } from \"@utils/string\";\n\nimport {\n AVATAR_COLOR,\n AVATAR_COLOR_KEYS,\n type AvatarColorKey,\n} from \"./types/avatar\";\n\nconst avatarStyles = tv({\n base: \"flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none\",\n variants: {\n size: {\n xs: \"h-[16px] w-[16px] text-[0.5em]\",\n sm: \"h-[20px] w-[20px] text-[0.625em]\",\n md: \"h-[28px] w-[28px] text-[0.75em]\",\n lg: \"h-[32px] w-[32px] text-[0.875em]\",\n xl: \"h-[36px] w-[36px] text-[0.875em]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type AvatarProps = {\n name: string;\n className?: string;\n} & VariantProps<typeof avatarStyles>;\n\nfunction getAvatarInitials(name: string) {\n const base = name.includes(\"@\") ? name.split(\"@\")[0] : name;\n return getInitials(base);\n}\n\nexport function Avatar({ name, size = \"sm\", className }: AvatarProps) {\n const initials = getAvatarInitials(name);\n\n const colorKey: AvatarColorKey = pickColorFromPalette(\n name,\n AVATAR_COLOR_KEYS\n );\n\n const color = AVATAR_COLOR[colorKey];\n\n return (\n <div\n role=\"img\"\n aria-label={name}\n className={cn(avatarStyles({ size }), color.bg, color.text, className)}\n >\n {initials}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Badge, type BadgeProps } from \"@components/badge/badge\";\nimport {\n CheckCircleIcon,\n CloseIcon,\n FireIcon,\n InsightIcon,\n} from \"@icons/index\";\n\nconst statusBadgeStyles = tv({\n slots: {\n root: \"relative flex items-center gap-1 rounded-full border\",\n text: \"truncate text-xs font-semibold whitespace-nowrap\",\n },\n variants: {\n status: {\n fire: {\n root: \"border-tertiary-400 bg-tertiary-50\",\n text: \"text-tertiary-500-variant-2\",\n },\n insight: {\n root: \"border-primary-400-variant-1 bg-primary-subtle\",\n text: \"text-primary-600\",\n },\n done: {\n root: \"border-success-base bg-success-light\",\n text: \"text-success-base\",\n },\n },\n },\n});\n\ntype BadgeLayout =\n | \"icon-label\"\n | \"icon-action\"\n | \"icon-label-action\"\n | \"label-only\";\n\nconst STATUS_CONFIG = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insight\",\n compact: \"label-only\",\n normal: \"icon-label\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n} as const satisfies Record<\n string,\n {\n icon: React.FC<{ size?: number; className?: string }>;\n label: string;\n compact: BadgeLayout;\n normal: BadgeLayout;\n }\n>;\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"icon\" | \"action\" | \"label\"> &\n Required<VariantProps<typeof statusBadgeStyles>> & {\n label?: ReactNode;\n onAction?: () => void;\n density?: Density;\n };\n\nexport function StatusBadge({\n className,\n label,\n status,\n onAction,\n density = \"normal\",\n}: StatusBadgeProps) {\n const [hovered, setHovered] = useState(false);\n\n const isCompact = density === \"compact\";\n const config = STATUS_CONFIG[status];\n const layout = isCompact ? config.compact : config.normal;\n\n const styles = statusBadgeStyles({ status });\n\n const showIcon = layout.includes(\"icon\");\n const showLabel = layout.includes(\"label\");\n const showAction = layout.includes(\"action\") && onAction;\n\n return (\n <Badge\n className={cn(\n styles.root(),\n isCompact ? \"h-6 w-6\" : \"py-1 pr-2.5 pl-2\",\n className\n )}\n icon={\n showIcon ? (\n <config.icon\n size={16}\n className={cn(\n styles.text(),\n isCompact && showAction && \"absolute inset-0 m-auto\",\n isCompact && showAction && hovered && \"opacity-0\"\n )}\n />\n ) : undefined\n }\n label={\n showLabel ? (\n <span\n className={cn(\n styles.text(),\n isCompact &&\n \"absolute inset-0 flex items-center justify-center text-center text-[10px]\"\n )}\n >\n {label ?? config.label}\n </span>\n ) : undefined\n }\n action={\n showAction ? (\n <Button\n onClick={onAction}\n aria-label=\"Dismiss status\"\n className={cn(\n \"group\",\n isCompact\n ? cn(\n \"absolute inset-0 m-auto transition-opacity\",\n hovered ? \"opacity-100\" : \"opacity-0\"\n )\n : undefined\n )}\n >\n <CloseIcon\n size={16}\n className={cn(styles.text(), \"group-hover:scale-90\")}\n />\n </Button>\n ) : undefined\n }\n onMouseEnter={isCompact ? () => setHovered(true) : undefined}\n onMouseLeave={isCompact ? () => setHovered(false) : undefined}\n />\n );\n}\n","import { cn } from \"@utils/classnames\";\n\ntype SkeletonProps = {\n className?: string;\n};\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"skeleton rounded-md\", className)} />;\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type BulkActionsSkeletonProps = {\n className?: string;\n};\n\nexport function BulkActionsSkeleton({ className }: BulkActionsSkeletonProps) {\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n <Skeleton className=\"h-4 w-30\" />\n </div>\n\n {/* Bulk actions skeleton */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\" />\n\n {/* Density skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n icon: ReactElement<IconProps>;\n};\n\n// IconButton is a button with an icon. It only supports one child icon.\n// The icon is only decorative and should not be focusable.\nexport function IconButton({ icon, ...props }: IconButtonProps) {\n return (\n <Button {...props}>\n {cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n className: cn(\"shrink-0\", icon.props.className),\n })}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Tooltip, type TooltipProps } from \"@primitives/tooltip\";\n\n// InfoTooltip is a styled preset of Tooltip.\n// It intentionally exposes the same API as Tooltip.\nexport type InfoTooltipProps = TooltipProps;\n\nexport function InfoTooltip({ className, ...props }: InfoTooltipProps) {\n return (\n <Tooltip\n {...props}\n className={cn(\n \"rounded bg-neutral-700 px-2 py-1 text-[0.625em] font-medium whitespace-nowrap text-white\",\n className\n )}\n />\n );\n}\n","import { useState, type ReactElement } from \"react\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n CompactDensityIcon,\n FireIcon,\n MinusIcon,\n NormalDensityIcon,\n NotFireIcon,\n ReadIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\ntype BulkAction = {\n id: string;\n tooltip: string;\n icon: ReactElement<IconProps>;\n onClick: () => void;\n};\n\ntype BulkActionsProps = {\n totalItems: number;\n selectedItems: number;\n\n onSelectAll: (select: boolean) => void;\n\n actions: {\n fire: { on: () => void; off: () => void };\n done: { on: () => void; off: () => void };\n read: { on: () => void; off: () => void };\n };\n\n defaultDensity?: Density;\n onDensityChange: (density: Density) => void;\n\n className?: string;\n};\n\nexport function BulkActions({\n totalItems = 0,\n selectedItems = 0,\n onSelectAll,\n actions,\n defaultDensity = \"normal\",\n onDensityChange,\n className,\n}: BulkActionsProps) {\n const hasItems = totalItems > 0;\n const isAllSelected = hasItems && selectedItems === totalItems;\n const isPartiallySelected =\n hasItems && selectedItems > 0 && selectedItems < totalItems;\n\n const label = isAllSelected\n ? `All (${totalItems})`\n : isPartiallySelected\n ? `${selectedItems}/${totalItems} selected`\n : `Select all (${totalItems})`;\n\n const [density, setDensity] = useState<Density>(defaultDensity ?? \"normal\");\n\n const handleSelectAll = () => {\n onSelectAll(!isAllSelected);\n };\n\n function changeDensity(next: Density) {\n setDensity(next);\n onDensityChange?.(next);\n }\n\n const actionGroups: Record<string, BulkAction[]> = {\n fire: [\n {\n id: \"fire\",\n tooltip: \"Mark as fire\",\n icon: <FireIcon size={20} className=\"text-tertiary-500-variant-2\" />,\n onClick: actions.fire.on,\n },\n {\n id: \"not-fire\",\n tooltip: \"Mark as not fire\",\n icon: <NotFireIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.fire.off,\n },\n ],\n done: [\n {\n id: \"done\",\n tooltip: \"Mark as done\",\n icon: <CheckCircleIcon size={20} className=\"text-success-base\" />,\n onClick: actions.done.on,\n },\n {\n id: \"not-done\",\n tooltip: \"Mark as not done\",\n icon: <CheckCircleEmptyIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.done.off,\n },\n ],\n read: [\n {\n id: \"unread\",\n tooltip: \"Mark as unread\",\n icon: <UnreadIcon size={20} className=\"text-primary-600-variant-1\" />,\n onClick: actions.read.on,\n },\n {\n id: \"read\",\n tooltip: \"Mark as read\",\n icon: <ReadIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.read.off,\n },\n ],\n };\n\n const densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }> = [\n {\n value: \"normal\",\n tooltip: \"Normal density\",\n icon: <NormalDensityIcon size={20} />,\n },\n {\n value: \"compact\",\n tooltip: \"Compact density\",\n icon: <CompactDensityIcon size={20} />,\n },\n ];\n\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all */}\n <Checkbox\n checked={isAllSelected}\n indeterminate={isPartiallySelected}\n onChange={handleSelectAll}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n indeterminateIcon={<MinusIcon size={12} className=\"text-neutral-900\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n >\n {label}\n </Checkbox>\n\n {/* Bulk actions */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\">\n {selectedItems > 0 && (\n <>\n {Object.entries(actionGroups).map(([groupKey, actions]) => (\n <div key={groupKey} className=\"flex items-center gap-2 px-1\">\n {actions.map((action) => (\n <InfoTooltip\n key={action.id}\n content={action.tooltip}\n className=\"border-black\"\n >\n <IconButton\n className=\"h-7 w-7 p-0\"\n onClick={action.onClick}\n icon={action.icon}\n />\n </InfoTooltip>\n ))}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Density */}\n <div className=\"flex items-center gap-2\">\n {densityOptions.map(({ value, tooltip, icon }) => {\n const isActive = density === value;\n\n return (\n <InfoTooltip key={value} content={tooltip}>\n <IconButton\n className={cn(\n \"h-7 w-7 p-0 text-neutral-900\",\n isActive && \"bg-white-variant-4\"\n )}\n onClick={() => changeDensity(value)}\n icon={icon}\n aria-pressed={isActive}\n />\n </InfoTooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cloneElement, type ComponentType, type ReactElement } from \"react\";\n\nimport { tv } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport {\n CheckCircleIcon,\n FireIcon,\n InsightIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\nconst filterButtonStyles = tv({\n slots: {\n root: \"inline-flex w-fit items-center gap-1 rounded-full border px-2 py-1 transition-colors\",\n label: \"flex shrink-0 items-center gap-1 text-xs whitespace-nowrap\",\n },\n variants: {\n selected: {\n false: {\n root: \"border-neutral-300 bg-white hover:border-neutral-500-variant-4 hover:bg-neutral-100\",\n label:\n \"font-semibold text-neutral-800 opacity-80 group-hover:opacity-100\",\n },\n true: {\n root: \"border-primary-400 bg-primary-light hover:border-primary-400\",\n label: \"font-semibold text-neutral-900\",\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst FILTER_BUTTON_META = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n iconColor: \"text-tertiary-500\",\n },\n unread: {\n icon: UnreadIcon,\n label: \"Unread\",\n iconColor: \"text-primary-500\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insights\",\n iconColor: \"text-primary-600\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n iconColor: \"text-success-base\",\n },\n} as const;\n\ntype FilterButtonVariant = keyof typeof FILTER_BUTTON_META | \"custom\";\n\ntype FilterButtonClassNames = Partial<{\n root: string;\n icon: string;\n label: string;\n count: string;\n}>;\n\nexport type FilterButtonProps = Omit<ButtonProps, \"children\" | \"className\"> & {\n variant?: FilterButtonVariant;\n label?: string;\n count?: number;\n selected?: boolean;\n icon?: ReactElement<IconProps>;\n classNames?: FilterButtonClassNames;\n};\n\nfunction renderIcon(\n Icon: ReactElement<IconProps> | ComponentType<IconProps>,\n className: string\n) {\n if (typeof Icon === \"function\") {\n return <Icon size={20} className={className} />;\n }\n\n return cloneElement(Icon, {\n size: Icon.props.size ?? 20,\n className: cn(className, Icon.props.className),\n });\n}\n\nexport function FilterButton({\n variant = \"custom\",\n label,\n count,\n selected = false,\n icon,\n classNames,\n disabled,\n ...props\n}: FilterButtonProps) {\n const isDisabled = Boolean(disabled);\n\n const styles = filterButtonStyles({\n selected: !isDisabled && selected,\n });\n\n const meta = variant !== \"custom\" ? FILTER_BUTTON_META[variant] : undefined;\n\n const resolvedIcon = icon ?? meta?.icon;\n const resolvedLabel = label ?? meta?.label;\n\n const iconColor = isDisabled\n ? \"text-neutral-400\"\n : selected && meta?.iconColor\n ? meta.iconColor\n : \"text-neutral-900 opacity-60 group-hover:opacity-80\";\n\n return (\n <Button\n {...props}\n disabled={disabled}\n aria-label={props[\"aria-label\"] ?? resolvedLabel}\n className={cn(\n \"group\",\n styles.root(),\n isDisabled && \"border-neutral-300 bg-white hover:border-neutral-300\",\n classNames?.root\n )}\n >\n {resolvedIcon && (\n <span className={cn(\"flex items-center\", classNames?.icon)}>\n {renderIcon(resolvedIcon, cn(\"shrink-0\", iconColor))}\n </span>\n )}\n\n {resolvedLabel && (\n <span\n className={cn(\n styles.label(),\n isDisabled && \"font-medium text-neutral-400\",\n classNames?.label\n )}\n >\n <span>{resolvedLabel}</span>\n\n {typeof count === \"number\" && count > 0 && (\n <span\n aria-label={`${count} items`}\n className={cn(\"font-medium\", classNames?.count)}\n >\n ({count})\n </span>\n )}\n </span>\n )}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\ntype IconCountButtonOrientation = \"vertical\" | \"horizontal\";\n\nexport type IconCountButtonSkeletonProps = {\n orientation?: IconCountButtonOrientation;\n className?: string;\n};\n\nexport function IconCountButtonSkeleton({\n orientation = \"vertical\",\n className,\n}: IconCountButtonSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <div\n className={cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\",\n className\n )}\n >\n <Skeleton className=\"size-8 rounded-full\" />\n\n <div\n className={cn(\"flex items-center gap-1\", isVertical && \"text-[9px]\")}\n >\n <Skeleton className={cn(\"h-3\", isVertical ? \"w-10\" : \"w-14\")} />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nconst iconCountButtonStyles = tv({\n slots: {\n root: \"flex w-fit items-center\",\n bubble:\n \"flex size-8 items-center justify-center rounded-full border-[1.5px] transition-opacity hover:opacity-70\",\n label: \"flex items-center gap-1 transition-colors\",\n count: \"font-normal\",\n icon: \"\",\n },\n variants: {\n variant: {\n primary: {},\n secondary: {},\n minimal: {\n bubble: \"border-none text-primary-500\",\n label: \"text-primary-500\",\n },\n },\n status: {\n active: {},\n inactive: {},\n },\n orientation: {\n vertical: {\n root: \"flex-col gap-1\",\n label: \"text-[9px] font-semibold\",\n },\n horizontal: {\n root: \"flex-row gap-2\",\n label: \"text-xs font-semibold\",\n },\n },\n },\n compoundVariants: [\n // Primary - Active\n {\n variant: \"primary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n },\n },\n // Primary - Inactive\n {\n variant: \"primary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"opacity-60\",\n icon: \"opacity-50 grayscale\",\n },\n },\n // Secondary - Active\n {\n variant: \"secondary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n icon: \"text-success-base\",\n },\n },\n // Secondary - Inactive\n {\n variant: \"secondary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"text-neutral-900\",\n },\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n orientation: \"vertical\",\n status: \"active\",\n },\n});\n\ntype IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;\n\ntype IconCountButtonClassNames = Partial<{\n root: string;\n bubble: string;\n label: string;\n count: string;\n}>;\n\nexport type IconCountButtonProps = IconCountButtonVariant &\n Omit<ButtonProps, \"children\" | \"className\"> & {\n icon: ReactElement<IconProps>;\n label: string;\n count?: number;\n alwaysShowCount?: boolean;\n classNames?: IconCountButtonClassNames;\n };\n\nexport function IconCountButton({\n icon,\n label,\n count,\n variant = \"primary\",\n orientation = \"vertical\",\n status = \"active\",\n alwaysShowCount = false,\n classNames,\n ...props\n}: IconCountButtonProps) {\n const styles = iconCountButtonStyles({ variant, orientation, status });\n\n function formatCount(count: number, max = 99): string {\n return count > max ? `${max}+` : String(count);\n }\n\n return (\n <Button {...props} className={cn(styles.root(), classNames?.root)}>\n <div className={cn(styles.bubble(), classNames?.bubble)}>\n {cloneElement(icon, {\n size: icon.props.size ?? 20,\n className: cn(styles.icon(), icon.props.className),\n })}\n </div>\n\n <div className={cn(styles.label(), classNames?.label)}>\n <span>{label}</span>\n {typeof count === \"number\" &&\n count > 0 &&\n (alwaysShowCount || status === \"active\") && (\n <span\n aria-label={`${count} items`}\n className={cn(styles.count(), classNames?.count)}\n >\n ({formatCount(count)})\n </span>\n )}\n </div>\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport {\n DropdownMenu,\n type DropdownMenuItemProps,\n type DropdownMenuProps,\n} from \"@components/dropdown-menu/dropdown-menu\";\nimport { type IconProps } from \"@icons/index\";\n\ntype ActionMenuProps = DropdownMenuProps;\n\ntype ActionMenuItemProps = DropdownMenuItemProps & {\n icon?: ReactElement<IconProps>;\n label: string;\n selected?: boolean;\n};\n\nexport function ActionMenuItem({\n icon,\n label,\n className,\n selected,\n ...props\n}: ActionMenuItemProps) {\n return (\n <Button\n className={cn(\n \"flex items-center justify-start gap-2 bg-white px-3 py-2 hover:bg-neutral-100\",\n selected && \"bg-primary-500 text-white hover:bg-primary-bright\",\n className\n )}\n {...props}\n >\n {icon &&\n cloneElement(icon, {\n size: icon.props.size ?? 16,\n className: cn(\n selected ? \"text-white\" : \"text-neutral-600-variant-7\",\n icon.props.className\n ),\n })}\n <span\n className={cn(\n \"text-xs font-medium transition-colors\",\n selected ? \"text-white\" : \"text-neutral-900\"\n )}\n >\n {label}\n </span>\n </Button>\n );\n}\n\nexport function ActionMenu({\n trigger,\n children,\n className,\n ...props\n}: ActionMenuProps) {\n return (\n <DropdownMenu\n trigger={trigger}\n className={cn(\n \"mt-1 min-w-20 overflow-hidden rounded border border-neutral-400 bg-white p-0 shadow-lg\",\n className\n )}\n {...props}\n >\n {children}\n </DropdownMenu>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n formatDate,\n formatDateRange,\n generateCalendarDays,\n getMonthName,\n getWeekdays,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isToday,\n} from \"@utils/calendar\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Dropdown } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, CalendarIcon, CloseIcon } from \"@icons/index\";\n\ntype DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype DatePickerProps = {\n mode?: \"single\" | \"range\";\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: (date: Date | null | DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nfunction CalendarPanel({\n mode,\n selectedDate,\n selectedRange,\n onDateSelect,\n onRangeSelect,\n}: {\n mode: \"single\" | \"range\";\n selectedDate: Date | null;\n selectedRange: DateRange;\n onDateSelect: (date: Date) => void;\n onRangeSelect: (range: DateRange) => void;\n}) {\n const { close } = useDropdown();\n const today = useMemo(() => new Date(), []);\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const prevSelectedDateRef = useRef<Date | null>(selectedDate);\n const prevSelectedRangeRef = useRef<DateRange>(selectedRange);\n\n // Initialize to selected date/range or today\n const [currentMonth, setCurrentMonth] = useState(() => {\n const date =\n mode === \"single\"\n ? (selectedDate ?? today)\n : (selectedRange.startDate ?? selectedRange.endDate ?? today);\n return { year: date.getFullYear(), month: date.getMonth() };\n });\n\n // Update current month when selectedDate/selectedRange changes\n useEffect(() => {\n // Only update if the selected date/range actually changed\n const hasChanged =\n (mode === \"single\" &&\n selectedDate &&\n (!prevSelectedDateRef.current ||\n selectedDate.getTime() !== prevSelectedDateRef.current.getTime())) ||\n (mode === \"range\" &&\n (selectedRange.startDate?.getTime() !==\n prevSelectedRangeRef.current.startDate?.getTime() ||\n selectedRange.endDate?.getTime() !==\n prevSelectedRangeRef.current.endDate?.getTime()));\n\n if (hasChanged) {\n // Defer state update to avoid cascading renders\n queueMicrotask(() => {\n if (mode === \"single\" && selectedDate) {\n setCurrentMonth({\n year: selectedDate.getFullYear(),\n month: selectedDate.getMonth(),\n });\n } else if (mode === \"range\") {\n const date = selectedRange.startDate ?? selectedRange.endDate;\n if (date) {\n setCurrentMonth({\n year: date.getFullYear(),\n month: date.getMonth(),\n });\n }\n }\n });\n }\n\n // Update refs\n prevSelectedDateRef.current = selectedDate;\n prevSelectedRangeRef.current = selectedRange;\n }, [mode, selectedDate, selectedRange]);\n\n // Generate full calendar days array with previous/next month days\n const calendarDays = useMemo(() => {\n return generateCalendarDays(currentMonth.year, currentMonth.month);\n }, [currentMonth.year, currentMonth.month]);\n\n function handleDateClick(date: Date) {\n // If clicking a day from previous/next month, update currentMonth first\n const clickedMonth = date.getMonth();\n const clickedYear = date.getFullYear();\n\n if (\n clickedMonth !== currentMonth.month ||\n clickedYear !== currentMonth.year\n ) {\n setCurrentMonth({\n year: clickedYear,\n month: clickedMonth,\n });\n }\n\n if (mode === \"single\") {\n onDateSelect(date);\n close();\n } else {\n // Range mode\n const { startDate, endDate } = selectedRange;\n\n if (!startDate || endDate) {\n // No start date or range is complete - start a new range\n onRangeSelect({ startDate: date, endDate: null });\n // Don't close - wait for end date\n } else {\n // Start date exists, selecting end date\n if (isDateBefore(date, startDate)) {\n // Date is before start - make it the new start\n onRangeSelect({ startDate: date, endDate: null });\n } else {\n // Valid end date\n onRangeSelect({ startDate, endDate: date });\n close();\n }\n }\n }\n }\n\n function handlePrevMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 0) {\n return { year: prev.year - 1, month: 11 };\n }\n return { year: prev.year, month: prev.month - 1 };\n });\n }\n\n function handleNextMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 11) {\n return { year: prev.year + 1, month: 0 };\n }\n return { year: prev.year, month: prev.month + 1 };\n });\n }\n\n const weekdays = getWeekdays();\n\n return (\n <div className=\"mt-1 w-fit rounded-lg border border-neutral-400 bg-white p-2 shadow-lg\">\n {/* Header */}\n <div className=\"mb-4 flex items-center justify-between border-b border-neutral-400 pb-2\">\n <IconButton\n icon={<ArrowIcon direction=\"left\" size={20} />}\n onClick={handlePrevMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Previous month\"\n />\n <div className=\"text-[10px] font-bold text-neutral-900\">\n {getMonthName(currentMonth.month)} {currentMonth.year}\n </div>\n <IconButton\n icon={<ArrowIcon direction=\"right\" size={20} />}\n onClick={handleNextMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Next month\"\n />\n </div>\n\n {/* Weekdays */}\n <div className=\"mb-2 grid grid-cols-7\">\n {weekdays.map((day) => (\n <div\n key={day}\n className=\"flex items-center justify-center p-0.5 text-[9px] font-bold text-neutral-900\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7\">\n {calendarDays.map(({ day, date, isCurrentMonth }) => {\n const isTodayDate = isToday(date);\n\n // Single mode states\n const isSelectedSingle =\n mode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n\n // Range mode states\n const { startDate, endDate } = selectedRange;\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n\n // Determine preview range (hover state)\n let previewStart = startDate;\n let previewEnd = hoveredDate;\n\n // Only show preview if startDate exists, no endDate yet, and hovered date is after start\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n hoveredDate &&\n !isDateBefore(hoveredDate, startDate)\n ) {\n previewStart = startDate;\n previewEnd = hoveredDate;\n } else {\n previewStart = null;\n previewEnd = null;\n }\n\n const isInRange =\n mode === \"range\" &&\n (isDateInRange(date, startDate, endDate) ||\n isDateInRange(date, previewStart, previewEnd));\n\n // Visual state priority: start/end > selected (single) > inRange > today > base\n const isSelected = isSelectedSingle || isStart || isEnd;\n\n return (\n <Button\n key={`${date.getFullYear()}-${date.getMonth()}-${day}`}\n type=\"button\"\n onClick={() => handleDateClick(date)}\n onMouseEnter={() => {\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n !isDateBefore(date, startDate)\n ) {\n setHoveredDate(date);\n }\n }}\n onMouseLeave={() => {\n if (mode === \"range\") {\n setHoveredDate(null);\n }\n }}\n className=\"p-0.5\"\n aria-label={`Select ${formatDate(date)}`}\n aria-selected={isSelected || undefined}\n >\n <div\n className={cn(\n \"flex h-[26px] w-[26px] items-center justify-center rounded text-[9px] transition-colors\",\n // Start/End/Selected state (highest priority)\n isSelected &&\n \"bg-primary-500 font-semibold text-white-variant-1 hover:bg-primary-500\",\n // In-range state (between start and end, or in preview)\n isInRange &&\n !isSelected &&\n \"bg-primary-500/20 font-normal text-neutral-900 hover:bg-primary-500/30\",\n // Today state (only if not selected and not in range)\n isTodayDate &&\n !isSelected &&\n !isInRange &&\n \"border border-primary-500 bg-primary-500/15 font-bold hover:bg-primary-500 hover:text-white\",\n // Base styles (only if not selected and not in range)\n !isSelected &&\n !isInRange &&\n (isCurrentMonth\n ? \"text-neutral-900 hover:bg-neutral-300\"\n : \"text-neutral-600 hover:bg-neutral-200\")\n )}\n >\n {day}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction DatePickerTrigger({\n displayText,\n disabled,\n className,\n onClear,\n}: {\n displayText: string | null;\n disabled: boolean;\n className?: string;\n onClear: () => void;\n}) {\n const { close } = useDropdown();\n\n function handleClear() {\n onClear();\n close();\n }\n\n return (\n <Pressable\n disabled={disabled}\n className={cn(\n \"flex items-center justify-start gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1 text-left text-xs text-neutral-800 transition-colors hover:border-neutral-500\",\n displayText &&\n \"border-primary-400 hover:border-primary-500 hover:bg-primary-light\",\n className\n )}\n >\n <CalendarIcon size={20} className=\"text-primary-600\" />\n <span className=\"font-semibold\">Date</span>\n {displayText && (\n <>\n <span className=\"font-normal\">({displayText})</span>\n <StopPropagation>\n <IconButton\n icon={<CloseIcon size={16} />}\n onClick={handleClear}\n className=\"text-neutral-600 hover:opacity-70\"\n aria-label=\"Close\"\n />\n </StopPropagation>\n </>\n )}\n </Pressable>\n );\n}\n\nexport function DatePicker({\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n}: DatePickerProps) {\n // Single mode state\n const [internalValue, setInternalValue] = useState<Date | null>(\n mode === \"single\" && (defaultValue as Date | null | undefined)\n ? (defaultValue as Date | null)\n : null\n );\n\n // Range mode state\n const [internalRange, setInternalRange] = useState<DateRange>(() => {\n if (mode === \"range\" && defaultValue) {\n const range = defaultValue as DateRange;\n return {\n startDate: range.startDate ?? null,\n endDate: range.endDate ?? null,\n };\n }\n return { startDate: null, endDate: null };\n });\n\n const isControlled = value !== undefined;\n\n // Get current values based on mode\n const currentValue =\n mode === \"single\"\n ? isControlled\n ? ((value as Date | null | undefined) ?? null)\n : internalValue\n : null;\n\n const currentRange =\n mode === \"range\"\n ? isControlled\n ? ((value as DateRange | undefined) ?? {\n startDate: null,\n endDate: null,\n })\n : internalRange\n : { startDate: null, endDate: null };\n\n function handleDateSelect(date: Date | null) {\n if (mode === \"single\") {\n if (!isControlled) {\n setInternalValue(date);\n }\n onChange?.(date);\n }\n }\n\n function handleRangeSelect(range: DateRange) {\n if (mode === \"range\") {\n if (!isControlled) {\n setInternalRange(range);\n }\n onChange?.(range);\n }\n }\n\n function handleClear() {\n if (mode === \"single\") {\n handleDateSelect(null);\n } else {\n handleRangeSelect({ startDate: null, endDate: null });\n }\n }\n\n // Format display text\n const displayText =\n mode === \"single\"\n ? formatDate(currentValue)\n : formatDateRange(currentRange.startDate, currentRange.endDate);\n\n return (\n <>\n <Dropdown\n trigger={\n <DatePickerTrigger\n displayText={displayText}\n disabled={disabled}\n className={className}\n onClear={handleClear}\n />\n }\n disabled={disabled}\n >\n <CalendarPanel\n mode={mode}\n selectedDate={currentValue}\n selectedRange={currentRange}\n onDateSelect={handleDateSelect}\n onRangeSelect={handleRangeSelect}\n />\n </Dropdown>\n </>\n );\n}\n","export const EVENT_CARD_HEIGHT_SIZE = {\n normal: { style: \"h-[165px]\", value: 165 },\n compact: { style: \"h-[60px]\", value: 60 },\n};\n","import type { CSSProperties } from \"react\";\n\nimport { EVENT_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type EventCardSkeletonProps = {\n density?: Density;\n className?: string;\n style?: CSSProperties;\n};\n\nexport function EventCardSkeleton({\n density = \"normal\",\n className,\n style,\n}: EventCardSkeletonProps) {\n return (\n <Card\n className={cn(\n \"w-full rounded-lg bg-white-variant-5 p-4\",\n density === \"normal\"\n ? `${EVENT_CARD_HEIGHT_SIZE.normal.style}`\n : `${EVENT_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n\n <CardTitle className=\"flex h-5 items-center\">\n <Skeleton className=\"h-4 w-48\" />\n </CardTitle>\n\n <CardContent>\n <Skeleton className=\"my-1 h-4 w-full\" />\n <Skeleton className=\"my-1 h-4 w-3/4\" />\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-23 rounded-full\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n </div>\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n\n <div className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-32\" />\n </div>\n\n <div className=\"flex-1\" />\n\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { EVENT_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Avatar } from \"@patterns/avatar/avatar\";\nimport { StatusBadge } from \"@patterns/badges/status-badge\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n ExternalLinkIcon,\n FireIcon,\n} from \"@icons/index\";\n\nexport type EventStatusBadgeType = \"fire\" | \"insight\" | \"done\";\nexport type EventActionType = \"fire\" | \"done\" | \"link\";\n\ntype StatusBadgeConfig = {\n label?: string;\n onClick?: () => void;\n};\n\ntype ActionConfig = {\n onClick: () => void;\n};\n\nexport type EventStatusBadges = Partial<\n Record<EventStatusBadgeType, StatusBadgeConfig>\n>;\nexport type EventActions = Partial<Record<EventActionType, ActionConfig>>;\n\nexport type EventCardProps = {\n icon: ReactNode;\n sender: string;\n title: string;\n content: string;\n timestamp: string;\n workspace: string;\n\n read?: boolean;\n selected?: boolean;\n onSelect?: () => void;\n\n // Checkbox (bulk selection)\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n\n statusBadges?: EventStatusBadges;\n actions?: EventActions;\n\n // Density\n density?: Density;\n\n // Styles\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst EVENT_ACTION_CONFIG = {\n fire: {\n className: \"group\",\n icon: (\n <FireIcon\n size={20}\n className=\"text-neutral-600 group-hover:text-tertiary-500-variant-2\"\n />\n ),\n },\n done: {\n className: \"group relative flex items-center justify-center w-6 h-6\",\n icon: (\n <span className=\"contents\">\n <CheckCircleEmptyIcon\n size={24}\n className=\"block text-neutral-600-variant-1 group-hover:hidden\"\n />\n <CheckCircleIcon\n size={24}\n className=\"hidden text-success-base group-hover:block\"\n />\n </span>\n ),\n },\n link: {\n className: \"\",\n icon: <ExternalLinkIcon size={20} className=\"text-primary-500\" />,\n },\n} as const;\n\nfunction EventCheckbox({\n checked,\n onCheckedChange,\n}: {\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}) {\n return (\n <StopPropagation>\n <Checkbox\n checked={checked}\n onChange={onCheckedChange}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n />\n </StopPropagation>\n );\n}\n\nfunction EventStatusesList({\n statusBadges,\n density,\n}: {\n statusBadges: EventStatusBadges;\n density?: Density;\n}) {\n if (Object.keys(statusBadges).length === 0) return null;\n\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(statusBadges) as EventStatusBadgeType[]).map(\n (status) => {\n const config = statusBadges[status];\n if (!config) return null;\n\n return (\n <StatusBadge\n key={status}\n status={status}\n label={config.label}\n onAction={config.onClick}\n density={density}\n />\n );\n }\n )}\n </StopPropagation>\n </div>\n );\n}\n\nfunction EventActionsList({\n actions,\n className,\n}: {\n actions: EventActions;\n className?: string;\n}) {\n if (Object.keys(actions).length === 0) return null;\n\n return (\n <div className={cn(\"flex gap-2\", className)}>\n <StopPropagation>\n {(Object.keys(actions) as EventActionType[]).map((type) => {\n const action = actions[type];\n if (!action) return null;\n\n return (\n <IconButton\n key={type}\n {...EVENT_ACTION_CONFIG[type]}\n onClick={action.onClick}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nexport function EventCard({\n icon,\n sender,\n title,\n content,\n timestamp,\n workspace,\n read = false,\n selected = false,\n onSelect,\n checked = false,\n onCheckedChange,\n statusBadges = {},\n actions = {},\n density = \"normal\",\n className,\n style,\n}: EventCardProps) {\n return (\n <Card\n as={Pressable}\n onPress={onSelect}\n className={cn(\n \"w-full rounded-lg border-[1.5px] border-primary-400 bg-white-variant-5 p-4 hover:bg-primary-light\",\n read && \"border-neutral-400\",\n selected && \"border-primary-500 bg-primary-light\",\n density === \"normal\"\n ? `${EVENT_CARD_HEIGHT_SIZE.normal.style}`\n : `${EVENT_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <EventCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n {icon}\n\n <span\n className={cn(\n \"min-w-0 -translate-x-0.5 truncate text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n </span>\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n\n <CardTitle\n className={cn(\n \"line-clamp-1 text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {title}\n </CardTitle>\n\n <CardContent className=\"line-clamp-2 min-w-0 text-sm text-neutral-900\">\n {content}\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <EventStatusesList statusBadges={statusBadges} />\n\n <EventActionsList\n actions={actions}\n className=\"col-start-2 justify-self-end\"\n />\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <EventCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n {icon}\n\n <EventStatusesList\n statusBadges={statusBadges}\n density={density}\n />\n\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 text-sm font-bold whitespace-nowrap text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n <span className=\"truncate\">{sender}</span>\n <span className=\"shrink-0 text-sm text-neutral-500\">•</span>\n <span className=\"truncate\">{title}</span>\n </div>\n\n <div className=\"flex-1\" />\n\n <EventActionsList actions={actions} />\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import { FireIcon } from \"@icons/index\";\n\nexport type EventDetailPriorityProps = {\n priorityText: string;\n};\n\nexport function EventDetailPriority({\n priorityText,\n}: EventDetailPriorityProps) {\n return (\n <div className=\"sticky top-14 z-5 flex min-h-14 shrink-0 items-center gap-4 bg-tertiary-50 p-4\">\n <FireIcon size={32} className=\"text-tertiary-500-variant-2\" />\n <div className=\"py-1 text-xs leading-[1.2] font-normal text-neutral-800\">\n <span className=\"font-bold\">High Urgency:&nbsp;</span>\n {priorityText}\n </div>\n </div>\n );\n}\n","import { SummaryIcon } from \"@icons/index\";\n\nexport type EventDetailSummaryProps = {\n summary: string;\n};\n\nexport function EventDetailSummary({ summary }: EventDetailSummaryProps) {\n return (\n <div className=\"flex gap-2 rounded-lg bg-neutral-100-variant-3 p-4\">\n <SummaryIcon size={24} />\n <p className=\"text-sm leading-[1.3] font-normal text-neutral-800\">\n <span className=\"font-bold\">Summary:&nbsp;</span>\n {summary}\n </p>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { EventDetailPriority } from \"./event-detail-priority\";\nimport { EventDetailSummary } from \"./event-detail-summary\";\n\nexport type EventDetailContentHeaderProps = {\n summary?: string;\n priorityText?: string;\n className?: string;\n children: ReactNode;\n};\n\nexport function EventDetailContentHeader({\n summary,\n priorityText,\n children,\n className,\n}: EventDetailContentHeaderProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {priorityText != null && (\n <EventDetailPriority priorityText={priorityText} />\n )}\n <div className=\"flex flex-col gap-4 p-4\">\n {summary != null && <EventDetailSummary summary={summary} />}\n {children}\n </div>\n </div>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentCalendarProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentCalendar({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentCalendarProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentEmailProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentEmail({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentEmailProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { useCallback, useRef, type ReactNode } from \"react\";\n\nimport { Button } from \"@primitives/button\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n useAccordion,\n} from \"@components/accordion\";\nimport { RichContent } from \"@components/rich-content\";\nimport { Avatar } from \"@patterns/avatar\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, ExternalLinkIcon, FireIcon } from \"@icons/index\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type {\n Message,\n MessageDetail,\n MessageGroup,\n MessageReply,\n} from \"./types/event-detail.types\";\n\nexport type EventDetailContentMessageProps = {\n detail: MessageDetail;\n className?: string;\n};\n\ntype MessageGroupWithPriority = MessageGroup & {\n totalPriorityGroups?: number;\n priorityIndex?: number;\n};\n\nfunction DateSeparator({ timestamp }: { timestamp: string }) {\n return (\n <div className=\"flex items-center gap-4\">\n <div className=\"h-px flex-1 bg-neutral-300-variant-2\" />\n <span className=\"rounded-full border border-neutral-300-variant-2 px-3 py-1 text-xs font-semibold text-neutral-600\">\n {timestamp}\n </span>\n <div className=\"h-px flex-1 bg-neutral-300-variant-2\" />\n </div>\n );\n}\n\nfunction MessageActions({\n isPriority,\n onExternalLinkClick,\n onMarkAsFireClick,\n}: {\n isPriority?: boolean;\n onExternalLinkClick?: () => void;\n onMarkAsFireClick?: () => void;\n}) {\n return (\n <>\n {onExternalLinkClick && (\n <IconButton\n icon={<ExternalLinkIcon size={16} />}\n className=\"inline-flex shrink-0 items-center text-neutral-600 transition-colors hover:text-primary-500\"\n title=\"Open in Slack\"\n aria-label=\"Open in Slack\"\n onClick={onExternalLinkClick}\n />\n )}\n {onMarkAsFireClick && !isPriority && (\n <IconButton\n icon={<FireIcon size={16} />}\n className=\"inline-flex shrink-0 items-center text-neutral-600 transition-colors hover:text-tertiary-500\"\n title=\"Mark as Fire\"\n aria-label=\"Mark as Fire\"\n onClick={onMarkAsFireClick}\n />\n )}\n </>\n );\n}\n\nfunction MessageContent({ content }: { content: string }) {\n return (\n <div className=\"text-sm leading-relaxed text-neutral-900\">\n <RichContent content={content} />\n </div>\n );\n}\n\nfunction RepliesTrigger({\n replyId,\n replyCount,\n}: {\n replyId: string;\n replyCount: number;\n}) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(`replies-${replyId}`);\n\n return (\n <div className=\"flex items-center gap-2 p-1.5 px-2 text-xs font-medium text-neutral-600\">\n <ArrowIcon\n direction={isOpen ? \"up\" : \"down\"}\n size={12}\n className=\"transition-transform\"\n />\n <span>\n {replyCount} {replyCount === 1 ? \"reply\" : \"replies\"}\n </span>\n </div>\n );\n}\n\nfunction MessageReplies({ replies }: { replies: MessageReply[] }) {\n if (!replies || replies.length === 0) return null;\n\n const replyId = replies[0]?.id;\n if (!replyId) return null;\n\n return (\n <Accordion type=\"multiple\" defaultValue={[`replies-${replyId}`]}>\n <AccordionItem\n value={`replies-${replyId}`}\n className=\"flex flex-col gap-2\"\n >\n <AccordionTrigger\n value={`replies-${replyId}`}\n className=\"flex items-center justify-between rounded transition-colors hover:bg-neutral-50\"\n >\n <RepliesTrigger replyId={replyId} replyCount={replies.length} />\n </AccordionTrigger>\n <AccordionContent\n value={`replies-${replyId}`}\n className=\"ml-3 flex flex-col gap-4 border-l-2 border-neutral-500 p-4 pr-0\"\n >\n {replies.map((reply) => (\n <div key={reply.id} className=\"flex gap-3\">\n <Avatar name={reply.author} size=\"lg\" />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-semibold text-neutral-900\">\n {reply.author}\n </div>\n <div className=\"text-xs font-medium text-neutral-700\">\n {reply.timestamp}\n </div>\n </div>\n <MessageContent content={reply.body} />\n </div>\n </div>\n ))}\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n );\n}\n\nfunction MessageItem({\n message,\n isPriority = false,\n}: {\n message: Message;\n isPriority?: boolean;\n}) {\n return (\n <div className=\"transition-colors\">\n <div className=\"flex gap-3\">\n <Avatar name={message.author} size={isPriority ? \"xl\" : \"lg\"} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-sm font-semibold text-neutral-900\">\n {message.author}\n </div>\n <div className=\"text-xs font-medium text-neutral-700\">\n {message.timestamp}\n </div>\n <MessageActions\n isPriority={isPriority}\n onExternalLinkClick={message.onExternalLinkClick}\n onMarkAsFireClick={message.onMarkAsFireClick}\n />\n </div>\n <MessageContent content={message.body} />\n </div>\n {message.replies && message.replies.length > 0 && (\n <MessageReplies replies={message.replies} />\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction PriorityNavigation({\n priorityIndex,\n priorityTotal,\n onPreviousPriority,\n onNextPriority,\n}: {\n priorityIndex?: number;\n priorityTotal?: number;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n}) {\n if (!priorityIndex || !priorityTotal || priorityTotal <= 1) return null;\n\n const showNext = priorityIndex > 1;\n const showPrevious = priorityIndex < priorityTotal;\n\n if (!showPrevious && !showNext) return null;\n\n return (\n <div className=\"mb-3 flex justify-center px-2\">\n <div className=\"flex w-full items-center justify-center gap-4\">\n <div className=\"flex flex-1 justify-end\">\n {showPrevious && (\n <Button\n className=\"flex gap-1.5 rounded-md border border-tertiary-500 bg-white px-2.5 py-1.5 text-xs font-medium text-tertiary-500 transition-colors hover:bg-tertiary-50\"\n aria-label=\"Previous Fire\"\n onClick={onPreviousPriority}\n >\n <ArrowIcon direction=\"left\" size={14} />\n <span>Previous Fire</span>\n </Button>\n )}\n </div>\n <span className=\"text-xs font-medium text-neutral-700\">\n {priorityIndex} / {priorityTotal}\n </span>\n <div className=\"flex-1\">\n {showNext && (\n <Button\n className=\"flex gap-1.5 rounded-md border border-tertiary-500 bg-white px-2.5 py-1.5 text-xs font-medium text-tertiary-500 transition-colors hover:bg-tertiary-50\"\n aria-label=\"Next Fire\"\n onClick={onNextPriority}\n >\n <span>Next Fire</span>\n <ArrowIcon direction=\"right\" size={14} />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction PriorityGroupHeader({\n title,\n onMarkAsNotFireClick,\n}: {\n title?: string;\n onMarkAsNotFireClick?: () => void;\n}) {\n if (!title) return null;\n\n return (\n <div className=\"border-b border-neutral-200 pb-3\">\n <div className=\"flex items-center gap-2\">\n <IconButton\n icon={<FireIcon size={16} className=\"text-tertiary-500\" />}\n className=\"relative flex h-6 w-6 shrink-0 items-center justify-center rounded-full border border-tertiary-400 bg-tertiary-50 transition-opacity hover:opacity-70\"\n aria-label=\"Priority\"\n onClick={onMarkAsNotFireClick}\n />\n <h4 className=\"text-tertiary-700 text-xs font-semibold tracking-wide uppercase\">\n {title}\n </h4>\n </div>\n </div>\n );\n}\n\nfunction PriorityGroup({\n group,\n children,\n onPreviousPriority,\n onNextPriority,\n onMarkAsNotFireClick,\n}: {\n group: MessageGroupWithPriority;\n children: ReactNode;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n onMarkAsNotFireClick?: () => void;\n}) {\n if (!group.isPriority) {\n return <>{children}</>;\n }\n\n return (\n <div className=\"relative scroll-mt-[180px]\" data-group-id={group.id}>\n <PriorityNavigation\n priorityIndex={group.priorityIndex}\n priorityTotal={group.totalPriorityGroups}\n onPreviousPriority={onPreviousPriority}\n onNextPriority={onNextPriority}\n />\n <div className=\"relative flex flex-col gap-4 rounded-r-lg border-l-[3px] border-tertiary-500 bg-tertiary-50-alpha-50 p-4\">\n <PriorityGroupHeader\n title={group.priorityText}\n onMarkAsNotFireClick={onMarkAsNotFireClick}\n />\n {children}\n </div>\n </div>\n );\n}\n\nfunction MessageGroup({\n group,\n onPreviousPriority,\n onNextPriority,\n}: {\n group: MessageGroupWithPriority;\n onPreviousPriority?: () => void;\n onNextPriority?: () => void;\n}) {\n return (\n <div className=\"flex flex-col gap-4\">\n <DateSeparator timestamp={group.timestamp} />\n <PriorityGroup\n group={group}\n onPreviousPriority={onPreviousPriority}\n onNextPriority={onNextPriority}\n onMarkAsNotFireClick={group.messages[0]?.onMarkAsFireClick}\n >\n {group.messages.map((message) => (\n <MessageItem\n key={message.id}\n message={message}\n isPriority={group.isPriority}\n />\n ))}\n </PriorityGroup>\n </div>\n );\n}\n\nexport function EventDetailContentMessage({\n detail: { groups, summary, priorityText },\n className,\n}: EventDetailContentMessageProps) {\n const totalPriorityGroups = groups.filter((g) => g.isPriority).length;\n const containerRef = useRef<HTMLDivElement>(null);\n\n let counter = totalPriorityGroups;\n\n const scrollToPriorityGroup = useCallback(\n (targetIndex: number) => {\n if (!containerRef.current) return;\n\n const priorityGroups = Array.from(\n containerRef.current.querySelectorAll<HTMLElement>(\n '[data-group-id][class*=\"scroll-mt\"]'\n )\n );\n\n // Filter to only priority groups (those with data-group-id)\n const validPriorityGroups = priorityGroups.filter((el) => {\n const groupId = el.getAttribute(\"data-group-id\");\n if (!groupId) return false;\n // Find the corresponding group to check if it's priority\n const group = groups.find((g) => g.id === groupId);\n return group?.isPriority;\n });\n\n if (\n targetIndex >= 1 &&\n targetIndex <= totalPriorityGroups &&\n validPriorityGroups.length === totalPriorityGroups\n ) {\n // Convert priorityIndex to array index\n // priorityIndex: totalPriorityGroups (first) -> 1 (last)\n // arrayIndex: 0 (first) -> totalPriorityGroups - 1 (last)\n const arrayIndex = totalPriorityGroups - targetIndex;\n const targetGroup = validPriorityGroups[arrayIndex];\n if (targetGroup) {\n targetGroup.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n }\n },\n [groups, totalPriorityGroups]\n );\n\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <div ref={containerRef} className=\"flex flex-col gap-4\">\n {groups.map((group) => {\n const priorityIndex = group.isPriority ? counter-- : 0;\n\n const handlePreviousPriority = priorityIndex\n ? () => {\n // Previous Fire = go to earlier fire (higher index number)\n const prevIndex = priorityIndex + 1;\n if (prevIndex <= totalPriorityGroups) {\n scrollToPriorityGroup(prevIndex);\n }\n }\n : undefined;\n\n const handleNextPriority = priorityIndex\n ? () => {\n // Next Fire = go to later fire (lower index number)\n const nextIndex = priorityIndex - 1;\n if (nextIndex >= 1) {\n scrollToPriorityGroup(nextIndex);\n }\n }\n : undefined;\n\n return (\n <MessageGroup\n key={group.id}\n group={{ ...group, priorityIndex, totalPriorityGroups }}\n onPreviousPriority={handlePreviousPriority}\n onNextPriority={handleNextPriority}\n />\n );\n })}\n </div>\n </EventDetailContentHeader>\n );\n}\n","import { RichContent } from \"@components/rich-content/rich-content\";\n\nimport { EventDetailContentHeader } from \"./event-detail-content-header\";\nimport type { EmailDetail } from \"./types/event-detail.types\";\n\nexport type EventDetailContentTicketProps = {\n detail: EmailDetail;\n className?: string;\n};\n\nexport function EventDetailContentTicket({\n detail: { summary, body, priorityText },\n className,\n}: EventDetailContentTicketProps) {\n return (\n <EventDetailContentHeader\n summary={summary}\n priorityText={priorityText}\n className={className}\n >\n <RichContent content={body} />\n </EventDetailContentHeader>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { formatTimestamp } from \"@utils/timestamp\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, FireIcon, MoreIcon, type IconProps } from \"@icons/index\";\n\nexport type EventDetailHeaderProps = {\n icon: ReactElement<IconProps>;\n subject: string;\n from: string;\n timestamp: string;\n isPriority: boolean;\n isOpen: boolean;\n isFirstEvent: boolean;\n isSingleEvent: boolean;\n className?: string;\n};\n\nexport function EventDetailHeader({\n icon,\n subject,\n from,\n timestamp,\n isPriority,\n isOpen,\n isFirstEvent,\n isSingleEvent,\n className,\n}: EventDetailHeaderProps) {\n return (\n <div\n className={cn(\n \"flex h-14 w-full items-center bg-white px-4 py-2\",\n className\n )}\n data-priority={isPriority}\n >\n <div className=\"flex w-full items-center gap-4\">\n {isFirstEvent && (\n <IconButton\n icon={\n <ArrowIcon\n direction=\"left\"\n size={24}\n className=\"text-neutral-700\"\n />\n }\n aria-label=\"Go back\"\n className=\"rounded p-1 hover:bg-neutral-100 md:hidden\"\n />\n )}\n <div className=\"relative shrink-0\">\n <div className=\"relative flex items-center justify-center\">\n {cloneElement(icon, { size: 36 })}\n {!isOpen && isPriority && (\n <FireIcon\n size={16}\n className=\"absolute right-[-12px] bottom-0 text-tertiary-500-variant-2\"\n />\n )}\n </div>\n </div>\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"line-clamp-1 truncate text-sm leading-[1.3] font-bold text-neutral-900\">\n {from}\n </h3>\n <div className=\"line-clamp-1 text-sm leading-[1.3] font-normal text-neutral-900\">\n {subject}\n </div>\n </div>\n <div className=\"text-right text-xs leading-[1.2] font-semibold tracking-[0.12px] whitespace-nowrap text-neutral-800\">\n {formatTimestamp(timestamp)}\n </div>\n <div className=\"flex items-center gap-2\">\n {!isSingleEvent && (\n <IconButton\n icon={\n <ArrowIcon\n size={24}\n className=\"text-neutral-700\"\n direction={isOpen ? \"up\" : \"down\"}\n />\n }\n aria-label=\"Toggle event\"\n className=\"rounded p-1 hover:bg-neutral-100\"\n />\n )}\n {isFirstEvent && (\n <IconButton\n icon={<MoreIcon size={24} className=\"text-neutral-700\" />}\n aria-label=\"Close\"\n className=\"rounded p-1 hover:bg-neutral-100 md:hidden\"\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type EventDetailSkeletonProps = {\n className?: string;\n};\n\nexport function EventDetailSkeleton({ className }: EventDetailSkeletonProps) {\n return (\n <div className={cn(\"w-full\", className)}>\n <EventDetailHeaderSkeleton />\n <EventDetailContentSkeleton />\n </div>\n );\n}\n\ntype EventDetailHeaderSkeletonProps = {\n className?: string;\n};\n\nfunction EventDetailHeaderSkeleton({\n className,\n}: EventDetailHeaderSkeletonProps) {\n return (\n <div\n className={cn(\n \"flex h-14 w-full items-center bg-white px-4 py-2\",\n className\n )}\n >\n <div className=\"flex w-full items-center gap-4\">\n <Skeleton className=\"h-9 w-9 rounded-full\" />\n <div className=\"min-w-0 flex-1 space-y-2\">\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-9/12\" />\n </div>\n <Skeleton className=\"h-3 w-14\" />\n </div>\n </div>\n );\n}\n\nfunction EventDetailContentSkeleton() {\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex flex-col gap-4 p-4\">\n <div className=\"flex gap-2 rounded-lg bg-neutral-100-variant-3 p-4\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-3 w-6/12\" />\n <Skeleton className=\"h-3 w-10/12\" />\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-7/12\" />\n </div>\n </div>\n <div className=\"space-y-3\">\n <Skeleton className=\"h-3 w-2/12\" />\n <Skeleton className=\"h-3 w-11/12\" />\n <Skeleton className=\"h-3 w-10/12\" />\n <Skeleton className=\"h-3 w-9/12\" />\n <Skeleton className=\"h-3 w-4/12\" />\n <div className=\"h-3 w-full\" />\n <Skeleton className=\"h-3 w-3/12\" />\n <Skeleton className=\"h-3 w-11/12\" />\n <Skeleton className=\"h-3 w-6/12\" />\n <Skeleton className=\"h-3 w-7/12\" />\n <Skeleton className=\"h-3 w-8/12\" />\n <div className=\"h-3 w-full\" />\n <Skeleton className=\"h-3 w-5/12\" />\n <Skeleton className=\"h-3 w-4/12\" />\n </div>\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@components/accordion\";\n\nimport { EventDetailContentCalendar } from \"./event-detail-content-calendar\";\nimport { EventDetailContentEmail } from \"./event-detail-content-email\";\nimport { EventDetailContentMessage } from \"./event-detail-content-message\";\nimport { EventDetailContentTicket } from \"./event-detail-content-ticket\";\nimport { EventDetailHeader } from \"./event-detail-header\";\nimport type { EventDetailItem } from \"./types/event-detail.types\";\n\nexport type EventDetailProps = {\n events: EventDetailItem[];\n};\n\nconst eventContentRenderers = {\n email: (event: Extract<EventDetailItem, { type: \"email\" }>) => (\n <EventDetailContentEmail detail={event.detail} />\n ),\n message: (event: Extract<EventDetailItem, { type: \"message\" }>) => (\n <EventDetailContentMessage detail={event.detail} />\n ),\n ticket: (event: Extract<EventDetailItem, { type: \"ticket\" }>) => (\n <EventDetailContentTicket detail={event.detail} />\n ),\n calendar: (event: Extract<EventDetailItem, { type: \"calendar\" }>) => (\n <EventDetailContentCalendar detail={event.detail} />\n ),\n};\n\nfunction renderEventContent<T extends EventDetailItem[\"type\"]>(\n event: Extract<EventDetailItem, { type: T }>\n) {\n return eventContentRenderers[event.type](event as never);\n}\n\nfunction getEventValue(event: EventDetailItem, index: number) {\n return event.id ?? `${event.type}-${event.timestamp}-${index}`;\n}\n\nexport function EventDetail({ events }: EventDetailProps) {\n if (events.length === 0) return null;\n\n if (events.length === 1) {\n const event = events[0];\n\n return (\n <div className=\"w-full\">\n <EventDetailHeader\n icon={event.icon}\n subject={event.subject}\n from={event.from}\n timestamp={event.timestamp}\n isPriority={event.isPriority}\n isOpen\n isFirstEvent\n isSingleEvent\n className=\"sticky top-0 z-10 border-b border-neutral-400\"\n />\n {renderEventContent(event)}\n </div>\n );\n }\n\n const defaultValue = getEventValue(events[0], 0);\n\n return (\n <Accordion defaultValue={defaultValue}>\n {({ openItems }) => (\n <>\n {events.map((event, index) => {\n const value = getEventValue(event, index);\n const isOpen = openItems.has(value);\n\n return (\n <AccordionItem key={value} value={value}>\n <AccordionTrigger\n value={value}\n className={cn(\n \"sticky top-0 z-10\",\n index > 0 && \"border-y border-neutral-400\"\n )}\n >\n <EventDetailHeader\n icon={event.icon}\n subject={event.subject}\n from={event.from}\n timestamp={event.timestamp}\n isPriority={event.isPriority}\n isFirstEvent={index === 0}\n isSingleEvent={false}\n isOpen={isOpen}\n />\n </AccordionTrigger>\n\n <AccordionContent value={value}>\n {renderEventContent(event)}\n </AccordionContent>\n </AccordionItem>\n );\n })}\n </>\n )}\n </Accordion>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type FilterBarSkeletonProps = {\n itemCount?: number;\n className?: string;\n};\n\nexport function FilterBarSkeleton({\n itemCount = 3,\n className,\n}: FilterBarSkeletonProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <FilterChipSkeleton key={index} />\n ))}\n </div>\n );\n}\n\nfunction FilterChipSkeleton() {\n return (\n <div className=\"flex items-center gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1\">\n <Skeleton className=\"m-0.5 size-4 rounded-full\" />\n <Skeleton className=\"h-3 w-15\" />\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport type { FilterButtonProps } from \"@patterns/buttons/filter-button/filter-button\";\n\ntype FilterBarProps = {\n children: ReactElement<FilterButtonProps>[];\n className?: string;\n};\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children.map((child, index) => cloneElement(child, { key: index }))}\n </div>\n );\n}\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\n\nconst dividerStyles = tv({\n base: \"bg-neutral-400-variant-4\",\n variants: {\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"h-full w-px\",\n },\n inset: {\n none: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n /* Horizontal */\n { orientation: \"horizontal\", inset: \"sm\", class: \"mx-2\" },\n { orientation: \"horizontal\", inset: \"md\", class: \"mx-4\" },\n { orientation: \"horizontal\", inset: \"lg\", class: \"mx-6\" },\n /* Vertical */\n { orientation: \"vertical\", inset: \"sm\", class: \"my-2\" },\n { orientation: \"vertical\", inset: \"md\", class: \"my-4\" },\n { orientation: \"vertical\", inset: \"lg\", class: \"my-6\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n inset: \"none\",\n },\n});\n\ntype DividerVariants = VariantProps<typeof dividerStyles>;\n\ntype DividerProps = DividerVariants & {\n className?: string;\n};\n\nexport function Divider({ className, ...variants }: DividerProps) {\n return <div className={cn(dividerStyles(variants), className)} />;\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\nimport { Divider } from \"@patterns/layout/divider\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\nexport type IntegrationBarSkeletonProps = {\n orientation?: IntegrationBarOrientation;\n itemCount?: number;\n className?: string;\n};\n\nexport function IntegrationBarSkeleton({\n orientation = \"vertical\",\n itemCount = 3,\n className,\n}: IntegrationBarSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n const containerClasses = cn(\n \"size-full\",\n isVertical ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n );\n\n const gridClasses = cn(\n \"grid h-full w-full place-items-center gap-4\",\n isVertical ? \"grid-cols-1\" : \"auto-cols-max grid-flow-col\",\n className\n );\n\n const itemClasses = cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\"\n );\n\n const labelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-12 text-[9px]\" : \"w-16 text-xs\"\n );\n\n const addLabelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-8 text-[9px]\" : \"w-10 text-xs\"\n );\n\n return (\n <div className={containerClasses}>\n <div className={gridClasses}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <div key={index} className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={labelSkeletonClasses} />\n </div>\n ))}\n\n <Divider orientation={isVertical ? \"horizontal\" : \"vertical\"} />\n\n <div className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={addLabelSkeletonClasses} />\n </div>\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport {\n IconCountButton,\n type IconCountButtonProps,\n} from \"@patterns/buttons/icon-count-button/icon-count-button\";\nimport { Divider } from \"@patterns/layout/divider\";\nimport { AddIcon } from \"@icons/index\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\ntype IntegrationBarProps = {\n orientation?: IntegrationBarOrientation;\n children: ReactElement<IconCountButtonProps>[];\n onAddMore: () => void;\n className?: string;\n};\n\nexport function IntegrationBar({\n orientation = \"vertical\",\n children,\n onAddMore,\n className,\n}: IntegrationBarProps) {\n return (\n <div\n className={cn(\n \"size-full\",\n orientation === \"vertical\" ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n )}\n >\n <div\n className={cn(\n \"grid h-full w-full place-items-center gap-4\",\n orientation === \"vertical\"\n ? \"grid-cols-1\"\n : \"auto-cols-max grid-flow-col\",\n className\n )}\n >\n {children.map((child) => cloneElement(child, {}))}\n <Divider\n orientation={orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n />\n <IconCountButton\n icon={<AddIcon size={24} />}\n label=\"Add\"\n onClick={onAddMore}\n variant=\"minimal\"\n orientation={orientation}\n />\n </div>\n </div>\n );\n}\n","import { useState } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Input } from \"@primitives/input\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon, SearchIcon } from \"@icons/index\";\n\ntype SearchInputProps = {\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n onChange?: (value: string) => void;\n onClear?: () => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport function SearchInput({\n value,\n defaultValue,\n placeholder = \"Search...\",\n onChange,\n onClear,\n disabled = false,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n function handleChange(newValue: string) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n\n function handleClear() {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n onClear?.();\n }\n\n return (\n <fieldset\n role=\"search\"\n className={cn(\n \"flex h-8 min-w-0 items-center gap-1.5 rounded-full border border-neutral-500-variant-3 bg-white px-2 py-1\",\n disabled && \"pointer-events-none bg-neutral-200 opacity-70\",\n className\n )}\n disabled={disabled}\n >\n <SearchIcon size={20} className=\"text-neutral-700\" />\n\n <Input\n type=\"text\"\n value={currentValue}\n placeholder={placeholder}\n onChange={handleChange}\n className={cn(\n \"m-0 h-5 min-w-0 flex-1 border-0 p-0 text-xs text-neutral-800\",\n \"bg-transparent outline-none\",\n \"placeholder:text-neutral-700-alpha-60\",\n disabled && \"text-neutral-700-alpha-60\"\n )}\n />\n\n {hasValue && !disabled && (\n <IconButton\n type=\"button\"\n icon={<CloseIcon size={16} className=\"text-neutral-700\" />}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"rounded p-0 transition-opacity hover:opacity-70\"\n />\n )}\n </fieldset>\n );\n}\n"],"x_google_ignoreList":[6,7,8],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}