pike.git / lib / modules / Calendar.pmod / TZs.h

version» Context lines:

pike.git/lib/modules/Calendar.pmod/TZs.h:1: + // ---------------------------------------------------------------- + // Timezones + // + // NOTE: this file is generated by mkrules.pike; + // please do not edit manually /Mirar + // ----------------------------------------------------------------    -  + import "."; +  + // ---------------------------------------------------------------------- + // Timezones + // ---------------------------------------------------------------------- +  + Ruleset.Timezone Indian_Chagos=Ruleset.Timezone(-18000,"IOT"); + Ruleset.Timezone Indian_Cocos=Ruleset.Timezone(-23400,"CCT"); + Ruleset.Timezone Pacific_Chatham=TZrules.Chatham(-45900,"CHA%sT"); + Ruleset.Timezone NZ_CHAT=Pacific_Chatham; + Ruleset.Timezone Pacific_Johnston=Ruleset.Timezone(36000,"HST"); + Ruleset.Timezone Etc_GMT=Ruleset.Timezone(0,"GMT"); + Ruleset.Timezone GMT=Etc_GMT; + Ruleset.Timezone Etc_Greenwich=Etc_GMT; + Ruleset.Timezone Etc_GMT_0=Etc_GMT; + Ruleset.Timezone Etc_GMTp0=Etc_GMT; + Ruleset.Timezone Etc_GMT0=Etc_GMT; + Ruleset.Timezone Etc_UTC=Ruleset.Timezone(0,"UTC"); + Ruleset.Timezone UTC=Etc_UTC; + Ruleset.Timezone Etc_Universal=Etc_UTC; + Ruleset.Timezone Etc_Zulu=Etc_UTC; + Ruleset.Timezone Etc_UCT=Ruleset.Timezone(0,"UCT"); + Ruleset.Timezone UCT=Etc_UCT; + Ruleset.Timezone Etc_GMT_14=Ruleset.Timezone(-50400,"GMT-14"); + Ruleset.Timezone Etc_GMT_13=Ruleset.Timezone(-46800,"GMT-13"); + Ruleset.Timezone Etc_GMT_12=Ruleset.Timezone(-43200,"GMT-12"); + Ruleset.Timezone Etc_GMT_11=Ruleset.Timezone(-39600,"GMT-11"); + Ruleset.Timezone Etc_GMT_10=Ruleset.Timezone(-36000,"GMT-10"); + Ruleset.Timezone Etc_GMT_9=Ruleset.Timezone(-32400,"GMT-9"); + Ruleset.Timezone Etc_GMT_8=Ruleset.Timezone(-28800,"GMT-8"); + Ruleset.Timezone Etc_GMT_7=Ruleset.Timezone(-25200,"GMT-7"); + Ruleset.Timezone Etc_GMT_6=Ruleset.Timezone(-21600,"GMT-6"); + Ruleset.Timezone Etc_GMT_5=Ruleset.Timezone(-18000,"GMT-5"); + Ruleset.Timezone Etc_GMT_4=Ruleset.Timezone(-14400,"GMT-4"); + Ruleset.Timezone Etc_GMT_3=Ruleset.Timezone(-10800,"GMT-3"); + Ruleset.Timezone Etc_GMT_2=Ruleset.Timezone(-7200,"GMT-2"); + Ruleset.Timezone Etc_GMT_1=Ruleset.Timezone(-3600,"GMT-1"); + Ruleset.Timezone Etc_GMTp1=Ruleset.Timezone(3600,"GMT+1"); + Ruleset.Timezone Etc_GMTp2=Ruleset.Timezone(7200,"GMT+2"); + Ruleset.Timezone Etc_GMTp3=Ruleset.Timezone(10800,"GMT+3"); + Ruleset.Timezone Etc_GMTp4=Ruleset.Timezone(14400,"GMT+4"); + Ruleset.Timezone Etc_GMTp5=Ruleset.Timezone(18000,"GMT+5"); + Ruleset.Timezone Etc_GMTp6=Ruleset.Timezone(21600,"GMT+6"); + Ruleset.Timezone Etc_GMTp7=Ruleset.Timezone(25200,"GMT+7"); + Ruleset.Timezone Etc_GMTp8=Ruleset.Timezone(28800,"GMT+8"); + Ruleset.Timezone Etc_GMTp9=Ruleset.Timezone(32400,"GMT+9"); + Ruleset.Timezone Etc_GMTp10=Ruleset.Timezone(36000,"GMT+10"); + Ruleset.Timezone Etc_GMTp11=Ruleset.Timezone(39600,"GMT+11"); + Ruleset.Timezone Etc_GMTp12=Ruleset.Timezone(43200,"GMT+12"); + Ruleset.Timezone WET=TZrules.EU(0,"WE%sT"); + Ruleset.Timezone CET=TZrules.C_Eur(-3600,"CE%sT"); + Ruleset.Timezone MET=TZrules.C_Eur(-3600,"ME%sT"); + Ruleset.Timezone EET=TZrules.EU(-7200,"EE%sT"); + Ruleset.Timezone Atlantic_Jan_Mayen=Ruleset.Timezone(3600,"EGT"); + Ruleset.Timezone SystemV_AST4ADT=TZrules.SystemV(14400,"A%sT"); + Ruleset.Timezone SystemV_EST5EDT=TZrules.SystemV(18000,"E%sT"); + Ruleset.Timezone SystemV_CST6CDT=TZrules.SystemV(21600,"C%sT"); + Ruleset.Timezone SystemV_MST7MDT=TZrules.SystemV(25200,"M%sT"); + Ruleset.Timezone SystemV_PST8PDT=TZrules.SystemV(28800,"P%sT"); + Ruleset.Timezone SystemV_YST9YDT=TZrules.SystemV(32400,"Y%sT"); + Ruleset.Timezone SystemV_AST4=Ruleset.Timezone(14400,"AST"); + Ruleset.Timezone SystemV_EST5=Ruleset.Timezone(18000,"EST"); + Ruleset.Timezone SystemV_CST6=Ruleset.Timezone(21600,"CST"); + Ruleset.Timezone SystemV_MST7=Ruleset.Timezone(25200,"MST"); + Ruleset.Timezone SystemV_PST8=Ruleset.Timezone(28800,"PST"); + Ruleset.Timezone SystemV_YST9=Ruleset.Timezone(32400,"YST"); + Ruleset.Timezone SystemV_HST10=Ruleset.Timezone(36000,"HST"); +  + // ---------------------------------------------------------------------- + // Timezones with an attitude + // ---------------------------------------------------------------------- +  + class Africa_Algiers + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=357523200) // from 1981 May +  return tz6 || (tz6=Ruleset.Timezone(-3600,"CET")); +  if (ux>=309747600) // from 1979 Oct 26 +  return tz3 || (tz3=TZrules.Algeria(0,"WE%sT")); +  if (ux>=246240000) // from 1977 Oct 21 +  return tz4 || (tz4=TZrules.Algeria(-3600,"CE%sT")); +  if (ux>=-212029200) // from 1963 Apr 14 +  return tz3 || (tz3=TZrules.Algeria(0,"WE%sT")); +  if (ux>=-439430400) // from 1956 Jan 29 +  return tz6 || (tz6=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-733273200) // from 1946 Oct 7 +  return tz5 || (tz5=Ruleset.Timezone(0,"WET")); +  if (ux>=-942012000) // from 1940 Feb 25 2:00 +  return tz4 || (tz4=TZrules.Algeria(-3600,"CE%sT")); +  if (ux>=-1855958961) // from 1911 Mar 11 +  return tz3 || (tz3=TZrules.Algeria(0,"WE%sT")); +  if (ux>=-2486679072) // from 1891 Mar 15 0:01 Paris Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-561,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(-732,"LMT")); +  } + } +  + class Africa_Luanda + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1849395124) // from 1911 May 26 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"WAT")); +  if (ux>=-2461452776) // from 1892 Luanda Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-3124,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(-3176,"LMT")); +  } + } +  + class Africa_Porto_Novo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1131235200) // from 1934 Feb 26 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"WAT")); +  if (ux>=-1830384628) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(-628,"LMT")); +  } + } +  + class Africa_Gaborone + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-813805200) // from 1944 Mar 19 2:00 +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  if (ux>=-829526400) // from 1943 Sep 19 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-10800,"CAST")); +  if (ux>=-2682294220) // from 1885 +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-6220,"LMT")); +  } + } +  + class Africa_Ouagadougou + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830383636) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(364,"LMT")); +  } + } +  + class Africa_Bujumbura + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2524528648) // from 1890 +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-7048,"LMT")); +  } + } +  + class Africa_Douala + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830386328) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-2328,"LMT")); +  } + } +  + class Atlantic_Cape_Verde + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=186120000) // from 1975 Nov 25 2:00 +  return tz4 || (tz4=Ruleset.Timezone(3600,"CVT")); +  if (ux>=-764118000) // from 1945 Oct 15 +  return tz2 || (tz2=Ruleset.Timezone(7200,"CVT")); +  if (ux>=-862610400) // from 1942 Sep +  return tz3 || (tz3=Ruleset.Timezone(3600,"CVST")); +  if (ux>=-1988144756) // from 1907 +  return tz2 || (tz2=Ruleset.Timezone(7200,"CVT")); +  // Praia +  return tz1 || (tz1=Ruleset.Timezone(5644,"LMT")); +  } + } +  + class Africa_Bangui + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830388460) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-4460,"LMT")); +  } + } +  + class Africa_Ndjamena + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=321314400) // from 1980 Mar 8 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  if (ux>=308703600) // from 1979 Oct 14 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"WAST")); +  if (ux>=-1830387612) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-3612,"LMT")); +  } + } +  + class Indian_Comoro + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846291984) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  // Moroni, Gran Comoro +  return tz1 || (tz1=Ruleset.Timezone(-10384,"LMT")); +  } + } +  + class Africa_Kinshasa + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2276643672) // from 1897 Nov 9 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-3672,"LMT")); +  } + } +  + class Africa_Lubumbashi + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2276646592) // from 1897 Nov 9 +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-6592,"LMT")); +  } + } +  + class Africa_Brazzaville + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830387668) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-3668,"LMT")); +  } + } +  + class Africa_Abidjan + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830383032) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(968,"LMT")); +  } + } +  + class Africa_Djibouti + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846291956) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  return tz1 || (tz1=Ruleset.Timezone(-10356,"LMT")); +  } + } +  + class Africa_Cairo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2185409100) // from 1900 Oct +  return tz2 || (tz2=TZrules.Egypt(-7200,"EE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-7500,"LMT")); +  } + } + constant Egypt=Africa_Cairo; +  + class Africa_Malabo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-190857600) // from 1963 Dec 15 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"WAT")); +  if (ux>=-1830386108) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(-2108,"LMT")); +  } + } +  + class Africa_Asmera + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1062210920) // from 1936 May 5 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-2524530932) // from 1890 Adis Dera MT +  return tz3 || (tz3=Ruleset.Timezone(-9320,"ADMT")); +  if (ux>=-3155682932) // from 1870 Asmera Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-9332,"AMT")); +  return tz1 || (tz1=Ruleset.Timezone(-9332,"LMT")); +  } + } +  + class Africa_Addis_Ababa + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1062210920) // from 1936 May 5 +  return tz3 || (tz3=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-3155682888) // from 1870 Adis Dera MT +  return tz2 || (tz2=Ruleset.Timezone(-9320,"ADMT")); +  return tz1 || (tz1=Ruleset.Timezone(-9288,"LMT")); +  } + } +  + class Africa_Libreville + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830386268) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-2268,"LMT")); +  } + } +  + class Africa_Banjul + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-189385200) // from 1964 +  return tz4 || (tz4=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1104533604) // from 1935 +  return tz3 || (tz3=Ruleset.Timezone(3600,"WAT")); +  if (ux>=-1830380004) // from 1912 Banjul Mean Time +  return tz2 || (tz2=Ruleset.Timezone(3996,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(3996,"LMT")); +  } + } +  + class Africa_Accra + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1640995148) // from 1918 +  return tz2 || (tz2=TZrules.Ghana(0,"%s")); +  return tz1 || (tz1=Ruleset.Timezone(52,"LMT")); +  } + } +  + class Africa_Conakry + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-315615600) // from 1960 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1131235200) // from 1934 Feb 26 +  return tz3 || (tz3=Ruleset.Timezone(3600,"WAT")); +  if (ux>=-1830380708) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(3292,"LMT")); +  } + } +  + class Africa_Bissau + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=157770000) // from 1975 +  return tz3 || (tz3=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1849388260) // from 1911 May 26 +  return tz2 || (tz2=Ruleset.Timezone(3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(3740,"LMT")); +  } + } +  + class Africa_Nairobi + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-315629100) // from 1960 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-946780200) // from 1940 +  return tz4 || (tz4=Ruleset.Timezone(-9900,"BEAUT")); +  if (ux>=-1262314800) // from 1930 +  return tz3 || (tz3=Ruleset.Timezone(-9000,"BEAT")); +  if (ux>=-1309746436) // from 1928 Jul +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  return tz1 || (tz1=Ruleset.Timezone(-8836,"LMT")); +  } + } +  + class Africa_Maseru + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-813805200) // from 1944 Mar 19 2:00 +  return tz2 || (tz2=Ruleset.Timezone(-7200,"SAST")); +  if (ux>=-829526400) // from 1943 Sep 19 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-10800,"SAST")); +  if (ux>=-2109289800) // from 1903 Mar +  return tz2 || (tz2=Ruleset.Timezone(-7200,"SAST")); +  return tz1 || (tz1=Ruleset.Timezone(-6600,"LMT")); +  } + } +  + class Africa_Monrovia + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=73529070) // from 1972 May +  return tz4 || (tz4=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1604359012) // from 1919 Mar Liberia Time +  return tz3 || (tz3=Ruleset.Timezone(2670,"LRT")); +  if (ux>=-2776979812) // from 1882 Monrovia Mean Time +  return tz2 || (tz2=Ruleset.Timezone(2588,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(2588,"LMT")); +  } + } +  + class Africa_Tripoli + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=875916000) // from 1997 Oct 4 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=860108400) // from 1997 Apr 4 +  return tz5 || (tz5=Ruleset.Timezone(-7200,"CEST")); +  if (ux>=844034400) // from 1996 Sep 30 +  return tz4 || (tz4=Ruleset.Timezone(-3600,"CET")); +  if (ux>=641782800) // from 1990 May 4 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=378684000) // from 1982 +  return tz2 || (tz2=TZrules.Libya(-3600,"CE%sT")); +  if (ux>=-347151600) // from 1959 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-1577926364) // from 1920 +  return tz2 || (tz2=TZrules.Libya(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-3164,"LMT")); +  } + } + constant Libya=Africa_Tripoli; +  + class Indian_Antananarivo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-492062400) // from 1954 May 29 23:00s +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-499924800) // from 1954 Feb 27 23:00s +  return tz3 || (tz3=Ruleset.Timezone(-14400,"EAST")); +  if (ux>=-1846293004) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  return tz1 || (tz1=Ruleset.Timezone(-11404,"LMT")); +  } + } +  + class Africa_Blantyre + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2109291600) // from 1903 Mar +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-8400,"LMT")); +  } + } +  + class Africa_Bamako + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-300841200) // from 1960 Jun 20 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1131235200) // from 1934 Feb 26 +  return tz3 || (tz3=Ruleset.Timezone(3600,"WAT")); +  if (ux>=-1830382080) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(1920,"LMT")); +  } + } +  + class Africa_Timbuktu + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830383276) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(724,"LMT")); +  } + } +  + class Africa_Nouakchott + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-286930800) // from 1960 Nov 28 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1131235200) // from 1934 Feb 26 +  return tz3 || (tz3=Ruleset.Timezone(3600,"WAT")); +  if (ux>=-1830380172) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(3828,"LMT")); +  } + } +  + class Indian_Mauritius + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1988164200) // from 1907 Mauritius Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"MUT")); +  // Port Louis +  return tz1 || (tz1=Ruleset.Timezone(-13800,"LMT")); +  } + } +  + class Indian_Mayotte + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846292456) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  // Mamoutzou +  return tz1 || (tz1=Ruleset.Timezone(-10856,"LMT")); +  } + } +  + class Africa_Casablanca + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=504918000) // from 1986 +  return tz4 || (tz4=Ruleset.Timezone(0,"WET")); +  if (ux>=448243200) // from 1984 Mar 16 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-1773012580) // from 1913 Oct 26 +  return tz2 || (tz2=TZrules.Morocco(0,"WE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(1820,"LMT")); +  } + } +  + class Africa_El_Aaiun + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=198291600) // from 1976 Apr 14 +  return tz3 || (tz3=Ruleset.Timezone(0,"WET")); +  if (ux>=-1136070432) // from 1934 Jan +  return tz2 || (tz2=Ruleset.Timezone(3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(3168,"LMT")); +  } + } +  + class Africa_Maputo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2109291020) // from 1903 Mar +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-7820,"LMT")); +  } + } +  + class Africa_Windhoek + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=765324000) // from 1994 Apr 3 +  return tz6 || (tz6=TZrules.Namibia(-3600,"WA%sT")); +  if (ux>=637970400) // from 1990 Mar 21 +  return tz5 || (tz5=Ruleset.Timezone(-7200,"CAT")); +  if (ux>=-845254800) // from 1943 Mar 21 2:00 independence +  return tz3 || (tz3=Ruleset.Timezone(-7200,"SAST")); +  if (ux>=-860976000) // from 1942 Sep 20 2:00 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"SAST")); +  if (ux>=-2109288600) // from 1903 Mar +  return tz3 || (tz3=Ruleset.Timezone(-7200,"SAST")); +  if (ux>=-2458170504) // from 1892 Feb 8 SW Africa Time +  return tz2 || (tz2=Ruleset.Timezone(-5400,"SWAT")); +  return tz1 || (tz1=Ruleset.Timezone(-4104,"LMT")); +  } + } +  + class Africa_Niamey + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-315619200) // from 1960 +  return tz4 || (tz4=Ruleset.Timezone(-3600,"WAT")); +  if (ux>=-1131231600) // from 1934 Feb 26 +  return tz3 || (tz3=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1830384508) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-508,"LMT")); +  } + } +  + class Africa_Lagos + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1588464816) // from 1919 Sep +  return tz2 || (tz2=Ruleset.Timezone(-3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(-816,"LMT")); +  } + } +  + class Indian_Reunion + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1848886912) // from 1911 Jun Reunion Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"RET")); +  // Saint-Denis +  return tz1 || (tz1=Ruleset.Timezone(-13312,"LMT")); +  } + } +  + class Africa_Kigali + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1091498416) // from 1935 Jun +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-7216,"LMT")); +  } + } +  + class Atlantic_St_Helena + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-599614632) // from 1951 +  return tz3 || (tz3=Ruleset.Timezone(0,"GMT")); +  if (ux>=-2524520232) // from 1890 Jamestown Mean Time +  return tz2 || (tz2=Ruleset.Timezone(1368,"JMT")); +  // Jamestown +  return tz1 || (tz1=Ruleset.Timezone(1368,"LMT")); +  } + } +  + class Africa_Sao_Tome + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830381808) // from 1912 +  return tz3 || (tz3=Ruleset.Timezone(0,"GMT")); +  if (ux>=-2713912016) // from 1884 Lisbon Mean Time +  return tz2 || (tz2=Ruleset.Timezone(2192,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(-1616,"LMT")); +  } + } +  + class Africa_Dakar + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-902098800) // from 1941 Jun +  return tz3 || (tz3=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1830379816) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(3600,"WAT")); +  return tz1 || (tz1=Ruleset.Timezone(4184,"LMT")); +  } + } +  + class Indian_Mahe + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2006653308) // from 1906 Jun Seychelles Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"SCT")); +  // Victoria +  return tz1 || (tz1=Ruleset.Timezone(-13308,"LMT")); +  } + } +  + class Africa_Freetown + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-410230800) // from 1957 +  return tz4 || (tz4=TZrules.SL(0,"%s")); +  if (ux>=-1785712020) // from 1913 Jun +  return tz3 || (tz3=TZrules.SL(3600,"%s")); +  if (ux>=-2776979220) // from 1882 Freetown Mean Time +  return tz2 || (tz2=Ruleset.Timezone(3180,"FMT")); +  return tz1 || (tz1=Ruleset.Timezone(3180,"LMT")); +  } + } +  + class Africa_Mogadishu + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-410236200) // from 1957 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-1230778800) // from 1931 +  return tz3 || (tz3=Ruleset.Timezone(-9000,"BEAT")); +  if (ux>=-2403572488) // from 1893 Nov +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  return tz1 || (tz1=Ruleset.Timezone(-10888,"LMT")); +  } + } +  + class Africa_Johannesburg + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2109288600) // from 1903 Mar +  return tz3 || (tz3=TZrules.SA(-7200,"SAST")); +  if (ux>=-2458173120) // from 1892 Feb 8 +  return tz2 || (tz2=Ruleset.Timezone(-5400,"SAST")); +  return tz1 || (tz1=Ruleset.Timezone(-6720,"LMT")); +  } + } +  + class Africa_Khartoum + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=947944800) // from 2000 Jan 15 12:00 +  return tz3 || (tz3=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-1230775808) // from 1931 +  return tz2 || (tz2=TZrules.Sudan(-7200,"CA%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-7808,"LMT")); +  } + } +  + class Africa_Mbabane + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2109290664) // from 1903 Mar +  return tz2 || (tz2=Ruleset.Timezone(-7200,"SAST")); +  return tz1 || (tz1=Ruleset.Timezone(-7464,"LMT")); +  } + } +  + class Africa_Dar_es_Salaam + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-284006700) // from 1961 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-694321200) // from 1948 +  return tz3 || (tz3=Ruleset.Timezone(-9900,"BEAUT")); +  if (ux>=-1230777428) // from 1931 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  return tz1 || (tz1=Ruleset.Timezone(-9428,"LMT")); +  } + } +  + class Africa_Lome + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2429827492) // from 1893 +  return tz2 || (tz2=Ruleset.Timezone(0,"GMT")); +  return tz1 || (tz1=Ruleset.Timezone(-292,"LMT")); +  } + } +  + class Africa_Tunis + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1855958961) // from 1911 Mar 11 +  return tz3 || (tz3=TZrules.Tunisia(-3600,"CE%sT")); +  if (ux>=-2797202444) // from 1881 May 12 Paris Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-561,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(-2444,"LMT")); +  } + } +  + class Africa_Kampala + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-410237100) // from 1957 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  if (ux>=-694319400) // from 1948 +  return tz4 || (tz4=Ruleset.Timezone(-9900,"BEAUT")); +  if (ux>=-1262314800) // from 1930 +  return tz3 || (tz3=Ruleset.Timezone(-9000,"BEAT")); +  if (ux>=-1309745380) // from 1928 Jul +  return tz2 || (tz2=Ruleset.Timezone(-10800,"EAT")); +  return tz1 || (tz1=Ruleset.Timezone(-7780,"LMT")); +  } + } +  + class Africa_Lusaka + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2109289988) // from 1903 Mar +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-6788,"LMT")); +  } + } +  + class Africa_Harare + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2109290652) // from 1903 Mar +  return tz2 || (tz2=Ruleset.Timezone(-7200,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(-7452,"LMT")); +  } + } +  + class Antarctica_Casey + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-31536000) // from 1969 Western (Aus) Standard Time +  return tz2 || (tz2=Ruleset.Timezone(-28800,"WST")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Antarctica_Davis + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-28857600) // from 1969 Feb +  return tz2 || (tz2=Ruleset.Timezone(-25200,"DAVT")); +  if (ux>=-163062000) // from 1964 Nov +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  if (ux>=-409190400) // from 1957 Jan 13 Davis Time +  return tz2 || (tz2=Ruleset.Timezone(-25200,"DAVT")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Antarctica_Mawson + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-501206400) // from 1954 Feb 13 Mawson Time +  return tz2 || (tz2=Ruleset.Timezone(-21600,"MAWT")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Indian_Kerguelen + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-631152000) // from 1950 ISO code TF Time +  return tz2 || (tz2=Ruleset.Timezone(-18000,"TFT")); +  // Port-aux-Francais +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Antarctica_DumontDUrville + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-415497600) // from 1956 Nov Dumont-d'Urville Time +  return tz3 || (tz3=Ruleset.Timezone(-36000,"DDUT")); +  if (ux>=-566992800) // from 1952 Jan 14 +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  if (ux>=-725846400) // from 1947 Port-Martin Time +  return tz2 || (tz2=Ruleset.Timezone(-36000,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Antarctica_Syowa + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-407808000) // from 1957 Jan 29 Syowa Time +  return tz2 || (tz2=Ruleset.Timezone(-10800,"SYOT")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Antarctica_Palmer + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=389048400) // from 1982 May +  return tz4 || (tz4=TZrules.ChileAQ(14400,"CL%sT")); +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz3 || (tz3=TZrules.ArgAQ(10800,"AR%sT")); +  if (ux>=-157766400) // from 1965 +  return tz2 || (tz2=TZrules.ArgAQ(14400,"AR%sT")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } +  + class Antarctica_McMurdo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-441849600) // from 1956 +  return tz2 || (tz2=TZrules.NZAQ(-43200,"NZ%sT")); +  return tz1 || (tz1=Ruleset.Timezone(0,"___")); +  } + } + constant Antarctica_South_Pole=Antarctica_McMurdo; +  + class Asia_Kabul + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-788932800) // from 1945 +  return tz3 || (tz3=Ruleset.Timezone(-16200,"AFT")); +  if (ux>=-2524538208) // from 1890 +  return tz2 || (tz2=Ruleset.Timezone(-14400,"AFT")); +  return tz1 || (tz1=Ruleset.Timezone(-16608,"LMT")); +  } + } +  + class Asia_Yerevan + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=852062400) // from 1997 +  return tz7 || (tz7=TZrules.RussiaAsia(-14400,"AM%sT")); +  if (ux>=811897200) // from 1995 Sep 24 2:00s +  return tz6 || (tz6=Ruleset.Timezone(-14400,"AMT")); +  if (ux>=685569600) // from 1991 Sep 23 +  return tz5 || (tz5=TZrules.RussiaAsia(-10800,"AM%sT")); +  if (ux>=670370400) // from 1991 Mar 31 2:00s independence +  return tz4 || (tz4=Ruleset.Timezone(-14400,"YERST")); +  if (ux>=-405140400) // from 1957 Mar +  return tz3 || (tz3=TZrules.RussiaAsia(-14400,"YER%sT")); +  if (ux>=-1441162680) // from 1924 May 2 Yerevan Time +  return tz2 || (tz2=Ruleset.Timezone(-10800,"YERT")); +  return tz1 || (tz1=Ruleset.Timezone(-10680,"LMT")); +  } + } +  + class Asia_Baku + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=852091200) // from 1997 +  return tz8 || (tz8=TZrules.Azer(-14400,"AZ%sT")); +  if (ux>=820440000) // from 1996 +  return tz7 || (tz7=TZrules.EUAsia(-14400,"AZ%sT")); +  if (ux>=715320000) // from 1992 Sep lastSun 2:00s Azerbaijan time +  return tz6 || (tz6=Ruleset.Timezone(-14400,"AZT")); +  if (ux>=683496000) // from 1991 Aug 30 +  return tz5 || (tz5=TZrules.RussiaAsia(-10800,"AZ%sT")); +  if (ux>=670370400) // from 1991 Mar 31 2:00s independence +  return tz4 || (tz4=Ruleset.Timezone(-14400,"BAKST")); +  if (ux>=-405140400) // from 1957 Mar +  return tz3 || (tz3=TZrules.RussiaAsia(-14400,"BAK%sT")); +  if (ux>=-1441163964) // from 1924 May 2 Baku Time +  return tz2 || (tz2=Ruleset.Timezone(-10800,"BAKT")); +  return tz1 || (tz1=Ruleset.Timezone(-11964,"LMT")); +  } + } +  + class Asia_Bahrain + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=76190400) // from 1972 Jun +  return tz3 || (tz3=Ruleset.Timezone(-10800,"AST")); +  if (ux>=-1577935340) // from 1920 +  return tz2 || (tz2=Ruleset.Timezone(-14400,"GST")); +  // Al-Manamah +  return tz1 || (tz1=Ruleset.Timezone(-12140,"LMT")); +  } + } +  + class Asia_Dacca + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=38772000) // from 1971 Mar 26 Bangladesh Time +  return tz6 || (tz6=Ruleset.Timezone(-21600,"BDT")); +  if (ux>=-576138600) // from 1951 Sep 30 Dacca Time +  return tz5 || (tz5=Ruleset.Timezone(-21600,"DACT")); +  if (ux>=-862637400) // from 1942 Sep +  return tz3 || (tz3=Ruleset.Timezone(-23400,"BURT")); +  if (ux>=-872058600) // from 1942 May 15 +  return tz4 || (tz4=Ruleset.Timezone(-19800,"IST")); +  if (ux>=-891582800) // from 1941 Oct Burma Time +  return tz3 || (tz3=Ruleset.Timezone(-23400,"BURT")); +  if (ux>=-2524543300) // from 1890 Howrah Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-21200,"HMT")); +  return tz1 || (tz1=Ruleset.Timezone(-21700,"LMT")); +  } + } +  + class Asia_Thimbu + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=560025000) // from 1987 Oct Bhutan Time +  return tz3 || (tz3=Ruleset.Timezone(-21600,"BTT")); +  if (ux>=-706341516) // from 1947 Aug 15 +  return tz2 || (tz2=Ruleset.Timezone(-19800,"IST")); +  return tz1 || (tz1=Ruleset.Timezone(-21516,"LMT")); +  } + } +  + class Asia_Brunei + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1167636600) // from 1933 +  return tz3 || (tz3=Ruleset.Timezone(-28800,"BNT")); +  if (ux>=-1383464380) // from 1926 Mar +  return tz2 || (tz2=Ruleset.Timezone(-27000,"BNT")); +  // Bandar Seri Begawan +  return tz1 || (tz1=Ruleset.Timezone(-27580,"LMT")); +  } + } +  + class Asia_Rangoon + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-778410000) // from 1945 May 3 Myanmar Time +  return tz5 || (tz5=Ruleset.Timezone(-23400,"MMT")); +  if (ux>=-873268200) // from 1942 May +  return tz4 || (tz4=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1577946276) // from 1920 Burma Time +  return tz3 || (tz3=Ruleset.Timezone(-23400,"BURT")); +  if (ux>=-2840163880) // from 1880 Rangoon Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-23076,"RMT")); +  // or Yangon +  return tz1 || (tz1=Ruleset.Timezone(-23080,"LMT")); +  } + } +  + class Asia_Phnom_Penh + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1220428800) // from 1931 May +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-1819954800) // from 1912 May +  return tz4 || (tz4=Ruleset.Timezone(-28800,"ICT")); +  if (ux>=-1855983920) // from 1911 Mar 11 0:01 +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-2005973980) // from 1906 Jun 9 Saigon MT? +  return tz2 || (tz2=Ruleset.Timezone(-25580,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-25180,"LMT")); +  } + } +  + class Asia_Harbin + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=325956600) // from 1980 May +  return tz5 || (tz5=TZrules.PRC(-28800,"C%sT")); +  if (ux>=-115894800) // from 1966 May +  return tz2 || (tz2=Ruleset.Timezone(-30600,"HART")); +  if (ux>=-946800000) // from 1940 +  return tz4 || (tz4=Ruleset.Timezone(-32400,"HART")); +  if (ux>=-1194078600) // from 1932 Mar +  return tz3 || (tz3=Ruleset.Timezone(-28800,"CST")); +  if (ux>=-1325492804) // from 1928 Harbin Time +  return tz2 || (tz2=Ruleset.Timezone(-30600,"HART")); +  return tz1 || (tz1=Ruleset.Timezone(-30404,"LMT")); +  } + } +  + class Asia_Shanghai + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-662659200) // from 1949 +  return tz3 || (tz3=TZrules.PRC(-28800,"C%sT")); +  if (ux>=-1325491552) // from 1928 +  return tz2 || (tz2=TZrules.Shang(-28800,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-29152,"LMT")); +  } + } + constant PRC=Asia_Shanghai; +  + class Asia_Chungking + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=325962000) // from 1980 May +  return tz3 || (tz3=TZrules.PRC(-28800,"C%sT")); +  if (ux>=-1325487980) // from 1928 Chungking Time +  return tz2 || (tz2=Ruleset.Timezone(-25200,"CHUT")); +  return tz1 || (tz1=Ruleset.Timezone(-25580,"LMT")); +  } + } +  + class Asia_Urumqi + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=325965600) // from 1980 May +  return tz3 || (tz3=TZrules.PRC(-28800,"C%sT")); +  if (ux>=-1325483420) // from 1928 Urumqi Time +  return tz2 || (tz2=Ruleset.Timezone(-21600,"URUT")); +  return tz1 || (tz1=Ruleset.Timezone(-21020,"LMT")); +  } + } +  + class Asia_Kashgar + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=325969200) // from 1980 May +  return tz4 || (tz4=TZrules.PRC(-28800,"C%sT")); +  if (ux>=-946791000) // from 1940 +  return tz3 || (tz3=Ruleset.Timezone(-18000,"KAST")); +  if (ux>=-1325480636) // from 1928 Kashgar Time +  return tz2 || (tz2=Ruleset.Timezone(-19800,"KAST")); +  return tz1 || (tz1=Ruleset.Timezone(-18236,"LMT")); +  } + } +  + class Asia_Hong_Kong + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2056692996) // from 1904 Oct 30 +  return tz2 || (tz2=TZrules.HK(-28800,"HK%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-27396,"LMT")); +  } + } + constant Hongkong=Asia_Hong_Kong; +  + class Asia_Taipei + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2335248360) // from 1896 +  return tz2 || (tz2=TZrules.Taiwan(-28800,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-29160,"LMT")); +  } + } + constant ROC=Asia_Taipei; +  + class Asia_Macao + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=945676800) // from 1999 Dec 20 +  return tz3 || (tz3=TZrules.PRC(-28800,"C%sT")); +  if (ux>=-1830411260) // from 1912 return to China +  return tz2 || (tz2=TZrules.Macao(-28800,"MO%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-27260,"LMT")); +  } + } +  + class Asia_Nicosia + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=904618800) // from 1998 Sep +  return tz3 || (tz3=TZrules.EUAsia(-7200,"EE%sT")); +  if (ux>=-1518920008) // from 1921 Nov 14 +  return tz2 || (tz2=TZrules.Cyprus(-7200,"EE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-8008,"LMT")); +  } + } +  + class Asia_Tbilisi + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=857156400) // from 1997 Mar lastSun +  return tz8 || (tz8=TZrules.E_EurAsia(-14400,"GE%sT")); +  if (ux>=844146000) // from 1996 Oct lastSun +  return tz9 || (tz9=Ruleset.Timezone(-18000,"GEST")); +  if (ux>=778392000) // from 1994 Sep lastSun +  return tz8 || (tz8=TZrules.E_EurAsia(-14400,"GE%sT")); +  if (ux>=694234800) // from 1992 +  return tz7 || (tz7=TZrules.E_EurAsia(-10800,"GE%sT")); +  if (ux>=671140800) // from 1991 Apr 9 Georgia Time +  return tz6 || (tz6=TZrules.RussiaAsia(-10800,"GE%sT")); +  if (ux>=670370400) // from 1991 Mar 31 2:00s independence +  return tz5 || (tz5=Ruleset.Timezone(-14400,"TBIST")); +  if (ux>=-405140400) // from 1957 Mar +  return tz4 || (tz4=TZrules.RussiaAsia(-14400,"TBI%sT")); +  if (ux>=-1441162756) // from 1924 May 2 Tbilisi Time +  return tz3 || (tz3=Ruleset.Timezone(-10800,"TBIT")); +  if (ux>=-2840151556) // from 1880 Tbilisi Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-10756,"TBMT")); +  return tz1 || (tz1=Ruleset.Timezone(-10756,"LMT")); +  } + } +  + class Asia_Dili + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=199897200) // from 1976 May 3 East Timor Time +  return tz2 || (tz2=Ruleset.Timezone(-28800,"TPT")); +  if (ux>=-770634000) // from 1945 Aug +  return tz4 || (tz4=Ruleset.Timezone(-32400,"TPT")); +  if (ux>=-879152400) // from 1942 Feb 21 23:00 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1830414140) // from 1912 +  return tz2 || (tz2=Ruleset.Timezone(-28800,"TPT")); +  return tz1 || (tz1=Ruleset.Timezone(-30140,"LMT")); +  } + } +  + class Asia_Calcutta + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-764145000) // from 1945 Oct 15 +  return tz4 || (tz4=Ruleset.Timezone(-19800,"IST")); +  if (ux>=-862637400) // from 1942 Sep +  return tz5 || (tz5=Ruleset.Timezone(-23400,"IST")); +  if (ux>=-872058600) // from 1942 May 15 +  return tz4 || (tz4=Ruleset.Timezone(-19800,"IST")); +  if (ux>=-891582800) // from 1941 Oct Burma Time +  return tz3 || (tz3=Ruleset.Timezone(-23400,"BURT")); +  if (ux>=-2840162008) // from 1880 Howrah Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-21200,"HMT")); +  return tz1 || (tz1=Ruleset.Timezone(-21208,"LMT")); +  } + } +  + class Asia_Jakarta + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-189415800) // from 1964 +  return tz7 || (tz7=Ruleset.Timezone(-25200,"JAVT")); +  if (ux>=-620812800) // from 1950 May +  return tz4 || (tz4=Ruleset.Timezone(-27000,"JAVT")); +  if (ux>=-683883000) // from 1948 May +  return tz6 || (tz6=Ruleset.Timezone(-28800,"JAVT")); +  if (ux>=-770634000) // from 1945 Aug +  return tz4 || (tz4=Ruleset.Timezone(-27000,"JAVT")); +  if (ux>=-876641400) // from 1942 Mar 23 +  return tz5 || (tz5=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1172906400) // from 1932 Nov +  return tz4 || (tz4=Ruleset.Timezone(-27000,"JAVT")); +  if (ux>=-1451719200) // from 1923 Dec 31 23:47:12 Java Time +  return tz3 || (tz3=Ruleset.Timezone(-26400,"JAVT")); +  if (ux>=-3231299232) // from 1867 Aug 10 Jakarta +  return tz2 || (tz2=Ruleset.Timezone(-25632,"JMT")); +  return tz1 || (tz1=Ruleset.Timezone(-25632,"LMT")); +  } + } +  + class Asia_Ujung_Pandang + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-770634000) // from 1945 Aug +  return tz3 || (tz3=Ruleset.Timezone(-28800,"BORT")); +  if (ux>=-880272000) // from 1942 Feb 9 +  return tz4 || (tz4=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1172908656) // from 1932 Nov Borneo Time +  return tz3 || (tz3=Ruleset.Timezone(-28800,"BORT")); +  if (ux>=-1577951856) // from 1920 Macassar MT +  return tz2 || (tz2=Ruleset.Timezone(-28656,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(-28656,"LMT")); +  } + } +  + class Asia_Jayapura + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-189423000) // from 1964 +  return tz2 || (tz2=Ruleset.Timezone(-32400,"JAYT")); +  if (ux>=-820573200) // from 1944 +  return tz3 || (tz3=Ruleset.Timezone(-34200,"CST")); +  if (ux>=-1172913768) // from 1932 Nov Jayapura Time +  return tz2 || (tz2=Ruleset.Timezone(-32400,"JAYT")); +  return tz1 || (tz1=Ruleset.Timezone(-33768,"LMT")); +  } + } +  + class Asia_Tehran + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=284011200) // from 1979 +  return tz5 || (tz5=TZrules.Iran(-12600,"IR%sT")); +  if (ux>=247177800) // from 1977 Nov +  return tz4 || (tz4=TZrules.Iran(-14400,"IR%sT")); +  if (ux>=-757394744) // from 1946 +  return tz3 || (tz3=Ruleset.Timezone(-12600,"IRT")); +  if (ux>=-1704165944) // from 1916 Tehran Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-12344,"TMT")); +  return tz1 || (tz1=Ruleset.Timezone(-12344,"LMT")); +  } + } + constant Iran=Asia_Tehran; +  + class Asia_Baghdad + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=389048400) // from 1982 May +  return tz4 || (tz4=TZrules.Iraq(-10800,"A%sT")); +  if (ux>=-1641005856) // from 1918 +  return tz3 || (tz3=Ruleset.Timezone(-10800,"AST")); +  if (ux>=-2524532260) // from 1890 Baghdad Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-10656,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(-10660,"LMT")); +  } + } +  + class Asia_Jerusalem + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1641003640) // from 1918 +  return tz3 || (tz3=TZrules.Zion(-7200,"I%sT")); +  if (ux>=-2840149256) // from 1880 Jerusalem Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-8440,"JMT")); +  return tz1 || (tz1=Ruleset.Timezone(-8456,"LMT")); +  } + } + constant Asia_Tel_Aviv=Asia_Jerusalem; + constant Israel=Asia_Jerusalem; +  + class Asia_Tokyo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1009875600) // from 1938 +  return tz2 || (tz2=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-2335251600) // from 1896 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"CJT")); +  if (ux>=-2587712400) // from 1887 Dec 31 15:00u +  return tz2 || (tz2=Ruleset.Timezone(-32400,"JST")); +  return tz1 || (tz1=Ruleset.Timezone(-33539,"LMT")); +  } + } + constant Japan=Asia_Tokyo; +  + class Asia_Amman + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1230776624) // from 1931 +  return tz2 || (tz2=TZrules.Jordan(-7200,"EE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-8624,"LMT")); +  } + } +  + class Asia_Almaty + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695768400) // from 1992 Jan 19 2:00s +  return tz5 || (tz5=TZrules.E_EurAsia(-21600,"ALM%sT")); +  if (ux>=686091600) // from 1991 Sep 29 2:00s +  return tz2 || (tz2=Ruleset.Timezone(-18000,"ALMT")); +  if (ux>=670363200) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-21600,"ALMST")); +  if (ux>=-405147600) // from 1957 Mar +  return tz3 || (tz3=TZrules.RussiaAsia(-21600,"ALM%sT")); +  if (ux>=-1441170468) // from 1924 May 2 Alma-Ata Time +  return tz2 || (tz2=Ruleset.Timezone(-18000,"ALMT")); +  // or Alma-Ata +  return tz1 || (tz1=Ruleset.Timezone(-18468,"LMT")); +  } + } +  + class Asia_Aqtobe + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695772000) // from 1992 Jan 19 2:00s +  return tz6 || (tz6=TZrules.E_EurAsia(-18000,"AQT%sT")); +  if (ux>=686095200) // from 1991 Sep 29 2:00s Aqtobe Time +  return tz5 || (tz5=Ruleset.Timezone(-14400,"AQTT")); +  if (ux>=670366800) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-18000,"AKTST")); +  if (ux>=-405144000) // from 1957 Mar +  return tz3 || (tz3=TZrules.RussiaAsia(-18000,"AK%sT")); +  if (ux>=-1441165720) // from 1924 May 2 Aktyubinsk Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"AKT")); +  return tz1 || (tz1=Ruleset.Timezone(-13720,"LMT")); +  } + } +  + class Asia_Aqtau + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=809935200) // from 1995 Sep lastSun +  return tz7 || (tz7=TZrules.E_EurAsia(-14400,"AQT%sT")); +  if (ux>=695772000) // from 1992 Jan 19 2:00s +  return tz6 || (tz6=TZrules.E_EurAsia(-18000,"AQT%sT")); +  if (ux>=686095200) // from 1991 Sep 29 2:00s Aqtau Time +  return tz5 || (tz5=Ruleset.Timezone(-14400,"AQTT")); +  if (ux>=670366800) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-18000,"AQTST")); +  if (ux>=-405144000) // from 1957 Mar +  return tz3 || (tz3=TZrules.RussiaAsia(-18000,"SHE%sT")); +  if (ux>=-1441164064) // from 1924 May 2 Fort Shevchenko Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"SHET")); +  // or Aktau +  return tz1 || (tz1=Ruleset.Timezone(-12064,"LMT")); +  } + } +  + class Asia_Bishkek + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=683582400) // from 1991 Aug 31 2:00 Kirgizstan Time +  return tz5 || (tz5=TZrules.Kirgiz(-18000,"KG%sT")); +  if (ux>=670363200) // from 1991 Mar 31 2:00s independence +  return tz4 || (tz4=Ruleset.Timezone(-21600,"FRUST")); +  if (ux>=-1247547600) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.RussiaAsia(-21600,"FRU%sT")); +  if (ux>=-1441169904) // from 1924 May 2 Frunze Time +  return tz2 || (tz2=Ruleset.Timezone(-18000,"FRUT")); +  return tz1 || (tz1=Ruleset.Timezone(-17904,"LMT")); +  } + } +  + class Asia_Seoul + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-39515400) // from 1968 Oct +  return tz5 || (tz5=TZrules.ROK(-32400,"K%sT")); +  if (ux>=-264873600) // from 1961 Aug 10 +  return tz2 || (tz2=Ruleset.Timezone(-30600,"KST")); +  if (ux>=-498128400) // from 1954 Mar 21 +  return tz4 || (tz4=TZrules.ROK(-28800,"K%sT")); +  if (ux>=-1199262600) // from 1932 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"KST")); +  if (ux>=-1325494800) // from 1928 +  return tz2 || (tz2=Ruleset.Timezone(-30600,"KST")); +  if (ux>=-2053931400) // from 1904 Dec +  return tz3 || (tz3=Ruleset.Timezone(-32400,"KST")); +  if (ux>=-2524552072) // from 1890 +  return tz2 || (tz2=Ruleset.Timezone(-30600,"KST")); +  return tz1 || (tz1=Ruleset.Timezone(-30472,"LMT")); +  } + } + constant ROK=Asia_Seoul; +  + class Asia_Pyongyang + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-264931200) // from 1961 Aug 10 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"KST")); +  if (ux>=-498128400) // from 1954 Mar 21 +  return tz4 || (tz4=Ruleset.Timezone(-28800,"KST")); +  if (ux>=-1199262600) // from 1932 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"KST")); +  if (ux>=-1325494800) // from 1928 +  return tz2 || (tz2=Ruleset.Timezone(-30600,"KST")); +  if (ux>=-2053931400) // from 1904 Dec +  return tz3 || (tz3=Ruleset.Timezone(-32400,"KST")); +  if (ux>=-2524551780) // from 1890 +  return tz2 || (tz2=Ruleset.Timezone(-30600,"KST")); +  return tz1 || (tz1=Ruleset.Timezone(-30180,"LMT")); +  } + } +  + class Asia_Kuwait + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-631163516) // from 1950 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"AST")); +  return tz1 || (tz1=Ruleset.Timezone(-11516,"LMT")); +  } + } +  + class Asia_Vientiane + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1220428800) // from 1931 May +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-1819954800) // from 1912 May +  return tz4 || (tz4=Ruleset.Timezone(-28800,"ICT")); +  if (ux>=-1855983920) // from 1911 Mar 11 0:01 +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-2005973424) // from 1906 Jun 9 Saigon MT? +  return tz2 || (tz2=Ruleset.Timezone(-25580,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-24624,"LMT")); +  } + } +  + class Asia_Beirut + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2840149320) // from 1880 +  return tz2 || (tz2=TZrules.Lebanon(-7200,"EE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-8520,"LMT")); +  } + } +  + class Asia_Kuala_Lumpur + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=389032200) // from 1982 May Malaysia Time +  return tz7 || (tz7=Ruleset.Timezone(-28800,"MYT")); +  if (ux>=-631178400) // from 1950 +  return tz6 || (tz6=Ruleset.Timezone(-27000,"MALT")); +  if (ux>=-767869200) // from 1945 Sep 2 +  return tz4 || (tz4=Ruleset.Timezone(-26400,"MALT")); +  if (ux>=-879751200) // from 1942 Feb 15 +  return tz5 || (tz5=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1167634800) // from 1933 +  return tz4 || (tz4=Ruleset.Timezone(-26400,"MALT")); +  if (ux>=-2038200924) // from 1905 Jun Malaya Time +  return tz3 || (tz3=Ruleset.Timezone(-25200,"MALT")); +  if (ux>=-2840165208) // from 1880 Singapore Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-24924,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-24408,"LMT")); +  } + } +  + class Asia_Kuching + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=389030400) // from 1982 May +  return tz6 || (tz6=Ruleset.Timezone(-28800,"MYT")); +  if (ux>=-767869200) // from 1945 Sep 2 +  return tz5 || (tz5=Ruleset.Timezone(-28800,"BORT")); +  if (ux>=-883584000) // from 1942 +  return tz4 || (tz4=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1167636600) // from 1933 +  return tz3 || (tz3=TZrules.NBorneo(-28800,"BOR%sT")); +  if (ux>=-1383463280) // from 1926 Mar Borneo Time +  return tz2 || (tz2=Ruleset.Timezone(-27000,"BORT")); +  return tz1 || (tz1=Ruleset.Timezone(-26480,"LMT")); +  } + } +  + class Indian_Maldives + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-315636840) // from 1960 Maldives Time +  return tz3 || (tz3=Ruleset.Timezone(-18000,"MVT")); +  if (ux>=-2840158440) // from 1880 Male Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-17640,"MMT")); +  // Male +  return tz1 || (tz1=Ruleset.Timezone(-17640,"LMT")); +  } + } +  + class Asia_Hovd + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=252439200) // from 1978 +  return tz3 || (tz3=TZrules.Mongol(-25200,"HOV%sT")); +  if (ux>=-2032927596) // from 1905 Aug Hovd Time +  return tz2 || (tz2=Ruleset.Timezone(-21600,"HOVT")); +  return tz1 || (tz1=Ruleset.Timezone(-21996,"LMT")); +  } + } +  + class Asia_Ulaanbaatar + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=252435600) // from 1978 +  return tz3 || (tz3=TZrules.Mongol(-28800,"ULA%sT")); +  if (ux>=-2032931252) // from 1905 Aug Ulaanbaatar Time +  return tz2 || (tz2=Ruleset.Timezone(-25200,"ULAT")); +  return tz1 || (tz1=Ruleset.Timezone(-25652,"LMT")); +  } + } + constant Asia_Ulan_Bator=Asia_Ulaanbaatar; +  + class Asia_Katmandu + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=504901800) // from 1986 Nepal Time +  return tz3 || (tz3=Ruleset.Timezone(-20700,"NPT")); +  if (ux>=-1577943676) // from 1920 +  return tz2 || (tz2=Ruleset.Timezone(-19800,"IST")); +  return tz1 || (tz1=Ruleset.Timezone(-20476,"LMT")); +  } + } +  + class Asia_Muscat + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1577937260) // from 1920 +  return tz2 || (tz2=Ruleset.Timezone(-14400,"GST")); +  return tz1 || (tz1=Ruleset.Timezone(-14060,"LMT")); +  } + } +  + class Asia_Karachi + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=38775600) // from 1971 Mar 26 Pakistan Time +  return tz5 || (tz5=Ruleset.Timezone(-18000,"PKT")); +  if (ux>=-576135000) // from 1951 Sep 30 Karachi Time +  return tz4 || (tz4=Ruleset.Timezone(-18000,"KART")); +  if (ux>=-764145000) // from 1945 Oct 15 +  return tz2 || (tz2=Ruleset.Timezone(-19800,"IST")); +  if (ux>=-862637400) // from 1942 Sep +  return tz3 || (tz3=Ruleset.Timezone(-23400,"IST")); +  if (ux>=-1988166492) // from 1907 +  return tz2 || (tz2=Ruleset.Timezone(-19800,"IST")); +  return tz1 || (tz1=Ruleset.Timezone(-16092,"LMT")); +  } + } +  + class Asia_Gaza + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=915156000) // from 1999 +  return tz6 || (tz6=TZrules.Palestine(-7200,"EE%sT")); +  if (ux>=820461600) // from 1996 +  return tz5 || (tz5=TZrules.Jordan(-7200,"EE%sT")); +  if (ux>=-81291600) // from 1967 Jun 5 +  return tz4 || (tz4=TZrules.Zion(-7200,"I%sT")); +  if (ux>=-682639200) // from 1948 May 15 +  return tz3 || (tz3=TZrules.EgyptAsia(-7200,"EE%sT")); +  if (ux>=-2185409872) // from 1900 Oct +  return tz2 || (tz2=TZrules.Zion(-7200,"EET")); +  return tz1 || (tz1=Ruleset.Timezone(-8272,"LMT")); +  } + } +  + class Asia_Manila + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-794221200) // from 1944 Nov +  return tz3 || (tz3=TZrules.Phil(-28800,"PH%sT")); +  if (ux>=-873216000) // from 1942 May +  return tz4 || (tz4=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-2229321840) // from 1899 May 11 +  return tz3 || (tz3=TZrules.Phil(-28800,"PH%sT")); +  if (ux>=-3976157040) // from 1844 +  return tz2 || (tz2=Ruleset.Timezone(-29040,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(57360,"LMT")); +  } + } +  + class Asia_Qatar + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=76190400) // from 1972 Jun +  return tz3 || (tz3=Ruleset.Timezone(-10800,"AST")); +  if (ux>=-1577935568) // from 1920 +  return tz2 || (tz2=Ruleset.Timezone(-14400,"GST")); +  // Al Dawhah +  return tz1 || (tz1=Ruleset.Timezone(-12368,"LMT")); +  } + } +  + class Asia_Riyadh + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-631163212) // from 1950 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"AST")); +  return tz1 || (tz1=Ruleset.Timezone(-11212,"LMT")); +  } + } +  + class Asia_Singapore + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=389032200) // from 1982 May +  return tz8 || (tz8=Ruleset.Timezone(-28800,"SGT")); +  if (ux>=-138785400) // from 1965 Aug 9 Singapore Time +  return tz7 || (tz7=Ruleset.Timezone(-27000,"SGT")); +  if (ux>=-631178400) // from 1950 independence +  return tz6 || (tz6=Ruleset.Timezone(-27000,"MALT")); +  if (ux>=-767869200) // from 1945 Sep 2 +  return tz4 || (tz4=Ruleset.Timezone(-26400,"MALT")); +  if (ux>=-879751200) // from 1942 Feb 15 +  return tz5 || (tz5=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1167634800) // from 1933 +  return tz4 || (tz4=Ruleset.Timezone(-26400,"MALT")); +  if (ux>=-2038200924) // from 1905 Jun Malaya Time +  return tz3 || (tz3=Ruleset.Timezone(-25200,"MALT")); +  if (ux>=-2840165724) // from 1880 Singapore Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-24924,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-24924,"LMT")); +  } + } + constant Singapore=Asia_Singapore; +  + class Asia_Colombo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=846266400) // from 1996 Oct 26 0:30 +  return tz7 || (tz7=Ruleset.Timezone(-21600,"LKT")); +  if (ux>=832962600) // from 1996 May 25 0:00 +  return tz6 || (tz6=Ruleset.Timezone(-23400,"LKT")); +  if (ux>=-764051400) // from 1945 Oct 16 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-19800,"IST")); +  if (ux>=-862639200) // from 1942 Sep +  return tz5 || (tz5=Ruleset.Timezone(-23400,"IST")); +  if (ux>=-883287000) // from 1942 Jan 5 +  return tz4 || (tz4=Ruleset.Timezone(-21600,"IHST")); +  if (ux>=-2019705572) // from 1906 +  return tz3 || (tz3=Ruleset.Timezone(-19800,"IST")); +  if (ux>=-2840159964) // from 1880 Moratuwa Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-19172,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(-19164,"LMT")); +  } + } +  + class Asia_Damascus + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1577931912) // from 1920 +  return tz2 || (tz2=TZrules.Syria(-7200,"EE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-8712,"LMT")); +  } + } +  + class Asia_Dushanbe + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=684363600) // from 1991 Sep 9 2:00s Tajikistan Time +  return tz5 || (tz5=Ruleset.Timezone(-18000,"TJT")); +  if (ux>=670363200) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-21600,"DUSST")); +  if (ux>=-1247547600) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.RussiaAsia(-21600,"DUS%sT")); +  if (ux>=-1441168512) // from 1924 May 2 Dushanbe Time +  return tz2 || (tz2=Ruleset.Timezone(-18000,"DUST")); +  return tz1 || (tz1=Ruleset.Timezone(-16512,"LMT")); +  } + } +  + class Asia_Bangkok + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1570084924) // from 1920 Apr +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-2840164924) // from 1880 Bangkok Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-24124,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(-24124,"LMT")); +  } + } +  + class Asia_Ashkhabad + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695800800) // from 1992 Jan 19 2:00 +  return tz6 || (tz6=Ruleset.Timezone(-18000,"TMT")); +  if (ux>=688536000) // from 1991 Oct 27 +  return tz5 || (tz5=TZrules.RussiaAsia(-14400,"TM%sT")); +  if (ux>=670402800) // from 1991 Mar 31 2:00 independence +  return tz4 || (tz4=TZrules.RussiaAsia(-14400,"ASH%sT")); +  if (ux>=-1247544000) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.RussiaAsia(-18000,"ASH%sT")); +  if (ux>=-1441166012) // from 1924 May 2 Ashkhabad Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"ASHT")); +  // or Ashgabat +  return tz1 || (tz1=Ruleset.Timezone(-14012,"LMT")); +  } + } +  + class Asia_Dubai + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1577936472) // from 1920 +  return tz2 || (tz2=Ruleset.Timezone(-14400,"GST")); +  return tz1 || (tz1=Ruleset.Timezone(-13272,"LMT")); +  } + } +  + class Asia_Samarkand + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=725864400) // from 1993 +  return tz8 || (tz8=Ruleset.Timezone(-18000,"UZT")); +  if (ux>=694242000) // from 1992 +  return tz7 || (tz7=TZrules.RussiaAsia(-18000,"UZ%sT")); +  if (ux>=683704800) // from 1991 Sep 1 +  return tz7 || (tz7=TZrules.RussiaAsia(-18000,"UZ%sT")); +  if (ux>=670406400) // from 1991 Mar 31 2:00 independence +  return tz6 || (tz6=TZrules.RussiaAsia(-18000,"TAS%sT")); +  if (ux>=370720800) // from 1981 Oct 1 Tashkent Time +  return tz5 || (tz5=TZrules.RussiaAsia(-21600,"TAS%sT")); +  if (ux>=354913200) // from 1981 Apr 1 +  return tz4 || (tz4=Ruleset.Timezone(-21600,"SAMST")); +  if (ux>=-1247544000) // from 1930 Jun 21 +  return tz3 || (tz3=Ruleset.Timezone(-18000,"SAMT")); +  if (ux>=-1441168032) // from 1924 May 2 Samarkand Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"SAMT")); +  return tz1 || (tz1=Ruleset.Timezone(-16032,"LMT")); +  } + } +  + class Asia_Tashkent + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=725864400) // from 1993 +  return tz6 || (tz6=Ruleset.Timezone(-18000,"UZT")); +  if (ux>=694242000) // from 1992 +  return tz5 || (tz5=TZrules.RussiaAsia(-18000,"UZ%sT")); +  if (ux>=683704800) // from 1991 Sep 1 +  return tz5 || (tz5=TZrules.RussiaAsia(-18000,"UZ%sT")); +  if (ux>=670363200) // from 1991 Mar 31 2:00s independence +  return tz4 || (tz4=TZrules.RussiaAsia(-18000,"TAS%sT")); +  if (ux>=-1247547600) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.RussiaAsia(-21600,"TAS%sT")); +  if (ux>=-1441168632) // from 1924 May 2 Tashkent Time +  return tz2 || (tz2=Ruleset.Timezone(-18000,"TAST")); +  return tz1 || (tz1=Ruleset.Timezone(-16632,"LMT")); +  } + } +  + class Asia_Saigon + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1220428800) // from 1931 May +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-1819954800) // from 1912 May +  return tz4 || (tz4=Ruleset.Timezone(-28800,"ICT")); +  if (ux>=-1855983920) // from 1911 Mar 11 0:01 +  return tz3 || (tz3=Ruleset.Timezone(-25200,"ICT")); +  if (ux>=-2005974400) // from 1906 Jun 9 Saigon MT? +  return tz2 || (tz2=Ruleset.Timezone(-25580,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-25600,"LMT")); +  } + } +  + class Asia_Aden + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-631162848) // from 1950 +  return tz2 || (tz2=Ruleset.Timezone(-10800,"AST")); +  return tz1 || (tz1=Ruleset.Timezone(-10848,"LMT")); +  } + } +  + class Australia_Darwin + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2230189200) // from 1899 May +  return tz3 || (tz3=TZrules.Aus(-34200,"CST")); +  if (ux>=-2364108200) // from 1895 Feb +  return tz2 || (tz2=Ruleset.Timezone(-32400,"CST")); +  return tz1 || (tz1=Ruleset.Timezone(-31400,"LMT")); +  } + } + constant Australia_North=Australia_Darwin; +  + class Australia_Perth + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=699375600) // from 1992 Mar Sun>=1 2:00s +  return tz3 || (tz3=Ruleset.Timezone(-28800,"WST")); +  if (ux>=690314400) // from 1991 Nov 17 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-32400,"WST")); +  if (ux>=446914800) // from 1984 Mar Sun>=1 2:00s +  return tz3 || (tz3=Ruleset.Timezone(-28800,"WST")); +  if (ux>=433785600) // from 1983 Oct lastSun 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-32400,"WST")); +  if (ux>=162831600) // from 1975 Mar Sun>=1 2:00s +  return tz3 || (tz3=Ruleset.Timezone(-28800,"WST")); +  if (ux>=149788800) // from 1974 Oct lastSun 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-32400,"WST")); +  if (ux>=-836409600) // from 1943 Jul +  return tz3 || (tz3=Ruleset.Timezone(-28800,"WST")); +  if (ux>=-2337925404) // from 1895 Dec +  return tz2 || (tz2=TZrules.Aus(-28800,"WST")); +  return tz1 || (tz1=Ruleset.Timezone(-27804,"LMT")); +  } + } + constant Australia_West=Australia_Perth; +  + class Australia_Brisbane + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=31572000) // from 1971 +  return tz3 || (tz3=TZrules.AQ(-36000,"EST")); +  if (ux>=-2366791928) // from 1895 +  return tz2 || (tz2=TZrules.Aus(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-36728,"LMT")); +  } + } + constant Australia_Queensland=Australia_Brisbane; +  + class Australia_Lindeman + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=709984800) // from 1992 Jul +  return tz4 || (tz4=TZrules.Holiday(-36000,"EST")); +  if (ux>=31572000) // from 1971 +  return tz3 || (tz3=TZrules.AQ(-36000,"EST")); +  if (ux>=-2366790956) // from 1895 +  return tz2 || (tz2=TZrules.Aus(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-35756,"LMT")); +  } + } +  + class Australia_Adelaide + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=31570200) // from 1971 +  return tz4 || (tz4=TZrules.AS(-34200,"CST")); +  if (ux>=-2230189200) // from 1899 May +  return tz3 || (tz3=TZrules.Aus(-34200,"CST")); +  if (ux>=-2364110060) // from 1895 Feb +  return tz2 || (tz2=Ruleset.Timezone(-32400,"CST")); +  return tz1 || (tz1=Ruleset.Timezone(-33260,"LMT")); +  } + } + constant Australia_South=Australia_Adelaide; +  + class Australia_Hobart + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-94658400) // from 1967 +  return tz5 || (tz5=TZrules.AT(-36000,"EST")); +  if (ux>=-1669892400) // from 1917 Feb +  return tz4 || (tz4=TZrules.Aus(-36000,"EST")); +  if (ux>=-1680508800) // from 1916 Oct 1 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-39600,"EST")); +  if (ux>=-2345795356) // from 1895 Sep +  return tz2 || (tz2=Ruleset.Timezone(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-35356,"LMT")); +  } + } + constant Australia_Tasmania=Australia_Hobart; +  + class Australia_Melbourne + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=31572000) // from 1971 +  return tz3 || (tz3=TZrules.AV(-36000,"EST")); +  if (ux>=-2364111592) // from 1895 Feb +  return tz2 || (tz2=TZrules.Aus(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-34792,"LMT")); +  } + } + constant Australia_Victoria=Australia_Melbourne; +  + class Australia_Sydney + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=31572000) // from 1971 +  return tz3 || (tz3=TZrules.AN(-36000,"EST")); +  if (ux>=-2364113092) // from 1895 Feb +  return tz2 || (tz2=TZrules.Aus(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-36292,"LMT")); +  } + } + constant Australia_ACT=Australia_Sydney; + constant Australia_Canberra=Australia_Sydney; + constant Australia_NSW=Australia_Sydney; +  + class Australia_Broken_Hill + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=946722600) // from 2000 +  return tz6 || (tz6=TZrules.AS(-34200,"CST")); +  if (ux>=31570200) // from 1971 +  return tz5 || (tz5=TZrules.AN(-34200,"CST")); +  if (ux>=-2230189200) // from 1899 May +  return tz4 || (tz4=TZrules.Aus(-34200,"CST")); +  if (ux>=-2314951200) // from 1896 Aug 23 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"CST")); +  if (ux>=-2364110748) // from 1895 Feb +  return tz2 || (tz2=Ruleset.Timezone(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-33948,"LMT")); +  } + } + constant Australia_Yancowinna=Australia_Broken_Hill; +  + class Australia_Lord_Howe + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=352216800) // from 1981 Mar +  return tz3 || (tz3=TZrules.LH(-37800,"LHST")); +  if (ux>=-2364114980) // from 1895 Feb +  return tz2 || (tz2=Ruleset.Timezone(-36000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(-38180,"LMT")); +  } + } + constant Australia_LHI=Australia_Lord_Howe; +  + class Indian_Christmas + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2364102172) // from 1895 Feb Christmas Island Time +  return tz2 || (tz2=Ruleset.Timezone(-25200,"CXT")); +  return tz1 || (tz1=Ruleset.Timezone(-25372,"LMT")); +  } + } +  + class Pacific_Rarotonga + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=279714600) // from 1978 Nov 12 +  return tz3 || (tz3=TZrules.Cook(36000,"CK%sT")); +  if (ux>=-2177414456) // from 1901 Cook Is Time +  return tz2 || (tz2=Ruleset.Timezone(37800,"CKT")); +  // Avarua +  return tz1 || (tz1=Ruleset.Timezone(38344,"LMT")); +  } + } +  + class Pacific_Fiji + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1709985220) // from 1915 Oct 26 Fiji Time +  return tz2 || (tz2=TZrules.Fiji(-43200,"FJ%sT")); +  // Suva +  return tz1 || (tz1=Ruleset.Timezone(-42820,"LMT")); +  } + } +  + class Pacific_Gambier + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1806678012) // from 1912 Oct Gambier Time +  return tz2 || (tz2=Ruleset.Timezone(32400,"GAMT")); +  // Rikitea +  return tz1 || (tz1=Ruleset.Timezone(32388,"LMT")); +  } + } +  + class Pacific_Marquesas + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1806676920) // from 1912 Oct Marquesas Time +  return tz2 || (tz2=Ruleset.Timezone(34200,"MART")); +  return tz1 || (tz1=Ruleset.Timezone(33480,"LMT")); +  } + } +  + class Pacific_Tahiti + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1806674504) // from 1912 Oct Tahiti Time +  return tz2 || (tz2=Ruleset.Timezone(36000,"TAHT")); +  // Papeete +  return tz1 || (tz1=Ruleset.Timezone(35896,"LMT")); +  } + } +  + class Pacific_Guam + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177487540) // from 1901 +  return tz2 || (tz2=Ruleset.Timezone(-36000,"GST")); +  // Agana +  return tz1 || (tz1=Ruleset.Timezone(-34740,"LMT")); +  } + } +  + class Pacific_Tarawa + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177494324) // from 1901 Gilbert Is Time +  return tz2 || (tz2=Ruleset.Timezone(-43200,"GILT")); +  // Bairiki +  return tz1 || (tz1=Ruleset.Timezone(-41524,"LMT")); +  } + } +  + class Pacific_Enderbury + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=788958000) // from 1995 +  return tz4 || (tz4=Ruleset.Timezone(-46800,"PHOT")); +  if (ux>=307627200) // from 1979 Oct +  return tz3 || (tz3=Ruleset.Timezone(39600,"PHOT")); +  if (ux>=-2177411740) // from 1901 Phoenix Is Time +  return tz2 || (tz2=Ruleset.Timezone(43200,"PHOT")); +  return tz1 || (tz1=Ruleset.Timezone(41060,"LMT")); +  } + } +  + class Pacific_Kiritimati + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=788954400) // from 1995 +  return tz4 || (tz4=Ruleset.Timezone(-50400,"LINT")); +  if (ux>=307622400) // from 1979 Oct +  return tz3 || (tz3=Ruleset.Timezone(36000,"LINT")); +  if (ux>=-2177415040) // from 1901 Line Is Time +  return tz2 || (tz2=Ruleset.Timezone(38400,"LINT")); +  return tz1 || (tz1=Ruleset.Timezone(37760,"LMT")); +  } + } +  + class Pacific_Saipan + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-7981200) // from 1969 Oct +  return tz3 || (tz3=Ruleset.Timezone(-36000,"MPT")); +  if (ux>=-2177487780) // from 1901 N Mariana Is Time +  return tz2 || (tz2=Ruleset.Timezone(-32400,"MPT")); +  return tz1 || (tz1=Ruleset.Timezone(-34980,"LMT")); +  } + } +  + class Pacific_Majuro + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-7988400) // from 1969 Oct +  return tz3 || (tz3=Ruleset.Timezone(-43200,"MHT")); +  if (ux>=-2177493888) // from 1901 Marshall Islands Time +  return tz2 || (tz2=Ruleset.Timezone(-39600,"MHT")); +  return tz1 || (tz1=Ruleset.Timezone(-41088,"LMT")); +  } + } +  + class Pacific_Kwajalein + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=745848000) // from 1993 Aug 20 +  return tz4 || (tz4=Ruleset.Timezone(-43200,"MHT")); +  if (ux>=-7988400) // from 1969 Oct Kwajalein Time +  return tz3 || (tz3=Ruleset.Timezone(43200,"KWAT")); +  if (ux>=-2177492960) // from 1901 +  return tz2 || (tz2=Ruleset.Timezone(-39600,"MHT")); +  return tz1 || (tz1=Ruleset.Timezone(-40160,"LMT")); +  } + } + constant Kwajalein=Pacific_Kwajalein; +  + class Pacific_Yap + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-7981200) // from 1969 Oct +  return tz3 || (tz3=Ruleset.Timezone(-36000,"YAPT")); +  if (ux>=-2177485952) // from 1901 Yap Time +  return tz2 || (tz2=Ruleset.Timezone(-32400,"YAPT")); +  // Colonia +  return tz1 || (tz1=Ruleset.Timezone(-33152,"LMT")); +  } + } +  + class Pacific_Truk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177489228) // from 1901 Truk Time +  return tz2 || (tz2=Ruleset.Timezone(-36000,"TRUT")); +  return tz1 || (tz1=Ruleset.Timezone(-36428,"LMT")); +  } + } +  + class Pacific_Ponape + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177490772) // from 1901 Ponape Time +  return tz2 || (tz2=Ruleset.Timezone(-39600,"PONT")); +  // Kolonia +  return tz1 || (tz1=Ruleset.Timezone(-37972,"LMT")); +  } + } +  + class Pacific_Kosrae + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=915105600) // from 1999 +  return tz2 || (tz2=Ruleset.Timezone(-39600,"KOST")); +  if (ux>=-7988400) // from 1969 Oct +  return tz3 || (tz3=Ruleset.Timezone(-43200,"KOST")); +  if (ux>=-2177491916) // from 1901 Kosrae Time +  return tz2 || (tz2=Ruleset.Timezone(-39600,"KOST")); +  return tz1 || (tz1=Ruleset.Timezone(-39116,"LMT")); +  } + } +  + class Pacific_Nauru + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=294323400) // from 1979 May +  return tz4 || (tz4=Ruleset.Timezone(-43200,"NRT")); +  if (ux>=-800960400) // from 1944 Aug 15 +  return tz2 || (tz2=Ruleset.Timezone(-41400,"NRT")); +  if (ux>=-877347000) // from 1942 Mar 15 +  return tz3 || (tz3=Ruleset.Timezone(-32400,"JST")); +  if (ux>=-1545131260) // from 1921 Jan 15 Nauru Time +  return tz2 || (tz2=Ruleset.Timezone(-41400,"NRT")); +  // Uaobe +  return tz1 || (tz1=Ruleset.Timezone(-40060,"LMT")); +  } + } +  + class Pacific_Noumea + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1829387148) // from 1912 Jan 13 +  return tz2 || (tz2=TZrules.NC(-39600,"NC%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-39948,"LMT")); +  } + } +  + class Pacific_Auckland + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-923221800) // from 1940 Sep 29 2:00 +  return tz3 || (tz3=TZrules.NZ(-43200,"NZ%sT")); +  if (ux>=-3218873944) // from 1868 +  return tz2 || (tz2=TZrules.NZ(-41400,"NZ%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-41944,"LMT")); +  } + } + constant NZ=Pacific_Auckland; +  + class Pacific_Niue + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=276089400) // from 1978 Oct 1 +  return tz4 || (tz4=Ruleset.Timezone(39600,"NUT")); +  if (ux>=-599575200) // from 1951 +  return tz3 || (tz3=Ruleset.Timezone(41400,"NUT")); +  if (ux>=-2177412020) // from 1901 Niue Time +  return tz2 || (tz2=Ruleset.Timezone(40800,"NUT")); +  // Alofi +  return tz1 || (tz1=Ruleset.Timezone(40780,"LMT")); +  } + } +  + class Pacific_Norfolk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-599656320) // from 1951 Norfolk Time +  return tz3 || (tz3=Ruleset.Timezone(-41400,"NFT")); +  if (ux>=-2177493112) // from 1901 Norfolk Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-40320,"NMT")); +  // Kingston +  return tz1 || (tz1=Ruleset.Timezone(-40312,"LMT")); +  } + } +  + class Pacific_Palau + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177485076) // from 1901 Palau Time +  return tz2 || (tz2=Ruleset.Timezone(-32400,"PWT")); +  // Koror +  return tz1 || (tz1=Ruleset.Timezone(-32276,"LMT")); +  } + } +  + class Pacific_Port_Moresby + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2366790520) // from 1895 Papua New Guinea Time +  return tz3 || (tz3=Ruleset.Timezone(-36000,"PGT")); +  if (ux>=-2840176120) // from 1880 Port Moresby Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-35320,"PMMT")); +  return tz1 || (tz1=Ruleset.Timezone(-35320,"LMT")); +  } + } +  + class Pacific_Pitcairn + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=893665800) // from 1998 Apr 27 00:00 Pitcairn Standard Time +  return tz3 || (tz3=Ruleset.Timezone(28800,"PST")); +  if (ux>=-2177421580) // from 1901 +  return tz2 || (tz2=Ruleset.Timezone(30600,"PNT")); +  // Adamstown +  return tz1 || (tz1=Ruleset.Timezone(31220,"LMT")); +  } + } +  + class Pacific_Pago_Pago + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=439038000) // from 1983 Nov 30 S=Samoa +  return tz6 || (tz6=Ruleset.Timezone(39600,"SST")); +  if (ux>=-86878800) // from 1967 Apr B=Bering +  return tz5 || (tz5=Ruleset.Timezone(39600,"BST")); +  if (ux>=-631110600) // from 1950 N=Nome +  return tz4 || (tz4=Ruleset.Timezone(39600,"NST")); +  if (ux>=-1861879032) // from 1911 Samoa Time +  return tz3 || (tz3=Ruleset.Timezone(41400,"SAMT")); +  if (ux>=-2855738232) // from 1879 Jul 5 +  return tz2 || (tz2=Ruleset.Timezone(40968,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(-45432,"LMT")); +  } + } + constant Pacific_Samoa=Pacific_Pago_Pago; + constant US_Samoa=Pacific_Pago_Pago; +  + class Pacific_Apia + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-631110600) // from 1950 W Samoa Time +  return tz4 || (tz4=Ruleset.Timezone(39600,"WST")); +  if (ux>=-1861878784) // from 1911 Samoa Time +  return tz3 || (tz3=Ruleset.Timezone(41400,"SAMT")); +  if (ux>=-2855737984) // from 1879 Jul 5 +  return tz2 || (tz2=Ruleset.Timezone(41216,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(-45184,"LMT")); +  } + } +  + class Pacific_Guadalcanal + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1806748788) // from 1912 Oct Solomon Is Time +  return tz2 || (tz2=Ruleset.Timezone(-39600,"SBT")); +  // Honiara +  return tz1 || (tz1=Ruleset.Timezone(-38388,"LMT")); +  } + } +  + class Pacific_Fakaofo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177411704) // from 1901 Tokelau Time +  return tz2 || (tz2=Ruleset.Timezone(36000,"TKT")); +  return tz1 || (tz1=Ruleset.Timezone(41096,"LMT")); +  } + } +  + class Pacific_Tongatapu + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=915102000) // from 1999 +  return tz4 || (tz4=TZrules.Tonga(-46800,"TO%sT")); +  if (ux>=-915193200) // from 1941 +  return tz3 || (tz3=Ruleset.Timezone(-46800,"TOT")); +  if (ux>=-2177497160) // from 1901 Tonga Time +  return tz2 || (tz2=Ruleset.Timezone(-44400,"TOT")); +  return tz1 || (tz1=Ruleset.Timezone(-44360,"LMT")); +  } + } +  + class Pacific_Funafuti + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177495812) // from 1901 Tuvalu Time +  return tz2 || (tz2=Ruleset.Timezone(-43200,"TVT")); +  return tz1 || (tz1=Ruleset.Timezone(-43012,"LMT")); +  } + } +  + class Pacific_Midway + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=439038000) // from 1983 Nov 30 S=Samoa +  return tz4 || (tz4=Ruleset.Timezone(39600,"SST")); +  if (ux>=-86878800) // from 1967 Apr B=Bering +  return tz3 || (tz3=Ruleset.Timezone(39600,"BST")); +  if (ux>=-2177410232) // from 1901 N=Nome +  return tz2 || (tz2=Ruleset.Timezone(39600,"NST")); +  return tz1 || (tz1=Ruleset.Timezone(42568,"LMT")); +  } + } +  + class Pacific_Wake + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177492788) // from 1901 Wake Time +  return tz2 || (tz2=Ruleset.Timezone(-43200,"WAKT")); +  return tz1 || (tz1=Ruleset.Timezone(-39988,"LMT")); +  } + } +  + class Pacific_Efate + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1829387596) // from 1912 Jan 13 Vanuatu Time +  return tz2 || (tz2=TZrules.Vanuatu(-39600,"VU%sT")); +  // Vila +  return tz1 || (tz1=Ruleset.Timezone(-40396,"LMT")); +  } + } +  + class Pacific_Wallis + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2177496920) // from 1901 Wallis & Futuna Time +  return tz2 || (tz2=Ruleset.Timezone(-43200,"WFT")); +  return tz1 || (tz1=Ruleset.Timezone(-44120,"LMT")); +  } + } +  + class Europe_London + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=820454400) // from 1996 +  return tz4 || (tz4=TZrules.EU(0,"GMT/BST")); +  if (ux>=57722400) // from 1971 Oct 31 2:00u +  return tz2 || (tz2=TZrules.GB_Eire(0,"%s")); +  if (ux>=-37234800) // from 1968 Oct 27 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"BST")); +  if (ux>=-3852662325) // from 1847 Dec 1 +  return tz2 || (tz2=TZrules.GB_Eire(0,"%s")); +  return tz1 || (tz1=Ruleset.Timezone(75,"LMT")); +  } + } + constant GB=Europe_London; + constant GB_Eire=Europe_London; +  + class Europe_Belfast + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=820454400) // from 1996 +  return tz6 || (tz6=TZrules.EU(0,"GMT/BST")); +  if (ux>=57722400) // from 1971 Oct 31 2:00u +  return tz4 || (tz4=TZrules.GB_Eire(0,"%s")); +  if (ux>=-37234800) // from 1968 Oct 27 +  return tz5 || (tz5=Ruleset.Timezone(-3600,"BST")); +  if (ux>=-1680471279) // from 1916 Oct 1 2:00s +  return tz4 || (tz4=TZrules.GB_Eire(0,"%s")); +  if (ux>=-1691962479) // from 1916 May 21 2:00 Irish Summer Time +  return tz3 || (tz3=Ruleset.Timezone(-2079,"IST")); +  if (ux>=-2821649780) // from 1880 Aug 2 Dublin MT +  return tz2 || (tz2=Ruleset.Timezone(1521,"DMT")); +  return tz1 || (tz1=Ruleset.Timezone(1420,"LMT")); +  } + } +  + class Europe_Dublin + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=820454400) // from 1996 +  return tz8 || (tz8=TZrules.EU(0,"GMT/IST")); +  if (ux>=57722400) // from 1971 Oct 31 2:00u +  return tz5 || (tz5=TZrules.GB_Eire(0,"GMT/IST")); +  if (ux>=-37234800) // from 1968 Oct 27 +  return tz6 || (tz6=Ruleset.Timezone(-3600,"IST")); +  if (ux>=-684972000) // from 1948 Apr 18 2:00 +  return tz5 || (tz5=TZrules.GB_Eire(0,"GMT/IST")); +  if (ux>=-699490800) // from 1947 Nov 2 2:00 +  return tz7 || (tz7=Ruleset.Timezone(0,"GMT")); +  if (ux>=-719445600) // from 1947 Mar 16 2:00 +  return tz6 || (tz6=Ruleset.Timezone(-3600,"IST")); +  if (ux>=-733359600) // from 1946 Oct 6 2:00 +  return tz7 || (tz7=Ruleset.Timezone(0,"GMT")); +  if (ux>=-942012000) // from 1940 Feb 25 2:00 +  return tz6 || (tz6=Ruleset.Timezone(-3600,"IST")); +  if (ux>=-1517011200) // from 1921 Dec 6 +  return tz5 || (tz5=TZrules.GB_Eire(0,"GMT/IST")); +  if (ux>=-1680471279) // from 1916 Oct 1 2:00s independence +  return tz4 || (tz4=TZrules.GB_Eire(0,"%s")); +  if (ux>=-1691962479) // from 1916 May 21 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-2079,"IST")); +  if (ux>=-2821649679) // from 1880 Aug 2 Dublin MT +  return tz2 || (tz2=Ruleset.Timezone(1521,"DMT")); +  return tz1 || (tz1=Ruleset.Timezone(1521,"LMT")); +  } + } + constant Eire=Europe_Dublin; +  + class Europe_Tirane + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=457495200) // from 1984 Jul +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-932346000) // from 1940 Jun 16 +  return tz3 || (tz3=TZrules.Albania(-3600,"CE%sT")); +  if (ux>=-1767230360) // from 1914 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  return tz1 || (tz1=Ruleset.Timezone(-4760,"LMT")); +  } + } +  + class Europe_Andorra + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=481078800) // from 1985 Mar 31 2:00 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-733881600) // from 1946 Sep 30 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-2177453164) // from 1901 +  return tz2 || (tz2=Ruleset.Timezone(0,"WET")); +  return tz1 || (tz1=Ruleset.Timezone(-364,"LMT")); +  } + } +  + class Europe_Vienna + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=347158800) // from 1981 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-781045200) // from 1945 Apr 2 2:00 +  return tz3 || (tz3=TZrules.Austria(-3600,"CE%sT")); +  if (ux>=-938898000) // from 1940 Apr 1 2:00 +  return tz2 || (tz2=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1626634800) // from 1918 Jun 16 3:00 +  return tz3 || (tz3=TZrules.Austria(-3600,"CE%sT")); +  if (ux>=-2422055120) // from 1893 Apr +  return tz2 || (tz2=TZrules.C_Eur(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-3920,"LMT")); +  } + } +  + class Europe_Minsk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=717544800) // from 1992 Sep 27 0:00s +  return tz8 || (tz8=TZrules.Russia(-7200,"EE%sT")); +  if (ux>=701820000) // from 1992 Mar 29 0:00s +  return tz7 || (tz7=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=686102400) // from 1991 Sep 29 2:00s +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=670374000) // from 1991 Mar 31 2:00s +  return tz7 || (tz7=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=631162800) // from 1990 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-804636000) // from 1944 Jul 3 +  return tz6 || (tz6=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-899780400) // from 1941 Jun 28 +  return tz5 || (tz5=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1247536800) // from 1930 Jun 21 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1441158600) // from 1924 May 2 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-2840147416) // from 1880 Minsk Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-6600,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(-6616,"LMT")); +  } + } +  + class Europe_Brussels + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=220928400) // from 1977 +  return tz8 || (tz8=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-799279200) // from 1944 Sep 3 +  return tz7 || (tz7=TZrules.Belgium(-3600,"CE%sT")); +  if (ux>=-934668000) // from 1940 May 20 2:00s +  return tz5 || (tz5=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1613826000) // from 1918 Nov 11 11:00u +  return tz6 || (tz6=TZrules.Belgium(0,"WE%sT")); +  if (ux>=-1693702800) // from 1916 May 1 0:00 +  return tz5 || (tz5=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1740355200) // from 1914 Nov 8 +  return tz4 || (tz4=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-2450953050) // from 1892 May 1 12:00 +  return tz3 || (tz3=Ruleset.Timezone(0,"WET")); +  if (ux>=-2840141850) // from 1880 Brussels MT +  return tz2 || (tz2=Ruleset.Timezone(-1050,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(-1050,"LMT")); +  } + } +  + class Europe_Sofia + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=852084000) // from 1997 +  return tz8 || (tz8=TZrules.EU(-7200,"EE%sT")); +  if (ux>=662695200) // from 1991 +  return tz7 || (tz7=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=401864400) // from 1982 Sep 26 2:00 +  return tz6 || (tz6=TZrules.C_Eur(-7200,"EE%sT")); +  if (ux>=291762000) // from 1979 Mar 31 23:00 +  return tz5 || (tz5=TZrules.Bulg(-7200,"EE%sT")); +  if (ux>=-781041600) // from 1945 Apr 2 3:00 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-857257200) // from 1942 Nov 2 3:00 +  return tz4 || (tz4=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2369527016) // from 1894 Nov 30 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-2840146396) // from 1880 Istanbul MT? +  return tz2 || (tz2=Ruleset.Timezone(-7016,"IMT")); +  return tz1 || (tz1=Ruleset.Timezone(-5596,"LMT")); +  } + } +  + class Europe_Prague + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=284000400) // from 1979 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-798073200) // from 1944 Sep 17 2:00s +  return tz4 || (tz4=TZrules.Czech(-3600,"CE%sT")); +  if (ux>=-2469401864) // from 1891 Oct +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-3786829064) // from 1850 Prague Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-3464,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(-3464,"LMT")); +  } + } + constant Europe_Bratislava=Europe_Prague; +  + class Europe_Copenhagen + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=315536400) // from 1980 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-781045200) // from 1945 Apr 2 2:00 +  return tz3 || (tz3=TZrules.Denmark(-3600,"CE%sT")); +  if (ux>=-857257200) // from 1942 Nov 2 2:00s +  return tz4 || (tz4=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2390518220) // from 1894 Apr +  return tz3 || (tz3=TZrules.Denmark(-3600,"CE%sT")); +  if (ux>=-2524524620) // from 1890 Copenhagen Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-3020,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(-3020,"LMT")); +  } + } +  + class Atlantic_Faeroe + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=347155200) // from 1981 +  return tz3 || (tz3=TZrules.EU(0,"WE%sT")); +  if (ux>=-1955748776) // from 1908 Jan 11 +  return tz2 || (tz2=Ruleset.Timezone(0,"WET")); +  // Torshavn +  return tz1 || (tz1=Ruleset.Timezone(1624,"LMT")); +  } + } +  + class America_Scoresbysund + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=354664800) // from 1981 Mar 29 +  return tz4 || (tz4=TZrules.EU(3600,"EG%sT")); +  if (ux>=323841600) // from 1980 Apr 6 2:00 +  return tz3 || (tz3=TZrules.C_Eur(7200,"CG%sT")); +  if (ux>=-1686090660) // from 1916 Jul 28 +  return tz2 || (tz2=Ruleset.Timezone(7200,"CGT")); +  // Ittoqqortoormit +  return tz1 || (tz1=Ruleset.Timezone(5340,"LMT")); +  } + } +  + class America_Godthab + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=323845200) // from 1980 Apr 6 2:00 +  return tz3 || (tz3=TZrules.EU(10800,"WG%sT")); +  if (ux>=-1686083584) // from 1916 Jul 28 +  return tz2 || (tz2=Ruleset.Timezone(10800,"WGT")); +  // Nuuk +  return tz1 || (tz1=Ruleset.Timezone(12416,"LMT")); +  } + } +  + class America_Thule + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1686079492) // from 1916 Jul 28 +  return tz2 || (tz2=TZrules.Thule(14400,"A%sT")); +  // Pituffik +  return tz1 || (tz1=Ruleset.Timezone(16508,"LMT")); +  } + } +  + class Europe_Tallinn + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=941421600) // from 1999 Nov 1 +  return tz4 || (tz4=Ruleset.Timezone(-7200,"EET")); +  if (ux>=906433200) // from 1998 Sep 22 +  return tz9 || (tz9=TZrules.EU(-7200,"EE%sT")); +  if (ux>=622598400) // from 1989 Sep 24 2:00s +  return tz8 || (tz8=TZrules.C_Eur(-7200,"EE%sT")); +  if (ux>=606870000) // from 1989 Mar 26 2:00s +  return tz7 || (tz7=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=-797637600) // from 1944 Sep 22 +  return tz6 || (tz6=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-892954800) // from 1941 Sep 15 +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-927943200) // from 1940 Aug 6 +  return tz5 || (tz5=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1535938740) // from 1921 May +  return tz4 || (tz4=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-1593817200) // from 1919 Jul +  return tz2 || (tz2=Ruleset.Timezone(-5940,"TMT")); +  if (ux>=-1638322740) // from 1918 Feb +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2840146740) // from 1880 Tallinn Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-5940,"TMT")); +  return tz1 || (tz1=Ruleset.Timezone(-5940,"LMT")); +  } + } +  + class Europe_Helsinki + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=354686400) // from 1981 Mar 29 2:00 +  return tz4 || (tz4=TZrules.EU(-7200,"EE%sT")); +  if (ux>=-1535938792) // from 1921 May +  return tz3 || (tz3=TZrules.Finland(-7200,"EE%sT")); +  if (ux>=-2890258792) // from 1878 May 31 Helsinki Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-5992,"HMT")); +  return tz1 || (tz1=Ruleset.Timezone(-5992,"LMT")); +  } + } +  + class Europe_Paris + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=220928400) // from 1977 +  return tz6 || (tz6=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-766609200) // from 1945 Sep 16 3:00 +  return tz5 || (tz5=TZrules.France(-3600,"CE%sT")); +  if (ux>=-800056800) // from 1944 Aug 25 +  return tz3 || (tz3=TZrules.France(0,"WE%sT")); +  if (ux>=-932428800) // from 1940 Jun 14 23:00 +  return tz4 || (tz4=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1855958961) // from 1911 Mar 11 +  return tz3 || (tz3=TZrules.France(0,"WE%sT")); +  if (ux>=-2486678901) // from 1891 Mar 15 0:01 Paris Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-561,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(-561,"LMT")); +  } + } +  + class Europe_Berlin + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=315536400) // from 1980 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-781045200) // from 1945 Apr 2 2:00 +  return tz3 || (tz3=TZrules.Germany(-3600,"CE%sT")); +  if (ux>=-2422054408) // from 1893 Apr +  return tz2 || (tz2=TZrules.C_Eur(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-3208,"LMT")); +  } + } +  + class Europe_Gibraltar + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=378687600) // from 1982 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-401320800) // from 1957 Apr 14 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-2821649916) // from 1880 Aug 2 +  return tz2 || (tz2=TZrules.GB_Eire(0,"%s")); +  return tz1 || (tz1=Ruleset.Timezone(1284,"LMT")); +  } + } +  + class Europe_Athens + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=347162400) // from 1981 +  return tz5 || (tz5=TZrules.EU(-7200,"EE%sT")); +  if (ux>=-812415600) // from 1944 Apr 4 +  return tz3 || (tz3=TZrules.Greece(-7200,"EE%sT")); +  if (ux>=-904856400) // from 1941 Apr 30 +  return tz4 || (tz4=TZrules.Greece(-3600,"CE%sT")); +  if (ux>=-1686101632) // from 1916 Jul 28 0:01 +  return tz3 || (tz3=TZrules.Greece(-7200,"EE%sT")); +  if (ux>=-2344642492) // from 1895 Sep 14 Athens MT +  return tz2 || (tz2=Ruleset.Timezone(-5692,"AMT")); +  return tz1 || (tz1=Ruleset.Timezone(-5692,"LMT")); +  } + } +  + class Europe_Budapest + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=338950800) // from 1980 Sep 28 2:00s +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-778464000) // from 1945 May 1 23:00 +  return tz3 || (tz3=TZrules.Hungary(-3600,"CE%sT")); +  if (ux>=-906930000) // from 1941 Apr 6 2:00 +  return tz2 || (tz2=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1640991600) // from 1918 +  return tz3 || (tz3=TZrules.Hungary(-3600,"CE%sT")); +  if (ux>=-2500938980) // from 1890 Oct +  return tz2 || (tz2=TZrules.C_Eur(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-4580,"LMT")); +  } + } +  + class Atlantic_Reykjavik + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-54770400) // from 1968 Apr 7 1:00s +  return tz4 || (tz4=Ruleset.Timezone(0,"GMT")); +  if (ux>=-1956609132) // from 1908 +  return tz3 || (tz3=TZrules.Iceland(3600,"IS%sT")); +  if (ux>=-4197047556) // from 1837 Reykjavik Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(5268,"RMT")); +  return tz1 || (tz1=Ruleset.Timezone(5244,"LMT")); +  } + } + constant Iceland=Atlantic_Reykjavik; +  + class Europe_Rome + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=315536400) // from 1980 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-804808800) // from 1944 Jul +  return tz3 || (tz3=TZrules.Italy(-3600,"CE%sT")); +  if (ux>=-857257200) // from 1942 Nov 2 2:00s +  return tz4 || (tz4=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2403564596) // from 1893 Nov +  return tz3 || (tz3=TZrules.Italy(-3600,"CE%sT")); +  if (ux>=-3259097396) // from 1866 Sep 22 Rome Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-2996,"RMT")); +  return tz1 || (tz1=Ruleset.Timezone(-2996,"LMT")); +  } + } + constant Europe_Vatican=Europe_Rome; + constant Europe_San_Marino=Europe_Rome; +  + class Europe_Riga + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz10,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=951789600) // from 2000 Feb 29 +  return tz4 || (tz4=Ruleset.Timezone(-7200,"EET")); +  if (ux>=853812000) // from 1997 Jan 21 +  return tz10 || (tz10=TZrules.EU(-7200,"EE%sT")); +  if (ux>=620600400) // from 1989 Sep lastSun 2:00s +  return tz9 || (tz9=TZrules.Latvia(-7200,"EE%sT")); +  if (ux>=604724400) // from 1989 Mar lastSun 2:00s +  return tz8 || (tz8=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=-795826800) // from 1944 Oct 13 +  return tz7 || (tz7=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-899521200) // from 1941 Jul +  return tz6 || (tz6=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-928029600) // from 1940 Aug 5 +  return tz5 || (tz5=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1377308184) // from 1926 May 11 +  return tz4 || (tz4=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-1597275384) // from 1919 May 22 3:00 +  return tz2 || (tz2=Ruleset.Timezone(-5784,"RMT")); +  if (ux>=-1601681784) // from 1919 Apr 1 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-9384,"LST")); +  if (ux>=-1618702584) // from 1918 Sep 16 3:00 +  return tz2 || (tz2=Ruleset.Timezone(-5784,"RMT")); +  if (ux>=-1632008184) // from 1918 Apr 15 2:00 Latvian Summer +  return tz3 || (tz3=Ruleset.Timezone(-9384,"LST")); +  if (ux>=-2840146584) // from 1880 Riga Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-5784,"RMT")); +  return tz1 || (tz1=Ruleset.Timezone(-5784,"LMT")); +  } + } +  + class Europe_Vaduz + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=347151600) // from 1981 +  return tz3 || (tz3=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-2385247084) // from 1894 Jun +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  return tz1 || (tz1=Ruleset.Timezone(-2284,"LMT")); +  } + } +  + class Europe_Vilnius + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz10,tz11,tz12,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=941331600) // from 1999 Oct 31 1:00u +  return tz12 || (tz12=TZrules.EU(-7200,"EE%sT")); +  if (ux>=891133200) // from 1998 Mar 29 1:00u +  return tz11 || (tz11=TZrules.EU(-3600,"CE%sT")); +  if (ux>=883620000) // from 1998 +  return tz5 || (tz5=Ruleset.Timezone(-7200,"EET")); +  if (ux>=686102400) // from 1991 Sep 29 2:00s +  return tz10 || (tz10=TZrules.C_Eur(-7200,"EE%sT")); +  if (ux>=670374000) // from 1991 Mar 31 2:00s +  return tz9 || (tz9=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=-802130400) // from 1944 Aug +  return tz8 || (tz8=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-900126000) // from 1941 Jun 24 +  return tz7 || (tz7=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-928198800) // from 1940 Aug 3 +  return tz6 || (tz6=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1553565600) // from 1920 Oct 9 +  return tz4 || (tz4=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-1561251600) // from 1920 Jul 12 +  return tz5 || (tz5=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-1585100136) // from 1919 Oct 10 +  return tz4 || (tz4=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-1672536240) // from 1917 Kaunas Mean Time +  return tz3 || (tz3=Ruleset.Timezone(-5736,"KMT")); +  if (ux>=-2840146876) // from 1880 Warsaw Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-5040,"WMT")); +  return tz1 || (tz1=Ruleset.Timezone(-6076,"LMT")); +  } + } +  + class Europe_Luxembourg + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=220928400) // from 1977 +  return tz7 || (tz7=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-797972400) // from 1944 Sep 18 3:00 +  return tz6 || (tz6=TZrules.Belgium(-3600,"CE%sT")); +  if (ux>=-935179200) // from 1940 May 14 3:00 +  return tz5 || (tz5=TZrules.C_Eur(-3600,"WE%sT")); +  if (ux>=-1269813600) // from 1929 Oct 6 2:00s +  return tz4 || (tz4=TZrules.Belgium(0,"WE%sT")); +  if (ux>=-1612652400) // from 1918 Nov 25 +  return tz3 || (tz3=TZrules.Lux(0,"WE%sT")); +  if (ux>=-2069713476) // from 1904 Jun +  return tz2 || (tz2=TZrules.Lux(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-1476,"LMT")); +  } + } +  + class Europe_Malta + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=347158800) // from 1981 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=102387600) // from 1973 Mar 31 +  return tz4 || (tz4=TZrules.Malta(-3600,"CE%sT")); +  if (ux>=-781052400) // from 1945 Apr 2 2:00s +  return tz2 || (tz2=TZrules.Italy(-3600,"CE%sT")); +  if (ux>=-857257200) // from 1942 Nov 2 2:00s +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2403478684) // from 1893 Nov 2 +  return tz2 || (tz2=TZrules.Italy(-3600,"CE%sT")); +  // Valletta +  return tz1 || (tz1=Ruleset.Timezone(-3484,"LMT")); +  } + } +  + class Europe_Chisinau + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz10,tz11,tz12,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=852084000) // from 1997 +  return tz12 || (tz12=TZrules.EU(-7200,"EE%sT")); +  if (ux>=694231200) // from 1992 +  return tz11 || (tz11=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=662680800) // from 1991 +  return tz10 || (tz10=TZrules.Russia(-7200,"EE%sT")); +  if (ux>=641941200) // from 1990 May 6 +  return tz9 || (tz9=Ruleset.Timezone(-7200,"EET")); +  if (ux>=631162800) // from 1990 +  return tz8 || (tz8=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-800143200) // from 1944 Aug 24 +  return tz7 || (tz7=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-898138800) // from 1941 Jul 17 +  return tz6 || (tz6=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-927151200) // from 1940 Aug 15 +  return tz5 || (tz5=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=-1213148664) // from 1931 Jul 24 +  return tz4 || (tz4=TZrules.Romania(-7200,"EE%sT")); +  if (ux>=-1637114100) // from 1918 Feb 15 Bucharest MT +  return tz3 || (tz3=Ruleset.Timezone(-6264,"BMT")); +  if (ux>=-2840147720) // from 1880 Chisinau MT +  return tz2 || (tz2=Ruleset.Timezone(-6900,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(-6920,"LMT")); +  } + } +  + class Europe_Tiraspol + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695793600) // from 1992 Jan 19 2:00 +  return tz7 || (tz7=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=670395600) // from 1991 Mar 31 2:00 +  return tz8 || (tz8=TZrules.Russia(-7200,"EE%sT")); +  if (ux>=-800143200) // from 1944 Aug 24 +  return tz7 || (tz7=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-898138800) // from 1941 Jul 17 +  return tz6 || (tz6=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-927151200) // from 1940 Aug 15 +  return tz5 || (tz5=Ruleset.Timezone(-10800,"EEST")); +  if (ux>=-1213148664) // from 1931 Jul 24 +  return tz4 || (tz4=TZrules.Romania(-7200,"EE%sT")); +  if (ux>=-1637114100) // from 1918 Feb 15 Bucharest MT +  return tz3 || (tz3=Ruleset.Timezone(-6264,"BMT")); +  if (ux>=-2840147912) // from 1880 Chisinau MT +  return tz2 || (tz2=Ruleset.Timezone(-6900,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(-7112,"LMT")); +  } + } +  + class Europe_Monaco + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=220928400) // from 1977 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-766609200) // from 1945 Sep 16 3:00 +  return tz4 || (tz4=TZrules.France(-3600,"CE%sT")); +  if (ux>=-1855958961) // from 1911 Mar 11 +  return tz3 || (tz3=TZrules.France(0,"WE%sT")); +  if (ux>=-2486680172) // from 1891 Mar 15 Paris Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-561,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(-1772,"LMT")); +  } + } +  + class Europe_Amsterdam + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=220928400) // from 1977 +  return tz6 || (tz6=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-781045200) // from 1945 Apr 2 2:00 +  return tz5 || (tz5=TZrules.Neth(-3600,"CE%sT")); +  if (ux>=-935017200) // from 1940 May 16 0:40 +  return tz4 || (tz4=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1025736032) // from 1937 Jul +  return tz3 || (tz3=TZrules.Neth(-1200,"NE%sT")); +  if (ux>=-2450996368) // from 1892 May +  return tz2 || (tz2=TZrules.Neth(-1168,"%s")); +  return tz1 || (tz1=Ruleset.Timezone(-1168,"LMT")); +  } + } +  + class Europe_Oslo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=315536400) // from 1980 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-781045200) // from 1945 Apr 2 2:00 +  return tz2 || (tz2=TZrules.Norway(-3600,"CE%sT")); +  if (ux>=-927504000) // from 1940 Aug 10 23:00 +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2366757780) // from 1895 +  return tz2 || (tz2=TZrules.Norway(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-2580,"LMT")); +  } + } + constant Arctic_Longyearbyen=Europe_Oslo; +  + class Europe_Warsaw + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=915152400) // from 1999 +  return tz7 || (tz7=TZrules.EU(-3600,"CE%sT")); +  if (ux>=228880800) // from 1977 Apr 3 1:00 +  return tz6 || (tz6=TZrules.W_Eur(-3600,"CE%sT")); +  if (ux>=-796860000) // from 1944 Oct +  return tz5 || (tz5=TZrules.Poland(-3600,"CE%sT")); +  if (ux>=-931726800) // from 1940 Jun 23 2:00 +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1501711200) // from 1922 Jun +  return tz5 || (tz5=TZrules.Poland(-3600,"CE%sT")); +  if (ux>=-1618686000) // from 1918 Sep 16 3:00 +  return tz4 || (tz4=TZrules.Poland(-7200,"EE%sT")); +  if (ux>=-1717032240) // from 1915 Aug 5 +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2840145840) // from 1880 Warsaw Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-5040,"WMT")); +  return tz1 || (tz1=Ruleset.Timezone(-5040,"LMT")); +  } + } + constant Poland=Europe_Warsaw; +  + class Europe_Lisbon + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=828234000) // from 1996 Mar 31 1:00u +  return tz6 || (tz6=TZrules.EU(0,"WE%sT")); +  if (ux>=717555600) // from 1992 Sep 27 1:00s +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=433299600) // from 1983 Sep 25 1:00s +  return tz4 || (tz4=TZrules.W_Eur(0,"WE%sT")); +  if (ux>=212544000) // from 1976 Sep 26 1:00 +  return tz2 || (tz2=TZrules.Port(0,"WE%sT")); +  if (ux>=-118274400) // from 1966 Apr 3 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-1849562608) // from 1911 May 24 +  return tz2 || (tz2=TZrules.Port(0,"WE%sT")); +  if (ux>=-2713908208) // from 1884 Lisbon Mean Time +  return tz1 || (tz1=Ruleset.Timezone(2192,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(2192,"LMT")); +  } + } + constant Portugal=Europe_Lisbon; +  + class Atlantic_Azores + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=733280400) // from 1993 Mar 28 1:00u +  return tz7 || (tz7=TZrules.EU(3600,"AZO%sT")); +  if (ux>=717559200) // from 1992 Sep 27 1:00s +  return tz6 || (tz6=TZrules.EU(0,"WE%sT")); +  if (ux>=433303200) // from 1983 Sep 25 1:00s +  return tz5 || (tz5=TZrules.W_Eur(3600,"AZO%sT")); +  if (ux>=-118281600) // from 1966 Apr 3 2:00 +  return tz4 || (tz4=TZrules.Port(3600,"AZO%sT")); +  if (ux>=-1849557900) // from 1911 May 24 Azores Time +  return tz3 || (tz3=TZrules.Port(7200,"AZO%sT")); +  if (ux>=-2713904240) // from 1884 Horta Mean Time +  return tz2 || (tz2=Ruleset.Timezone(6900,"HMT")); +  // Ponta Delgada +  return tz1 || (tz1=Ruleset.Timezone(6160,"LMT")); +  } + } +  + class Atlantic_Madeira + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=433299600) // from 1983 Sep 25 1:00s +  return tz5 || (tz5=TZrules.EU(0,"WE%sT")); +  if (ux>=-118278000) // from 1966 Apr 3 2:00 +  return tz4 || (tz4=TZrules.Port(0,"WE%sT")); +  if (ux>=-1849560720) // from 1911 May 24 Madeira Time +  return tz3 || (tz3=TZrules.Port(3600,"MAD%sT")); +  if (ux>=-2713906344) // from 1884 Funchal Mean Time +  return tz2 || (tz2=Ruleset.Timezone(4080,"FMT")); +  // Funchal +  return tz1 || (tz1=Ruleset.Timezone(4056,"LMT")); +  } + } +  + class Europe_Bucharest + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=852084000) // from 1997 +  return tz6 || (tz6=TZrules.EU(-7200,"EE%sT")); +  if (ux>=757389600) // from 1994 +  return tz5 || (tz5=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=662695200) // from 1991 +  return tz3 || (tz3=TZrules.Romania(-7200,"EE%sT")); +  if (ux>=354672000) // from 1981 Mar 29 2:00s +  return tz4 || (tz4=TZrules.C_Eur(-7200,"EE%sT")); +  if (ux>=-1213148664) // from 1931 Jul 24 +  return tz3 || (tz3=TZrules.Romania(-7200,"EE%sT")); +  if (ux>=-2469404664) // from 1891 Oct Bucharest MT +  return tz2 || (tz2=Ruleset.Timezone(-6264,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(-6264,"LMT")); +  } + } +  + class Europe_Kaliningrad + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=670374000) // from 1991 Mar 31 2:00s +  return tz5 || (tz5=TZrules.Russia(-7200,"EE%sT")); +  if (ux>=-757375200) // from 1946 +  return tz4 || (tz4=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-788914800) // from 1945 +  return tz3 || (tz3=TZrules.Poland(-7200,"CE%sT")); +  if (ux>=-2422056120) // from 1893 Apr +  return tz2 || (tz2=TZrules.C_Eur(-3600,"CE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(-4920,"LMT")); +  } + } +  + class Europe_Moscow + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695779200) // from 1992 Jan 19 2:00s +  return tz4 || (tz4=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=670374000) // from 1991 Mar 31 2:00s +  return tz6 || (tz6=TZrules.Russia(-7200,"EE%sT")); +  if (ux>=-1247536800) // from 1930 Jun 21 +  return tz4 || (tz4=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-1491166800) // from 1922 Oct +  return tz5 || (tz5=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-1593797352) // from 1919 Jul 1 2:00 +  return tz4 || (tz4=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-1688265000) // from 1916 Jul 3 +  return tz3 || (tz3=TZrules.Russia(-9048,"%s")); +  if (ux>=-2840149820) // from 1880 Moscow Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-9000,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(-9020,"LMT")); +  } + } + constant W_SU=Europe_Moscow; +  + class Europe_Samara + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=687916800) // from 1991 Oct 20 3:00 Samara Time +  return tz6 || (tz6=TZrules.Russia(-14400,"SAM%sT")); +  if (ux>=686102400) // from 1991 Sep 29 2:00s +  return tz2 || (tz2=Ruleset.Timezone(-10800,"KUYT")); +  if (ux>=670374000) // from 1991 Mar 31 2:00s +  return tz5 || (tz5=TZrules.Russia(-7200,"KUY%sT")); +  if (ux>=606866400) // from 1989 Mar 26 2:00s +  return tz4 || (tz4=TZrules.Russia(-10800,"KUY%sT")); +  if (ux>=-1247540400) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-14400,"KUY%sT")); +  if (ux>=-1593825636) // from 1919 Jul 1 2:00 Kuybyshev +  return tz2 || (tz2=Ruleset.Timezone(-10800,"KUYT")); +  return tz1 || (tz1=Ruleset.Timezone(-12036,"LMT")); +  } + } +  + class Asia_Yekaterinburg + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695772000) // from 1992 Jan 19 2:00s Yekaterinburg Time +  return tz5 || (tz5=TZrules.Russia(-18000,"YEK%sT")); +  if (ux>=670366800) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-14400,"SVE%sT")); +  if (ux>=-1247544000) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-18000,"SVE%sT")); +  if (ux>=-1592611344) // from 1919 Jul 15 4:00 Sverdlovsk Time +  return tz2 || (tz2=Ruleset.Timezone(-14400,"SVET")); +  return tz1 || (tz1=Ruleset.Timezone(-14544,"LMT")); +  } + } +  + class Asia_Omsk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695768400) // from 1992 Jan 19 2:00s +  return tz3 || (tz3=TZrules.Russia(-21600,"OMS%sT")); +  if (ux>=670363200) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-18000,"OMS%sT")); +  if (ux>=-1247547600) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-21600,"OMS%sT")); +  if (ux>=-1582088016) // from 1919 Nov 14 Omsk TIme +  return tz2 || (tz2=Ruleset.Timezone(-18000,"OMST")); +  return tz1 || (tz1=Ruleset.Timezone(-17616,"LMT")); +  } + } +  + class Asia_Novosibirsk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=738144000) // from 1993 May 23 +  return tz4 || (tz4=TZrules.Russia(-21600,"NOV%sT")); +  if (ux>=695764800) // from 1992 Jan 19 2:00s says Shanks +  return tz3 || (tz3=TZrules.Russia(-25200,"NOV%sT")); +  if (ux>=670359600) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-21600,"NOV%sT")); +  if (ux>=-1247551200) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-25200,"NOV%sT")); +  if (ux>=-1579476700) // from 1919 Dec 14 6:00 Novosibirsk Time +  return tz2 || (tz2=Ruleset.Timezone(-21600,"NOVT")); +  return tz1 || (tz1=Ruleset.Timezone(-19900,"LMT")); +  } + } +  + class Asia_Krasnoyarsk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695764800) // from 1992 Jan 19 2:00s +  return tz3 || (tz3=TZrules.Russia(-25200,"KRA%sT")); +  if (ux>=670359600) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-21600,"KRA%sT")); +  if (ux>=-1247551200) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-25200,"KRA%sT")); +  if (ux>=-1577513480) // from 1920 Jan 6 Krasnoyarsk Time +  return tz2 || (tz2=Ruleset.Timezone(-21600,"KRAT")); +  return tz1 || (tz1=Ruleset.Timezone(-22280,"LMT")); +  } + } +  + class Asia_Irkutsk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695761200) // from 1992 Jan 19 2:00s +  return tz4 || (tz4=TZrules.Russia(-28800,"IRK%sT")); +  if (ux>=670356000) // from 1991 Mar 31 2:00s +  return tz5 || (tz5=TZrules.Russia(-25200,"IRK%sT")); +  if (ux>=-1247554800) // from 1930 Jun 21 +  return tz4 || (tz4=TZrules.Russia(-28800,"IRK%sT")); +  if (ux>=-1575874640) // from 1920 Jan 25 Irkutsk Time +  return tz3 || (tz3=Ruleset.Timezone(-25200,"IRKT")); +  if (ux>=-2840165840) // from 1880 Irkutsk Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-25040,"IMT")); +  return tz1 || (tz1=Ruleset.Timezone(-25040,"LMT")); +  } + } +  + class Asia_Yakutsk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695757600) // from 1992 Jan 19 2:00s +  return tz3 || (tz3=TZrules.Russia(-32400,"YAK%sT")); +  if (ux>=670352400) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-28800,"YAK%sT")); +  if (ux>=-1247558400) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-32400,"YAK%sT")); +  if (ux>=-1579423120) // from 1919 Dec 15 Yakutsk Time +  return tz2 || (tz2=Ruleset.Timezone(-28800,"YAKT")); +  return tz1 || (tz1=Ruleset.Timezone(-31120,"LMT")); +  } + } +  + class Asia_Vladivostok + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695754000) // from 1992 Jan 19 2:00s +  return tz3 || (tz3=TZrules.Russia(-36000,"VLA%sT")); +  if (ux>=670348800) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-32400,"VLA%sST")); +  if (ux>=-1247562000) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-36000,"VLA%sT")); +  if (ux>=-1487321264) // from 1922 Nov 15 Vladivostok Time +  return tz2 || (tz2=Ruleset.Timezone(-32400,"VLAT")); +  return tz1 || (tz1=Ruleset.Timezone(-31664,"LMT")); +  } + } +  + class Asia_Magadan + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695750400) // from 1992 Jan 19 2:00s +  return tz3 || (tz3=TZrules.Russia(-39600,"MAG%sT")); +  if (ux>=670345200) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-36000,"MAG%sT")); +  if (ux>=-1247565600) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-39600,"MAG%sT")); +  if (ux>=-1441188192) // from 1924 May 2 Magadan Time +  return tz2 || (tz2=Ruleset.Timezone(-36000,"MAGT")); +  return tz1 || (tz1=Ruleset.Timezone(-36192,"LMT")); +  } + } +  + class Asia_Kamchatka + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695746800) // from 1992 Jan 19 2:00s +  return tz3 || (tz3=TZrules.Russia(-43200,"PET%sT")); +  if (ux>=670341600) // from 1991 Mar 31 2:00s +  return tz4 || (tz4=TZrules.Russia(-39600,"PET%sT")); +  if (ux>=-1247569200) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-43200,"PET%sT")); +  if (ux>=-1487759676) // from 1922 Nov 10 P-K Time +  return tz2 || (tz2=Ruleset.Timezone(-39600,"PETT")); +  return tz1 || (tz1=Ruleset.Timezone(-38076,"LMT")); +  } + } +  + class Asia_Anadyr + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=695746800) // from 1992 Jan 19 2:00s +  return tz4 || (tz4=TZrules.Russia(-43200,"ANA%sT")); +  if (ux>=670341600) // from 1991 Mar 31 2:00s +  return tz5 || (tz5=TZrules.Russia(-39600,"ANA%sT")); +  if (ux>=386420400) // from 1982 Apr 1 0:00s +  return tz4 || (tz4=TZrules.Russia(-43200,"ANA%sT")); +  if (ux>=-1247572800) // from 1930 Jun 21 +  return tz3 || (tz3=TZrules.Russia(-46800,"ANA%sT")); +  if (ux>=-1441194596) // from 1924 May 2 Anadyr Time +  return tz2 || (tz2=Ruleset.Timezone(-43200,"ANAT")); +  return tz1 || (tz1=Ruleset.Timezone(-42596,"LMT")); +  } + } +  + class Europe_Madrid + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=284000400) // from 1979 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-733881600) // from 1946 Sep 30 +  return tz3 || (tz3=TZrules.Spain(-3600,"CE%sT")); +  if (ux>=-2177451916) // from 1901 +  return tz2 || (tz2=TZrules.Spain(0,"WE%sT")); +  return tz1 || (tz1=Ruleset.Timezone(884,"LMT")); +  } + } +  + class Africa_Ceuta + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=504918000) // from 1986 +  return tz7 || (tz7=TZrules.EU(-3600,"CE%sT")); +  if (ux>=448243200) // from 1984 Mar 16 +  return tz6 || (tz6=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-1293840000) // from 1929 +  return tz5 || (tz5=TZrules.SpainAfrica(0,"WE%sT")); +  if (ux>=-1451692800) // from 1924 +  return tz4 || (tz4=TZrules.Spain(0,"WE%sT")); +  if (ux>=-1616810400) // from 1918 Oct 7 23:00 +  return tz2 || (tz2=Ruleset.Timezone(0,"WET")); +  if (ux>=-1630112400) // from 1918 May 6 23:00 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"WEST")); +  if (ux>=-2177451524) // from 1901 +  return tz2 || (tz2=Ruleset.Timezone(0,"WET")); +  return tz1 || (tz1=Ruleset.Timezone(1276,"LMT")); +  } + } +  + class Atlantic_Canary + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=338947200) // from 1980 Sep 28 0:00s +  return tz5 || (tz5=TZrules.EU(0,"WE%sT")); +  if (ux>=323827200) // from 1980 Apr 6 0:00s +  return tz4 || (tz4=Ruleset.Timezone(-3600,"WEST")); +  if (ux>=-733874400) // from 1946 Sep 30 1:00 +  return tz3 || (tz3=Ruleset.Timezone(0,"WET")); +  if (ux>=-1509663504) // from 1922 Mar Canaries Time +  return tz2 || (tz2=Ruleset.Timezone(3600,"CANT")); +  // Las Palmas de Gran C. +  return tz1 || (tz1=Ruleset.Timezone(3696,"LMT")); +  } + } +  + class Europe_Stockholm + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=315529200) // from 1980 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-1680487200) // from 1916 Sep 30 23:00s +  return tz3 || (tz3=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-1695088800) // from 1916 Apr 14 23:00s +  return tz4 || (tz4=Ruleset.Timezone(-7200,"CEST")); +  if (ux>=-2208989532) // from 1900 Jan 1 1:00 +  return tz3 || (tz3=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-2890257132) // from 1878 May 31 Stockholm MT +  return tz2 || (tz2=Ruleset.Timezone(-4332,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-4332,"LMT")); +  } + } +  + class Europe_Zurich + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=347158800) // from 1981 +  return tz4 || (tz4=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-2385246584) // from 1894 Jun +  return tz3 || (tz3=TZrules.Swiss(-3600,"CE%sT")); +  if (ux>=-3827954048) // from 1848 Sep 12 Bern Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-1784,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(-2048,"LMT")); +  } + } +  + class Europe_Istanbul + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=662695200) // from 1991 +  return tz6 || (tz6=TZrules.EU(-7200,"EE%sT")); +  if (ux>=504928800) // from 1986 +  return tz5 || (tz5=TZrules.C_Eur(-7200,"EE%sT")); +  if (ux>=482814000) // from 1985 Apr 20 +  return tz3 || (tz3=TZrules.Turkey(-7200,"EE%sT")); +  if (ux>=277268400) // from 1978 Oct 15 Turkey Time +  return tz4 || (tz4=TZrules.Turkey(-10800,"TR%sT")); +  if (ux>=-1869875816) // from 1910 Oct +  return tz3 || (tz3=TZrules.Turkey(-7200,"EE%sT")); +  if (ux>=-2840147752) // from 1880 Istanbul Mean Time? +  return tz2 || (tz2=Ruleset.Timezone(-7016,"IMT")); +  return tz1 || (tz1=Ruleset.Timezone(-6952,"LMT")); +  } + } + constant Turkey=Europe_Istanbul; + constant Asia_Istanbul=Europe_Istanbul; +  + class Europe_Kiev + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=788925600) // from 1995 +  return tz8 || (tz8=TZrules.EU(-7200,"EE%sT")); +  if (ux>=694216800) // from 1992 +  return tz7 || (tz7=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=646786800) // from 1990 Jul 1 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=631162800) // from 1990 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-825375600) // from 1943 Nov 6 +  return tz6 || (tz6=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-892522800) // from 1941 Sep 20 +  return tz5 || (tz5=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1247536800) // from 1930 Jun 21 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1441159324) // from 1924 May 2 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-2840148124) // from 1880 Kiev Mean Time +  return tz2 || (tz2=Ruleset.Timezone(-7324,"KMT")); +  return tz1 || (tz1=Ruleset.Timezone(-7324,"LMT")); +  } + } +  + class Europe_Uzhgorod + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=788925600) // from 1995 +  return tz9 || (tz9=TZrules.EU(-7200,"EE%sT")); +  if (ux>=694216800) // from 1992 +  return tz8 || (tz8=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=670384800) // from 1991 Mar 31 3:00 +  return tz7 || (tz7=Ruleset.Timezone(-7200,"EET")); +  if (ux>=646786800) // from 1990 Jul 1 2:00 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  if (ux>=631162800) // from 1990 +  return tz6 || (tz6=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-773456400) // from 1945 Jun 29 +  return tz5 || (tz5=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-794714400) // from 1944 Oct 26 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-796860000) // from 1944 Oct +  return tz4 || (tz4=Ruleset.Timezone(-7200,"CEST")); +  if (ux>=-946774800) // from 1940 +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2500939752) // from 1890 Oct +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  return tz1 || (tz1=Ruleset.Timezone(-5352,"LMT")); +  } + } +  + class Europe_Zaporozhye + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=788925600) // from 1995 +  return tz8 || (tz8=TZrules.EU(-7200,"EE%sT")); +  if (ux>=670395600) // from 1991 Mar 31 2:00 +  return tz7 || (tz7=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=-826412400) // from 1943 Oct 25 +  return tz6 || (tz6=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-894769200) // from 1941 Aug 25 +  return tz5 || (tz5=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1247536800) // from 1930 Jun 21 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1441160400) // from 1924 May 2 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-2840149240) // from 1880 Central Ukraine T +  return tz2 || (tz2=Ruleset.Timezone(-8400,"CUT")); +  return tz1 || (tz1=Ruleset.Timezone(-8440,"LMT")); +  } + } +  + class Europe_Simferopol + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz10,tz2,tz3,tz4,tz5,tz6,tz7,tz8,tz9; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=857185200) // from 1997 Mar lastSun 1:00u +  return tz10 || (tz10=TZrules.EU(-7200,"EE%sT")); +  if (ux>=846374400) // from 1996 Oct 27 3:00s +  return tz6 || (tz6=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=828230400) // from 1996 Mar 31 3:00s +  return tz9 || (tz9=Ruleset.Timezone(-14400,"MSD")); +  if (ux>=767761200) // from 1994 May +  return tz8 || (tz8=TZrules.E_Eur(-10800,"MSK/MSD")); +  if (ux>=694216800) // from 1992 +  return tz7 || (tz7=TZrules.E_Eur(-7200,"EE%sT")); +  if (ux>=646786800) // from 1990 Jul 1 2:00 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=631162800) // from 1990 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-811634400) // from 1944 Apr 13 +  return tz6 || (tz6=TZrules.Russia(-10800,"MSK/MSD")); +  if (ux>=-888894000) // from 1941 Nov +  return tz5 || (tz5=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-1247536800) // from 1930 Jun 21 +  return tz4 || (tz4=Ruleset.Timezone(-10800,"MSK")); +  if (ux>=-1441160160) // from 1924 May 2 +  return tz3 || (tz3=Ruleset.Timezone(-7200,"EET")); +  if (ux>=-2840148984) // from 1880 Simferopol Mean T +  return tz2 || (tz2=Ruleset.Timezone(-8160,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(-8184,"LMT")); +  } + } +  + class Europe_Belgrade + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=407199600) // from 1982 Nov 27 +  return tz5 || (tz5=TZrules.EU(-3600,"CE%sT")); +  if (ux>=-766623600) // from 1945 Sep 16 2:00s +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  if (ux>=-777942000) // from 1945 May 8 2:00s +  return tz4 || (tz4=Ruleset.Timezone(-7200,"CEST")); +  if (ux>=-905824800) // from 1941 Apr 18 23:00 +  return tz3 || (tz3=TZrules.C_Eur(-3600,"CE%sT")); +  if (ux>=-2713915320) // from 1884 +  return tz2 || (tz2=Ruleset.Timezone(-3600,"CET")); +  return tz1 || (tz1=Ruleset.Timezone(-4920,"LMT")); +  } + } + constant Europe_Ljubljana=Europe_Belgrade; + constant Europe_Sarajevo=Europe_Belgrade; + constant Europe_Skopje=Europe_Belgrade; + constant Europe_Zagreb=Europe_Belgrade; +  + class America_New_York + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-94712400) // from 1967 +  return tz2 || (tz2=TZrules.US(18000,"E%sT")); +  if (ux>=-757400400) // from 1946 +  return tz3 || (tz3=TZrules.NYC(18000,"E%sT")); +  if (ux>=-883630800) // from 1942 +  return tz2 || (tz2=TZrules.US(18000,"E%sT")); +  if (ux>=-1577941200) // from 1920 +  return tz3 || (tz3=TZrules.NYC(18000,"E%sT")); +  if (ux>=-2717651038) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(18000,"E%sT")); +  return tz1 || (tz1=Ruleset.Timezone(17762,"LMT")); +  } + } + constant US_Eastern=America_New_York; + constant EST5EDT=America_New_York; +  + class America_Chicago + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-94716000) // from 1967 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  if (ux>=-757404000) // from 1946 +  return tz3 || (tz3=TZrules.Chicago(21600,"C%sT")); +  if (ux>=-883634400) // from 1942 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  if (ux>=-1045414800) // from 1936 Nov 15 2:00 +  return tz3 || (tz3=TZrules.Chicago(21600,"C%sT")); +  if (ux>=-1067832000) // from 1936 Mar 1 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-1577944800) // from 1920 +  return tz3 || (tz3=TZrules.Chicago(21600,"C%sT")); +  if (ux>=-2717647764) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(21036,"LMT")); +  } + } + constant US_Central=America_Chicago; + constant CST6CDT=America_Chicago; +  + class America_Denver + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-94719600) // from 1967 +  return tz2 || (tz2=TZrules.US(25200,"M%sT")); +  if (ux>=-757407600) // from 1946 +  return tz3 || (tz3=TZrules.Denver(25200,"M%sT")); +  if (ux>=-883638000) // from 1942 +  return tz2 || (tz2=TZrules.US(25200,"M%sT")); +  if (ux>=-1577948400) // from 1920 +  return tz3 || (tz3=TZrules.Denver(25200,"M%sT")); +  if (ux>=-2717643604) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(25196,"LMT")); +  } + } + constant Navajo=America_Denver; + constant US_Mountain=America_Denver; + constant America_Shiprock=America_Denver; + constant MST7MDT=America_Denver; +  + class America_Los_Angeles + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-94723200) // from 1967 +  return tz2 || (tz2=TZrules.US(28800,"P%sT")); +  if (ux>=-757411200) // from 1946 +  return tz3 || (tz3=TZrules.CA(28800,"P%sT")); +  if (ux>=-2717640422) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(28800,"P%sT")); +  return tz1 || (tz1=Ruleset.Timezone(28378,"LMT")); +  } + } + constant US_Pacific=America_Los_Angeles; + constant PST8PDT=America_Los_Angeles; + constant US_Pacific_New=America_Los_Angeles; +  + class America_Juneau + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=436302000) // from 1983 Oct 30 2:00 +  return tz4 || (tz4=TZrules.US(32400,"AK%sT")); +  if (ux>=-31507200) // from 1969 +  return tz3 || (tz3=TZrules.US(28800,"P%sT")); +  if (ux>=-757411200) // from 1946 +  return tz2 || (tz2=Ruleset.Timezone(28800,"PST")); +  if (ux>=-883584000) // from 1942 +  return tz3 || (tz3=TZrules.US(28800,"P%sT")); +  if (ux>=-2188954939) // from 1900 Aug 20 12:00 +  return tz2 || (tz2=Ruleset.Timezone(28800,"PST")); +  return tz1 || (tz1=Ruleset.Timezone(32261,"LMT")); +  } + } +  + class America_Yakutat + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=436298400) // from 1983 Oct 30 2:00 +  return tz4 || (tz4=TZrules.US(32400,"AK%sT")); +  if (ux>=-31503600) // from 1969 +  return tz3 || (tz3=TZrules.US(32400,"Y%sT")); +  if (ux>=-757414800) // from 1946 +  return tz2 || (tz2=Ruleset.Timezone(32400,"YST")); +  if (ux>=-883580400) // from 1942 +  return tz3 || (tz3=TZrules.US(32400,"Y%sT")); +  if (ux>=-2188953665) // from 1900 Aug 20 12:00 +  return tz2 || (tz2=Ruleset.Timezone(32400,"YST")); +  return tz1 || (tz1=Ruleset.Timezone(33535,"LMT")); +  } + } +  + class America_Anchorage + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=436294800) // from 1983 Oct 30 2:00 +  return tz6 || (tz6=TZrules.US(32400,"AK%sT")); +  if (ux>=-31500000) // from 1969 +  return tz5 || (tz5=TZrules.US(36000,"AH%sT")); +  if (ux>=-86882400) // from 1967 Apr +  return tz4 || (tz4=Ruleset.Timezone(36000,"AHST")); +  if (ux>=-757418400) // from 1946 +  return tz2 || (tz2=Ruleset.Timezone(36000,"CAT")); +  if (ux>=-883576800) // from 1942 +  return tz3 || (tz3=TZrules.US(36000,"CAT/CAWT")); +  if (ux>=-2188951224) // from 1900 Aug 20 12:00 +  return tz2 || (tz2=Ruleset.Timezone(36000,"CAT")); +  return tz1 || (tz1=Ruleset.Timezone(35976,"LMT")); +  } + } + constant US_Alaska=America_Anchorage; +  + class America_Nome + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=436291200) // from 1983 Oct 30 2:00 +  return tz6 || (tz6=TZrules.US(32400,"AK%sT")); +  if (ux>=-31496400) // from 1969 +  return tz5 || (tz5=TZrules.US(39600,"B%sT")); +  if (ux>=-86878800) // from 1967 Apr +  return tz4 || (tz4=Ruleset.Timezone(39600,"BST")); +  if (ux>=-757422000) // from 1946 +  return tz2 || (tz2=Ruleset.Timezone(39600,"NST")); +  if (ux>=-883573200) // from 1942 +  return tz3 || (tz3=TZrules.US(39600,"N%sT")); +  if (ux>=-2188947502) // from 1900 Aug 20 12:00 +  return tz2 || (tz2=Ruleset.Timezone(39600,"NST")); +  return tz1 || (tz1=Ruleset.Timezone(39698,"LMT")); +  } + } +  + class America_Adak + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=436291200) // from 1983 Oct 30 2:00 +  return tz6 || (tz6=TZrules.US(36000,"HA%sT")); +  if (ux>=-31496400) // from 1969 +  return tz5 || (tz5=TZrules.US(39600,"B%sT")); +  if (ux>=-86878800) // from 1967 Apr +  return tz4 || (tz4=Ruleset.Timezone(39600,"BST")); +  if (ux>=-757422000) // from 1946 +  return tz2 || (tz2=Ruleset.Timezone(39600,"NST")); +  if (ux>=-883573200) // from 1942 +  return tz3 || (tz3=TZrules.US(39600,"N%sT")); +  if (ux>=-2188944802) // from 1900 Aug 20 12:00 +  return tz2 || (tz2=Ruleset.Timezone(39600,"NST")); +  return tz1 || (tz1=Ruleset.Timezone(42398,"LMT")); +  } + } + constant America_Atka=America_Adak; + constant US_Aleutian=America_Adak; +  + class Pacific_Honolulu + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-712225800) // from 1947 Jun 8 2:00 +  return tz5 || (tz5=Ruleset.Timezone(36000,"HST")); +  if (ux>=-1155472200) // from 1933 May 21 2:00 +  return tz4 || (tz4=TZrules.US(37800,"H%sT")); +  if (ux>=-1157283000) // from 1933 Apr 30 2:00 +  return tz3 || (tz3=Ruleset.Timezone(34200,"HDT")); +  if (ux>=-2208907714) // from 1900 Jan 1 12:00 +  return tz2 || (tz2=Ruleset.Timezone(37800,"HST")); +  return tz1 || (tz1=Ruleset.Timezone(37886,"LMT")); +  } + } + constant US_Hawaii=Pacific_Honolulu; + constant HST=Pacific_Honolulu; +  + class America_Phoenix + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-63183600) // from 1968 +  return tz3 || (tz3=Ruleset.Timezone(25200,"MST")); +  if (ux>=-94669200) // from 1967 +  return tz2 || (tz2=TZrules.US(25200,"M%sT")); +  if (ux>=-796888740) // from 1944 Oct 1 00:01 +  return tz3 || (tz3=Ruleset.Timezone(25200,"MST")); +  if (ux>=-813949140) // from 1944 Mar 17 00:01 +  return tz2 || (tz2=TZrules.US(25200,"M%sT")); +  if (ux>=-820562340) // from 1944 Jan 1 00:01 +  return tz3 || (tz3=Ruleset.Timezone(25200,"MST")); +  if (ux>=-2717641902) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(26898,"LMT")); +  } + } + constant US_Arizona=America_Phoenix; + constant MST=America_Phoenix; +  + class America_Boise + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=129114000) // from 1974 Feb 3 2:00 +  return tz3 || (tz3=TZrules.US(25200,"M%sT")); +  if (ux>=126205200) // from 1974 +  return tz4 || (tz4=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1471845600) // from 1923 May 13 2:00 +  return tz3 || (tz3=TZrules.US(25200,"M%sT")); +  if (ux>=-2717640911) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(28800,"P%sT")); +  return tz1 || (tz1=Ruleset.Timezone(27889,"LMT")); +  } + } +  + class America_Indianapolis + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=31518000) // from 1971 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-31518000) // from 1969 +  return tz6 || (tz6=TZrules.US(18000,"E%sT")); +  if (ux>=-368640000) // from 1958 Apr 27 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-386787600) // from 1957 Sep 29 2:00 +  return tz5 || (tz5=Ruleset.Timezone(21600,"CST")); +  if (ux>=-463636800) // from 1955 Apr 24 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-757404000) // from 1946 +  return tz3 || (tz3=TZrules.Indianapolis(21600,"C%sT")); +  if (ux>=-883634400) // from 1942 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  if (ux>=-1577944800) // from 1920 +  return tz3 || (tz3=TZrules.Indianapolis(21600,"C%sT")); +  if (ux>=-2717648122) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(20678,"LMT")); +  } + } + constant America_Fort_Wayne=America_Indianapolis; + constant US_East_Indiana=America_Indianapolis; + constant America_Indiana_Indianapolis=America_Indianapolis; + constant EST=America_Indianapolis; +  + class America_Indiana_Marengo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=189284400) // from 1976 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=152089200) // from 1974 Oct 27 2:00 +  return tz5 || (tz5=TZrules.US(18000,"E%sT")); +  if (ux>=126651600) // from 1974 Jan 6 2:00 +  return tz6 || (tz6=Ruleset.Timezone(18000,"CDT")); +  if (ux>=-31518000) // from 1969 +  return tz5 || (tz5=TZrules.US(18000,"E%sT")); +  if (ux>=-273729600) // from 1961 Apr 30 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-599637600) // from 1951 +  return tz3 || (tz3=TZrules.Marengo(21600,"C%sT")); +  if (ux>=-2717648077) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(20723,"LMT")); +  } + } +  + class America_Indiana_Knox + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=688510800) // from 1991 Oct 27 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-195066000) // from 1963 Oct 27 2:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  if (ux>=-242280000) // from 1962 Apr 29 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-725868000) // from 1947 +  return tz3 || (tz3=TZrules.Starke(21600,"C%sT")); +  if (ux>=-2717648010) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(20790,"LMT")); +  } + } + constant America_Knox_IN=America_Indiana_Knox; + constant US_Indiana_Starke=America_Indiana_Knox; +  + class America_Indiana_Vevay + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=94676400) // from 1973 +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=-31518000) // from 1969 +  return tz4 || (tz4=TZrules.US(18000,"E%sT")); +  if (ux>=-495086400) // from 1954 Apr 25 2:00 +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=-2717648384) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(20416,"LMT")); +  } + } +  + class America_Louisville + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=152089200) // from 1974 Oct 27 2:00 +  return tz5 || (tz5=TZrules.US(18000,"E%sT")); +  if (ux>=126651600) // from 1974 Jan 6 2:00 +  return tz6 || (tz6=Ruleset.Timezone(18000,"CDT")); +  if (ux>=-63140400) // from 1968 +  return tz5 || (tz5=TZrules.US(18000,"E%sT")); +  if (ux>=-266468400) // from 1961 Jul 23 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-757404000) // from 1946 +  return tz3 || (tz3=TZrules.Louisville(21600,"C%sT")); +  if (ux>=-883634400) // from 1942 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  if (ux>=-1546322400) // from 1921 +  return tz3 || (tz3=TZrules.Louisville(21600,"C%sT")); +  if (ux>=-2717648218) // from 1883 Nov 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(20582,"LMT")); +  } + } +  + class America_Detroit + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=167814000) // from 1975 Apr 27 2:00 +  return tz4 || (tz4=TZrules.US(18000,"E%sT")); +  if (ux>=157748400) // from 1975 +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=94676400) // from 1973 +  return tz4 || (tz4=TZrules.US(18000,"E%sT")); +  if (ux>=-757400400) // from 1946 +  return tz5 || (tz5=TZrules.Detroit(18000,"E%sT")); +  if (ux>=-883594800) // from 1942 +  return tz4 || (tz4=TZrules.US(18000,"E%sT")); +  if (ux>=-1724083200) // from 1915 May 15 2:00 +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=-2051202469) // from 1905 +  return tz2 || (tz2=Ruleset.Timezone(21600,"CST")); +  return tz1 || (tz1=Ruleset.Timezone(19931,"LMT")); +  } + } + constant US_Michigan=America_Detroit; +  + class America_Menominee + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=104914800) // from 1973 Apr 29 2:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  if (ux>=-21528000) // from 1969 Apr 27 2:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-757404000) // from 1946 +  return tz3 || (tz3=TZrules.Menominee(21600,"C%sT")); +  if (ux>=-2659759773) // from 1885 Sep 18 12:00 +  return tz2 || (tz2=TZrules.US(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(21027,"LMT")); +  } + } +  + class America_St_Johns + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1096947052) // from 1935 Mar 30 +  return tz3 || (tz3=TZrules.StJohns(12600,"N%sT")); +  if (ux>=-2713897748) // from 1884 +  return tz2 || (tz2=TZrules.StJohns(12652,"N%sT")); +  return tz1 || (tz1=Ruleset.Timezone(12652,"LMT")); +  } + } + constant Canada_Newfoundland=America_St_Johns; +  + class America_Goose_Bay + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-119928600) // from 1966 Mar 15 2:00 +  return tz6 || (tz6=TZrules.StJohns(14400,"A%sT")); +  if (ux>=-1072989000) // from 1936 +  return tz5 || (tz5=TZrules.StJohns(12600,"N%sT")); +  if (ux>=-1096921748) // from 1935 Mar 30 +  return tz4 || (tz4=Ruleset.Timezone(12600,"NST")); +  if (ux>=-1609471852) // from 1919 +  return tz3 || (tz3=Ruleset.Timezone(12652,"NST")); +  if (ux>=-2713895900) // from 1884 +  return tz2 || (tz2=TZrules.StJohns(12652,"NST")); +  // Happy Valley-Goose Bay +  return tz1 || (tz1=Ruleset.Timezone(14500,"LMT")); +  } + } +  + class America_Halifax + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2131645536) // from 1902 Jun 15 +  return tz2 || (tz2=TZrules.Halifax(14400,"A%sT")); +  return tz1 || (tz1=Ruleset.Timezone(15264,"LMT")); +  } + } + constant Canada_Atlantic=America_Halifax; +  + class America_Glace_Bay + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=63086400) // from 1972 +  return tz3 || (tz3=TZrules.Halifax(14400,"A%sT")); +  if (ux>=-504936000) // from 1954 +  return tz4 || (tz4=Ruleset.Timezone(14400,"AST")); +  if (ux>=-536472000) // from 1953 +  return tz3 || (tz3=TZrules.Halifax(14400,"A%sT")); +  if (ux>=-2131646412) // from 1902 Jun 15 +  return tz2 || (tz2=TZrules.Canada(14400,"A%sT")); +  return tz1 || (tz1=Ruleset.Timezone(14388,"LMT")); +  } + } +  + class America_Montreal + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2713892744) // from 1884 +  return tz2 || (tz2=TZrules.Mont(18000,"E%sT")); +  return tz1 || (tz1=Ruleset.Timezone(17656,"LMT")); +  } + } + constant Canada_Eastern=America_Montreal; +  + class America_Thunder_Bay + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=126248400) // from 1974 +  return tz2 || (tz2=TZrules.Canada(18000,"E%sT")); +  if (ux>=94676400) // from 1973 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-18000) // from 1970 +  return tz3 || (tz3=TZrules.Mont(18000,"E%sT")); +  if (ux>=-2366733780) // from 1895 +  return tz2 || (tz2=TZrules.Canada(18000,"E%sT")); +  return tz1 || (tz1=Ruleset.Timezone(21420,"LMT")); +  } + } +  + class America_Nipigon + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2366734016) // from 1895 +  return tz2 || (tz2=TZrules.Canada(18000,"E%sT")); +  return tz1 || (tz1=Ruleset.Timezone(21184,"LMT")); +  } + } +  + class America_Rainy_River + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2366732524) // from 1895 +  return tz2 || (tz2=TZrules.Canada(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(22676,"LMT")); +  } + } +  + class America_Winnipeg + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2602258284) // from 1887 Jul 16 +  return tz2 || (tz2=TZrules.Winn(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(23316,"LMT")); +  } + } + constant Canada_Central=America_Winnipeg; +  + class America_Regina + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-307782000) // from 1960 Apr lastSun 2:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-2030202084) // from 1905 Sep +  return tz2 || (tz2=TZrules.Regina(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(25116,"LMT")); +  } + } + constant Canada_East_Saskatchewan=America_Regina; + constant Canada_Saskatchewan=America_Regina; +  + class America_Swift_Current + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=70909200) // from 1972 Apr lastSun 2:00 +  return tz5 || (tz5=Ruleset.Timezone(21600,"CST")); +  if (ux>=-631177200) // from 1950 +  return tz4 || (tz4=TZrules.Swift(25200,"M%sT")); +  if (ux>=-749631600) // from 1946 Apr lastSun 2:00 +  return tz3 || (tz3=TZrules.Regina(25200,"M%sT")); +  if (ux>=-2030201320) // from 1905 Sep +  return tz2 || (tz2=TZrules.Canada(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(25880,"LMT")); +  } + } +  + class America_Edmonton + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1998663968) // from 1906 Sep +  return tz2 || (tz2=TZrules.Edm(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(27232,"LMT")); +  } + } + constant Canada_Mountain=America_Edmonton; +  + class America_Vancouver + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2713880852) // from 1884 +  return tz2 || (tz2=TZrules.Vanc(28800,"P%sT")); +  return tz1 || (tz1=Ruleset.Timezone(29548,"LMT")); +  } + } + constant Canada_Pacific=America_Vancouver; +  + class America_Dawson_Creek + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=83962800) // from 1972 Aug 30 2:00 +  return tz4 || (tz4=Ruleset.Timezone(25200,"MST")); +  if (ux>=-725875200) // from 1947 +  return tz3 || (tz3=TZrules.Vanc(28800,"P%sT")); +  if (ux>=-2713881544) // from 1884 +  return tz2 || (tz2=TZrules.Canada(28800,"P%sT")); +  return tz1 || (tz1=Ruleset.Timezone(28856,"LMT")); +  } + } +  + class America_Pangnirtung + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=941320800) // from 1999 Oct 31 2:00 +  return tz4 || (tz4=TZrules.Canada(21600,"C%sT")); +  if (ux>=796680000) // from 1995 Apr Sun>=1 2:00 +  return tz3 || (tz3=TZrules.Canada(18000,"E%sT")); +  if (ux>=-2713894624) // from 1884 +  return tz2 || (tz2=TZrules.NT_YK(14400,"A%sT")); +  return tz1 || (tz1=Ruleset.Timezone(15776,"LMT")); +  } + } +  + class America_Iqaluit + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=941320800) // from 1999 Oct 31 2:00 +  return tz3 || (tz3=TZrules.Canada(21600,"C%sT")); +  if (ux>=-2713893968) // from 1884 +  return tz2 || (tz2=TZrules.NT_YK(18000,"E%sT")); +  // Frobisher Bay before 1987 +  return tz1 || (tz1=Ruleset.Timezone(16432,"LMT")); +  } + } +  + class America_Rankin_Inlet + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2713888280) // from 1884 +  return tz2 || (tz2=TZrules.NT_YK(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(22120,"LMT")); +  } + } +  + class America_Cambridge_Bay + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=941313600) // from 1999 Oct 31 2:00 +  return tz3 || (tz3=TZrules.Canada(21600,"C%sT")); +  if (ux>=-2713885180) // from 1884 +  return tz2 || (tz2=TZrules.NT_YK(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(25220,"LMT")); +  } + } +  + class America_Yellowknife + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2713882956) // from 1884 +  return tz2 || (tz2=TZrules.NT_YK(25200,"M%sT")); +  return tz1 || (tz1=Ruleset.Timezone(27444,"LMT")); +  } + } +  + class America_Inuvik + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=291744000) // from 1979 Apr lastSun 2:00 +  return tz3 || (tz3=TZrules.NT_YK(25200,"M%sT")); +  if (ux>=-2713878360) // from 1884 +  return tz2 || (tz2=TZrules.NT_YK(28800,"P%sT")); +  return tz1 || (tz1=Ruleset.Timezone(32040,"LMT")); +  } + } +  + class America_Whitehorse + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-110617200) // from 1966 Jul 1 2:00 +  return tz3 || (tz3=TZrules.NT_YK(28800,"P%sT")); +  if (ux>=-2188997988) // from 1900 Aug 20 +  return tz2 || (tz2=TZrules.NT_YK(32400,"Y%sT")); +  return tz1 || (tz1=Ruleset.Timezone(32412,"LMT")); +  } + } + constant Canada_Yukon=America_Whitehorse; +  + class America_Dawson + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=120582000) // from 1973 Oct 28 0:00 +  return tz3 || (tz3=TZrules.NT_YK(28800,"P%sT")); +  if (ux>=-2188996940) // from 1900 Aug 20 +  return tz2 || (tz2=TZrules.NT_YK(32400,"Y%sT")); +  return tz1 || (tz1=Ruleset.Timezone(33460,"LMT")); +  } + } +  + class America_Cancun + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=902008800) // from 1998 Aug 2 2:00 +  return tz3 || (tz3=TZrules.Mexico(21600,"C%sT")); +  if (ux>=875646000) // from 1997 Oct lastSun 2:00 +  return tz4 || (tz4=TZrules.Mexico(18000,"E%sT")); +  if (ux>=820476000) // from 1996 +  return tz3 || (tz3=TZrules.Mexico(21600,"C%sT")); +  if (ux>=-1514743200) // from 1922 Jan 1 0:12:56 +  return tz2 || (tz2=Ruleset.Timezone(21600,"CST")); +  return tz1 || (tz1=Ruleset.Timezone(20824,"LMT")); +  } + } +  + class America_Mexico_City + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1191434400) // from 1932 Mar 30 23:00 +  return tz4 || (tz4=TZrules.Mexico(21600,"C%sT")); +  if (ux>=-1207159200) // from 1931 Oct +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1220292000) // from 1931 May 1 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1234807200) // from 1930 Nov 15 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1343066400) // from 1927 Jun 10 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1514739600) // from 1922 Jan 1 0:23:24 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  return tz1 || (tz1=Ruleset.Timezone(23796,"LMT")); +  } + } + constant Mexico_General=America_Mexico_City; +  + class America_Chihuahua + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=891410400) // from 1998 Apr Sun>=1 3:00 +  return tz5 || (tz5=TZrules.Mexico(25200,"M%sT")); +  if (ux>=883591200) // from 1998 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=820476000) // from 1996 +  return tz4 || (tz4=TZrules.Mexico(21600,"C%sT")); +  if (ux>=-1191434400) // from 1932 Mar 30 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1207159200) // from 1931 Oct +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1220292000) // from 1931 May 1 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1234807200) // from 1930 Nov 15 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1343066400) // from 1927 Jun 10 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1514739600) // from 1921 Dec 31 23:55:40 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  return tz1 || (tz1=Ruleset.Timezone(25460,"LMT")); +  } + } +  + class America_Hermosillo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=915123600) // from 1999 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=28800) // from 1970 +  return tz5 || (tz5=TZrules.Mexico(25200,"M%sT")); +  if (ux>=-661539600) // from 1949 Jan 14 +  return tz4 || (tz4=Ruleset.Timezone(28800,"PST")); +  if (ux>=-875815200) // from 1942 Apr +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1191434400) // from 1932 Mar 30 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1207159200) // from 1931 Oct +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1220292000) // from 1931 May 1 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1234807200) // from 1930 Nov 15 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1343066400) // from 1927 Jun 10 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1514739600) // from 1921 Dec 31 23:36:08 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  return tz1 || (tz1=Ruleset.Timezone(26632,"LMT")); +  } + } +  + class America_Mazatlan + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=28800) // from 1970 +  return tz5 || (tz5=TZrules.Mexico(25200,"M%sT")); +  if (ux>=-661539600) // from 1949 Jan 14 +  return tz4 || (tz4=Ruleset.Timezone(28800,"PST")); +  if (ux>=-875815200) // from 1942 Apr +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1191434400) // from 1932 Mar 30 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1207159200) // from 1931 Oct +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1220292000) // from 1931 May 1 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1234807200) // from 1930 Nov 15 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1343066400) // from 1927 Jun 10 23:00 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-1514739600) // from 1921 Dec 31 23:54:20 +  return tz2 || (tz2=Ruleset.Timezone(25200,"MST")); +  return tz1 || (tz1=Ruleset.Timezone(25540,"LMT")); +  } + } + constant Mexico_BajaSur=America_Mazatlan; +  + class America_Tijuana + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=820425600) // from 1996 +  return tz6 || (tz6=TZrules.Mexico(28800,"P%sT")); +  if (ux>=189273600) // from 1976 +  return tz5 || (tz5=TZrules.US(28800,"P%sT")); +  if (ux>=-661539600) // from 1949 Jan 14 +  return tz4 || (tz4=TZrules.BajaN(28800,"P%sT")); +  if (ux>=-875808000) // from 1942 Apr +  return tz3 || (tz3=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1234717200) // from 1930 Nov 16 +  return tz2 || (tz2=Ruleset.Timezone(28800,"PST")); +  if (ux>=-1343062800) // from 1927 Jun 10 23:00 +  return tz3 || (tz3=Ruleset.Timezone(25200,"MST")); +  if (ux>=-1514736000) // from 1922 Jan 1 0:11:56 +  return tz2 || (tz2=Ruleset.Timezone(28800,"PST")); +  return tz1 || (tz1=Ruleset.Timezone(28084,"LMT")); +  } + } + constant America_Ensenada=America_Tijuana; + constant Mexico_BajaNorte=America_Tijuana; +  + class America_Anguilla + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1825098464) // from 1912 Mar 2 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  return tz1 || (tz1=Ruleset.Timezone(15136,"LMT")); +  } + } +  + class America_Antigua + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-599598000) // from 1951 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=-1825098768) // from 1912 Mar 2 +  return tz2 || (tz2=Ruleset.Timezone(18000,"EST")); +  return tz1 || (tz1=Ruleset.Timezone(14832,"LMT")); +  } + } +  + class America_Nassau + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1825095036) // from 1912 Mar 2 +  return tz2 || (tz2=TZrules.Bahamas(18000,"E%sT")); +  return tz1 || (tz1=Ruleset.Timezone(18564,"LMT")); +  } + } +  + class America_Barbados + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1199217692) // from 1932 +  return tz3 || (tz3=TZrules.Barb(14400,"A%sT")); +  if (ux>=-1451678492) // from 1924 Bridgetown Mean Time +  return tz2 || (tz2=Ruleset.Timezone(14308,"BMT")); +  // Bridgetown +  return tz1 || (tz1=Ruleset.Timezone(14308,"LMT")); +  } + } +  + class America_Belize + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1822500432) // from 1912 Apr +  return tz2 || (tz2=TZrules.Belize(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(21168,"LMT")); +  } + } +  + class Atlantic_Bermuda + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=136360800) // from 1974 Apr 28 2:00 +  return tz3 || (tz3=TZrules.Bahamas(14400,"A%sT")); +  if (ux>=-1262281256) // from 1930 Jan 1 2:00 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Hamilton +  return tz1 || (tz1=Ruleset.Timezone(15544,"LMT")); +  } + } +  + class America_Cayman + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1827687168) // from 1912 Feb +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=-2524502068) // from 1890 Kingston Mean Time +  return tz2 || (tz2=Ruleset.Timezone(18432,"KMT")); +  // Georgetown +  return tz1 || (tz1=Ruleset.Timezone(19532,"LMT")); +  } + } +  + class America_Costa_Rica + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1545071020) // from 1921 Jan 15 +  return tz3 || (tz3=TZrules.CR(21600,"C%sT")); +  if (ux>=-2524501420) // from 1890 San Jose Mean Time +  return tz2 || (tz2=Ruleset.Timezone(20180,"SJMT")); +  // San Jose +  return tz1 || (tz1=Ruleset.Timezone(20180,"LMT")); +  } + } +  + class America_Havana + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1402813824) // from 1925 Jul 19 12:00 +  return tz3 || (tz3=TZrules.Cuba(18000,"C%sT")); +  if (ux>=-2524501832) // from 1890 Havana MT +  return tz2 || (tz2=Ruleset.Timezone(19776,"HMT")); +  return tz1 || (tz1=Ruleset.Timezone(19768,"LMT")); +  } + } + constant Cuba=America_Havana; +  + class America_Dominica + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846266804) // from 1911 Jul 1 0:01 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Roseau +  return tz1 || (tz1=Ruleset.Timezone(14736,"LMT")); +  } + } +  + class America_Santo_Domingo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=152046000) // from 1974 Oct 27 +  return tz4 || (tz4=Ruleset.Timezone(14400,"AST")); +  if (ux>=-1159773600) // from 1933 Apr 1 12:00 +  return tz3 || (tz3=TZrules.DR(18000,"E%sT")); +  if (ux>=-2524504824) // from 1890 S. Dom. MT +  return tz2 || (tz2=Ruleset.Timezone(16800,"SDMT")); +  return tz1 || (tz1=Ruleset.Timezone(16776,"LMT")); +  } + } +  + class America_El_Salvador + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1546279392) // from 1921 +  return tz2 || (tz2=TZrules.Salv(21600,"C%sT")); +  // San Salvador +  return tz1 || (tz1=Ruleset.Timezone(21408,"LMT")); +  } + } +  + class America_Grenada + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846266780) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // St George's +  return tz1 || (tz1=Ruleset.Timezone(14820,"LMT")); +  } + } +  + class America_Guadeloupe + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1848254032) // from 1911 Jun 8 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Pointe a Pitre +  return tz1 || (tz1=Ruleset.Timezone(14768,"LMT")); +  } + } +  + class America_Guatemala + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1617040676) // from 1918 Oct 5 +  return tz2 || (tz2=TZrules.Guat(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(21724,"LMT")); +  } + } +  + class America_Port_au_Prince + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1670483460) // from 1917 Jan 24 12:00 +  return tz3 || (tz3=TZrules.Haiti(18000,"E%sT")); +  if (ux>=-2524504240) // from 1890 P-a-P MT +  return tz2 || (tz2=Ruleset.Timezone(17340,"PPMT")); +  return tz1 || (tz1=Ruleset.Timezone(17360,"LMT")); +  } + } +  + class America_Tegucigalpa + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1538503868) // from 1921 Apr +  return tz2 || (tz2=TZrules.Salv(21600,"C%sT")); +  return tz1 || (tz1=Ruleset.Timezone(20932,"LMT")); +  } + } +  + class America_Jamaica + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=441745200) // from 1984 +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=136364400) // from 1974 Apr 28 2:00 +  return tz4 || (tz4=TZrules.US(18000,"E%sT")); +  if (ux>=-1827687168) // from 1912 Feb +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=-2524503168) // from 1890 Kingston Mean Time +  return tz2 || (tz2=Ruleset.Timezone(18432,"KMT")); +  // Kingston +  return tz1 || (tz1=Ruleset.Timezone(18432,"LMT")); +  } + } + constant Jamaica=America_Jamaica; +  + class America_Martinique + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=338958000) // from 1980 Sep 28 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=323841600) // from 1980 Apr 6 +  return tz4 || (tz4=Ruleset.Timezone(10800,"ADT")); +  if (ux>=-1851537360) // from 1911 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=-2524506940) // from 1890 Fort-de-France MT +  return tz2 || (tz2=Ruleset.Timezone(14640,"FFMT")); +  // Fort-de-France +  return tz1 || (tz1=Ruleset.Timezone(14660,"LMT")); +  } + } +  + class America_Montserrat + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846266608) // from 1911 Jul 1 0:01 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Olveston +  return tz1 || (tz1=Ruleset.Timezone(14932,"LMT")); +  } + } +  + class America_Managua + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=912488400) // from 1998 Dec +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=725839200) // from 1993 Jan 1 4:00 +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=161758800) // from 1975 Feb 16 +  return tz5 || (tz5=TZrules.Nic(21600,"C%sT")); +  if (ux>=105084000) // from 1973 May +  return tz4 || (tz4=Ruleset.Timezone(18000,"EST")); +  if (ux>=-1121105700) // from 1934 Jun 23 +  return tz3 || (tz3=Ruleset.Timezone(21600,"CST")); +  if (ux>=-2524500892) // from 1890 Managua Mean Time +  return tz2 || (tz2=Ruleset.Timezone(20700,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(20708,"LMT")); +  } + } +  + class America_Panama + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1946918400) // from 1908 Apr 22 +  return tz3 || (tz3=Ruleset.Timezone(18000,"EST")); +  if (ux>=-2524502512) // from 1890 Panama Mean Time +  return tz2 || (tz2=Ruleset.Timezone(19200,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(19088,"LMT")); +  } + } +  + class America_Puerto_Rico + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-765399600) // from 1945 Sep 30 2:00 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  if (ux>=-873057600) // from 1942 May 3 +  return tz3 || (tz3=Ruleset.Timezone(10800,"AWT")); +  if (ux>=-2233035335) // from 1899 Mar 28 12:00 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // San Juan +  return tz1 || (tz1=Ruleset.Timezone(15865,"LMT")); +  } + } +  + class America_St_Kitts + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1825098548) // from 1912 Mar 2 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Basseterre +  return tz1 || (tz1=Ruleset.Timezone(15052,"LMT")); +  } + } +  + class America_St_Lucia + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830369360) // from 1912 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=-2524506960) // from 1890 Castries Mean Time +  return tz2 || (tz2=Ruleset.Timezone(14640,"CMT")); +  // Castries +  return tz1 || (tz1=Ruleset.Timezone(14640,"LMT")); +  } + } +  + class America_Miquelon + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=326001600) // from 1980 May Pierre & Miquelon Time +  return tz3 || (tz3=TZrules.Mont(10800,"PM%sT")); +  if (ux>=-1850328920) // from 1911 May 15 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // St Pierre +  return tz1 || (tz1=Ruleset.Timezone(13480,"LMT")); +  } + } +  + class America_St_Vincent + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1830369304) // from 1912 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=-2524506904) // from 1890 Kingstown Mean Time +  return tz2 || (tz2=Ruleset.Timezone(14696,"KMT")); +  // Kingstown +  return tz1 || (tz1=Ruleset.Timezone(14696,"LMT")); +  } + } +  + class America_Grand_Turk + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1827687168) // from 1912 Feb +  return tz3 || (tz3=TZrules.TC(18000,"E%sT")); +  if (ux>=-2524504528) // from 1890 Kingston Mean Time +  return tz2 || (tz2=Ruleset.Timezone(18432,"KMT")); +  return tz1 || (tz1=Ruleset.Timezone(17072,"LMT")); +  } + } +  + class America_Tortola + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846266092) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Road Town +  return tz1 || (tz1=Ruleset.Timezone(15508,"LMT")); +  } + } +  + class America_St_Thomas + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1846266016) // from 1911 Jul +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  // Charlotte Amalie +  return tz1 || (tz1=Ruleset.Timezone(15584,"LMT")); +  } + } + constant America_Virgin=America_St_Thomas; +  + class America_Buenos_Aires + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=-1233432000) // from 1930 Dec +  return tz4 || (tz4=TZrules.Arg(14400,"AR%sT")); +  if (ux>=-1567453396) // from 1920 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"ART")); +  if (ux>=-2372011572) // from 1894 Nov Cordoba Mean Time +  return tz2 || (tz2=Ruleset.Timezone(15404,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(14028,"LMT")); +  } + } +  + class America_Rosario + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=678315600) // from 1991 Jul +  return tz6 || (tz6=Ruleset.Timezone(10800,"ART")); +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=-1233432000) // from 1930 Dec +  return tz4 || (tz4=TZrules.Arg(14400,"AR%sT")); +  if (ux>=-1567453396) // from 1920 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"ART")); +  if (ux>=-2372011040) // from 1894 Nov +  return tz2 || (tz2=Ruleset.Timezone(15404,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(14560,"LMT")); +  } + } +  + class America_Cordoba + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=646779600) // from 1990 Jul +  return tz6 || (tz6=Ruleset.Timezone(10800,"ART")); +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=-1233432000) // from 1930 Dec +  return tz4 || (tz4=TZrules.Arg(14400,"AR%sT")); +  if (ux>=-1567453396) // from 1920 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"ART")); +  if (ux>=-2372010196) // from 1894 Nov +  return tz2 || (tz2=Ruleset.Timezone(15404,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(15404,"LMT")); +  } + } +  + class America_Jujuy + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=719380800) // from 1992 Oct 18 +  return tz8 || (tz8=Ruleset.Timezone(10800,"ART")); +  if (ux>=700628400) // from 1992 Mar 15 +  return tz6 || (tz6=Ruleset.Timezone(14400,"WART")); +  if (ux>=686721600) // from 1991 Oct 6 +  return tz7 || (tz7=Ruleset.Timezone(10800,"WARST")); +  if (ux>=667947600) // from 1991 Mar 3 +  return tz6 || (tz6=Ruleset.Timezone(14400,"WART")); +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=-1233432000) // from 1930 Dec +  return tz4 || (tz4=TZrules.Arg(14400,"AR%sT")); +  if (ux>=-1567453396) // from 1920 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"ART")); +  if (ux>=-2372009928) // from 1894 Nov +  return tz2 || (tz2=Ruleset.Timezone(15404,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(15672,"LMT")); +  } + } +  + class America_Catamarca + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=709938000) // from 1992 Jul +  return tz6 || (tz6=Ruleset.Timezone(10800,"ART")); +  if (ux>=678337200) // from 1991 Jul +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=646779600) // from 1990 Jul +  return tz6 || (tz6=Ruleset.Timezone(10800,"ART")); +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=-1233432000) // from 1930 Dec +  return tz4 || (tz4=TZrules.Arg(14400,"AR%sT")); +  if (ux>=-1567453396) // from 1920 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"ART")); +  if (ux>=-2372009812) // from 1894 Nov +  return tz2 || (tz2=Ruleset.Timezone(15404,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(15788,"LMT")); +  } + } +  + class America_Mendoza + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6,tz7,tz8; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=719380800) // from 1992 Oct 18 +  return tz8 || (tz8=Ruleset.Timezone(10800,"ART")); +  if (ux>=699418800) // from 1992 Mar 1 +  return tz6 || (tz6=Ruleset.Timezone(14400,"WART")); +  if (ux>=687499200) // from 1991 Oct 15 +  return tz7 || (tz7=Ruleset.Timezone(10800,"WARST")); +  if (ux>=667947600) // from 1991 Mar 3 +  return tz6 || (tz6=Ruleset.Timezone(14400,"WART")); +  if (ux>=-7617600) // from 1969 Oct 5 +  return tz5 || (tz5=TZrules.Arg(10800,"AR%sT")); +  if (ux>=-1233432000) // from 1930 Dec +  return tz4 || (tz4=TZrules.Arg(14400,"AR%sT")); +  if (ux>=-1567453396) // from 1920 May +  return tz3 || (tz3=Ruleset.Timezone(14400,"ART")); +  if (ux>=-2372009084) // from 1894 Nov +  return tz2 || (tz2=Ruleset.Timezone(15404,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(16516,"LMT")); +  } + } +  + class America_Aruba + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-157750200) // from 1965 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=-1826738376) // from 1912 Feb 12 Netherlands Antilles Time +  return tz2 || (tz2=Ruleset.Timezone(16200,"ANT")); +  // Oranjestad +  return tz1 || (tz1=Ruleset.Timezone(16824,"LMT")); +  } + } +  + class America_La_Paz + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1192307244) // from 1932 Mar 21 Bolivia Time +  return tz4 || (tz4=Ruleset.Timezone(14400,"BOT")); +  if (ux>=-1205954844) // from 1931 Oct 15 Bolivia ST +  return tz3 || (tz3=Ruleset.Timezone(12756,"BOST")); +  if (ux>=-2524505244) // from 1890 La Paz Mean Time +  return tz2 || (tz2=Ruleset.Timezone(16356,"LPMT")); +  return tz1 || (tz1=Ruleset.Timezone(16356,"LMT")); +  } + } +  + class America_Noronha + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=653522400) // from 1990 Sep 17 +  return tz3 || (tz3=Ruleset.Timezone(7200,"FNT")); +  if (ux>=-1767217820) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(7200,"FN%sT")); +  return tz1 || (tz1=Ruleset.Timezone(7780,"LMT")); +  } + } + constant Brazil_DeNoronha=America_Noronha; +  + class America_Belem + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=590014800) // from 1988 Sep 12 +  return tz3 || (tz3=Ruleset.Timezone(10800,"BRT")); +  if (ux>=-1767213964) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  return tz1 || (tz1=Ruleset.Timezone(11636,"LMT")); +  } + } +  + class America_Fortaleza + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=938660400) // from 1999 Sep 30 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  if (ux>=653518800) // from 1990 Sep 17 +  return tz3 || (tz3=Ruleset.Timezone(10800,"BRT")); +  if (ux>=-1767216360) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  return tz1 || (tz1=Ruleset.Timezone(9240,"LMT")); +  } + } +  + class America_Araguaina + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=811047600) // from 1995 Sep 14 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  if (ux>=653518800) // from 1990 Sep 17 +  return tz3 || (tz3=Ruleset.Timezone(10800,"BRT")); +  if (ux>=-1767214032) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  return tz1 || (tz1=Ruleset.Timezone(11568,"LMT")); +  } + } +  + class America_Maceio + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=938660400) // from 1999 Sep 30 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  if (ux>=841784400) // from 1996 Sep 4 +  return tz3 || (tz3=Ruleset.Timezone(10800,"BRT")); +  if (ux>=813553200) // from 1995 Oct 13 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  if (ux>=653518800) // from 1990 Sep 17 +  return tz3 || (tz3=Ruleset.Timezone(10800,"BRT")); +  if (ux>=-1767217028) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  return tz1 || (tz1=Ruleset.Timezone(8572,"LMT")); +  } + } +  + class America_Sao_Paulo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-189381600) // from 1964 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  if (ux>=-195447600) // from 1963 Oct 23 00:00 +  return tz3 || (tz3=Ruleset.Timezone(7200,"BRST")); +  if (ux>=-1767214412) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(10800,"BR%sT")); +  return tz1 || (tz1=Ruleset.Timezone(11188,"LMT")); +  } + } + constant Brazil_East=America_Sao_Paulo; +  + class America_Cuiaba + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1767212140) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(14400,"AM%sT")); +  return tz1 || (tz1=Ruleset.Timezone(13460,"LMT")); +  } + } +  + class America_Porto_Velho + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=590011200) // from 1988 Sep 12 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AMT")); +  if (ux>=-1767210264) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(14400,"AM%sT")); +  return tz1 || (tz1=Ruleset.Timezone(15336,"LMT")); +  } + } +  + class America_Boa_Vista + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=938664000) // from 1999 Sep 30 +  return tz2 || (tz2=TZrules.Brazil(14400,"AM%sT")); +  if (ux>=590011200) // from 1988 Sep 12 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AMT")); +  if (ux>=-1767211040) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(14400,"AM%sT")); +  return tz1 || (tz1=Ruleset.Timezone(14560,"LMT")); +  } + } +  + class America_Manaus + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=780177600) // from 1994 Sep 22 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AMT")); +  if (ux>=749188800) // from 1993 Sep 28 +  return tz2 || (tz2=TZrules.Brazil(14400,"AM%sT")); +  if (ux>=590011200) // from 1988 Sep 12 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AMT")); +  if (ux>=-1767211196) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(14400,"AM%sT")); +  return tz1 || (tz1=Ruleset.Timezone(14404,"LMT")); +  } + } + constant Brazil_West=America_Manaus; +  + class America_Porto_Acre + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=590007600) // from 1988 Sep 12 +  return tz3 || (tz3=Ruleset.Timezone(18000,"ACT")); +  if (ux>=-1767209328) // from 1914 +  return tz2 || (tz2=TZrules.Brazil(18000,"AC%sT")); +  return tz1 || (tz1=Ruleset.Timezone(16272,"LMT")); +  } + } + constant Brazil_Acre=America_Porto_Acre; +  + class America_Santiago + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1178168400) // from 1932 Sep +  return tz4 || (tz4=TZrules.Chile(14400,"CL%sT")); +  if (ux>=-1893439040) // from 1910 Chile Time +  return tz3 || (tz3=TZrules.Chile(18000,"CL%sT")); +  if (ux>=-2524504640) // from 1890 Santiago Mean Time +  return tz2 || (tz2=Ruleset.Timezone(16960,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(16960,"LMT")); +  } + } + constant Chile_Continental=America_Santiago; +  + class Pacific_Easter + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=384886800) // from 1982 Mar 14 +  return tz4 || (tz4=TZrules.Chile(21600,"EAS%sT")); +  if (ux>=-1178124152) // from 1932 Sep Easter I Time +  return tz3 || (tz3=TZrules.Chile(25200,"EAS%sT")); +  if (ux>=-2524495352) // from 1890 Mataveri Mean Time +  return tz2 || (tz2=Ruleset.Timezone(26248,"MMT")); +  // Mataveri +  return tz1 || (tz1=Ruleset.Timezone(26248,"LMT")); +  } + } + constant Chile_EasterIsland=Pacific_Easter; +  + class America_Bogota + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1739041420) // from 1914 Nov 23 Colombia Time +  return tz3 || (tz3=TZrules.CO(18000,"CO%sT")); +  if (ux>=-2707671820) // from 1884 Mar 13 Bogota Mean Time +  return tz2 || (tz2=Ruleset.Timezone(17780,"BMT")); +  return tz1 || (tz1=Ruleset.Timezone(17780,"LMT")); +  } + } +  + class America_Curacao + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-157750200) // from 1965 +  return tz3 || (tz3=Ruleset.Timezone(14400,"AST")); +  if (ux>=-1826738656) // from 1912 Feb 12 Netherlands Antilles Time +  return tz2 || (tz2=Ruleset.Timezone(16200,"ANT")); +  // Willemstad +  return tz1 || (tz1=Ruleset.Timezone(16544,"LMT")); +  } + } +  + class America_Guayaquil + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1230749160) // from 1931 Ecuador Time +  return tz3 || (tz3=Ruleset.Timezone(18000,"ECT")); +  if (ux>=-2524502440) // from 1890 Quito Mean Time +  return tz2 || (tz2=Ruleset.Timezone(18840,"QMT")); +  return tz1 || (tz1=Ruleset.Timezone(19160,"LMT")); +  } + } +  + class Pacific_Galapagos + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=504939600) // from 1986 Galapagos Time +  return tz3 || (tz3=Ruleset.Timezone(21600,"GALT")); +  if (ux>=-1230746496) // from 1931 +  return tz2 || (tz2=Ruleset.Timezone(18000,"ECT")); +  // Puerto Baquerizo Moreno +  return tz1 || (tz1=Ruleset.Timezone(21504,"LMT")); +  } + } +  + class Atlantic_Stanley + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=495579600) // from 1985 Sep 15 +  return tz3 || (tz3=TZrules.Falk(14400,"FK%sT")); +  if (ux>=420580800) // from 1983 May +  return tz4 || (tz4=TZrules.Falk(10800,"FK%sT")); +  if (ux>=-1824235716) // from 1912 Mar 12 Falkland Is Time +  return tz3 || (tz3=TZrules.Falk(14400,"FK%sT")); +  if (ux>=-2524507716) // from 1890 Stanley Mean Time +  return tz2 || (tz2=Ruleset.Timezone(13884,"SMT")); +  return tz1 || (tz1=Ruleset.Timezone(13884,"LMT")); +  } + } +  + class America_Cayenne + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-71092800) // from 1967 Oct +  return tz3 || (tz3=Ruleset.Timezone(10800,"GFT")); +  if (ux>=-1846269040) // from 1911 Jul French Guiana Time +  return tz2 || (tz2=Ruleset.Timezone(14400,"GFT")); +  return tz1 || (tz1=Ruleset.Timezone(12560,"LMT")); +  } + } +  + class America_Guyana + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=662698800) // from 1991 +  return tz5 || (tz5=Ruleset.Timezone(14400,"GYT")); +  if (ux>=176010300) // from 1975 Jul 31 +  return tz4 || (tz4=Ruleset.Timezone(10800,"GYT")); +  if (ux>=-113688900) // from 1966 May 26 Guyana Time +  return tz3 || (tz3=Ruleset.Timezone(13500,"GYT")); +  if (ux>=-1730578040) // from 1915 Mar Br Guiana Time +  return tz2 || (tz2=Ruleset.Timezone(13500,"GBGT")); +  // Georgetown +  return tz1 || (tz1=Ruleset.Timezone(13960,"LMT")); +  } + } +  + class America_Asuncion + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=134017200) // from 1974 Apr +  return tz5 || (tz5=TZrules.Para(14400,"PY%sT")); +  if (ux>=86760000) // from 1972 Oct +  return tz4 || (tz4=Ruleset.Timezone(10800,"PYT")); +  if (ux>=-1206389360) // from 1931 Oct 10 Paraguay Time +  return tz3 || (tz3=Ruleset.Timezone(14400,"PYT")); +  if (ux>=-2524507760) // from 1890 Asuncion Mean Time +  return tz2 || (tz2=Ruleset.Timezone(13840,"AMT")); +  return tz1 || (tz1=Ruleset.Timezone(13840,"LMT")); +  } + } +  + class America_Lima + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1938538260) // from 1908 Jul 28 Peru Time +  return tz3 || (tz3=TZrules.Peru(18000,"PE%sT")); +  if (ux>=-2524503108) // from 1890 Lima Mean Time +  return tz2 || (tz2=Ruleset.Timezone(18540,"LMT")); +  return tz1 || (tz1=Ruleset.Timezone(18492,"LMT")); +  } + } +  + class Atlantic_South_Georgia + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-2524512832) // from 1890 South Georgia Time +  return tz2 || (tz2=Ruleset.Timezone(7200,"GST")); +  // Grytviken +  return tz1 || (tz1=Ruleset.Timezone(8768,"LMT")); +  } + } +  + class America_Paramaribo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4,tz5,tz6; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=465449400) // from 1984 Oct +  return tz6 || (tz6=Ruleset.Timezone(10800,"SRT")); +  if (ux>=185686200) // from 1975 Nov 20 Suriname Time +  return tz5 || (tz5=Ruleset.Timezone(12600,"SRT")); +  if (ux>=-765317964) // from 1945 Oct Dutch Guiana Time +  return tz4 || (tz4=Ruleset.Timezone(12600,"NEGT")); +  if (ux>=-1104524348) // from 1935 The capital moved? +  return tz3 || (tz3=Ruleset.Timezone(13236,"PMT")); +  if (ux>=-1861906760) // from 1911 Paramaribo Mean Time +  return tz2 || (tz2=Ruleset.Timezone(13252,"PMT")); +  return tz1 || (tz1=Ruleset.Timezone(13240,"LMT")); +  } + } +  + class America_Port_of_Spain + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-1825098836) // from 1912 Mar 2 +  return tz2 || (tz2=Ruleset.Timezone(14400,"AST")); +  return tz1 || (tz1=Ruleset.Timezone(14764,"LMT")); +  } + } +  + class America_Montevideo + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-853641000) // from 1942 Dec 14 +  return tz4 || (tz4=TZrules.Uruguay(10800,"UY%sT")); +  if (ux>=-1567455316) // from 1920 May 1 Uruguay Time +  return tz3 || (tz3=TZrules.Uruguay(12600,"UY%sT")); +  if (ux>=-2256668116) // from 1898 Jun 28 Montevideo MT +  return tz2 || (tz2=Ruleset.Timezone(13484,"MMT")); +  return tz1 || (tz1=Ruleset.Timezone(13484,"LMT")); +  } + } +  + class America_Caracas + { +  inherit TZHistory; +  Ruleset.Timezone tz1,tz2,tz3,tz4; +  Ruleset.Timezone whatrule(int ux) +  { +  if (ux>=-157750200) // from 1965 +  return tz4 || (tz4=Ruleset.Timezone(14400,"VET")); +  if (ux>=-1826739136) // from 1912 Feb 12 Venezuela Time +  return tz3 || (tz3=Ruleset.Timezone(16200,"VET")); +  if (ux>=-2524505536) // from 1890 Caracas Mean Time +  return tz2 || (tz2=Ruleset.Timezone(16064,"CMT")); +  return tz1 || (tz1=Ruleset.Timezone(16064,"LMT")); +  } + } +  +  + // ----------------------------------------------------------------------   Newline at end of file added.