@shival99/z-ui 1.0.10 → 1.0.11
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.
|
@@ -1696,6 +1696,10 @@ class ZCalendarComponent {
|
|
|
1696
1696
|
this._dirty.set(true);
|
|
1697
1697
|
this._inputDisplayStart.set(this.displayValueStart());
|
|
1698
1698
|
this._inputDisplayEnd.set(this.displayValueEnd());
|
|
1699
|
+
if (!this.showOkButton()) {
|
|
1700
|
+
this._applyValue();
|
|
1701
|
+
this.close();
|
|
1702
|
+
}
|
|
1699
1703
|
return;
|
|
1700
1704
|
}
|
|
1701
1705
|
this._rangeStart.set(value.start);
|
|
@@ -1707,6 +1711,10 @@ class ZCalendarComponent {
|
|
|
1707
1711
|
this._dirty.set(true);
|
|
1708
1712
|
this._inputDisplayStart.set(this.displayValueStart());
|
|
1709
1713
|
this._inputDisplayEnd.set(this.displayValueEnd());
|
|
1714
|
+
if (!this.showOkButton()) {
|
|
1715
|
+
this._applyValue();
|
|
1716
|
+
this.close();
|
|
1717
|
+
}
|
|
1710
1718
|
}
|
|
1711
1719
|
onTodayClick() {
|
|
1712
1720
|
const now = new Date();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-calendar.mjs","sources":["../../../../libs/core-ui/components/z-calendar/z-calendar.utils.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.variants.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-day-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-month-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-quarter-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-year-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.html","../../../../libs/core-ui/components/z-calendar/shival99-z-ui-components-z-calendar.ts"],"sourcesContent":["import type {\n ZCalendarDay,\n ZCalendarGridOptions,\n ZDateRange,\n ZDayState,\n ZMonthState,\n ZQuarterState,\n ZQuickSelectPreset,\n ZRangeProperties,\n ZYearState,\n} from './z-calendar.types';\n\nexport const createDate = (year: number, month: number, day: number, hour = 0, minute = 0, second = 0): Date =>\n new Date(year, month, day, hour, minute, second);\n\nexport const cloneDate = (date: Date): Date => new Date(date.getTime());\n\nexport const getToday = (): Date => {\n const now = new Date();\n return createDate(now.getFullYear(), now.getMonth(), now.getDate());\n};\n\nexport const startOfDay = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const startOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), 1);\n\nexport const endOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const startOfYear = (date: Date): Date => createDate(date.getFullYear(), 0, 1);\n\nexport const addDays = (date: Date, days: number): Date => {\n const result = cloneDate(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const addMonths = (date: Date, months: number): Date => {\n const result = cloneDate(date);\n result.setMonth(result.getMonth() + months);\n return result;\n};\n\nexport const addYears = (date: Date, years: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(result.getFullYear() + years);\n return result;\n};\n\nexport const setMonth = (date: Date, month: number): Date => {\n const result = cloneDate(date);\n result.setMonth(month);\n return result;\n};\n\nexport const setYear = (date: Date, year: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(year);\n return result;\n};\n\nexport const setTime = (date: Date, hour: number, minute: number, second: number): Date => {\n const result = cloneDate(date);\n result.setHours(hour, minute, second, 0);\n return result;\n};\n\nexport const isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) {\n return false;\n }\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nexport const isSameMonth = (date1: Date, date2: Date): boolean =>\n date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth();\n\nexport const isSameYear = (date1: Date, date2: Date): boolean => date1.getFullYear() === date2.getFullYear();\n\nexport const isToday = (date: Date): boolean => isSameDay(date, new Date());\n\nexport const isBefore = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() < startOfDay(date2).getTime();\n\nexport const isAfter = (date1: Date, date2: Date): boolean => startOfDay(date1).getTime() > startOfDay(date2).getTime();\n\nexport const isBeforeOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() <= startOfDay(date2).getTime();\n\nexport const isAfterOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() >= startOfDay(date2).getTime();\n\nexport const isBetween = (date: Date, start: Date, end: Date): boolean => {\n const time = startOfDay(date).getTime();\n const startTime = startOfDay(start).getTime();\n const endTime = startOfDay(end).getTime();\n return time > startTime && time < endTime;\n};\n\nexport const isDateInRange = (date: Date, minDate: Date | null, maxDate: Date | null): boolean => {\n if (minDate && isBefore(date, minDate)) {\n return false;\n }\n if (maxDate && isAfter(date, maxDate)) {\n return false;\n }\n return true;\n};\n\nexport const getDaysInMonth = (year: number, month: number): number => new Date(year, month + 1, 0).getDate();\n\nexport const getFirstDayOfMonth = (year: number, month: number): number => new Date(year, month, 1).getDay();\n\nconst computeRangeProperties = (\n date: Date,\n rangeStart: Date | null | undefined,\n rangeEnd: Date | null | undefined,\n hoveredDate: Date | null | undefined\n): ZRangeProperties => {\n const defaultProps: ZRangeProperties = {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n isHovered: false,\n };\n\n if (rangeStart && rangeEnd) {\n const actualStart = isBefore(rangeStart, rangeEnd) ? rangeStart : rangeEnd;\n const actualEnd = isAfter(rangeEnd, rangeStart) ? rangeEnd : rangeStart;\n return {\n isRangeStart: isSameDay(date, actualStart),\n isRangeEnd: isSameDay(date, actualEnd),\n isInRange: isBetween(date, actualStart, actualEnd),\n isHovered: false,\n };\n }\n\n if (rangeStart && hoveredDate && !rangeEnd) {\n const isHoveredBefore = isBefore(hoveredDate, rangeStart);\n const effectiveStart = isHoveredBefore ? hoveredDate : rangeStart;\n const effectiveEnd = isHoveredBefore ? rangeStart : hoveredDate;\n return {\n isRangeStart: isSameDay(date, effectiveStart),\n isRangeEnd: isSameDay(date, effectiveEnd),\n isInRange: isBetween(date, effectiveStart, effectiveEnd),\n isHovered: isSameDay(date, hoveredDate),\n };\n }\n\n if (rangeStart) {\n return { ...defaultProps, isRangeStart: isSameDay(date, rangeStart) };\n }\n\n return defaultProps;\n};\n\nconst createCalendarDay = (\n date: Date,\n isCurrentMonth: boolean,\n today: Date,\n options: ZCalendarGridOptions\n): ZCalendarDay => {\n const { selectedDate, minDate, maxDate, rangeStart, rangeEnd, hoveredDate, disabledDate } = options;\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;\n const rangeProps = computeRangeProperties(date, rangeStart, rangeEnd, hoveredDate);\n\n const isOutOfRange = !isDateInRange(date, minDate ?? null, maxDate ?? null);\n const isDisabledByFn = disabledDate ? disabledDate(date) : false;\n\n return {\n date,\n day: date.getDate(),\n isCurrentMonth,\n isToday: isSameDay(date, today),\n isDisabled: isOutOfRange || isDisabledByFn,\n isSelected,\n ...rangeProps,\n };\n};\n\nexport const generateCalendarGrid = (\n year: number,\n month: number,\n options: ZCalendarGridOptions = {}\n): ZCalendarDay[][] => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayOfMonth = getFirstDayOfMonth(year, month);\n const today = getToday();\n\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevMonthYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevMonthYear, prevMonth);\n\n const days: ZCalendarDay[] = [];\n\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const date = createDate(prevMonthYear, prevMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = createDate(year, month, day);\n days.push(createCalendarDay(date, true, today, options));\n }\n\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextMonthYear = month === 11 ? year + 1 : year;\n const remainingDays = 42 - days.length;\n\n for (let day = 1; day <= remainingDays; day++) {\n const date = createDate(nextMonthYear, nextMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n const weeks: ZCalendarDay[][] = [];\n for (let i = 0; i < 6; i++) {\n weeks.push(days.slice(i * 7, (i + 1) * 7));\n }\n\n return weeks;\n};\n\nexport const getMonthNames = (locale = 'vi-VN'): string[] => {\n if (locale === 'vi-VN') {\n return ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'];\n }\n\n const months: string[] = [];\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1);\n months.push(date.toLocaleDateString(locale, { month: 'short' }));\n }\n return months;\n};\n\nexport const getWeekdayNames = (locale = 'vi-VN'): string[] => {\n const weekdays: string[] = [];\n for (let i = 0; i < 7; i++) {\n const actualDate = new Date(2024, 0, 7 + i);\n weekdays.push(actualDate.toLocaleDateString(locale, { weekday: 'narrow' }));\n }\n return weekdays;\n};\n\nexport const getYearRange = (centerYear: number, range = 12): number[] => {\n const startYear = centerYear - Math.floor(range / 2);\n return Array.from({ length: range }, (_, i) => startYear + i);\n};\n\nexport const formatDate = (date: Date | null, format: string): string => {\n if (!date) {\n return '';\n }\n\n const hours = date.getHours();\n const hours12 = hours % 12 || 12;\n\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n DD: String(date.getDate()).padStart(2, '0'),\n HH: String(hours).padStart(2, '0'),\n hh: String(hours12).padStart(2, '0'),\n mm: String(date.getMinutes()).padStart(2, '0'),\n ss: String(date.getSeconds()).padStart(2, '0'),\n };\n\n let result = format;\n for (const [token, value] of Object.entries(tokens)) {\n result = result.replace(token, value);\n }\n\n return result;\n};\n\nexport const parseDate = (dateString: string, format: string): Date | null => {\n if (!dateString) {\n return null;\n }\n\n const pattern = format\n .replace(/YYYY/g, '\\\\d{4}')\n .replace(/MM/g, '\\\\d{1,2}')\n .replace(/DD/g, '\\\\d{1,2}')\n .replace(/HH/g, '\\\\d{1,2}')\n .replace(/hh/g, '\\\\d{1,2}')\n .replace(/mm/g, '\\\\d{1,2}')\n .replace(/ss/g, '\\\\d{1,2}')\n .replace(/\\//g, '\\\\/')\n .replace(/-/g, '\\\\-')\n .replace(/:/g, '\\\\:')\n .replace(/\\s+/g, '\\\\s*');\n\n const datePattern = new RegExp(`^${pattern}(\\\\s*(AM|PM))?$`, 'i');\n if (!datePattern.test(dateString.trim())) {\n return null;\n }\n\n const numbers = dateString.match(/\\d+/g)?.map(n => parseInt(n, 10)) ?? [];\n if (numbers.length === 0) {\n return null;\n }\n\n const currentYear = new Date().getFullYear();\n const values: Record<string, number> = {\n YYYY: currentYear,\n MM: 1,\n DD: 1,\n HH: 0,\n hh: 0,\n mm: 0,\n ss: 0,\n };\n\n const allTokens = ['YYYY', 'MM', 'DD', 'HH', 'hh', 'mm', 'ss'];\n const tokensInFormat = allTokens\n .filter(token => format.includes(token))\n .sort((a, b) => format.indexOf(a) - format.indexOf(b));\n\n for (let i = 0; i < Math.min(numbers.length, tokensInFormat.length); i++) {\n values[tokensInFormat[i]] = numbers[i];\n }\n\n const isPM = /PM/i.test(dateString);\n const isAM = /AM/i.test(dateString);\n let hour = values['HH'];\n\n if (format.includes('hh')) {\n hour = values['hh'];\n if (isPM && hour < 12) {\n hour += 12;\n }\n if (isAM && hour === 12) {\n hour = 0;\n }\n }\n\n try {\n const date = createDate(values['YYYY'], values['MM'] - 1, values['DD'], hour, values['mm'], values['ss']);\n // Validate the date is valid (e.g., not 31/02/2025)\n if (isNaN(date.getTime())) {\n return null;\n }\n return date;\n } catch {\n return null;\n }\n};\n\nexport const toISOString = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n return date.toISOString();\n};\n\nexport const fromISOString = (isoString: string): Date | null => {\n if (!isoString) {\n return null;\n }\n const date = new Date(isoString);\n return isNaN(date.getTime()) ? null : date;\n};\n\nexport const getQuickSelectPresets = (): ZQuickSelectPreset[] => [\n {\n key: 'today',\n label: 'Hôm nay',\n getValue: () => ({ start: getToday(), end: getToday() }),\n },\n {\n key: '7days',\n label: '7 ngày qua',\n getValue: () => ({\n start: addDays(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: '14days',\n label: '14 ngày qua',\n getValue: () => ({\n start: addDays(getToday(), -13),\n end: getToday(),\n }),\n },\n {\n key: '1month',\n label: '1 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -1),\n end: getToday(),\n }),\n },\n {\n key: '2months',\n label: '2 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -2),\n end: getToday(),\n }),\n },\n {\n key: '3months',\n label: '3 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -3),\n end: getToday(),\n }),\n },\n {\n key: '6months',\n label: '6 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: 'custom',\n label: 'Tùy chỉnh',\n getValue: () => null,\n },\n];\n\nexport const normalizeRange = (start: Date | null, end: Date | null): ZDateRange => {\n if (!start || !end) {\n return { start, end };\n }\n\n if (isBefore(end, start)) {\n return { start: end, end: start };\n }\n\n return { start, end };\n};\n\nexport const isValidRange = (range: ZDateRange): boolean => range.start !== null && range.end !== null;\n\nexport const clampTime = (value: number, min: number, max: number): number => Math.max(min, Math.min(max, value));\n\nexport const parseTimeValue = (value: string, max: number): number => {\n const parsed = parseInt(value, 10);\n if (isNaN(parsed)) {\n return 0;\n }\n return clampTime(parsed, 0, max);\n};\n\nexport const formatTimeValue = (value: number): string => String(value).padStart(2, '0');\n\nexport const getDayState = (day: ZCalendarDay): ZDayState => {\n if (day.isDisabled) {\n return 'disabled';\n }\n if (!day.isCurrentMonth) {\n return 'otherMonth';\n }\n if (day.isRangeStart && day.isRangeEnd) {\n return 'rangeSingle';\n }\n if (day.isRangeStart) {\n return 'rangeStart';\n }\n if (day.isRangeEnd) {\n return 'rangeEnd';\n }\n if (day.isInRange) {\n return 'inRange';\n }\n if (day.isHovered) {\n return 'hovered';\n }\n if (day.isSelected) {\n return 'selected';\n }\n if (day.isToday) {\n return 'today';\n }\n return 'default';\n};\n\nexport const getMonthState = (monthIndex: number, currentMonthIndex: number): ZMonthState =>\n monthIndex === currentMonthIndex ? 'selected' : 'default';\n\nexport const getQuarterState = (quarterIndex: number, currentQuarterIndex: number): ZQuarterState =>\n quarterIndex === currentQuarterIndex ? 'selected' : 'default';\n\nexport const getYearState = (year: number, currentYear: number): ZYearState =>\n year === currentYear ? 'selected' : 'default';\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCalendarVariants = cva(\n [\n 'group flex w-fit items-center rounded-[6px] border border-input bg-white shadow-xs cursor-pointer',\n 'transition-[border-color,box-shadow,background-color,color,opacity] duration-200',\n 'dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n 'outline-none',\n 'text-sm',\n ],\n {\n variants: {\n zSize: {\n sm: 'h-8 px-2 gap-2 text-sm',\n default: 'h-9 px-2 gap-2 text-sm',\n lg: 'h-10 px-2 gap-2.5 text-sm',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n open: 'border-ring ring-ring/50 ring-[3px]',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'cursor-default bg-muted/50 text-muted-foreground',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZCalendarVariants = VariantProps<typeof zCalendarVariants>;\n\nexport const zCalendarDayVariants = cva(\n [\n 'flex items-center justify-center size-7 text-sm rounded-[4px] cursor-pointer',\n 'transition-all duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n today: 'bg-primary/10 text-primary border border-primary',\n selected: 'bg-primary text-primary-foreground',\n inRange: 'bg-primary/10 text-foreground',\n rangeStart: 'bg-primary text-primary-foreground rounded-r-none',\n rangeEnd: 'bg-primary text-primary-foreground rounded-l-none',\n rangeSingle: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed',\n otherMonth: 'text-muted-foreground/40 hover:bg-primary/5',\n hovered: 'bg-primary/15 text-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarMonthVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-8 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary/15 text-primary',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarYearVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-6 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary/15 text-primary',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarQuarterVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-15 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n selected: 'bg-primary text-primary-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZCalendarDay } from '../z-calendar.types';\nimport { getDayState } from '../z-calendar.utils';\nimport { zCalendarDayVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zDayClasses',\n standalone: true,\n pure: true,\n})\nexport class ZDayClassesPipe implements PipeTransform {\n transform(day: ZCalendarDay): string {\n const state = getDayState(day);\n return zCalendarDayVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZQuickSelectPreset } from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsPresetDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsPresetDisabledPipe implements PipeTransform {\n transform(preset: ZQuickSelectPreset, disabledDateFn: ((date: Date) => boolean) | null): boolean {\n if (preset.key === 'custom' || !disabledDateFn) {\n return false;\n }\n\n const value = preset.getValue();\n if (!value) {\n return false;\n }\n\n if (value instanceof Date) {\n return disabledDateFn(value);\n }\n\n if (value.start && disabledDateFn(value.start)) {\n return true;\n }\n if (value.end && disabledDateFn(value.end)) {\n return true;\n }\n\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getMonthState } from '../z-calendar.utils';\nimport { zCalendarMonthVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zMonthClasses',\n standalone: true,\n pure: true,\n})\nexport class ZMonthClassesPipe implements PipeTransform {\n transform(monthIndex: number, currentMonthIndex: number): string {\n const state = getMonthState(monthIndex, currentMonthIndex);\n return zCalendarMonthVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getQuarterState } from '../z-calendar.utils';\nimport { zCalendarQuarterVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zQuarterClasses',\n standalone: true,\n pure: true,\n})\nexport class ZQuarterClassesPipe implements PipeTransform {\n transform(quarterIndex: number, currentQuarterIndex: number): string {\n const state = getQuarterState(quarterIndex, currentQuarterIndex);\n return zCalendarQuarterVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getYearState } from '../z-calendar.utils';\nimport { zCalendarYearVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zYearClasses',\n standalone: true,\n pure: true,\n})\nexport class ZYearClassesPipe implements PipeTransform {\n transform(year: number, currentYear: number): string {\n const state = getYearState(year, currentYear);\n return zCalendarYearVariants({ state });\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport type { ZPopoverControl } from '@shival99/z-ui/components/z-popover';\nimport { zGenerateId, zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { merge } from 'rxjs';\nimport { ZDayClassesPipe } from './pipes/z-day-classes.pipe';\nimport { ZIsPresetDisabledPipe } from './pipes/z-disabled.pipe';\nimport { ZMonthClassesPipe } from './pipes/z-month-classes.pipe';\nimport { ZQuarterClassesPipe } from './pipes/z-quarter-classes.pipe';\nimport { ZYearClassesPipe } from './pipes/z-year-classes.pipe';\nimport type {\n ZCalendarDay,\n ZCalendarControl,\n ZCalendarMode,\n ZCalendarSize,\n ZCalendarValidator,\n ZCalendarValue,\n ZCalendarValueType,\n ZCalendarView,\n ZDateRange,\n ZQuickSelectPreset,\n} from './z-calendar.types';\nimport {\n addDays,\n addMonths,\n addYears,\n formatDate,\n formatTimeValue,\n fromISOString,\n generateCalendarGrid,\n getMonthNames,\n getQuickSelectPresets,\n getToday,\n getWeekdayNames,\n getYearRange,\n isSameDay,\n isSameMonth,\n normalizeRange,\n parseDate,\n parseTimeValue,\n setMonth,\n setTime,\n setYear,\n toISOString,\n} from './z-calendar.utils';\nimport { zCalendarVariants } from './z-calendar.variants';\n\n@Component({\n selector: 'z-calendar',\n imports: [\n ZIconComponent,\n ZPopoverDirective,\n ZButtonComponent,\n ZDayClassesPipe,\n ZMonthClassesPipe,\n ZQuarterClassesPipe,\n ZYearClassesPipe,\n ZIsPresetDisabledPipe,\n ],\n standalone: true,\n templateUrl: './z-calendar.component.html',\n styleUrl: './z-calendar.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCalendarComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zCalendar',\n})\nexport class ZCalendarComponent implements OnInit, ControlValueAccessor {\n public readonly class = input<ClassValue>('');\n public readonly zMode = input<ZCalendarMode>('single');\n public readonly zSize = input<ZCalendarSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input<string>('Chọn ngày...');\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zShowTime = input(false, { transform: zTransform });\n public readonly zTimeFormat = input<'12h' | '24h'>('24h');\n public readonly zShowHour = input(true, { transform: zTransform });\n public readonly zShowMinute = input(true, { transform: zTransform });\n public readonly zShowSecond = input(true, { transform: zTransform });\n public readonly zQuickSelect = input(false, { transform: zTransform });\n public readonly zAllowClear = input(true, { transform: zTransform });\n public readonly zFormat = input<string>('DD/MM/YYYY');\n public readonly zMinDate = input<Date | null>(null);\n public readonly zMaxDate = input<Date | null>(null);\n public readonly zValueType = input<ZCalendarValueType>('date');\n public readonly zValidators = input<ZCalendarValidator[]>([]);\n public readonly zLocale = input<string>('vi-VN');\n public readonly zShowOk = input(false, { transform: zTransform });\n public readonly zOkText = input<string>('Áp dụng');\n public readonly zShowCancel = input(false, { transform: zTransform });\n public readonly zCancelText = input<string>('Huỷ');\n public readonly zDisabledDate = input<((date: Date) => boolean) | null>(null);\n\n public readonly zControl = output<ZCalendarControl>();\n public readonly zChange = output<ZCalendarValue>();\n\n protected readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('triggerEl');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected readonly pickerId = zGenerateId('z-calendar');\n protected readonly weekdayNames = getWeekdayNames('vi-VN');\n protected readonly monthNames = getMonthNames('vi-VN');\n protected readonly quickSelectPresets = getQuickSelectPresets();\n\n protected readonly formattedHour = computed(() => {\n const h = this._hour();\n if (this.zTimeFormat() === '12h') {\n const h12 = h % 12 || 12;\n return formatTimeValue(h12);\n }\n return formatTimeValue(h);\n });\n\n protected readonly formattedMinute = computed(() => formatTimeValue(this._minute()));\n protected readonly formattedSecond = computed(() => formatTimeValue(this._second()));\n\n private readonly _popoverControl = signal<ZPopoverControl | null>(null);\n private readonly _selectedDate = signal<Date | null>(null);\n private readonly _rangeStart = signal<Date | null>(null);\n private readonly _rangeEnd = signal<Date | null>(null);\n private readonly _hoveredDate = signal<Date | null>(null);\n private readonly _currentMonth = signal<Date>(getToday());\n private readonly _endMonth = signal<Date>(addMonths(getToday(), 1));\n private readonly _currentView = signal<ZCalendarView>('day');\n private readonly _endView = signal<ZCalendarView>('day');\n private readonly _hour = signal(0);\n private readonly _minute = signal(0);\n private readonly _second = signal(0);\n private readonly _period = signal<'AM' | 'PM'>('AM');\n private readonly _hourEnd = signal(0);\n private readonly _minuteEnd = signal(0);\n private readonly _secondEnd = signal(0);\n private readonly _periodEnd = signal<'AM' | 'PM'>('AM');\n private readonly _disabled = signal(false);\n private readonly _touched = signal(false);\n private readonly _dirty = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _inputDisplayValue = signal<string>('');\n private readonly _backupSelectedDate = signal<Date | null>(null);\n private readonly _backupRangeStart = signal<Date | null>(null);\n private readonly _backupRangeEnd = signal<Date | null>(null);\n private readonly _activePresetKey = signal<string | null>(null);\n private readonly _hasViewChanged = signal(false);\n private readonly _hasEndViewChanged = signal(false);\n private readonly _appliedViaOk = signal(false);\n private readonly _skipBlurHandler = signal(false);\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _cdr = inject(ChangeDetectorRef);\n\n private _onChange: (value: ZCalendarValue) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n\n protected readonly isOpen = computed(() => this._popoverControl()?.isVisible() ?? false);\n protected readonly hoveredDate = this._hoveredDate.asReadonly();\n protected readonly currentView = this._currentView.asReadonly();\n protected readonly hour = this._hour.asReadonly();\n protected readonly minute = this._minute.asReadonly();\n protected readonly second = this._second.asReadonly();\n protected readonly period = this._period.asReadonly();\n protected readonly inputDisplayValue = this._inputDisplayValue.asReadonly();\n protected readonly activePresetKey = this._activePresetKey.asReadonly();\n protected readonly hasViewChanged = this._hasViewChanged.asReadonly();\n protected readonly hasEndViewChanged = this._hasEndViewChanged.asReadonly();\n\n protected readonly quarterNames = ['Q1', 'Q2', 'Q3', 'Q4'];\n protected readonly currentQuarterIndex = computed(() => {\n const date = this._selectedDate();\n return date ? Math.floor(date.getMonth() / 3) : -1;\n });\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly isRangeMode = computed(() => this.zMode() === 'range');\n protected readonly canApply = computed(() => {\n if (this.isTimeMode()) {\n return true;\n }\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly showOkButton = computed(() => this.zShowOk() || this.zShowTime() || this.isTimeMode());\n\n protected readonly showCancelButton = computed(() => this.zShowCancel() || this.zShowTime() || this.isTimeMode());\n\n protected readonly isTimeMode = computed(() => this.zMode() === 'time');\n protected readonly isMonthMode = computed(() => this.zMode() === 'month');\n protected readonly isYearMode = computed(() => this.zMode() === 'year');\n protected readonly isQuarterMode = computed(() => this.zMode() === 'quarter');\n\n protected readonly todayButtonText = computed(() => {\n if (this.isQuarterMode()) {\n return 'Quý này';\n }\n if (this.isYearMode()) {\n return 'Năm này';\n }\n if (this.isMonthMode()) {\n return 'Tháng này';\n }\n if (this.zShowTime() || this.isTimeMode()) {\n return 'Bây giờ';\n }\n return 'Hôm nay';\n });\n\n protected readonly currentMonth = computed(() => this._currentMonth());\n protected readonly currentYear = computed(() => this._currentMonth().getFullYear());\n protected readonly currentMonthIndex = computed(() => this._currentMonth().getMonth());\n\n protected readonly currentMonthName = computed(() => {\n const month = this._currentMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'long' });\n });\n\n protected readonly yearRange = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 12);\n });\n\n protected readonly yearRangeSmall = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 9);\n });\n\n protected readonly calendarDays = computed<ZCalendarDay[][]>(() => {\n const month = this._currentMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this._hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly endMonth = computed(() => this._endMonth());\n\n protected readonly endMonthName = computed(() => {\n const month = this._endMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'long' });\n });\n\n protected readonly endMonthYear = computed(() => this._endMonth().getFullYear());\n\n protected readonly calendarDaysEnd = computed<ZCalendarDay[][]>(() => {\n const month = this._endMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this._hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly formattedHourEnd = computed(() =>\n formatTimeValue(this.zTimeFormat() === '12h' ? this._hourEnd() % 12 || 12 : this._hourEnd())\n );\n\n protected readonly formattedMinuteEnd = computed(() => formatTimeValue(this._minuteEnd()));\n protected readonly formattedSecondEnd = computed(() => formatTimeValue(this._secondEnd()));\n\n protected readonly periodEnd = computed(() => this._periodEnd());\n protected readonly endView = this._endView.asReadonly();\n\n protected readonly endYearRange = computed(() => {\n const currentYear = this._endMonth().getFullYear();\n return getYearRange(currentYear);\n });\n\n protected isStartMonthDisabled(monthIndex: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const year = this._currentMonth().getFullYear();\n const monthDate = new Date(year, monthIndex, 1);\n if (disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const startYear = this._currentMonth().getFullYear();\n const endMonth = this._endMonth();\n const endYear = endMonth.getFullYear();\n const endMonthIndex = endMonth.getMonth();\n\n if (startYear > endYear) {\n return true;\n }\n\n if (startYear === endYear && monthIndex > endMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected isEndMonthDisabled(monthIndex: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const year = this._endMonth().getFullYear();\n const monthDate = new Date(year, monthIndex, 1);\n if (disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const startMonth = this._currentMonth();\n const startYear = startMonth.getFullYear();\n const startMonthIndex = startMonth.getMonth();\n const endYear = this._endMonth().getFullYear();\n\n if (endYear < startYear) {\n return true;\n }\n if (endYear === startYear && monthIndex < startMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected isStartYearDisabled(year: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const endYear = this._endMonth().getFullYear();\n const startMonthIndex = this._currentMonth().getMonth();\n const endMonthIndex = this._endMonth().getMonth();\n\n if (year > endYear) {\n return true;\n }\n if (year === endYear && startMonthIndex >= endMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected isEndYearDisabled(year: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const startYear = this._currentMonth().getFullYear();\n const startMonthIndex = this._currentMonth().getMonth();\n const endMonthIndex = this._endMonth().getMonth();\n\n if (year < startYear) {\n return true;\n }\n if (year === startYear && endMonthIndex <= startMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected readonly canNavigateStartNext = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const current = this._currentMonth();\n const end = this._endMonth();\n const view = this._currentView();\n\n if (view === 'day') {\n const startNext = addMonths(current, 1);\n return (\n startNext.getFullYear() < end.getFullYear() ||\n (startNext.getFullYear() === end.getFullYear() && startNext.getMonth() < end.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const startNextYear = addYears(current, 1);\n return startNextYear.getFullYear() < end.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(current.getFullYear());\n const lastYearInRange = yearRange[yearRange.length - 1];\n return lastYearInRange < end.getFullYear() - 1;\n }\n\n return true;\n });\n\n protected readonly canNavigateEndPrev = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const start = this._currentMonth();\n const end = this._endMonth();\n const view = this._endView();\n\n if (view === 'day') {\n const endPrev = addMonths(end, -1);\n return (\n endPrev.getFullYear() > start.getFullYear() ||\n (endPrev.getFullYear() === start.getFullYear() && endPrev.getMonth() > start.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const endPrevYear = addYears(end, -1);\n return endPrevYear.getFullYear() > start.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(end.getFullYear());\n const firstYearInRange = yearRange[0];\n return firstYearInRange > start.getFullYear() + 1;\n }\n\n return true;\n });\n\n protected readonly displayValue = computed(() => {\n let format = this.zFormat();\n\n if (this.zShowTime() || this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._period()}` : '';\n format = this.isTimeMode() ? timeFormat + periodSuffix : `${this.zFormat()} ${timeFormat}${periodSuffix}`;\n }\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return '';\n }\n\n return `${formatDate(start, format)} - ${formatDate(end, format)}`;\n }\n\n const date = this._selectedDate();\n if (!date) {\n return '';\n }\n\n if (this.isMonthMode()) {\n return date.toLocaleDateString(this.zLocale(), { month: 'long', year: 'numeric' });\n }\n if (this.isYearMode()) {\n return date.getFullYear().toString();\n }\n if (this.isQuarterMode()) {\n const quarter = Math.floor(date.getMonth() / 3) + 1;\n return `Q${quarter} ${date.getFullYear()}`;\n }\n\n return formatDate(date, format);\n });\n\n private readonly _inputDisplayStart = signal<string>('');\n private readonly _inputDisplayEnd = signal<string>('');\n\n protected readonly inputDisplayStart = computed(() => this._inputDisplayStart());\n protected readonly inputDisplayEnd = computed(() => this._inputDisplayEnd());\n\n protected readonly displayValueStart = computed(() => {\n const format = this._getDisplayFormat();\n const start = this._rangeStart();\n return start ? formatDate(start, format) : '';\n });\n\n protected readonly displayValueEnd = computed(() => {\n const format = this._getDisplayFormat();\n const end = this._rangeEnd();\n return end ? formatDate(end, format) : '';\n });\n\n private _getDisplayFormat(): string {\n let format = this.zFormat();\n if (this.zShowTime() || this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._period()}` : '';\n format = this.isTimeMode() ? timeFormat + periodSuffix : `${this.zFormat()} ${timeFormat}${periodSuffix}`;\n }\n return format;\n }\n\n protected readonly showClearButton = computed(() => {\n if (!this.zAllowClear() || this.isDisabled() || this.zReadonly() || this.isOpen()) {\n return false;\n }\n\n return this.displayValue() !== '';\n });\n\n protected readonly hasValue = computed(() => {\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n if (this.zReadonly()) {\n return 'readonly';\n }\n if (this.isOpen()) {\n return 'open';\n }\n if (this.hasError()) {\n return 'error';\n }\n return 'default';\n });\n\n protected readonly triggerClasses = computed(() =>\n zMergeClasses(\n zCalendarVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus() as 'default' | 'open' | 'error' | 'disabled' | 'readonly',\n }),\n this.class()\n )\n );\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (control) {\n return control.dirty;\n }\n return this._dirty() || this._touched();\n });\n\n protected readonly hasError = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly showError = computed(() => this.hasError());\n\n protected readonly errorMessage = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n\n if (!errors) {\n return '';\n }\n\n const validators = this.zValidators();\n for (const validator of validators) {\n if (errors[validator.error]) {\n return validator.message;\n }\n }\n\n if (errors['required']) {\n return 'Vui lòng chọn ngày';\n }\n return '';\n });\n\n constructor() {\n effect(() => {\n const date = this._selectedDate();\n if (date && this.zShowTime()) {\n this._hour.set(date.getHours());\n this._minute.set(date.getMinutes());\n this._second.set(date.getSeconds());\n }\n });\n }\n\n ngOnInit(): void {\n void Promise.resolve().then(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n if (!this._ngControl?.control) {\n return;\n }\n\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(control.statusChanges, control.valueChanges, control.events)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n this._cdr.markForCheck();\n });\n } catch {\n this._ngControl = null;\n }\n });\n\n setTimeout(() => this._emitControl());\n }\n\n public writeValue(value: ZCalendarValue): void {\n if (value === null || value === undefined) {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n\n const valueType = this.zValueType();\n\n if (this.isRangeMode()) {\n if (typeof value === 'object' && 'start' in value && 'end' in value) {\n const range = value as ZDateRange;\n this._rangeStart.set(range.start);\n this._rangeEnd.set(range.end);\n }\n return;\n }\n\n let date: Date | null = null;\n\n if (value instanceof Date) {\n date = value;\n }\n\n if (!date && typeof value === 'string') {\n date = valueType === 'iso' ? fromISOString(value) : parseDate(value, this.zFormat());\n }\n\n if (!date) {\n return;\n }\n\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._updateInputDisplay();\n }\n\n public registerOnChange(fn: (value: ZCalendarValue) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public open(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n this._popoverControl()?.show();\n }\n\n public close(): void {\n this._popoverControl()?.close();\n }\n\n public toggle(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n const popover = this._popoverControl();\n if (!popover) {\n return;\n }\n\n if (popover.isVisible()) {\n if (!this.showCancelButton()) {\n this.close();\n }\n return;\n }\n\n this.open();\n }\n\n public clear(): void {\n this.onClear(new MouseEvent('click'));\n }\n\n public focus(): void {\n this.triggerRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this.triggerRef()?.nativeElement.blur();\n }\n\n public reset(): void {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._hour.set(0);\n this._minute.set(0);\n this._second.set(0);\n this._touched.set(false);\n this._dirty.set(false);\n this._inputDisplayValue.set('');\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsPristine();\n this._ngControl.control.markAsUntouched();\n }\n }\n\n public validate(): void {\n this._touched.set(true);\n this._dirty.set(true);\n this._onTouched();\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsDirty();\n this._ngControl.control.markAsTouched();\n }\n }\n\n public markAsTouched(): void {\n this._touched.set(true);\n this._onTouched();\n }\n\n public markAsUntouched(): void {\n this._touched.set(false);\n }\n\n public markAsDirty(): void {\n this._dirty.set(true);\n }\n\n public markAsPristine(): void {\n this._dirty.set(false);\n }\n\n protected onPopoverShow(): void {\n this._backupIfNeeded();\n this._appliedViaOk.set(false);\n this._hasViewChanged.set(false);\n this._hasEndViewChanged.set(false);\n\n if (this.isMonthMode()) {\n this._currentView.set('month');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isYearMode()) {\n this._currentView.set('year');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isQuarterMode()) {\n this._currentView.set('quarter');\n this._initializeTimeIfNeeded();\n return;\n }\n\n this._currentView.set('day');\n this._initializeTimeIfNeeded();\n\n if (this.isRangeMode()) {\n this._endView.set('day');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n if (!this.isRangeMode()) {\n this._activePresetKey.set(null);\n const selected = this._selectedDate();\n if (selected) {\n this._currentMonth.set(selected);\n return;\n }\n this._resetCalendarsToDefault();\n return;\n }\n\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (start && end) {\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this._activePresetKey.set(this._detectMatchingPreset(start, end));\n return;\n }\n\n if (this.zQuickSelect()) {\n this._activePresetKey.set(null);\n this._resetCalendarsToDefault();\n return;\n }\n\n this._activePresetKey.set(null);\n this._resetCalendarsToDefault();\n }\n\n private _initializeTimeIfNeeded(): void {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return;\n }\n\n const now = new Date();\n const selected = this._selectedDate();\n this._syncTimeSignals(selected ?? now);\n\n if (!this.isRangeMode()) {\n return;\n }\n\n const end = this._rangeEnd();\n this._syncEndTimeSignals(end ?? now);\n }\n\n private _syncEndTimeSignals(date: Date): void {\n const hours = date.getHours();\n this._hourEnd.set(hours);\n this._minuteEnd.set(date.getMinutes());\n this._secondEnd.set(date.getSeconds());\n this._periodEnd.set(hours >= 12 ? 'PM' : 'AM');\n }\n\n private _resetCalendarsToDefault(): void {\n const today = getToday();\n this._currentMonth.set(today);\n this._endMonth.set(addMonths(today, 1));\n this._currentView.set('day');\n this._endView.set('day');\n }\n\n private _backupIfNeeded(): void {\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n if (needsConfirmation) {\n this._backupSelectedDate.set(this._selectedDate());\n this._backupRangeStart.set(this._rangeStart());\n this._backupRangeEnd.set(this._rangeEnd());\n }\n }\n\n protected onPopoverHide(): void {\n this._hoveredDate.set(null);\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n if (needsConfirmation && !this._appliedViaOk()) {\n this._restoreFromBackup();\n }\n\n if (this._dirty()) {\n this._touched.set(true);\n }\n\n this._onTouched();\n this._inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _restoreFromBackup(): void {\n this._selectedDate.set(this._backupSelectedDate());\n this._rangeStart.set(this._backupRangeStart());\n this._rangeEnd.set(this._backupRangeEnd());\n this._dirty.set(false);\n const backup = this._backupSelectedDate();\n if (backup) {\n this._syncTimeSignals(backup);\n }\n }\n\n protected onPopoverControl(control: ZPopoverControl): void {\n this._popoverControl.set(control);\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this._popoverControl()?.toggle();\n return;\n }\n\n if (event.key === 'Escape' && this.isOpen()) {\n this.close();\n }\n }\n\n protected onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayValue.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n if (this.isRangeMode()) {\n const parts = trimmedValue.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start) {\n this._rangeStart.set(start);\n this._currentMonth.set(start);\n }\n if (end) {\n this._rangeEnd.set(end);\n this._endMonth.set(end);\n }\n }\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (date) {\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n }\n\n private _getExpectedFormatLength(format: string): number {\n return format.replace(/\\[.*?\\]/g, ' ').length;\n }\n\n protected onStartInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayStart.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n this._inputDisplayStart.set(this.displayValueStart());\n return;\n }\n\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n\n protected onEndInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayEnd.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n }\n\n protected onStartInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n input.blur();\n }\n\n protected onEndInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n this._dirty.set(true);\n input.blur();\n }\n\n protected onInputFocus(_event: FocusEvent): void {\n this._backupSelectedDate.set(this._selectedDate());\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this._skipBlurHandler()) {\n this._skipBlurHandler.set(false);\n return;\n }\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n\n if (needsConfirmation && this.isOpen()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n const currentValue = input.value.trim();\n const format = this._getParseFormat();\n\n if (!currentValue) {\n this._selectedDate.set(null);\n this._backupSelectedDate.set(null);\n this._inputDisplayValue.set('');\n this._applyValue();\n return;\n }\n\n const parsed = parseDate(currentValue, format);\n if (parsed) {\n this._selectedDate.set(parsed);\n this._currentMonth.set(parsed);\n this._syncTimeSignals(parsed);\n this._backupSelectedDate.set(parsed);\n this._inputDisplayValue.set(this.displayValue());\n this._applyValue();\n return;\n }\n\n const backup = this._backupSelectedDate();\n this._selectedDate.set(backup);\n this._inputDisplayValue.set(this.displayValue());\n }\n\n protected onInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n\n if (!value) {\n this._skipBlurHandler.set(true);\n this._clearDateValues();\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n const format = this._getParseFormat();\n if (this.isRangeMode()) {\n const parts = value.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start && end) {\n this._skipBlurHandler.set(true);\n const swapped = start > end;\n const rangeStart = swapped ? end : start;\n const rangeEnd = swapped ? start : end;\n this._rangeStart.set(rangeStart);\n this._rangeEnd.set(rangeEnd);\n this._currentMonth.set(rangeStart);\n this._endMonth.set(rangeEnd);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n }\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n return;\n }\n\n const date = parseDate(value, format);\n if (date) {\n this._skipBlurHandler.set(true);\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n }\n\n protected onCalendarKeydown(event: KeyboardEvent): void {\n if (this._currentView() !== 'day') {\n return;\n }\n\n const { key } = event;\n if (key === 'Escape') {\n this.close();\n return;\n }\n\n if (key === 'Enter') {\n if (!this.isRangeMode() || this.zShowTime()) {\n this.onOkClick();\n }\n return;\n }\n\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n event.preventDefault();\n this._navigateByArrowKey(key);\n }\n }\n\n protected onDayClick(day: ZCalendarDay): void {\n if (day.isDisabled) {\n return;\n }\n\n const clickedDate = day.date;\n\n if (this.isRangeMode()) {\n this._handleRangeSelection(clickedDate);\n return;\n }\n\n this._handleSingleSelection(clickedDate);\n }\n\n protected onDayHover(day: ZCalendarDay): void {\n if (this.isRangeMode() && this._rangeStart() && !this._rangeEnd()) {\n this._hoveredDate.set(day.date);\n }\n }\n\n protected onDayLeave(): void {\n if (this.isRangeMode()) {\n this._hoveredDate.set(null);\n }\n }\n\n protected onMonthClick(monthIndex: number): void {\n const currentDate = this._currentMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n if (this.isRangeMode()) {\n const endMonth = this._endMonth();\n const isExceedingEnd =\n newMonth.getFullYear() > endMonth.getFullYear() ||\n (newMonth.getFullYear() === endMonth.getFullYear() && newMonth.getMonth() >= endMonth.getMonth());\n\n if (isExceedingEnd) {\n newMonth = addMonths(endMonth, -1);\n }\n }\n\n this._currentMonth.set(newMonth);\n this._hasViewChanged.set(true);\n this._currentView.set('day');\n }\n\n protected onYearClick(year: number): void {\n const currentDate = this._currentMonth();\n\n if (this.isYearMode()) {\n this._selectedDate.set(setYear(new Date(year, 0, 1), year));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n let newYear = year;\n\n if (this.isRangeMode()) {\n const endYear = this._endMonth().getFullYear();\n if (newYear >= endYear) {\n newYear = endYear - 1;\n }\n }\n\n this._currentMonth.set(setYear(currentDate, newYear));\n this._hasViewChanged.set(true);\n this._currentView.set(this.isQuarterMode() ? 'quarter' : 'month');\n }\n\n protected onQuarterClick(quarterIndex: number): void {\n const currentYear = this._currentMonth().getFullYear();\n const firstMonthOfQuarter = quarterIndex * 3;\n const date = new Date(currentYear, firstMonthOfQuarter, 1);\n this._selectedDate.set(date);\n this._dirty.set(true);\n this._applyValue();\n this.close();\n }\n\n protected onMonthSelect(monthIndex: number): void {\n if (this.isMonthMode()) {\n const currentYear = this._currentMonth().getFullYear();\n this._selectedDate.set(new Date(currentYear, monthIndex, 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n this.onMonthClick(monthIndex);\n }\n\n protected onQuickSelect(preset: ZQuickSelectPreset): void {\n this._activePresetKey.set(preset.key);\n if (preset.key === 'custom') {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n return;\n }\n\n const value = preset.getValue();\n if (!value) {\n return;\n }\n\n if (value instanceof Date) {\n this._rangeStart.set(value);\n this._rangeEnd.set(value);\n this._currentMonth.set(value);\n this._endMonth.set(addMonths(value, 1));\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n this._rangeStart.set(value.start);\n this._rangeEnd.set(value.end);\n\n const start = value.start ?? getToday();\n const end = value.end ?? getToday();\n\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n protected onTodayClick(): void {\n const now = new Date();\n const today = getToday();\n this._currentMonth.set(today);\n\n if (this.zShowTime() || this.isTimeMode()) {\n this._hour.set(now.getHours());\n this._minute.set(now.getMinutes());\n this._second.set(now.getSeconds());\n this._period.set(now.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n if (this.isMonthMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), now.getMonth(), 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isYearMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), 0, 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isQuarterMode()) {\n const currentQuarter = Math.floor(now.getMonth() / 3);\n this._selectedDate.set(new Date(now.getFullYear(), currentQuarter * 3, 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isTimeMode()) {\n this._selectedDate.set(now);\n this._dirty.set(true);\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n if (this.isRangeMode()) {\n const rangeDate = this.zShowTime() ? now : today;\n this._rangeStart.set(rangeDate);\n this._rangeEnd.set(rangeDate);\n this._endMonth.set(addMonths(today, 1));\n if (this.zShowTime()) {\n this._syncEndTimeSignals(now);\n }\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n const selectedDate = this.zShowTime() ? now : today;\n this._selectedDate.set(selectedDate);\n this._dirty.set(true);\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onClear(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._hour.set(0);\n this._minute.set(0);\n this._second.set(0);\n this._dirty.set(true);\n\n this._backupSelectedDate.set(null);\n this._backupRangeStart.set(null);\n this._backupRangeEnd.set(null);\n this._appliedViaOk.set(true);\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this._inputDisplayValue.set('');\n if (this.isRangeMode()) {\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n }\n\n this.close();\n }\n\n protected onCancelClick(): void {\n this.close();\n }\n\n protected onOkClick(): void {\n if (!this.canApply()) {\n return;\n }\n\n if (this.isTimeMode()) {\n let hour = this._hour();\n if (this.zTimeFormat() === '12h') {\n if (this._period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n const baseDate = this._selectedDate() ?? new Date();\n this._selectedDate.set(setTime(baseDate, hour, this._minute(), this._second()));\n }\n\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n }\n\n protected navigatePrevious(): void {\n const view = this._currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, -1),\n month: addYears(current, -1),\n year: addYears(current, -yearStep),\n quarter: addYears(current, -1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigateNext(): void {\n const view = this._currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, 1),\n month: addYears(current, 1),\n year: addYears(current, yearStep),\n quarter: addYears(current, 1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigatePreviousFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, -1));\n }\n\n protected navigateNextFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, 1));\n }\n\n protected setView(view: ZCalendarView): void {\n this._hasViewChanged.set(true);\n this._currentView.set(view);\n }\n\n protected setEndView(view: ZCalendarView): void {\n this._hasEndViewChanged.set(true);\n this._endView.set(view);\n }\n\n protected onEndMonthClick(monthIndex: number): void {\n const currentDate = this._endMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n const startMonth = this._currentMonth();\n const isBeforeStart =\n newMonth.getFullYear() < startMonth.getFullYear() ||\n (newMonth.getFullYear() === startMonth.getFullYear() && newMonth.getMonth() <= startMonth.getMonth());\n\n if (isBeforeStart) {\n newMonth = addMonths(startMonth, 1);\n }\n\n this._endMonth.set(newMonth);\n this._hasEndViewChanged.set(true);\n this._endView.set('day');\n }\n\n protected onEndYearClick(year: number): void {\n const currentDate = this._endMonth();\n let newYear = year;\n\n const startYear = this._currentMonth().getFullYear();\n if (newYear <= startYear) {\n newYear = startYear + 1;\n }\n\n this._endMonth.set(setYear(currentDate, newYear));\n this._hasEndViewChanged.set(true);\n this._endView.set('month');\n }\n\n protected onHourInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this._hour.set(value);\n this._updateTimeToDate();\n }\n\n protected onMinuteInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._minute.set(value);\n this._updateTimeToDate();\n }\n\n protected onSecondInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._second.set(value);\n this._updateTimeToDate();\n }\n\n protected onTimeBlur(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n if (dataType === 'hour') {\n input.value = this.formattedHour();\n }\n if (dataType === 'minute') {\n input.value = this.formattedMinute();\n }\n if (dataType === 'second') {\n input.value = this.formattedSecond();\n }\n }\n\n protected navigateEndPrevious(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, -1));\n }\n\n protected navigateEndNext(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, 1));\n }\n\n protected navigateEndPreviousFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, -1));\n }\n\n protected navigateEndNextFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, 1));\n }\n\n protected onHourEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this._hourEnd.set(value);\n this._updateEndTimeToDate();\n }\n\n protected onMinuteEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._minuteEnd.set(value);\n this._updateEndTimeToDate();\n }\n\n protected onSecondEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._secondEnd.set(value);\n this._updateEndTimeToDate();\n }\n\n protected onTimeBlurEnd(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n if (dataType === 'hour-end') {\n input.value = this.formattedHourEnd();\n }\n if (dataType === 'minute-end') {\n input.value = this.formattedMinuteEnd();\n }\n if (dataType === 'second-end') {\n input.value = this.formattedSecondEnd();\n }\n }\n\n protected togglePeriodEnd(): void {\n const currentPeriod = this._periodEnd();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this._periodEnd.set(newPeriod);\n\n const currentHour = this._hourEnd();\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hourEnd.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hourEnd.set(currentHour - 12);\n }\n this._updateEndTimeToDate();\n }\n\n private _updateEndTimeToDate(): void {\n const end = this._rangeEnd();\n if (!end) {\n return;\n }\n\n let hour = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n const newDate = setTime(end, hour, this._minuteEnd(), this._secondEnd());\n this._rangeEnd.set(newDate);\n this._dirty.set(true);\n }\n\n private _handleSingleSelection(date: Date): void {\n let finalDate = date;\n\n if (this.zShowTime()) {\n finalDate = setTime(date, this._hour(), this._minute(), this._second());\n }\n\n this._selectedDate.set(finalDate);\n this._dirty.set(true);\n this._inputDisplayValue.set(this.displayValue());\n\n if (!this.zShowTime() && !this.zShowOk()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _handleRangeSelection(date: Date): void {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || (start && end)) {\n let startDate = date;\n if (this.zShowTime()) {\n let hour = this._hour();\n if (this.zTimeFormat() === '12h') {\n if (this._period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n startDate = setTime(date, hour, this._minute(), this._second());\n }\n this._rangeStart.set(startDate);\n this._rangeEnd.set(null);\n this._activePresetKey.set('custom');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set('');\n return;\n }\n\n let endDate = date;\n if (this.zShowTime()) {\n let hour = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n endDate = setTime(date, hour, this._minuteEnd(), this._secondEnd());\n }\n\n const normalized = normalizeRange(start, endDate);\n this._rangeStart.set(normalized.start);\n this._rangeEnd.set(normalized.end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (normalized.start && normalized.end) {\n this._activePresetKey.set(this._detectMatchingPreset(normalized.start, normalized.end));\n }\n\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _updateTimeToDate(): void {\n if (!this.zShowTime()) {\n return;\n }\n\n let hour = this._hour();\n if (this.zTimeFormat() === '12h') {\n if (this._period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n if (start) {\n this._rangeStart.set(setTime(start, hour, this._minute(), this._second()));\n this._dirty.set(true);\n }\n return;\n }\n\n const selected = this._selectedDate();\n if (selected) {\n this._selectedDate.set(setTime(selected, hour, this._minute(), this._second()));\n }\n }\n\n private _detectMatchingPreset(start: Date, end: Date): string | null {\n for (const preset of this.quickSelectPresets) {\n if (preset.key === 'custom') {\n continue;\n }\n const value = preset.getValue();\n if (value && !(value instanceof Date)) {\n if (value.start && value.end && isSameDay(start, value.start) && isSameDay(end, value.end)) {\n return preset.key;\n }\n }\n }\n return 'custom';\n }\n\n private _applyValue(): void {\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this._dirty.set(true);\n this._inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _getEmitValue(): ZCalendarValue {\n const valueType = this.zValueType();\n const format = this.zShowTime() ? `${this.zFormat()} HH:mm:ss` : this.zFormat();\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return null;\n }\n\n if (valueType === 'iso') {\n return { start: toISOString(start), end: toISOString(end) } as unknown as ZCalendarValue;\n }\n\n if (valueType === 'string') {\n return { start: formatDate(start, format), end: formatDate(end, format) } as unknown as ZCalendarValue;\n }\n\n return { start, end };\n }\n\n const date = this._selectedDate();\n if (!date) {\n return null;\n }\n\n if (valueType === 'iso') {\n return toISOString(date);\n }\n if (valueType === 'string') {\n return formatDate(date, format);\n }\n\n return date;\n }\n\n private _getValidationErrors(): string[] {\n const validators = this.zValidators();\n const errors: string[] = [];\n\n if (!this._shouldShowValidation()) {\n return errors;\n }\n\n const isRequired = this.zRequired() || this._formControl()?.errors?.['required'];\n if (isRequired) {\n const hasValidValue = this.isRangeMode() ? !!(this._rangeStart() && this._rangeEnd()) : !!this._selectedDate();\n if (!hasValidValue) {\n errors.push('Vui lòng chọn ngày');\n }\n }\n\n const value = this._getEmitValue();\n for (const validator of validators) {\n if (!validator.validate(value)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n private _navigateByArrowKey(key: string): void {\n const currentDate = this._selectedDate() ?? getToday();\n let newDate: Date;\n\n switch (key) {\n case 'ArrowUp':\n newDate = addDays(currentDate, -7);\n break;\n case 'ArrowDown':\n newDate = addDays(currentDate, 7);\n break;\n case 'ArrowLeft':\n newDate = addDays(currentDate, -1);\n break;\n case 'ArrowRight':\n newDate = addDays(currentDate, 1);\n break;\n default:\n return;\n }\n\n const minDate = this.zMinDate();\n const maxDate = this.zMaxDate();\n\n if (minDate && newDate < minDate) {\n return;\n }\n if (maxDate && newDate > maxDate) {\n return;\n }\n\n this._selectedDate.set(newDate);\n\n if (!isSameMonth(newDate, this._currentMonth())) {\n this._currentMonth.set(newDate);\n }\n }\n\n private _syncTimeSignals(date: Date): void {\n this._hour.set(date.getHours());\n this._minute.set(date.getMinutes());\n this._second.set(date.getSeconds());\n this._period.set(date.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n private _getParseFormat(): string {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return this.zFormat();\n }\n\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n\n const timeFormat = timeParts.join(':');\n if (this.isTimeMode()) {\n return timeFormat;\n }\n return `${this.zFormat()} ${timeFormat}`;\n }\n\n private _updateInputDisplay(): void {\n this._inputDisplayValue.set(this.displayValue());\n }\n\n private _clearDateValues(): void {\n if (this.isRangeMode()) {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n this._selectedDate.set(null);\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n validate: () => this.validate(),\n reset: () => this.reset(),\n focus: () => this.focus(),\n blur: () => this.blur(),\n open: () => this.open(),\n close: () => this.close(),\n clear: () => this.clear(),\n markAsTouched: () => this.markAsTouched(),\n markAsUntouched: () => this.markAsUntouched(),\n markAsDirty: () => this.markAsDirty(),\n markAsPristine: () => this.markAsPristine(),\n hasError: this.hasError,\n isOpen: this.isOpen,\n value: computed(() => this._getEmitValue()),\n errorMessage: this.errorMessage,\n });\n }\n\n protected togglePeriod(): void {\n const currentPeriod = this._period();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this._period.set(newPeriod);\n\n const currentHour = this._hour();\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n }\n\n protected onPeriodChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newPeriod = select.value as 'AM' | 'PM';\n const currentHour = this._hour();\n\n this._period.set(newPeriod);\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n }\n}\n","<div class=\"z-calendar-wrapper flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"pickerId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div class=\"relative w-fit\">\n <div\n #triggerEl\n z-popover\n [zPopoverContent]=\"calendarTpl\"\n zPosition=\"bottom-left\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"6\"\n [zDisabled]=\"isDisabled() || zReadonly()\"\n [zManualClose]=\"showCancelButton()\"\n zTrigger=\"click\"\n zClass=\"border-0 shadow-none bg-transparent p-0\"\n (zHideStart)=\"onPopoverHide()\"\n (zShow)=\"onPopoverShow()\"\n (zControl)=\"onPopoverControl($event)\"\n [id]=\"pickerId\"\n [class]=\"triggerClasses()\"\n (keydown)=\"onTriggerKeydown($event)\">\n <z-icon\n [zType]=\"isRangeMode() ? 'lucideCalendarRange' : 'lucideCalendar'\"\n zSize=\"16\"\n class=\"text-muted-foreground shrink-0 cursor-pointer\"\n (click)=\"$event.stopPropagation(); toggle()\" />\n\n @if (isRangeMode()) {\n <input\n type=\"text\"\n data-range-type=\"start\"\n class=\"placeholder:text-muted-foreground min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n placeholder=\"Từ ngày\"\n [value]=\"inputDisplayStart()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onStartInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onStartInputEnter($event)\" />\n <span class=\"text-muted-foreground text-sm\">-</span>\n <input\n type=\"text\"\n data-range-type=\"end\"\n class=\"placeholder:text-muted-foreground min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n placeholder=\"Đến ngày\"\n [value]=\"inputDisplayEnd()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onEndInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onEndInputEnter($event)\" />\n } @else {\n <input\n #inputEl\n type=\"text\"\n class=\"placeholder:text-muted-foreground min-w-0 flex-1 truncate bg-transparent text-sm outline-none\"\n [placeholder]=\"zPlaceholder()\"\n [value]=\"inputDisplayValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onInputEnter($event)\" />\n }\n\n @if (zAllowClear() && !isDisabled() && !zReadonly()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"text-muted-foreground hover:text-foreground flex size-5 shrink-0 cursor-pointer items-center justify-center rounded transition-all\"\n [class.opacity-0]=\"!hasValue()\"\n [class.pointer-events-none]=\"!hasValue()\"\n (click)=\"onClear($event)\">\n <z-icon zType=\"lucideX\" zSize=\"14\" />\n </button>\n }\n </div>\n </div>\n\n @if (showError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n</div>\n\n<ng-template #calendarTpl>\n <div\n class=\"z-calendar-calendar bg-popover border-border flex rounded-[6px] border shadow-lg\"\n (keydown)=\"onCalendarKeydown($event)\">\n @if (zQuickSelect() && zMode() === 'range') {\n <div class=\"border-border flex flex-col space-y-1 border-r p-2\">\n @for (preset of quickSelectPresets; track preset.key) {\n @let presetDisabled = preset | zIsPresetDisabled: zDisabledDate();\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-[4px] px-3 py-1.5 text-left text-sm whitespace-nowrap transition-colors\"\n [class.hover:bg-muted]=\"activePresetKey() !== preset.key && !presetDisabled\"\n [class.bg-primary]=\"activePresetKey() === preset.key\"\n [class.text-primary-foreground]=\"activePresetKey() === preset.key\"\n [class.font-medium]=\"activePresetKey() === preset.key\"\n [class.opacity-40]=\"presetDisabled\"\n [class.cursor-not-allowed]=\"presetDisabled\"\n [disabled]=\"presetDisabled\"\n (click)=\"onQuickSelect(preset)\">\n {{ preset.label }}\n </button>\n }\n </div>\n }\n <div class=\"flex flex-col gap-2 p-3\">\n @if (!isTimeMode()) {\n <div class=\"z-calendars-wrapper flex gap-4\">\n <!-- First Calendar -->\n <div class=\"z-calendar-section flex flex-col justify-center gap-1\">\n @if (!isTimeMode()) {\n <div class=\"flex w-full items-center justify-between space-x-1\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigatePrevious()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigatePreviousFast()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </button>\n\n <div class=\"flex flex-1 items-center justify-center gap-0.5\">\n @if (!isYearMode() && !isQuarterMode()) {\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"w-20 px-2!\"\n [zWave]=\"false\"\n [zDisabled]=\"false\"\n (click)=\"setView('month')\">\n {{ currentMonthName() }}\n </button>\n }\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"px-2!\"\n [zWave]=\"false\"\n [zDisabled]=\"isYearMode()\"\n (click)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNextFast()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNext()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"16\" />\n </button>\n </div>\n\n <div class=\"z-calendar-views w-full\" [class.z-calendar-views-quarter]=\"isQuarterMode()\">\n @if (currentView() === 'day') {\n <div class=\"flex h-full w-full flex-col gap-1\" [class.z-calendar-animate]=\"hasViewChanged()\">\n <div class=\"grid w-full grid-cols-7\">\n @for (weekday of weekdayNames; track weekday) {\n <div class=\"text-muted-foreground flex h-7 items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n @for (week of calendarDays(); track $index) {\n <div class=\"grid w-full grid-cols-7\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'month') {\n <div class=\"grid h-full w-full grid-cols-3 grid-rows-4\" [class.z-calendar-animate]=\"hasViewChanged()\">\n @for (month of monthNames; track month; let i = $index) {\n @let monthDisabled = isStartMonthDisabled(i);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: currentMonthIndex()\"\n [disabled]=\"monthDisabled\"\n [class.opacity-30]=\"monthDisabled\"\n [class.cursor-not-allowed]=\"monthDisabled\"\n (click)=\"onMonthSelect(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 gap-0.5\"\n [class.grid-rows-4]=\"!isYearMode() && !isQuarterMode()\"\n [class.grid-rows-3]=\"isYearMode() || isQuarterMode()\"\n [class.z-calendar-animate]=\"hasViewChanged()\">\n @for (year of isYearMode() || isQuarterMode() ? yearRangeSmall() : yearRange(); track year) {\n @let yearDisabled = isStartYearDisabled(year);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: currentYear()\"\n [disabled]=\"yearDisabled\"\n [class.opacity-30]=\"yearDisabled\"\n [class.cursor-not-allowed]=\"yearDisabled\"\n (click)=\"onYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'quarter') {\n <div class=\"grid w-full grid-cols-2 gap-2\" [class.z-calendar-animate]=\"hasViewChanged()\">\n @for (quarter of quarterNames; track quarter; let i = $index) {\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zQuarterClasses: currentQuarterIndex()\"\n (click)=\"onQuarterClick(i)\">\n {{ quarter }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Start Time Picker for Range Mode -->\n @if (isRangeMode() && zShowTime() && currentView() === 'day') {\n <div class=\"flex items-center justify-center gap-2 pt-2\">\n <span class=\"text-muted-foreground text-xs\">Bắt đầu:</span>\n <div class=\"flex items-center gap-0.5\">\n @if (zShowHour()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"hour\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedHour()\"\n (input)=\"onHourInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"minute\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedMinute()\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"second\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedSecond()\"\n (input)=\"onSecondInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n tabindex=\"0\"\n class=\"border-input bg-background hover:bg-muted focus:border-ring focus:ring-ring/30 ml-1 cursor-pointer rounded border px-2 py-1 text-sm font-medium transition-colors outline-none focus:ring-2\"\n (click)=\"togglePeriod()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Second Calendar (Range Mode Only) -->\n @if (isRangeMode()) {\n <!-- Divider -->\n <div class=\"border-border bg-border w-px self-stretch\"></div>\n\n <div class=\"z-calendar-section flex flex-col justify-center gap-1\">\n <div class=\"flex w-full items-center justify-between space-x-1\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPreviousFast()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPrevious()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </button>\n\n <div class=\"flex flex-1 items-center justify-center gap-0.5\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"w-20 px-2!\"\n [zWave]=\"false\"\n (click)=\"setEndView('month')\">\n {{ endMonthName() }}\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"px-2!\"\n [zWave]=\"false\"\n (click)=\"setEndView('year')\">\n {{ endMonthYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNext()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNextFast()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"16\" />\n </button>\n </div>\n\n <div class=\"z-calendar-views w-full\">\n @if (endView() === 'day') {\n <div class=\"flex h-full w-full flex-col gap-1\" [class.z-calendar-animate]=\"hasEndViewChanged()\">\n <div class=\"grid grid-cols-7 gap-px\">\n @for (weekday of weekdayNames; track weekday) {\n <div class=\"text-muted-foreground flex h-8 w-8 items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n @for (week of calendarDaysEnd(); track $index) {\n <div class=\"grid grid-cols-7 gap-px\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (endView() === 'month') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4\"\n [class.z-calendar-animate]=\"hasEndViewChanged()\">\n @for (month of monthNames; track month; let i = $index) {\n @let endMonthDisabled = isEndMonthDisabled(i);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: endMonth().getMonth()\"\n [disabled]=\"endMonthDisabled\"\n [class.opacity-30]=\"endMonthDisabled\"\n [class.cursor-not-allowed]=\"endMonthDisabled\"\n (click)=\"onEndMonthClick(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (endView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-0.5\"\n [class.z-calendar-animate]=\"hasEndViewChanged()\">\n @for (year of endYearRange(); track year) {\n @let endYearDisabled = isEndYearDisabled(year);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: endMonth().getFullYear()\"\n [disabled]=\"endYearDisabled\"\n [class.opacity-30]=\"endYearDisabled\"\n [class.cursor-not-allowed]=\"endYearDisabled\"\n (click)=\"onEndYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- End Time Picker for Range Mode -->\n @if (zShowTime()) {\n <div class=\"flex items-center justify-center gap-2 pt-2\">\n <span class=\"text-muted-foreground text-xs\">Kết thúc:</span>\n <div class=\"flex items-center gap-0.5\">\n @if (zShowHour()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"hour-end\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedHourEnd()\"\n (input)=\"onHourEndInput($event)\"\n (blur)=\"onTimeBlurEnd($event)\"\n maxlength=\"2\" />\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"minute-end\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedMinuteEnd()\"\n (input)=\"onMinuteEndInput($event)\"\n (blur)=\"onTimeBlurEnd($event)\"\n maxlength=\"2\" />\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"second-end\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedSecondEnd()\"\n (input)=\"onSecondEndInput($event)\"\n (blur)=\"onTimeBlurEnd($event)\"\n maxlength=\"2\" />\n }\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n tabindex=\"0\"\n class=\"border-input bg-background hover:bg-muted focus:border-ring focus:ring-ring/30 ml-1 cursor-pointer rounded border px-2 py-1 text-sm font-medium transition-colors outline-none focus:ring-2\"\n (click)=\"togglePeriodEnd()\">\n {{ periodEnd() }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (((zShowTime() && currentView() === 'day') || isTimeMode()) && !isRangeMode()) {\n <div class=\"flex items-center justify-center gap-2\">\n <div class=\"flex items-center gap-0.5\">\n @if (zShowHour()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"hour\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedHour()\"\n (input)=\"onHourInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n\n @if (zShowMinute()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"minute\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedMinute()\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n\n @if (zShowSecond()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"second\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedSecond()\"\n (input)=\"onSecondInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n tabindex=\"0\"\n class=\"border-input bg-background hover:bg-muted focus:border-ring focus:ring-ring/30 ml-1 cursor-pointer rounded border px-2 py-1 text-sm font-medium transition-colors outline-none focus:ring-2\"\n (click)=\"togglePeriod()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n }\n\n @if (!(zQuickSelect() && zMode() === 'range' && !showOkButton() && !showCancelButton())) {\n <div class=\"border-border flex items-center justify-between gap-2 border-t pt-2\">\n @if (!zQuickSelect() || zMode() !== 'range') {\n <button type=\"button\" z-button zType=\"secondary\" zSize=\"sm\" [zWave]=\"false\" (click)=\"onTodayClick()\">\n {{ todayButtonText() }}\n </button>\n } @else {\n <div></div>\n }\n\n @if (showOkButton() || showCancelButton()) {\n <div class=\"flex items-center gap-2\">\n @if (showCancelButton()) {\n <button type=\"button\" z-button zType=\"outline\" zSize=\"sm\" (click)=\"onCancelClick()\">\n {{ zCancelText() }}\n </button>\n }\n @if (showOkButton()) {\n <button type=\"button\" z-button zSize=\"sm\" [zDisabled]=\"!canApply()\" (click)=\"onOkClick()\">\n {{ zOkText() }}\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-calendar.mjs","sources":["../../../../libs/core-ui/components/z-calendar/z-calendar.utils.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.variants.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-day-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-disabled.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-month-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-quarter-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/pipes/z-year-classes.pipe.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.ts","../../../../libs/core-ui/components/z-calendar/z-calendar.component.html","../../../../libs/core-ui/components/z-calendar/shival99-z-ui-components-z-calendar.ts"],"sourcesContent":["import type {\n ZCalendarDay,\n ZCalendarGridOptions,\n ZDateRange,\n ZDayState,\n ZMonthState,\n ZQuarterState,\n ZQuickSelectPreset,\n ZRangeProperties,\n ZYearState,\n} from './z-calendar.types';\n\nexport const createDate = (year: number, month: number, day: number, hour = 0, minute = 0, second = 0): Date =>\n new Date(year, month, day, hour, minute, second);\n\nexport const cloneDate = (date: Date): Date => new Date(date.getTime());\n\nexport const getToday = (): Date => {\n const now = new Date();\n return createDate(now.getFullYear(), now.getMonth(), now.getDate());\n};\n\nexport const startOfDay = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const startOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth(), 1);\n\nexport const endOfMonth = (date: Date): Date => createDate(date.getFullYear(), date.getMonth() + 1, 0);\n\nexport const startOfYear = (date: Date): Date => createDate(date.getFullYear(), 0, 1);\n\nexport const addDays = (date: Date, days: number): Date => {\n const result = cloneDate(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const addMonths = (date: Date, months: number): Date => {\n const result = cloneDate(date);\n result.setMonth(result.getMonth() + months);\n return result;\n};\n\nexport const addYears = (date: Date, years: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(result.getFullYear() + years);\n return result;\n};\n\nexport const setMonth = (date: Date, month: number): Date => {\n const result = cloneDate(date);\n result.setMonth(month);\n return result;\n};\n\nexport const setYear = (date: Date, year: number): Date => {\n const result = cloneDate(date);\n result.setFullYear(year);\n return result;\n};\n\nexport const setTime = (date: Date, hour: number, minute: number, second: number): Date => {\n const result = cloneDate(date);\n result.setHours(hour, minute, second, 0);\n return result;\n};\n\nexport const isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) {\n return false;\n }\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nexport const isSameMonth = (date1: Date, date2: Date): boolean =>\n date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth();\n\nexport const isSameYear = (date1: Date, date2: Date): boolean => date1.getFullYear() === date2.getFullYear();\n\nexport const isToday = (date: Date): boolean => isSameDay(date, new Date());\n\nexport const isBefore = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() < startOfDay(date2).getTime();\n\nexport const isAfter = (date1: Date, date2: Date): boolean => startOfDay(date1).getTime() > startOfDay(date2).getTime();\n\nexport const isBeforeOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() <= startOfDay(date2).getTime();\n\nexport const isAfterOrEqual = (date1: Date, date2: Date): boolean =>\n startOfDay(date1).getTime() >= startOfDay(date2).getTime();\n\nexport const isBetween = (date: Date, start: Date, end: Date): boolean => {\n const time = startOfDay(date).getTime();\n const startTime = startOfDay(start).getTime();\n const endTime = startOfDay(end).getTime();\n return time > startTime && time < endTime;\n};\n\nexport const isDateInRange = (date: Date, minDate: Date | null, maxDate: Date | null): boolean => {\n if (minDate && isBefore(date, minDate)) {\n return false;\n }\n if (maxDate && isAfter(date, maxDate)) {\n return false;\n }\n return true;\n};\n\nexport const getDaysInMonth = (year: number, month: number): number => new Date(year, month + 1, 0).getDate();\n\nexport const getFirstDayOfMonth = (year: number, month: number): number => new Date(year, month, 1).getDay();\n\nconst computeRangeProperties = (\n date: Date,\n rangeStart: Date | null | undefined,\n rangeEnd: Date | null | undefined,\n hoveredDate: Date | null | undefined\n): ZRangeProperties => {\n const defaultProps: ZRangeProperties = {\n isRangeStart: false,\n isRangeEnd: false,\n isInRange: false,\n isHovered: false,\n };\n\n if (rangeStart && rangeEnd) {\n const actualStart = isBefore(rangeStart, rangeEnd) ? rangeStart : rangeEnd;\n const actualEnd = isAfter(rangeEnd, rangeStart) ? rangeEnd : rangeStart;\n return {\n isRangeStart: isSameDay(date, actualStart),\n isRangeEnd: isSameDay(date, actualEnd),\n isInRange: isBetween(date, actualStart, actualEnd),\n isHovered: false,\n };\n }\n\n if (rangeStart && hoveredDate && !rangeEnd) {\n const isHoveredBefore = isBefore(hoveredDate, rangeStart);\n const effectiveStart = isHoveredBefore ? hoveredDate : rangeStart;\n const effectiveEnd = isHoveredBefore ? rangeStart : hoveredDate;\n return {\n isRangeStart: isSameDay(date, effectiveStart),\n isRangeEnd: isSameDay(date, effectiveEnd),\n isInRange: isBetween(date, effectiveStart, effectiveEnd),\n isHovered: isSameDay(date, hoveredDate),\n };\n }\n\n if (rangeStart) {\n return { ...defaultProps, isRangeStart: isSameDay(date, rangeStart) };\n }\n\n return defaultProps;\n};\n\nconst createCalendarDay = (\n date: Date,\n isCurrentMonth: boolean,\n today: Date,\n options: ZCalendarGridOptions\n): ZCalendarDay => {\n const { selectedDate, minDate, maxDate, rangeStart, rangeEnd, hoveredDate, disabledDate } = options;\n const isSelected = selectedDate ? isSameDay(date, selectedDate) : false;\n const rangeProps = computeRangeProperties(date, rangeStart, rangeEnd, hoveredDate);\n\n const isOutOfRange = !isDateInRange(date, minDate ?? null, maxDate ?? null);\n const isDisabledByFn = disabledDate ? disabledDate(date) : false;\n\n return {\n date,\n day: date.getDate(),\n isCurrentMonth,\n isToday: isSameDay(date, today),\n isDisabled: isOutOfRange || isDisabledByFn,\n isSelected,\n ...rangeProps,\n };\n};\n\nexport const generateCalendarGrid = (\n year: number,\n month: number,\n options: ZCalendarGridOptions = {}\n): ZCalendarDay[][] => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayOfMonth = getFirstDayOfMonth(year, month);\n const today = getToday();\n\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevMonthYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevMonthYear, prevMonth);\n\n const days: ZCalendarDay[] = [];\n\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const date = createDate(prevMonthYear, prevMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = createDate(year, month, day);\n days.push(createCalendarDay(date, true, today, options));\n }\n\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextMonthYear = month === 11 ? year + 1 : year;\n const remainingDays = 42 - days.length;\n\n for (let day = 1; day <= remainingDays; day++) {\n const date = createDate(nextMonthYear, nextMonth, day);\n days.push(createCalendarDay(date, false, today, options));\n }\n\n const weeks: ZCalendarDay[][] = [];\n for (let i = 0; i < 6; i++) {\n weeks.push(days.slice(i * 7, (i + 1) * 7));\n }\n\n return weeks;\n};\n\nexport const getMonthNames = (locale = 'vi-VN'): string[] => {\n if (locale === 'vi-VN') {\n return ['T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12'];\n }\n\n const months: string[] = [];\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1);\n months.push(date.toLocaleDateString(locale, { month: 'short' }));\n }\n return months;\n};\n\nexport const getWeekdayNames = (locale = 'vi-VN'): string[] => {\n const weekdays: string[] = [];\n for (let i = 0; i < 7; i++) {\n const actualDate = new Date(2024, 0, 7 + i);\n weekdays.push(actualDate.toLocaleDateString(locale, { weekday: 'narrow' }));\n }\n return weekdays;\n};\n\nexport const getYearRange = (centerYear: number, range = 12): number[] => {\n const startYear = centerYear - Math.floor(range / 2);\n return Array.from({ length: range }, (_, i) => startYear + i);\n};\n\nexport const formatDate = (date: Date | null, format: string): string => {\n if (!date) {\n return '';\n }\n\n const hours = date.getHours();\n const hours12 = hours % 12 || 12;\n\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n DD: String(date.getDate()).padStart(2, '0'),\n HH: String(hours).padStart(2, '0'),\n hh: String(hours12).padStart(2, '0'),\n mm: String(date.getMinutes()).padStart(2, '0'),\n ss: String(date.getSeconds()).padStart(2, '0'),\n };\n\n let result = format;\n for (const [token, value] of Object.entries(tokens)) {\n result = result.replace(token, value);\n }\n\n return result;\n};\n\nexport const parseDate = (dateString: string, format: string): Date | null => {\n if (!dateString) {\n return null;\n }\n\n const pattern = format\n .replace(/YYYY/g, '\\\\d{4}')\n .replace(/MM/g, '\\\\d{1,2}')\n .replace(/DD/g, '\\\\d{1,2}')\n .replace(/HH/g, '\\\\d{1,2}')\n .replace(/hh/g, '\\\\d{1,2}')\n .replace(/mm/g, '\\\\d{1,2}')\n .replace(/ss/g, '\\\\d{1,2}')\n .replace(/\\//g, '\\\\/')\n .replace(/-/g, '\\\\-')\n .replace(/:/g, '\\\\:')\n .replace(/\\s+/g, '\\\\s*');\n\n const datePattern = new RegExp(`^${pattern}(\\\\s*(AM|PM))?$`, 'i');\n if (!datePattern.test(dateString.trim())) {\n return null;\n }\n\n const numbers = dateString.match(/\\d+/g)?.map(n => parseInt(n, 10)) ?? [];\n if (numbers.length === 0) {\n return null;\n }\n\n const currentYear = new Date().getFullYear();\n const values: Record<string, number> = {\n YYYY: currentYear,\n MM: 1,\n DD: 1,\n HH: 0,\n hh: 0,\n mm: 0,\n ss: 0,\n };\n\n const allTokens = ['YYYY', 'MM', 'DD', 'HH', 'hh', 'mm', 'ss'];\n const tokensInFormat = allTokens\n .filter(token => format.includes(token))\n .sort((a, b) => format.indexOf(a) - format.indexOf(b));\n\n for (let i = 0; i < Math.min(numbers.length, tokensInFormat.length); i++) {\n values[tokensInFormat[i]] = numbers[i];\n }\n\n const isPM = /PM/i.test(dateString);\n const isAM = /AM/i.test(dateString);\n let hour = values['HH'];\n\n if (format.includes('hh')) {\n hour = values['hh'];\n if (isPM && hour < 12) {\n hour += 12;\n }\n if (isAM && hour === 12) {\n hour = 0;\n }\n }\n\n try {\n const date = createDate(values['YYYY'], values['MM'] - 1, values['DD'], hour, values['mm'], values['ss']);\n // Validate the date is valid (e.g., not 31/02/2025)\n if (isNaN(date.getTime())) {\n return null;\n }\n return date;\n } catch {\n return null;\n }\n};\n\nexport const toISOString = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n return date.toISOString();\n};\n\nexport const fromISOString = (isoString: string): Date | null => {\n if (!isoString) {\n return null;\n }\n const date = new Date(isoString);\n return isNaN(date.getTime()) ? null : date;\n};\n\nexport const getQuickSelectPresets = (): ZQuickSelectPreset[] => [\n {\n key: 'today',\n label: 'Hôm nay',\n getValue: () => ({ start: getToday(), end: getToday() }),\n },\n {\n key: '7days',\n label: '7 ngày qua',\n getValue: () => ({\n start: addDays(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: '14days',\n label: '14 ngày qua',\n getValue: () => ({\n start: addDays(getToday(), -13),\n end: getToday(),\n }),\n },\n {\n key: '1month',\n label: '1 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -1),\n end: getToday(),\n }),\n },\n {\n key: '2months',\n label: '2 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -2),\n end: getToday(),\n }),\n },\n {\n key: '3months',\n label: '3 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -3),\n end: getToday(),\n }),\n },\n {\n key: '6months',\n label: '6 tháng qua',\n getValue: () => ({\n start: addMonths(getToday(), -6),\n end: getToday(),\n }),\n },\n {\n key: 'custom',\n label: 'Tùy chỉnh',\n getValue: () => null,\n },\n];\n\nexport const normalizeRange = (start: Date | null, end: Date | null): ZDateRange => {\n if (!start || !end) {\n return { start, end };\n }\n\n if (isBefore(end, start)) {\n return { start: end, end: start };\n }\n\n return { start, end };\n};\n\nexport const isValidRange = (range: ZDateRange): boolean => range.start !== null && range.end !== null;\n\nexport const clampTime = (value: number, min: number, max: number): number => Math.max(min, Math.min(max, value));\n\nexport const parseTimeValue = (value: string, max: number): number => {\n const parsed = parseInt(value, 10);\n if (isNaN(parsed)) {\n return 0;\n }\n return clampTime(parsed, 0, max);\n};\n\nexport const formatTimeValue = (value: number): string => String(value).padStart(2, '0');\n\nexport const getDayState = (day: ZCalendarDay): ZDayState => {\n if (day.isDisabled) {\n return 'disabled';\n }\n if (!day.isCurrentMonth) {\n return 'otherMonth';\n }\n if (day.isRangeStart && day.isRangeEnd) {\n return 'rangeSingle';\n }\n if (day.isRangeStart) {\n return 'rangeStart';\n }\n if (day.isRangeEnd) {\n return 'rangeEnd';\n }\n if (day.isInRange) {\n return 'inRange';\n }\n if (day.isHovered) {\n return 'hovered';\n }\n if (day.isSelected) {\n return 'selected';\n }\n if (day.isToday) {\n return 'today';\n }\n return 'default';\n};\n\nexport const getMonthState = (monthIndex: number, currentMonthIndex: number): ZMonthState =>\n monthIndex === currentMonthIndex ? 'selected' : 'default';\n\nexport const getQuarterState = (quarterIndex: number, currentQuarterIndex: number): ZQuarterState =>\n quarterIndex === currentQuarterIndex ? 'selected' : 'default';\n\nexport const getYearState = (year: number, currentYear: number): ZYearState =>\n year === currentYear ? 'selected' : 'default';\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCalendarVariants = cva(\n [\n 'group flex w-fit items-center rounded-[6px] border border-input bg-white shadow-xs cursor-pointer',\n 'transition-[border-color,box-shadow,background-color,color,opacity] duration-200',\n 'dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n 'outline-none',\n 'text-sm',\n ],\n {\n variants: {\n zSize: {\n sm: 'h-8 px-2 gap-2 text-sm',\n default: 'h-9 px-2 gap-2 text-sm',\n lg: 'h-10 px-2 gap-2.5 text-sm',\n },\n zStatus: {\n default: 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n open: 'border-ring ring-ring/50 ring-[3px]',\n error:\n 'border-destructive! ring-destructive/20 ring-[3px] focus-within:border-destructive! focus-within:ring-destructive/30',\n disabled: 'opacity-50 cursor-not-allowed bg-muted! text-muted-foreground',\n readonly: 'cursor-default bg-muted/50 text-muted-foreground',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zStatus: 'default',\n },\n }\n);\n\nexport type ZCalendarVariants = VariantProps<typeof zCalendarVariants>;\n\nexport const zCalendarDayVariants = cva(\n [\n 'flex items-center justify-center size-7 text-sm rounded-[4px] cursor-pointer',\n 'transition-all duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n today: 'bg-primary/10 text-primary border border-primary',\n selected: 'bg-primary text-primary-foreground',\n inRange: 'bg-primary/10 text-foreground',\n rangeStart: 'bg-primary text-primary-foreground rounded-r-none',\n rangeEnd: 'bg-primary text-primary-foreground rounded-l-none',\n rangeSingle: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed',\n otherMonth: 'text-muted-foreground/40 hover:bg-primary/5',\n hovered: 'bg-primary/15 text-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarMonthVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-8 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary/15 text-primary',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarYearVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-6 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n current: 'bg-primary/15 text-primary',\n selected: 'bg-primary text-primary-foreground',\n disabled: 'text-muted-foreground/50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const zCalendarQuarterVariants = cva(\n [\n 'flex items-center justify-center text-sm rounded-[4px] cursor-pointer px-15 py-1.5',\n 'transition-colors duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n state: {\n default: 'hover:bg-primary/10 text-foreground',\n selected: 'bg-primary text-primary-foreground',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZCalendarDay } from '../z-calendar.types';\nimport { getDayState } from '../z-calendar.utils';\nimport { zCalendarDayVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zDayClasses',\n standalone: true,\n pure: true,\n})\nexport class ZDayClassesPipe implements PipeTransform {\n transform(day: ZCalendarDay): string {\n const state = getDayState(day);\n return zCalendarDayVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZQuickSelectPreset } from '../z-calendar.types';\n\n@Pipe({\n name: 'zIsPresetDisabled',\n standalone: true,\n pure: true,\n})\nexport class ZIsPresetDisabledPipe implements PipeTransform {\n transform(preset: ZQuickSelectPreset, disabledDateFn: ((date: Date) => boolean) | null): boolean {\n if (preset.key === 'custom' || !disabledDateFn) {\n return false;\n }\n\n const value = preset.getValue();\n if (!value) {\n return false;\n }\n\n if (value instanceof Date) {\n return disabledDateFn(value);\n }\n\n if (value.start && disabledDateFn(value.start)) {\n return true;\n }\n if (value.end && disabledDateFn(value.end)) {\n return true;\n }\n\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getMonthState } from '../z-calendar.utils';\nimport { zCalendarMonthVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zMonthClasses',\n standalone: true,\n pure: true,\n})\nexport class ZMonthClassesPipe implements PipeTransform {\n transform(monthIndex: number, currentMonthIndex: number): string {\n const state = getMonthState(monthIndex, currentMonthIndex);\n return zCalendarMonthVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getQuarterState } from '../z-calendar.utils';\nimport { zCalendarQuarterVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zQuarterClasses',\n standalone: true,\n pure: true,\n})\nexport class ZQuarterClassesPipe implements PipeTransform {\n transform(quarterIndex: number, currentQuarterIndex: number): string {\n const state = getQuarterState(quarterIndex, currentQuarterIndex);\n return zCalendarQuarterVariants({ state });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getYearState } from '../z-calendar.utils';\nimport { zCalendarYearVariants } from '../z-calendar.variants';\n\n@Pipe({\n name: 'zYearClasses',\n standalone: true,\n pure: true,\n})\nexport class ZYearClassesPipe implements PipeTransform {\n transform(year: number, currentYear: number): string {\n const state = getYearState(year, currentYear);\n return zCalendarYearVariants({ state });\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n type OnInit,\n output,\n signal,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport type { ZPopoverControl } from '@shival99/z-ui/components/z-popover';\nimport { zGenerateId, zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { merge } from 'rxjs';\nimport { ZDayClassesPipe } from './pipes/z-day-classes.pipe';\nimport { ZIsPresetDisabledPipe } from './pipes/z-disabled.pipe';\nimport { ZMonthClassesPipe } from './pipes/z-month-classes.pipe';\nimport { ZQuarterClassesPipe } from './pipes/z-quarter-classes.pipe';\nimport { ZYearClassesPipe } from './pipes/z-year-classes.pipe';\nimport type {\n ZCalendarDay,\n ZCalendarControl,\n ZCalendarMode,\n ZCalendarSize,\n ZCalendarValidator,\n ZCalendarValue,\n ZCalendarValueType,\n ZCalendarView,\n ZDateRange,\n ZQuickSelectPreset,\n} from './z-calendar.types';\nimport {\n addDays,\n addMonths,\n addYears,\n formatDate,\n formatTimeValue,\n fromISOString,\n generateCalendarGrid,\n getMonthNames,\n getQuickSelectPresets,\n getToday,\n getWeekdayNames,\n getYearRange,\n isSameDay,\n isSameMonth,\n normalizeRange,\n parseDate,\n parseTimeValue,\n setMonth,\n setTime,\n setYear,\n toISOString,\n} from './z-calendar.utils';\nimport { zCalendarVariants } from './z-calendar.variants';\n\n@Component({\n selector: 'z-calendar',\n imports: [\n ZIconComponent,\n ZPopoverDirective,\n ZButtonComponent,\n ZDayClassesPipe,\n ZMonthClassesPipe,\n ZQuarterClassesPipe,\n ZYearClassesPipe,\n ZIsPresetDisabledPipe,\n ],\n standalone: true,\n templateUrl: './z-calendar.component.html',\n styleUrl: './z-calendar.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCalendarComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'zCalendar',\n})\nexport class ZCalendarComponent implements OnInit, ControlValueAccessor {\n public readonly class = input<ClassValue>('');\n public readonly zMode = input<ZCalendarMode>('single');\n public readonly zSize = input<ZCalendarSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zLabelClass = input<string>('');\n public readonly zPlaceholder = input<string>('Chọn ngày...');\n public readonly zRequired = input(false, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zReadonly = input(false, { transform: zTransform });\n public readonly zShowTime = input(false, { transform: zTransform });\n public readonly zTimeFormat = input<'12h' | '24h'>('24h');\n public readonly zShowHour = input(true, { transform: zTransform });\n public readonly zShowMinute = input(true, { transform: zTransform });\n public readonly zShowSecond = input(true, { transform: zTransform });\n public readonly zQuickSelect = input(false, { transform: zTransform });\n public readonly zAllowClear = input(true, { transform: zTransform });\n public readonly zFormat = input<string>('DD/MM/YYYY');\n public readonly zMinDate = input<Date | null>(null);\n public readonly zMaxDate = input<Date | null>(null);\n public readonly zValueType = input<ZCalendarValueType>('date');\n public readonly zValidators = input<ZCalendarValidator[]>([]);\n public readonly zLocale = input<string>('vi-VN');\n public readonly zShowOk = input(false, { transform: zTransform });\n public readonly zOkText = input<string>('Áp dụng');\n public readonly zShowCancel = input(false, { transform: zTransform });\n public readonly zCancelText = input<string>('Huỷ');\n public readonly zDisabledDate = input<((date: Date) => boolean) | null>(null);\n\n public readonly zControl = output<ZCalendarControl>();\n public readonly zChange = output<ZCalendarValue>();\n\n protected readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('triggerEl');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected readonly pickerId = zGenerateId('z-calendar');\n protected readonly weekdayNames = getWeekdayNames('vi-VN');\n protected readonly monthNames = getMonthNames('vi-VN');\n protected readonly quickSelectPresets = getQuickSelectPresets();\n\n protected readonly formattedHour = computed(() => {\n const h = this._hour();\n if (this.zTimeFormat() === '12h') {\n const h12 = h % 12 || 12;\n return formatTimeValue(h12);\n }\n return formatTimeValue(h);\n });\n\n protected readonly formattedMinute = computed(() => formatTimeValue(this._minute()));\n protected readonly formattedSecond = computed(() => formatTimeValue(this._second()));\n\n private readonly _popoverControl = signal<ZPopoverControl | null>(null);\n private readonly _selectedDate = signal<Date | null>(null);\n private readonly _rangeStart = signal<Date | null>(null);\n private readonly _rangeEnd = signal<Date | null>(null);\n private readonly _hoveredDate = signal<Date | null>(null);\n private readonly _currentMonth = signal<Date>(getToday());\n private readonly _endMonth = signal<Date>(addMonths(getToday(), 1));\n private readonly _currentView = signal<ZCalendarView>('day');\n private readonly _endView = signal<ZCalendarView>('day');\n private readonly _hour = signal(0);\n private readonly _minute = signal(0);\n private readonly _second = signal(0);\n private readonly _period = signal<'AM' | 'PM'>('AM');\n private readonly _hourEnd = signal(0);\n private readonly _minuteEnd = signal(0);\n private readonly _secondEnd = signal(0);\n private readonly _periodEnd = signal<'AM' | 'PM'>('AM');\n private readonly _disabled = signal(false);\n private readonly _touched = signal(false);\n private readonly _dirty = signal(false);\n private readonly _formControl = signal<AbstractControl | null>(null);\n private readonly _formStateVersion = signal(0);\n private readonly _inputDisplayValue = signal<string>('');\n private readonly _backupSelectedDate = signal<Date | null>(null);\n private readonly _backupRangeStart = signal<Date | null>(null);\n private readonly _backupRangeEnd = signal<Date | null>(null);\n private readonly _activePresetKey = signal<string | null>(null);\n private readonly _hasViewChanged = signal(false);\n private readonly _hasEndViewChanged = signal(false);\n private readonly _appliedViaOk = signal(false);\n private readonly _skipBlurHandler = signal(false);\n private readonly _injector = inject(Injector);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _cdr = inject(ChangeDetectorRef);\n\n private _onChange: (value: ZCalendarValue) => void = () => void 0;\n private _onTouched: () => void = () => void 0;\n private _ngControl: NgControl | null = null;\n\n protected readonly isOpen = computed(() => this._popoverControl()?.isVisible() ?? false);\n protected readonly hoveredDate = this._hoveredDate.asReadonly();\n protected readonly currentView = this._currentView.asReadonly();\n protected readonly hour = this._hour.asReadonly();\n protected readonly minute = this._minute.asReadonly();\n protected readonly second = this._second.asReadonly();\n protected readonly period = this._period.asReadonly();\n protected readonly inputDisplayValue = this._inputDisplayValue.asReadonly();\n protected readonly activePresetKey = this._activePresetKey.asReadonly();\n protected readonly hasViewChanged = this._hasViewChanged.asReadonly();\n protected readonly hasEndViewChanged = this._hasEndViewChanged.asReadonly();\n\n protected readonly quarterNames = ['Q1', 'Q2', 'Q3', 'Q4'];\n protected readonly currentQuarterIndex = computed(() => {\n const date = this._selectedDate();\n return date ? Math.floor(date.getMonth() / 3) : -1;\n });\n\n protected readonly isDisabled = computed(() => this._disabled() || this.zDisabled());\n protected readonly isRangeMode = computed(() => this.zMode() === 'range');\n protected readonly canApply = computed(() => {\n if (this.isTimeMode()) {\n return true;\n }\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly showOkButton = computed(() => this.zShowOk() || this.zShowTime() || this.isTimeMode());\n\n protected readonly showCancelButton = computed(() => this.zShowCancel() || this.zShowTime() || this.isTimeMode());\n\n protected readonly isTimeMode = computed(() => this.zMode() === 'time');\n protected readonly isMonthMode = computed(() => this.zMode() === 'month');\n protected readonly isYearMode = computed(() => this.zMode() === 'year');\n protected readonly isQuarterMode = computed(() => this.zMode() === 'quarter');\n\n protected readonly todayButtonText = computed(() => {\n if (this.isQuarterMode()) {\n return 'Quý này';\n }\n if (this.isYearMode()) {\n return 'Năm này';\n }\n if (this.isMonthMode()) {\n return 'Tháng này';\n }\n if (this.zShowTime() || this.isTimeMode()) {\n return 'Bây giờ';\n }\n return 'Hôm nay';\n });\n\n protected readonly currentMonth = computed(() => this._currentMonth());\n protected readonly currentYear = computed(() => this._currentMonth().getFullYear());\n protected readonly currentMonthIndex = computed(() => this._currentMonth().getMonth());\n\n protected readonly currentMonthName = computed(() => {\n const month = this._currentMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'long' });\n });\n\n protected readonly yearRange = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 12);\n });\n\n protected readonly yearRangeSmall = computed(() => {\n const currentYear = this._currentMonth().getFullYear();\n return getYearRange(currentYear, 9);\n });\n\n protected readonly calendarDays = computed<ZCalendarDay[][]>(() => {\n const month = this._currentMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this._hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly endMonth = computed(() => this._endMonth());\n\n protected readonly endMonthName = computed(() => {\n const month = this._endMonth();\n return month.toLocaleDateString(this.zLocale(), { month: 'long' });\n });\n\n protected readonly endMonthYear = computed(() => this._endMonth().getFullYear());\n\n protected readonly calendarDaysEnd = computed<ZCalendarDay[][]>(() => {\n const month = this._endMonth();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n return generateCalendarGrid(year, monthIndex, {\n selectedDate: this._selectedDate(),\n rangeStart: this._rangeStart(),\n rangeEnd: this._rangeEnd(),\n hoveredDate: this._hoveredDate(),\n minDate: this.zMinDate(),\n maxDate: this.zMaxDate(),\n disabledDate: this.zDisabledDate(),\n });\n });\n\n protected readonly formattedHourEnd = computed(() =>\n formatTimeValue(this.zTimeFormat() === '12h' ? this._hourEnd() % 12 || 12 : this._hourEnd())\n );\n\n protected readonly formattedMinuteEnd = computed(() => formatTimeValue(this._minuteEnd()));\n protected readonly formattedSecondEnd = computed(() => formatTimeValue(this._secondEnd()));\n\n protected readonly periodEnd = computed(() => this._periodEnd());\n protected readonly endView = this._endView.asReadonly();\n\n protected readonly endYearRange = computed(() => {\n const currentYear = this._endMonth().getFullYear();\n return getYearRange(currentYear);\n });\n\n protected isStartMonthDisabled(monthIndex: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const year = this._currentMonth().getFullYear();\n const monthDate = new Date(year, monthIndex, 1);\n if (disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const startYear = this._currentMonth().getFullYear();\n const endMonth = this._endMonth();\n const endYear = endMonth.getFullYear();\n const endMonthIndex = endMonth.getMonth();\n\n if (startYear > endYear) {\n return true;\n }\n\n if (startYear === endYear && monthIndex > endMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected isEndMonthDisabled(monthIndex: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const year = this._endMonth().getFullYear();\n const monthDate = new Date(year, monthIndex, 1);\n if (disabledDateFn(monthDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const startMonth = this._currentMonth();\n const startYear = startMonth.getFullYear();\n const startMonthIndex = startMonth.getMonth();\n const endYear = this._endMonth().getFullYear();\n\n if (endYear < startYear) {\n return true;\n }\n if (endYear === startYear && monthIndex < startMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected isStartYearDisabled(year: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const endYear = this._endMonth().getFullYear();\n const startMonthIndex = this._currentMonth().getMonth();\n const endMonthIndex = this._endMonth().getMonth();\n\n if (year > endYear) {\n return true;\n }\n if (year === endYear && startMonthIndex >= endMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected isEndYearDisabled(year: number): boolean {\n const disabledDateFn = this.zDisabledDate();\n if (disabledDateFn) {\n const yearDate = new Date(year, 0, 1);\n if (disabledDateFn(yearDate)) {\n return true;\n }\n }\n\n if (!this.isRangeMode()) {\n return false;\n }\n\n const startYear = this._currentMonth().getFullYear();\n const startMonthIndex = this._currentMonth().getMonth();\n const endMonthIndex = this._endMonth().getMonth();\n\n if (year < startYear) {\n return true;\n }\n if (year === startYear && endMonthIndex <= startMonthIndex) {\n return true;\n }\n return false;\n }\n\n protected readonly canNavigateStartNext = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const current = this._currentMonth();\n const end = this._endMonth();\n const view = this._currentView();\n\n if (view === 'day') {\n const startNext = addMonths(current, 1);\n return (\n startNext.getFullYear() < end.getFullYear() ||\n (startNext.getFullYear() === end.getFullYear() && startNext.getMonth() < end.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const startNextYear = addYears(current, 1);\n return startNextYear.getFullYear() < end.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(current.getFullYear());\n const lastYearInRange = yearRange[yearRange.length - 1];\n return lastYearInRange < end.getFullYear() - 1;\n }\n\n return true;\n });\n\n protected readonly canNavigateEndPrev = computed(() => {\n if (!this.isRangeMode()) {\n return true;\n }\n\n const start = this._currentMonth();\n const end = this._endMonth();\n const view = this._endView();\n\n if (view === 'day') {\n const endPrev = addMonths(end, -1);\n return (\n endPrev.getFullYear() > start.getFullYear() ||\n (endPrev.getFullYear() === start.getFullYear() && endPrev.getMonth() > start.getMonth())\n );\n }\n\n if (view === 'month' || view === 'quarter') {\n const endPrevYear = addYears(end, -1);\n return endPrevYear.getFullYear() > start.getFullYear();\n }\n\n if (view === 'year') {\n const yearRange = getYearRange(end.getFullYear());\n const firstYearInRange = yearRange[0];\n return firstYearInRange > start.getFullYear() + 1;\n }\n\n return true;\n });\n\n protected readonly displayValue = computed(() => {\n let format = this.zFormat();\n\n if (this.zShowTime() || this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._period()}` : '';\n format = this.isTimeMode() ? timeFormat + periodSuffix : `${this.zFormat()} ${timeFormat}${periodSuffix}`;\n }\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return '';\n }\n\n return `${formatDate(start, format)} - ${formatDate(end, format)}`;\n }\n\n const date = this._selectedDate();\n if (!date) {\n return '';\n }\n\n if (this.isMonthMode()) {\n return date.toLocaleDateString(this.zLocale(), { month: 'long', year: 'numeric' });\n }\n if (this.isYearMode()) {\n return date.getFullYear().toString();\n }\n if (this.isQuarterMode()) {\n const quarter = Math.floor(date.getMonth() / 3) + 1;\n return `Q${quarter} ${date.getFullYear()}`;\n }\n\n return formatDate(date, format);\n });\n\n private readonly _inputDisplayStart = signal<string>('');\n private readonly _inputDisplayEnd = signal<string>('');\n\n protected readonly inputDisplayStart = computed(() => this._inputDisplayStart());\n protected readonly inputDisplayEnd = computed(() => this._inputDisplayEnd());\n\n protected readonly displayValueStart = computed(() => {\n const format = this._getDisplayFormat();\n const start = this._rangeStart();\n return start ? formatDate(start, format) : '';\n });\n\n protected readonly displayValueEnd = computed(() => {\n const format = this._getDisplayFormat();\n const end = this._rangeEnd();\n return end ? formatDate(end, format) : '';\n });\n\n private _getDisplayFormat(): string {\n let format = this.zFormat();\n if (this.zShowTime() || this.isTimeMode()) {\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n const timeFormat = timeParts.join(':');\n const periodSuffix = this.zTimeFormat() === '12h' ? ` ${this._period()}` : '';\n format = this.isTimeMode() ? timeFormat + periodSuffix : `${this.zFormat()} ${timeFormat}${periodSuffix}`;\n }\n return format;\n }\n\n protected readonly showClearButton = computed(() => {\n if (!this.zAllowClear() || this.isDisabled() || this.zReadonly() || this.isOpen()) {\n return false;\n }\n\n return this.displayValue() !== '';\n });\n\n protected readonly hasValue = computed(() => {\n if (this.isRangeMode()) {\n return this._rangeStart() !== null && this._rangeEnd() !== null;\n }\n return this._selectedDate() !== null;\n });\n\n protected readonly currentStatus = computed(() => {\n if (this.isDisabled()) {\n return 'disabled';\n }\n if (this.zReadonly()) {\n return 'readonly';\n }\n if (this.isOpen()) {\n return 'open';\n }\n if (this.hasError()) {\n return 'error';\n }\n return 'default';\n });\n\n protected readonly triggerClasses = computed(() =>\n zMergeClasses(\n zCalendarVariants({\n zSize: this.zSize(),\n zStatus: this.currentStatus() as 'default' | 'open' | 'error' | 'disabled' | 'readonly',\n }),\n this.class()\n )\n );\n\n private readonly _shouldShowValidation = computed(() => {\n const control = this._formControl();\n this._formStateVersion();\n\n if (control) {\n return control.dirty;\n }\n return this._dirty() || this._touched();\n });\n\n protected readonly hasError = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return true;\n }\n\n const control = this._formControl();\n this._formStateVersion();\n\n if (!control) {\n return false;\n }\n\n return control.invalid && this._shouldShowValidation();\n });\n\n protected readonly showError = computed(() => this.hasError());\n\n protected readonly errorMessage = computed(() => {\n const customErrors = this._getValidationErrors();\n if (customErrors.length > 0) {\n return customErrors[0];\n }\n\n const control = this._formControl();\n const errors = control?.errors;\n\n if (!errors) {\n return '';\n }\n\n const validators = this.zValidators();\n for (const validator of validators) {\n if (errors[validator.error]) {\n return validator.message;\n }\n }\n\n if (errors['required']) {\n return 'Vui lòng chọn ngày';\n }\n return '';\n });\n\n constructor() {\n effect(() => {\n const date = this._selectedDate();\n if (date && this.zShowTime()) {\n this._hour.set(date.getHours());\n this._minute.set(date.getMinutes());\n this._second.set(date.getSeconds());\n }\n });\n }\n\n ngOnInit(): void {\n void Promise.resolve().then(() => {\n try {\n this._ngControl = this._injector.get(NgControl, null);\n if (!this._ngControl?.control) {\n return;\n }\n\n const { control } = this._ngControl;\n this._formControl.set(control);\n merge(control.statusChanges, control.valueChanges, control.events)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formStateVersion.update(v => v + 1);\n this._cdr.markForCheck();\n });\n } catch {\n this._ngControl = null;\n }\n });\n\n setTimeout(() => this._emitControl());\n }\n\n public writeValue(value: ZCalendarValue): void {\n if (value === null || value === undefined) {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n\n const valueType = this.zValueType();\n\n if (this.isRangeMode()) {\n if (typeof value === 'object' && 'start' in value && 'end' in value) {\n const range = value as ZDateRange;\n this._rangeStart.set(range.start);\n this._rangeEnd.set(range.end);\n }\n return;\n }\n\n let date: Date | null = null;\n\n if (value instanceof Date) {\n date = value;\n }\n\n if (!date && typeof value === 'string') {\n date = valueType === 'iso' ? fromISOString(value) : parseDate(value, this.zFormat());\n }\n\n if (!date) {\n return;\n }\n\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._updateInputDisplay();\n }\n\n public registerOnChange(fn: (value: ZCalendarValue) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public open(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n this._popoverControl()?.show();\n }\n\n public close(): void {\n this._popoverControl()?.close();\n }\n\n public toggle(): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n const popover = this._popoverControl();\n if (!popover) {\n return;\n }\n\n if (popover.isVisible()) {\n if (!this.showCancelButton()) {\n this.close();\n }\n return;\n }\n\n this.open();\n }\n\n public clear(): void {\n this.onClear(new MouseEvent('click'));\n }\n\n public focus(): void {\n this.triggerRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this.triggerRef()?.nativeElement.blur();\n }\n\n public reset(): void {\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._hour.set(0);\n this._minute.set(0);\n this._second.set(0);\n this._touched.set(false);\n this._dirty.set(false);\n this._inputDisplayValue.set('');\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsPristine();\n this._ngControl.control.markAsUntouched();\n }\n }\n\n public validate(): void {\n this._touched.set(true);\n this._dirty.set(true);\n this._onTouched();\n\n if (this._ngControl?.control) {\n this._ngControl.control.markAsDirty();\n this._ngControl.control.markAsTouched();\n }\n }\n\n public markAsTouched(): void {\n this._touched.set(true);\n this._onTouched();\n }\n\n public markAsUntouched(): void {\n this._touched.set(false);\n }\n\n public markAsDirty(): void {\n this._dirty.set(true);\n }\n\n public markAsPristine(): void {\n this._dirty.set(false);\n }\n\n protected onPopoverShow(): void {\n this._backupIfNeeded();\n this._appliedViaOk.set(false);\n this._hasViewChanged.set(false);\n this._hasEndViewChanged.set(false);\n\n if (this.isMonthMode()) {\n this._currentView.set('month');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isYearMode()) {\n this._currentView.set('year');\n this._initializeTimeIfNeeded();\n return;\n }\n\n if (this.isQuarterMode()) {\n this._currentView.set('quarter');\n this._initializeTimeIfNeeded();\n return;\n }\n\n this._currentView.set('day');\n this._initializeTimeIfNeeded();\n\n if (this.isRangeMode()) {\n this._endView.set('day');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n\n if (!this.isRangeMode()) {\n this._activePresetKey.set(null);\n const selected = this._selectedDate();\n if (selected) {\n this._currentMonth.set(selected);\n return;\n }\n this._resetCalendarsToDefault();\n return;\n }\n\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (start && end) {\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this._activePresetKey.set(this._detectMatchingPreset(start, end));\n return;\n }\n\n if (this.zQuickSelect()) {\n this._activePresetKey.set(null);\n this._resetCalendarsToDefault();\n return;\n }\n\n this._activePresetKey.set(null);\n this._resetCalendarsToDefault();\n }\n\n private _initializeTimeIfNeeded(): void {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return;\n }\n\n const now = new Date();\n const selected = this._selectedDate();\n this._syncTimeSignals(selected ?? now);\n\n if (!this.isRangeMode()) {\n return;\n }\n\n const end = this._rangeEnd();\n this._syncEndTimeSignals(end ?? now);\n }\n\n private _syncEndTimeSignals(date: Date): void {\n const hours = date.getHours();\n this._hourEnd.set(hours);\n this._minuteEnd.set(date.getMinutes());\n this._secondEnd.set(date.getSeconds());\n this._periodEnd.set(hours >= 12 ? 'PM' : 'AM');\n }\n\n private _resetCalendarsToDefault(): void {\n const today = getToday();\n this._currentMonth.set(today);\n this._endMonth.set(addMonths(today, 1));\n this._currentView.set('day');\n this._endView.set('day');\n }\n\n private _backupIfNeeded(): void {\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n if (needsConfirmation) {\n this._backupSelectedDate.set(this._selectedDate());\n this._backupRangeStart.set(this._rangeStart());\n this._backupRangeEnd.set(this._rangeEnd());\n }\n }\n\n protected onPopoverHide(): void {\n this._hoveredDate.set(null);\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n if (needsConfirmation && !this._appliedViaOk()) {\n this._restoreFromBackup();\n }\n\n if (this._dirty()) {\n this._touched.set(true);\n }\n\n this._onTouched();\n this._inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _restoreFromBackup(): void {\n this._selectedDate.set(this._backupSelectedDate());\n this._rangeStart.set(this._backupRangeStart());\n this._rangeEnd.set(this._backupRangeEnd());\n this._dirty.set(false);\n const backup = this._backupSelectedDate();\n if (backup) {\n this._syncTimeSignals(backup);\n }\n }\n\n protected onPopoverControl(control: ZPopoverControl): void {\n this._popoverControl.set(control);\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.zReadonly()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this._popoverControl()?.toggle();\n return;\n }\n\n if (event.key === 'Escape' && this.isOpen()) {\n this.close();\n }\n }\n\n protected onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayValue.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n if (this.isRangeMode()) {\n const parts = trimmedValue.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start) {\n this._rangeStart.set(start);\n this._currentMonth.set(start);\n }\n if (end) {\n this._rangeEnd.set(end);\n this._endMonth.set(end);\n }\n }\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (date) {\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n }\n\n private _getExpectedFormatLength(format: string): number {\n return format.replace(/\\[.*?\\]/g, ' ').length;\n }\n\n protected onStartInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayStart.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n this._inputDisplayStart.set(this.displayValueStart());\n return;\n }\n\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n }\n\n protected onEndInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const { value } = input;\n\n this._inputDisplayEnd.set(value);\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return;\n }\n\n const format = this._getParseFormat();\n const expectedLength = this._getExpectedFormatLength(format);\n if (trimmedValue.length < expectedLength) {\n return;\n }\n\n const date = parseDate(trimmedValue, format);\n if (!date) {\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n this._inputDisplayEnd.set(this.displayValueEnd());\n return;\n }\n\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n }\n\n protected onStartInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n const endDate = this._rangeEnd();\n if (endDate && date >= endDate) {\n input.value = this.displayValueStart();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeStart.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n input.blur();\n }\n\n protected onEndInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n const format = this._getParseFormat();\n const date = parseDate(value, format);\n\n if (!date) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n const startDate = this._rangeStart();\n if (startDate && date <= startDate) {\n input.value = this.displayValueEnd();\n input.blur();\n return;\n }\n\n this._skipBlurHandler.set(true);\n this._rangeEnd.set(date);\n this._endMonth.set(date);\n this._syncEndTimeSignals(date);\n this._dirty.set(true);\n input.blur();\n }\n\n protected onInputFocus(_event: FocusEvent): void {\n this._backupSelectedDate.set(this._selectedDate());\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this._skipBlurHandler()) {\n this._skipBlurHandler.set(false);\n return;\n }\n\n const needsConfirmation = this.showOkButton() || this.showCancelButton();\n\n if (needsConfirmation && this.isOpen()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n const currentValue = input.value.trim();\n const format = this._getParseFormat();\n\n if (!currentValue) {\n this._selectedDate.set(null);\n this._backupSelectedDate.set(null);\n this._inputDisplayValue.set('');\n this._applyValue();\n return;\n }\n\n const parsed = parseDate(currentValue, format);\n if (parsed) {\n this._selectedDate.set(parsed);\n this._currentMonth.set(parsed);\n this._syncTimeSignals(parsed);\n this._backupSelectedDate.set(parsed);\n this._inputDisplayValue.set(this.displayValue());\n this._applyValue();\n return;\n }\n\n const backup = this._backupSelectedDate();\n this._selectedDate.set(backup);\n this._inputDisplayValue.set(this.displayValue());\n }\n\n protected onInputEnter(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const value = input.value.trim();\n\n if (!value) {\n this._skipBlurHandler.set(true);\n this._clearDateValues();\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n const format = this._getParseFormat();\n if (this.isRangeMode()) {\n const parts = value.split(' - ');\n if (parts.length === 2) {\n const start = parseDate(parts[0].trim(), format);\n const end = parseDate(parts[1].trim(), format);\n if (start && end) {\n this._skipBlurHandler.set(true);\n const swapped = start > end;\n const rangeStart = swapped ? end : start;\n const rangeEnd = swapped ? start : end;\n this._rangeStart.set(rangeStart);\n this._rangeEnd.set(rangeEnd);\n this._currentMonth.set(rangeStart);\n this._endMonth.set(rangeEnd);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n }\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n return;\n }\n\n const date = parseDate(value, format);\n if (date) {\n this._skipBlurHandler.set(true);\n this._selectedDate.set(date);\n this._currentMonth.set(date);\n this._syncTimeSignals(date);\n this._dirty.set(true);\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n input.blur();\n return;\n }\n\n this._restoreFromBackup();\n this._updateInputDisplay();\n this.close();\n input.blur();\n }\n\n protected onCalendarKeydown(event: KeyboardEvent): void {\n if (this._currentView() !== 'day') {\n return;\n }\n\n const { key } = event;\n if (key === 'Escape') {\n this.close();\n return;\n }\n\n if (key === 'Enter') {\n if (!this.isRangeMode() || this.zShowTime()) {\n this.onOkClick();\n }\n return;\n }\n\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n event.preventDefault();\n this._navigateByArrowKey(key);\n }\n }\n\n protected onDayClick(day: ZCalendarDay): void {\n if (day.isDisabled) {\n return;\n }\n\n const clickedDate = day.date;\n\n if (this.isRangeMode()) {\n this._handleRangeSelection(clickedDate);\n return;\n }\n\n this._handleSingleSelection(clickedDate);\n }\n\n protected onDayHover(day: ZCalendarDay): void {\n if (this.isRangeMode() && this._rangeStart() && !this._rangeEnd()) {\n this._hoveredDate.set(day.date);\n }\n }\n\n protected onDayLeave(): void {\n if (this.isRangeMode()) {\n this._hoveredDate.set(null);\n }\n }\n\n protected onMonthClick(monthIndex: number): void {\n const currentDate = this._currentMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n if (this.isRangeMode()) {\n const endMonth = this._endMonth();\n const isExceedingEnd =\n newMonth.getFullYear() > endMonth.getFullYear() ||\n (newMonth.getFullYear() === endMonth.getFullYear() && newMonth.getMonth() >= endMonth.getMonth());\n\n if (isExceedingEnd) {\n newMonth = addMonths(endMonth, -1);\n }\n }\n\n this._currentMonth.set(newMonth);\n this._hasViewChanged.set(true);\n this._currentView.set('day');\n }\n\n protected onYearClick(year: number): void {\n const currentDate = this._currentMonth();\n\n if (this.isYearMode()) {\n this._selectedDate.set(setYear(new Date(year, 0, 1), year));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n let newYear = year;\n\n if (this.isRangeMode()) {\n const endYear = this._endMonth().getFullYear();\n if (newYear >= endYear) {\n newYear = endYear - 1;\n }\n }\n\n this._currentMonth.set(setYear(currentDate, newYear));\n this._hasViewChanged.set(true);\n this._currentView.set(this.isQuarterMode() ? 'quarter' : 'month');\n }\n\n protected onQuarterClick(quarterIndex: number): void {\n const currentYear = this._currentMonth().getFullYear();\n const firstMonthOfQuarter = quarterIndex * 3;\n const date = new Date(currentYear, firstMonthOfQuarter, 1);\n this._selectedDate.set(date);\n this._dirty.set(true);\n this._applyValue();\n this.close();\n }\n\n protected onMonthSelect(monthIndex: number): void {\n if (this.isMonthMode()) {\n const currentYear = this._currentMonth().getFullYear();\n this._selectedDate.set(new Date(currentYear, monthIndex, 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n this.onMonthClick(monthIndex);\n }\n\n protected onQuickSelect(preset: ZQuickSelectPreset): void {\n this._activePresetKey.set(preset.key);\n if (preset.key === 'custom') {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n return;\n }\n\n const value = preset.getValue();\n if (!value) {\n return;\n }\n\n if (value instanceof Date) {\n this._rangeStart.set(value);\n this._rangeEnd.set(value);\n this._currentMonth.set(value);\n this._endMonth.set(addMonths(value, 1));\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n this._rangeStart.set(value.start);\n this._rangeEnd.set(value.end);\n\n const start = value.start ?? getToday();\n const end = value.end ?? getToday();\n\n this._currentMonth.set(start);\n this._endMonth.set(isSameMonth(start, end) ? addMonths(end, 1) : end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onTodayClick(): void {\n const now = new Date();\n const today = getToday();\n this._currentMonth.set(today);\n\n if (this.zShowTime() || this.isTimeMode()) {\n this._hour.set(now.getHours());\n this._minute.set(now.getMinutes());\n this._second.set(now.getSeconds());\n this._period.set(now.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n if (this.isMonthMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), now.getMonth(), 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isYearMode()) {\n this._selectedDate.set(new Date(now.getFullYear(), 0, 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isQuarterMode()) {\n const currentQuarter = Math.floor(now.getMonth() / 3);\n this._selectedDate.set(new Date(now.getFullYear(), currentQuarter * 3, 1));\n this._dirty.set(true);\n this._applyValue();\n this.close();\n return;\n }\n\n if (this.isTimeMode()) {\n this._selectedDate.set(now);\n this._dirty.set(true);\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n if (this.isRangeMode()) {\n const rangeDate = this.zShowTime() ? now : today;\n this._rangeStart.set(rangeDate);\n this._rangeEnd.set(rangeDate);\n this._endMonth.set(addMonths(today, 1));\n if (this.zShowTime()) {\n this._syncEndTimeSignals(now);\n }\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n return;\n }\n\n const selectedDate = this.zShowTime() ? now : today;\n this._selectedDate.set(selectedDate);\n this._dirty.set(true);\n if (!this.showOkButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n protected onClear(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this._selectedDate.set(null);\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n this._hour.set(0);\n this._minute.set(0);\n this._second.set(0);\n this._dirty.set(true);\n\n this._backupSelectedDate.set(null);\n this._backupRangeStart.set(null);\n this._backupRangeEnd.set(null);\n this._appliedViaOk.set(true);\n\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this._inputDisplayValue.set('');\n if (this.isRangeMode()) {\n this._inputDisplayStart.set('');\n this._inputDisplayEnd.set('');\n }\n\n this.close();\n }\n\n protected onCancelClick(): void {\n this.close();\n }\n\n protected onOkClick(): void {\n if (!this.canApply()) {\n return;\n }\n\n if (this.isTimeMode()) {\n let hour = this._hour();\n if (this.zTimeFormat() === '12h') {\n if (this._period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n const baseDate = this._selectedDate() ?? new Date();\n this._selectedDate.set(setTime(baseDate, hour, this._minute(), this._second()));\n }\n\n this._appliedViaOk.set(true);\n this._applyValue();\n this.close();\n }\n\n protected navigatePrevious(): void {\n const view = this._currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, -1),\n month: addYears(current, -1),\n year: addYears(current, -yearStep),\n quarter: addYears(current, -1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigateNext(): void {\n const view = this._currentView();\n const current = this._currentMonth();\n const yearStep = this.isYearMode() || this.isQuarterMode() ? 9 : 12;\n const navigationMap: Record<ZCalendarView, Date> = {\n day: addMonths(current, 1),\n month: addYears(current, 1),\n year: addYears(current, yearStep),\n quarter: addYears(current, 1),\n };\n this._currentMonth.set(navigationMap[view]);\n }\n\n protected navigatePreviousFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, -1));\n }\n\n protected navigateNextFast(): void {\n const current = this._currentMonth();\n this._currentMonth.set(addYears(current, 1));\n }\n\n protected setView(view: ZCalendarView): void {\n this._hasViewChanged.set(true);\n this._currentView.set(view);\n }\n\n protected setEndView(view: ZCalendarView): void {\n this._hasEndViewChanged.set(true);\n this._endView.set(view);\n }\n\n protected onEndMonthClick(monthIndex: number): void {\n const currentDate = this._endMonth();\n let newMonth = setMonth(currentDate, monthIndex);\n\n const startMonth = this._currentMonth();\n const isBeforeStart =\n newMonth.getFullYear() < startMonth.getFullYear() ||\n (newMonth.getFullYear() === startMonth.getFullYear() && newMonth.getMonth() <= startMonth.getMonth());\n\n if (isBeforeStart) {\n newMonth = addMonths(startMonth, 1);\n }\n\n this._endMonth.set(newMonth);\n this._hasEndViewChanged.set(true);\n this._endView.set('day');\n }\n\n protected onEndYearClick(year: number): void {\n const currentDate = this._endMonth();\n let newYear = year;\n\n const startYear = this._currentMonth().getFullYear();\n if (newYear <= startYear) {\n newYear = startYear + 1;\n }\n\n this._endMonth.set(setYear(currentDate, newYear));\n this._hasEndViewChanged.set(true);\n this._endView.set('month');\n }\n\n protected onHourInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this._hour.set(value);\n this._updateTimeToDate();\n }\n\n protected onMinuteInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._minute.set(value);\n this._updateTimeToDate();\n }\n\n protected onSecondInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._second.set(value);\n this._updateTimeToDate();\n }\n\n protected onTimeBlur(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n if (dataType === 'hour') {\n input.value = this.formattedHour();\n }\n if (dataType === 'minute') {\n input.value = this.formattedMinute();\n }\n if (dataType === 'second') {\n input.value = this.formattedSecond();\n }\n }\n\n protected navigateEndPrevious(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, -1));\n }\n\n protected navigateEndNext(): void {\n const current = this._endMonth();\n this._endMonth.set(addMonths(current, 1));\n }\n\n protected navigateEndPreviousFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, -1));\n }\n\n protected navigateEndNextFast(): void {\n const current = this._endMonth();\n this._endMonth.set(addYears(current, 1));\n }\n\n protected onHourEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 23);\n this._hourEnd.set(value);\n this._updateEndTimeToDate();\n }\n\n protected onMinuteEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._minuteEnd.set(value);\n this._updateEndTimeToDate();\n }\n\n protected onSecondEndInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const digits = input.value.replace(/\\D/g, '');\n if (digits.length !== 2) {\n return;\n }\n const value = parseTimeValue(digits, 59);\n this._secondEnd.set(value);\n this._updateEndTimeToDate();\n }\n\n protected onTimeBlurEnd(event: Event): void {\n const input = event.target as HTMLInputElement;\n const dataType = input.getAttribute('data-time-type');\n if (dataType === 'hour-end') {\n input.value = this.formattedHourEnd();\n }\n if (dataType === 'minute-end') {\n input.value = this.formattedMinuteEnd();\n }\n if (dataType === 'second-end') {\n input.value = this.formattedSecondEnd();\n }\n }\n\n protected togglePeriodEnd(): void {\n const currentPeriod = this._periodEnd();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this._periodEnd.set(newPeriod);\n\n const currentHour = this._hourEnd();\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hourEnd.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hourEnd.set(currentHour - 12);\n }\n this._updateEndTimeToDate();\n }\n\n private _updateEndTimeToDate(): void {\n const end = this._rangeEnd();\n if (!end) {\n return;\n }\n\n let hour = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n const newDate = setTime(end, hour, this._minuteEnd(), this._secondEnd());\n this._rangeEnd.set(newDate);\n this._dirty.set(true);\n }\n\n private _handleSingleSelection(date: Date): void {\n let finalDate = date;\n\n if (this.zShowTime()) {\n finalDate = setTime(date, this._hour(), this._minute(), this._second());\n }\n\n this._selectedDate.set(finalDate);\n this._dirty.set(true);\n this._inputDisplayValue.set(this.displayValue());\n\n if (!this.zShowTime() && !this.zShowOk()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _handleRangeSelection(date: Date): void {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || (start && end)) {\n let startDate = date;\n if (this.zShowTime()) {\n let hour = this._hour();\n if (this.zTimeFormat() === '12h') {\n if (this._period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n startDate = setTime(date, hour, this._minute(), this._second());\n }\n this._rangeStart.set(startDate);\n this._rangeEnd.set(null);\n this._activePresetKey.set('custom');\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set('');\n return;\n }\n\n let endDate = date;\n if (this.zShowTime()) {\n let hour = this._hourEnd();\n if (this.zTimeFormat() === '12h') {\n if (this._periodEnd() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._periodEnd() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n endDate = setTime(date, hour, this._minuteEnd(), this._secondEnd());\n }\n\n const normalized = normalizeRange(start, endDate);\n this._rangeStart.set(normalized.start);\n this._rangeEnd.set(normalized.end);\n this._dirty.set(true);\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n if (normalized.start && normalized.end) {\n this._activePresetKey.set(this._detectMatchingPreset(normalized.start, normalized.end));\n }\n\n if (!this.showOkButton() && !this.showCancelButton()) {\n this._applyValue();\n this.close();\n }\n }\n\n private _updateTimeToDate(): void {\n if (!this.zShowTime()) {\n return;\n }\n\n let hour = this._hour();\n if (this.zTimeFormat() === '12h') {\n if (this._period() === 'PM' && hour < 12) {\n hour += 12;\n }\n if (this._period() === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n if (start) {\n this._rangeStart.set(setTime(start, hour, this._minute(), this._second()));\n this._dirty.set(true);\n }\n return;\n }\n\n const selected = this._selectedDate();\n if (selected) {\n this._selectedDate.set(setTime(selected, hour, this._minute(), this._second()));\n }\n }\n\n private _detectMatchingPreset(start: Date, end: Date): string | null {\n for (const preset of this.quickSelectPresets) {\n if (preset.key === 'custom') {\n continue;\n }\n const value = preset.getValue();\n if (value && !(value instanceof Date)) {\n if (value.start && value.end && isSameDay(start, value.start) && isSameDay(end, value.end)) {\n return preset.key;\n }\n }\n }\n return 'custom';\n }\n\n private _applyValue(): void {\n const emitValue = this._getEmitValue();\n this._onChange(emitValue);\n this.zChange.emit(emitValue);\n this._dirty.set(true);\n this._inputDisplayValue.set(this.displayValue());\n if (this.isRangeMode()) {\n this._inputDisplayStart.set(this.displayValueStart());\n this._inputDisplayEnd.set(this.displayValueEnd());\n }\n }\n\n private _getEmitValue(): ZCalendarValue {\n const valueType = this.zValueType();\n const format = this.zShowTime() ? `${this.zFormat()} HH:mm:ss` : this.zFormat();\n\n if (this.isRangeMode()) {\n const start = this._rangeStart();\n const end = this._rangeEnd();\n\n if (!start || !end) {\n return null;\n }\n\n if (valueType === 'iso') {\n return { start: toISOString(start), end: toISOString(end) } as unknown as ZCalendarValue;\n }\n\n if (valueType === 'string') {\n return { start: formatDate(start, format), end: formatDate(end, format) } as unknown as ZCalendarValue;\n }\n\n return { start, end };\n }\n\n const date = this._selectedDate();\n if (!date) {\n return null;\n }\n\n if (valueType === 'iso') {\n return toISOString(date);\n }\n if (valueType === 'string') {\n return formatDate(date, format);\n }\n\n return date;\n }\n\n private _getValidationErrors(): string[] {\n const validators = this.zValidators();\n const errors: string[] = [];\n\n if (!this._shouldShowValidation()) {\n return errors;\n }\n\n const isRequired = this.zRequired() || this._formControl()?.errors?.['required'];\n if (isRequired) {\n const hasValidValue = this.isRangeMode() ? !!(this._rangeStart() && this._rangeEnd()) : !!this._selectedDate();\n if (!hasValidValue) {\n errors.push('Vui lòng chọn ngày');\n }\n }\n\n const value = this._getEmitValue();\n for (const validator of validators) {\n if (!validator.validate(value)) {\n errors.push(validator.message);\n }\n }\n\n return errors;\n }\n\n private _navigateByArrowKey(key: string): void {\n const currentDate = this._selectedDate() ?? getToday();\n let newDate: Date;\n\n switch (key) {\n case 'ArrowUp':\n newDate = addDays(currentDate, -7);\n break;\n case 'ArrowDown':\n newDate = addDays(currentDate, 7);\n break;\n case 'ArrowLeft':\n newDate = addDays(currentDate, -1);\n break;\n case 'ArrowRight':\n newDate = addDays(currentDate, 1);\n break;\n default:\n return;\n }\n\n const minDate = this.zMinDate();\n const maxDate = this.zMaxDate();\n\n if (minDate && newDate < minDate) {\n return;\n }\n if (maxDate && newDate > maxDate) {\n return;\n }\n\n this._selectedDate.set(newDate);\n\n if (!isSameMonth(newDate, this._currentMonth())) {\n this._currentMonth.set(newDate);\n }\n }\n\n private _syncTimeSignals(date: Date): void {\n this._hour.set(date.getHours());\n this._minute.set(date.getMinutes());\n this._second.set(date.getSeconds());\n this._period.set(date.getHours() >= 12 ? 'PM' : 'AM');\n }\n\n private _getParseFormat(): string {\n if (!this.zShowTime() && !this.isTimeMode()) {\n return this.zFormat();\n }\n\n const timeParts: string[] = [];\n if (this.zShowHour()) {\n timeParts.push(this.zTimeFormat() === '12h' ? 'hh' : 'HH');\n }\n if (this.zShowMinute()) {\n timeParts.push('mm');\n }\n if (this.zShowSecond()) {\n timeParts.push('ss');\n }\n\n const timeFormat = timeParts.join(':');\n if (this.isTimeMode()) {\n return timeFormat;\n }\n return `${this.zFormat()} ${timeFormat}`;\n }\n\n private _updateInputDisplay(): void {\n this._inputDisplayValue.set(this.displayValue());\n }\n\n private _clearDateValues(): void {\n if (this.isRangeMode()) {\n this._rangeStart.set(null);\n this._rangeEnd.set(null);\n return;\n }\n this._selectedDate.set(null);\n }\n\n private _emitControl(): void {\n this.zControl.emit({\n validate: () => this.validate(),\n reset: () => this.reset(),\n focus: () => this.focus(),\n blur: () => this.blur(),\n open: () => this.open(),\n close: () => this.close(),\n clear: () => this.clear(),\n markAsTouched: () => this.markAsTouched(),\n markAsUntouched: () => this.markAsUntouched(),\n markAsDirty: () => this.markAsDirty(),\n markAsPristine: () => this.markAsPristine(),\n hasError: this.hasError,\n isOpen: this.isOpen,\n value: computed(() => this._getEmitValue()),\n errorMessage: this.errorMessage,\n });\n }\n\n protected togglePeriod(): void {\n const currentPeriod = this._period();\n const newPeriod = currentPeriod === 'AM' ? 'PM' : 'AM';\n this._period.set(newPeriod);\n\n const currentHour = this._hour();\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n }\n\n protected onPeriodChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newPeriod = select.value as 'AM' | 'PM';\n const currentHour = this._hour();\n\n this._period.set(newPeriod);\n if (newPeriod === 'PM' && currentHour < 12) {\n this._hour.set(currentHour + 12);\n }\n if (newPeriod === 'AM' && currentHour >= 12) {\n this._hour.set(currentHour - 12);\n }\n this._updateTimeToDate();\n }\n}\n","<div class=\"z-calendar-wrapper flex w-full flex-col gap-2\">\n @if (zLabel()) {\n <label [for]=\"pickerId\" class=\"text-xs leading-none font-medium\" [class]=\"zLabelClass()\">\n {{ zLabel() }}\n @if (zRequired()) {\n <span class=\"text-destructive! ml-0.5\">*</span>\n }\n </label>\n }\n\n <div class=\"relative w-fit\">\n <div\n #triggerEl\n z-popover\n [zPopoverContent]=\"calendarTpl\"\n zPosition=\"bottom-left\"\n zPopoverWidth=\"auto\"\n [zOffset]=\"6\"\n [zDisabled]=\"isDisabled() || zReadonly()\"\n [zManualClose]=\"showCancelButton()\"\n zTrigger=\"click\"\n zClass=\"border-0 shadow-none bg-transparent p-0\"\n (zHideStart)=\"onPopoverHide()\"\n (zShow)=\"onPopoverShow()\"\n (zControl)=\"onPopoverControl($event)\"\n [id]=\"pickerId\"\n [class]=\"triggerClasses()\"\n (keydown)=\"onTriggerKeydown($event)\">\n <z-icon\n [zType]=\"isRangeMode() ? 'lucideCalendarRange' : 'lucideCalendar'\"\n zSize=\"16\"\n class=\"text-muted-foreground shrink-0 cursor-pointer\"\n (click)=\"$event.stopPropagation(); toggle()\" />\n\n @if (isRangeMode()) {\n <input\n type=\"text\"\n data-range-type=\"start\"\n class=\"placeholder:text-muted-foreground min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n placeholder=\"Từ ngày\"\n [value]=\"inputDisplayStart()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onStartInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onStartInputEnter($event)\" />\n <span class=\"text-muted-foreground text-sm\">-</span>\n <input\n type=\"text\"\n data-range-type=\"end\"\n class=\"placeholder:text-muted-foreground min-w-0 flex-1 truncate bg-transparent text-center text-sm outline-none\"\n placeholder=\"Đến ngày\"\n [value]=\"inputDisplayEnd()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onEndInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onEndInputEnter($event)\" />\n } @else {\n <input\n #inputEl\n type=\"text\"\n class=\"placeholder:text-muted-foreground min-w-0 flex-1 truncate bg-transparent text-sm outline-none\"\n [placeholder]=\"zPlaceholder()\"\n [value]=\"inputDisplayValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"zReadonly()\"\n (click)=\"isOpen() && $event.stopPropagation()\"\n (focus)=\"onInputFocus($event)\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown.enter)=\"onInputEnter($event)\" />\n }\n\n @if (zAllowClear() && !isDisabled() && !zReadonly()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"text-muted-foreground hover:text-foreground flex size-5 shrink-0 cursor-pointer items-center justify-center rounded transition-all\"\n [class.opacity-0]=\"!hasValue()\"\n [class.pointer-events-none]=\"!hasValue()\"\n (click)=\"onClear($event)\">\n <z-icon zType=\"lucideX\" zSize=\"14\" />\n </button>\n }\n </div>\n </div>\n\n @if (showError()) {\n <p class=\"text-destructive animate-in fade-in slide-in-from-top-1 m-0 text-xs duration-200\">\n {{ errorMessage() }}\n </p>\n }\n</div>\n\n<ng-template #calendarTpl>\n <div\n class=\"z-calendar-calendar bg-popover border-border flex rounded-[6px] border shadow-lg\"\n (keydown)=\"onCalendarKeydown($event)\">\n @if (zQuickSelect() && zMode() === 'range') {\n <div class=\"border-border flex flex-col space-y-1 border-r p-2\">\n @for (preset of quickSelectPresets; track preset.key) {\n @let presetDisabled = preset | zIsPresetDisabled: zDisabledDate();\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-[4px] px-3 py-1.5 text-left text-sm whitespace-nowrap transition-colors\"\n [class.hover:bg-muted]=\"activePresetKey() !== preset.key && !presetDisabled\"\n [class.bg-primary]=\"activePresetKey() === preset.key\"\n [class.text-primary-foreground]=\"activePresetKey() === preset.key\"\n [class.font-medium]=\"activePresetKey() === preset.key\"\n [class.opacity-40]=\"presetDisabled\"\n [class.cursor-not-allowed]=\"presetDisabled\"\n [disabled]=\"presetDisabled\"\n (click)=\"onQuickSelect(preset)\">\n {{ preset.label }}\n </button>\n }\n </div>\n }\n <div class=\"flex flex-col gap-2 p-3\">\n @if (!isTimeMode()) {\n <div class=\"z-calendars-wrapper flex gap-4\">\n <!-- First Calendar -->\n <div class=\"z-calendar-section flex flex-col justify-center gap-1\">\n @if (!isTimeMode()) {\n <div class=\"flex w-full items-center justify-between space-x-1\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigatePrevious()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigatePreviousFast()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </button>\n\n <div class=\"flex flex-1 items-center justify-center gap-0.5\">\n @if (!isYearMode() && !isQuarterMode()) {\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"w-20 px-2!\"\n [zWave]=\"false\"\n [zDisabled]=\"false\"\n (click)=\"setView('month')\">\n {{ currentMonthName() }}\n </button>\n }\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"px-2!\"\n [zWave]=\"false\"\n [zDisabled]=\"isYearMode()\"\n (click)=\"setView('year')\">\n {{ currentYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNextFast()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateStartNext()\"\n [zWave]=\"false\"\n (click)=\"navigateNext()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"16\" />\n </button>\n </div>\n\n <div class=\"z-calendar-views w-full\" [class.z-calendar-views-quarter]=\"isQuarterMode()\">\n @if (currentView() === 'day') {\n <div class=\"flex h-full w-full flex-col gap-1\" [class.z-calendar-animate]=\"hasViewChanged()\">\n <div class=\"grid w-full grid-cols-7\">\n @for (weekday of weekdayNames; track weekday) {\n <div class=\"text-muted-foreground flex h-7 items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n @for (week of calendarDays(); track $index) {\n <div class=\"grid w-full grid-cols-7\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'month') {\n <div class=\"grid h-full w-full grid-cols-3 grid-rows-4\" [class.z-calendar-animate]=\"hasViewChanged()\">\n @for (month of monthNames; track month; let i = $index) {\n @let monthDisabled = isStartMonthDisabled(i);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: currentMonthIndex()\"\n [disabled]=\"monthDisabled\"\n [class.opacity-30]=\"monthDisabled\"\n [class.cursor-not-allowed]=\"monthDisabled\"\n (click)=\"onMonthSelect(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 gap-0.5\"\n [class.grid-rows-4]=\"!isYearMode() && !isQuarterMode()\"\n [class.grid-rows-3]=\"isYearMode() || isQuarterMode()\"\n [class.z-calendar-animate]=\"hasViewChanged()\">\n @for (year of isYearMode() || isQuarterMode() ? yearRangeSmall() : yearRange(); track year) {\n @let yearDisabled = isStartYearDisabled(year);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: currentYear()\"\n [disabled]=\"yearDisabled\"\n [class.opacity-30]=\"yearDisabled\"\n [class.cursor-not-allowed]=\"yearDisabled\"\n (click)=\"onYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (currentView() === 'quarter') {\n <div class=\"grid w-full grid-cols-2 gap-2\" [class.z-calendar-animate]=\"hasViewChanged()\">\n @for (quarter of quarterNames; track quarter; let i = $index) {\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zQuarterClasses: currentQuarterIndex()\"\n (click)=\"onQuarterClick(i)\">\n {{ quarter }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Start Time Picker for Range Mode -->\n @if (isRangeMode() && zShowTime() && currentView() === 'day') {\n <div class=\"flex items-center justify-center gap-2 pt-2\">\n <span class=\"text-muted-foreground text-xs\">Bắt đầu:</span>\n <div class=\"flex items-center gap-0.5\">\n @if (zShowHour()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"hour\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedHour()\"\n (input)=\"onHourInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"minute\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedMinute()\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"second\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedSecond()\"\n (input)=\"onSecondInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n tabindex=\"0\"\n class=\"border-input bg-background hover:bg-muted focus:border-ring focus:ring-ring/30 ml-1 cursor-pointer rounded border px-2 py-1 text-sm font-medium transition-colors outline-none focus:ring-2\"\n (click)=\"togglePeriod()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Second Calendar (Range Mode Only) -->\n @if (isRangeMode()) {\n <!-- Divider -->\n <div class=\"border-border bg-border w-px self-stretch\"></div>\n\n <div class=\"z-calendar-section flex flex-col justify-center gap-1\">\n <div class=\"flex w-full items-center justify-between space-x-1\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPreviousFast()\">\n <z-icon zType=\"lucideChevronsLeft\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zDisabled]=\"!canNavigateEndPrev()\"\n [zWave]=\"false\"\n (click)=\"navigateEndPrevious()\">\n <z-icon zType=\"lucideChevronLeft\" zSize=\"16\" />\n </button>\n\n <div class=\"flex flex-1 items-center justify-center gap-0.5\">\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"w-20 px-2!\"\n [zWave]=\"false\"\n (click)=\"setEndView('month')\">\n {{ endMonthName() }}\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"px-2!\"\n [zWave]=\"false\"\n (click)=\"setEndView('year')\">\n {{ endMonthYear() }}\n </button>\n </div>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNext()\">\n <z-icon zType=\"lucideChevronRight\" zSize=\"16\" />\n </button>\n\n <button\n type=\"button\"\n z-button\n zType=\"ghost\"\n zSize=\"sm\"\n class=\"size-8 p-0!\"\n [zWave]=\"false\"\n [zWave]=\"false\"\n (click)=\"navigateEndNextFast()\">\n <z-icon zType=\"lucideChevronsRight\" zSize=\"16\" />\n </button>\n </div>\n\n <div class=\"z-calendar-views w-full\">\n @if (endView() === 'day') {\n <div class=\"flex h-full w-full flex-col gap-1\" [class.z-calendar-animate]=\"hasEndViewChanged()\">\n <div class=\"grid grid-cols-7 gap-px\">\n @for (weekday of weekdayNames; track weekday) {\n <div class=\"text-muted-foreground flex h-8 w-8 items-center justify-center text-xs font-medium\">\n {{ weekday }}\n </div>\n }\n </div>\n\n @for (week of calendarDaysEnd(); track $index) {\n <div class=\"grid grid-cols-7 gap-px\">\n @for (day of week; track day.date.getTime()) {\n <button\n type=\"button\"\n [class]=\"day | zDayClasses\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDayClick(day)\"\n (mouseenter)=\"onDayHover(day)\"\n (mouseleave)=\"onDayLeave()\">\n {{ day.day }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (endView() === 'month') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4\"\n [class.z-calendar-animate]=\"hasEndViewChanged()\">\n @for (month of monthNames; track month; let i = $index) {\n @let endMonthDisabled = isEndMonthDisabled(i);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"i | zMonthClasses: endMonth().getMonth()\"\n [disabled]=\"endMonthDisabled\"\n [class.opacity-30]=\"endMonthDisabled\"\n [class.cursor-not-allowed]=\"endMonthDisabled\"\n (click)=\"onEndMonthClick(i)\">\n {{ month }}\n </button>\n </div>\n }\n </div>\n }\n\n @if (endView() === 'year') {\n <div\n class=\"grid h-full w-full grid-cols-3 grid-rows-4 gap-0.5\"\n [class.z-calendar-animate]=\"hasEndViewChanged()\">\n @for (year of endYearRange(); track year) {\n @let endYearDisabled = isEndYearDisabled(year);\n <div class=\"flex items-center justify-center\">\n <button\n type=\"button\"\n [class]=\"year | zYearClasses: endMonth().getFullYear()\"\n [disabled]=\"endYearDisabled\"\n [class.opacity-30]=\"endYearDisabled\"\n [class.cursor-not-allowed]=\"endYearDisabled\"\n (click)=\"onEndYearClick(year)\">\n {{ year }}\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- End Time Picker for Range Mode -->\n @if (zShowTime()) {\n <div class=\"flex items-center justify-center gap-2 pt-2\">\n <span class=\"text-muted-foreground text-xs\">Kết thúc:</span>\n <div class=\"flex items-center gap-0.5\">\n @if (zShowHour()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"hour-end\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedHourEnd()\"\n (input)=\"onHourEndInput($event)\"\n (blur)=\"onTimeBlurEnd($event)\"\n maxlength=\"2\" />\n }\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowMinute()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"minute-end\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedMinuteEnd()\"\n (input)=\"onMinuteEndInput($event)\"\n (blur)=\"onTimeBlurEnd($event)\"\n maxlength=\"2\" />\n }\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n @if (zShowSecond()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"second-end\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedSecondEnd()\"\n (input)=\"onSecondEndInput($event)\"\n (blur)=\"onTimeBlurEnd($event)\"\n maxlength=\"2\" />\n }\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n tabindex=\"0\"\n class=\"border-input bg-background hover:bg-muted focus:border-ring focus:ring-ring/30 ml-1 cursor-pointer rounded border px-2 py-1 text-sm font-medium transition-colors outline-none focus:ring-2\"\n (click)=\"togglePeriodEnd()\">\n {{ periodEnd() }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (((zShowTime() && currentView() === 'day') || isTimeMode()) && !isRangeMode()) {\n <div class=\"flex items-center justify-center gap-2\">\n <div class=\"flex items-center gap-0.5\">\n @if (zShowHour()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"hour\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedHour()\"\n (input)=\"onHourInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n\n @if (zShowHour() && zShowMinute()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n\n @if (zShowMinute()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"minute\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedMinute()\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n\n @if (zShowMinute() && zShowSecond()) {\n <span class=\"text-muted-foreground\">:</span>\n }\n\n @if (zShowSecond()) {\n <input\n type=\"text\"\n tabindex=\"0\"\n inputmode=\"numeric\"\n data-time-type=\"second\"\n class=\"border-input bg-background focus:border-ring focus:ring-ring/30 w-10 rounded border px-1.5 py-1 text-center text-sm outline-none focus:ring-2\"\n [value]=\"formattedSecond()\"\n (input)=\"onSecondInput($event)\"\n (blur)=\"onTimeBlur($event)\"\n maxlength=\"2\" />\n }\n\n @if (zTimeFormat() === '12h') {\n <button\n type=\"button\"\n tabindex=\"0\"\n class=\"border-input bg-background hover:bg-muted focus:border-ring focus:ring-ring/30 ml-1 cursor-pointer rounded border px-2 py-1 text-sm font-medium transition-colors outline-none focus:ring-2\"\n (click)=\"togglePeriod()\">\n {{ period() }}\n </button>\n }\n </div>\n </div>\n }\n\n @if (!(zQuickSelect() && zMode() === 'range' && !showOkButton() && !showCancelButton())) {\n <div class=\"border-border flex items-center justify-between gap-2 border-t pt-2\">\n @if (!zQuickSelect() || zMode() !== 'range') {\n <button type=\"button\" z-button zType=\"secondary\" zSize=\"sm\" [zWave]=\"false\" (click)=\"onTodayClick()\">\n {{ todayButtonText() }}\n </button>\n } @else {\n <div></div>\n }\n\n @if (showOkButton() || showCancelButton()) {\n <div class=\"flex items-center gap-2\">\n @if (showCancelButton()) {\n <button type=\"button\" z-button zType=\"outline\" zSize=\"sm\" (click)=\"onCancelClick()\">\n {{ zCancelText() }}\n </button>\n }\n @if (showOkButton()) {\n <button type=\"button\" z-button zSize=\"sm\" [zDisabled]=\"!canApply()\" (click)=\"onOkClick()\">\n {{ zOkText() }}\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAYO,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,KACnG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AAE3C,MAAM,SAAS,GAAG,CAAC,IAAU,KAAW,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAEhE,MAAM,QAAQ,GAAG,MAAW;AACjC,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAEM,MAAM,UAAU,GAAG,CAAC,IAAU,KAAW,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAExG,MAAM,YAAY,GAAG,CAAC,IAAU,KAAW,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE7F,MAAM,UAAU,GAAG,CAAC,IAAU,KAAW,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAE/F,MAAM,WAAW,GAAG,CAAC,IAAU,KAAW,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAE9E,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,IAAY,KAAU;AACxD,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AACvC,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,IAAU,EAAE,MAAc,KAAU;AAC5D,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC3C,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,KAAa,KAAU;AAC1D,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;AAChD,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,KAAa,KAAU;AAC1D,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtB,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,IAAY,KAAU;AACxD,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACxB,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc,KAAU;AACxF,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,KAAkB,EAAE,KAAkB,KAAa;AAC3E,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AACpB,QAAA,OAAO,KAAK;IACd;IACA,QACE,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;AAC3C,QAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;QACrC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;AAEvC,CAAC;AAEM,MAAM,WAAW,GAAG,CAAC,KAAW,EAAE,KAAW,KAClD,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;AAE/E,MAAM,UAAU,GAAG,CAAC,KAAW,EAAE,KAAW,KAAc,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;AAErG,MAAM,OAAO,GAAG,CAAC,IAAU,KAAc,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AAEpE,MAAM,QAAQ,GAAG,CAAC,KAAW,EAAE,KAAW,KAC/C,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAEpD,MAAM,OAAO,GAAG,CAAC,KAAW,EAAE,KAAW,KAAc,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAEhH,MAAM,eAAe,GAAG,CAAC,KAAW,EAAE,KAAW,KACtD,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAErD,MAAM,cAAc,GAAG,CAAC,KAAW,EAAE,KAAW,KACrD,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAErD,MAAM,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW,EAAE,GAAS,KAAa;IACvE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;IACvC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;AACzC,IAAA,OAAO,IAAI,GAAG,SAAS,IAAI,IAAI,GAAG,OAAO;AAC3C,CAAC;AAEM,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,OAAoB,EAAE,OAAoB,KAAa;IAC/F,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACtC,QAAA,OAAO,KAAK;IACd;IACA,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACrC,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAa,KAAa,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAEtG,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,KAAa,KAAa,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AAE5G,MAAM,sBAAsB,GAAG,CAC7B,IAAU,EACV,UAAmC,EACnC,QAAiC,EACjC,WAAoC,KAChB;AACpB,IAAA,MAAM,YAAY,GAAqB;AACrC,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,SAAS,EAAE,KAAK;KACjB;AAED,IAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,UAAU,GAAG,QAAQ;AAC1E,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,QAAQ,GAAG,UAAU;QACvE,OAAO;AACL,YAAA,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC;AAC1C,YAAA,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;YACtC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC;AAClD,YAAA,SAAS,EAAE,KAAK;SACjB;IACH;AAEA,IAAA,IAAI,UAAU,IAAI,WAAW,IAAI,CAAC,QAAQ,EAAE;QAC1C,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;QACzD,MAAM,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,UAAU;QACjE,MAAM,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,WAAW;QAC/D,OAAO;AACL,YAAA,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC;AAC7C,YAAA,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC;YACzC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC;AACxD,YAAA,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC;SACxC;IACH;IAEA,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;IACvE;AAEA,IAAA,OAAO,YAAY;AACrB,CAAC;AAED,MAAM,iBAAiB,GAAG,CACxB,IAAU,EACV,cAAuB,EACvB,KAAW,EACX,OAA6B,KACb;AAChB,IAAA,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO;AACnG,IAAA,MAAM,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,KAAK;AACvE,IAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;AAElF,IAAA,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;AAC3E,IAAA,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK;IAEhE,OAAO;QACL,IAAI;AACJ,QAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;QACnB,cAAc;AACd,QAAA,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/B,UAAU,EAAE,YAAY,IAAI,cAAc;QAC1C,UAAU;AACV,QAAA,GAAG,UAAU;KACd;AACH,CAAC;AAEM,MAAM,oBAAoB,GAAG,CAClC,IAAY,EACZ,KAAa,EACb,OAAA,GAAgC,EAAE,KACd;IACpB,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/C,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;AACvD,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE;AAExB,IAAA,MAAM,SAAS,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;AAC9C,IAAA,MAAM,aAAa,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;IACnD,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC;IAEhE,MAAM,IAAI,GAAmB,EAAE;AAE/B,IAAA,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C,QAAA,MAAM,GAAG,GAAG,eAAe,GAAG,CAAC;QAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D;AAEA,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D;AAEA,IAAA,MAAM,SAAS,GAAG,KAAK,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC9C,IAAA,MAAM,aAAa,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;AACpD,IAAA,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;AAEtC,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D;IAEA,MAAM,KAAK,GAAqB,EAAE;AAClC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C;AAEA,IAAA,OAAO,KAAK;AACd,CAAC;AAEM,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,OAAO,KAAc;AAC1D,IAAA,IAAI,MAAM,KAAK,OAAO,EAAE;QACtB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACpF;IAEA,MAAM,MAAM,GAAa,EAAE;AAC3B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAClE;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,MAAM,GAAG,OAAO,KAAc;IAC5D,MAAM,QAAQ,GAAa,EAAE;AAC7B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E;AACA,IAAA,OAAO,QAAQ;AACjB,CAAC;AAEM,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,KAAK,GAAG,EAAE,KAAc;AACvE,IAAA,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC;AAC/D,CAAC;AAEM,MAAM,UAAU,GAAG,CAAC,IAAiB,EAAE,MAAc,KAAY;IACtE,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,IAAA,MAAM,OAAO,GAAG,KAAK,GAAG,EAAE,IAAI,EAAE;AAEhC,IAAA,MAAM,MAAM,GAA2B;AACrC,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAChC,QAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChD,QAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3C,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAClC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpC,QAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC9C,QAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;KAC/C;IAED,IAAI,MAAM,GAAG,MAAM;AACnB,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IACvC;AAEA,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,MAAc,KAAiB;IAC3E,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,OAAO,GAAG;AACb,SAAA,OAAO,CAAC,OAAO,EAAE,QAAQ;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,UAAU;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,UAAU;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,UAAU;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,UAAU;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,UAAU;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,UAAU;AACzB,SAAA,OAAO,CAAC,KAAK,EAAE,KAAK;AACpB,SAAA,OAAO,CAAC,IAAI,EAAE,KAAK;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,KAAK;AACnB,SAAA,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IAE1B,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,eAAA,CAAiB,EAAE,GAAG,CAAC;IACjE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE;AACxC,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AACzE,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC5C,IAAA,MAAM,MAAM,GAA2B;AACrC,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,EAAE,EAAE,CAAC;KACN;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9D,MAAM,cAAc,GAAG;SACpB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;SACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;QACxE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACxC;IAEA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,IAAA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAEvB,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzB,QAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;YACrB,IAAI,IAAI,EAAE;QACZ;AACA,QAAA,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;YACvB,IAAI,GAAG,CAAC;QACV;IACF;AAEA,IAAA,IAAI;AACF,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;QAEzG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,IAAI;IACb;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF,CAAC;AAEM,MAAM,WAAW,GAAG,CAAC,IAAiB,KAAY;IACvD,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,CAAC;AAEM,MAAM,aAAa,GAAG,CAAC,SAAiB,KAAiB;IAC9D,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAChC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;AAC5C,CAAC;AAEM,MAAM,qBAAqB,GAAG,MAA4B;AAC/D,IAAA;AACE,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;AACzD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,QAAQ,EAAE,OAAO;YACf,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9B,GAAG,EAAE,QAAQ,EAAE;SAChB,CAAC;AACH,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,OAAO;YACf,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/B,GAAG,EAAE,QAAQ,EAAE;SAChB,CAAC;AACH,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,OAAO;YACf,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,QAAQ,EAAE;SAChB,CAAC;AACH,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,OAAO;YACf,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,QAAQ,EAAE;SAChB,CAAC;AACH,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,OAAO;YACf,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,QAAQ,EAAE;SAChB,CAAC;AACH,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,OAAO;YACf,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,QAAQ,EAAE;SAChB,CAAC;AACH,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,QAAQ,EAAE,MAAM,IAAI;AACrB,KAAA;CACF;AAEM,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,GAAgB,KAAgB;AACjF,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAClB,QAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;IACvB;AAEA,IAAA,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QACxB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;IACnC;AAEA,IAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACvB,CAAC;AAEM,MAAM,YAAY,GAAG,CAAC,KAAiB,KAAc,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;AAE/F,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,KAAa,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAE1G,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,GAAW,KAAY;IACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;AAClC,IAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACjB,QAAA,OAAO,CAAC;IACV;IACA,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;AAClC,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,KAAa,KAAa,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEjF,MAAM,WAAW,GAAG,CAAC,GAAiB,KAAe;AAC1D,IAAA,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,QAAA,OAAO,UAAU;IACnB;AACA,IAAA,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;AACvB,QAAA,OAAO,YAAY;IACrB;IACA,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,EAAE;AACtC,QAAA,OAAO,aAAa;IACtB;AACA,IAAA,IAAI,GAAG,CAAC,YAAY,EAAE;AACpB,QAAA,OAAO,YAAY;IACrB;AACA,IAAA,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,QAAA,OAAO,UAAU;IACnB;AACA,IAAA,IAAI,GAAG,CAAC,SAAS,EAAE;AACjB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,GAAG,CAAC,SAAS,EAAE;AACjB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,QAAA,OAAO,UAAU;IACnB;AACA,IAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,OAAO,SAAS;AAClB,CAAC;AAEM,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,iBAAyB,KACzE,UAAU,KAAK,iBAAiB,GAAG,UAAU,GAAG,SAAS;AAEpD,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAE,mBAA2B,KAC/E,YAAY,KAAK,mBAAmB,GAAG,UAAU,GAAG,SAAS;AAExD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,WAAmB,KAC5D,IAAI,KAAK,WAAW,GAAG,UAAU,GAAG,SAAS;;AC3exC,MAAM,iBAAiB,GAAG,GAAG,CAClC;IACE,mGAAmG;IACnG,kFAAkF;IAClF,2DAA2D;IAC3D,cAAc;IACd,SAAS;CACV,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,wBAAwB;AAC5B,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,EAAE,EAAE,2BAA2B;AAChC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,4EAA4E;AACrF,YAAA,IAAI,EAAE,qCAAqC;AAC3C,YAAA,KAAK,EACH,sHAAsH;AACxH,YAAA,QAAQ,EAAE,+DAA+D;AACzE,YAAA,QAAQ,EAAE,kDAAkD;AAC7D,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAKI,MAAM,oBAAoB,GAAG,GAAG,CACrC;IACE,8EAA8E;IAC9E,6BAA6B;IAC7B,2DAA2D;CAC5D,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,KAAK,EAAE,kDAAkD;AACzD,YAAA,QAAQ,EAAE,oCAAoC;AAC9C,YAAA,OAAO,EAAE,+BAA+B;AACxC,YAAA,UAAU,EAAE,mDAAmD;AAC/D,YAAA,QAAQ,EAAE,mDAAmD;AAC7D,YAAA,WAAW,EAAE,oCAAoC;AACjD,YAAA,QAAQ,EAAE,6CAA6C;AACvD,YAAA,UAAU,EAAE,6CAA6C;AACzD,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGI,MAAM,sBAAsB,GAAG,GAAG,CACvC;IACE,mFAAmF;IACnF,gCAAgC;IAChC,2DAA2D;CAC5D,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,QAAQ,EAAE,oCAAoC;AAC9C,YAAA,QAAQ,EAAE,6CAA6C;AACxD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGI,MAAM,qBAAqB,GAAG,GAAG,CACtC;IACE,mFAAmF;IACnF,gCAAgC;IAChC,2DAA2D;CAC5D,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,QAAQ,EAAE,oCAAoC;AAC9C,YAAA,QAAQ,EAAE,6CAA6C;AACxD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGI,MAAM,wBAAwB,GAAG,GAAG,CACzC;IACE,oFAAoF;IACpF,gCAAgC;IAChC,2DAA2D;CAC5D,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,QAAQ,EAAE,oCAAoC;AAC/C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA,CACF;;MC/GY,eAAe,CAAA;AAC1B,IAAA,SAAS,CAAC,GAAiB,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;AAC9B,QAAA,OAAO,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC;IACxC;uGAJW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCDY,qBAAqB,CAAA;IAChC,SAAS,CAAC,MAA0B,EAAE,cAAgD,EAAA;QACpF,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;QAC/B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,cAAc,CAAC,KAAK,CAAC;QAC9B;QAEA,IAAI,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,IAAI;QACb;QACA,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC1C,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;uGAvBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCEY,iBAAiB,CAAA;IAC5B,SAAS,CAAC,UAAkB,EAAE,iBAAyB,EAAA;QACrD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,iBAAiB,CAAC;AAC1D,QAAA,OAAO,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC;IAC1C;uGAJW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,mBAAmB,CAAA;IAC9B,SAAS,CAAC,YAAoB,EAAE,mBAA2B,EAAA;QACzD,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,EAAE,mBAAmB,CAAC;AAChE,QAAA,OAAO,wBAAwB,CAAC,EAAE,KAAK,EAAE,CAAC;IAC5C;uGAJW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,gBAAgB,CAAA;IAC3B,SAAS,CAAC,IAAY,EAAE,WAAmB,EAAA;QACzC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;AAC7C,QAAA,OAAO,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC;IACzC;uGAJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCuFY,kBAAkB,CAAA;AACb,IAAA,KAAK,GAAG,KAAK,CAAa,EAAE,iDAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAgB,QAAQ,iDAAC;AACtC,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,iDAAC;AACvC,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;AAC1B,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,YAAY,GAAG,KAAK,CAAS,cAAc,wDAAC;IAC5C,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACnD,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACnD,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACnD,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AACnD,IAAA,WAAW,GAAG,KAAK,CAAgB,KAAK,uDAAC;IACzC,SAAS,GAAG,KAAK,CAAC,IAAI,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IAClD,WAAW,GAAG,KAAK,CAAC,IAAI,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACpD,WAAW,GAAG,KAAK,CAAC,IAAI,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACpD,YAAY,GAAG,KAAK,CAAC,KAAK,yDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACtD,WAAW,GAAG,KAAK,CAAC,IAAI,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AACpD,IAAA,OAAO,GAAG,KAAK,CAAS,YAAY,mDAAC;AACrC,IAAA,QAAQ,GAAG,KAAK,CAAc,IAAI,oDAAC;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAc,IAAI,oDAAC;AACnC,IAAA,UAAU,GAAG,KAAK,CAAqB,MAAM,sDAAC;AAC9C,IAAA,WAAW,GAAG,KAAK,CAAuB,EAAE,uDAAC;AAC7C,IAAA,OAAO,GAAG,KAAK,CAAS,OAAO,mDAAC;IAChC,OAAO,GAAG,KAAK,CAAC,KAAK,oDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AACjD,IAAA,OAAO,GAAG,KAAK,CAAS,SAAS,mDAAC;IAClC,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AACrD,IAAA,WAAW,GAAG,KAAK,CAAS,KAAK,uDAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAmC,IAAI,yDAAC;IAE7D,QAAQ,GAAG,MAAM,EAAoB;IACrC,OAAO,GAAG,MAAM,EAAkB;AAE/B,IAAA,UAAU,GAAG,SAAS,CAA6B,WAAW,sDAAC;AAC/D,IAAA,QAAQ,GAAG,SAAS,CAA+B,SAAS,oDAAC;AAC7D,IAAA,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC;AACpC,IAAA,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;AACvC,IAAA,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;IACnC,kBAAkB,GAAG,qBAAqB,EAAE;AAE5C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACxB,YAAA,OAAO,eAAe,CAAC,GAAG,CAAC;QAC7B;AACA,QAAA,OAAO,eAAe,CAAC,CAAC,CAAC;AAC3B,IAAA,CAAC,yDAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,2DAAC;AACjE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,2DAAC;AAEnE,IAAA,eAAe,GAAG,MAAM,CAAyB,IAAI,2DAAC;AACtD,IAAA,aAAa,GAAG,MAAM,CAAc,IAAI,yDAAC;AACzC,IAAA,WAAW,GAAG,MAAM,CAAc,IAAI,uDAAC;AACvC,IAAA,SAAS,GAAG,MAAM,CAAc,IAAI,qDAAC;AACrC,IAAA,YAAY,GAAG,MAAM,CAAc,IAAI,wDAAC;AACxC,IAAA,aAAa,GAAG,MAAM,CAAO,QAAQ,EAAE,yDAAC;IACxC,SAAS,GAAG,MAAM,CAAO,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAClD,IAAA,YAAY,GAAG,MAAM,CAAgB,KAAK,wDAAC;AAC3C,IAAA,QAAQ,GAAG,MAAM,CAAgB,KAAK,oDAAC;AACvC,IAAA,KAAK,GAAG,MAAM,CAAC,CAAC,iDAAC;AACjB,IAAA,OAAO,GAAG,MAAM,CAAC,CAAC,mDAAC;AACnB,IAAA,OAAO,GAAG,MAAM,CAAC,CAAC,mDAAC;AACnB,IAAA,OAAO,GAAG,MAAM,CAAc,IAAI,mDAAC;AACnC,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,oDAAC;AACpB,IAAA,UAAU,GAAG,MAAM,CAAC,CAAC,sDAAC;AACtB,IAAA,UAAU,GAAG,MAAM,CAAC,CAAC,sDAAC;AACtB,IAAA,UAAU,GAAG,MAAM,CAAc,IAAI,sDAAC;AACtC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACtB,IAAA,YAAY,GAAG,MAAM,CAAyB,IAAI,wDAAC;AACnD,IAAA,iBAAiB,GAAG,MAAM,CAAC,CAAC,6DAAC;AAC7B,IAAA,kBAAkB,GAAG,MAAM,CAAS,EAAE,8DAAC;AACvC,IAAA,mBAAmB,GAAG,MAAM,CAAc,IAAI,+DAAC;AAC/C,IAAA,iBAAiB,GAAG,MAAM,CAAc,IAAI,6DAAC;AAC7C,IAAA,eAAe,GAAG,MAAM,CAAc,IAAI,2DAAC;AAC3C,IAAA,gBAAgB,GAAG,MAAM,CAAgB,IAAI,4DAAC;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;AAC/B,IAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,8DAAC;AAClC,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,IAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEzC,IAAA,SAAS,GAAoC,MAAM,KAAK,CAAC;AACzD,IAAA,UAAU,GAAe,MAAM,KAAK,CAAC;IACrC,UAAU,GAAqB,IAAI;AAExB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,KAAK,kDAAC;AACrE,IAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC5C,IAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC5C,IAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAC9B,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAClC,IAAA,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;AACxD,IAAA,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACpD,IAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AAClD,IAAA,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;IAExD,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACvC,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACpD,IAAA,CAAC,+DAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,sDAAC;AACjE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,uDAAC;AACtD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI;QACjE;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI;AACtC,IAAA,CAAC,oDAAC;IAEiB,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEtF,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9F,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM,sDAAC;AACpD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,uDAAC;AACtD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM,sDAAC;AACpD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,yDAAC;AAE1D,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,WAAW;QACpB;QACA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACzC,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,2DAAC;IAEiB,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACnD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,uDAAC;AAChE,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,6DAAC;AAEnE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,OAAO,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpE,IAAA,CAAC,4DAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;AACtD,QAAA,OAAO,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;AACtC,IAAA,CAAC,qDAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;AACtD,QAAA,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AACrC,IAAA,CAAC,0DAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAmB,MAAK;AAChE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE;AAEnC,QAAA,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE;AAC5C,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE;AAChC,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,SAAA,CAAC;AACJ,IAAA,CAAC,wDAAC;IAEiB,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,OAAO,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpE,IAAA,CAAC,wDAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,wDAAC;AAE7D,IAAA,eAAe,GAAG,QAAQ,CAAmB,MAAK;AACnE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE;AAEnC,QAAA,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE;AAC5C,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE;AAChC,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,SAAA,CAAC;AACJ,IAAA,CAAC,2DAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC7C,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,4DAC7F;AAEkB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,8DAAC;AACvE,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,8DAAC;IAEvE,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC7C,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAEpC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;AAClD,QAAA,OAAO,YAAY,CAAC,WAAW,CAAC;AAClC,IAAA,CAAC,wDAAC;AAEQ,IAAA,oBAAoB,CAAC,UAAkB,EAAA;AAC/C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;QAC3C,IAAI,cAAc,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;YAC/C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE;AAC7B,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;AACpD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE;AAEzC,QAAA,IAAI,SAAS,GAAG,OAAO,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,SAAS,KAAK,OAAO,IAAI,UAAU,GAAG,aAAa,EAAE;AACvD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AAC7C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;QAC3C,IAAI,cAAc,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;YAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE;AAC7B,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE;AAC1C,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,EAAE;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;AAE9C,QAAA,IAAI,OAAO,GAAG,SAAS,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;QACA,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,GAAG,eAAe,EAAE;AACzD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,mBAAmB,CAAC,IAAY,EAAA;AACxC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;QAC3C,IAAI,cAAc,EAAE;YAClB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC5B,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;AAEjD,QAAA,IAAI,IAAI,GAAG,OAAO,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;QACA,IAAI,IAAI,KAAK,OAAO,IAAI,eAAe,IAAI,aAAa,EAAE;AACxD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACtC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;QAC3C,IAAI,cAAc,EAAE;YAClB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC5B,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;AAEjD,QAAA,IAAI,IAAI,GAAG,SAAS,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;QACA,IAAI,IAAI,KAAK,SAAS,IAAI,aAAa,IAAI,eAAe,EAAE;AAC1D,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEmB,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAEhC,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,QACE,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE;iBAC1C,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE5F;QAEA,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE;YAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,OAAO,aAAa,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE;QACxD;AAEA,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,OAAO,eAAe,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;QAChD;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,gEAAC;AAEiB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE5B,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClC,QACE,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;iBAC1C,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE5F;QAEA,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE;YAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO,WAAW,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;QACxD;AAEA,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACjD,YAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC;YACrC,OAAO,gBAAgB,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QACnD;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,8DAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;QAE3B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACzC,MAAM,SAAS,GAAa,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;YAC5D;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB;YAEA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE;YAC7E,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,UAAU,GAAG,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAA,EAAG,YAAY,CAAA,CAAE;QAC3G;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAE5B,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAClB,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,OAAO,CAAA,EAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA,GAAA,EAAM,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;QACpE;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpF;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACtC;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;YACnD,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,EAAE;QAC5C;AAEA,QAAA,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;AACjC,IAAA,CAAC,wDAAC;AAEe,IAAA,kBAAkB,GAAG,MAAM,CAAS,EAAE,8DAAC;AACvC,IAAA,gBAAgB,GAAG,MAAM,CAAS,EAAE,4DAAC;IAEnC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC7D,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEzD,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACnD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,OAAO,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE;AAC/C,IAAA,CAAC,6DAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,OAAO,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;AAC3C,IAAA,CAAC,2DAAC;IAEM,iBAAiB,GAAA;AACvB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACzC,MAAM,SAAS,GAAa,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;YAC5D;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB;YACA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE;YAC7E,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,UAAU,GAAG,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAA,EAAG,YAAY,CAAA,CAAE;QAC3G;AACA,QAAA,OAAO,MAAM;IACf;AAEmB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjF,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE;AACnC,IAAA,CAAC,2DAAC;AAEiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI;QACjE;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI;AACtC,IAAA,CAAC,oDAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,OAAO,MAAM;QACf;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,OAAO,OAAO;QAChB;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,yDAAC;IAEiB,cAAc,GAAG,QAAQ,CAAC,MAC3C,aAAa,CACX,iBAAiB,CAAC;AAChB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,OAAO,EAAE,IAAI,CAAC,aAAa,EAA4D;AACxF,KAAA,CAAC,EACF,IAAI,CAAC,KAAK,EAAE,CACb,0DACF;AAEgB,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;QACnC,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC,KAAK;QACtB;QACA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzC,IAAA,CAAC,iEAAC;AAEiB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAChD,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;QACnC,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxD,IAAA,CAAC,oDAAC;IAEiB,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAChD,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,YAAY,CAAC,CAAC,CAAC;QACxB;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;QAE9B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AACrC,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC3B,OAAO,SAAS,CAAC,OAAO;YAC1B;QACF;AAEA,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AACtB,YAAA,OAAO,oBAAoB;QAC7B;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,wDAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC/B,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC;AACrD,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;oBAC7B;gBACF;AAEA,gBAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU;AACnC,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9B,gBAAA,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM;AAC9D,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;qBACzC,SAAS,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,gBAAA,CAAC,CAAC;YACN;AAAE,YAAA,MAAM;AACN,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACxB;AACF,QAAA,CAAC,CAAC;QAEF,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IACvC;AAEO,IAAA,UAAU,CAAC,KAAqB,EAAA;QACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AAEnC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;gBACnE,MAAM,KAAK,GAAG,KAAmB;gBACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/B;YACA;QACF;QAEA,IAAI,IAAI,GAAgB,IAAI;AAE5B,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,IAAI,GAAG,KAAK;QACd;QAEA,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACtC,IAAI,GAAG,SAAS,KAAK,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACtF;QAEA,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEO,IAAA,gBAAgB,CAAC,EAAmC,EAAA;AACzD,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC;IAEO,IAAI,GAAA;QACT,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC;QACF;AACA,QAAA,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE;IAChC;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE;IACjC;IAEO,MAAM,GAAA;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC5B,IAAI,CAAC,KAAK,EAAE;YACd;YACA;QACF;QAEA,IAAI,CAAC,IAAI,EAAE;IACb;IAEO,KAAK,GAAA;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC;IAEO,KAAK,GAAA;QACV,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC1C;IAEO,IAAI,GAAA;QACT,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE;IACzC;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAE/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE;QAC3C;IACF;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE;AAEjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE;QACzC;IACF;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEO,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEU,aAAa,GAAA;QACrB,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;YAC9B,IAAI,CAAC,uBAAuB,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,uBAAuB,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,uBAAuB,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,uBAAuB,EAAE;AAE9B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACnD;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;YACrC,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAChC;YACF;YACA,IAAI,CAAC,wBAAwB,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAE5B,QAAA,IAAI,KAAK,IAAI,GAAG,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AACrE,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjE;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,wBAAwB,EAAE;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,wBAAwB,EAAE;IACjC;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YAC3C;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,GAAG,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,GAAG,CAAC;IACtC;AAEQ,IAAA,mBAAmB,CAAC,IAAU,EAAA;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IAEQ,eAAe,GAAA;QACrB,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;QACxE,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5C;IACF;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAE3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;QACxE,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YAC9C,IAAI,CAAC,kBAAkB,EAAE;QAC3B;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB;QAEA,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACnD;IACF;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACzC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC/B;IACF;AAEU,IAAA,gBAAgB,CAAC,OAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;IACnC;AAEU,IAAA,gBAAgB,CAAC,KAAoB,EAAA;QAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE;YAChC;QACF;QAEA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;AAElC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,cAAc,EAAE;YACxC;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;AAChD,gBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;gBAC9C,IAAI,KAAK,EAAE;AACT,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC/B;gBACA,IAAI,GAAG,EAAE;AACP,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBACzB;YACF;YACA;QACF;QAEA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;QAC5C,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7B;IACF;AAEQ,IAAA,wBAAwB,CAAC,MAAc,EAAA;QAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM;IAC/C;AAEU,IAAA,kBAAkB,CAAC,KAAY,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;AAElC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,cAAc,EAAE;YACxC;QACF;QAEA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,EAAE;YAC9B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAC7B;AAEU,IAAA,gBAAgB,CAAC,KAAY,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAEhC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,cAAc,EAAE;YACxC;QACF;QAEA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,EAAE;YAClC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAChC;AAEU,IAAA,iBAAiB,CAAC,KAAY,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;QAErC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACtC,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,EAAE;AAC9B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACtC,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,KAAK,CAAC,IAAI,EAAE;IACd;AAEU,IAAA,eAAe,CAAC,KAAY,EAAA;QACpC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;QAErC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;YACpC,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,EAAE;AAClC,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;YACpC,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,KAAK,CAAC,IAAI,EAAE;IACd;AAEU,IAAA,YAAY,CAAC,MAAkB,EAAA;QACvC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACpD;AAEU,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;YAChC;QACF;QAEA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAExE,QAAA,IAAI,iBAAiB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACtC;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;QAErC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,EAAE;YAClB;QACF;QAEA,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9C,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChD,IAAI,CAAC,WAAW,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAClD;AAEU,IAAA,YAAY,CAAC,KAAY,EAAA;QACjC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QAEhC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;AACrC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;AAChD,gBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;AAC9C,gBAAA,IAAI,KAAK,IAAI,GAAG,EAAE;AAChB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,oBAAA,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG;oBAC3B,MAAM,UAAU,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK;oBACxC,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,GAAG;AACtC,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;AAChC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AAClC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC5B,IAAI,CAAC,WAAW,EAAE;oBAClB,IAAI,CAAC,KAAK,EAAE;oBACZ,KAAK,CAAC,IAAI,EAAE;oBACZ;gBACF;YACF;YACA,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,KAAK,EAAE;YACZ,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;QAEA,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;QACrC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ,KAAK,CAAC,IAAI,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,KAAK,EAAE;QACZ,KAAK,CAAC,IAAI,EAAE;IACd;AAEU,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,EAAE;YACjC;QACF;AAEA,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;AACrB,QAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,GAAG,KAAK,OAAO,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAC3C,IAAI,CAAC,SAAS,EAAE;YAClB;YACA;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrE,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;QAC/B;IACF;AAEU,IAAA,UAAU,CAAC,GAAiB,EAAA;AACpC,QAAA,IAAI,GAAG,CAAC,UAAU,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI;AAE5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;YACvC;QACF;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;IAC1C;AAEU,IAAA,UAAU,CAAC,GAAiB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC;IACF;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B;IACF;AAEU,IAAA,YAAY,CAAC,UAAkB,EAAA;AACvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;QACxC,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;AAEhD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;YACjC,MAAM,cAAc,GAClB,QAAQ,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE;iBAC9C,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAEnG,IAAI,cAAc,EAAE;gBAClB,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAEU,IAAA,WAAW,CAAC,IAAY,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;AAExC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;QAEA,IAAI,OAAO,GAAG,IAAI;AAElB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;AAC9C,YAAA,IAAI,OAAO,IAAI,OAAO,EAAE;AACtB,gBAAA,OAAO,GAAG,OAAO,GAAG,CAAC;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC;IACnE;AAEU,IAAA,cAAc,CAAC,YAAoB,EAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;AACtD,QAAA,MAAM,mBAAmB,GAAG,YAAY,GAAG,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,KAAK,EAAE;IACd;AAEU,IAAA,aAAa,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;AACtD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAC/B;AAEU,IAAA,aAAa,CAAC,MAA0B,EAAA;QAChD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AAEA,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEjD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;gBACxB,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;YACd;YACA;QACF;QAEA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QAE7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE;AAEnC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AACrE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEU,YAAY,GAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAE7B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;QACtD;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;gBACxB,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;YACd;YACA;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,KAAK;AAChD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;YAC/B;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACpD,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;YACd;YACA;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,KAAK;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEU,IAAA,OAAO,CAAC,KAAiB,EAAA;QACjC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAErB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAE5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B;QAEA,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,aAAa,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,SAAS,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;gBAChC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;oBACxC,IAAI,IAAI,EAAE;gBACZ;gBACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;oBAC1C,IAAI,GAAG,CAAC;gBACV;YACF;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,IAAI,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,gBAAgB,GAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,EAAE;AACnE,QAAA,MAAM,aAAa,GAAgC;AACjD,YAAA,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3B,YAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5B,YAAA,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AAClC,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C;IAEU,YAAY,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,EAAE;AACnE,QAAA,MAAM,aAAa,GAAgC;AACjD,YAAA,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1B,YAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3B,YAAA,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;AACjC,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C;IAEU,oBAAoB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C;IAEU,gBAAgB,GAAA;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C;AAEU,IAAA,OAAO,CAAC,IAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;AAEU,IAAA,UAAU,CAAC,IAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;AAEU,IAAA,eAAe,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;QACpC,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;AAEhD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACvC,MAAM,aAAa,GACjB,QAAQ,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,EAAE;aAChD,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEvG,IAAI,aAAa,EAAE;AACjB,YAAA,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QACrC;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEU,IAAA,cAAc,CAAC,IAAY,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;QACpC,IAAI,OAAO,GAAG,IAAI;QAElB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;AACpD,QAAA,IAAI,OAAO,IAAI,SAAS,EAAE;AACxB,YAAA,OAAO,GAAG,SAAS,GAAG,CAAC;QACzB;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5B;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEU,IAAA,UAAU,CAAC,KAAY,EAAA;AAC/B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC;AACrD,QAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC;AACA,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC;AACA,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC;IACF;IAEU,mBAAmB,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C;IAEU,eAAe,GAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3C;IAEU,uBAAuB,GAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C;IAEU,mBAAmB,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1C;AAEU,IAAA,cAAc,CAAC,KAAY,EAAA;AACnC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEU,IAAA,gBAAgB,CAAC,KAAY,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEU,IAAA,gBAAgB,CAAC,KAAY,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC;AACrD,QAAA,IAAI,QAAQ,KAAK,UAAU,EAAE;AAC3B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC;AACA,QAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;AAC7B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACzC;AACA,QAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;AAC7B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACzC;IACF;IAEU,eAAe,GAAA;AACvB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;AACtD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;QACnC,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QACrC;QACA,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QACrC;QACA,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;QAC5B,IAAI,CAAC,GAAG,EAAE;YACR;QACF;AAEA,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;YAChC,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;gBAC3C,IAAI,IAAI,EAAE;YACZ;YACA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;gBAC7C,IAAI,GAAG,CAAC;YACV;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;AAEQ,IAAA,sBAAsB,CAAC,IAAU,EAAA;QACvC,IAAI,SAAS,GAAG,IAAI;AAEpB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACzE;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAEhD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACxC,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEQ,IAAA,qBAAqB,CAAC,IAAU,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;QAE5B,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC,EAAE;YAC5B,IAAI,SAAS,GAAG,IAAI;AACpB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;oBAChC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;wBACxC,IAAI,IAAI,EAAE;oBACZ;oBACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;wBAC1C,IAAI,GAAG,CAAC;oBACV;gBACF;AACA,gBAAA,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACjE;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B;QACF;QAEA,IAAI,OAAO,GAAG,IAAI;AAClB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;gBAChC,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;oBAC3C,IAAI,IAAI,EAAE;gBACZ;gBACA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;oBAC7C,IAAI,GAAG,CAAC;gBACV;YACF;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACrE;QAEA,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACjD,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE;AACtC,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QACzF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YACpD,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;QACF;AAEA,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;YAChC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;gBACxC,IAAI,IAAI,EAAE;YACZ;YACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;gBAC1C,IAAI,GAAG,CAAC;YACV;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;YAChC,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB;YACA;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;QACrC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF;IACF;IAEQ,qBAAqB,CAAC,KAAW,EAAE,GAAS,EAAA;AAClD,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC5C,YAAA,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC3B;YACF;AACA,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;YAC/B,IAAI,KAAK,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;gBACrC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC1F,OAAO,MAAM,CAAC,GAAG;gBACnB;YACF;QACF;AACA,QAAA,OAAO,QAAQ;IACjB;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACnD;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE;AAE/E,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAE5B,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;AAClB,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,gBAAA,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAA+B;YAC1F;AAEA,YAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,gBAAA,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAA+B;YACxG;AAEA,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;QACvB;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;QACjC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC;QAC1B;AACA,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,YAAA,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QACjC;AAEA,QAAA,OAAO,IAAI;IACb;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;AACjC,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC;QAChF,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YAC9G,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACnC;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAChC;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,mBAAmB,CAAC,GAAW,EAAA;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,QAAQ,EAAE;AACtD,QAAA,IAAI,OAAa;QAEjB,QAAQ,GAAG;AACT,YAAA,KAAK,SAAS;gBACZ,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAClC;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBACjC;AACF,YAAA,KAAK,WAAW;gBACd,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAClC;AACF,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBACjC;AACF,YAAA;gBACE;;AAGJ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE/B,QAAA,IAAI,OAAO,IAAI,OAAO,GAAG,OAAO,EAAE;YAChC;QACF;AACA,QAAA,IAAI,OAAO,IAAI,OAAO,GAAG,OAAO,EAAE;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC;IACF;AAEQ,IAAA,gBAAgB,CAAC,IAAU,EAAA;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvD;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE;QACvB;QAEA,MAAM,SAAS,GAAa,EAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QAC5D;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB;QAEA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,UAAU;QACnB;QACA,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,UAAU,EAAE;IAC1C;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAClD;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB;QACF;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACvB,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACvB,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;AACzC,YAAA,eAAe,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;AAC7C,YAAA,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;AACrC,YAAA,cAAc,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;AAChC,SAAA,CAAC;IACJ;IAEU,YAAY,GAAA;AACpB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;AACpC,QAAA,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAE3B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;QAChC,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QAClC;QACA,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QAClC;QACA,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEU,IAAA,cAAc,CAAC,KAAY,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAoB;AAC7C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;AAEhC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3B,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QAClC;QACA,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QAClC;QACA,IAAI,CAAC,iBAAiB,EAAE;IAC1B;uGAp/DW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAXlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1FH,up5BAwpBA,EAAA,MAAA,EAAA,CAAA,ufAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhlBI,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,iBAAiB,0TACjB,gBAAgB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACjB,mBAAmB,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnB,gBAAgB,gDAChB,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAgBZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA1B9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EACb;wBACP,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;AACtB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,SAAA,EAGL;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,YAC3B,WAAW,EAAA,QAAA,EAAA,up5BAAA,EAAA,MAAA,EAAA,CAAA,ufAAA,CAAA,EAAA;AAkCiD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,kEACX,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEhIjF;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shival99/z-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 20+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -152,7 +152,7 @@ declare class ZCalendarComponent implements OnInit, ControlValueAccessor {
|
|
|
152
152
|
protected readonly isMonthMode: _angular_core.Signal<boolean>;
|
|
153
153
|
protected readonly isYearMode: _angular_core.Signal<boolean>;
|
|
154
154
|
protected readonly isQuarterMode: _angular_core.Signal<boolean>;
|
|
155
|
-
protected readonly todayButtonText: _angular_core.Signal<"
|
|
155
|
+
protected readonly todayButtonText: _angular_core.Signal<"Quý này" | "Năm này" | "Tháng này" | "Bây giờ" | "Hôm nay">;
|
|
156
156
|
protected readonly currentMonth: _angular_core.Signal<Date>;
|
|
157
157
|
protected readonly currentYear: _angular_core.Signal<number>;
|
|
158
158
|
protected readonly currentMonthIndex: _angular_core.Signal<number>;
|
|
@@ -284,16 +284,16 @@ declare class ZCalendarComponent implements OnInit, ControlValueAccessor {
|
|
|
284
284
|
|
|
285
285
|
declare const zCalendarVariants: (props?: ({
|
|
286
286
|
zSize?: "sm" | "default" | "lg" | null | undefined;
|
|
287
|
-
zStatus?: "default" | "disabled" | "
|
|
287
|
+
zStatus?: "default" | "disabled" | "readonly" | "open" | "error" | null | undefined;
|
|
288
288
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
289
289
|
declare const zCalendarDayVariants: (props?: ({
|
|
290
|
-
state?: "default" | "today" | "selected" | "inRange" | "rangeStart" | "rangeEnd" | "rangeSingle" | "
|
|
290
|
+
state?: "default" | "disabled" | "today" | "selected" | "inRange" | "rangeStart" | "rangeEnd" | "rangeSingle" | "otherMonth" | "hovered" | null | undefined;
|
|
291
291
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
292
292
|
declare const zCalendarMonthVariants: (props?: ({
|
|
293
|
-
state?: "default" | "
|
|
293
|
+
state?: "default" | "disabled" | "selected" | "current" | null | undefined;
|
|
294
294
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
295
295
|
declare const zCalendarYearVariants: (props?: ({
|
|
296
|
-
state?: "default" | "
|
|
296
|
+
state?: "default" | "disabled" | "selected" | "current" | null | undefined;
|
|
297
297
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
298
298
|
|
|
299
299
|
export { ZCalendarComponent, zCalendarDayVariants, zCalendarMonthVariants, zCalendarVariants, zCalendarYearVariants };
|