timezone 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1075) hide show
  1. data/CHANGES.markdown +14 -0
  2. data/CONTRIBUTING.markdown +3 -2
  3. data/Rakefile +6 -0
  4. data/data/Africa/Abidjan +2 -0
  5. data/data/Africa/Accra +48 -0
  6. data/data/Africa/Addis_Ababa +3 -0
  7. data/data/Africa/Algiers +35 -0
  8. data/data/Africa/Asmara +4 -0
  9. data/data/Africa/Asmera +4 -0
  10. data/data/Africa/Bamako +2 -0
  11. data/data/Africa/Bangui +2 -0
  12. data/data/Africa/Banjul +2 -0
  13. data/data/Africa/Bissau +3 -0
  14. data/data/Africa/Blantyre +2 -0
  15. data/data/Africa/Brazzaville +2 -0
  16. data/data/Africa/Bujumbura +2 -0
  17. data/data/Africa/Cairo +1108 -0
  18. data/data/Africa/Casablanca +1026 -0
  19. data/data/Africa/Ceuta +1051 -0
  20. data/data/Africa/Conakry +2 -0
  21. data/data/Africa/Dakar +2 -0
  22. data/data/Africa/Dar_es_Salaam +4 -0
  23. data/data/Africa/Djibouti +2 -0
  24. data/data/Africa/Douala +2 -0
  25. data/data/Africa/El_Aaiun +1015 -0
  26. data/data/Africa/Freetown +2 -0
  27. data/data/Africa/Gaborone +2 -0
  28. data/data/Africa/Harare +2 -0
  29. data/data/Africa/Johannesburg +7 -0
  30. data/data/Africa/Juba +35 -0
  31. data/data/Africa/Kampala +5 -0
  32. data/data/Africa/Khartoum +35 -0
  33. data/data/Africa/Kigali +2 -0
  34. data/data/Africa/Kinshasa +2 -0
  35. data/data/Africa/Lagos +2 -0
  36. data/data/Africa/Libreville +2 -0
  37. data/data/Africa/Lome +2 -0
  38. data/data/Africa/Luanda +2 -0
  39. data/data/Africa/Lubumbashi +2 -0
  40. data/data/Africa/Lusaka +2 -0
  41. data/data/Africa/Malabo +2 -0
  42. data/data/Africa/Maputo +2 -0
  43. data/data/Africa/Maseru +7 -0
  44. data/data/Africa/Mbabane +7 -0
  45. data/data/Africa/Mogadishu +4 -0
  46. data/data/Africa/Monrovia +4 -0
  47. data/data/Africa/Nairobi +5 -0
  48. data/data/Africa/Ndjamena +4 -0
  49. data/data/Africa/Niamey +2 -0
  50. data/data/Africa/Nouakchott +2 -0
  51. data/data/Africa/Ouagadougou +2 -0
  52. data/data/Africa/Porto-Novo +2 -0
  53. data/data/Africa/Sao_Tome +2 -0
  54. data/data/Africa/Timbuktu +2 -0
  55. data/data/Africa/Tripoli +33 -0
  56. data/data/Africa/Tunis +35 -0
  57. data/data/Africa/Windhoek +1018 -0
  58. data/data/America/Adak +1070 -0
  59. data/data/America/Anchorage +1070 -0
  60. data/data/America/Anguilla +2 -0
  61. data/data/America/Antigua +3 -0
  62. data/data/America/Araguaina +52 -0
  63. data/data/America/Argentina/Buenos_Aires +62 -0
  64. data/data/America/Argentina/Catamarca +62 -0
  65. data/data/America/Argentina/ComodRivadavia +62 -0
  66. data/data/America/Argentina/Cordoba +62 -0
  67. data/data/America/Argentina/Jujuy +60 -0
  68. data/data/America/Argentina/La_Rioja +63 -0
  69. data/data/America/Argentina/Mendoza +62 -0
  70. data/data/America/Argentina/Rio_Gallegos +62 -0
  71. data/data/America/Argentina/Salta +60 -0
  72. data/data/America/Argentina/San_Juan +63 -0
  73. data/data/America/Argentina/San_Luis +63 -0
  74. data/data/America/Argentina/Tucuman +64 -0
  75. data/data/America/Argentina/Ushuaia +62 -0
  76. data/data/America/Aruba +3 -0
  77. data/data/America/Asuncion +1054 -0
  78. data/data/America/Atikokan +8 -0
  79. data/data/America/Atka +1070 -0
  80. data/data/America/Bahia +62 -0
  81. data/data/America/Bahia_Banderas +1018 -0
  82. data/data/America/Barbados +11 -0
  83. data/data/America/Belem +30 -0
  84. data/data/America/Belize +56 -0
  85. data/data/America/Blanc-Sablon +7 -0
  86. data/data/America/Boa_Vista +34 -0
  87. data/data/America/Bogota +5 -0
  88. data/data/America/Boise +1076 -0
  89. data/data/America/Buenos_Aires +62 -0
  90. data/data/America/Cambridge_Bay +1048 -0
  91. data/data/America/Campo_Grande +1053 -0
  92. data/data/America/Cancun +1012 -0
  93. data/data/America/Caracas +5 -0
  94. data/data/America/Catamarca +62 -0
  95. data/data/America/Cayenne +3 -0
  96. data/data/America/Cayman +3 -0
  97. data/data/America/Chicago +1161 -0
  98. data/data/America/Chihuahua +1015 -0
  99. data/data/America/Coral_Harbour +8 -0
  100. data/data/America/Cordoba +62 -0
  101. data/data/America/Costa_Rica +11 -0
  102. data/data/America/Creston +4 -0
  103. data/data/America/Cuiaba +1051 -0
  104. data/data/America/Curacao +3 -0
  105. data/data/America/Danmarkshavn +35 -0
  106. data/data/America/Dawson +1052 -0
  107. data/data/America/Dawson_Creek +59 -0
  108. data/data/America/Denver +1083 -0
  109. data/data/America/Detroit +1064 -0
  110. data/data/America/Dominica +2 -0
  111. data/data/America/Edmonton +1079 -0
  112. data/data/America/Eirunepe +34 -0
  113. data/data/America/El_Salvador +6 -0
  114. data/data/America/Ensenada +1074 -0
  115. data/data/America/Fort_Wayne +1024 -0
  116. data/data/America/Fortaleza +40 -0
  117. data/data/America/Glace_Bay +1065 -0
  118. data/data/America/Godthab +1042 -0
  119. data/data/America/Goose_Bay +1129 -0
  120. data/data/America/Grand_Turk +75 -0
  121. data/data/America/Grenada +2 -0
  122. data/data/America/Guadeloupe +2 -0
  123. data/data/America/Guatemala +10 -0
  124. data/data/America/Guayaquil +3 -0
  125. data/data/America/Guyana +5 -0
  126. data/data/America/Halifax +1153 -0
  127. data/data/America/Havana +1081 -0
  128. data/data/America/Hermosillo +16 -0
  129. data/data/America/Indiana/Indianapolis +1024 -0
  130. data/data/America/Indiana/Knox +1079 -0
  131. data/data/America/Indiana/Marengo +1028 -0
  132. data/data/America/Indiana/Petersburg +1041 -0
  133. data/data/America/Indiana/Tell_City +1026 -0
  134. data/data/America/Indiana/Vevay +1006 -0
  135. data/data/America/Indiana/Vincennes +1026 -0
  136. data/data/America/Indiana/Winamac +1032 -0
  137. data/data/America/Indianapolis +1024 -0
  138. data/data/America/Inuvik +1045 -0
  139. data/data/America/Iqaluit +1046 -0
  140. data/data/America/Jamaica +23 -0
  141. data/data/America/Jujuy +60 -0
  142. data/data/America/Juneau +1069 -0
  143. data/data/America/Kentucky/Louisville +1103 -0
  144. data/data/America/Kentucky/Monticello +1073 -0
  145. data/data/America/Knox_IN +1079 -0
  146. data/data/America/Kralendijk +3 -0
  147. data/data/America/La_Paz +4 -0
  148. data/data/America/Lima +17 -0
  149. data/data/America/Los_Angeles +1111 -0
  150. data/data/America/Louisville +1103 -0
  151. data/data/America/Lower_Princes +3 -0
  152. data/data/America/Maceio +42 -0
  153. data/data/America/Managua +17 -0
  154. data/data/America/Manaus +32 -0
  155. data/data/America/Marigot +2 -0
  156. data/data/America/Martinique +5 -0
  157. data/data/America/Matamoros +1012 -0
  158. data/data/America/Mazatlan +1018 -0
  159. data/data/America/Mendoza +62 -0
  160. data/data/America/Menominee +1068 -0
  161. data/data/America/Merida +1012 -0
  162. data/data/America/Metlakatla +36 -0
  163. data/data/America/Mexico_City +1023 -0
  164. data/data/America/Miquelon +1029 -0
  165. data/data/America/Moncton +1132 -0
  166. data/data/America/Monterrey +1012 -0
  167. data/data/America/Montevideo +1057 -0
  168. data/data/America/Montreal +1158 -0
  169. data/data/America/Montserrat +2 -0
  170. data/data/America/Nassau +1074 -0
  171. data/data/America/New_York +1161 -0
  172. data/data/America/Nipigon +1060 -0
  173. data/data/America/Nome +1070 -0
  174. data/data/America/Noronha +40 -0
  175. data/data/America/North_Dakota/Beulah +1075 -0
  176. data/data/America/North_Dakota/Center +1075 -0
  177. data/data/America/North_Dakota/New_Salem +1075 -0
  178. data/data/America/Ojinaga +1015 -0
  179. data/data/America/Panama +3 -0
  180. data/data/America/Pangnirtung +1047 -0
  181. data/data/America/Paramaribo +6 -0
  182. data/data/America/Phoenix +12 -0
  183. data/data/America/Port-au-Prince +1013 -0
  184. data/data/America/Port_of_Spain +2 -0
  185. data/data/America/Porto_Acre +32 -0
  186. data/data/America/Porto_Velho +30 -0
  187. data/data/America/Puerto_Rico +5 -0
  188. data/data/America/Rainy_River +1060 -0
  189. data/data/America/Rankin_Inlet +1044 -0
  190. data/data/America/Recife +40 -0
  191. data/data/America/Regina +54 -0
  192. data/data/America/Resolute +1044 -0
  193. data/data/America/Rio_Branco +32 -0
  194. data/data/America/Rosario +62 -0
  195. data/data/America/Santa_Isabel +1074 -0
  196. data/data/America/Santarem +31 -0
  197. data/data/America/Santiago +1084 -0
  198. data/data/America/Santo_Domingo +18 -0
  199. data/data/America/Sao_Paulo +1053 -0
  200. data/data/America/Scoresbysund +1042 -0
  201. data/data/America/Shiprock +1083 -0
  202. data/data/America/Sitka +1069 -0
  203. data/data/America/St_Barthelemy +2 -0
  204. data/data/America/St_Johns +1164 -0
  205. data/data/America/St_Kitts +2 -0
  206. data/data/America/St_Lucia +2 -0
  207. data/data/America/St_Thomas +2 -0
  208. data/data/America/St_Vincent +2 -0
  209. data/data/America/Swift_Current +24 -0
  210. data/data/America/Tegucigalpa +8 -0
  211. data/data/America/Thule +1020 -0
  212. data/data/America/Thunder_Bay +1064 -0
  213. data/data/America/Tijuana +1074 -0
  214. data/data/America/Toronto +1158 -0
  215. data/data/America/Tortola +2 -0
  216. data/data/America/Vancouver +1115 -0
  217. data/data/America/Virgin +2 -0
  218. data/data/America/Whitehorse +1052 -0
  219. data/data/America/Winnipeg +1111 -0
  220. data/data/America/Yakutat +1069 -0
  221. data/data/America/Yellowknife +1047 -0
  222. data/data/Antarctica/Casey +6 -0
  223. data/data/Antarctica/Davis +8 -0
  224. data/data/Antarctica/DumontDUrville +4 -0
  225. data/data/Antarctica/Macquarie +92 -0
  226. data/data/Antarctica/Mawson +3 -0
  227. data/data/Antarctica/McMurdo +1081 -0
  228. data/data/Antarctica/Palmer +1050 -0
  229. data/data/Antarctica/Rothera +2 -0
  230. data/data/Antarctica/South_Pole +1081 -0
  231. data/data/Antarctica/Syowa +2 -0
  232. data/data/Antarctica/Troll +992 -0
  233. data/data/Antarctica/Vostok +2 -0
  234. data/data/Arctic/Longyearbyen +1066 -0
  235. data/data/Asia/Aden +2 -0
  236. data/data/Asia/Almaty +49 -0
  237. data/data/Asia/Amman +1042 -0
  238. data/data/Asia/Anadyr +65 -0
  239. data/data/Asia/Aqtau +51 -0
  240. data/data/Asia/Aqtobe +50 -0
  241. data/data/Asia/Ashgabat +27 -0
  242. data/data/Asia/Ashkhabad +27 -0
  243. data/data/Asia/Baghdad +55 -0
  244. data/data/Asia/Bahrain +3 -0
  245. data/data/Asia/Baku +1036 -0
  246. data/data/Asia/Bangkok +3 -0
  247. data/data/Asia/Beirut +1066 -0
  248. data/data/Asia/Bishkek +53 -0
  249. data/data/Asia/Brunei +3 -0
  250. data/data/Asia/Calcutta +6 -0
  251. data/data/Asia/Chita +66 -0
  252. data/data/Asia/Choibalsan +48 -0
  253. data/data/Asia/Chongqing +18 -0
  254. data/data/Asia/Chungking +18 -0
  255. data/data/Asia/Colombo +9 -0
  256. data/data/Asia/Dacca +9 -0
  257. data/data/Asia/Damascus +1076 -0
  258. data/data/Asia/Dhaka +9 -0
  259. data/data/Asia/Dili +6 -0
  260. data/data/Asia/Dubai +2 -0
  261. data/data/Asia/Dushanbe +25 -0
  262. data/data/Asia/Gaza +1069 -0
  263. data/data/Asia/Harbin +18 -0
  264. data/data/Asia/Hebron +1071 -0
  265. data/data/Asia/Ho_Chi_Minh +10 -0
  266. data/data/Asia/Hong_Kong +70 -0
  267. data/data/Asia/Hovd +47 -0
  268. data/data/Asia/Irkutsk +67 -0
  269. data/data/Asia/Istanbul +1096 -0
  270. data/data/Asia/Jakarta +9 -0
  271. data/data/Asia/Jayapura +4 -0
  272. data/data/Asia/Jerusalem +1068 -0
  273. data/data/Asia/Kabul +3 -0
  274. data/data/Asia/Kamchatka +65 -0
  275. data/data/Asia/Karachi +12 -0
  276. data/data/Asia/Kashgar +2 -0
  277. data/data/Asia/Kathmandu +3 -0
  278. data/data/Asia/Katmandu +3 -0
  279. data/data/Asia/Khandyga +68 -0
  280. data/data/Asia/Kolkata +6 -0
  281. data/data/Asia/Krasnoyarsk +66 -0
  282. data/data/Asia/Kuala_Lumpur +9 -0
  283. data/data/Asia/Kuching +20 -0
  284. data/data/Asia/Kuwait +2 -0
  285. data/data/Asia/Macao +43 -0
  286. data/data/Asia/Macau +43 -0
  287. data/data/Asia/Magadan +66 -0
  288. data/data/Asia/Makassar +5 -0
  289. data/data/Asia/Manila +11 -0
  290. data/data/Asia/Muscat +2 -0
  291. data/data/Asia/Nicosia +1052 -0
  292. data/data/Asia/Novokuznetsk +66 -0
  293. data/data/Asia/Novosibirsk +67 -0
  294. data/data/Asia/Omsk +66 -0
  295. data/data/Asia/Oral +51 -0
  296. data/data/Asia/Phnom_Penh +3 -0
  297. data/data/Asia/Pontianak +9 -0
  298. data/data/Asia/Pyongyang +9 -0
  299. data/data/Asia/Qatar +3 -0
  300. data/data/Asia/Qyzylorda +51 -0
  301. data/data/Asia/Rangoon +5 -0
  302. data/data/Asia/Riyadh +2 -0
  303. data/data/Asia/Saigon +10 -0
  304. data/data/Asia/Sakhalin +67 -0
  305. data/data/Asia/Samarkand +26 -0
  306. data/data/Asia/Seoul +16 -0
  307. data/data/Asia/Shanghai +18 -0
  308. data/data/Asia/Singapore +10 -0
  309. data/data/Asia/Srednekolymsk +66 -0
  310. data/data/Asia/Taipei +42 -0
  311. data/data/Asia/Tashkent +26 -0
  312. data/data/Asia/Tbilisi +53 -0
  313. data/data/Asia/Tehran +101 -0
  314. data/data/Asia/Tel_Aviv +1068 -0
  315. data/data/Asia/Thimbu +3 -0
  316. data/data/Asia/Thimphu +3 -0
  317. data/data/Asia/Tokyo +12 -0
  318. data/data/Asia/Ujung_Pandang +5 -0
  319. data/data/Asia/Ulaanbaatar +47 -0
  320. data/data/Asia/Ulan_Bator +47 -0
  321. data/data/Asia/Urumqi +2 -0
  322. data/data/Asia/Ust-Nera +67 -0
  323. data/data/Asia/Vientiane +3 -0
  324. data/data/Asia/Vladivostok +66 -0
  325. data/data/Asia/Yakutsk +66 -0
  326. data/data/Asia/Yekaterinburg +67 -0
  327. data/data/Asia/Yerevan +64 -0
  328. data/data/Atlantic/Azores +1146 -0
  329. data/data/Atlantic/Bermuda +1054 -0
  330. data/data/Atlantic/Canary +1043 -0
  331. data/data/Atlantic/Cape_Verde +5 -0
  332. data/data/Atlantic/Faeroe +1040 -0
  333. data/data/Atlantic/Faroe +1040 -0
  334. data/data/Atlantic/Jan_Mayen +1066 -0
  335. data/data/Atlantic/Madeira +1146 -0
  336. data/data/Atlantic/Reykjavik +66 -0
  337. data/data/Atlantic/South_Georgia +2 -0
  338. data/data/Atlantic/St_Helena +2 -0
  339. data/data/Atlantic/Stanley +71 -0
  340. data/data/Australia/ACT +1067 -0
  341. data/data/Australia/Adelaide +1068 -0
  342. data/data/Australia/Brisbane +18 -0
  343. data/data/Australia/Broken_Hill +1069 -0
  344. data/data/Australia/Canberra +1067 -0
  345. data/data/Australia/Currie +1067 -0
  346. data/data/Australia/Darwin +11 -0
  347. data/data/Australia/Eucla +20 -0
  348. data/data/Australia/Hobart +1075 -0
  349. data/data/Australia/LHI +1040 -0
  350. data/data/Australia/Lindeman +22 -0
  351. data/data/Australia/Lord_Howe +1040 -0
  352. data/data/Australia/Melbourne +1067 -0
  353. data/data/Australia/NSW +1067 -0
  354. data/data/Australia/North +11 -0
  355. data/data/Australia/Perth +20 -0
  356. data/data/Australia/Queensland +18 -0
  357. data/data/Australia/South +1068 -0
  358. data/data/Australia/Sydney +1067 -0
  359. data/data/Australia/Tasmania +1075 -0
  360. data/data/Australia/Victoria +1067 -0
  361. data/data/Australia/West +20 -0
  362. data/data/Australia/Yancowinna +1069 -0
  363. data/data/Brazil/Acre +32 -0
  364. data/data/Brazil/DeNoronha +40 -0
  365. data/data/Brazil/East +1053 -0
  366. data/data/Brazil/West +32 -0
  367. data/data/CET +1061 -0
  368. data/data/CST6CDT +1074 -0
  369. data/data/Canada/Atlantic +1153 -0
  370. data/data/Canada/Central +1111 -0
  371. data/data/Canada/East-Saskatchewan +54 -0
  372. data/data/Canada/Eastern +1158 -0
  373. data/data/Canada/Mountain +1079 -0
  374. data/data/Canada/Newfoundland +1164 -0
  375. data/data/Canada/Pacific +1115 -0
  376. data/data/Canada/Saskatchewan +54 -0
  377. data/data/Canada/Yukon +1052 -0
  378. data/data/Chile/Continental +1084 -0
  379. data/data/Chile/EasterIsland +1069 -0
  380. data/data/Cuba +1081 -0
  381. data/data/EET +1047 -0
  382. data/data/EST +1 -0
  383. data/data/EST5EDT +1074 -0
  384. data/data/Egypt +1108 -0
  385. data/data/Eire +1153 -0
  386. data/data/Etc/GMT +1 -0
  387. data/data/Etc/GMT+0 +1 -0
  388. data/data/Etc/GMT+1 +1 -0
  389. data/data/Etc/GMT+10 +1 -0
  390. data/data/Etc/GMT+11 +1 -0
  391. data/data/Etc/GMT+12 +1 -0
  392. data/data/Etc/GMT+2 +1 -0
  393. data/data/Etc/GMT+3 +1 -0
  394. data/data/Etc/GMT+4 +1 -0
  395. data/data/Etc/GMT+5 +1 -0
  396. data/data/Etc/GMT+6 +1 -0
  397. data/data/Etc/GMT+7 +1 -0
  398. data/data/Etc/GMT+8 +1 -0
  399. data/data/Etc/GMT+9 +1 -0
  400. data/data/Etc/GMT-0 +1 -0
  401. data/data/Etc/GMT-1 +1 -0
  402. data/data/Etc/GMT-10 +1 -0
  403. data/data/Etc/GMT-11 +1 -0
  404. data/data/Etc/GMT-12 +1 -0
  405. data/data/Etc/GMT-13 +1 -0
  406. data/data/Etc/GMT-14 +1 -0
  407. data/data/Etc/GMT-2 +1 -0
  408. data/data/Etc/GMT-3 +1 -0
  409. data/data/Etc/GMT-4 +1 -0
  410. data/data/Etc/GMT-5 +1 -0
  411. data/data/Etc/GMT-6 +1 -0
  412. data/data/Etc/GMT-7 +1 -0
  413. data/data/Etc/GMT-8 +1 -0
  414. data/data/Etc/GMT-9 +1 -0
  415. data/data/Etc/GMT0 +1 -0
  416. data/data/Etc/Greenwich +1 -0
  417. data/data/Etc/UCT +1 -0
  418. data/data/Etc/UTC +1 -0
  419. data/data/Etc/Universal +1 -0
  420. data/data/Etc/Zulu +1 -0
  421. data/data/Europe/Amsterdam +1105 -0
  422. data/data/Europe/Andorra +1033 -0
  423. data/data/Europe/Athens +1063 -0
  424. data/data/Europe/Belfast +1167 -0
  425. data/data/Europe/Belgrade +1044 -0
  426. data/data/Europe/Berlin +1068 -0
  427. data/data/Europe/Bratislava +1067 -0
  428. data/data/Europe/Brussels +1110 -0
  429. data/data/Europe/Bucharest +1061 -0
  430. data/data/Europe/Budapest +1076 -0
  431. data/data/Europe/Busingen +1045 -0
  432. data/data/Europe/Chisinau +1064 -0
  433. data/data/Europe/Copenhagen +1059 -0
  434. data/data/Europe/Dublin +1153 -0
  435. data/data/Europe/Gibraltar +1123 -0
  436. data/data/Europe/Guernsey +1167 -0
  437. data/data/Europe/Helsinki +1043 -0
  438. data/data/Europe/Isle_of_Man +1167 -0
  439. data/data/Europe/Istanbul +1096 -0
  440. data/data/Europe/Jersey +1167 -0
  441. data/data/Europe/Kaliningrad +80 -0
  442. data/data/Europe/Kiev +1046 -0
  443. data/data/Europe/Lisbon +1146 -0
  444. data/data/Europe/Ljubljana +1044 -0
  445. data/data/Europe/London +1167 -0
  446. data/data/Europe/Luxembourg +1108 -0
  447. data/data/Europe/Madrid +1089 -0
  448. data/data/Europe/Malta +1094 -0
  449. data/data/Europe/Mariehamn +1043 -0
  450. data/data/Europe/Minsk +70 -0
  451. data/data/Europe/Monaco +1110 -0
  452. data/data/Europe/Moscow +79 -0
  453. data/data/Europe/Nicosia +1052 -0
  454. data/data/Europe/Oslo +1066 -0
  455. data/data/Europe/Paris +1109 -0
  456. data/data/Europe/Podgorica +1044 -0
  457. data/data/Europe/Prague +1067 -0
  458. data/data/Europe/Riga +1051 -0
  459. data/data/Europe/Rome +1095 -0
  460. data/data/Europe/Samara +66 -0
  461. data/data/Europe/San_Marino +1095 -0
  462. data/data/Europe/Sarajevo +1044 -0
  463. data/data/Europe/Simferopol +76 -0
  464. data/data/Europe/Skopje +1044 -0
  465. data/data/Europe/Sofia +1051 -0
  466. data/data/Europe/Stockholm +1045 -0
  467. data/data/Europe/Tallinn +1048 -0
  468. data/data/Europe/Tirane +1058 -0
  469. data/data/Europe/Tiraspol +1064 -0
  470. data/data/Europe/Uzhgorod +1045 -0
  471. data/data/Europe/Vaduz +1045 -0
  472. data/data/Europe/Vatican +1095 -0
  473. data/data/Europe/Vienna +1064 -0
  474. data/data/Europe/Vilnius +1045 -0
  475. data/data/Europe/Volgograd +66 -0
  476. data/data/Europe/Warsaw +1090 -0
  477. data/data/Europe/Zagreb +1044 -0
  478. data/data/Europe/Zaporozhye +1047 -0
  479. data/data/Europe/Zurich +1045 -0
  480. data/data/Factory +31 -0
  481. data/data/GB +1167 -0
  482. data/data/GB-Eire +1167 -0
  483. data/data/GMT +1 -0
  484. data/data/GMT+0 +1 -0
  485. data/data/GMT-0 +1 -0
  486. data/data/GMT0 +1 -0
  487. data/data/Greenwich +1 -0
  488. data/data/HST +1 -0
  489. data/data/Hongkong +70 -0
  490. data/data/Iceland +66 -0
  491. data/data/Indian/Antananarivo +4 -0
  492. data/data/Indian/Chagos +3 -0
  493. data/data/Indian/Christmas +2 -0
  494. data/data/Indian/Cocos +2 -0
  495. data/data/Indian/Comoro +2 -0
  496. data/data/Indian/Kerguelen +2 -0
  497. data/data/Indian/Mahe +2 -0
  498. data/data/Indian/Maldives +3 -0
  499. data/data/Indian/Mauritius +6 -0
  500. data/data/Indian/Mayotte +2 -0
  501. data/data/Indian/Reunion +2 -0
  502. data/data/Iran +101 -0
  503. data/data/Israel +1068 -0
  504. data/data/Jamaica +23 -0
  505. data/data/Japan +12 -0
  506. data/data/Kwajalein +4 -0
  507. data/data/Libya +33 -0
  508. data/data/MET +1061 -0
  509. data/data/MST +1 -0
  510. data/data/MST7MDT +1074 -0
  511. data/data/Mexico/BajaNorte +1074 -0
  512. data/data/Mexico/BajaSur +1018 -0
  513. data/data/Mexico/General +1023 -0
  514. data/data/NZ +1081 -0
  515. data/data/NZ-CHAT +1054 -0
  516. data/data/Navajo +1083 -0
  517. data/data/PRC +18 -0
  518. data/data/PST8PDT +1074 -0
  519. data/data/Pacific/Apia +984 -0
  520. data/data/Pacific/Auckland +1081 -0
  521. data/data/Pacific/Bougainville +6 -0
  522. data/data/Pacific/Chatham +1054 -0
  523. data/data/Pacific/Chuuk +2 -0
  524. data/data/Pacific/Easter +1069 -0
  525. data/data/Pacific/Efate +22 -0
  526. data/data/Pacific/Enderbury +4 -0
  527. data/data/Pacific/Fakaofo +3 -0
  528. data/data/Pacific/Fiji +987 -0
  529. data/data/Pacific/Funafuti +2 -0
  530. data/data/Pacific/Galapagos +3 -0
  531. data/data/Pacific/Gambier +2 -0
  532. data/data/Pacific/Guadalcanal +2 -0
  533. data/data/Pacific/Guam +4 -0
  534. data/data/Pacific/Honolulu +7 -0
  535. data/data/Pacific/Johnston +7 -0
  536. data/data/Pacific/Kiritimati +4 -0
  537. data/data/Pacific/Kosrae +4 -0
  538. data/data/Pacific/Kwajalein +4 -0
  539. data/data/Pacific/Majuro +3 -0
  540. data/data/Pacific/Marquesas +2 -0
  541. data/data/Pacific/Midway +6 -0
  542. data/data/Pacific/Nauru +5 -0
  543. data/data/Pacific/Niue +4 -0
  544. data/data/Pacific/Norfolk +3 -0
  545. data/data/Pacific/Noumea +8 -0
  546. data/data/Pacific/Pago_Pago +5 -0
  547. data/data/Pacific/Palau +2 -0
  548. data/data/Pacific/Pitcairn +3 -0
  549. data/data/Pacific/Pohnpei +2 -0
  550. data/data/Pacific/Ponape +2 -0
  551. data/data/Pacific/Port_Moresby +3 -0
  552. data/data/Pacific/Rarotonga +28 -0
  553. data/data/Pacific/Saipan +5 -0
  554. data/data/Pacific/Samoa +5 -0
  555. data/data/Pacific/Tahiti +2 -0
  556. data/data/Pacific/Tarawa +2 -0
  557. data/data/Pacific/Tongatapu +9 -0
  558. data/data/Pacific/Truk +2 -0
  559. data/data/Pacific/Wake +2 -0
  560. data/data/Pacific/Wallis +2 -0
  561. data/data/Pacific/Yap +2 -0
  562. data/data/Poland +1090 -0
  563. data/data/Portugal +1146 -0
  564. data/data/ROC +42 -0
  565. data/data/ROK +16 -0
  566. data/data/Singapore +10 -0
  567. data/data/Turkey +1096 -0
  568. data/data/UCT +1 -0
  569. data/data/US/Alaska +1070 -0
  570. data/data/US/Aleutian +1070 -0
  571. data/data/US/Arizona +12 -0
  572. data/data/US/Central +1161 -0
  573. data/data/US/East-Indiana +1024 -0
  574. data/data/US/Eastern +1161 -0
  575. data/data/US/Hawaii +7 -0
  576. data/data/US/Indiana-Starke +1079 -0
  577. data/data/US/Michigan +1064 -0
  578. data/data/US/Mountain +1083 -0
  579. data/data/US/Pacific +1111 -0
  580. data/data/US/Pacific-New +1111 -0
  581. data/data/US/Samoa +5 -0
  582. data/data/UTC +1 -0
  583. data/data/Universal +1 -0
  584. data/data/W-SU +79 -0
  585. data/data/WET +1047 -0
  586. data/data/Zulu +1 -0
  587. data/lib/timezone/parser.rb +66 -22
  588. data/lib/timezone/version.rb +1 -1
  589. data/lib/timezone/zone.rb +38 -44
  590. data/test/timezone_test.rb +9 -13
  591. metadata +607 -503
  592. checksums.yaml +0 -7
  593. data/data/Africa/Abidjan.json +0 -21
  594. data/data/Africa/Accra.json +0 -147
  595. data/data/Africa/Addis_Ababa.json +0 -30
  596. data/data/Africa/Algiers.json +0 -318
  597. data/data/Africa/Asmara.json +0 -39
  598. data/data/Africa/Bamako.json +0 -39
  599. data/data/Africa/Bangui.json +0 -21
  600. data/data/Africa/Banjul.json +0 -39
  601. data/data/Africa/Bissau.json +0 -30
  602. data/data/Africa/Blantyre.json +0 -21
  603. data/data/Africa/Brazzaville.json +0 -21
  604. data/data/Africa/Bujumbura.json +0 -21
  605. data/data/Africa/Cairo.json +0 -1119
  606. data/data/Africa/Casablanca.json +0 -255
  607. data/data/Africa/Ceuta.json +0 -1380
  608. data/data/Africa/Conakry.json +0 -39
  609. data/data/Africa/Dakar.json +0 -30
  610. data/data/Africa/Dar_es_Salaam.json +0 -39
  611. data/data/Africa/Djibouti.json +0 -21
  612. data/data/Africa/Douala.json +0 -21
  613. data/data/Africa/El_Aaiun.json +0 -30
  614. data/data/Africa/Freetown.json +0 -291
  615. data/data/Africa/Gaborone.json +0 -39
  616. data/data/Africa/Harare.json +0 -21
  617. data/data/Africa/Johannesburg.json +0 -66
  618. data/data/Africa/Juba.json +0 -318
  619. data/data/Africa/Kampala.json +0 -48
  620. data/data/Africa/Khartoum.json +0 -318
  621. data/data/Africa/Kigali.json +0 -21
  622. data/data/Africa/Kinshasa.json +0 -21
  623. data/data/Africa/Lagos.json +0 -21
  624. data/data/Africa/Libreville.json +0 -21
  625. data/data/Africa/Lome.json +0 -21
  626. data/data/Africa/Luanda.json +0 -30
  627. data/data/Africa/Lubumbashi.json +0 -21
  628. data/data/Africa/Lusaka.json +0 -21
  629. data/data/Africa/Malabo.json +0 -30
  630. data/data/Africa/Maputo.json +0 -21
  631. data/data/Africa/Maseru.json +0 -39
  632. data/data/Africa/Mbabane.json +0 -21
  633. data/data/Africa/Mogadishu.json +0 -39
  634. data/data/Africa/Monrovia.json +0 -39
  635. data/data/Africa/Nairobi.json +0 -48
  636. data/data/Africa/Ndjamena.json +0 -39
  637. data/data/Africa/Niamey.json +0 -39
  638. data/data/Africa/Nouakchott.json +0 -39
  639. data/data/Africa/Ouagadougou.json +0 -21
  640. data/data/Africa/Porto-Novo.json +0 -30
  641. data/data/Africa/Sao_Tome.json +0 -30
  642. data/data/Africa/Tripoli.json +0 -273
  643. data/data/Africa/Tunis.json +0 -318
  644. data/data/Africa/Windhoek.json +0 -1083
  645. data/data/America/Adak.json +0 -1569
  646. data/data/America/Anchorage.json +0 -1551
  647. data/data/America/Anguilla.json +0 -21
  648. data/data/America/Antigua.json +0 -30
  649. data/data/America/Araguaina.json +0 -453
  650. data/data/America/Argentina/Buenos_Aires.json +0 -543
  651. data/data/America/Argentina/Catamarca.json +0 -525
  652. data/data/America/Argentina/Cordoba.json +0 -525
  653. data/data/America/Argentina/Jujuy.json +0 -525
  654. data/data/America/Argentina/La_Rioja.json +0 -552
  655. data/data/America/Argentina/Mendoza.json +0 -534
  656. data/data/America/Argentina/Rio_Gallegos.json +0 -543
  657. data/data/America/Argentina/Salta.json +0 -507
  658. data/data/America/Argentina/San_Juan.json +0 -552
  659. data/data/America/Argentina/San_Luis.json +0 -543
  660. data/data/America/Argentina/Tucuman.json +0 -543
  661. data/data/America/Argentina/Ushuaia.json +0 -543
  662. data/data/America/Aruba.json +0 -30
  663. data/data/America/Asuncion.json +0 -1407
  664. data/data/America/Atikokan.json +0 -75
  665. data/data/America/Bahia.json +0 -543
  666. data/data/America/Bahia_Banderas.json +0 -1083
  667. data/data/America/Barbados.json +0 -102
  668. data/data/America/Belem.json +0 -273
  669. data/data/America/Belize.json +0 -507
  670. data/data/America/Blanc-Sablon.json +0 -66
  671. data/data/America/Boa_Vista.json +0 -309
  672. data/data/America/Bogota.json +0 -48
  673. data/data/America/Boise.json +0 -1605
  674. data/data/America/Cambridge_Bay.json +0 -1344
  675. data/data/America/Campo_Grande.json +0 -1398
  676. data/data/America/Cancun.json +0 -1029
  677. data/data/America/Caracas.json +0 -48
  678. data/data/America/Cayenne.json +0 -30
  679. data/data/America/Cayman.json +0 -30
  680. data/data/America/Chicago.json +0 -2406
  681. data/data/America/Chihuahua.json +0 -1065
  682. data/data/America/Coral_Harbour.json +0 -75
  683. data/data/America/Costa_Rica.json +0 -102
  684. data/data/America/Creston.json +0 -39
  685. data/data/America/Cuiaba.json +0 -1380
  686. data/data/America/Curacao.json +0 -30
  687. data/data/America/Danmarkshavn.json +0 -300
  688. data/data/America/Dawson.json +0 -1389
  689. data/data/America/Dawson_Creek.json +0 -543
  690. data/data/America/Denver.json +0 -1704
  691. data/data/America/Detroit.json +0 -1524
  692. data/data/America/Dominica.json +0 -21
  693. data/data/America/Edmonton.json +0 -1641
  694. data/data/America/Eirunepe.json +0 -300
  695. data/data/America/El_Salvador.json +0 -57
  696. data/data/America/Fortaleza.json +0 -363
  697. data/data/America/Glace_Bay.json +0 -1533
  698. data/data/America/Godthab.json +0 -1281
  699. data/data/America/Goose_Bay.json +0 -2118
  700. data/data/America/Grand_Turk.json +0 -1326
  701. data/data/America/Grenada.json +0 -21
  702. data/data/America/Guadeloupe.json +0 -21
  703. data/data/America/Guatemala.json +0 -93
  704. data/data/America/Guayaquil.json +0 -30
  705. data/data/America/Guyana.json +0 -48
  706. data/data/America/Halifax.json +0 -2334
  707. data/data/America/Havana.json +0 -1650
  708. data/data/America/Hermosillo.json +0 -147
  709. data/data/America/Indiana/Indianapolis.json +0 -1182
  710. data/data/America/Indiana/Knox.json +0 -1641
  711. data/data/America/Indiana/Marengo.json +0 -1200
  712. data/data/America/Indiana/Petersburg.json +0 -1299
  713. data/data/America/Indiana/Tell_City.json +0 -1173
  714. data/data/America/Indiana/Vevay.json +0 -993
  715. data/data/America/Indiana/Vincennes.json +0 -1173
  716. data/data/America/Indiana/Winamac.json +0 -1227
  717. data/data/America/Inuvik.json +0 -1326
  718. data/data/America/Iqaluit.json +0 -1335
  719. data/data/America/Jamaica.json +0 -210
  720. data/data/America/Juneau.json +0 -1560
  721. data/data/America/Kentucky/Louisville.json +0 -1884
  722. data/data/America/Kentucky/Monticello.json +0 -1587
  723. data/data/America/Kralendijk.json +0 -30
  724. data/data/America/La_Paz.json +0 -39
  725. data/data/America/Lima.json +0 -156
  726. data/data/America/Los_Angeles.json +0 -1938
  727. data/data/America/Lower_Princes.json +0 -30
  728. data/data/America/Maceio.json +0 -381
  729. data/data/America/Managua.json +0 -156
  730. data/data/America/Manaus.json +0 -291
  731. data/data/America/Marigot.json +0 -21
  732. data/data/America/Martinique.json +0 -48
  733. data/data/America/Matamoros.json +0 -1056
  734. data/data/America/Mazatlan.json +0 -1083
  735. data/data/America/Menominee.json +0 -1542
  736. data/data/America/Merida.json +0 -1029
  737. data/data/America/Metlakatla.json +0 -345
  738. data/data/America/Mexico_City.json +0 -1137
  739. data/data/America/Miquelon.json +0 -1191
  740. data/data/America/Moncton.json +0 -2163
  741. data/data/America/Monterrey.json +0 -1047
  742. data/data/America/Montevideo.json +0 -1434
  743. data/data/America/Montreal.json +0 -2379
  744. data/data/America/Montserrat.json +0 -21
  745. data/data/America/Nassau.json +0 -1596
  746. data/data/America/New_York.json +0 -2406
  747. data/data/America/Nipigon.json +0 -1461
  748. data/data/America/Nome.json +0 -1569
  749. data/data/America/Noronha.json +0 -363
  750. data/data/America/North_Dakota/Beulah.json +0 -1596
  751. data/data/America/North_Dakota/Center.json +0 -1596
  752. data/data/America/North_Dakota/New_Salem.json +0 -1596
  753. data/data/America/Ojinaga.json +0 -1074
  754. data/data/America/Panama.json +0 -30
  755. data/data/America/Pangnirtung.json +0 -1344
  756. data/data/America/Paramaribo.json +0 -57
  757. data/data/America/Phoenix.json +0 -120
  758. data/data/America/Port-au-Prince.json +0 -336
  759. data/data/America/Port_of_Spain.json +0 -21
  760. data/data/America/Porto_Velho.json +0 -273
  761. data/data/America/Puerto_Rico.json +0 -48
  762. data/data/America/Rainy_River.json +0 -1461
  763. data/data/America/Rankin_Inlet.json +0 -1317
  764. data/data/America/Recife.json +0 -363
  765. data/data/America/Regina.json +0 -489
  766. data/data/America/Resolute.json +0 -1317
  767. data/data/America/Rio_Branco.json +0 -282
  768. data/data/America/Santa_Isabel.json +0 -1632
  769. data/data/America/Santarem.json +0 -282
  770. data/data/America/Santiago.json +0 -1668
  771. data/data/America/Santo_Domingo.json +0 -165
  772. data/data/America/Sao_Paulo.json +0 -1398
  773. data/data/America/Scoresbysund.json +0 -1281
  774. data/data/America/Shiprock.json +0 -1704
  775. data/data/America/Sitka.json +0 -1560
  776. data/data/America/St_Barthelemy.json +0 -21
  777. data/data/America/St_Johns.json +0 -2433
  778. data/data/America/St_Kitts.json +0 -21
  779. data/data/America/St_Lucia.json +0 -30
  780. data/data/America/St_Thomas.json +0 -21
  781. data/data/America/St_Vincent.json +0 -30
  782. data/data/America/Swift_Current.json +0 -228
  783. data/data/America/Tegucigalpa.json +0 -75
  784. data/data/America/Thule.json +0 -1101
  785. data/data/America/Thunder_Bay.json +0 -1524
  786. data/data/America/Tijuana.json +0 -1641
  787. data/data/America/Toronto.json +0 -2370
  788. data/data/America/Tortola.json +0 -21
  789. data/data/America/Vancouver.json +0 -1965
  790. data/data/America/Whitehorse.json +0 -1389
  791. data/data/America/Winnipeg.json +0 -1929
  792. data/data/America/Yakutat.json +0 -1560
  793. data/data/America/Yellowknife.json +0 -1353
  794. data/data/Antarctica/Casey.json +0 -39
  795. data/data/Antarctica/Davis.json +0 -57
  796. data/data/Antarctica/DumontDUrville.json +0 -39
  797. data/data/Antarctica/Macquarie.json +0 -867
  798. data/data/Antarctica/Mawson.json +0 -30
  799. data/data/Antarctica/McMurdo.json +0 -1398
  800. data/data/Antarctica/Palmer.json +0 -1362
  801. data/data/Antarctica/Rothera.json +0 -21
  802. data/data/Antarctica/South_Pole.json +0 -1398
  803. data/data/Antarctica/Syowa.json +0 -21
  804. data/data/Antarctica/Vostok.json +0 -21
  805. data/data/Arctic/Longyearbyen.json +0 -1497
  806. data/data/Asia/Aden.json +0 -21
  807. data/data/Asia/Almaty.json +0 -444
  808. data/data/Asia/Amman.json +0 -1317
  809. data/data/Asia/Anadyr.json +0 -588
  810. data/data/Asia/Aqtau.json +0 -453
  811. data/data/Asia/Aqtobe.json +0 -444
  812. data/data/Asia/Ashgabat.json +0 -246
  813. data/data/Asia/Baghdad.json +0 -498
  814. data/data/Asia/Bahrain.json +0 -30
  815. data/data/Asia/Baku.json +0 -1245
  816. data/data/Asia/Bangkok.json +0 -30
  817. data/data/Asia/Beirut.json +0 -1515
  818. data/data/Asia/Bishkek.json +0 -480
  819. data/data/Asia/Brunei.json +0 -30
  820. data/data/Asia/Choibalsan.json +0 -426
  821. data/data/Asia/Chongqing.json +0 -138
  822. data/data/Asia/Colombo.json +0 -84
  823. data/data/Asia/Damascus.json +0 -1605
  824. data/data/Asia/Dhaka.json +0 -84
  825. data/data/Asia/Dili.json +0 -57
  826. data/data/Asia/Dubai.json +0 -21
  827. data/data/Asia/Dushanbe.json +0 -228
  828. data/data/Asia/Gaza.json +0 -1542
  829. data/data/Asia/Harbin.json +0 -165
  830. data/data/Asia/Hebron.json +0 -876
  831. data/data/Asia/Ho_Chi_Minh.json +0 -48
  832. data/data/Asia/Hong_Kong.json +0 -633
  833. data/data/Asia/Hovd.json +0 -426
  834. data/data/Asia/Irkutsk.json +0 -597
  835. data/data/Asia/Istanbul.json +0 -1794
  836. data/data/Asia/Jakarta.json +0 -84
  837. data/data/Asia/Jayapura.json +0 -39
  838. data/data/Asia/Jerusalem.json +0 -1299
  839. data/data/Asia/Kabul.json +0 -30
  840. data/data/Asia/Kamchatka.json +0 -588
  841. data/data/Asia/Karachi.json +0 -111
  842. data/data/Asia/Kashgar.json +0 -147
  843. data/data/Asia/Kathmandu.json +0 -30
  844. data/data/Asia/Kolkata.json +0 -57
  845. data/data/Asia/Krasnoyarsk.json +0 -588
  846. data/data/Asia/Kuala_Lumpur.json +0 -84
  847. data/data/Asia/Kuching.json +0 -183
  848. data/data/Asia/Kuwait.json +0 -21
  849. data/data/Asia/Macau.json +0 -390
  850. data/data/Asia/Magadan.json +0 -588
  851. data/data/Asia/Makassar.json +0 -48
  852. data/data/Asia/Manila.json +0 -102
  853. data/data/Asia/Muscat.json +0 -21
  854. data/data/Asia/Nicosia.json +0 -1389
  855. data/data/Asia/Novokuznetsk.json +0 -588
  856. data/data/Asia/Novosibirsk.json +0 -588
  857. data/data/Asia/Omsk.json +0 -588
  858. data/data/Asia/Oral.json +0 -453
  859. data/data/Asia/Phnom_Penh.json +0 -48
  860. data/data/Asia/Pontianak.json +0 -84
  861. data/data/Asia/Pyongyang.json +0 -66
  862. data/data/Asia/Qatar.json +0 -30
  863. data/data/Asia/Qyzylorda.json +0 -453
  864. data/data/Asia/Rangoon.json +0 -48
  865. data/data/Asia/Riyadh.json +0 -21
  866. data/data/Asia/Sakhalin.json +0 -597
  867. data/data/Asia/Samarkand.json +0 -219
  868. data/data/Asia/Seoul.json +0 -129
  869. data/data/Asia/Shanghai.json +0 -174
  870. data/data/Asia/Singapore.json +0 -93
  871. data/data/Asia/Taipei.json +0 -381
  872. data/data/Asia/Tashkent.json +0 -228
  873. data/data/Asia/Tbilisi.json +0 -462
  874. data/data/Asia/Tehran.json +0 -912
  875. data/data/Asia/Thimphu.json +0 -30
  876. data/data/Asia/Tokyo.json +0 -111
  877. data/data/Asia/Ulaanbaatar.json +0 -426
  878. data/data/Asia/Urumqi.json +0 -138
  879. data/data/Asia/Vientiane.json +0 -48
  880. data/data/Asia/Vladivostok.json +0 -588
  881. data/data/Asia/Yakutsk.json +0 -588
  882. data/data/Asia/Yekaterinburg.json +0 -588
  883. data/data/Asia/Yerevan.json +0 -1281
  884. data/data/Atlantic/Azores.json +0 -2235
  885. data/data/Atlantic/Bermuda.json +0 -1416
  886. data/data/Atlantic/Canary.json +0 -1308
  887. data/data/Atlantic/Cape_Verde.json +0 -48
  888. data/data/Atlantic/Faroe.json +0 -1281
  889. data/data/Atlantic/Madeira.json +0 -2235
  890. data/data/Atlantic/Reykjavik.json +0 -597
  891. data/data/Atlantic/South_Georgia.json +0 -21
  892. data/data/Atlantic/St_Helena.json +0 -30
  893. data/data/Atlantic/Stanley.json +0 -1344
  894. data/data/Australia/Adelaide.json +0 -1533
  895. data/data/Australia/Brisbane.json +0 -165
  896. data/data/Australia/Broken_Hill.json +0 -1542
  897. data/data/Australia/Currie.json +0 -1524
  898. data/data/Australia/Darwin.json +0 -102
  899. data/data/Australia/Eucla.json +0 -183
  900. data/data/Australia/Hobart.json +0 -1596
  901. data/data/Australia/Lindeman.json +0 -201
  902. data/data/Australia/Lord_Howe.json +0 -1281
  903. data/data/Australia/Melbourne.json +0 -1524
  904. data/data/Australia/Perth.json +0 -183
  905. data/data/Australia/Sydney.json +0 -1524
  906. data/data/CET.json +0 -1470
  907. data/data/CST6CDT.json +0 -1587
  908. data/data/EET.json +0 -1344
  909. data/data/EST.json +0 -12
  910. data/data/EST5EDT.json +0 -1587
  911. data/data/Etc/GMT+0.json +0 -12
  912. data/data/Etc/GMT+1.json +0 -12
  913. data/data/Etc/GMT+10.json +0 -12
  914. data/data/Etc/GMT+11.json +0 -12
  915. data/data/Etc/GMT+12.json +0 -12
  916. data/data/Etc/GMT+2.json +0 -12
  917. data/data/Etc/GMT+3.json +0 -12
  918. data/data/Etc/GMT+4.json +0 -12
  919. data/data/Etc/GMT+5.json +0 -12
  920. data/data/Etc/GMT+6.json +0 -12
  921. data/data/Etc/GMT+7.json +0 -12
  922. data/data/Etc/GMT+8.json +0 -12
  923. data/data/Etc/GMT+9.json +0 -12
  924. data/data/Etc/GMT-0.json +0 -12
  925. data/data/Etc/GMT-1.json +0 -12
  926. data/data/Etc/GMT-10.json +0 -12
  927. data/data/Etc/GMT-11.json +0 -12
  928. data/data/Etc/GMT-12.json +0 -12
  929. data/data/Etc/GMT-13.json +0 -12
  930. data/data/Etc/GMT-14.json +0 -12
  931. data/data/Etc/GMT-2.json +0 -12
  932. data/data/Etc/GMT-3.json +0 -12
  933. data/data/Etc/GMT-4.json +0 -12
  934. data/data/Etc/GMT-5.json +0 -12
  935. data/data/Etc/GMT-6.json +0 -12
  936. data/data/Etc/GMT-7.json +0 -12
  937. data/data/Etc/GMT-8.json +0 -12
  938. data/data/Etc/GMT-9.json +0 -12
  939. data/data/Etc/GMT.json +0 -12
  940. data/data/Etc/GMT0.json +0 -12
  941. data/data/Etc/Greenwich.json +0 -12
  942. data/data/Etc/UCT.json +0 -12
  943. data/data/Etc/UTC.json +0 -12
  944. data/data/Etc/Universal.json +0 -12
  945. data/data/Etc/Zulu.json +0 -12
  946. data/data/Europe/Amsterdam.json +0 -1857
  947. data/data/Europe/Andorra.json +0 -1200
  948. data/data/Europe/Athens.json +0 -1479
  949. data/data/Europe/Belgrade.json +0 -1299
  950. data/data/Europe/Berlin.json +0 -1533
  951. data/data/Europe/Bratislava.json +0 -1524
  952. data/data/Europe/Brussels.json +0 -1884
  953. data/data/Europe/Bucharest.json +0 -1452
  954. data/data/Europe/Budapest.json +0 -1605
  955. data/data/Europe/Chisinau.json +0 -1488
  956. data/data/Europe/Copenhagen.json +0 -1452
  957. data/data/Europe/Dublin.json +0 -2271
  958. data/data/Europe/Gibraltar.json +0 -2037
  959. data/data/Europe/Guernsey.json +0 -2424
  960. data/data/Europe/Helsinki.json +0 -1308
  961. data/data/Europe/Isle_of_Man.json +0 -2424
  962. data/data/Europe/Istanbul.json +0 -1794
  963. data/data/Europe/Jersey.json +0 -2424
  964. data/data/Europe/Kaliningrad.json +0 -714
  965. data/data/Europe/Kiev.json +0 -1308
  966. data/data/Europe/Lisbon.json +0 -2235
  967. data/data/Europe/Ljubljana.json +0 -1299
  968. data/data/Europe/London.json +0 -2424
  969. data/data/Europe/Luxembourg.json +0 -1884
  970. data/data/Europe/Madrid.json +0 -1722
  971. data/data/Europe/Malta.json +0 -1749
  972. data/data/Europe/Mariehamn.json +0 -1308
  973. data/data/Europe/Minsk.json +0 -1326
  974. data/data/Europe/Monaco.json +0 -1911
  975. data/data/Europe/Moscow.json +0 -705
  976. data/data/Europe/Nicosia.json +0 -1389
  977. data/data/Europe/Oslo.json +0 -1497
  978. data/data/Europe/Paris.json +0 -1893
  979. data/data/Europe/Podgorica.json +0 -1299
  980. data/data/Europe/Prague.json +0 -1524
  981. data/data/Europe/Riga.json +0 -1371
  982. data/data/Europe/Rome.json +0 -1776
  983. data/data/Europe/Samara.json +0 -597
  984. data/data/Europe/San_Marino.json +0 -1776
  985. data/data/Europe/Sarajevo.json +0 -1299
  986. data/data/Europe/Simferopol.json +0 -1308
  987. data/data/Europe/Skopje.json +0 -1299
  988. data/data/Europe/Sofia.json +0 -1362
  989. data/data/Europe/Stockholm.json +0 -1326
  990. data/data/Europe/Tallinn.json +0 -1344
  991. data/data/Europe/Tirane.json +0 -1425
  992. data/data/Europe/Uzhgorod.json +0 -1326
  993. data/data/Europe/Vaduz.json +0 -1281
  994. data/data/Europe/Vatican.json +0 -1776
  995. data/data/Europe/Vienna.json +0 -1479
  996. data/data/Europe/Vilnius.json +0 -1317
  997. data/data/Europe/Volgograd.json +0 -579
  998. data/data/Europe/Warsaw.json +0 -1713
  999. data/data/Europe/Zagreb.json +0 -1299
  1000. data/data/Europe/Zaporozhye.json +0 -1335
  1001. data/data/Europe/Zurich.json +0 -1326
  1002. data/data/GMT.json +0 -12
  1003. data/data/HST.json +0 -12
  1004. data/data/Indian/Antananarivo.json +0 -39
  1005. data/data/Indian/Chagos.json +0 -30
  1006. data/data/Indian/Christmas.json +0 -21
  1007. data/data/Indian/Cocos.json +0 -21
  1008. data/data/Indian/Comoro.json +0 -21
  1009. data/data/Indian/Kerguelen.json +0 -21
  1010. data/data/Indian/Mahe.json +0 -21
  1011. data/data/Indian/Maldives.json +0 -30
  1012. data/data/Indian/Mauritius.json +0 -57
  1013. data/data/Indian/Mayotte.json +0 -21
  1014. data/data/Indian/Reunion.json +0 -21
  1015. data/data/MET.json +0 -1470
  1016. data/data/MST.json +0 -12
  1017. data/data/MST7MDT.json +0 -1587
  1018. data/data/PST8PDT.json +0 -1587
  1019. data/data/Pacific/Apia.json +0 -84
  1020. data/data/Pacific/Auckland.json +0 -1650
  1021. data/data/Pacific/Chatham.json +0 -1398
  1022. data/data/Pacific/Chuuk.json +0 -21
  1023. data/data/Pacific/Easter.json +0 -1533
  1024. data/data/Pacific/Efate.json +0 -201
  1025. data/data/Pacific/Enderbury.json +0 -39
  1026. data/data/Pacific/Fakaofo.json +0 -21
  1027. data/data/Pacific/Fiji.json +0 -93
  1028. data/data/Pacific/Funafuti.json +0 -21
  1029. data/data/Pacific/Galapagos.json +0 -30
  1030. data/data/Pacific/Gambier.json +0 -21
  1031. data/data/Pacific/Guadalcanal.json +0 -21
  1032. data/data/Pacific/Guam.json +0 -39
  1033. data/data/Pacific/Honolulu.json +0 -66
  1034. data/data/Pacific/Johnston.json +0 -12
  1035. data/data/Pacific/Kiritimati.json +0 -39
  1036. data/data/Pacific/Kosrae.json +0 -39
  1037. data/data/Pacific/Kwajalein.json +0 -39
  1038. data/data/Pacific/Majuro.json +0 -30
  1039. data/data/Pacific/Marquesas.json +0 -21
  1040. data/data/Pacific/Midway.json +0 -57
  1041. data/data/Pacific/Nauru.json +0 -48
  1042. data/data/Pacific/Niue.json +0 -39
  1043. data/data/Pacific/Norfolk.json +0 -30
  1044. data/data/Pacific/Noumea.json +0 -75
  1045. data/data/Pacific/Pago_Pago.json +0 -57
  1046. data/data/Pacific/Palau.json +0 -21
  1047. data/data/Pacific/Pitcairn.json +0 -30
  1048. data/data/Pacific/Pohnpei.json +0 -21
  1049. data/data/Pacific/Ponape.json +0 -21
  1050. data/data/Pacific/Port_Moresby.json +0 -30
  1051. data/data/Pacific/Rarotonga.json +0 -246
  1052. data/data/Pacific/Saipan.json +0 -48
  1053. data/data/Pacific/Tahiti.json +0 -21
  1054. data/data/Pacific/Tarawa.json +0 -21
  1055. data/data/Pacific/Tongatapu.json +0 -84
  1056. data/data/Pacific/Truk.json +0 -21
  1057. data/data/Pacific/Wake.json +0 -21
  1058. data/data/Pacific/Wallis.json +0 -21
  1059. data/data/WET.json +0 -1344
  1060. data/lib/timezone/parser/data.rb +0 -103
  1061. data/lib/timezone/parser/link.rb +0 -10
  1062. data/lib/timezone/parser/rule.rb +0 -55
  1063. data/lib/timezone/parser/rule/entry.rb +0 -74
  1064. data/lib/timezone/parser/rule/on.rb +0 -30
  1065. data/lib/timezone/parser/rule/on_rules.rb +0 -30
  1066. data/lib/timezone/parser/zone.rb +0 -37
  1067. data/lib/timezone/parser/zone/data_generator.rb +0 -77
  1068. data/lib/timezone/parser/zone/entry.rb +0 -39
  1069. data/lib/timezone/parser/zone/until.rb +0 -28
  1070. data/test/timezone/parser/rule/on_rules_test.rb +0 -20
  1071. data/test/timezone/parser/rule_test.rb +0 -52
  1072. data/test/timezone/parser/zone/data_generator_test.rb +0 -101
  1073. data/test/timezone/parser/zone/until_test.rb +0 -13
  1074. data/test/timezone/parser/zone_test.rb +0 -42
  1075. data/test/timezone/parser_test.rb +0 -12
@@ -1,103 +0,0 @@
1
- require 'json'
2
-
3
- module Timezone
4
- module Parser
5
- def self.data(*args) ; Data.new(*args) ; end
6
-
7
- def self.from_zone(previous, zone)
8
- data(previous && previous.end_date, zone.end_date, zone)
9
- end
10
-
11
- def self.extension(previous, zone)
12
- data(previous.end_date, nil, zone)
13
- end
14
-
15
- def self.from_rule(zone, rule)
16
- data(rule.start_date, nil, zone, rule)
17
- end
18
-
19
- START_DATE = -377705116800000 # The very last date '9999-12-31T23:59:59Z'.
20
- END_DATE = 253402300799000 # The very first date '-9999-01-01T00:00:00Z'.
21
-
22
- class NilRule
23
- def letter ; '-' ; end
24
- def offset ; 0 ; end
25
- def utime? ; false ; end
26
- def dst? ; false ; end
27
- end
28
-
29
- # The resulting JSON data structure for a timezone file.
30
- class Data
31
- attr_accessor :start_date, :dst, :offset, :name
32
-
33
- def initialize(start_date, end_date, zone, rule = NilRule.new)
34
- @dst = rule.dst?
35
- @offset = parse_offset(zone, rule)
36
- @name = parse_name(zone.format, rule.letter)
37
- @utime = rule.utime?
38
- @start_date = parse_start_date(start_date)
39
- self.end_date = end_date
40
- end
41
-
42
- def end_date=(date)
43
- if date.nil? || @utime
44
- @end_date = date
45
- else
46
- @end_date = date - (@offset * 1_000)
47
- end
48
- end
49
-
50
- def end_date
51
- @end_date || END_DATE
52
- end
53
-
54
- def has_end_date?
55
- !!@end_date
56
- end
57
-
58
- def to_hash
59
- {
60
- '_from' => _from,
61
- 'from' => @start_date,
62
- '_to' => _to,
63
- 'to' => end_date,
64
- 'dst' => @dst,
65
- 'offset' => @offset,
66
- 'name' => @name
67
- }
68
- end
69
-
70
- def to_json
71
- to_hash.to_json
72
- end
73
-
74
- private
75
-
76
- def parse_offset(zone, rule)
77
- zone.offset + rule.offset
78
- end
79
-
80
- def parse_start_date(date)
81
- date || START_DATE
82
- end
83
-
84
- # Fills in a zone entry format with a rule entry letter.
85
- #
86
- # Examples:
87
- #
88
- # format "EE%sT" w/ letter "S" results in EEST
89
- # format "EE%sT" w/ letter "-" results in EET
90
- def parse_name(format, letter)
91
- format.sub(/%s/, letter == '-' ? '' : letter)
92
- end
93
-
94
- def _from ; ftime(@start_date) ; end
95
- def _to ; ftime(end_date) ; end
96
-
97
- # Converts a millisecond time into the proper JSON output string.
98
- def ftime(time)
99
- Time.at(time / 1_000).utc.strftime('%Y-%m-%dT%H:%M:%SZ')
100
- end
101
- end
102
- end
103
- end
@@ -1,10 +0,0 @@
1
- module Timezone
2
- module Parser
3
- def self.link(line) ; Link.new(line) ; end
4
-
5
- class Link
6
- def initialize(line)
7
- end
8
- end
9
- end
10
- end
@@ -1,55 +0,0 @@
1
- require 'time'
2
-
3
- module Timezone
4
- module Parser
5
- # Given a rule from a TZDATA file, generate the appropriate rule objects.
6
- def self.rule(line) ; Rule.generate(line) ; end
7
-
8
- # Get a list of all processed rules.
9
- def self.rules ; Rule.rules ; end
10
-
11
- # Select rules based on a name and end date.
12
- def self.select_rules(name, end_date)
13
- rules.fetch(name){ [] }
14
- .select{ |rule| end_date.nil? || rule.start_date < end_date }
15
- end
16
-
17
- module Rule
18
- # Format: Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
19
- # Example: Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
20
- RULE = /Rule\s+([\w-]+?)\s+(\d+?)\s+([^\s]+?)\s+([^\s]+?)\s+(\s*\w+?)\s+([\d\w\=\>\<]+?)\s+([\d:us]+?)\s+([\d:]+?)\s+([\w-]+)/
21
-
22
- END_YEAR = 2050 # The actual value for the "to" field when set to "max".
23
-
24
- # Rules are stored in a hash of arrays that are referenced by rule name.
25
- @@rules = Hash.new{ |h, k| h[k] = [] }
26
- def self.rules ; @@rules ; end
27
-
28
- class << self
29
- def generate(line)
30
- name, from, to, *values = *line.match(RULE)[1..-1]
31
-
32
- years(from, to).each do |year|
33
- @@rules[name] << Entry.new(name, year, *values)
34
- end
35
- end
36
-
37
- private
38
-
39
- def years(from, to)
40
- (from.to_i..parse_end_year(from, to))
41
- end
42
-
43
- def parse_end_year(from, to)
44
- case to
45
- when 'only' then from.to_i
46
- when 'max' then END_YEAR
47
- else to.to_i
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
54
-
55
- require 'timezone/parser/rule/entry'
@@ -1,74 +0,0 @@
1
- require 'timezone/parser/rule'
2
- require 'timezone/parser/rule/on_rules'
3
-
4
- module Timezone::Parser::Rule
5
- class Entry
6
- attr_accessor :name, :offset
7
- attr_reader :letter, :start_date
8
-
9
- UTIME = /^.*u$/
10
- STIME = /^.*s$/
11
- START_DATE = '%Y %b %d %H:%M %Z'
12
-
13
- def initialize(name, year, type, month, day, time, save, letter)
14
- @name, @offset, @letter = name, offset, letter
15
-
16
- @month, @day = parse_month_day(day, month, year)
17
- @utime = parse_utime(time)
18
- @stime = parse_stime(time)
19
- @time = parse_time(time)
20
- @day = parse_day(@day)
21
- @offset = parse_offset(save)
22
- @start_date = parse_start_date(year, @month, @day, @time)
23
- @dst = parse_dst(save)
24
- end
25
-
26
- def utime? ; @utime ; end
27
- def stime? ; @stime ; end
28
- def dst? ; @dst ; end
29
-
30
- private
31
-
32
- # Day should be zero padded.
33
- def parse_day(day)
34
- '%.2d' % day.to_i
35
- end
36
-
37
- # Time should be zero padded and not include 'u' or 's'.
38
- def parse_time(time)
39
- time = "0#{time}" if time.match(/^\d:\d\d/)
40
- time = time.gsub(/u/, '') if utime?
41
- time = time.gsub(/s/, '') if stime?
42
-
43
- time
44
- end
45
-
46
- def parse_utime(time)
47
- time =~ UTIME
48
- end
49
-
50
- def parse_stime(time)
51
- time =~ STIME
52
- end
53
-
54
- # Offset is calculated in seconds.
55
- def parse_offset(save)
56
- offset = Time.parse(save == '0' ? '0:00' : save)
57
- offset.hour*60*60 + offset.min*60 + offset.sec
58
- end
59
-
60
- # Check special rules that modify the month and day depending on the year.
61
- def parse_month_day(day, month, year)
62
- On.parse(day, month, year)
63
- end
64
-
65
- # The UTC time on which the rule beings to apply in milliseconds.
66
- def parse_start_date(y, m, d, t)
67
- Time.strptime([y, m, d, t, 'UTC'].join(' '), START_DATE).to_i * 1_000
68
- end
69
-
70
- def parse_dst(save)
71
- save != '0'
72
- end
73
- end
74
- end
@@ -1,30 +0,0 @@
1
- require 'timezone/parser/rule'
2
- require 'time'
3
-
4
- module Timezone::Parser::Rule
5
- def self.on(*args) ; On.new(*args) ; end
6
-
7
- class On
8
- @@rules = []
9
-
10
- # Given a Rule `on` field, parse the appropriate day and month.
11
- def self.parse(day, month, year)
12
- @@rules.each do |rule|
13
- if match = day.match(rule.expression)
14
- return rule.block.call(match, day, month, year)
15
- end
16
- end
17
-
18
- [month, day]
19
- end
20
-
21
- attr_reader :expression, :block
22
-
23
- def initialize(name, expression, block)
24
- @name = name
25
- @expression = expression
26
- @block = block
27
- @@rules << self
28
- end
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- require 'timezone/parser/rule/on'
2
-
3
- # A simple DSL for definining rules to parse the "ON" field in TZData rules.
4
- module Timezone::Parser::Rule
5
- on 'lastDAY', /^last(\w+)$/, lambda{ |match, _, month, year|
6
- 31.downto(1).each do |day|
7
- begin
8
- date = Time.strptime("#{year} #{month} #{day}", '%Y %b %d')
9
-
10
- if date.strftime('%a') == match[1]
11
- return [month, date.strftime('%d')]
12
- end
13
- rescue
14
- next
15
- end
16
- end
17
- }
18
-
19
- on 'DAY>=NUM', /^(\w+)>=(\d+)$/, lambda{ |match, _, month, year|
20
- start = Time.strptime("#{year} #{month} #{match[2]}", '%Y %b %d')
21
-
22
- (1..8).to_a.each do |plus|
23
- date = start + (plus * 24 * 60 * 60)
24
-
25
- if date.strftime('%a') == match[1]
26
- return [date.strftime('%b'), date.strftime('%d')]
27
- end
28
- end
29
- }
30
- end
@@ -1,37 +0,0 @@
1
- require 'time'
2
-
3
- module Timezone
4
- module Parser
5
- # Given a line from the TZDATA file, generate an Entry object.
6
- def self.zone(line) ; Zone.parse(line) ; end
7
-
8
- # Get a list of all processed entries.
9
- def self.zones ; Zone.zones ; end
10
-
11
- module Zone
12
- # Each entry follows this format.
13
- # GMT-OFFSET RULES FORMAT [UNTIL]
14
- ENTRY = /(\d+?:\d+?:*\d*?)\s+(.+?)\s([^\s]+)\s*(.*?)$/
15
-
16
- # The header entry also includes the Zone name.
17
- # Zone ZONE-NAME GMT-OFFSET RULES FORMAT [UNTIL]
18
- HEADER = /Zone\s+(.+?)\s+/
19
-
20
- # Zones are stored in a hash of arrays that are referenced by name.
21
- @@zones = Hash.new{ |h, k| h[k] = [] }
22
- def self.zones ; @@zones ; end
23
-
24
- # The name of the current zone is parsed from the header zone entry.
25
- # It can then be accessed using `Timezone::Parser::Zone.last`.
26
- class << self ; attr_accessor :last ; end
27
-
28
- def self.parse(line)
29
- self.last = $~[1] if line.match(HEADER)
30
-
31
- @@zones[last] << Entry.new(last, *line.match(ENTRY)[1..-1])
32
- end
33
- end
34
- end
35
- end
36
-
37
- require 'timezone/parser/zone/entry'
@@ -1,77 +0,0 @@
1
- require 'timezone/parser/zone'
2
- require 'timezone/parser/data'
3
- require 'time'
4
-
5
- module Timezone::Parser::Zone
6
- def self.generate(zones) ; DataGenerator.generate(zones) ; end
7
-
8
- def self.data ; DataGenerator.data ; end
9
-
10
- # TODO [panthomakos] This needs refactoring.
11
- module DataGenerator
12
- @@data = Hash.new{ |h,k| h[k] = [] }
13
- def self.data ; @@data ; end
14
-
15
- class << self
16
- def generate(zone)
17
- zones = Timezone::Parser.zones[zone].to_a
18
-
19
- return if zones.empty?
20
-
21
- @@data[zone] = zones
22
- .each_cons(2)
23
- .inject(update(zones.first)) do |set, (previous, zone)|
24
- update(zone, set, previous && previous.end_date)
25
- end
26
- end
27
-
28
- private
29
-
30
- def update(zone, set = [], limit = nil)
31
- additions = [first_addition(zone, set)]
32
-
33
- zone.rules.each do |rule|
34
- data = additions.last
35
-
36
- if rule_applies?(rule, data, limit)
37
- Timezone::Parser.from_rule(zone, rule).tap do |insert|
38
- data.end_date = insert.start_date
39
- # We do this because the start date is always based on the
40
- # previous entry end date calculation.
41
- insert.start_date = data.end_date
42
-
43
- additions << insert
44
- end
45
- end
46
- end
47
-
48
- set + additions
49
- end
50
-
51
- # The rule has to fall within the time range (start_date..limit).
52
- def rule_applies?(rule, data, limit)
53
- rule.start_date > data.start_date &&
54
- (!limit || rule.start_date > limit)
55
- end
56
-
57
- def first_addition(zone, set)
58
- previous = set.last
59
-
60
- if zone.rules.empty?
61
- # If there are no rules, generate a new entry for this time period.
62
- Timezone::Parser.from_zone(previous, zone)
63
- else
64
- if previous && previous.has_end_date?
65
- # If the last entry had a hard cutoff end date, create a new
66
- # addition that picks up from where the last entry left off.
67
- Timezone::Parser.extension(previous, zone)
68
- else
69
- # If the last entry did not have a hard cutoff end date, pop it off
70
- # the stack for use in these calculations.
71
- set.pop
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,39 +0,0 @@
1
- require 'timezone/parser/zone'
2
- require 'timezone/parser/zone/until'
3
- require 'timezone/parser/rule'
4
- require 'time'
5
-
6
- # The data object that represents a zone entry in the TZData file.
7
- # Tests for this class are contained in the parser/zone_test.rb file.
8
- module Timezone::Parser::Zone
9
- class Entry
10
- attr_reader :name, :format, :offset, :end_date, :rules
11
-
12
- def initialize(name, offset, rule, format, end_date)
13
- @name, @format = name, format
14
-
15
- @end_date = parse_end_date(end_date)
16
- @offset = parse_offset(offset)
17
- @rules = parse_rules(rule, @end_date)
18
- end
19
-
20
- private
21
-
22
- # Only select rules that fall within the timeline of this entry.
23
- # Then apply the rule to this entry so that the offset is accurate.
24
- def parse_rules(name, end_date)
25
- Timezone::Parser.select_rules(name, end_date).sort_by(&:start_date)
26
- end
27
-
28
- # Use the UNTIL parser to decode the end date.
29
- def parse_end_date(end_date)
30
- Until.parse(end_date)
31
- end
32
-
33
- # The offset is calculated in minutes.
34
- def parse_offset(offset)
35
- offset = Time.parse(offset)
36
- offset.hour*60*60 + offset.min*60 + offset.sec
37
- end
38
- end
39
- end