@f1softinternational/f1-nepali-date-picker 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f1softinternational-f1-nepali-date-picker.mjs","sources":["../../../projects/f1-nepali-date-picker/src/lib/utils/bs-calendar-data.ts","../../../projects/f1-nepali-date-picker/src/lib/models/nepali-date.model.ts","../../../projects/f1-nepali-date-picker/src/lib/services/date-converter.service.ts","../../../projects/f1-nepali-date-picker/src/lib/components/nepali-date-picker/nepali-date-picker.component.ts","../../../projects/f1-nepali-date-picker/src/lib/components/nepali-date-picker/nepali-date-picker.component.html","../../../projects/f1-nepali-date-picker/src/lib/f1-nepali-date-picker.module.ts","../../../projects/f1-nepali-date-picker/src/public-api.ts","../../../projects/f1-nepali-date-picker/src/f1softinternational-f1-nepali-date-picker.ts"],"sourcesContent":["/**\n * Bikram Sambat Calendar Data\n * Contains month days mapping for each BS year and localization strings\n */\n\n/**\n * BS Year to Month Days Mapping\n * Each entry: [year]: [days in each month from Baisakh to Chaitra]\n * Data range: 2000 BS to 2090 BS\n */\nexport const BS_CALENDAR_DATA: { [year: number]: number[] } = {\n 2000: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2001: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2002: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2003: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2004: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2005: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2006: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2007: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2008: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n 2009: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2010: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2011: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2012: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2013: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2014: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2015: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2016: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2017: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2018: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2019: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2020: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2021: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2022: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2023: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2024: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2025: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2026: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2027: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2028: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2029: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n 2030: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2031: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2032: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2033: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2034: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2035: [30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n 2036: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2037: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2038: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2039: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2040: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2041: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2042: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2043: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2044: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2045: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2046: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2047: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2048: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2049: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2050: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2051: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2052: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2053: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2054: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2055: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2056: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n 2057: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2058: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2059: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2060: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2061: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2062: [30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],\n 2063: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2064: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2065: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2066: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n 2067: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2068: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2069: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2070: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2071: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2072: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2073: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2074: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2075: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2076: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2077: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2078: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2079: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2080: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2081: [31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2082: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2083: [31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n 2084: [31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n 2085: [31, 32, 31, 32, 30, 31, 30, 30, 29, 30, 30, 30],\n 2086: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2087: [31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],\n 2088: [30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30],\n 2089: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2090: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n};\n\n/**\n * Nepali month names\n */\nexport const BS_MONTHS_NP: string[] = [\n 'बैशाख',\n 'जेठ',\n 'असार',\n 'श्रावण',\n 'भदौ',\n 'आश्विन',\n 'कार्तिक',\n 'मंसिर',\n 'पौष',\n 'माघ',\n 'फाल्गुन',\n 'चैत्र',\n];\n\n/**\n * English month names (Romanized)\n */\nexport const BS_MONTHS_EN: string[] = [\n 'Baisakh',\n 'Jestha',\n 'Ashar',\n 'Shrawan',\n 'Bhadra',\n 'Ashwin',\n 'Kartik',\n 'Mangsir',\n 'Poush',\n 'Magh',\n 'Falgun',\n 'Chaitra',\n];\n\n/**\n * Nepali weekday names (Sunday first)\n */\nexport const BS_WEEKDAYS_NP: string[] = ['आइत', 'सोम', 'मंगल', 'बुध', 'बिही', 'शुक्र', 'शनि'];\n\n/**\n * English weekday names (Sunday first)\n */\nexport const BS_WEEKDAYS_EN: string[] = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n/**\n * Nepali numerals mapping\n */\nexport const NEPALI_DIGITS: string[] = ['०', '१', '२', '३', '४', '५', '६', '७', '८', '९'];\n\n/**\n * Reference date for conversion calculations\n * BS: 2000-01-01 corresponds to AD: 1943-04-14\n */\nexport const BS_EPOCH = {\n year: 2000,\n month: 1,\n day: 1,\n};\n\nexport const AD_EPOCH = new Date(1943, 3, 14); // April 14, 1943\n\n/**\n * Get minimum supported BS year\n */\nexport const BS_MIN_YEAR = Math.min(...Object.keys(BS_CALENDAR_DATA).map(Number));\n\n/**\n * Get maximum supported BS year\n */\nexport const BS_MAX_YEAR = Math.max(...Object.keys(BS_CALENDAR_DATA).map(Number));\n\n/**\n * Convert number to Nepali digits\n */\nexport function toNepaliDigits(num: number | string): string {\n return String(num)\n .split('')\n .map((char) => {\n const digit = parseInt(char, 10);\n return isNaN(digit) ? char : NEPALI_DIGITS[digit];\n })\n .join('');\n}\n\n/**\n * Get total days in a BS year\n */\nexport function getTotalDaysInBSYear(year: number): number {\n const monthDays = BS_CALENDAR_DATA[year];\n if (!monthDays) {\n throw new Error(`Year ${year} is out of supported range (${BS_MIN_YEAR}-${BS_MAX_YEAR})`);\n }\n return monthDays.reduce((sum, days) => sum + days, 0);\n}\n\n/**\n * Get days in a specific BS month\n */\nexport function getDaysInBSMonth(year: number, month: number): number {\n const monthDays = BS_CALENDAR_DATA[year];\n if (!monthDays) {\n throw new Error(`Year ${year} is out of supported range (${BS_MIN_YEAR}-${BS_MAX_YEAR})`);\n }\n if (month < 1 || month > 12) {\n throw new Error(`Month ${month} is invalid. Must be between 1 and 12.`);\n }\n return monthDays[month - 1];\n}\n","import {\n BS_CALENDAR_DATA,\n BS_MONTHS_EN,\n BS_MONTHS_NP,\n BS_MIN_YEAR,\n BS_MAX_YEAR,\n AD_EPOCH,\n BS_EPOCH,\n getDaysInBSMonth,\n toNepaliDigits,\n} from '../utils/bs-calendar-data';\n\n/**\n * NepaliDate - Represents a date in the Bikram Sambat (BS) calendar\n */\nexport class NepaliDate {\n private _year: number;\n private _month: number;\n private _day: number;\n\n constructor(year: number, month: number, day: number) {\n this._year = year;\n this._month = month;\n this._day = day;\n }\n\n // Getters\n get year(): number {\n return this._year;\n }\n\n get month(): number {\n return this._month;\n }\n\n get day(): number {\n return this._day;\n }\n\n /**\n * Create NepaliDate from current date\n */\n static today(): NepaliDate {\n return NepaliDate.fromAD(new Date());\n }\n\n /**\n * Create NepaliDate from AD Date\n */\n static fromAD(adDate: Date): NepaliDate {\n // Calculate days from epoch\n const epochTime = AD_EPOCH.getTime();\n const targetTime = new Date(adDate.getFullYear(), adDate.getMonth(), adDate.getDate()).getTime();\n let daysDiff = Math.floor((targetTime - epochTime) / (1000 * 60 * 60 * 24));\n\n if (daysDiff < 0) {\n throw new Error('Date is before supported range');\n }\n\n let bsYear = BS_EPOCH.year;\n let bsMonth = BS_EPOCH.month;\n let bsDay = BS_EPOCH.day;\n\n // Add days\n while (daysDiff > 0) {\n const daysInMonth = getDaysInBSMonth(bsYear, bsMonth);\n const daysRemainingInMonth = daysInMonth - bsDay;\n\n if (daysDiff <= daysRemainingInMonth) {\n bsDay += daysDiff;\n daysDiff = 0;\n } else {\n daysDiff -= daysRemainingInMonth + 1;\n bsMonth++;\n bsDay = 1;\n\n if (bsMonth > 12) {\n bsMonth = 1;\n bsYear++;\n if (bsYear > BS_MAX_YEAR) {\n throw new Error(`Date exceeds supported range (max: ${BS_MAX_YEAR} BS)`);\n }\n }\n }\n }\n\n return new NepaliDate(bsYear, bsMonth, bsDay);\n }\n\n /**\n * Convert to AD Date\n */\n toAD(): Date {\n if (!this.isValid()) {\n throw new Error('Invalid NepaliDate');\n }\n\n let totalDays = 0;\n\n // Add days for complete years\n for (let year = BS_EPOCH.year; year < this._year; year++) {\n const yearData = BS_CALENDAR_DATA[year];\n if (yearData) {\n totalDays += yearData.reduce((sum, days) => sum + days, 0);\n }\n }\n\n // Add days for complete months in current year\n for (let month = 1; month < this._month; month++) {\n totalDays += getDaysInBSMonth(this._year, month);\n }\n\n // Add remaining days\n totalDays += this._day - 1;\n\n // Calculate AD date from epoch\n const adDate = new Date(AD_EPOCH);\n adDate.setDate(adDate.getDate() + totalDays);\n\n return adDate;\n }\n\n /**\n * Check if the date is valid\n */\n isValid(): boolean {\n // Check year range\n if (this._year < BS_MIN_YEAR || this._year > BS_MAX_YEAR) {\n return false;\n }\n\n // Check month range\n if (this._month < 1 || this._month > 12) {\n return false;\n }\n\n // Check day range\n const daysInMonth = getDaysInBSMonth(this._year, this._month);\n if (this._day < 1 || this._day > daysInMonth) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Get the day of week (0 = Sunday, 6 = Saturday)\n */\n getDay(): number {\n return this.toAD().getDay();\n }\n\n /**\n * Get month name in specified language\n */\n getMonthName(lang: 'en' | 'np' = 'en'): string {\n return lang === 'np' ? BS_MONTHS_NP[this._month - 1] : BS_MONTHS_EN[this._month - 1];\n }\n\n /**\n * Format date according to pattern\n * Patterns:\n * YYYY - 4-digit year\n * YY - 2-digit year\n * MM - 2-digit month\n * M - month without leading zero\n * DD - 2-digit day\n * D - day without leading zero\n * MMMM - full month name (English)\n * mmmm - full month name (Nepali)\n */\n format(pattern: string = 'YYYY-MM-DD', useNepaliDigits: boolean = false): string {\n let result = pattern;\n\n // Replace patterns (order matters - longer patterns first)\n result = result.replace(/YYYY/g, String(this._year).padStart(4, '0'));\n result = result.replace(/YY/g, String(this._year).slice(-2));\n result = result.replace(/MMMM/g, BS_MONTHS_EN[this._month - 1]);\n result = result.replace(/mmmm/g, BS_MONTHS_NP[this._month - 1]);\n result = result.replace(/MM/g, String(this._month).padStart(2, '0'));\n result = result.replace(/M/g, String(this._month));\n result = result.replace(/DD/g, String(this._day).padStart(2, '0'));\n result = result.replace(/D/g, String(this._day));\n\n if (useNepaliDigits) {\n result = toNepaliDigits(result);\n }\n\n return result;\n }\n\n /**\n * Create a clone of this date\n */\n clone(): NepaliDate {\n return new NepaliDate(this._year, this._month, this._day);\n }\n\n /**\n * Compare with another NepaliDate\n * Returns: -1 if this < other, 0 if equal, 1 if this > other\n */\n compareTo(other: NepaliDate): number {\n if (this._year !== other._year) {\n return this._year < other._year ? -1 : 1;\n }\n if (this._month !== other._month) {\n return this._month < other._month ? -1 : 1;\n }\n if (this._day !== other._day) {\n return this._day < other._day ? -1 : 1;\n }\n return 0;\n }\n\n /**\n * Check if this date is before another\n */\n isBefore(other: NepaliDate): boolean {\n return this.compareTo(other) < 0;\n }\n\n /**\n * Check if this date is after another\n */\n isAfter(other: NepaliDate): boolean {\n return this.compareTo(other) > 0;\n }\n\n /**\n * Check if this date equals another\n */\n equals(other: NepaliDate): boolean {\n return this.compareTo(other) === 0;\n }\n\n /**\n * Add days to date (returns new NepaliDate)\n */\n addDays(days: number): NepaliDate {\n const adDate = this.toAD();\n adDate.setDate(adDate.getDate() + days);\n return NepaliDate.fromAD(adDate);\n }\n\n /**\n * Add months to date (returns new NepaliDate)\n */\n addMonths(months: number): NepaliDate {\n let newYear = this._year;\n let newMonth = this._month + months;\n\n while (newMonth > 12) {\n newMonth -= 12;\n newYear++;\n }\n while (newMonth < 1) {\n newMonth += 12;\n newYear--;\n }\n\n // Adjust day if it exceeds days in new month\n const daysInNewMonth = getDaysInBSMonth(newYear, newMonth);\n const newDay = Math.min(this._day, daysInNewMonth);\n\n return new NepaliDate(newYear, newMonth, newDay);\n }\n\n /**\n * Add years to date (returns new NepaliDate)\n */\n addYears(years: number): NepaliDate {\n const newYear = this._year + years;\n const daysInNewMonth = getDaysInBSMonth(newYear, this._month);\n const newDay = Math.min(this._day, daysInNewMonth);\n return new NepaliDate(newYear, this._month, newDay);\n }\n\n /**\n * Get string representation\n */\n toString(): string {\n return this.format('YYYY-MM-DD');\n }\n\n /**\n * Convert to plain object\n */\n toObject(): { year: number; month: number; day: number } {\n return {\n year: this._year,\n month: this._month,\n day: this._day,\n };\n }\n\n /**\n * Create from plain object\n */\n static fromObject(obj: { year: number; month: number; day: number }): NepaliDate {\n return new NepaliDate(obj.year, obj.month, obj.day);\n }\n\n /**\n * Parse from string (YYYY-MM-DD format)\n */\n static parse(dateString: string): NepaliDate {\n const parts = dateString.split('-').map(Number);\n if (parts.length !== 3 || parts.some(isNaN)) {\n throw new Error('Invalid date format. Expected YYYY-MM-DD');\n }\n return new NepaliDate(parts[0], parts[1], parts[2]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NepaliDate } from '../models/nepali-date.model';\nimport {\n BS_CALENDAR_DATA,\n BS_MONTHS_EN,\n BS_MONTHS_NP,\n BS_WEEKDAYS_EN,\n BS_WEEKDAYS_NP,\n BS_MIN_YEAR,\n BS_MAX_YEAR,\n getDaysInBSMonth,\n getTotalDaysInBSYear,\n toNepaliDigits,\n} from '../utils/bs-calendar-data';\n\n/**\n * DateConverterService - Service for BS/AD date conversions and utilities\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DateConverterService {\n /**\n * Convert AD Date to NepaliDate (BS)\n */\n convertToBS(adDate: Date): NepaliDate {\n return NepaliDate.fromAD(adDate);\n }\n\n /**\n * Convert NepaliDate (BS) to AD Date\n */\n convertToAD(bsDate: NepaliDate): Date {\n return bsDate.toAD();\n }\n\n /**\n * Get today's date in BS\n */\n getTodayBS(): NepaliDate {\n return NepaliDate.today();\n }\n\n /**\n * Get number of days in a BS month\n */\n getDaysInMonth(year: number, month: number): number {\n return getDaysInBSMonth(year, month);\n }\n\n /**\n * Get total days in a BS year\n */\n getDaysInYear(year: number): number {\n return getTotalDaysInBSYear(year);\n }\n\n /**\n * Get month names\n */\n getMonthNames(lang: 'en' | 'np' = 'en'): string[] {\n return lang === 'np' ? [...BS_MONTHS_NP] : [...BS_MONTHS_EN];\n }\n\n /**\n * Get weekday names\n */\n getWeekdayNames(lang: 'en' | 'np' = 'en'): string[] {\n return lang === 'np' ? [...BS_WEEKDAYS_NP] : [...BS_WEEKDAYS_EN];\n }\n\n /**\n * Get minimum supported year\n */\n getMinYear(): number {\n return BS_MIN_YEAR;\n }\n\n /**\n * Get maximum supported year\n */\n getMaxYear(): number {\n return BS_MAX_YEAR;\n }\n\n /**\n * Validate a BS date\n */\n isValidDate(year: number, month: number, day: number): boolean {\n const date = new NepaliDate(year, month, day);\n return date.isValid();\n }\n\n /**\n * Format a NepaliDate\n */\n format(date: NepaliDate, pattern: string = 'YYYY-MM-DD', useNepaliDigits: boolean = false): string {\n return date.format(pattern, useNepaliDigits);\n }\n\n /**\n * Parse a date string to NepaliDate\n */\n parse(dateString: string): NepaliDate {\n return NepaliDate.parse(dateString);\n }\n\n /**\n * Convert number to Nepali digits\n */\n toNepaliDigits(num: number | string): string {\n return toNepaliDigits(num);\n }\n\n /**\n * Get calendar grid for a month\n * Returns a 2D array representing weeks (rows) and days (columns)\n * Each cell contains the day number or null for empty cells\n */\n getMonthCalendarGrid(year: number, month: number): (number | null)[][] {\n const daysInMonth = this.getDaysInMonth(year, month);\n const firstDayOfMonth = new NepaliDate(year, month, 1);\n const startDayOfWeek = firstDayOfMonth.getDay(); // 0 = Sunday\n\n const grid: (number | null)[][] = [];\n let currentWeek: (number | null)[] = [];\n\n // Fill empty cells before first day\n for (let i = 0; i < startDayOfWeek; i++) {\n currentWeek.push(null);\n }\n\n // Fill days\n for (let day = 1; day <= daysInMonth; day++) {\n currentWeek.push(day);\n\n if (currentWeek.length === 7) {\n grid.push(currentWeek);\n currentWeek = [];\n }\n }\n\n // Fill remaining empty cells in last week\n if (currentWeek.length > 0) {\n while (currentWeek.length < 7) {\n currentWeek.push(null);\n }\n grid.push(currentWeek);\n }\n\n return grid;\n }\n\n /**\n * Get years range for year selector\n */\n getYearRange(startYear?: number, endYear?: number): number[] {\n const start = startYear ?? BS_MIN_YEAR;\n const end = endYear ?? BS_MAX_YEAR;\n const years: number[] = [];\n\n for (let year = start; year <= end; year++) {\n if (BS_CALENDAR_DATA[year]) {\n years.push(year);\n }\n }\n\n return years;\n }\n\n /**\n * Check if a date is within a range\n */\n isDateInRange(date: NepaliDate, minDate?: NepaliDate, maxDate?: NepaliDate): boolean {\n if (minDate && date.isBefore(minDate)) {\n return false;\n }\n if (maxDate && date.isAfter(maxDate)) {\n return false;\n }\n return true;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n OnInit,\n OnDestroy,\n ElementRef,\n HostListener,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NepaliDate } from '../../models/nepali-date.model';\nimport { DateConverterService } from '../../services/date-converter.service';\n\n@Component({\n selector: 'f1-nepali-date-picker',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './nepali-date-picker.component.html',\n styleUrls: ['./nepali-date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NepaliDatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class NepaliDatePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\n /** Minimum selectable date */\n @Input() minDate?: NepaliDate;\n\n /** Maximum selectable date */\n @Input() maxDate?: NepaliDate;\n\n /** Placeholder text */\n @Input() placeholder = 'Select date';\n\n /** Display format for the input */\n @Input() displayFormat = 'YYYY-MM-DD';\n\n /** Theme: 'light' or 'dark' */\n @Input() theme: 'light' | 'dark' = 'light';\n\n /** Language for month/day names */\n @Input() language: 'en' | 'np' = 'en';\n\n /** Show today button */\n @Input() showTodayButton = true;\n\n /** Disabled state */\n @Input() disabled = false;\n\n /** Use Nepali digits in display */\n @Input() useNepaliDigits = false;\n\n /** Event emitted when date changes */\n @Output() dateChange = new EventEmitter<NepaliDate | null>();\n\n // Internal state\n isOpen = false;\n selectedDate: NepaliDate | null = null;\n viewDate: NepaliDate;\n calendarGrid: (number | null)[][] = [];\n monthNames: string[] = [];\n weekdayNames: string[] = [];\n years: number[] = [];\n\n // CVA callbacks\n private onChange: (value: NepaliDate | null) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor(\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private dateConverter: DateConverterService\n ) {\n this.viewDate = this.dateConverter.getTodayBS();\n }\n\n ngOnInit(): void {\n this.monthNames = this.dateConverter.getMonthNames(this.language);\n this.weekdayNames = this.dateConverter.getWeekdayNames(this.language);\n this.years = this.dateConverter.getYearRange();\n this.updateCalendarGrid();\n }\n\n ngOnDestroy(): void { }\n\n // ControlValueAccessor implementation\n writeValue(value: NepaliDate | null): void {\n this.selectedDate = value;\n if (value) {\n this.viewDate = value.clone();\n }\n this.updateCalendarGrid();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: NepaliDate | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n // UI Methods\n toggleCalendar(): void {\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n this.onTouched();\n this.updateCalendarGrid();\n }\n this.cdr.markForCheck();\n }\n\n closeCalendar(): void {\n this.isOpen = false;\n this.cdr.markForCheck();\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.closeCalendar();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.closeCalendar();\n }\n\n // Navigation\n previousMonth(): void {\n this.viewDate = this.viewDate.addMonths(-1);\n this.updateCalendarGrid();\n this.cdr.markForCheck();\n }\n\n nextMonth(): void {\n this.viewDate = this.viewDate.addMonths(1);\n this.updateCalendarGrid();\n this.cdr.markForCheck();\n }\n\n onYearChange(event: Event): void {\n const year = parseInt((event.target as HTMLSelectElement).value, 10);\n this.viewDate = new NepaliDate(year, this.viewDate.month, 1);\n // Adjust day if needed\n const daysInMonth = this.dateConverter.getDaysInMonth(year, this.viewDate.month);\n if (this.viewDate.day > daysInMonth) {\n this.viewDate = new NepaliDate(year, this.viewDate.month, daysInMonth);\n }\n this.updateCalendarGrid();\n this.cdr.markForCheck();\n }\n\n onMonthChange(event: Event): void {\n const month = parseInt((event.target as HTMLSelectElement).value, 10);\n const daysInMonth = this.dateConverter.getDaysInMonth(this.viewDate.year, month);\n const newDay = Math.min(this.viewDate.day, daysInMonth);\n this.viewDate = new NepaliDate(this.viewDate.year, month, newDay);\n this.updateCalendarGrid();\n this.cdr.markForCheck();\n }\n\n // Date selection\n selectDate(day: number | null): void {\n if (day === null || this.disabled) return;\n\n const newDate = new NepaliDate(this.viewDate.year, this.viewDate.month, day);\n\n if (!this.isDateSelectable(day)) return;\n\n this.selectedDate = newDate;\n this.onChange(this.selectedDate);\n this.dateChange.emit(this.selectedDate);\n this.closeCalendar();\n this.cdr.markForCheck();\n }\n\n selectToday(): void {\n const today = this.dateConverter.getTodayBS();\n if (this.dateConverter.isDateInRange(today, this.minDate, this.maxDate)) {\n this.selectedDate = today;\n this.viewDate = today.clone();\n this.onChange(this.selectedDate);\n this.dateChange.emit(this.selectedDate);\n this.updateCalendarGrid();\n this.closeCalendar();\n this.cdr.markForCheck();\n }\n }\n\n clearDate(): void {\n this.selectedDate = null;\n this.onChange(null);\n this.dateChange.emit(null);\n this.cdr.markForCheck();\n }\n\n // Helper methods\n private updateCalendarGrid(): void {\n this.calendarGrid = this.dateConverter.getMonthCalendarGrid(this.viewDate.year, this.viewDate.month);\n }\n\n isDateSelectable(day: number): boolean {\n if (day === null) return false;\n const date = new NepaliDate(this.viewDate.year, this.viewDate.month, day);\n return this.dateConverter.isDateInRange(date, this.minDate, this.maxDate);\n }\n\n isToday(day: number): boolean {\n if (day === null) return false;\n const today = this.dateConverter.getTodayBS();\n return (\n this.viewDate.year === today.year && this.viewDate.month === today.month && day === today.day\n );\n }\n\n isSelected(day: number): boolean {\n if (day === null || !this.selectedDate) return false;\n return (\n this.viewDate.year === this.selectedDate.year &&\n this.viewDate.month === this.selectedDate.month &&\n day === this.selectedDate.day\n );\n }\n\n get displayValue(): string {\n if (!this.selectedDate) return '';\n return this.selectedDate.format(this.displayFormat, this.useNepaliDigits);\n }\n\n get currentMonthName(): string {\n return this.monthNames[this.viewDate.month - 1];\n }\n\n trackByWeek(index: number): number {\n return index;\n }\n\n trackByDay(index: number): number {\n return index;\n }\n}\n","<div class=\"f1-datepicker\" [class.f1-datepicker--dark]=\"theme === 'dark'\" [class.f1-datepicker--disabled]=\"disabled\">\n <!-- Input Field -->\n <div class=\"f1-datepicker__input-wrapper\" (click)=\"toggleCalendar()\">\n <input\n type=\"text\"\n class=\"f1-datepicker__input\"\n [value]=\"displayValue\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n readonly\n />\n <span class=\"f1-datepicker__icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\n </svg>\n </span>\n <button\n *ngIf=\"selectedDate && !disabled\"\n type=\"button\"\n class=\"f1-datepicker__clear\"\n (click)=\"clearDate(); $event.stopPropagation()\"\n aria-label=\"Clear date\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <!-- Calendar Dropdown -->\n <div class=\"f1-datepicker__dropdown\" *ngIf=\"isOpen\" [@fadeIn]>\n <!-- Header -->\n <div class=\"f1-datepicker__header\">\n <button\n type=\"button\"\n class=\"f1-datepicker__nav-btn\"\n (click)=\"previousMonth()\"\n aria-label=\"Previous month\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\"></polyline>\n </svg>\n </button>\n\n <div class=\"f1-datepicker__selectors\">\n <select\n class=\"f1-datepicker__select\"\n [value]=\"viewDate.month\"\n (change)=\"onMonthChange($event)\"\n >\n <option *ngFor=\"let month of monthNames; let i = index\" [value]=\"i + 1\">\n {{ month }}\n </option>\n </select>\n\n <select\n class=\"f1-datepicker__select\"\n [value]=\"viewDate.year\"\n (change)=\"onYearChange($event)\"\n >\n <option *ngFor=\"let year of years\" [value]=\"year\">\n {{ useNepaliDigits ? (year | number:'1.0-0') : year }}\n </option>\n </select>\n </div>\n\n <button\n type=\"button\"\n class=\"f1-datepicker__nav-btn\"\n (click)=\"nextMonth()\"\n aria-label=\"Next month\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n </button>\n </div>\n\n <!-- Weekday Headers -->\n <div class=\"f1-datepicker__weekdays\">\n <div class=\"f1-datepicker__weekday\" *ngFor=\"let day of weekdayNames\">\n {{ day }}\n </div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"f1-datepicker__grid\">\n <div class=\"f1-datepicker__week\" *ngFor=\"let week of calendarGrid; trackBy: trackByWeek\">\n <button\n type=\"button\"\n class=\"f1-datepicker__day\"\n *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.f1-datepicker__day--empty]=\"day === null\"\n [class.f1-datepicker__day--today]=\"day !== null && isToday(day)\"\n [class.f1-datepicker__day--selected]=\"day !== null && isSelected(day)\"\n [class.f1-datepicker__day--disabled]=\"day !== null && !isDateSelectable(day)\"\n [disabled]=\"day === null || !isDateSelectable(day)\"\n (click)=\"selectDate(day)\"\n >\n {{ day !== null ? (useNepaliDigits ? day : day) : '' }}\n </button>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"f1-datepicker__footer\" *ngIf=\"showTodayButton\">\n <button\n type=\"button\"\n class=\"f1-datepicker__today-btn\"\n (click)=\"selectToday()\"\n >\n {{ language === 'np' ? 'आज' : 'Today' }}\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NepaliDatePickerComponent } from './components/nepali-date-picker/nepali-date-picker.component';\n\n@NgModule({\n imports: [\n NepaliDatePickerComponent, // Standalone component, import directly\n ],\n exports: [\n NepaliDatePickerComponent,\n ],\n})\nexport class F1NepaliDatePickerModule { }\n","/*\n * Public API Surface of f1-nepali-date-picker\n */\n\n// Module\nexport * from './lib/f1-nepali-date-picker.module';\n\n// Components\nexport * from './lib/components/nepali-date-picker/nepali-date-picker.component';\n\n// Models\nexport * from './lib/models/nepali-date.model';\n\n// Services\nexport * from './lib/services/date-converter.service';\n\n// Utilities\nexport * from './lib/utils/bs-calendar-data';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DateConverterService"],"mappings":";;;;;;;AAAA;;;AAGG;AAEH;;;;AAIG;AACU,MAAA,gBAAgB,GAAiC;IAC1D,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACxD;AAEF;;AAEG;AACU,MAAA,YAAY,GAAa;IAClC,OAAO;IACP,KAAK;IACL,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,SAAS;IACT,OAAO;IACP,KAAK;IACL,KAAK;IACL,SAAS;IACT,OAAO;EACT;AAEF;;AAEG;AACU,MAAA,YAAY,GAAa;IAClC,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;EACX;AAEF;;AAEG;AACU,MAAA,cAAc,GAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;AAE9F;;AAEG;AACU,MAAA,cAAc,GAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAE1F;;AAEG;AACU,MAAA,aAAa,GAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAE1F;;;AAGG;AACU,MAAA,QAAQ,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,GAAG,EAAE,CAAC;EACR;AAEK,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;AAE9C;;AAEG;MACU,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAElF;;AAEG;MACU,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAElF;;AAEG;AACG,SAAU,cAAc,CAAC,GAAoB,EAAA;IAC/C,OAAO,MAAM,CAAC,GAAG,CAAC;SACb,KAAK,CAAC,EAAE,CAAC;AACT,SAAA,GAAG,CAAC,CAAC,IAAI,KAAI;QACV,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,KAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;AAEG;AACG,SAAU,oBAAoB,CAAC,IAAY,EAAA;AAC7C,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,CAAQ,KAAA,EAAA,IAAI,CAA+B,4BAAA,EAAA,WAAW,CAAI,CAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CAAC,CAAC;AAC7F,KAAA;AACD,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;AAEG;AACa,SAAA,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAA;AACxD,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,CAAQ,KAAA,EAAA,IAAI,CAA+B,4BAAA,EAAA,WAAW,CAAI,CAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CAAC,CAAC;AAC7F,KAAA;AACD,IAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAA,sCAAA,CAAwC,CAAC,CAAC;AAC3E,KAAA;AACD,IAAA,OAAO,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChC;;ACzMA;;AAEG;MACU,UAAU,CAAA;AAKnB,IAAA,WAAA,CAAY,IAAY,EAAE,KAAa,EAAE,GAAW,EAAA;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KACnB;;AAGD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAED;;AAEG;AACH,IAAA,OAAO,KAAK,GAAA;QACR,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KACxC;AAED;;AAEG;IACH,OAAO,MAAM,CAAC,MAAY,EAAA;;AAEtB,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACjG,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,SAAS,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE5E,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC;;QAGzB,OAAO,QAAQ,GAAG,CAAC,EAAE;YACjB,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,YAAA,MAAM,oBAAoB,GAAG,WAAW,GAAG,KAAK,CAAC;YAEjD,IAAI,QAAQ,IAAI,oBAAoB,EAAE;gBAClC,KAAK,IAAI,QAAQ,CAAC;gBAClB,QAAQ,GAAG,CAAC,CAAC;AAChB,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,IAAI,oBAAoB,GAAG,CAAC,CAAC;AACrC,gBAAA,OAAO,EAAE,CAAC;gBACV,KAAK,GAAG,CAAC,CAAC;gBAEV,IAAI,OAAO,GAAG,EAAE,EAAE;oBACd,OAAO,GAAG,CAAC,CAAC;AACZ,oBAAA,MAAM,EAAE,CAAC;oBACT,IAAI,MAAM,GAAG,WAAW,EAAE;AACtB,wBAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,CAAA,IAAA,CAAM,CAAC,CAAC;AAC5E,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KACjD;AAED;;AAEG;IACH,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;;AAGlB,QAAA,KAAK,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;AACtD,YAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxC,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,aAAA;AACJ,SAAA;;AAGD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC9C,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpD,SAAA;;AAGD,QAAA,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;;AAG3B,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;AAE7C,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;IACH,OAAO,GAAA;;QAEH,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;AACtD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;QAGD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;AACrC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;AAGD,QAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACH,MAAM,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;KAC/B;AAED;;AAEG;IACH,YAAY,CAAC,OAAoB,IAAI,EAAA;QACjC,OAAO,IAAI,KAAK,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACxF;AAED;;;;;;;;;;;AAWG;AACH,IAAA,MAAM,CAAC,OAAA,GAAkB,YAAY,EAAE,kBAA2B,KAAK,EAAA;QACnE,IAAI,MAAM,GAAG,OAAO,CAAC;;QAGrB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACrE,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACnE,QAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEjD,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;IACH,KAAK,GAAA;AACD,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7D;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,SAAA;AACD,QAAA,OAAO,CAAC,CAAC;KACZ;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAiB,EAAA;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,KAAiB,EAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,MAAM,CAAC,KAAiB,EAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACtC;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACxC,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,SAAS,CAAC,MAAc,EAAA;AACpB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAEpC,OAAO,QAAQ,GAAG,EAAE,EAAE;YAClB,QAAQ,IAAI,EAAE,CAAC;AACf,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QACD,OAAO,QAAQ,GAAG,CAAC,EAAE;YACjB,QAAQ,IAAI,EAAE,CAAC;AACf,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;;QAGD,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEnD,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnC,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACnD,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvD;AAED;;AAEG;IACH,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACpC;AAED;;AAEG;IACH,QAAQ,GAAA;QACJ,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,GAAG,EAAE,IAAI,CAAC,IAAI;SACjB,CAAC;KACL;AAED;;AAEG;IACH,OAAO,UAAU,CAAC,GAAiD,EAAA;AAC/D,QAAA,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;KACvD;AAED;;AAEG;IACH,OAAO,KAAK,CAAC,UAAkB,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC/D,SAAA;AACD,QAAA,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACvD;AACJ;;AC1SD;;AAEG;MAIU,oBAAoB,CAAA;AAC7B;;AAEG;AACH,IAAA,WAAW,CAAC,MAAY,EAAA;AACpB,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,MAAkB,EAAA;AAC1B,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;KACxB;AAED;;AAEG;IACH,UAAU,GAAA;AACN,QAAA,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;KAC7B;AAED;;AAEG;IACH,cAAc,CAAC,IAAY,EAAE,KAAa,EAAA;AACtC,QAAA,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxC;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,IAAY,EAAA;AACtB,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACrC;AAED;;AAEG;IACH,aAAa,CAAC,OAAoB,IAAI,EAAA;AAClC,QAAA,OAAO,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;KAChE;AAED;;AAEG;IACH,eAAe,CAAC,OAAoB,IAAI,EAAA;AACpC,QAAA,OAAO,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;KACpE;AAED;;AAEG;IACH,UAAU,GAAA;AACN,QAAA,OAAO,WAAW,CAAC;KACtB;AAED;;AAEG;IACH,UAAU,GAAA;AACN,QAAA,OAAO,WAAW,CAAC;KACtB;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAA;QAChD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;AAED;;AAEG;AACH,IAAA,MAAM,CAAC,IAAgB,EAAE,UAAkB,YAAY,EAAE,kBAA2B,KAAK,EAAA;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KAChD;AAED;;AAEG;AACH,IAAA,KAAK,CAAC,UAAkB,EAAA;AACpB,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,cAAc,CAAC,GAAoB,EAAA;AAC/B,QAAA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;KAC9B;AAED;;;;AAIG;IACH,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAA;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAEhD,MAAM,IAAI,GAAwB,EAAE,CAAC;QACrC,IAAI,WAAW,GAAsB,EAAE,CAAC;;QAGxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;;QAGD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,EAAE,EAAE;AACzC,YAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEtB,YAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvB,WAAW,GAAG,EAAE,CAAC;AACpB,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACH,YAAY,CAAC,SAAkB,EAAE,OAAgB,EAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,SAAS,IAAI,WAAW,CAAC;AACvC,QAAA,MAAM,GAAG,GAAG,OAAO,IAAI,WAAW,CAAC;QACnC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE;AACxC,YAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACxB,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,IAAgB,EAAE,OAAoB,EAAE,OAAoB,EAAA;QACtE,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;+GAhKQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCaY,yBAAyB,CAAA;AA4ClC,IAAA,WAAA,CACY,UAAsB,EACtB,GAAsB,EACtB,aAAmC,EAAA;QAFnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAsB;;QAvCtC,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;;QAG5B,IAAa,CAAA,aAAA,GAAG,YAAY,CAAC;;QAG7B,IAAK,CAAA,KAAA,GAAqB,OAAO,CAAC;;QAGlC,IAAQ,CAAA,QAAA,GAAgB,IAAI,CAAC;;QAG7B,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;;QAGvB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAGjB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;;AAGvB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;;QAG7D,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAY,CAAA,YAAA,GAAsB,IAAI,CAAC;QAEvC,IAAY,CAAA,YAAA,GAAwB,EAAE,CAAC;QACvC,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;QAC5B,IAAK,CAAA,KAAA,GAAa,EAAE,CAAC;;AAGb,QAAA,IAAA,CAAA,QAAQ,GAAuC,MAAK,GAAI,CAAC;AACzD,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,GAAI,CAAC;QAOtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;KACnD;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QAC/C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AAED,IAAA,WAAW,MAAY;;AAGvB,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AACjC,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,EAAsC,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGD,cAAc,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAGD,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACvD,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;IAGD,WAAW,GAAA;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;;IAGD,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;IAED,SAAS,GAAA;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED,IAAA,YAAY,CAAC,KAAY,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAE,KAAK,CAAC,MAA4B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;AAE7D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjF,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC1E,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED,IAAA,aAAa,CAAC,KAAY,EAAA;AACtB,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAE,KAAK,CAAC,MAA4B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;AAGD,IAAA,UAAU,CAAC,GAAkB,EAAA;AACzB,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;AAE1C,QAAA,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAE7E,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO;AAExC,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;AACrE,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC3B,SAAA;KACJ;IAED,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGO,kBAAkB,GAAA;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACxG;AAED,IAAA,gBAAgB,CAAC,GAAW,EAAA;QACxB,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;AAC/B,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1E,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7E;AAED,IAAA,OAAO,CAAC,GAAW,EAAA;QACf,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAC9C,QACI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,EAC/F;KACL;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,KAAK,CAAC;QACrD,QACI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI;YAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK;AAC/C,YAAA,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAC/B;KACL;AAED,IAAA,IAAI,YAAY,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,EAAE,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KAC7E;AAED,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KACnD;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;AACrB,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACpB,QAAA,OAAO,KAAK,CAAC;KAChB;+GAhOQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EARvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BL,w4KAwHA,EAAA,MAAA,EAAA,CAAA,gwLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnGc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAY1B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,CAAC,EAGnB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,w4KAAA,EAAA,MAAA,EAAA,CAAA,gwLAAA,CAAA,EAAA,CAAA;iKAIQ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAwEP,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQ1C,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,yBAAyB,CAAA;;;MEjI9B,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAxB,wBAAwB,EAAA,OAAA,EAAA,CANjC,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAGzB,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YANjC,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMhB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;AAC1B,qBAAA;AACF,iBAAA,CAAA;;;ACVD;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@f1softinternational/f1-nepali-date-picker" />
5
+ export * from './public-api';
@@ -0,0 +1,67 @@
1
+ import { EventEmitter, OnInit, OnDestroy, ElementRef, ChangeDetectorRef } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import { NepaliDate } from '../../models/nepali-date.model';
4
+ import { DateConverterService } from '../../services/date-converter.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class NepaliDatePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {
7
+ private elementRef;
8
+ private cdr;
9
+ private dateConverter;
10
+ /** Minimum selectable date */
11
+ minDate?: NepaliDate;
12
+ /** Maximum selectable date */
13
+ maxDate?: NepaliDate;
14
+ /** Placeholder text */
15
+ placeholder: string;
16
+ /** Display format for the input */
17
+ displayFormat: string;
18
+ /** Theme: 'light' or 'dark' */
19
+ theme: 'light' | 'dark';
20
+ /** Language for month/day names */
21
+ language: 'en' | 'np';
22
+ /** Show today button */
23
+ showTodayButton: boolean;
24
+ /** Disabled state */
25
+ disabled: boolean;
26
+ /** Use Nepali digits in display */
27
+ useNepaliDigits: boolean;
28
+ /** Event emitted when date changes */
29
+ dateChange: EventEmitter<NepaliDate | null>;
30
+ isOpen: boolean;
31
+ selectedDate: NepaliDate | null;
32
+ viewDate: NepaliDate;
33
+ calendarGrid: (number | null)[][];
34
+ monthNames: string[];
35
+ weekdayNames: string[];
36
+ years: number[];
37
+ private onChange;
38
+ private onTouched;
39
+ constructor(elementRef: ElementRef, cdr: ChangeDetectorRef, dateConverter: DateConverterService);
40
+ ngOnInit(): void;
41
+ ngOnDestroy(): void;
42
+ writeValue(value: NepaliDate | null): void;
43
+ registerOnChange(fn: (value: NepaliDate | null) => void): void;
44
+ registerOnTouched(fn: () => void): void;
45
+ setDisabledState(isDisabled: boolean): void;
46
+ toggleCalendar(): void;
47
+ closeCalendar(): void;
48
+ onClickOutside(event: MouseEvent): void;
49
+ onEscapeKey(): void;
50
+ previousMonth(): void;
51
+ nextMonth(): void;
52
+ onYearChange(event: Event): void;
53
+ onMonthChange(event: Event): void;
54
+ selectDate(day: number | null): void;
55
+ selectToday(): void;
56
+ clearDate(): void;
57
+ private updateCalendarGrid;
58
+ isDateSelectable(day: number): boolean;
59
+ isToday(day: number): boolean;
60
+ isSelected(day: number): boolean;
61
+ get displayValue(): string;
62
+ get currentMonthName(): string;
63
+ trackByWeek(index: number): number;
64
+ trackByDay(index: number): number;
65
+ static ɵfac: i0.ɵɵFactoryDeclaration<NepaliDatePickerComponent, never>;
66
+ static ɵcmp: i0.ɵɵComponentDeclaration<NepaliDatePickerComponent, "f1-nepali-date-picker", never, { "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "language": { "alias": "language"; "required": false; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "useNepaliDigits": { "alias": "useNepaliDigits"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, true, never>;
67
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./components/nepali-date-picker/nepali-date-picker.component";
3
+ export declare class F1NepaliDatePickerModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<F1NepaliDatePickerModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<F1NepaliDatePickerModule, never, [typeof i1.NepaliDatePickerComponent], [typeof i1.NepaliDatePickerComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<F1NepaliDatePickerModule>;
7
+ }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * NepaliDate - Represents a date in the Bikram Sambat (BS) calendar
3
+ */
4
+ export declare class NepaliDate {
5
+ private _year;
6
+ private _month;
7
+ private _day;
8
+ constructor(year: number, month: number, day: number);
9
+ get year(): number;
10
+ get month(): number;
11
+ get day(): number;
12
+ /**
13
+ * Create NepaliDate from current date
14
+ */
15
+ static today(): NepaliDate;
16
+ /**
17
+ * Create NepaliDate from AD Date
18
+ */
19
+ static fromAD(adDate: Date): NepaliDate;
20
+ /**
21
+ * Convert to AD Date
22
+ */
23
+ toAD(): Date;
24
+ /**
25
+ * Check if the date is valid
26
+ */
27
+ isValid(): boolean;
28
+ /**
29
+ * Get the day of week (0 = Sunday, 6 = Saturday)
30
+ */
31
+ getDay(): number;
32
+ /**
33
+ * Get month name in specified language
34
+ */
35
+ getMonthName(lang?: 'en' | 'np'): string;
36
+ /**
37
+ * Format date according to pattern
38
+ * Patterns:
39
+ * YYYY - 4-digit year
40
+ * YY - 2-digit year
41
+ * MM - 2-digit month
42
+ * M - month without leading zero
43
+ * DD - 2-digit day
44
+ * D - day without leading zero
45
+ * MMMM - full month name (English)
46
+ * mmmm - full month name (Nepali)
47
+ */
48
+ format(pattern?: string, useNepaliDigits?: boolean): string;
49
+ /**
50
+ * Create a clone of this date
51
+ */
52
+ clone(): NepaliDate;
53
+ /**
54
+ * Compare with another NepaliDate
55
+ * Returns: -1 if this < other, 0 if equal, 1 if this > other
56
+ */
57
+ compareTo(other: NepaliDate): number;
58
+ /**
59
+ * Check if this date is before another
60
+ */
61
+ isBefore(other: NepaliDate): boolean;
62
+ /**
63
+ * Check if this date is after another
64
+ */
65
+ isAfter(other: NepaliDate): boolean;
66
+ /**
67
+ * Check if this date equals another
68
+ */
69
+ equals(other: NepaliDate): boolean;
70
+ /**
71
+ * Add days to date (returns new NepaliDate)
72
+ */
73
+ addDays(days: number): NepaliDate;
74
+ /**
75
+ * Add months to date (returns new NepaliDate)
76
+ */
77
+ addMonths(months: number): NepaliDate;
78
+ /**
79
+ * Add years to date (returns new NepaliDate)
80
+ */
81
+ addYears(years: number): NepaliDate;
82
+ /**
83
+ * Get string representation
84
+ */
85
+ toString(): string;
86
+ /**
87
+ * Convert to plain object
88
+ */
89
+ toObject(): {
90
+ year: number;
91
+ month: number;
92
+ day: number;
93
+ };
94
+ /**
95
+ * Create from plain object
96
+ */
97
+ static fromObject(obj: {
98
+ year: number;
99
+ month: number;
100
+ day: number;
101
+ }): NepaliDate;
102
+ /**
103
+ * Parse from string (YYYY-MM-DD format)
104
+ */
105
+ static parse(dateString: string): NepaliDate;
106
+ }
@@ -0,0 +1,75 @@
1
+ import { NepaliDate } from '../models/nepali-date.model';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * DateConverterService - Service for BS/AD date conversions and utilities
5
+ */
6
+ export declare class DateConverterService {
7
+ /**
8
+ * Convert AD Date to NepaliDate (BS)
9
+ */
10
+ convertToBS(adDate: Date): NepaliDate;
11
+ /**
12
+ * Convert NepaliDate (BS) to AD Date
13
+ */
14
+ convertToAD(bsDate: NepaliDate): Date;
15
+ /**
16
+ * Get today's date in BS
17
+ */
18
+ getTodayBS(): NepaliDate;
19
+ /**
20
+ * Get number of days in a BS month
21
+ */
22
+ getDaysInMonth(year: number, month: number): number;
23
+ /**
24
+ * Get total days in a BS year
25
+ */
26
+ getDaysInYear(year: number): number;
27
+ /**
28
+ * Get month names
29
+ */
30
+ getMonthNames(lang?: 'en' | 'np'): string[];
31
+ /**
32
+ * Get weekday names
33
+ */
34
+ getWeekdayNames(lang?: 'en' | 'np'): string[];
35
+ /**
36
+ * Get minimum supported year
37
+ */
38
+ getMinYear(): number;
39
+ /**
40
+ * Get maximum supported year
41
+ */
42
+ getMaxYear(): number;
43
+ /**
44
+ * Validate a BS date
45
+ */
46
+ isValidDate(year: number, month: number, day: number): boolean;
47
+ /**
48
+ * Format a NepaliDate
49
+ */
50
+ format(date: NepaliDate, pattern?: string, useNepaliDigits?: boolean): string;
51
+ /**
52
+ * Parse a date string to NepaliDate
53
+ */
54
+ parse(dateString: string): NepaliDate;
55
+ /**
56
+ * Convert number to Nepali digits
57
+ */
58
+ toNepaliDigits(num: number | string): string;
59
+ /**
60
+ * Get calendar grid for a month
61
+ * Returns a 2D array representing weeks (rows) and days (columns)
62
+ * Each cell contains the day number or null for empty cells
63
+ */
64
+ getMonthCalendarGrid(year: number, month: number): (number | null)[][];
65
+ /**
66
+ * Get years range for year selector
67
+ */
68
+ getYearRange(startYear?: number, endYear?: number): number[];
69
+ /**
70
+ * Check if a date is within a range
71
+ */
72
+ isDateInRange(date: NepaliDate, minDate?: NepaliDate, maxDate?: NepaliDate): boolean;
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateConverterService, never>;
74
+ static ɵprov: i0.ɵɵInjectableDeclaration<DateConverterService>;
75
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Bikram Sambat Calendar Data
3
+ * Contains month days mapping for each BS year and localization strings
4
+ */
5
+ /**
6
+ * BS Year to Month Days Mapping
7
+ * Each entry: [year]: [days in each month from Baisakh to Chaitra]
8
+ * Data range: 2000 BS to 2090 BS
9
+ */
10
+ export declare const BS_CALENDAR_DATA: {
11
+ [year: number]: number[];
12
+ };
13
+ /**
14
+ * Nepali month names
15
+ */
16
+ export declare const BS_MONTHS_NP: string[];
17
+ /**
18
+ * English month names (Romanized)
19
+ */
20
+ export declare const BS_MONTHS_EN: string[];
21
+ /**
22
+ * Nepali weekday names (Sunday first)
23
+ */
24
+ export declare const BS_WEEKDAYS_NP: string[];
25
+ /**
26
+ * English weekday names (Sunday first)
27
+ */
28
+ export declare const BS_WEEKDAYS_EN: string[];
29
+ /**
30
+ * Nepali numerals mapping
31
+ */
32
+ export declare const NEPALI_DIGITS: string[];
33
+ /**
34
+ * Reference date for conversion calculations
35
+ * BS: 2000-01-01 corresponds to AD: 1943-04-14
36
+ */
37
+ export declare const BS_EPOCH: {
38
+ year: number;
39
+ month: number;
40
+ day: number;
41
+ };
42
+ export declare const AD_EPOCH: Date;
43
+ /**
44
+ * Get minimum supported BS year
45
+ */
46
+ export declare const BS_MIN_YEAR: number;
47
+ /**
48
+ * Get maximum supported BS year
49
+ */
50
+ export declare const BS_MAX_YEAR: number;
51
+ /**
52
+ * Convert number to Nepali digits
53
+ */
54
+ export declare function toNepaliDigits(num: number | string): string;
55
+ /**
56
+ * Get total days in a BS year
57
+ */
58
+ export declare function getTotalDaysInBSYear(year: number): number;
59
+ /**
60
+ * Get days in a specific BS month
61
+ */
62
+ export declare function getDaysInBSMonth(year: number, month: number): number;
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@f1softinternational/f1-nepali-date-picker",
3
+ "version": "1.0.0",
4
+ "description": "Angular 16+ Nepali (Bikram Sambat) Date Picker with AD/BS conversion utilities",
5
+ "author": "F1Soft International <dev@f1soft.com>",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "angular",
9
+ "nepali",
10
+ "date-picker",
11
+ "bikram-sambat",
12
+ "bs-date",
13
+ "nepali-calendar",
14
+ "date-converter",
15
+ "f1soft"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/ArlClub-Project/f1-nepali-date-picker.git"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/ArlClub-Project/f1-nepali-date-picker/issues"
23
+ },
24
+ "homepage": "https://github.com/ArlClub-Project/f1-nepali-date-picker#readme",
25
+ "peerDependencies": {
26
+ "@angular/common": ">=16.0.0",
27
+ "@angular/core": ">=16.0.0",
28
+ "@angular/forms": ">=16.0.0"
29
+ },
30
+ "dependencies": {
31
+ "tslib": "^2.3.0"
32
+ },
33
+ "sideEffects": false,
34
+ "module": "fesm2022/f1softinternational-f1-nepali-date-picker.mjs",
35
+ "typings": "index.d.ts",
36
+ "exports": {
37
+ "./package.json": {
38
+ "default": "./package.json"
39
+ },
40
+ ".": {
41
+ "types": "./index.d.ts",
42
+ "esm2022": "./esm2022/f1softinternational-f1-nepali-date-picker.mjs",
43
+ "esm": "./esm2022/f1softinternational-f1-nepali-date-picker.mjs",
44
+ "default": "./fesm2022/f1softinternational-f1-nepali-date-picker.mjs"
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,5 @@
1
+ export * from './lib/f1-nepali-date-picker.module';
2
+ export * from './lib/components/nepali-date-picker/nepali-date-picker.component';
3
+ export * from './lib/models/nepali-date.model';
4
+ export * from './lib/services/date-converter.service';
5
+ export * from './lib/utils/bs-calendar-data';