{"version":3,"sources":["../../src/locale/countries.ts","../../src/time/constants.ts"],"names":["COUNTRY_CODES","DAYS_IN_WEEK","EARLY_MORNING_HOURS","TIME_CONSTANTS","COUNTRY_TIMEZONES","ALL_COUNTRY_TIMEZONES","DAYS_OF_WEEK","_","i","HOURS_OF_DAY"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Country Constants\n *\n * ISO 3166-1 country codes and related data.\n *\n * @module locale/countries\n */\n\n/**\n * Common country codes (ISO 3166-1 alpha-2)\n */\nexport const COUNTRY_CODES = {\n  // Americas\n  US: 'US', // United States\n  CA: 'CA', // Canada\n  MX: 'MX', // Mexico\n  BR: 'BR', // Brazil\n  AR: 'AR', // Argentina\n  CL: 'CL', // Chile\n  CO: 'CO', // Colombia\n  PE: 'PE', // Peru\n  VE: 'VE', // Venezuela\n  EC: 'EC', // Ecuador\n  BO: 'BO', // Bolivia\n  PY: 'PY', // Paraguay\n  UY: 'UY', // Uruguay\n  GY: 'GY', // Guyana\n  SR: 'SR', // Suriname\n  GF: 'GF', // French Guiana\n  FK: 'FK', // Falkland Islands\n\n  // Caribbean\n  CU: 'CU', // Cuba\n  DO: 'DO', // Dominican Republic\n  HT: 'HT', // Haiti\n  JM: 'JM', // Jamaica\n  TT: 'TT', // Trinidad and Tobago\n  BB: 'BB', // Barbados\n  BS: 'BS', // Bahamas\n  PR: 'PR', // Puerto Rico\n\n  // Central America\n  GT: 'GT', // Guatemala\n  HN: 'HN', // Honduras\n  SV: 'SV', // El Salvador\n  NI: 'NI', // Nicaragua\n  CR: 'CR', // Costa Rica\n  PA: 'PA', // Panama\n  BZ: 'BZ', // Belize\n\n  // Europe\n  GB: 'GB', // United Kingdom\n  FR: 'FR', // France\n  DE: 'DE', // Germany\n  IT: 'IT', // Italy\n  ES: 'ES', // Spain\n  PT: 'PT', // Portugal\n  NL: 'NL', // Netherlands\n  BE: 'BE', // Belgium\n  LU: 'LU', // Luxembourg\n  CH: 'CH', // Switzerland\n  AT: 'AT', // Austria\n  IE: 'IE', // Ireland\n  DK: 'DK', // Denmark\n  SE: 'SE', // Sweden\n  NO: 'NO', // Norway\n  FI: 'FI', // Finland\n  IS: 'IS', // Iceland\n  PL: 'PL', // Poland\n  CZ: 'CZ', // Czech Republic\n  SK: 'SK', // Slovakia\n  HU: 'HU', // Hungary\n  RO: 'RO', // Romania\n  BG: 'BG', // Bulgaria\n  GR: 'GR', // Greece\n  HR: 'HR', // Croatia\n  SI: 'SI', // Slovenia\n  RS: 'RS', // Serbia\n  BA: 'BA', // Bosnia and Herzegovina\n  ME: 'ME', // Montenegro\n  MK: 'MK', // North Macedonia\n  AL: 'AL', // Albania\n  XK: 'XK', // Kosovo\n  EE: 'EE', // Estonia\n  LV: 'LV', // Latvia\n  LT: 'LT', // Lithuania\n  BY: 'BY', // Belarus\n  UA: 'UA', // Ukraine\n  MD: 'MD', // Moldova\n  RU: 'RU', // Russia\n  CY: 'CY', // Cyprus\n  MT: 'MT', // Malta\n  AD: 'AD', // Andorra\n  MC: 'MC', // Monaco\n  SM: 'SM', // San Marino\n  VA: 'VA', // Vatican City\n  LI: 'LI', // Liechtenstein\n\n  // Asia\n  CN: 'CN', // China\n  JP: 'JP', // Japan\n  KR: 'KR', // South Korea\n  KP: 'KP', // North Korea\n  TW: 'TW', // Taiwan\n  HK: 'HK', // Hong Kong\n  MO: 'MO', // Macao\n  IN: 'IN', // India\n  PK: 'PK', // Pakistan\n  BD: 'BD', // Bangladesh\n  LK: 'LK', // Sri Lanka\n  NP: 'NP', // Nepal\n  BT: 'BT', // Bhutan\n  MV: 'MV', // Maldives\n  AF: 'AF', // Afghanistan\n  TH: 'TH', // Thailand\n  VN: 'VN', // Vietnam\n  MY: 'MY', // Malaysia\n  SG: 'SG', // Singapore\n  ID: 'ID', // Indonesia\n  PH: 'PH', // Philippines\n  BN: 'BN', // Brunei\n  KH: 'KH', // Cambodia\n  LA: 'LA', // Laos\n  MM: 'MM', // Myanmar\n  TL: 'TL', // Timor-Leste\n  MN: 'MN', // Mongolia\n  KZ: 'KZ', // Kazakhstan\n  UZ: 'UZ', // Uzbekistan\n  TJ: 'TJ', // Tajikistan\n  KG: 'KG', // Kyrgyzstan\n  TM: 'TM', // Turkmenistan\n  AZ: 'AZ', // Azerbaijan\n  GE: 'GE', // Georgia\n  AM: 'AM', // Armenia\n\n  // Middle East\n  SA: 'SA', // Saudi Arabia\n  AE: 'AE', // United Arab Emirates\n  QA: 'QA', // Qatar\n  KW: 'KW', // Kuwait\n  BH: 'BH', // Bahrain\n  OM: 'OM', // Oman\n  YE: 'YE', // Yemen\n  JO: 'JO', // Jordan\n  LB: 'LB', // Lebanon\n  SY: 'SY', // Syria\n  IQ: 'IQ', // Iraq\n  IR: 'IR', // Iran\n  IL: 'IL', // Israel\n  PS: 'PS', // Palestine\n  TR: 'TR', // Turkey\n\n  // Africa\n  EG: 'EG', // Egypt\n  LY: 'LY', // Libya\n  TN: 'TN', // Tunisia\n  DZ: 'DZ', // Algeria\n  MA: 'MA', // Morocco\n  EH: 'EH', // Western Sahara\n  MR: 'MR', // Mauritania\n  ML: 'ML', // Mali\n  NE: 'NE', // Niger\n  TD: 'TD', // Chad\n  SD: 'SD', // Sudan\n  SS: 'SS', // South Sudan\n  ER: 'ER', // Eritrea\n  DJ: 'DJ', // Djibouti\n  SO: 'SO', // Somalia\n  ET: 'ET', // Ethiopia\n  KE: 'KE', // Kenya\n  UG: 'UG', // Uganda\n  RW: 'RW', // Rwanda\n  BI: 'BI', // Burundi\n  TZ: 'TZ', // Tanzania\n  MZ: 'MZ', // Mozambique\n  MW: 'MW', // Malawi\n  ZM: 'ZM', // Zambia\n  ZW: 'ZW', // Zimbabwe\n  BW: 'BW', // Botswana\n  NA: 'NA', // Namibia\n  ZA: 'ZA', // South Africa\n  LS: 'LS', // Lesotho\n  SZ: 'SZ', // Eswatini\n  AO: 'AO', // Angola\n  CD: 'CD', // Democratic Republic of the Congo\n  CG: 'CG', // Republic of the Congo\n  GA: 'GA', // Gabon\n  GQ: 'GQ', // Equatorial Guinea\n  CM: 'CM', // Cameroon\n  CF: 'CF', // Central African Republic\n  NG: 'NG', // Nigeria\n  BJ: 'BJ', // Benin\n  TG: 'TG', // Togo\n  GH: 'GH', // Ghana\n  BF: 'BF', // Burkina Faso\n  CI: 'CI', // Côte d'Ivoire\n  LR: 'LR', // Liberia\n  SL: 'SL', // Sierra Leone\n  GN: 'GN', // Guinea\n  GW: 'GW', // Guinea-Bissau\n  SN: 'SN', // Senegal\n  GM: 'GM', // Gambia\n  CV: 'CV', // Cape Verde\n  ST: 'ST', // São Tomé and Príncipe\n  MG: 'MG', // Madagascar\n  MU: 'MU', // Mauritius\n  SC: 'SC', // Seychelles\n  KM: 'KM', // Comoros\n  RE: 'RE', // Réunion\n\n  // Oceania\n  AU: 'AU', // Australia\n  NZ: 'NZ', // New Zealand\n  PG: 'PG', // Papua New Guinea\n  FJ: 'FJ', // Fiji\n  SB: 'SB', // Solomon Islands\n  VU: 'VU', // Vanuatu\n  NC: 'NC', // New Caledonia\n  PF: 'PF', // French Polynesia\n  WS: 'WS', // Samoa\n  TO: 'TO', // Tonga\n  TV: 'TV', // Tuvalu\n  NR: 'NR', // Nauru\n  KI: 'KI', // Kiribati\n  PW: 'PW', // Palau\n  MH: 'MH', // Marshall Islands\n  FM: 'FM', // Micronesia\n  GU: 'GU', // Guam\n  MP: 'MP', // Northern Mariana Islands\n  AS: 'AS', // American Samoa\n  CK: 'CK', // Cook Islands\n  NU: 'NU', // Niue\n  TK: 'TK', // Tokelau\n  WF: 'WF', // Wallis and Futuna\n  PN: 'PN', // Pitcairn Islands\n\n  // Antarctica\n  AQ: 'AQ', // Antarctica\n} as const;\n\n/**\n * MVP DEFINED SCOPE: Only include Europe (EU) and Brazil (BR).\n */\nexport const COUNTRY_CODES_SCOPED = {\n  // Brazil\n  BR: 'BR',\n  // Europe\n  GB: 'GB',\n  FR: 'FR',\n  DE: 'DE',\n  IT: 'IT',\n  ES: 'ES',\n  PT: 'PT',\n  NL: 'NL',\n  BE: 'BE',\n  LU: 'LU',\n  CH: 'CH',\n  AT: 'AT',\n  IE: 'IE',\n  DK: 'DK',\n  SE: 'SE',\n  NO: 'NO',\n  FI: 'FI',\n  IS: 'IS',\n  PL: 'PL',\n  CZ: 'CZ',\n  SK: 'SK',\n  HU: 'HU',\n  RO: 'RO',\n  BG: 'BG',\n  GR: 'GR',\n  HR: 'HR',\n  SI: 'SI',\n  RS: 'RS',\n  BA: 'BA',\n  ME: 'ME',\n  MK: 'MK',\n  AL: 'AL',\n  XK: 'XK',\n  EE: 'EE',\n  LV: 'LV',\n  LT: 'LT',\n  BY: 'BY',\n  UA: 'UA',\n  MD: 'MD',\n  RU: 'RU',\n  CY: 'CY',\n  MT: 'MT',\n  AD: 'AD',\n  MC: 'MC',\n  SM: 'SM',\n  VA: 'VA',\n  LI: 'LI',\n} as const;\n\n/**\n * MVP scoped country names\n */\nexport const COUNTRY_NAMES: { [key: string]: string } = {\n  // Brazil (BR)\n  BR: 'Brazil',\n\n  // European Union (EU) Member States\n  AT: 'Austria',\n  BE: 'Belgium',\n  BG: 'Bulgaria',\n  HR: 'Croatia',\n  CY: 'Cyprus',\n  CZ: 'Czechia', // Using the modern short name\n  DK: 'Denmark',\n  EE: 'Estonia',\n  FI: 'Finland',\n  FR: 'France',\n  DE: 'Germany',\n  GR: 'Greece',\n  HU: 'Hungary',\n  IE: 'Ireland',\n  IT: 'Italy',\n  LV: 'Latvia',\n  LT: 'Lithuania',\n  LU: 'Luxembourg',\n  MT: 'Malta',\n  NL: 'Netherlands',\n  PL: 'Poland',\n  PT: 'Portugal',\n  RO: 'Romania',\n  SK: 'Slovakia',\n  SI: 'Slovenia',\n  ES: 'Spain',\n  SE: 'Sweden',\n};\n\n/**\n * Country calling codes\n */\nexport const COUNTRY_CALLING_CODES = {\n  /**\n   * United States and Canada\n   */\n  '+1': ['US', 'CA'],\n  /**\n   * Egypt\n   */\n  '+20': ['EG'],\n  /**\n   * South Africa\n   */\n  '+27': ['ZA'],\n  /**\n   * Greece\n   */\n  '+30': ['GR'],\n  /**\n   * Netherlands\n   */\n  '+31': ['NL'],\n  /**\n   * Belgium\n   */\n  '+32': ['BE'],\n  /**\n   * France\n   */\n  '+33': ['FR'],\n  /**\n   * Spain\n   */\n  '+34': ['ES'],\n  /**\n   * Hungary\n   */\n  '+36': ['HU'],\n  /**\n   * Italy\n   */\n  '+39': ['IT'],\n  /**\n   * Romania\n   */\n  '+40': ['RO'],\n  /**\n   * Switzerland\n   */\n  '+41': ['CH'],\n  /**\n   * Austria\n   */\n  '+43': ['AT'],\n  /**\n   * United Kingdom\n   */\n  '+44': ['GB'],\n  /**\n   * Denmark\n   */\n  '+45': ['DK'],\n  /**\n   * Sweden\n   */\n  '+46': ['SE'],\n  /**\n   * Norway\n   */\n  '+47': ['NO'],\n  /**\n   * Poland\n   */\n  '+48': ['PL'],\n  /**\n   * Germany\n   */\n  '+49': ['DE'],\n  /**\n   * Peru\n   */\n  '+51': ['PE'],\n  /**\n   * Mexico\n   */\n  '+52': ['MX'],\n  /**\n   * Cuba\n   */\n  '+53': ['CU'],\n  /**\n   * Argentina\n   */\n  '+54': ['AR'],\n  /**\n   * Brazil\n   */\n  '+55': ['BR'],\n  /**\n   * Chile\n   */\n  '+56': ['CL'],\n  /**\n   * Colombia\n   */\n  '+57': ['CO'],\n  /**\n   * Venezuela\n   */\n  '+58': ['VE'],\n  /**\n   * Malaysia\n   */\n  '+60': ['MY'],\n  /**\n   * Australia\n   */\n  '+61': ['AU'],\n  /**\n   * Indonesia\n   */\n  '+62': ['ID'],\n  /**\n   * Philippines\n   */\n  '+63': ['PH'],\n  /**\n   * New Zealand\n   */\n  '+64': ['NZ'],\n  /**\n   * Singapore\n   */\n  '+65': ['SG'],\n  /**\n   * Thailand\n   */\n  '+66': ['TH'],\n  /**\n   * Russia and Kazakhstan\n   */\n  '+7': ['RU', 'KZ'],\n  /**\n   * Japan\n   */\n  '+81': ['JP'],\n  /**\n   * South Korea\n   */\n  '+82': ['KR'],\n  /**\n   * Vietnam\n   */\n  '+84': ['VN'],\n  /**\n   * China\n   */\n  '+86': ['CN'],\n  /**\n   * Turkey\n   */\n  '+90': ['TR'],\n  /**\n   * India\n   */\n  '+91': ['IN'],\n  /**\n   * Pakistan\n   */\n  '+92': ['PK'],\n  /**\n   * Afghanistan\n   */\n  '+93': ['AF'],\n  /**\n   * Sri Lanka\n   */\n  '+94': ['LK'],\n  /**\n   * Myanmar\n   */\n  '+95': ['MM'],\n  /**\n   * Iran\n   */\n  '+98': ['IR'],\n  /**\n   * Morocco\n   */\n  '+212': ['MA'],\n  /**\n   * Algeria\n   */\n  '+213': ['DZ'],\n  /**\n   * Tunisia\n   */\n  '+216': ['TN'],\n  /**\n   * Libya\n   */\n  '+218': ['LY'],\n  /**\n   * Gambia\n   */\n  '+220': ['GM'],\n  /**\n   * Senegal\n   */\n  '+221': ['SN'],\n  /**\n   * Mali\n   */\n  '+223': ['ML'],\n  /**\n   * Guinea\n   */\n  '+224': ['GN'],\n  /**\n   * Côte d'Ivoire\n   */\n  '+225': ['CI'],\n  /**\n   * Burkina Faso\n   */\n  '+226': ['BF'],\n  /**\n   * Niger\n   */\n  '+227': ['NE'],\n  /**\n   * Togo\n   */\n  '+228': ['TG'],\n  /**\n   * Benin\n   */\n  '+229': ['BJ'],\n  /**\n   * Mauritius\n   */\n  '+230': ['MU'],\n  /**\n   * Liberia\n   */\n  '+231': ['LR'],\n  /**\n   * Sierra Leone\n   */\n  '+232': ['SL'],\n  /**\n   * Ghana\n   */\n  '+233': ['GH'],\n  /**\n   * Nigeria\n   */\n  '+234': ['NG'],\n  /**\n   * Chad\n   */\n  '+235': ['TD'],\n  /**\n   * Central African Republic\n   */\n  '+236': ['CF'],\n  /**\n   * Cameroon\n   */\n  '+237': ['CM'],\n  /**\n   * Cape Verde\n   */\n  '+238': ['CV'],\n  /**\n   * São Tomé and Príncipe\n   */\n  '+239': ['ST'],\n  /**\n   * Equatorial Guinea\n   */\n  '+240': ['GQ'],\n  /**\n   * Gabon\n   */\n  '+241': ['GA'],\n  /**\n   * Congo\n   */\n  '+242': ['CG'],\n  /**\n   * Democratic Republic of the Congo\n   */\n  '+243': ['CD'],\n  /**\n   * Angola\n   */\n  '+244': ['AO'],\n  /**\n   * Guinea-Bissau\n   */\n  '+245': ['GW'],\n  /**\n   * Kenya\n   */\n  '+254': ['KE'],\n  /**\n   * Tanzania\n   */\n  '+255': ['TZ'],\n  /**\n   * Uganda\n   */\n  '+256': ['UG'],\n  /**\n   * Burundi\n   */\n  '+257': ['BI'],\n  /**\n   * Mozambique\n   */\n  '+258': ['MZ'],\n  /**\n   * Zambia\n   */\n  '+260': ['ZM'],\n  /**\n   * Madagascar\n   */\n  '+261': ['MG'],\n  /**\n   * Zimbabwe\n   */\n  '+263': ['ZW'],\n  /**\n   * Namibia\n   */\n  '+264': ['NA'],\n  /**\n   * Malawi\n   */\n  '+265': ['MW'],\n  /**\n   * Lesotho\n   */\n  '+266': ['LS'],\n  /**\n   * Botswana\n   */\n  '+267': ['BW'],\n  /**\n   * Eswatini\n   */\n  '+268': ['SZ'],\n  /**\n   * Seychelles\n   */\n  '+248': ['SC'],\n  /**\n   * Rwanda\n   */\n  '+250': ['RW'],\n  /**\n   * Ethiopia\n   */\n  '+251': ['ET'],\n  /**\n   * Somalia\n   */\n  '+252': ['SO'],\n  /**\n   * Djibouti\n   */\n  '+253': ['DJ'],\n  /**\n   * Hong Kong\n   */\n  '+852': ['HK'],\n  /**\n   * Macao\n   */\n  '+853': ['MO'],\n  /**\n   * Bangladesh\n   */\n  '+880': ['BD'],\n  /**\n   * Taiwan\n   */\n  '+886': ['TW'],\n  /**\n   * Maldives\n   */\n  '+960': ['MV'],\n  /**\n   * Lebanon\n   */\n  '+961': ['LB'],\n  /**\n   * Jordan\n   */\n  '+962': ['JO'],\n  /**\n   * Syria\n   */\n  '+963': ['SY'],\n  /**\n   * Iraq\n   */\n  '+964': ['IQ'],\n  /**\n   * Kuwait\n   */\n  '+965': ['KW'],\n  /**\n   * Saudi Arabia\n   */\n  '+966': ['SA'],\n  /**\n   * Yemen\n   */\n  '+967': ['YE'],\n  /**\n   * Oman\n   */\n  '+968': ['OM'],\n  /**\n   * Palestine\n   */\n  '+970': ['PS'],\n  /**\n   * United Arab Emirates\n   */\n  '+971': ['AE'],\n  /**\n   * Israel\n   */\n  '+972': ['IL'],\n  /**\n   * Bahrain\n   */\n  '+973': ['BH'],\n  /**\n   * Qatar\n   */\n  '+974': ['QA'],\n  /**\n   * Bhutan\n   */\n  '+975': ['BT'],\n  /**\n   * Mongolia\n   */\n  '+976': ['MN'],\n  /**\n   * Nepal\n   */\n  '+977': ['NP'],\n  /**\n   * Tajikistan\n   */\n  '+992': ['TJ'],\n  /**\n   * Turkmenistan\n   */\n  '+993': ['TM'],\n  /**\n   * Azerbaijan\n   */\n  '+994': ['AZ'],\n  /**\n   * Georgia\n   */\n  '+995': ['GE'],\n  /**\n   * Kyrgyzstan\n   */\n  '+996': ['KG'],\n  /**\n   * Uzbekistan\n   */\n  '+998': ['UZ'],\n} as const;\n\n/**\n * Regional groupings\n */\nexport const COUNTRY_REGIONS = {\n  /**\n   * European Union member states\n   */\n  EU: [\n    'AT',\n    'BE',\n    'BG',\n    'HR',\n    'CY',\n    'CZ',\n    'DK',\n    'EE',\n    'FI',\n    'FR',\n    'DE',\n    'GR',\n    'HU',\n    'IE',\n    'IT',\n    'LV',\n    'LT',\n    'LU',\n    'MT',\n    'NL',\n    'PL',\n    'PT',\n    'RO',\n    'SK',\n    'SI',\n    'ES',\n    'SE',\n  ],\n\n  /**\n   * North American countries\n   */\n  NORTH_AMERICA: ['US', 'CA', 'MX'],\n\n  /**\n   * South American countries\n   */\n  SOUTH_AMERICA: ['AR', 'BO', 'BR', 'CL', 'CO', 'EC', 'GF', 'GY', 'PY', 'PE', 'SR', 'UY', 'VE'],\n\n  /**\n   * G7 countries\n   */\n  G7: ['US', 'CA', 'GB', 'FR', 'DE', 'IT', 'JP'],\n\n  /**\n   * G20 countries\n   */\n  G20: [\n    'AR',\n    'AU',\n    'BR',\n    'CA',\n    'CN',\n    'FR',\n    'DE',\n    'IN',\n    'ID',\n    'IT',\n    'JP',\n    'KR',\n    'MX',\n    'RU',\n    'SA',\n    'ZA',\n    'TR',\n    'GB',\n    'US',\n  ],\n\n  /**\n   * ASEAN countries\n   */\n  ASEAN: ['BN', 'KH', 'ID', 'LA', 'MY', 'MM', 'PH', 'SG', 'TH', 'VN'],\n\n  /**\n   * BRICS countries\n   */\n  BRICS: ['BR', 'RU', 'IN', 'CN', 'ZA'],\n\n  /**\n   * OECD countries\n   */\n  OECD: [\n    'AU',\n    'AT',\n    'BE',\n    'CA',\n    'CL',\n    'CO',\n    'CR',\n    'CZ',\n    'DK',\n    'EE',\n    'FI',\n    'FR',\n    'DE',\n    'GR',\n    'HU',\n    'IS',\n    'IE',\n    'IL',\n    'IT',\n    'JP',\n    'KR',\n    'LV',\n    'LT',\n    'LU',\n    'MX',\n    'NL',\n    'NZ',\n    'NO',\n    'PL',\n    'PT',\n    'SK',\n    'SI',\n    'ES',\n    'SE',\n    'CH',\n    'TR',\n    'GB',\n    'US',\n  ],\n\n  /**\n   * Commonwealth countries\n   */\n  COMMONWEALTH: [\n    'AG',\n    'AU',\n    'BS',\n    'BD',\n    'BB',\n    'BZ',\n    'BW',\n    'BN',\n    'CM',\n    'CA',\n    'CY',\n    'DM',\n    'FJ',\n    'GM',\n    'GH',\n    'GD',\n    'GY',\n    'IN',\n    'JM',\n    'KE',\n    'KI',\n    'LS',\n    'MW',\n    'MY',\n    'MV',\n    'MT',\n    'MU',\n    'MZ',\n    'NA',\n    'NR',\n    'NZ',\n    'NG',\n    'PK',\n    'PG',\n    'RW',\n    'KN',\n    'LC',\n    'VC',\n    'WS',\n    'SC',\n    'SL',\n    'SG',\n    'SB',\n    'ZA',\n    'LK',\n    'SZ',\n    'TZ',\n    'TO',\n    'TT',\n    'TV',\n    'UG',\n    'GB',\n    'VU',\n    'ZM',\n  ],\n} as const;\n\n/**\n * Country code to region mapping for CDN headers\n */\nexport const COUNTRY_REGIONS_DETAILED: Record<string, { region: string; state?: string }> = {\n  // EU countries\n  DE: { region: 'eu' },\n  FR: { region: 'eu' },\n  IT: { region: 'eu' },\n  ES: { region: 'eu' },\n  NL: { region: 'eu' },\n  BE: { region: 'eu' },\n  AT: { region: 'eu' },\n  SE: { region: 'eu' },\n  DK: { region: 'eu' },\n  FI: { region: 'eu' },\n  NO: { region: 'eu' },\n  PL: { region: 'eu' },\n  CZ: { region: 'eu' },\n  HU: { region: 'eu' },\n  SK: { region: 'eu' },\n  SI: { region: 'eu' },\n  HR: { region: 'eu' },\n  BG: { region: 'eu' },\n  RO: { region: 'eu' },\n  GR: { region: 'eu' },\n  PT: { region: 'eu' },\n  IE: { region: 'eu' },\n  LU: { region: 'eu' },\n  MT: { region: 'eu' },\n  CY: { region: 'eu' },\n  EE: { region: 'eu' },\n  LV: { region: 'eu' },\n  LT: { region: 'eu' },\n  GB: { region: 'eu' },\n  IS: { region: 'eu' },\n  LI: { region: 'eu' },\n  CH: { region: 'eu' },\n\n  // US and states (would need more sophisticated detection for states)\n  US: { region: 'us' },\n  CA: { region: 'ca' }, // Canada as separate region\n\n  // China\n  CN: { region: 'cn' },\n  HK: { region: 'cn' },\n  MO: { region: 'cn' },\n\n  // Japan\n  JP: { region: 'jp' },\n\n  // Other Asian countries\n  KR: { region: 'global' }, // South Korea\n  TW: { region: 'global' }, // Taiwan\n  SG: { region: 'global' }, // Singapore\n  MY: { region: 'global' }, // Malaysia\n  TH: { region: 'global' }, // Thailand\n  IN: { region: 'global' }, // India\n  ID: { region: 'global' }, // Indonesia\n  PH: { region: 'global' }, // Philippines\n  VN: { region: 'global' }, // Vietnam\n\n  // Oceania\n  AU: { region: 'global' }, // Australia\n  NZ: { region: 'global' }, // New Zealand\n\n  // Americas (other than US/CA)\n  MX: { region: 'global' }, // Mexico\n  BR: { region: 'global' }, // Brazil\n  AR: { region: 'global' }, // Argentina\n  CL: { region: 'global' }, // Chile\n  CO: { region: 'global' }, // Colombia\n\n  // Middle East\n  AE: { region: 'global' }, // UAE\n  SA: { region: 'global' }, // Saudi Arabia\n  IL: { region: 'global' }, // Israel\n  TR: { region: 'global' }, // Turkey\n\n  // Africa\n  ZA: { region: 'global' }, // South Africa\n  EG: { region: 'global' }, // Egypt\n  NG: { region: 'global' }, // Nigeria\n  KE: { region: 'global' }, // Kenya\n\n  // Russia\n  RU: { region: 'global' }, // Russia\n\n  // Other countries default to global\n};\n\n/**\n * Type exports\n */\nexport type CountryCode = (typeof COUNTRY_CODES)[keyof typeof COUNTRY_CODES];\nexport type CountryCallingCode = keyof typeof COUNTRY_CALLING_CODES;\nexport type CountryRegion = keyof typeof COUNTRY_REGIONS;\nexport type CountryRegionDetailed =\n  (typeof COUNTRY_REGIONS_DETAILED)[keyof typeof COUNTRY_REGIONS_DETAILED];\n","/**\n * Time-related Constants\n *\n * Common time values and durations used throughout the application\n * for timeouts, delays, caching, and other time-based operations.\n *\n * @module time/constants\n */\n\nimport { type CountryCode } from '@plyaz/types';\nimport { COUNTRY_CODES } from '../locale';\n\nexport const DAYS_IN_WEEK = 7;\nexport const EARLY_MORNING_HOURS = 6;\n/**\n * Time conversion and duration constants\n */\nexport const TIME_CONSTANTS = {\n  // Time unit conversions (in milliseconds)\n  /**\n   * One millisecond in milliseconds\n   */\n  MILLISECOND: 1,\n\n  /**\n   * One second in milliseconds\n   */\n  SECOND: 1000,\n\n  /**\n   * One minute in milliseconds\n   */\n  MINUTE: 60000,\n\n  /**\n   * One hour in milliseconds\n   */\n  HOUR: 3600000,\n\n  /**\n   * One day in milliseconds\n   */\n  DAY: 86400000,\n\n  /**\n   * One week in milliseconds\n   */\n  WEEK: 604800000,\n\n  /**\n   * One month in milliseconds (30 days average)\n   */\n  MONTH: 2592000000,\n\n  /**\n   * One year in milliseconds (365 days)\n   */\n  YEAR: 31536000000,\n\n  // Time unit ratios\n  /**\n   * Number of milliseconds in one second\n   */\n  MILLISECONDS_PER_SECOND: 1000,\n\n  /**\n   * Number of seconds in one minute\n   */\n  SECONDS_PER_MINUTE: 60,\n\n  /**\n   * Number of minutes in one hour\n   */\n  MINUTES_PER_HOUR: 60,\n\n  /**\n   * Number of hours in one day\n   */\n  HOURS_PER_DAY: 24,\n\n  /**\n   * Number of days in one week\n   */\n  DAYS_PER_WEEK: 7,\n\n  /**\n   * Number of days in one month (average)\n   */\n  DAYS_PER_MONTH: 30,\n\n  /**\n   * Number of days in one year\n   */\n  DAYS_PER_YEAR: 365,\n\n  /**\n   * Number of weeks in one year\n   */\n  WEEKS_PER_YEAR: 52,\n\n  /**\n   * Number of months in one year\n   */\n  MONTHS_PER_YEAR: 12,\n\n  // Common durations in milliseconds\n  /**\n   * 100 milliseconds\n   */\n  HUNDRED_MS: 100,\n\n  /**\n   * 250 milliseconds\n   */\n  QUARTER_SECOND: 250,\n\n  /**\n   * 500 milliseconds (half second)\n   */\n  HALF_SECOND: 500,\n\n  /**\n   * 2 seconds in milliseconds\n   */\n  TWO_SECONDS: 2000,\n\n  /**\n   * 3 seconds in milliseconds\n   */\n  THREE_SECONDS: 3000,\n\n  /**\n   * 5 seconds in milliseconds\n   */\n  FIVE_SECONDS: 5000,\n\n  /**\n   * 10 seconds in milliseconds\n   */\n  TEN_SECONDS: 10000,\n\n  /**\n   * 30 seconds in milliseconds\n   */\n  THIRTY_SECONDS: 30000,\n\n  /**\n   * 2 minutes in milliseconds\n   */\n  TWO_MINUTES: 120000,\n\n  /**\n   * 5 minutes in milliseconds\n   */\n  FIVE_MINUTES: 300000,\n\n  /**\n   * 10 minutes in milliseconds\n   */\n  TEN_MINUTES: 600000,\n\n  /**\n   * 15 minutes in milliseconds\n   */\n  FIFTEEN_MINUTES: 900000,\n\n  /**\n   * 30 minutes in milliseconds\n   */\n  THIRTY_MINUTES: 1800000,\n\n  /**\n   * 1 hour in milliseconds\n   */\n  ONE_HOUR: 3600000,\n\n  /**\n   * 2 hours in milliseconds\n   */\n  TWO_HOURS: 7200000,\n\n  /**\n   * 6 hours in milliseconds\n   */\n  SIX_HOURS: 21600000,\n\n  /**\n   * 12 hours in milliseconds\n   */\n  TWELVE_HOURS: 43200000,\n\n  // Default values\n  /**\n   * Default timeout duration in milliseconds (5 seconds)\n   */\n  DEFAULT_TIMEOUT: 5000,\n\n  /**\n   * Default short timeout in milliseconds (1 second)\n   */\n  DEFAULT_SHORT_TIMEOUT: 1000,\n\n  /**\n   * Default long timeout in milliseconds (30 seconds)\n   */\n  DEFAULT_LONG_TIMEOUT: 30000,\n\n  /**\n   * Default retry delay in milliseconds (100ms)\n   */\n  DEFAULT_RETRY_DELAY: 100,\n\n  /**\n   * Default exponential backoff base delay in milliseconds (1 second)\n   */\n  DEFAULT_BACKOFF_BASE: 1000,\n\n  /**\n   * Default maximum backoff delay in milliseconds (30 seconds)\n   */\n  DEFAULT_MAX_BACKOFF: 30000,\n\n  /**\n   * Default number of retry attempts\n   */\n  DEFAULT_RETRY_ATTEMPTS: 3,\n\n  /**\n   * Default debounce delay in milliseconds (50ms)\n   */\n  DEFAULT_DEBOUNCE_DELAY: 50,\n\n  /**\n   * Default throttle delay in milliseconds (100ms)\n   */\n  DEFAULT_THROTTLE_DELAY: 100,\n\n  /**\n   * Default animation frame duration in milliseconds (~60fps)\n   */\n  DEFAULT_ANIMATION_FRAME: 16.67,\n\n  /**\n   * Default transition duration in milliseconds (300ms)\n   */\n  DEFAULT_TRANSITION_DURATION: 300,\n\n  /**\n   * Default cache time-to-live in seconds (5 minutes)\n   */\n  DEFAULT_CACHE_TTL: 300,\n\n  /**\n   * Default short cache TTL in seconds (1 minute)\n   */\n  DEFAULT_SHORT_CACHE_TTL: 60,\n\n  /**\n   * Default long cache TTL in seconds (1 hour)\n   */\n  DEFAULT_LONG_CACHE_TTL: 3600,\n\n  /**\n   * Default session timeout in milliseconds (30 minutes)\n   */\n  DEFAULT_SESSION_TIMEOUT: 1800000,\n\n  /**\n   * Default idle timeout in milliseconds (15 minutes)\n   */\n  DEFAULT_IDLE_TIMEOUT: 900000,\n\n  /**\n   * Default poll interval in milliseconds (5 seconds)\n   */\n  DEFAULT_POLL_INTERVAL: 5000,\n\n  /**\n   * Default heartbeat interval in milliseconds (30 seconds)\n   */\n  DEFAULT_HEARTBEAT_INTERVAL: 30000,\n\n  // Network and ports\n  /**\n   * Default port number for servers\n   */\n  DEFAULT_PORT: 3000,\n\n  /**\n   * Default HTTP port\n   */\n  HTTP_PORT: 80,\n\n  /**\n   * Default HTTPS port\n   */\n  HTTPS_PORT: 443,\n\n  /**\n   * Default WebSocket port\n   */\n  WEBSOCKET_PORT: 8080,\n\n  /**\n   * Default database port (PostgreSQL)\n   */\n  DATABASE_PORT: 5432,\n\n  /**\n   * Default Redis port\n   */\n  REDIS_PORT: 6379,\n\n  // WebSocket specific\n  /**\n   * WebSocket normal closure code\n   */\n  WEBSOCKET_CLOSE_NORMAL: 1000,\n\n  /**\n   * WebSocket going away code\n   */\n  WEBSOCKET_CLOSE_GOING_AWAY: 1001,\n\n  /**\n   * WebSocket protocol error code\n   */\n  WEBSOCKET_CLOSE_PROTOCOL_ERROR: 1002,\n\n  /**\n   * WebSocket unsupported data code\n   */\n  WEBSOCKET_CLOSE_UNSUPPORTED: 1003,\n\n  /**\n   * WebSocket abnormal closure code\n   */\n  WEBSOCKET_CLOSE_ABNORMAL: 1006,\n\n  /**\n   * WebSocket retry delay in milliseconds (500ms)\n   */\n  WEBSOCKET_RETRY_DELAY: 500,\n\n  /**\n   * WebSocket ping interval in milliseconds (30 seconds)\n   */\n  WEBSOCKET_PING_INTERVAL: 30000,\n\n  /**\n   * WebSocket reconnect delay in milliseconds (1 second)\n   */\n  WEBSOCKET_RECONNECT_DELAY: 1000,\n\n  /**\n   * WebSocket max reconnect delay in milliseconds (30 seconds)\n   */\n  WEBSOCKET_MAX_RECONNECT_DELAY: 30000,\n} as const;\n\n/**\n * Country → Time Zone Mapping\n * Based on IANA time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)\n */\nexport const COUNTRY_TIMEZONES: Record<string, string[]> = {\n  // --- AMERICAS ---\n  [COUNTRY_CODES.US]: [\n    'America/New_York',\n    'America/Chicago',\n    'America/Denver',\n    'America/Los_Angeles',\n    'America/Anchorage',\n    'Pacific/Honolulu',\n  ],\n  [COUNTRY_CODES.CA]: [\n    'America/Toronto',\n    'America/Vancouver',\n    'America/Edmonton',\n    'America/Halifax',\n    'America/St_Johns',\n  ],\n  [COUNTRY_CODES.MX]: ['America/Mexico_City', 'America/Monterrey', 'America/Tijuana'],\n  [COUNTRY_CODES.BR]: ['America/Sao_Paulo', 'America/Manaus', 'America/Fortaleza'],\n  [COUNTRY_CODES.AR]: ['America/Argentina/Buenos_Aires'],\n  [COUNTRY_CODES.CL]: ['America/Santiago'],\n  [COUNTRY_CODES.CO]: ['America/Bogota'],\n  [COUNTRY_CODES.PE]: ['America/Lima'],\n  [COUNTRY_CODES.VE]: ['America/Caracas'],\n\n  // --- EUROPE ---\n  [COUNTRY_CODES.GB]: ['Europe/London'],\n  [COUNTRY_CODES.FR]: ['Europe/Paris'],\n  [COUNTRY_CODES.DE]: ['Europe/Berlin'],\n  [COUNTRY_CODES.IT]: ['Europe/Rome'],\n  [COUNTRY_CODES.ES]: ['Europe/Madrid'],\n  [COUNTRY_CODES.PT]: ['Europe/Lisbon'],\n  [COUNTRY_CODES.NL]: ['Europe/Amsterdam'],\n  [COUNTRY_CODES.SE]: ['Europe/Stockholm'],\n  [COUNTRY_CODES.PL]: ['Europe/Warsaw'],\n  [COUNTRY_CODES.FI]: ['Europe/Helsinki'],\n  [COUNTRY_CODES.NO]: ['Europe/Oslo'],\n  [COUNTRY_CODES.CH]: ['Europe/Zurich'],\n  [COUNTRY_CODES.RU]: ['Europe/Moscow', 'Asia/Yekaterinburg', 'Asia/Irkutsk', 'Asia/Vladivostok'],\n  [COUNTRY_CODES.UA]: ['Europe/Kyiv'],\n  [COUNTRY_CODES.GR]: ['Europe/Athens'],\n  [COUNTRY_CODES.TR]: ['Europe/Istanbul'],\n\n  // --- ASIA ---\n  [COUNTRY_CODES.CN]: ['Asia/Shanghai', 'Asia/Urumqi'],\n  [COUNTRY_CODES.JP]: ['Asia/Tokyo'],\n  [COUNTRY_CODES.KR]: ['Asia/Seoul'],\n  [COUNTRY_CODES.IN]: ['Asia/Kolkata'],\n  [COUNTRY_CODES.PK]: ['Asia/Karachi'],\n  [COUNTRY_CODES.BD]: ['Asia/Dhaka'],\n  [COUNTRY_CODES.TH]: ['Asia/Bangkok'],\n  [COUNTRY_CODES.VN]: ['Asia/Ho_Chi_Minh'],\n  [COUNTRY_CODES.MY]: ['Asia/Kuala_Lumpur'],\n  [COUNTRY_CODES.SG]: ['Asia/Singapore'],\n  [COUNTRY_CODES.ID]: [\n    'Asia/Jakarta',\n    'Asia/Makassar',\n    'Asia/Jayapura', // Indonesia has 3 time zones\n  ],\n  [COUNTRY_CODES.PH]: ['Asia/Manila'],\n  [COUNTRY_CODES.AE]: ['Asia/Dubai'],\n  [COUNTRY_CODES.SA]: ['Asia/Riyadh'],\n  [COUNTRY_CODES.IR]: ['Asia/Tehran'],\n  [COUNTRY_CODES.IQ]: ['Asia/Baghdad'],\n  [COUNTRY_CODES.IL]: ['Asia/Jerusalem'],\n  [COUNTRY_CODES.QA]: ['Asia/Qatar'],\n  [COUNTRY_CODES.KW]: ['Asia/Kuwait'],\n\n  // --- AFRICA ---\n  [COUNTRY_CODES.EG]: ['Africa/Cairo'],\n  [COUNTRY_CODES.NG]: ['Africa/Lagos'],\n  [COUNTRY_CODES.ZA]: ['Africa/Johannesburg'],\n  [COUNTRY_CODES.KE]: ['Africa/Nairobi'],\n  [COUNTRY_CODES.MA]: ['Africa/Casablanca'],\n  [COUNTRY_CODES.GH]: ['Africa/Accra'],\n  [COUNTRY_CODES.ET]: ['Africa/Addis_Ababa'],\n  [COUNTRY_CODES.TZ]: ['Africa/Dar_es_Salaam'],\n  [COUNTRY_CODES.SN]: ['Africa/Dakar'],\n\n  // --- OCEANIA ---\n  [COUNTRY_CODES.AU]: [\n    'Australia/Sydney',\n    'Australia/Melbourne',\n    'Australia/Perth',\n    'Australia/Brisbane',\n  ],\n  [COUNTRY_CODES.NZ]: ['Pacific/Auckland'],\n  [COUNTRY_CODES.FJ]: ['Pacific/Fiji'],\n  [COUNTRY_CODES.PG]: ['Pacific/Port_Moresby'],\n\n  // --- ANTARCTICA ---\n  [COUNTRY_CODES.AQ]: ['Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Casey'],\n};\n\nexport const ALL_COUNTRY_TIMEZONES: string[] = Array.from(\n  new Set(Object.values(COUNTRY_TIMEZONES).flat())\n);\n\n/**\n * A single record describing the available time zones for a given country.\n */\nexport interface CountryTimezoneEntry {\n  countryCode: CountryCode;\n  timeZones: string[];\n}\n\n/**\n * Full mapping of all countries → time zones.\n */\nexport type CountryTimezones = Record<CountryCode, string[]>;\n\n/**\n * A flattened list of all unique IANA time zones supported globally.\n */\nexport type AllTimezones = string[];\n\nexport const DAYS_OF_WEEK = Array.from({ length: DAYS_IN_WEEK }, (_, i) => i);\nexport const HOURS_OF_DAY = Array.from({ length: EARLY_MORNING_HOURS }, (_, i) => i);\n\n/**\n * Type for time constant values\n */\nexport type TimeConstant = (typeof TIME_CONSTANTS)[keyof typeof TIME_CONSTANTS];\n"]}