From 3bc2661ea9b0f7967eb90a1bb53a266d53ccb92d Mon Sep 17 00:00:00 2001 From: Greg Lewis Date: Mon, 2 Feb 2015 06:27:11 +0000 Subject: . Update to 8u31. --- java/openjdk8/Makefile | 5 +- java/openjdk8/files/patch-8u31-b13 | 35573 +++++++++++++++++++++++++++++++++++ java/openjdk8/files/patch-bsd | 667 +- java/openjdk8/files/patch-bsd-test | 493 +- 4 files changed, 36135 insertions(+), 603 deletions(-) create mode 100644 java/openjdk8/files/patch-8u31-b13 (limited to 'java/openjdk8') diff --git a/java/openjdk8/Makefile b/java/openjdk8/Makefile index 86ee4bf87a48..09ebe177ff4a 100644 --- a/java/openjdk8/Makefile +++ b/java/openjdk8/Makefile @@ -2,7 +2,6 @@ PORTNAME= openjdk PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//} -PORTREVISION= 4 CATEGORIES= java devel MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}/promoted/b${DIST_BUILD_NUMBER}/:jdk \ https://adopt-openjdk.ci.cloudbees.com/job/jtreg/${JTREG_JENKINS_BUILD}/artifact/:jtreg \ @@ -71,8 +70,8 @@ NO_CCACHE= yes NOPRECIOUSMAKEVARS= yes JDK_MAJOR_VERSION= 8 -JDK_UPDATE_VERSION= 25 -JDK_BUILD_NUMBER= 17 +JDK_UPDATE_VERSION= 31 +JDK_BUILD_NUMBER= 13 DIST_BUILD_NUMBER= 132 JTREG_VERSION= 4.1 JTREG_BUILD_NUMBER= b08 diff --git a/java/openjdk8/files/patch-8u31-b13 b/java/openjdk8/files/patch-8u31-b13 new file mode 100644 index 000000000000..9b32ccbc8baf --- /dev/null +++ b/java/openjdk8/files/patch-8u31-b13 @@ -0,0 +1,35573 @@ +--- ./.hgtags Wed Sep 17 11:23:18 2014 -0700 ++++ ./.hgtags Mon Dec 08 12:28:03 2014 -0800 +@@ -314,6 +314,8 @@ + 1710841b0229403f4af85eac8b68ea5065a26c81 jdk8u20-b24 + 1710841b0229403f4af85eac8b68ea5065a26c81 jdk8u20-b25 + d1a7ea2c3e1091e0df1285963328a96f475f240d jdk8u20-b26 ++3229d7b76babcf6710b3a965a2eda3f3bb2aa972 jdk8u20-b31 ++9955a899edb359f2dc1704ea86044e9819cb805d jdk8u20-b32 + 97c6d6a8e5bb3dfc24b9a32711aa0906ea110e23 jdk8u25-b00 + c4cfb4376f5916c5d7eb1f39a0e23402de0d9818 jdk8u25-b01 + b4d29a751077e5500e766b8104dd1cb7148a550f jdk8u25-b02 +@@ -331,3 +333,19 @@ + 4429ea47ee6eca6b8a1dbda1950566ee821ba19d jdk8u25-b14 + 09eaef69f384ecf8ec0342b87a8b150740941140 jdk8u25-b15 + f0a48c214c46b7351ff8e6d6b6dc533463a4be21 jdk8u25-b16 ++d117f01bfb4f34668ac216c9837e88acead14dce jdk8u25-b17 ++efac90a2da447c2b2d43ee1b1e20c0828659f9c5 jdk8u25-b18 ++1a0b4ec68abc4e9248ca6041fff04612674a9b9f jdk8u25-b31 ++6db0898d3f90ad9eae2f017299314b88766446e3 jdk8u31-b00 ++85792859f3bdd6a2c1bdfcf2828bb2730e06ac3c jdk8u31-b01 ++4898a7460ae620ac5356cb224e1fdf3c29312533 jdk8u31-b02 ++886ace09d0934d5410572764685f13119d523823 jdk8u31-b03 ++e2d32fe85fb93ce5179c25f5bfd49750a85c9342 jdk8u31-b04 ++97de4d73edf1435c9b87d765d2ad91bb16c8d913 jdk8u31-b05 ++f1b61760d01de6ad8d360227ac6c2122765680a2 jdk8u31-b06 ++e9cbffb6c1119f3ef39c68db53c36c5e544c0d3c jdk8u31-b07 ++4cec543118e7720d6105f25b60742d25a458cab7 jdk8u31-b08 ++ea4b31ec437d74c62b844bd8b35f0bc3a27915b4 jdk8u31-b09 ++01a98532348477a84b6e3c322fdd12dfed28d96d jdk8u31-b10 ++ec85d5d0e3c05b0b6d61f4fc3f41313448ed9b05 jdk8u31-b11 ++ca98e3e9727ffdcde2c9980668d0c7f344261938 jdk8u31-b12 +--- ./common/autoconf/generated-configure.sh Wed Sep 17 11:23:18 2014 -0700 ++++ ./common/autoconf/generated-configure.sh Mon Dec 08 12:28:03 2014 -0800 +@@ -1024,6 +1024,7 @@ + with_update_version + with_user_release_suffix + with_build_number ++with_copyright_year + with_boot_jdk + with_boot_jdk_jvmargs + with_add_source_root +@@ -1774,6 +1775,7 @@ + Add a custom string to the version string if build + number isn't set.[username_builddateb00] + --with-build-number Set build number value for build [b00] ++ --with-copyright-year Set copyright year value for build [current year] + --with-boot-jdk path to Boot JDK (used to bootstrap build) [probed] + --with-boot-jdk-jvmargs specify JVM arguments to be passed to all + invocations of the Boot JDK, overriding the default +@@ -3868,7 +3870,7 @@ + #CUSTOM_AUTOCONF_INCLUDE + + # Do not change or remove the following line, it is needed for consistency checks: +-DATE_WHEN_GENERATED=1410971760 ++DATE_WHEN_GENERATED=1416326200 + + ############################################################################### + # +@@ -11280,7 +11282,19 @@ + + + +- COPYRIGHT_YEAR=`date +'%Y'` ++ ++# Check whether --with-copyright-year was given. ++if test "${with_copyright_year+set}" = set; then : ++ withval=$with_copyright_year; ++fi ++ ++ if test "x$with_copyright_year" = xyes; then ++ as_fn_error $? "Copyright year must have a value" "$LINENO" 5 ++ elif test "x$with_copyright_year" != x; then ++ COPYRIGHT_YEAR="$with_copyright_year" ++ else ++ COPYRIGHT_YEAR=`date +'%Y'` ++ fi + + + if test "x$JDK_UPDATE_VERSION" != x; then +--- ./common/autoconf/jdk-options.m4 Wed Sep 17 11:23:18 2014 -0700 ++++ ./common/autoconf/jdk-options.m4 Mon Dec 08 12:28:03 2014 -0800 +@@ -510,7 +510,15 @@ + AC_SUBST(MACOSX_BUNDLE_NAME_BASE) + AC_SUBST(MACOSX_BUNDLE_ID_BASE) + +- COPYRIGHT_YEAR=`date +'%Y'` ++ AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year], ++ [Set copyright year value for build @<:@current year@:>@])]) ++ if test "x$with_copyright_year" = xyes; then ++ AC_MSG_ERROR([Copyright year must have a value]) ++ elif test "x$with_copyright_year" != x; then ++ COPYRIGHT_YEAR="$with_copyright_year" ++ else ++ COPYRIGHT_YEAR=`date +'%Y'` ++ fi + AC_SUBST(COPYRIGHT_YEAR) + + if test "x$JDK_UPDATE_VERSION" != x; then +--- ./corba/.hgtags Mon Sep 08 12:34:37 2014 -0700 ++++ ./corba/.hgtags Mon Dec 08 12:28:12 2014 -0800 +@@ -312,6 +312,8 @@ + 34c930eaa6b591621afde05ca2e24571c91cdc9b jdk8u20-b24 + 34c930eaa6b591621afde05ca2e24571c91cdc9b jdk8u20-b25 + 37bde23c96f66912c44b1b893c08d4ad4cff5f4e jdk8u20-b26 ++83bebea0c36c6ee9e663b41f9103ddcf1216ef55 jdk8u20-b31 ++117f50127c27826dbe4c9e6fe1916aeab4bceef9 jdk8u20-b32 + 08aa9f55fe5bce1f04cfd2958f71e8df18643e29 jdk8u25-b00 + 31f50e3c0dcbdfa7f11a895179065e6888c2cf3c jdk8u25-b01 + 162703b7c2f16ce00d1b54a8f95d12eda9753eba jdk8u25-b02 +@@ -329,3 +331,19 @@ + 7e9a2027d0214019d66325fa7ca59cf8281fb43e jdk8u25-b14 + 5b2cb4935667cd02d7974b3b6fb6bf4092b5acae jdk8u25-b15 + 28d7f90e04e46ce8c633a2fbf0157d9e77db17c3 jdk8u25-b16 ++f46df0af2ca8c7d896de375c8edac8ce09318318 jdk8u25-b17 ++ee069d67c12df902cdb06ecf1747f8ff9d495a61 jdk8u25-b18 ++8d0faa0eac61c04c6a5bbff2e084c9da0bd5251c jdk8u25-b31 ++69793b08060c9d216fa84d679c48b9e22d2400ac jdk8u31-b00 ++fd5f8e3713803ca2d7898407a53996f3aa41521e jdk8u31-b01 ++b6e2d1b1b24585bd02512e360d842d4713afa644 jdk8u31-b02 ++1a7cc737d8081ffef73d88e94995f80d6a3dc8e0 jdk8u31-b03 ++f24241b85fc90618d243f54202904ee202c44b7e jdk8u31-b04 ++a3b616778301fe101bf3dcfa145d3bb4e8fc8941 jdk8u31-b05 ++3de6161377bf492953260c7bf756f3ec0c6e6d60 jdk8u31-b06 ++3d42c53301dd951992a32613173dd6fbb13a28a8 jdk8u31-b07 ++b47677f7c1d122a2d05e03dec70de86feaedcd4c jdk8u31-b08 ++95163f85c9e961c5bf37ceac645a0e7de505ca3e jdk8u31-b09 ++474bf60980443dfae2fe6e121fef0caea4e014b3 jdk8u31-b10 ++7e2056eba0b62247407e065f3f88a89358fc26a6 jdk8u31-b11 ++285b0e589c50e46ca7ad3434221335901a547d66 jdk8u31-b12 +--- ./hotspot/.hgtags Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/.hgtags Mon Dec 08 12:28:35 2014 -0800 +@@ -501,6 +501,8 @@ + 00cf2b6f51b9560b01030e8f4c28c466f0b21fe3 hs25.20-b23 + 19408d5fd31c25ce60c43dd33e92b96e8df4a4ea jdk8u20-b25 + eaa4074a7e3975cd33ec55e6b584586e2ac681bd jdk8u20-b26 ++7c9925f21c2529a88eb64b8039cc080f60b85e01 jdk8u20-b31 ++7edb04063a423e278fe34a0006d25fee198f495e jdk8u20-b32 + a4d44dfb7d30eea54bc172e4429a655454ae0bbf jdk8u25-b00 + 9a2152fbd929b0d8b2f5c326a5526214ae71731a jdk8u25-b01 + d3d5604ea0dea3812e87ba76ac199d0a8be6f49f jdk8u25-b02 +@@ -518,3 +520,19 @@ + c77d5db189422e2eef0443ee212644e497113b18 jdk8u25-b14 + e62c06b887310b5bd23be9b817a9a6f0daf0d0e1 jdk8u25-b15 + 6467bdd4d22d8b140844dc847c43b9ba7cb0bbd1 jdk8u25-b16 ++28b50d07f6f8c5a567b6a25e95a423948114a004 jdk8u25-b17 ++639abc668bfe995dba811dd35411b9ea8a9041cd jdk8u25-b18 ++c3528699fb33fe3eb1d117504184ae7ab2507aa1 jdk8u25-b31 ++5bb683bbe2c74876d585b5c3232fc3aab7b23e97 jdk8u31-b00 ++5bb686ae3b89f8aa1c74331b2d24e2a5ebd43448 jdk8u31-b01 ++087678da96603c9705b38b6cc4a6569ac7b4420a jdk8u31-b02 ++401cbaa475b4efe53153119ab87a82b217980a7f jdk8u31-b03 ++060cdf93040c1bfa5fdf580da5e9999042632cc8 jdk8u31-b04 ++6e56d7f1634f6c4cd4196e699c06e6ca2e6d6efb jdk8u31-b05 ++271a32147391d08b0f338d9353330e2b5584d580 jdk8u31-b06 ++e9f815c3f21cf2febd8e3c185917c1519aa52d9a jdk8u31-b07 ++cc74ca22516644867be3b8db6c1f8d05ab4f6c27 jdk8u31-b08 ++245d29ed5db5ad6914eb0c9fe78b9ba26122c478 jdk8u31-b09 ++d7b6bdd51abe68b16411d5b292fb830a43c5bc09 jdk8u31-b10 ++9906d432d6dbd2cda242e3f3cfde7cf6c90245bf jdk8u31-b11 ++e13839545238d1ecf17f0489bb6fb765de46719a jdk8u31-b12 +--- ./hotspot/make/hotspot_version Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/make/hotspot_version Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + # +-# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved. + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + # + # This code is free software; you can redistribute it and/or modify it +@@ -31,11 +31,11 @@ + # + + # Don't put quotes (fail windows build). +-HOTSPOT_VM_COPYRIGHT=Copyright 2014 ++HOTSPOT_VM_COPYRIGHT=Copyright 2015 + + HS_MAJOR_VER=25 +-HS_MINOR_VER=25 +-HS_BUILD_NUMBER=02 ++HS_MINOR_VER=31 ++HS_BUILD_NUMBER=07 + + JDK_MAJOR_VER=1 + JDK_MINOR_VER=8 +--- ./hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1128,51 +1128,82 @@ + // Hoist any int/ptr/long's in the first 6 to int regs. + // Hoist any flt/dbl's in the first 16 dbl regs. + int j = 0; // Count of actual args, not HALVES +- for( int i=0; ias_VMReg()); +- } else { +- // V9ism: floats go in ODD stack slot +- regs[i].set1(VMRegImpl::stack2reg(1 + (j<<1))); ++ // Per SPARC Compliance Definition 2.4.1, page 3P-12 available here ++ // http://www.sparc.org/wp-content/uploads/2014/01/SCD.2.4.1.pdf.gz ++ // ++ // "When a callee prototype exists, and does not indicate variable arguments, ++ // floating-point values assigned to locations %sp+BIAS+128 through %sp+BIAS+248 ++ // will be promoted to floating-point registers" ++ // ++ // By "promoted" it means that the argument is located in two places, an unused ++ // spill slot in the "parameter array" (starts at %sp+BIAS+128), and a live ++ // float register. In most cases, there are 6 or fewer arguments of any type, ++ // and the standard parameter array slots (%sp+BIAS+128 to %sp+BIAS+176 exclusive) ++ // serve as shadow slots. Per the spec floating point registers %d6 to %d16 ++ // require slots beyond that (up to %sp+BIAS+248). ++ // ++ { ++ // V9ism: floats go in ODD registers and stack slots ++ int float_index = 1 + (j << 1); ++ param_array_reg.set1(VMRegImpl::stack2reg(float_index)); ++ if (j < 16) { ++ regs[i].set1(as_FloatRegister(float_index)->as_VMReg()); ++ } else { ++ regs[i] = param_array_reg; ++ } + } + break; + case T_DOUBLE: +- assert( sig_bt[i+1] == T_VOID, "expecting half" ); +- if ( j < 16 ) { +- // V9ism: doubles go in EVEN/ODD regs +- regs[i].set2(as_FloatRegister(j<<1)->as_VMReg()); +- } else { +- // V9ism: doubles go in EVEN/ODD stack slots +- regs[i].set2(VMRegImpl::stack2reg(j<<1)); ++ { ++ assert(sig_bt[i + 1] == T_VOID, "expecting half"); ++ // V9ism: doubles go in EVEN/ODD regs and stack slots ++ int double_index = (j << 1); ++ param_array_reg.set2(VMRegImpl::stack2reg(double_index)); ++ if (j < 16) { ++ regs[i].set2(as_FloatRegister(double_index)->as_VMReg()); ++ } else { ++ // V9ism: doubles go in EVEN/ODD stack slots ++ regs[i] = param_array_reg; ++ } + } + break; +- case T_VOID: regs[i].set_bad(); j--; break; // Do not count HALVES ++ case T_VOID: ++ regs[i].set_bad(); ++ j--; ++ break; // Do not count HALVES + default: + ShouldNotReachHere(); + } +- if (regs[i].first()->is_stack()) { +- int off = regs[i].first()->reg2stack(); ++ // Keep track of the deepest parameter array slot. ++ if (!param_array_reg.first()->is_valid()) { ++ param_array_reg = regs[i]; ++ } ++ if (param_array_reg.first()->is_stack()) { ++ int off = param_array_reg.first()->reg2stack(); + if (off > max_stack_slots) max_stack_slots = off; + } +- if (regs[i].second()->is_stack()) { +- int off = regs[i].second()->reg2stack(); ++ if (param_array_reg.second()->is_stack()) { ++ int off = param_array_reg.second()->reg2stack(); + if (off > max_stack_slots) max_stack_slots = off; + } + } +@@ -1180,8 +1211,8 @@ + #else // _LP64 + // V8 convention: first 6 things in O-regs, rest on stack. + // Alignment is willy-nilly. +- for( int i=0; iis_stack()) { +- int off = regs[i].first()->reg2stack(); ++ int off = regs[i].first()->reg2stack(); + if (off > max_stack_slots) max_stack_slots = off; + } + if (regs[i].second()->is_stack()) { +- int off = regs[i].second()->reg2stack(); ++ int off = regs[i].second()->reg2stack(); + if (off > max_stack_slots) max_stack_slots = off; + } + } +@@ -1357,11 +1388,10 @@ + const Register rOop = src.first()->as_Register(); + const Register rHandle = L5; + int oop_slot = rOop->input_number() * VMRegImpl::slots_per_word + oop_handle_offset; +- int offset = oop_slot*VMRegImpl::stack_slot_size; +- Label skip; ++ int offset = oop_slot * VMRegImpl::stack_slot_size; + __ st_ptr(rOop, SP, offset + STACK_BIAS); + if (is_receiver) { +- *receiver_offset = oop_slot * VMRegImpl::stack_slot_size; ++ *receiver_offset = offset; + } + map->set_oop(VMRegImpl::stack2reg(oop_slot)); + __ add(SP, offset + STACK_BIAS, rHandle); +--- ./hotspot/src/cpu/sparc/vm/sparc.ad Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/cpu/sparc/vm/sparc.ad Mon Dec 08 12:28:35 2014 -0800 +@@ -1989,7 +1989,7 @@ + // to implement the UseStrictFP mode. + const bool Matcher::strict_fp_requires_explicit_rounding = false; + +-// Are floats conerted to double when stored to stack during deoptimization? ++// Are floats converted to double when stored to stack during deoptimization? + // Sparc does not handle callee-save floats. + bool Matcher::float_in_double() { return false; } + +@@ -3218,7 +3218,7 @@ + // are owned by the CALLEE. Holes should not be nessecary in the + // incoming area, as the Java calling convention is completely under + // the control of the AD file. Doubles can be sorted and packed to +-// avoid holes. Holes in the outgoing arguments may be nessecary for ++// avoid holes. Holes in the outgoing arguments may be necessary for + // varargs C calling conventions. + // Note 3: Region 0-3 is even aligned, with pad2 as needed. Region 3-5 is + // even aligned with pad0 as needed. +@@ -3284,7 +3284,7 @@ + %} + + // Body of function which returns an OptoRegs array locating +- // arguments either in registers or in stack slots for callin ++ // arguments either in registers or in stack slots for calling + // C. + c_calling_convention %{ + // This is obviously always outgoing +--- ./hotspot/src/os/bsd/vm/perfMemory_bsd.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/os/bsd/vm/perfMemory_bsd.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -197,7 +197,38 @@ + } + + +-// check if the given path is considered a secure directory for ++// Check if the given statbuf is considered a secure directory for ++// the backing store files. Returns true if the directory is considered ++// a secure location. Returns false if the statbuf is a symbolic link or ++// if an error occurred. ++// ++static bool is_statbuf_secure(struct stat *statp) { ++ if (S_ISLNK(statp->st_mode) || !S_ISDIR(statp->st_mode)) { ++ // The path represents a link or some non-directory file type, ++ // which is not what we expected. Declare it insecure. ++ // ++ return false; ++ } ++ // We have an existing directory, check if the permissions are safe. ++ // ++ if ((statp->st_mode & (S_IWGRP|S_IWOTH)) != 0) { ++ // The directory is open for writing and could be subjected ++ // to a symlink or a hard link attack. Declare it insecure. ++ // ++ return false; ++ } ++ // See if the uid of the directory matches the effective uid of the process. ++ // ++ if (statp->st_uid != geteuid()) { ++ // The directory was not created by this user, declare it insecure. ++ // ++ return false; ++ } ++ return true; ++} ++ ++ ++// Check if the given path is considered a secure directory for + // the backing store files. Returns true if the directory exists + // and is considered a secure location. Returns false if the path + // is a symbolic link or if an error occurred. +@@ -211,27 +242,185 @@ + return false; + } + +- // the path exists, now check it's mode +- if (S_ISLNK(statbuf.st_mode) || !S_ISDIR(statbuf.st_mode)) { +- // the path represents a link or some non-directory file type, +- // which is not what we expected. declare it insecure. +- // ++ // The path exists, see if it is secure. ++ return is_statbuf_secure(&statbuf); ++} ++ ++ ++// Check if the given directory file descriptor is considered a secure ++// directory for the backing store files. Returns true if the directory ++// exists and is considered a secure location. Returns false if the path ++// is a symbolic link or if an error occurred. ++// ++static bool is_dirfd_secure(int dir_fd) { ++ struct stat statbuf; ++ int result = 0; ++ ++ RESTARTABLE(::fstat(dir_fd, &statbuf), result); ++ if (result == OS_ERR) { + return false; + } +- else { +- // we have an existing directory, check if the permissions are safe. +- // +- if ((statbuf.st_mode & (S_IWGRP|S_IWOTH)) != 0) { +- // the directory is open for writing and could be subjected +- // to a symlnk attack. declare it insecure. +- // +- return false; ++ ++ // The path exists, now check its mode. ++ return is_statbuf_secure(&statbuf); ++} ++ ++ ++// Check to make sure fd1 and fd2 are referencing the same file system object. ++// ++static bool is_same_fsobject(int fd1, int fd2) { ++ struct stat statbuf1; ++ struct stat statbuf2; ++ int result = 0; ++ ++ RESTARTABLE(::fstat(fd1, &statbuf1), result); ++ if (result == OS_ERR) { ++ return false; ++ } ++ RESTARTABLE(::fstat(fd2, &statbuf2), result); ++ if (result == OS_ERR) { ++ return false; ++ } ++ ++ if ((statbuf1.st_ino == statbuf2.st_ino) && ++ (statbuf1.st_dev == statbuf2.st_dev)) { ++ return true; ++ } else { ++ return false; ++ } ++} ++ ++ ++// Open the directory of the given path and validate it. ++// Return a DIR * of the open directory. ++// ++static DIR *open_directory_secure(const char* dirname) { ++ // Open the directory using open() so that it can be verified ++ // to be secure by calling is_dirfd_secure(), opendir() and then check ++ // to see if they are the same file system object. This method does not ++ // introduce a window of opportunity for the directory to be attacked that ++ // calling opendir() and is_directory_secure() does. ++ int result; ++ DIR *dirp = NULL; ++ RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result); ++ if (result == OS_ERR) { ++ // Directory doesn't exist or is a symlink, so there is nothing to cleanup. ++ if (PrintMiscellaneous && Verbose) { ++ if (errno == ELOOP) { ++ warning("directory %s is a symlink and is not secure\n", dirname); ++ } else { ++ warning("could not open directory %s: %s\n", dirname, strerror(errno)); ++ } + } ++ return dirp; ++ } ++ int fd = result; ++ ++ // Determine if the open directory is secure. ++ if (!is_dirfd_secure(fd)) { ++ // The directory is not a secure directory. ++ os::close(fd); ++ return dirp; ++ } ++ ++ // Open the directory. ++ dirp = ::opendir(dirname); ++ if (dirp == NULL) { ++ // The directory doesn't exist, close fd and return. ++ os::close(fd); ++ return dirp; ++ } ++ ++ // Check to make sure fd and dirp are referencing the same file system object. ++ if (!is_same_fsobject(fd, dirfd(dirp))) { ++ // The directory is not secure. ++ os::close(fd); ++ os::closedir(dirp); ++ dirp = NULL; ++ return dirp; ++ } ++ ++ // Close initial open now that we know directory is secure ++ os::close(fd); ++ ++ return dirp; ++} ++ ++// NOTE: The code below uses fchdir(), open() and unlink() because ++// fdopendir(), openat() and unlinkat() are not supported on all ++// versions. Once the support for fdopendir(), openat() and unlinkat() ++// is available on all supported versions the code can be changed ++// to use these functions. ++ ++// Open the directory of the given path, validate it and set the ++// current working directory to it. ++// Return a DIR * of the open directory and the saved cwd fd. ++// ++static DIR *open_directory_secure_cwd(const char* dirname, int *saved_cwd_fd) { ++ ++ // Open the directory. ++ DIR* dirp = open_directory_secure(dirname); ++ if (dirp == NULL) { ++ // Directory doesn't exist or is insecure, so there is nothing to cleanup. ++ return dirp; ++ } ++ int fd = dirfd(dirp); ++ ++ // Open a fd to the cwd and save it off. ++ int result; ++ RESTARTABLE(::open(".", O_RDONLY), result); ++ if (result == OS_ERR) { ++ *saved_cwd_fd = -1; ++ } else { ++ *saved_cwd_fd = result; ++ } ++ ++ // Set the current directory to dirname by using the fd of the directory. ++ result = fchdir(fd); ++ ++ return dirp; ++} ++ ++// Close the directory and restore the current working directory. ++// ++static void close_directory_secure_cwd(DIR* dirp, int saved_cwd_fd) { ++ ++ int result; ++ // If we have a saved cwd change back to it and close the fd. ++ if (saved_cwd_fd != -1) { ++ result = fchdir(saved_cwd_fd); ++ ::close(saved_cwd_fd); ++ } ++ ++ // Close the directory. ++ os::closedir(dirp); ++} ++ ++// Check if the given file descriptor is considered a secure. ++// ++static bool is_file_secure(int fd, const char *filename) { ++ ++ int result; ++ struct stat statbuf; ++ ++ // Determine if the file is secure. ++ RESTARTABLE(::fstat(fd, &statbuf), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ warning("fstat failed on %s: %s\n", filename, strerror(errno)); ++ } ++ return false; ++ } ++ if (statbuf.st_nlink > 1) { ++ // A file with multiple links is not expected. ++ if (PrintMiscellaneous && Verbose) { ++ warning("file %s has multiple links\n", filename); ++ } ++ return false; + } + return true; + } + +- + // return the user name for the given user id + // + // the caller is expected to free the allocated memory. +@@ -317,9 +506,11 @@ + + const char* tmpdirname = os::get_temp_directory(); + ++ // open the temp directory + DIR* tmpdirp = os::opendir(tmpdirname); + + if (tmpdirp == NULL) { ++ // Cannot open the directory to get the user name, return. + return NULL; + } + +@@ -344,25 +535,14 @@ + strcat(usrdir_name, "/"); + strcat(usrdir_name, dentry->d_name); + +- DIR* subdirp = os::opendir(usrdir_name); ++ // open the user directory ++ DIR* subdirp = open_directory_secure(usrdir_name); + + if (subdirp == NULL) { + FREE_C_HEAP_ARRAY(char, usrdir_name, mtInternal); + continue; + } + +- // Since we don't create the backing store files in directories +- // pointed to by symbolic links, we also don't follow them when +- // looking for the files. We check for a symbolic link after the +- // call to opendir in order to eliminate a small window where the +- // symlink can be exploited. +- // +- if (!is_directory_secure(usrdir_name)) { +- FREE_C_HEAP_ARRAY(char, usrdir_name, mtInternal); +- os::closedir(subdirp); +- continue; +- } +- + struct dirent* udentry; + char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name), mtInternal); + errno = 0; +@@ -465,26 +645,6 @@ + } + + +-// remove file +-// +-// this method removes the file with the given file name in the +-// named directory. +-// +-static void remove_file(const char* dirname, const char* filename) { +- +- size_t nbytes = strlen(dirname) + strlen(filename) + 2; +- char* path = NEW_C_HEAP_ARRAY(char, nbytes, mtInternal); +- +- strcpy(path, dirname); +- strcat(path, "/"); +- strcat(path, filename); +- +- remove_file(path); +- +- FREE_C_HEAP_ARRAY(char, path, mtInternal); +-} +- +- + // cleanup stale shared memory resources + // + // This method attempts to remove all stale shared memory files in +@@ -496,16 +656,11 @@ + // + static void cleanup_sharedmem_resources(const char* dirname) { + +- // open the user temp directory +- DIR* dirp = os::opendir(dirname); +- ++ int saved_cwd_fd; ++ // open the directory and set the current working directory to it ++ DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); + if (dirp == NULL) { +- // directory doesn't exist, so there is nothing to cleanup +- return; +- } +- +- if (!is_directory_secure(dirname)) { +- // the directory is not a secure directory ++ // directory doesn't exist or is insecure, so there is nothing to cleanup + return; + } + +@@ -519,6 +674,7 @@ + // + struct dirent* entry; + char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal); ++ + errno = 0; + while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) { + +@@ -529,7 +685,7 @@ + if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { + + // attempt to remove all unexpected files, except "." and ".." +- remove_file(dirname, entry->d_name); ++ unlink(entry->d_name); + } + + errno = 0; +@@ -552,11 +708,14 @@ + if ((pid == os::current_process_id()) || + (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) { + +- remove_file(dirname, entry->d_name); ++ unlink(entry->d_name); + } + errno = 0; + } +- os::closedir(dirp); ++ ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); ++ + FREE_C_HEAP_ARRAY(char, dbuf, mtInternal); + } + +@@ -613,19 +772,54 @@ + return -1; + } + ++ int saved_cwd_fd; ++ // open the directory and set the current working directory to it ++ DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); ++ if (dirp == NULL) { ++ // Directory doesn't exist or is insecure, so cannot create shared ++ // memory file. ++ return -1; ++ } ++ ++ // Open the filename in the current directory. ++ // Cannot use O_TRUNC here; truncation of an existing file has to happen ++ // after the is_file_secure() check below. + int result; +- +- RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE), result); ++ RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_NOFOLLOW, S_IREAD|S_IWRITE), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { +- warning("could not create file %s: %s\n", filename, strerror(errno)); ++ if (errno == ELOOP) { ++ warning("file %s is a symlink and is not secure\n", filename); ++ } else { ++ warning("could not create file %s: %s\n", filename, strerror(errno)); ++ } + } ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); ++ + return -1; + } ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); + + // save the file descriptor + int fd = result; + ++ // check to see if the file is secure ++ if (!is_file_secure(fd, filename)) { ++ ::close(fd); ++ return -1; ++ } ++ ++ // truncate the file to get rid of any existing data ++ RESTARTABLE(::ftruncate(fd, (off_t)0), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ warning("could not truncate shared memory file: %s\n", strerror(errno)); ++ } ++ ::close(fd); ++ return -1; ++ } + // set the file size + RESTARTABLE(::ftruncate(fd, (off_t)size), result); + if (result == OS_ERR) { +@@ -683,8 +877,15 @@ + THROW_MSG_(vmSymbols::java_io_IOException(), strerror(errno), OS_ERR); + } + } ++ int fd = result; + +- return result; ++ // check to see if the file is secure ++ if (!is_file_secure(fd, filename)) { ++ ::close(fd); ++ return -1; ++ } ++ ++ return fd; + } + + // create a named shared memory region. returns the address of the +@@ -716,13 +917,21 @@ + char* dirname = get_user_tmp_dir(user_name); + char* filename = get_sharedmem_filename(dirname, vmid); + ++ // get the short filename ++ char* short_filename = strrchr(filename, '/'); ++ if (short_filename == NULL) { ++ short_filename = filename; ++ } else { ++ short_filename++; ++ } ++ + // cleanup any stale shared memory files + cleanup_sharedmem_resources(dirname); + + assert(((size > 0) && (size % os::vm_page_size() == 0)), + "unexpected PerfMemory region size"); + +- fd = create_sharedmem_resources(dirname, filename, size); ++ fd = create_sharedmem_resources(dirname, short_filename, size); + + FREE_C_HEAP_ARRAY(char, user_name, mtInternal); + FREE_C_HEAP_ARRAY(char, dirname, mtInternal); +@@ -837,12 +1046,12 @@ + // constructs for the file and the shared memory mapping. + if (mode == PerfMemory::PERF_MODE_RO) { + mmap_prot = PROT_READ; +- file_flags = O_RDONLY; ++ file_flags = O_RDONLY | O_NOFOLLOW; + } + else if (mode == PerfMemory::PERF_MODE_RW) { + #ifdef LATER + mmap_prot = PROT_READ | PROT_WRITE; +- file_flags = O_RDWR; ++ file_flags = O_RDWR | O_NOFOLLOW; + #else + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), + "Unsupported access mode"); +--- ./hotspot/src/os/linux/vm/perfMemory_linux.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/os/linux/vm/perfMemory_linux.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -197,7 +197,38 @@ + } + + +-// check if the given path is considered a secure directory for ++// Check if the given statbuf is considered a secure directory for ++// the backing store files. Returns true if the directory is considered ++// a secure location. Returns false if the statbuf is a symbolic link or ++// if an error occurred. ++// ++static bool is_statbuf_secure(struct stat *statp) { ++ if (S_ISLNK(statp->st_mode) || !S_ISDIR(statp->st_mode)) { ++ // The path represents a link or some non-directory file type, ++ // which is not what we expected. Declare it insecure. ++ // ++ return false; ++ } ++ // We have an existing directory, check if the permissions are safe. ++ // ++ if ((statp->st_mode & (S_IWGRP|S_IWOTH)) != 0) { ++ // The directory is open for writing and could be subjected ++ // to a symlink or a hard link attack. Declare it insecure. ++ // ++ return false; ++ } ++ // See if the uid of the directory matches the effective uid of the process. ++ // ++ if (statp->st_uid != geteuid()) { ++ // The directory was not created by this user, declare it insecure. ++ // ++ return false; ++ } ++ return true; ++} ++ ++ ++// Check if the given path is considered a secure directory for + // the backing store files. Returns true if the directory exists + // and is considered a secure location. Returns false if the path + // is a symbolic link or if an error occurred. +@@ -211,22 +242,180 @@ + return false; + } + +- // the path exists, now check it's mode +- if (S_ISLNK(statbuf.st_mode) || !S_ISDIR(statbuf.st_mode)) { +- // the path represents a link or some non-directory file type, +- // which is not what we expected. declare it insecure. +- // ++ // The path exists, see if it is secure. ++ return is_statbuf_secure(&statbuf); ++} ++ ++ ++// Check if the given directory file descriptor is considered a secure ++// directory for the backing store files. Returns true if the directory ++// exists and is considered a secure location. Returns false if the path ++// is a symbolic link or if an error occurred. ++// ++static bool is_dirfd_secure(int dir_fd) { ++ struct stat statbuf; ++ int result = 0; ++ ++ RESTARTABLE(::fstat(dir_fd, &statbuf), result); ++ if (result == OS_ERR) { + return false; + } +- else { +- // we have an existing directory, check if the permissions are safe. +- // +- if ((statbuf.st_mode & (S_IWGRP|S_IWOTH)) != 0) { +- // the directory is open for writing and could be subjected +- // to a symlnk attack. declare it insecure. +- // +- return false; ++ ++ // The path exists, now check its mode. ++ return is_statbuf_secure(&statbuf); ++} ++ ++ ++// Check to make sure fd1 and fd2 are referencing the same file system object. ++// ++static bool is_same_fsobject(int fd1, int fd2) { ++ struct stat statbuf1; ++ struct stat statbuf2; ++ int result = 0; ++ ++ RESTARTABLE(::fstat(fd1, &statbuf1), result); ++ if (result == OS_ERR) { ++ return false; ++ } ++ RESTARTABLE(::fstat(fd2, &statbuf2), result); ++ if (result == OS_ERR) { ++ return false; ++ } ++ ++ if ((statbuf1.st_ino == statbuf2.st_ino) && ++ (statbuf1.st_dev == statbuf2.st_dev)) { ++ return true; ++ } else { ++ return false; ++ } ++} ++ ++ ++// Open the directory of the given path and validate it. ++// Return a DIR * of the open directory. ++// ++static DIR *open_directory_secure(const char* dirname) { ++ // Open the directory using open() so that it can be verified ++ // to be secure by calling is_dirfd_secure(), opendir() and then check ++ // to see if they are the same file system object. This method does not ++ // introduce a window of opportunity for the directory to be attacked that ++ // calling opendir() and is_directory_secure() does. ++ int result; ++ DIR *dirp = NULL; ++ RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ if (errno == ELOOP) { ++ warning("directory %s is a symlink and is not secure\n", dirname); ++ } else { ++ warning("could not open directory %s: %s\n", dirname, strerror(errno)); ++ } + } ++ return dirp; ++ } ++ int fd = result; ++ ++ // Determine if the open directory is secure. ++ if (!is_dirfd_secure(fd)) { ++ // The directory is not a secure directory. ++ os::close(fd); ++ return dirp; ++ } ++ ++ // Open the directory. ++ dirp = ::opendir(dirname); ++ if (dirp == NULL) { ++ // The directory doesn't exist, close fd and return. ++ os::close(fd); ++ return dirp; ++ } ++ ++ // Check to make sure fd and dirp are referencing the same file system object. ++ if (!is_same_fsobject(fd, dirfd(dirp))) { ++ // The directory is not secure. ++ os::close(fd); ++ os::closedir(dirp); ++ dirp = NULL; ++ return dirp; ++ } ++ ++ // Close initial open now that we know directory is secure ++ os::close(fd); ++ ++ return dirp; ++} ++ ++// NOTE: The code below uses fchdir(), open() and unlink() because ++// fdopendir(), openat() and unlinkat() are not supported on all ++// versions. Once the support for fdopendir(), openat() and unlinkat() ++// is available on all supported versions the code can be changed ++// to use these functions. ++ ++// Open the directory of the given path, validate it and set the ++// current working directory to it. ++// Return a DIR * of the open directory and the saved cwd fd. ++// ++static DIR *open_directory_secure_cwd(const char* dirname, int *saved_cwd_fd) { ++ ++ // Open the directory. ++ DIR* dirp = open_directory_secure(dirname); ++ if (dirp == NULL) { ++ // Directory doesn't exist or is insecure, so there is nothing to cleanup. ++ return dirp; ++ } ++ int fd = dirfd(dirp); ++ ++ // Open a fd to the cwd and save it off. ++ int result; ++ RESTARTABLE(::open(".", O_RDONLY), result); ++ if (result == OS_ERR) { ++ *saved_cwd_fd = -1; ++ } else { ++ *saved_cwd_fd = result; ++ } ++ ++ // Set the current directory to dirname by using the fd of the directory. ++ result = fchdir(fd); ++ ++ return dirp; ++} ++ ++// Close the directory and restore the current working directory. ++// ++static void close_directory_secure_cwd(DIR* dirp, int saved_cwd_fd) { ++ ++ int result; ++ // If we have a saved cwd change back to it and close the fd. ++ if (saved_cwd_fd != -1) { ++ result = fchdir(saved_cwd_fd); ++ ::close(saved_cwd_fd); ++ } ++ ++ // Close the directory. ++ os::closedir(dirp); ++} ++ ++// Check if the given file descriptor is considered a secure. ++// ++static bool is_file_secure(int fd, const char *filename) { ++ ++ int result; ++ struct stat statbuf; ++ ++ // Determine if the file is secure. ++ RESTARTABLE(::fstat(fd, &statbuf), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ warning("fstat failed on %s: %s\n", filename, strerror(errno)); ++ } ++ return false; ++ } ++ if (statbuf.st_nlink > 1) { ++ // A file with multiple links is not expected. ++ if (PrintMiscellaneous && Verbose) { ++ warning("file %s has multiple links\n", filename); ++ } ++ return false; + } + return true; + } +@@ -317,9 +506,11 @@ + + const char* tmpdirname = os::get_temp_directory(); + ++ // open the temp directory + DIR* tmpdirp = os::opendir(tmpdirname); + + if (tmpdirp == NULL) { ++ // Cannot open the directory to get the user name, return. + return NULL; + } + +@@ -344,7 +535,8 @@ + strcat(usrdir_name, "/"); + strcat(usrdir_name, dentry->d_name); + +- DIR* subdirp = os::opendir(usrdir_name); ++ // open the user directory ++ DIR* subdirp = open_directory_secure(usrdir_name); + + if (subdirp == NULL) { + FREE_C_HEAP_ARRAY(char, usrdir_name, mtInternal); +@@ -465,26 +657,6 @@ + } + + +-// remove file +-// +-// this method removes the file with the given file name in the +-// named directory. +-// +-static void remove_file(const char* dirname, const char* filename) { +- +- size_t nbytes = strlen(dirname) + strlen(filename) + 2; +- char* path = NEW_C_HEAP_ARRAY(char, nbytes, mtInternal); +- +- strcpy(path, dirname); +- strcat(path, "/"); +- strcat(path, filename); +- +- remove_file(path); +- +- FREE_C_HEAP_ARRAY(char, path, mtInternal); +-} +- +- + // cleanup stale shared memory resources + // + // This method attempts to remove all stale shared memory files in +@@ -496,16 +668,11 @@ + // + static void cleanup_sharedmem_resources(const char* dirname) { + +- // open the user temp directory +- DIR* dirp = os::opendir(dirname); +- ++ int saved_cwd_fd; ++ // open the directory ++ DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); + if (dirp == NULL) { +- // directory doesn't exist, so there is nothing to cleanup +- return; +- } +- +- if (!is_directory_secure(dirname)) { +- // the directory is not a secure directory ++ // directory doesn't exist or is insecure, so there is nothing to cleanup + return; + } + +@@ -519,6 +686,7 @@ + // + struct dirent* entry; + char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal); ++ + errno = 0; + while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) { + +@@ -527,9 +695,8 @@ + if (pid == 0) { + + if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { +- + // attempt to remove all unexpected files, except "." and ".." +- remove_file(dirname, entry->d_name); ++ unlink(entry->d_name); + } + + errno = 0; +@@ -551,12 +718,14 @@ + // + if ((pid == os::current_process_id()) || + (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) { +- +- remove_file(dirname, entry->d_name); ++ unlink(entry->d_name); + } + errno = 0; + } +- os::closedir(dirp); ++ ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); ++ + FREE_C_HEAP_ARRAY(char, dbuf, mtInternal); + } + +@@ -613,19 +782,54 @@ + return -1; + } + ++ int saved_cwd_fd; ++ // open the directory and set the current working directory to it ++ DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); ++ if (dirp == NULL) { ++ // Directory doesn't exist or is insecure, so cannot create shared ++ // memory file. ++ return -1; ++ } ++ ++ // Open the filename in the current directory. ++ // Cannot use O_TRUNC here; truncation of an existing file has to happen ++ // after the is_file_secure() check below. + int result; +- +- RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE), result); ++ RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_NOFOLLOW, S_IREAD|S_IWRITE), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { +- warning("could not create file %s: %s\n", filename, strerror(errno)); ++ if (errno == ELOOP) { ++ warning("file %s is a symlink and is not secure\n", filename); ++ } else { ++ warning("could not create file %s: %s\n", filename, strerror(errno)); ++ } + } ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); ++ + return -1; + } ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); + + // save the file descriptor + int fd = result; + ++ // check to see if the file is secure ++ if (!is_file_secure(fd, filename)) { ++ ::close(fd); ++ return -1; ++ } ++ ++ // truncate the file to get rid of any existing data ++ RESTARTABLE(::ftruncate(fd, (off_t)0), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ warning("could not truncate shared memory file: %s\n", strerror(errno)); ++ } ++ ::close(fd); ++ return -1; ++ } + // set the file size + RESTARTABLE(::ftruncate(fd, (off_t)size), result); + if (result == OS_ERR) { +@@ -683,8 +887,15 @@ + THROW_MSG_(vmSymbols::java_io_IOException(), strerror(errno), OS_ERR); + } + } ++ int fd = result; + +- return result; ++ // check to see if the file is secure ++ if (!is_file_secure(fd, filename)) { ++ ::close(fd); ++ return -1; ++ } ++ ++ return fd; + } + + // create a named shared memory region. returns the address of the +@@ -715,6 +926,13 @@ + + char* dirname = get_user_tmp_dir(user_name); + char* filename = get_sharedmem_filename(dirname, vmid); ++ // get the short filename ++ char* short_filename = strrchr(filename, '/'); ++ if (short_filename == NULL) { ++ short_filename = filename; ++ } else { ++ short_filename++; ++ } + + // cleanup any stale shared memory files + cleanup_sharedmem_resources(dirname); +@@ -722,7 +940,7 @@ + assert(((size > 0) && (size % os::vm_page_size() == 0)), + "unexpected PerfMemory region size"); + +- fd = create_sharedmem_resources(dirname, filename, size); ++ fd = create_sharedmem_resources(dirname, short_filename, size); + + FREE_C_HEAP_ARRAY(char, user_name, mtInternal); + FREE_C_HEAP_ARRAY(char, dirname, mtInternal); +@@ -837,12 +1055,12 @@ + // constructs for the file and the shared memory mapping. + if (mode == PerfMemory::PERF_MODE_RO) { + mmap_prot = PROT_READ; +- file_flags = O_RDONLY; ++ file_flags = O_RDONLY | O_NOFOLLOW; + } + else if (mode == PerfMemory::PERF_MODE_RW) { + #ifdef LATER + mmap_prot = PROT_READ | PROT_WRITE; +- file_flags = O_RDWR; ++ file_flags = O_RDWR | O_NOFOLLOW; + #else + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), + "Unsupported access mode"); +--- ./hotspot/src/os/solaris/vm/perfMemory_solaris.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/os/solaris/vm/perfMemory_solaris.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -199,7 +199,38 @@ + } + + +-// check if the given path is considered a secure directory for ++// Check if the given statbuf is considered a secure directory for ++// the backing store files. Returns true if the directory is considered ++// a secure location. Returns false if the statbuf is a symbolic link or ++// if an error occurred. ++// ++static bool is_statbuf_secure(struct stat *statp) { ++ if (S_ISLNK(statp->st_mode) || !S_ISDIR(statp->st_mode)) { ++ // The path represents a link or some non-directory file type, ++ // which is not what we expected. Declare it insecure. ++ // ++ return false; ++ } ++ // We have an existing directory, check if the permissions are safe. ++ // ++ if ((statp->st_mode & (S_IWGRP|S_IWOTH)) != 0) { ++ // The directory is open for writing and could be subjected ++ // to a symlink or a hard link attack. Declare it insecure. ++ // ++ return false; ++ } ++ // See if the uid of the directory matches the effective uid of the process. ++ // ++ if (statp->st_uid != geteuid()) { ++ // The directory was not created by this user, declare it insecure. ++ // ++ return false; ++ } ++ return true; ++} ++ ++ ++// Check if the given path is considered a secure directory for + // the backing store files. Returns true if the directory exists + // and is considered a secure location. Returns false if the path + // is a symbolic link or if an error occurred. +@@ -213,27 +244,185 @@ + return false; + } + +- // the path exists, now check it's mode +- if (S_ISLNK(statbuf.st_mode) || !S_ISDIR(statbuf.st_mode)) { +- // the path represents a link or some non-directory file type, +- // which is not what we expected. declare it insecure. +- // ++ // The path exists, see if it is secure. ++ return is_statbuf_secure(&statbuf); ++} ++ ++ ++// Check if the given directory file descriptor is considered a secure ++// directory for the backing store files. Returns true if the directory ++// exists and is considered a secure location. Returns false if the path ++// is a symbolic link or if an error occurred. ++// ++static bool is_dirfd_secure(int dir_fd) { ++ struct stat statbuf; ++ int result = 0; ++ ++ RESTARTABLE(::fstat(dir_fd, &statbuf), result); ++ if (result == OS_ERR) { + return false; + } +- else { +- // we have an existing directory, check if the permissions are safe. +- // +- if ((statbuf.st_mode & (S_IWGRP|S_IWOTH)) != 0) { +- // the directory is open for writing and could be subjected +- // to a symlnk attack. declare it insecure. +- // +- return false; ++ ++ // The path exists, now check its mode. ++ return is_statbuf_secure(&statbuf); ++} ++ ++ ++// Check to make sure fd1 and fd2 are referencing the same file system object. ++// ++static bool is_same_fsobject(int fd1, int fd2) { ++ struct stat statbuf1; ++ struct stat statbuf2; ++ int result = 0; ++ ++ RESTARTABLE(::fstat(fd1, &statbuf1), result); ++ if (result == OS_ERR) { ++ return false; ++ } ++ RESTARTABLE(::fstat(fd2, &statbuf2), result); ++ if (result == OS_ERR) { ++ return false; ++ } ++ ++ if ((statbuf1.st_ino == statbuf2.st_ino) && ++ (statbuf1.st_dev == statbuf2.st_dev)) { ++ return true; ++ } else { ++ return false; ++ } ++} ++ ++ ++// Open the directory of the given path and validate it. ++// Return a DIR * of the open directory. ++// ++static DIR *open_directory_secure(const char* dirname) { ++ // Open the directory using open() so that it can be verified ++ // to be secure by calling is_dirfd_secure(), opendir() and then check ++ // to see if they are the same file system object. This method does not ++ // introduce a window of opportunity for the directory to be attacked that ++ // calling opendir() and is_directory_secure() does. ++ int result; ++ DIR *dirp = NULL; ++ RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result); ++ if (result == OS_ERR) { ++ // Directory doesn't exist or is a symlink, so there is nothing to cleanup. ++ if (PrintMiscellaneous && Verbose) { ++ if (errno == ELOOP) { ++ warning("directory %s is a symlink and is not secure\n", dirname); ++ } else { ++ warning("could not open directory %s: %s\n", dirname, strerror(errno)); ++ } + } ++ return dirp; ++ } ++ int fd = result; ++ ++ // Determine if the open directory is secure. ++ if (!is_dirfd_secure(fd)) { ++ // The directory is not a secure directory. ++ os::close(fd); ++ return dirp; ++ } ++ ++ // Open the directory. ++ dirp = ::opendir(dirname); ++ if (dirp == NULL) { ++ // The directory doesn't exist, close fd and return. ++ os::close(fd); ++ return dirp; ++ } ++ ++ // Check to make sure fd and dirp are referencing the same file system object. ++ if (!is_same_fsobject(fd, dirp->dd_fd)) { ++ // The directory is not secure. ++ os::close(fd); ++ os::closedir(dirp); ++ dirp = NULL; ++ return dirp; ++ } ++ ++ // Close initial open now that we know directory is secure ++ os::close(fd); ++ ++ return dirp; ++} ++ ++// NOTE: The code below uses fchdir(), open() and unlink() because ++// fdopendir(), openat() and unlinkat() are not supported on all ++// versions. Once the support for fdopendir(), openat() and unlinkat() ++// is available on all supported versions the code can be changed ++// to use these functions. ++ ++// Open the directory of the given path, validate it and set the ++// current working directory to it. ++// Return a DIR * of the open directory and the saved cwd fd. ++// ++static DIR *open_directory_secure_cwd(const char* dirname, int *saved_cwd_fd) { ++ ++ // Open the directory. ++ DIR* dirp = open_directory_secure(dirname); ++ if (dirp == NULL) { ++ // Directory doesn't exist or is insecure, so there is nothing to cleanup. ++ return dirp; ++ } ++ int fd = dirp->dd_fd; ++ ++ // Open a fd to the cwd and save it off. ++ int result; ++ RESTARTABLE(::open(".", O_RDONLY), result); ++ if (result == OS_ERR) { ++ *saved_cwd_fd = -1; ++ } else { ++ *saved_cwd_fd = result; ++ } ++ ++ // Set the current directory to dirname by using the fd of the directory. ++ result = fchdir(fd); ++ ++ return dirp; ++} ++ ++// Close the directory and restore the current working directory. ++// ++static void close_directory_secure_cwd(DIR* dirp, int saved_cwd_fd) { ++ ++ int result; ++ // If we have a saved cwd change back to it and close the fd. ++ if (saved_cwd_fd != -1) { ++ result = fchdir(saved_cwd_fd); ++ ::close(saved_cwd_fd); ++ } ++ ++ // Close the directory. ++ os::closedir(dirp); ++} ++ ++// Check if the given file descriptor is considered a secure. ++// ++static bool is_file_secure(int fd, const char *filename) { ++ ++ int result; ++ struct stat statbuf; ++ ++ // Determine if the file is secure. ++ RESTARTABLE(::fstat(fd, &statbuf), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ warning("fstat failed on %s: %s\n", filename, strerror(errno)); ++ } ++ return false; ++ } ++ if (statbuf.st_nlink > 1) { ++ // A file with multiple links is not expected. ++ if (PrintMiscellaneous && Verbose) { ++ warning("file %s has multiple links\n", filename); ++ } ++ return false; + } + return true; + } + +- + // return the user name for the given user id + // + // the caller is expected to free the allocated memory. +@@ -308,9 +497,11 @@ + + const char* tmpdirname = os::get_temp_directory(); + ++ // open the temp directory + DIR* tmpdirp = os::opendir(tmpdirname); + + if (tmpdirp == NULL) { ++ // Cannot open the directory to get the user name, return. + return NULL; + } + +@@ -335,7 +526,8 @@ + strcat(usrdir_name, "/"); + strcat(usrdir_name, dentry->d_name); + +- DIR* subdirp = os::opendir(usrdir_name); ++ // open the user directory ++ DIR* subdirp = open_directory_secure(usrdir_name); + + if (subdirp == NULL) { + FREE_C_HEAP_ARRAY(char, usrdir_name, mtInternal); +@@ -504,26 +696,6 @@ + } + + +-// remove file +-// +-// this method removes the file with the given file name in the +-// named directory. +-// +-static void remove_file(const char* dirname, const char* filename) { +- +- size_t nbytes = strlen(dirname) + strlen(filename) + 2; +- char* path = NEW_C_HEAP_ARRAY(char, nbytes, mtInternal); +- +- strcpy(path, dirname); +- strcat(path, "/"); +- strcat(path, filename); +- +- remove_file(path); +- +- FREE_C_HEAP_ARRAY(char, path, mtInternal); +-} +- +- + // cleanup stale shared memory resources + // + // This method attempts to remove all stale shared memory files in +@@ -535,16 +707,11 @@ + // + static void cleanup_sharedmem_resources(const char* dirname) { + +- // open the user temp directory +- DIR* dirp = os::opendir(dirname); +- ++ int saved_cwd_fd; ++ // open the directory ++ DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); + if (dirp == NULL) { +- // directory doesn't exist, so there is nothing to cleanup +- return; +- } +- +- if (!is_directory_secure(dirname)) { +- // the directory is not a secure directory ++ // directory doesn't exist or is insecure, so there is nothing to cleanup + return; + } + +@@ -558,6 +725,7 @@ + // + struct dirent* entry; + char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname), mtInternal); ++ + errno = 0; + while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) { + +@@ -568,7 +736,7 @@ + if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { + + // attempt to remove all unexpected files, except "." and ".." +- remove_file(dirname, entry->d_name); ++ unlink(entry->d_name); + } + + errno = 0; +@@ -591,11 +759,14 @@ + if ((pid == os::current_process_id()) || + (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) { + +- remove_file(dirname, entry->d_name); ++ unlink(entry->d_name); + } + errno = 0; + } +- os::closedir(dirp); ++ ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); ++ + FREE_C_HEAP_ARRAY(char, dbuf, mtInternal); + } + +@@ -652,19 +823,54 @@ + return -1; + } + ++ int saved_cwd_fd; ++ // open the directory and set the current working directory to it ++ DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); ++ if (dirp == NULL) { ++ // Directory doesn't exist or is insecure, so cannot create shared ++ // memory file. ++ return -1; ++ } ++ ++ // Open the filename in the current directory. ++ // Cannot use O_TRUNC here; truncation of an existing file has to happen ++ // after the is_file_secure() check below. + int result; +- +- RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE), result); ++ RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_NOFOLLOW, S_IREAD|S_IWRITE), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { +- warning("could not create file %s: %s\n", filename, strerror(errno)); ++ if (errno == ELOOP) { ++ warning("file %s is a symlink and is not secure\n", filename); ++ } else { ++ warning("could not create file %s: %s\n", filename, strerror(errno)); ++ } + } ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); ++ + return -1; + } ++ // close the directory and reset the current working directory ++ close_directory_secure_cwd(dirp, saved_cwd_fd); + + // save the file descriptor + int fd = result; + ++ // check to see if the file is secure ++ if (!is_file_secure(fd, filename)) { ++ ::close(fd); ++ return -1; ++ } ++ ++ // truncate the file to get rid of any existing data ++ RESTARTABLE(::ftruncate(fd, (off_t)0), result); ++ if (result == OS_ERR) { ++ if (PrintMiscellaneous && Verbose) { ++ warning("could not truncate shared memory file: %s\n", strerror(errno)); ++ } ++ ::close(fd); ++ return -1; ++ } + // set the file size + RESTARTABLE(::ftruncate(fd, (off_t)size), result); + if (result == OS_ERR) { +@@ -700,8 +906,15 @@ + THROW_MSG_(vmSymbols::java_io_IOException(), strerror(errno), OS_ERR); + } + } ++ int fd = result; + +- return result; ++ // check to see if the file is secure ++ if (!is_file_secure(fd, filename)) { ++ ::close(fd); ++ return -1; ++ } ++ ++ return fd; + } + + // create a named shared memory region. returns the address of the +@@ -733,13 +946,21 @@ + char* dirname = get_user_tmp_dir(user_name); + char* filename = get_sharedmem_filename(dirname, vmid); + ++ // get the short filename ++ char* short_filename = strrchr(filename, '/'); ++ if (short_filename == NULL) { ++ short_filename = filename; ++ } else { ++ short_filename++; ++ } ++ + // cleanup any stale shared memory files + cleanup_sharedmem_resources(dirname); + + assert(((size > 0) && (size % os::vm_page_size() == 0)), + "unexpected PerfMemory region size"); + +- fd = create_sharedmem_resources(dirname, filename, size); ++ fd = create_sharedmem_resources(dirname, short_filename, size); + + FREE_C_HEAP_ARRAY(char, user_name, mtInternal); + FREE_C_HEAP_ARRAY(char, dirname, mtInternal); +@@ -854,12 +1075,12 @@ + // constructs for the file and the shared memory mapping. + if (mode == PerfMemory::PERF_MODE_RO) { + mmap_prot = PROT_READ; +- file_flags = O_RDONLY; ++ file_flags = O_RDONLY | O_NOFOLLOW; + } + else if (mode == PerfMemory::PERF_MODE_RW) { + #ifdef LATER + mmap_prot = PROT_READ | PROT_WRITE; +- file_flags = O_RDWR; ++ file_flags = O_RDWR | O_NOFOLLOW; + #else + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), + "Unsupported access mode"); +--- ./hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -909,7 +909,7 @@ + */ + char* hint = (char*) (Linux::initial_thread_stack_bottom() - + ((StackYellowPages + StackRedPages + 1) * page_size)); +- char* codebuf = os::reserve_memory(page_size, hint); ++ char* codebuf = os::attempt_reserve_memory_at(page_size, hint); + if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) { + return; // No matter, we tried, best effort. + } +--- ./hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -89,8 +89,8 @@ + public: + ArgumentMap *_vars; + ArgumentMap *_stack; +- short _stack_height; +- short _max_stack; ++ int _stack_height; ++ int _max_stack; + bool _initialized; + ArgumentMap empty_map; + +--- ./hotspot/src/share/vm/classfile/systemDictionary.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/classfile/systemDictionary.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1866,11 +1866,12 @@ + InstanceKlass::cast(WK_KLASS(Reference_klass))->set_reference_type(REF_OTHER); + InstanceRefKlass::update_nonstatic_oop_maps(WK_KLASS(Reference_klass)); + +- initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(PhantomReference_klass), scan, CHECK); ++ initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Cleaner_klass), scan, CHECK); + InstanceKlass::cast(WK_KLASS(SoftReference_klass))->set_reference_type(REF_SOFT); + InstanceKlass::cast(WK_KLASS(WeakReference_klass))->set_reference_type(REF_WEAK); + InstanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL); + InstanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM); ++ InstanceKlass::cast(WK_KLASS(Cleaner_klass))->set_reference_type(REF_CLEANER); + + // JSR 292 classes + WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass); +--- ./hotspot/src/share/vm/classfile/systemDictionary.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/classfile/systemDictionary.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -127,6 +127,7 @@ + do_klass(WeakReference_klass, java_lang_ref_WeakReference, Pre ) \ + do_klass(FinalReference_klass, java_lang_ref_FinalReference, Pre ) \ + do_klass(PhantomReference_klass, java_lang_ref_PhantomReference, Pre ) \ ++ do_klass(Cleaner_klass, sun_misc_Cleaner, Pre ) \ + do_klass(Finalizer_klass, java_lang_ref_Finalizer, Pre ) \ + \ + do_klass(Thread_klass, java_lang_Thread, Pre ) \ +--- ./hotspot/src/share/vm/classfile/verifier.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/classfile/verifier.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1553,14 +1553,14 @@ + case Bytecodes::_invokespecial : + case Bytecodes::_invokestatic : + verify_invoke_instructions( +- &bcs, code_length, ¤t_frame, +- &this_uninit, return_type, cp, CHECK_VERIFY(this)); ++ &bcs, code_length, ¤t_frame, (bci >= ex_min && bci < ex_max), ++ &this_uninit, return_type, cp, &stackmap_table, CHECK_VERIFY(this)); + no_control_flow = false; break; + case Bytecodes::_invokeinterface : + case Bytecodes::_invokedynamic : + verify_invoke_instructions( +- &bcs, code_length, ¤t_frame, +- &this_uninit, return_type, cp, CHECK_VERIFY(this)); ++ &bcs, code_length, ¤t_frame, (bci >= ex_min && bci < ex_max), ++ &this_uninit, return_type, cp, &stackmap_table, CHECK_VERIFY(this)); + no_control_flow = false; break; + case Bytecodes::_new : + { +@@ -2408,8 +2408,9 @@ + + void ClassVerifier::verify_invoke_init( + RawBytecodeStream* bcs, u2 ref_class_index, VerificationType ref_class_type, +- StackMapFrame* current_frame, u4 code_length, bool *this_uninit, +- constantPoolHandle cp, TRAPS) { ++ StackMapFrame* current_frame, u4 code_length, bool in_try_block, ++ bool *this_uninit, constantPoolHandle cp, StackMapTable* stackmap_table, ++ TRAPS) { + u2 bci = bcs->bci(); + VerificationType type = current_frame->pop_stack( + VerificationType::reference_check(), CHECK_VERIFY(this)); +@@ -2425,28 +2426,36 @@ + return; + } + +- // Check if this call is done from inside of a TRY block. If so, make +- // sure that all catch clause paths end in a throw. Otherwise, this +- // can result in returning an incomplete object. +- ExceptionTable exhandlers(_method()); +- int exlength = exhandlers.length(); +- for(int i = 0; i < exlength; i++) { +- u2 start_pc = exhandlers.start_pc(i); +- u2 end_pc = exhandlers.end_pc(i); ++ // If this invokespecial call is done from inside of a TRY block then make ++ // sure that all catch clause paths end in a throw. Otherwise, this can ++ // result in returning an incomplete object. ++ if (in_try_block) { ++ ExceptionTable exhandlers(_method()); ++ int exlength = exhandlers.length(); ++ for(int i = 0; i < exlength; i++) { ++ u2 start_pc = exhandlers.start_pc(i); ++ u2 end_pc = exhandlers.end_pc(i); + +- if (bci >= start_pc && bci < end_pc) { +- if (!ends_in_athrow(exhandlers.handler_pc(i))) { +- verify_error(ErrorContext::bad_code(bci), +- "Bad method call from after the start of a try block"); +- return; +- } else if (VerboseVerification) { +- ResourceMark rm; +- tty->print_cr( +- "Survived call to ends_in_athrow(): %s", +- current_class()->name()->as_C_string()); ++ if (bci >= start_pc && bci < end_pc) { ++ if (!ends_in_athrow(exhandlers.handler_pc(i))) { ++ verify_error(ErrorContext::bad_code(bci), ++ "Bad method call from after the start of a try block"); ++ return; ++ } else if (VerboseVerification) { ++ ResourceMark rm; ++ tty->print_cr( ++ "Survived call to ends_in_athrow(): %s", ++ current_class()->name()->as_C_string()); ++ } + } + } +- } ++ ++ // Check the exception handler target stackmaps with the locals from the ++ // incoming stackmap (before initialize_object() changes them to outgoing ++ // state). ++ verify_exception_handler_targets(bci, true, current_frame, ++ stackmap_table, CHECK_VERIFY(this)); ++ } // in_try_block + + current_frame->initialize_object(type, current_type()); + *this_uninit = true; +@@ -2500,6 +2509,13 @@ + } + } + } ++ // Check the exception handler target stackmaps with the locals from the ++ // incoming stackmap (before initialize_object() changes them to outgoing ++ // state). ++ if (in_try_block) { ++ verify_exception_handler_targets(bci, *this_uninit, current_frame, ++ stackmap_table, CHECK_VERIFY(this)); ++ } + current_frame->initialize_object(type, new_class_type); + } else { + verify_error(ErrorContext::bad_type(bci, current_frame->stack_top_ctx()), +@@ -2528,8 +2544,8 @@ + + void ClassVerifier::verify_invoke_instructions( + RawBytecodeStream* bcs, u4 code_length, StackMapFrame* current_frame, +- bool *this_uninit, VerificationType return_type, +- constantPoolHandle cp, TRAPS) { ++ bool in_try_block, bool *this_uninit, VerificationType return_type, ++ constantPoolHandle cp, StackMapTable* stackmap_table, TRAPS) { + // Make sure the constant pool item is the right type + u2 index = bcs->get_index_u2(); + Bytecodes::Code opcode = bcs->raw_code(); +@@ -2699,7 +2715,8 @@ + opcode != Bytecodes::_invokedynamic) { + if (method_name == vmSymbols::object_initializer_name()) { // method + verify_invoke_init(bcs, index, ref_class_type, current_frame, +- code_length, this_uninit, cp, CHECK_VERIFY(this)); ++ code_length, in_try_block, this_uninit, cp, stackmap_table, ++ CHECK_VERIFY(this)); + } else { // other methods + // Ensures that target class is assignable to method class. + if (opcode == Bytecodes::_invokespecial) { +--- ./hotspot/src/share/vm/classfile/verifier.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/classfile/verifier.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -301,8 +301,9 @@ + + void verify_invoke_init( + RawBytecodeStream* bcs, u2 ref_index, VerificationType ref_class_type, +- StackMapFrame* current_frame, u4 code_length, bool* this_uninit, +- constantPoolHandle cp, TRAPS); ++ StackMapFrame* current_frame, u4 code_length, bool in_try_block, ++ bool* this_uninit, constantPoolHandle cp, StackMapTable* stackmap_table, ++ TRAPS); + + // Used by ends_in_athrow() to push all handlers that contain bci onto + // the handler_stack, if the handler is not already on the stack. +@@ -316,8 +317,8 @@ + + void verify_invoke_instructions( + RawBytecodeStream* bcs, u4 code_length, StackMapFrame* current_frame, +- bool* this_uninit, VerificationType return_type, +- constantPoolHandle cp, TRAPS); ++ bool in_try_block, bool* this_uninit, VerificationType return_type, ++ constantPoolHandle cp, StackMapTable* stackmap_table, TRAPS); + + VerificationType get_newarray_type(u2 index, u2 bci, TRAPS); + void verify_anewarray(u2 bci, u2 index, constantPoolHandle cp, +--- ./hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -79,6 +79,7 @@ + template(java_lang_ref_WeakReference, "java/lang/ref/WeakReference") \ + template(java_lang_ref_FinalReference, "java/lang/ref/FinalReference") \ + template(java_lang_ref_PhantomReference, "java/lang/ref/PhantomReference") \ ++ template(sun_misc_Cleaner, "sun/misc/Cleaner") \ + template(java_lang_ref_Finalizer, "java/lang/ref/Finalizer") \ + template(java_lang_reflect_AccessibleObject, "java/lang/reflect/AccessibleObject") \ + template(java_lang_reflect_Method, "java/lang/reflect/Method") \ +--- ./hotspot/src/share/vm/code/dependencies.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/code/dependencies.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -544,7 +544,7 @@ + put_star = !Dependencies::is_concrete_klass((Klass*)arg.metadata_value()); + } else if (arg.is_method()) { + what = "method "; +- put_star = !Dependencies::is_concrete_method((Method*)arg.metadata_value()); ++ put_star = !Dependencies::is_concrete_method((Method*)arg.metadata_value(), NULL); + } else if (arg.is_klass()) { + what = "class "; + } else { +@@ -826,8 +826,8 @@ + // Static methods don't override non-static so punt + return true; + } +- if ( !Dependencies::is_concrete_method(lm) +- && !Dependencies::is_concrete_method(m) ++ if ( !Dependencies::is_concrete_method(lm, k) ++ && !Dependencies::is_concrete_method(m, ctxk) + && lm->method_holder()->is_subtype_of(m->method_holder())) + // Method m is overridden by lm, but both are non-concrete. + return true; +@@ -861,8 +861,17 @@ + if (doing_subtype_search()) { + return Dependencies::is_concrete_klass(k); + } else { +- Method* m = InstanceKlass::cast(k)->find_method(_name, _signature); +- if (m == NULL || !Dependencies::is_concrete_method(m)) return false; ++ // Search class hierarchy first. ++ Method* m = InstanceKlass::cast(k)->find_instance_method(_name, _signature); ++ if (!Dependencies::is_concrete_method(m, k)) { ++ // Check interface defaults also, if any exist. ++ Array* default_methods = InstanceKlass::cast(k)->default_methods(); ++ if (default_methods == NULL) ++ return false; ++ m = InstanceKlass::cast(k)->find_method(default_methods, _name, _signature); ++ if (!Dependencies::is_concrete_method(m, NULL)) ++ return false; ++ } + _found_methods[_num_participants] = m; + // Note: If add_participant(k) is called, + // the method m will already be memoized for it. +@@ -1153,15 +1162,17 @@ + return true; + } + +-bool Dependencies::is_concrete_method(Method* m) { +- // Statics are irrelevant to virtual call sites. +- if (m->is_static()) return false; +- +- // We could also return false if m does not yet appear to be +- // executed, if the VM version supports this distinction also. +- // Default methods are considered "concrete" as well. +- return !m->is_abstract() && +- !m->is_overpass(); // error functions aren't concrete ++bool Dependencies::is_concrete_method(Method* m, Klass * k) { ++ // NULL is not a concrete method, ++ // statics are irrelevant to virtual call sites, ++ // abstract methods are not concrete, ++ // overpass (error) methods are not concrete if k is abstract ++ // ++ // note "true" is conservative answer -- ++ // overpass clause is false if k == NULL, implies return true if ++ // answer depends on overpass clause. ++ return ! ( m == NULL || m -> is_static() || m -> is_abstract() || ++ m->is_overpass() && k != NULL && k -> is_abstract() ); + } + + +@@ -1186,16 +1197,6 @@ + return true; + } + +-bool Dependencies::is_concrete_method(ciMethod* m) { +- // Statics are irrelevant to virtual call sites. +- if (m->is_static()) return false; +- +- // We could also return false if m does not yet appear to be +- // executed, if the VM version supports this distinction also. +- return !m->is_abstract(); +-} +- +- + bool Dependencies::has_finalizable_subclass(ciInstanceKlass* k) { + return k->has_finalizable_subclass(); + } +@@ -1409,7 +1410,7 @@ + Klass* wit = wf.find_witness_definer(ctxk); + if (wit != NULL) return NULL; // Too many witnesses. + Method* fm = wf.found_method(0); // Will be NULL if num_parts == 0. +- if (Dependencies::is_concrete_method(m)) { ++ if (Dependencies::is_concrete_method(m, ctxk)) { + if (fm == NULL) { + // It turns out that m was always the only implementation. + fm = m; +@@ -1439,61 +1440,6 @@ + return wf.find_witness_definer(ctxk, changes); + } + +-// Find the set of all non-abstract methods under ctxk that match m[0]. +-// (The method m[0] must be defined or inherited in ctxk.) +-// Include m itself in the set, unless it is abstract. +-// Fill the given array m[0..(mlen-1)] with this set, and return the length. +-// (The length may be zero if no concrete methods are found anywhere.) +-// If there are too many concrete methods to fit in marray, return -1. +-int Dependencies::find_exclusive_concrete_methods(Klass* ctxk, +- int mlen, +- Method* marray[]) { +- Method* m0 = marray[0]; +- ClassHierarchyWalker wf(m0); +- assert(wf.check_method_context(ctxk, m0), "proper context"); +- wf.record_witnesses(mlen); +- bool participants_hide_witnesses = true; +- Klass* wit = wf.find_witness_definer(ctxk); +- if (wit != NULL) return -1; // Too many witnesses. +- int num = wf.num_participants(); +- assert(num <= mlen, "oob"); +- // Keep track of whether m is also part of the result set. +- int mfill = 0; +- assert(marray[mfill] == m0, "sanity"); +- if (Dependencies::is_concrete_method(m0)) +- mfill++; // keep m0 as marray[0], the first result +- for (int i = 0; i < num; i++) { +- Method* fm = wf.found_method(i); +- if (fm == m0) continue; // Already put this guy in the list. +- if (mfill == mlen) { +- return -1; // Oops. Too many methods after all! +- } +- marray[mfill++] = fm; +- } +-#ifndef PRODUCT +- // Make sure the dependency mechanism will pass this discovery: +- if (VerifyDependencies) { +- // Turn off dependency tracing while actually testing deps. +- FlagSetting fs(TraceDependencies, false); +- switch (mfill) { +- case 1: +- guarantee(NULL == (void *)check_unique_concrete_method(ctxk, marray[0]), +- "verify dep."); +- break; +- case 2: +- guarantee(NULL == (void *) +- check_exclusive_concrete_methods(ctxk, marray[0], marray[1]), +- "verify dep."); +- break; +- default: +- ShouldNotReachHere(); // mlen > 2 yet supported +- } +- } +-#endif //PRODUCT +- return mfill; +-} +- +- + Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) { + Klass* search_at = ctxk; + if (changes != NULL) +@@ -1501,7 +1447,6 @@ + return find_finalizable_subclass(search_at); + } + +- + Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) { + assert(call_site ->is_a(SystemDictionary::CallSite_klass()), "sanity"); + assert(method_handle->is_a(SystemDictionary::MethodHandle_klass()), "sanity"); +--- ./hotspot/src/share/vm/code/dependencies.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/code/dependencies.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -287,7 +287,7 @@ + // In that case, there would be a middle ground between concrete + // and abstract (as defined by the Java language and VM). + static bool is_concrete_klass(Klass* k); // k is instantiable +- static bool is_concrete_method(Method* m); // m is invocable ++ static bool is_concrete_method(Method* m, Klass* k); // m is invocable + static Klass* find_finalizable_subclass(Klass* k); + + // These versions of the concreteness queries work through the CI. +@@ -301,7 +301,6 @@ + // not go back into the VM to get their value; they must cache the + // bit in the CI, either eagerly or lazily.) + static bool is_concrete_klass(ciInstanceKlass* k); // k appears instantiable +- static bool is_concrete_method(ciMethod* m); // m appears invocable + static bool has_finalizable_subclass(ciInstanceKlass* k); + + // As a general rule, it is OK to compile under the assumption that +@@ -348,7 +347,6 @@ + static Klass* find_unique_concrete_subtype(Klass* ctxk); + static Method* find_unique_concrete_method(Klass* ctxk, Method* m); + static int find_exclusive_concrete_subtypes(Klass* ctxk, int klen, Klass* k[]); +- static int find_exclusive_concrete_methods(Klass* ctxk, int mlen, Method* m[]); + + // Create the encoding which will be stored in an nmethod. + void encode_content_bytes(); +--- ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -2760,10 +2760,12 @@ + } + } + +-void CompactibleFreeListSpace:: par_get_chunk_of_blocks(size_t word_sz, size_t n, AdaptiveFreeList* fl) { +- assert(fl->count() == 0, "Precondition."); +- assert(word_sz < CompactibleFreeListSpace::IndexSetSize, +- "Precondition"); ++// Used by par_get_chunk_of_blocks() for the chunks from the ++// indexed_free_lists. Looks for a chunk with size that is a multiple ++// of "word_sz" and if found, splits it into "word_sz" chunks and add ++// to the free list "fl". "n" is the maximum number of chunks to ++// be added to "fl". ++bool CompactibleFreeListSpace:: par_get_chunk_of_blocks_IFL(size_t word_sz, size_t n, AdaptiveFreeList* fl) { + + // We'll try all multiples of word_sz in the indexed set, starting with + // word_sz itself and, if CMSSplitIndexedFreeListBlocks, try larger multiples, +@@ -2844,11 +2846,15 @@ + Mutex::_no_safepoint_check_flag); + ssize_t births = _indexedFreeList[word_sz].split_births() + num; + _indexedFreeList[word_sz].set_split_births(births); +- return; ++ return true; + } + } ++ return found; + } +- // Otherwise, we'll split a block from the dictionary. ++} ++ ++FreeChunk* CompactibleFreeListSpace::get_n_way_chunk_to_split(size_t word_sz, size_t n) { ++ + FreeChunk* fc = NULL; + FreeChunk* rem_fc = NULL; + size_t rem; +@@ -2859,16 +2865,12 @@ + fc = dictionary()->get_chunk(MAX2(n * word_sz, _dictionary->min_size()), + FreeBlockDictionary::atLeast); + if (fc != NULL) { +- _bt.allocated((HeapWord*)fc, fc->size(), true /* reducing */); // update _unallocated_blk +- dictionary()->dict_census_update(fc->size(), +- true /*split*/, +- false /*birth*/); + break; + } else { + n--; + } + } +- if (fc == NULL) return; ++ if (fc == NULL) return NULL; + // Otherwise, split up that block. + assert((ssize_t)n >= 1, "Control point invariant"); + assert(fc->is_free(), "Error: should be a free block"); +@@ -2890,10 +2892,14 @@ + // dictionary and return, leaving "fl" empty. + if (n == 0) { + returnChunkToDictionary(fc); +- assert(fl->count() == 0, "We never allocated any blocks"); +- return; ++ return NULL; + } + ++ _bt.allocated((HeapWord*)fc, fc->size(), true /* reducing */); // update _unallocated_blk ++ dictionary()->dict_census_update(fc->size(), ++ true /*split*/, ++ false /*birth*/); ++ + // First return the remainder, if any. + // Note that we hold the lock until we decide if we're going to give + // back the remainder to the dictionary, since a concurrent allocation +@@ -2926,7 +2932,24 @@ + _indexedFreeList[rem].return_chunk_at_head(rem_fc); + smallSplitBirth(rem); + } +- assert((ssize_t)n > 0 && fc != NULL, "Consistency"); ++ assert(n * word_sz == fc->size(), ++ err_msg("Chunk size " SIZE_FORMAT " is not exactly splittable by " ++ SIZE_FORMAT " sized chunks of size " SIZE_FORMAT, ++ fc->size(), n, word_sz)); ++ return fc; ++} ++ ++void CompactibleFreeListSpace:: par_get_chunk_of_blocks_dictionary(size_t word_sz, size_t targetted_number_of_chunks, AdaptiveFreeList* fl) { ++ ++ FreeChunk* fc = get_n_way_chunk_to_split(word_sz, targetted_number_of_chunks); ++ ++ if (fc == NULL) { ++ return; ++ } ++ ++ size_t n = fc->size() / word_sz; ++ ++ assert((ssize_t)n > 0, "Consistency"); + // Now do the splitting up. + // Must do this in reverse order, so that anybody attempting to + // access the main chunk sees it as a single free block until we +@@ -2974,6 +2997,20 @@ + assert(fl->tail()->next() == NULL, "List invariant."); + } + ++void CompactibleFreeListSpace:: par_get_chunk_of_blocks(size_t word_sz, size_t n, AdaptiveFreeList* fl) { ++ assert(fl->count() == 0, "Precondition."); ++ assert(word_sz < CompactibleFreeListSpace::IndexSetSize, ++ "Precondition"); ++ ++ if (par_get_chunk_of_blocks_IFL(word_sz, n, fl)) { ++ // Got it ++ return; ++ } ++ ++ // Otherwise, we'll split a block from the dictionary. ++ par_get_chunk_of_blocks_dictionary(word_sz, n, fl); ++} ++ + // Set up the space's par_seq_tasks structure for work claiming + // for parallel rescan. See CMSParRemarkTask where this is currently used. + // XXX Need to suitably abstract and generalize this and the next +--- ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -172,6 +172,20 @@ + // list of size "word_sz", and must now be decremented. + void par_get_chunk_of_blocks(size_t word_sz, size_t n, AdaptiveFreeList* fl); + ++ // Used by par_get_chunk_of_blocks() for the chunks from the ++ // indexed_free_lists. ++ bool par_get_chunk_of_blocks_IFL(size_t word_sz, size_t n, AdaptiveFreeList* fl); ++ ++ // Used by par_get_chunk_of_blocks_dictionary() to get a chunk ++ // evenly splittable into "n" "word_sz" chunks. Returns that ++ // evenly splittable chunk. May split a larger chunk to get the ++ // evenly splittable chunk. ++ FreeChunk* get_n_way_chunk_to_split(size_t word_sz, size_t n); ++ ++ // Used by par_get_chunk_of_blocks() for the chunks from the ++ // dictionary. ++ void par_get_chunk_of_blocks_dictionary(size_t word_sz, size_t n, AdaptiveFreeList* fl); ++ + // Allocation helper functions + // Allocate using a strategy that takes from the indexed free lists + // first. This allocation strategy assumes a companion sweeping +--- ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -737,7 +737,7 @@ + // Support for parallelizing survivor space rescan + if ((CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) || CMSParallelInitialMarkEnabled) { + const size_t max_plab_samples = +- ((DefNewGeneration*)_young_gen)->max_survivor_size()/MinTLABSize; ++ ((DefNewGeneration*)_young_gen)->max_survivor_size() / plab_sample_minimum_size(); + + _survivor_plab_array = NEW_C_HEAP_ARRAY(ChunkArray, ParallelGCThreads, mtGC); + _survivor_chunk_array = NEW_C_HEAP_ARRAY(HeapWord*, 2*max_plab_samples, mtGC); +@@ -795,6 +795,12 @@ + _inter_sweep_timer.start(); // start of time + } + ++size_t CMSCollector::plab_sample_minimum_size() { ++ // The default value of MinTLABSize is 2k, but there is ++ // no way to get the default value if the flag has been overridden. ++ return MAX2(ThreadLocalAllocBuffer::min_size() * HeapWordSize, 2 * K); ++} ++ + const char* ConcurrentMarkSweepGeneration::name() const { + return "concurrent mark-sweep generation"; + } +--- ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -763,6 +763,10 @@ + size_t* _cursor; + ChunkArray* _survivor_plab_array; + ++ // A bounded minimum size of PLABs, should not return too small values since ++ // this will affect the size of the data structures used for parallel young gen rescan ++ size_t plab_sample_minimum_size(); ++ + // Support for marking stack overflow handling + bool take_from_overflow_list(size_t num, CMSMarkStack* to_stack); + bool par_take_from_overflow_list(size_t num, +--- ./hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -47,6 +47,13 @@ + // active field set to true. + PtrQueue(qset_, perm, true /* active */) { } + ++ // Flush before destroying; queue may be used to capture pending work while ++ // doing something else, with auto-flush on completion. ++ ~DirtyCardQueue() { if (!is_permanent()) flush(); } ++ ++ // Process queue entries and release resources. ++ void flush() { flush_impl(); } ++ + // Apply the closure to all elements, and reset the index to make the + // buffer empty. If a closure application returns "false", return + // "false" immediately, halting the iteration. If "consume" is true, +--- ./hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -173,7 +173,7 @@ + + // Should be called when we want to release the active region which + // is returned after it's been retired. +- HeapRegion* release(); ++ virtual HeapRegion* release(); + + #if G1_ALLOC_REGION_TRACING + void trace(const char* str, size_t word_size = 0, HeapWord* result = NULL); +--- ./hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -6628,6 +6628,35 @@ + _g1h->retire_gc_alloc_region(alloc_region, allocated_bytes, + GCAllocForTenured); + } ++ ++HeapRegion* OldGCAllocRegion::release() { ++ HeapRegion* cur = get(); ++ if (cur != NULL) { ++ // Determine how far we are from the next card boundary. If it is smaller than ++ // the minimum object size we can allocate into, expand into the next card. ++ HeapWord* top = cur->top(); ++ HeapWord* aligned_top = (HeapWord*)align_ptr_up(top, G1BlockOffsetSharedArray::N_bytes); ++ ++ size_t to_allocate_words = pointer_delta(aligned_top, top, HeapWordSize); ++ ++ if (to_allocate_words != 0) { ++ // We are not at a card boundary. Fill up, possibly into the next, taking the ++ // end of the region and the minimum object size into account. ++ to_allocate_words = MIN2(pointer_delta(cur->end(), cur->top(), HeapWordSize), ++ MAX2(to_allocate_words, G1CollectedHeap::min_fill_size())); ++ ++ // Skip allocation if there is not enough space to allocate even the smallest ++ // possible object. In this case this region will not be retained, so the ++ // original problem cannot occur. ++ if (to_allocate_words >= G1CollectedHeap::min_fill_size()) { ++ HeapWord* dummy = attempt_allocation(to_allocate_words, true /* bot_updates */); ++ CollectedHeap::fill_with_object(dummy, to_allocate_words); ++ } ++ } ++ } ++ return G1AllocRegion::release(); ++} ++ + // Heap region set verification + + class VerifyRegionListsClosure : public HeapRegionClosure { +--- ./hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -183,6 +183,13 @@ + public: + OldGCAllocRegion() + : G1AllocRegion("Old GC Alloc Region", true /* bot_updates */) { } ++ ++ // This specialization of release() makes sure that the last card that has been ++ // allocated into has been completely filled by a dummy object. ++ // This avoids races when remembered set scanning wants to update the BOT of the ++ // last card in the retained old gc alloc region, and allocation threads ++ // allocating into that card at the same time. ++ virtual HeapRegion* release(); + }; + + // The G1 STW is alive closure. +--- ./hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -31,11 +31,15 @@ + #include "runtime/thread.inline.hpp" + + PtrQueue::PtrQueue(PtrQueueSet* qset, bool perm, bool active) : +- _qset(qset), _buf(NULL), _index(0), _active(active), ++ _qset(qset), _buf(NULL), _index(0), _sz(0), _active(active), + _perm(perm), _lock(NULL) + {} + +-void PtrQueue::flush() { ++PtrQueue::~PtrQueue() { ++ assert(_perm || (_buf == NULL), "queue must be flushed before delete"); ++} ++ ++void PtrQueue::flush_impl() { + if (!_perm && _buf != NULL) { + if (_index == _sz) { + // No work to do. +--- ./hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -65,15 +65,18 @@ + Mutex* _lock; + + PtrQueueSet* qset() { return _qset; } ++ bool is_permanent() const { return _perm; } ++ ++ // Process queue entries and release resources, if not permanent. ++ void flush_impl(); + + public: + // Initialize this queue to contain a null buffer, and be part of the + // given PtrQueueSet. + PtrQueue(PtrQueueSet* qset, bool perm = false, bool active = false); +- // Release any contained resources. +- virtual void flush(); +- // Calls flush() when destroyed. +- ~PtrQueue() { flush(); } ++ ++ // Requires queue flushed or permanent. ++ ~PtrQueue(); + + // Associate a lock with a ptr queue. + void set_lock(Mutex* lock) { _lock = lock; } +--- ./hotspot/src/share/vm/gc_implementation/g1/satbQueue.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/satbQueue.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -39,7 +39,7 @@ + // first before we flush it, otherwise we might end up with an + // enqueued buffer with refs into the CSet which breaks our invariants. + filter(); +- PtrQueue::flush(); ++ flush_impl(); + } + + // This method removes entries from an SATB buffer that will not be +--- ./hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -58,9 +58,8 @@ + // field to true. This is done in JavaThread::initialize_queues(). + PtrQueue(qset, perm, false /* active */) { } + +- // Overrides PtrQueue::flush() so that it can filter the buffer +- // before it is flushed. +- virtual void flush(); ++ // Process queue entries and free resources. ++ void flush(); + + // Overrides PtrQueue::should_enqueue_buffer(). See the method's + // definition for more information. +--- ./hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -62,7 +62,8 @@ + ParGCAllocBuffer(size_t word_sz); + + static const size_t min_size() { +- return ThreadLocalAllocBuffer::min_size(); ++ // Make sure that we return something that is larger than AlignmentReserve ++ return align_object_size(MAX2(MinTLABSize / HeapWordSize, (uintx)oopDesc::header_size())) + AlignmentReserve; + } + + static const size_t max_size() { +--- ./hotspot/src/share/vm/interpreter/linkResolver.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/interpreter/linkResolver.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -320,7 +320,7 @@ + // First check in default method array + if (!resolved_method->is_abstract() && + (InstanceKlass::cast(klass())->default_methods() != NULL)) { +- int index = InstanceKlass::find_method_index(InstanceKlass::cast(klass())->default_methods(), name, signature, false); ++ int index = InstanceKlass::find_method_index(InstanceKlass::cast(klass())->default_methods(), name, signature, false, false); + if (index >= 0 ) { + vtable_index = InstanceKlass::cast(klass())->default_vtable_indices()->at(index); + } +--- ./hotspot/src/share/vm/memory/referenceProcessor.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/memory/referenceProcessor.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -118,6 +118,7 @@ + _discoveredWeakRefs = &_discoveredSoftRefs[_max_num_q]; + _discoveredFinalRefs = &_discoveredWeakRefs[_max_num_q]; + _discoveredPhantomRefs = &_discoveredFinalRefs[_max_num_q]; ++ _discoveredCleanerRefs = &_discoveredPhantomRefs[_max_num_q]; + + // Initialize all entries to NULL + for (uint i = 0; i < _max_num_q * number_of_subclasses_of_ref(); i++) { +@@ -245,6 +246,13 @@ + phantom_count = + process_discovered_reflist(_discoveredPhantomRefs, NULL, false, + is_alive, keep_alive, complete_gc, task_executor); ++ ++ // Process cleaners, but include them in phantom statistics. We expect ++ // Cleaner references to be temporary, and don't want to deal with ++ // possible incompatibilities arising from making it more visible. ++ phantom_count += ++ process_discovered_reflist(_discoveredCleanerRefs, NULL, false, ++ is_alive, keep_alive, complete_gc, task_executor); + } + + // Weak global JNI references. It would make more sense (semantically) to +@@ -882,6 +890,7 @@ + balance_queues(_discoveredWeakRefs); + balance_queues(_discoveredFinalRefs); + balance_queues(_discoveredPhantomRefs); ++ balance_queues(_discoveredCleanerRefs); + } + + size_t +@@ -1041,6 +1050,9 @@ + case REF_PHANTOM: + list = &_discoveredPhantomRefs[id]; + break; ++ case REF_CLEANER: ++ list = &_discoveredCleanerRefs[id]; ++ break; + case REF_NONE: + // we should not reach here if we are an InstanceRefKlass + default: +@@ -1305,6 +1317,17 @@ + preclean_discovered_reflist(_discoveredPhantomRefs[i], is_alive, + keep_alive, complete_gc, yield); + } ++ ++ // Cleaner references. Included in timing for phantom references. We ++ // expect Cleaner references to be temporary, and don't want to deal with ++ // possible incompatibilities arising from making it more visible. ++ for (uint i = 0; i < _max_num_q; i++) { ++ if (yield->should_return()) { ++ return; ++ } ++ preclean_discovered_reflist(_discoveredCleanerRefs[i], is_alive, ++ keep_alive, complete_gc, yield); ++ } + } + } + +@@ -1373,6 +1396,7 @@ + case 1: return "WeakRef"; + case 2: return "FinalRef"; + case 3: return "PhantomRef"; ++ case 4: return "CleanerRef"; + } + ShouldNotReachHere(); + return NULL; +--- ./hotspot/src/share/vm/memory/referenceProcessor.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/memory/referenceProcessor.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -263,9 +263,10 @@ + DiscoveredList* _discoveredWeakRefs; + DiscoveredList* _discoveredFinalRefs; + DiscoveredList* _discoveredPhantomRefs; ++ DiscoveredList* _discoveredCleanerRefs; + + public: +- static int number_of_subclasses_of_ref() { return (REF_PHANTOM - REF_OTHER); } ++ static int number_of_subclasses_of_ref() { return (REF_CLEANER - REF_OTHER); } + + uint num_q() { return _num_q; } + uint max_num_q() { return _max_num_q; } +--- ./hotspot/src/share/vm/memory/referenceType.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/memory/referenceType.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -35,7 +35,8 @@ + REF_SOFT, // Subclass of java/lang/ref/SoftReference + REF_WEAK, // Subclass of java/lang/ref/WeakReference + REF_FINAL, // Subclass of java/lang/ref/FinalReference +- REF_PHANTOM // Subclass of java/lang/ref/PhantomReference ++ REF_PHANTOM, // Subclass of java/lang/ref/PhantomReference ++ REF_CLEANER // Subclass of sun/misc/Cleaner + }; + + #endif // SHARE_VM_MEMORY_REFRERENCETYPE_HPP +--- ./hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -235,22 +235,19 @@ + } + + size_t ThreadLocalAllocBuffer::initial_desired_size() { +- size_t init_sz; ++ size_t init_sz = 0; + + if (TLABSize > 0) { +- init_sz = MIN2(TLABSize / HeapWordSize, max_size()); +- } else if (global_stats() == NULL) { +- // Startup issue - main thread initialized before heap initialized. +- init_sz = min_size(); +- } else { ++ init_sz = TLABSize / HeapWordSize; ++ } else if (global_stats() != NULL) { + // Initial size is a function of the average number of allocating threads. + unsigned nof_threads = global_stats()->allocating_threads_avg(); + + init_sz = (Universe::heap()->tlab_capacity(myThread()) / HeapWordSize) / + (nof_threads * target_refills()); + init_sz = align_object_size(init_sz); +- init_sz = MIN2(MAX2(init_sz, min_size()), max_size()); + } ++ init_sz = MIN2(MAX2(init_sz, min_size()), max_size()); + return init_sz; + } + +--- ./hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -105,7 +105,7 @@ + // do nothing. tlabs must be inited by initialize() calls + } + +- static const size_t min_size() { return align_object_size(MinTLABSize / HeapWordSize); } ++ static const size_t min_size() { return align_object_size(MinTLABSize / HeapWordSize) + alignment_reserve(); } + static const size_t max_size() { assert(_max_size != 0, "max_size not set up"); return _max_size; } + static void set_max_size(size_t max_size) { _max_size = max_size; } + +--- ./hotspot/src/share/vm/oops/instanceKlass.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/oops/instanceKlass.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -1435,32 +1435,41 @@ + } + + Method* InstanceKlass::find_method_impl(Symbol* name, Symbol* signature, bool skipping_overpass) const { +- return InstanceKlass::find_method_impl(methods(), name, signature, skipping_overpass); ++ return InstanceKlass::find_method_impl(methods(), name, signature, skipping_overpass, false); + } + + // find_instance_method looks up the name/signature in the local methods array + // and skips over static methods + Method* InstanceKlass::find_instance_method( + Array* methods, Symbol* name, Symbol* signature) { +- Method* meth = InstanceKlass::find_method(methods, name, signature); +- if (meth != NULL && meth->is_static()) { +- meth = NULL; +- } ++ Method* meth = InstanceKlass::find_method_impl(methods, name, signature, false, true); + return meth; + } + ++// find_instance_method looks up the name/signature in the local methods array ++// and skips over static methods ++Method* InstanceKlass::find_instance_method(Symbol* name, Symbol* signature) { ++ return InstanceKlass::find_instance_method(methods(), name, signature); ++} ++ + // find_method looks up the name/signature in the local methods array + Method* InstanceKlass::find_method( + Array* methods, Symbol* name, Symbol* signature) { +- return InstanceKlass::find_method_impl(methods, name, signature, false); ++ return InstanceKlass::find_method_impl(methods, name, signature, false, false); + } + + Method* InstanceKlass::find_method_impl( +- Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass) { +- int hit = find_method_index(methods, name, signature, skipping_overpass); ++ Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass, bool skipping_static) { ++ int hit = find_method_index(methods, name, signature, skipping_overpass, skipping_static); + return hit >= 0 ? methods->at(hit): NULL; + } + ++bool InstanceKlass::method_matches(Method* m, Symbol* signature, bool skipping_overpass, bool skipping_static) { ++ return (m->signature() == signature) && ++ (!skipping_overpass || !m->is_overpass()) && ++ (!skipping_static || !m->is_static()); ++} ++ + // Used directly for default_methods to find the index into the + // default_vtable_indices, and indirectly by find_method + // find_method_index looks in the local methods array to return the index +@@ -1469,13 +1478,14 @@ + // is important during method resolution to prefer a static method, for example, + // over an overpass method. + int InstanceKlass::find_method_index( +- Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass) { ++ Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass, bool skipping_static) { + int hit = binary_search(methods, name); + if (hit != -1) { + Method* m = methods->at(hit); ++ + // Do linear search to find matching signature. First, quick check + // for common case, ignoring overpasses if requested. +- if ((m->signature() == signature) && (!skipping_overpass || !m->is_overpass())) return hit; ++ if (method_matches(m, signature, skipping_overpass, skipping_static)) return hit; + + // search downwards through overloaded methods + int i; +@@ -1483,18 +1493,18 @@ + Method* m = methods->at(i); + assert(m->is_method(), "must be method"); + if (m->name() != name) break; +- if ((m->signature() == signature) && (!skipping_overpass || !m->is_overpass())) return i; ++ if (method_matches(m, signature, skipping_overpass, skipping_static)) return i; + } + // search upwards + for (i = hit + 1; i < methods->length(); ++i) { + Method* m = methods->at(i); + assert(m->is_method(), "must be method"); + if (m->name() != name) break; +- if ((m->signature() == signature) && (!skipping_overpass || !m->is_overpass())) return i; ++ if (method_matches(m, signature, skipping_overpass, skipping_static)) return i; + } + // not found + #ifdef ASSERT +- int index = skipping_overpass ? -1 : linear_search(methods, name, signature); ++ int index = skipping_overpass || skipping_static ? -1 : linear_search(methods, name, signature); + assert(index == -1, err_msg("binary search should have found entry %d", index)); + #endif + } +--- ./hotspot/src/share/vm/oops/instanceKlass.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/oops/instanceKlass.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -515,10 +515,16 @@ + // find a local method (returns NULL if not found) + Method* find_method(Symbol* name, Symbol* signature) const; + static Method* find_method(Array* methods, Symbol* name, Symbol* signature); ++ ++ // find a local method, but skip static methods ++ Method* find_instance_method(Symbol* name, Symbol* signature); + static Method* find_instance_method(Array* methods, Symbol* name, Symbol* signature); + ++ // true if method matches signature and conforms to skipping_X conditions. ++ static bool method_matches(Method* m, Symbol* signature, bool skipping_overpass, bool skipping_static); ++ + // find a local method index in default_methods (returns -1 if not found) +- static int find_method_index(Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass); ++ static int find_method_index(Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass, bool skipping_static); + + // lookup operation (returns NULL if not found) + Method* uncached_lookup_method(Symbol* name, Symbol* signature, MethodLookupMode mode) const; +@@ -1050,7 +1056,7 @@ + + // find a local method (returns NULL if not found) + Method* find_method_impl(Symbol* name, Symbol* signature, bool skipping_overpass) const; +- static Method* find_method_impl(Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass); ++ static Method* find_method_impl(Array* methods, Symbol* name, Symbol* signature, bool skipping_overpass, bool skipping_static); + + // Free CHeap allocated fields. + void release_C_heap_structures(); +--- ./hotspot/src/share/vm/opto/ifnode.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/opto/ifnode.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -503,7 +503,7 @@ + jint off = 0; + if (l->is_top()) { + return 0; +- } else if (l->is_Add()) { ++ } else if (l->Opcode() == Op_AddI) { + if ((off = l->in(1)->find_int_con(0)) != 0) { + ind = l->in(2); + } else if ((off = l->in(2)->find_int_con(0)) != 0) { +--- ./hotspot/src/share/vm/runtime/arguments.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/runtime/arguments.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -63,7 +63,7 @@ + #endif // INCLUDE_ALL_GCS + + // Note: This is a special bug reporting site for the JVM +-#define DEFAULT_VENDOR_URL_BUG "http://bugreport.sun.com/bugreport/crash.jsp" ++#define DEFAULT_VENDOR_URL_BUG "http://bugreport.java.com/bugreport/crash.jsp" + #define DEFAULT_JAVA_LAUNCHER "generic" + + // Disable options not supported in this release, with a warning if they +--- ./hotspot/src/share/vm/runtime/vmStructs.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/runtime/vmStructs.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -670,6 +670,7 @@ + static_field(SystemDictionary, WK_KLASS(WeakReference_klass), Klass*) \ + static_field(SystemDictionary, WK_KLASS(FinalReference_klass), Klass*) \ + static_field(SystemDictionary, WK_KLASS(PhantomReference_klass), Klass*) \ ++ static_field(SystemDictionary, WK_KLASS(Cleaner_klass), Klass*) \ + static_field(SystemDictionary, WK_KLASS(Finalizer_klass), Klass*) \ + static_field(SystemDictionary, WK_KLASS(Thread_klass), Klass*) \ + static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), Klass*) \ +--- ./hotspot/src/share/vm/utilities/defaultStream.hpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/utilities/defaultStream.hpp Mon Dec 08 12:28:35 2014 -0800 +@@ -41,6 +41,8 @@ + + void init(); + void init_log(); ++ fileStream* open_file(const char* log_name); ++ void start_log(); + void finish_log(); + void finish_log_on_error(char *buf, int buflen); + public: +--- ./hotspot/src/share/vm/utilities/ostream.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/utilities/ostream.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -360,7 +360,6 @@ + + #define EXTRACHARLEN 32 + #define CURRENTAPPX ".current" +-#define FILENAMEBUFLEN 1024 + // convert YYYY-MM-DD HH:MM:SS to YYYY-MM-DD_HH-MM-SS + char* get_datetime_string(char *buf, size_t len) { + os::local_time_string(buf, len); +@@ -394,7 +393,6 @@ + buffer_length = strlen(log_name) + 1; + } + +- // const char* star = strchr(basename, '*'); + const char* pts = strstr(basename, "%p"); + int pid_pos = (pts == NULL) ? -1 : (pts - nametail); + +@@ -409,6 +407,11 @@ + buffer_length += strlen(tms); + } + ++ // File name is too long. ++ if (buffer_length > JVM_MAXPATHLEN) { ++ return NULL; ++ } ++ + // Create big enough buffer. + char *buf = NEW_C_HEAP_ARRAY(char, buffer_length, mtInternal); + +@@ -481,46 +484,88 @@ + void test_loggc_filename() { + int pid; + char tms[32]; +- char i_result[FILENAMEBUFLEN]; ++ char i_result[JVM_MAXPATHLEN]; + const char* o_result; + get_datetime_string(tms, sizeof(tms)); + pid = os::current_process_id(); + + // test.log +- jio_snprintf(i_result, sizeof(char)*FILENAMEBUFLEN, "test.log", tms); ++ jio_snprintf(i_result, JVM_MAXPATHLEN, "test.log", tms); + o_result = make_log_name_internal("test.log", NULL, pid, tms); + assert(strcmp(i_result, o_result) == 0, "failed on testing make_log_name(\"test.log\", NULL)"); + FREE_C_HEAP_ARRAY(char, o_result, mtInternal); + + // test-%t-%p.log +- jio_snprintf(i_result, sizeof(char)*FILENAMEBUFLEN, "test-%s-pid%u.log", tms, pid); ++ jio_snprintf(i_result, JVM_MAXPATHLEN, "test-%s-pid%u.log", tms, pid); + o_result = make_log_name_internal("test-%t-%p.log", NULL, pid, tms); + assert(strcmp(i_result, o_result) == 0, "failed on testing make_log_name(\"test-%%t-%%p.log\", NULL)"); + FREE_C_HEAP_ARRAY(char, o_result, mtInternal); + + // test-%t%p.log +- jio_snprintf(i_result, sizeof(char)*FILENAMEBUFLEN, "test-%spid%u.log", tms, pid); ++ jio_snprintf(i_result, JVM_MAXPATHLEN, "test-%spid%u.log", tms, pid); + o_result = make_log_name_internal("test-%t%p.log", NULL, pid, tms); + assert(strcmp(i_result, o_result) == 0, "failed on testing make_log_name(\"test-%%t%%p.log\", NULL)"); + FREE_C_HEAP_ARRAY(char, o_result, mtInternal); + + // %p%t.log +- jio_snprintf(i_result, sizeof(char)*FILENAMEBUFLEN, "pid%u%s.log", pid, tms); ++ jio_snprintf(i_result, JVM_MAXPATHLEN, "pid%u%s.log", pid, tms); + o_result = make_log_name_internal("%p%t.log", NULL, pid, tms); + assert(strcmp(i_result, o_result) == 0, "failed on testing make_log_name(\"%%p%%t.log\", NULL)"); + FREE_C_HEAP_ARRAY(char, o_result, mtInternal); + + // %p-test.log +- jio_snprintf(i_result, sizeof(char)*FILENAMEBUFLEN, "pid%u-test.log", pid); ++ jio_snprintf(i_result, JVM_MAXPATHLEN, "pid%u-test.log", pid); + o_result = make_log_name_internal("%p-test.log", NULL, pid, tms); + assert(strcmp(i_result, o_result) == 0, "failed on testing make_log_name(\"%%p-test.log\", NULL)"); + FREE_C_HEAP_ARRAY(char, o_result, mtInternal); + + // %t.log +- jio_snprintf(i_result, sizeof(char)*FILENAMEBUFLEN, "%s.log", tms); ++ jio_snprintf(i_result, JVM_MAXPATHLEN, "%s.log", tms); + o_result = make_log_name_internal("%t.log", NULL, pid, tms); + assert(strcmp(i_result, o_result) == 0, "failed on testing make_log_name(\"%%t.log\", NULL)"); + FREE_C_HEAP_ARRAY(char, o_result, mtInternal); ++ ++ { ++ // longest filename ++ char longest_name[JVM_MAXPATHLEN]; ++ memset(longest_name, 'a', sizeof(longest_name)); ++ longest_name[JVM_MAXPATHLEN - 1] = '\0'; ++ o_result = make_log_name_internal((const char*)&longest_name, NULL, pid, tms); ++ assert(strcmp(longest_name, o_result) == 0, err_msg("longest name does not match. expected '%s' but got '%s'", longest_name, o_result)); ++ FREE_C_HEAP_ARRAY(char, o_result, mtInternal); ++ } ++ ++ { ++ // too long file name ++ char too_long_name[JVM_MAXPATHLEN + 100]; ++ int too_long_length = sizeof(too_long_name); ++ memset(too_long_name, 'a', too_long_length); ++ too_long_name[too_long_length - 1] = '\0'; ++ o_result = make_log_name_internal((const char*)&too_long_name, NULL, pid, tms); ++ assert(o_result == NULL, err_msg("Too long file name should return NULL, but got '%s'", o_result)); ++ } ++ ++ { ++ // too long with timestamp ++ char longest_name[JVM_MAXPATHLEN]; ++ memset(longest_name, 'a', JVM_MAXPATHLEN); ++ longest_name[JVM_MAXPATHLEN - 3] = '%'; ++ longest_name[JVM_MAXPATHLEN - 2] = 't'; ++ longest_name[JVM_MAXPATHLEN - 1] = '\0'; ++ o_result = make_log_name_internal((const char*)&longest_name, NULL, pid, tms); ++ assert(o_result == NULL, err_msg("Too long file name after timestamp expansion should return NULL, but got '%s'", o_result)); ++ } ++ ++ { ++ // too long with pid ++ char longest_name[JVM_MAXPATHLEN]; ++ memset(longest_name, 'a', JVM_MAXPATHLEN); ++ longest_name[JVM_MAXPATHLEN - 3] = '%'; ++ longest_name[JVM_MAXPATHLEN - 2] = 'p'; ++ longest_name[JVM_MAXPATHLEN - 1] = '\0'; ++ o_result = make_log_name_internal((const char*)&longest_name, NULL, pid, tms); ++ assert(o_result == NULL, err_msg("Too long file name after pid expansion should return NULL, but got '%s'", o_result)); ++ } + } + #endif // PRODUCT + +@@ -629,9 +674,16 @@ + _bytes_written = 0L; + _file_name = make_log_name(file_name, NULL); + ++ if (_file_name == NULL) { ++ warning("Cannot open file %s: file name is too long.\n", file_name); ++ _need_close = false; ++ UseGCLogFileRotation = false; ++ return; ++ } ++ + // gc log file rotation + if (UseGCLogFileRotation && NumberOfGCLogFiles > 1) { +- char tempbuf[FILENAMEBUFLEN]; ++ char tempbuf[JVM_MAXPATHLEN]; + jio_snprintf(tempbuf, sizeof(tempbuf), "%s.%d" CURRENTAPPX, _file_name, _cur_file_num); + _file = fopen(tempbuf, "w"); + } else { +@@ -663,10 +715,10 @@ + // concurrent GC threads to run parallel with VMThread at safepoint, write and rotate_log + // must be synchronized. + void gcLogFileStream::rotate_log(bool force, outputStream* out) { +- char time_msg[FILENAMEBUFLEN]; ++ char time_msg[O_BUFLEN]; + char time_str[EXTRACHARLEN]; +- char current_file_name[FILENAMEBUFLEN]; +- char renamed_file_name[FILENAMEBUFLEN]; ++ char current_file_name[JVM_MAXPATHLEN]; ++ char renamed_file_name[JVM_MAXPATHLEN]; + + if (!should_rotate(force)) { + return; +@@ -705,12 +757,15 @@ + // have a form of extended_filename..current where i is the current rotation + // file number. After it reaches max file size, the file will be saved and renamed + // with .current removed from its tail. +- size_t filename_len = strlen(_file_name); + if (_file != NULL) { +- jio_snprintf(renamed_file_name, filename_len + EXTRACHARLEN, "%s.%d", ++ jio_snprintf(renamed_file_name, JVM_MAXPATHLEN, "%s.%d", + _file_name, _cur_file_num); +- jio_snprintf(current_file_name, filename_len + EXTRACHARLEN, "%s.%d" CURRENTAPPX, +- _file_name, _cur_file_num); ++ int result = jio_snprintf(current_file_name, JVM_MAXPATHLEN, ++ "%s.%d" CURRENTAPPX, _file_name, _cur_file_num); ++ if (result >= JVM_MAXPATHLEN) { ++ warning("Cannot create new log file name: %s: file name is too long.\n", current_file_name); ++ return; ++ } + + const char* msg = force ? "GC log rotation request has been received." + : "GC log file has reached the maximum size."; +@@ -749,19 +804,23 @@ + + _cur_file_num++; + if (_cur_file_num > NumberOfGCLogFiles - 1) _cur_file_num = 0; +- jio_snprintf(current_file_name, filename_len + EXTRACHARLEN, "%s.%d" CURRENTAPPX, ++ int result = jio_snprintf(current_file_name, JVM_MAXPATHLEN, "%s.%d" CURRENTAPPX, + _file_name, _cur_file_num); ++ if (result >= JVM_MAXPATHLEN) { ++ warning("Cannot create new log file name: %s: file name is too long.\n", current_file_name); ++ return; ++ } ++ + _file = fopen(current_file_name, "w"); + + if (_file != NULL) { + _bytes_written = 0L; + _need_close = true; + // reuse current_file_name for time_msg +- jio_snprintf(current_file_name, filename_len + EXTRACHARLEN, ++ jio_snprintf(current_file_name, JVM_MAXPATHLEN, + "%s.%d", _file_name, _cur_file_num); + jio_snprintf(time_msg, sizeof(time_msg), "%s GC log file created %s\n", +- os::local_time_string((char *)time_str, sizeof(time_str)), +- current_file_name); ++ os::local_time_string((char *)time_str, sizeof(time_str)), current_file_name); + write(time_msg, strlen(time_msg)); + + if (out != NULL) { +@@ -809,32 +868,64 @@ + return _log_file != NULL; + } + ++fileStream* defaultStream::open_file(const char* log_name) { ++ const char* try_name = make_log_name(log_name, NULL); ++ if (try_name == NULL) { ++ warning("Cannot open file %s: file name is too long.\n", log_name); ++ return NULL; ++ } ++ ++ fileStream* file = new(ResourceObj::C_HEAP, mtInternal) fileStream(try_name); ++ FREE_C_HEAP_ARRAY(char, try_name, mtInternal); ++ if (file->is_open()) { ++ return file; ++ } ++ ++ // Try again to open the file in the temp directory. ++ delete file; ++ char warnbuf[O_BUFLEN*2]; ++ jio_snprintf(warnbuf, sizeof(warnbuf), "Warning: Cannot open log file: %s\n", log_name); ++ // Note: This feature is for maintainer use only. No need for L10N. ++ jio_print(warnbuf); ++ try_name = make_log_name(log_name, os::get_temp_directory()); ++ if (try_name == NULL) { ++ warning("Cannot open file %s: file name is too long for directory %s.\n", log_name, os::get_temp_directory()); ++ return NULL; ++ } ++ ++ jio_snprintf(warnbuf, sizeof(warnbuf), ++ "Warning: Forcing option -XX:LogFile=%s\n", try_name); ++ jio_print(warnbuf); ++ ++ file = new(ResourceObj::C_HEAP, mtInternal) fileStream(try_name); ++ FREE_C_HEAP_ARRAY(char, try_name, mtInternal); ++ if (file->is_open()) { ++ return file; ++ } ++ ++ delete file; ++ return NULL; ++} ++ + void defaultStream::init_log() { + // %%% Need a MutexLocker? + const char* log_name = LogFile != NULL ? LogFile : "hotspot_%p.log"; +- const char* try_name = make_log_name(log_name, NULL); +- fileStream* file = new(ResourceObj::C_HEAP, mtInternal) fileStream(try_name); +- if (!file->is_open()) { +- // Try again to open the file. +- char warnbuf[O_BUFLEN*2]; +- jio_snprintf(warnbuf, sizeof(warnbuf), +- "Warning: Cannot open log file: %s\n", try_name); +- // Note: This feature is for maintainer use only. No need for L10N. +- jio_print(warnbuf); +- FREE_C_HEAP_ARRAY(char, try_name, mtInternal); +- try_name = make_log_name(log_name, os::get_temp_directory()); +- jio_snprintf(warnbuf, sizeof(warnbuf), +- "Warning: Forcing option -XX:LogFile=%s\n", try_name); +- jio_print(warnbuf); +- delete file; +- file = new(ResourceObj::C_HEAP, mtInternal) fileStream(try_name); ++ fileStream* file = open_file(log_name); ++ ++ if (file != NULL) { ++ _log_file = file; ++ _outer_xmlStream = new(ResourceObj::C_HEAP, mtInternal) xmlStream(file); ++ start_log(); ++ } else { ++ // and leave xtty as NULL ++ LogVMOutput = false; ++ DisplayVMOutput = true; ++ LogCompilation = false; + } +- FREE_C_HEAP_ARRAY(char, try_name, mtInternal); ++} + +- if (file->is_open()) { +- _log_file = file; +- xmlStream* xs = new(ResourceObj::C_HEAP, mtInternal) xmlStream(file); +- _outer_xmlStream = xs; ++void defaultStream::start_log() { ++ xmlStream*xs = _outer_xmlStream; + if (this == tty) xtty = xs; + // Write XML header. + xs->print_cr(""); +@@ -889,13 +980,6 @@ + xs->head("tty"); + // All further non-markup text gets copied to the tty: + xs->_text = this; // requires friend declaration! +- } else { +- delete(file); +- // and leave xtty as NULL +- LogVMOutput = false; +- DisplayVMOutput = true; +- LogCompilation = false; +- } + } + + // finish_log() is called during normal VM shutdown. finish_log_on_error() is +--- ./hotspot/src/share/vm/utilities/vmError.cpp Mon Sep 08 12:35:01 2014 -0700 ++++ ./hotspot/src/share/vm/utilities/vmError.cpp Mon Dec 08 12:28:35 2014 -0800 +@@ -22,6 +22,7 @@ + * + */ + ++#include + #include "precompiled.hpp" + #include "compiler/compileBroker.hpp" + #include "gc_interface/collectedHeap.hpp" +@@ -836,7 +837,8 @@ + static int expand_and_open(const char* pattern, char* buf, size_t buflen, size_t pos) { + int fd = -1; + if (Arguments::copy_expand_pid(pattern, strlen(pattern), &buf[pos], buflen - pos)) { +- fd = open(buf, O_RDWR | O_CREAT | O_TRUNC, 0666); ++ // the O_EXCL flag will cause the open to fail if the file exists ++ fd = open(buf, O_RDWR | O_CREAT | O_EXCL, 0666); + } + return fd; + } +--- ./jaxp/.hgtags Mon Sep 08 12:36:00 2014 -0700 ++++ ./jaxp/.hgtags Mon Dec 08 12:29:23 2014 -0800 +@@ -314,6 +314,8 @@ + dd09d8b9edefb5684941941e5d9b35c84ee066f3 jdk8u20-b24 + dd09d8b9edefb5684941941e5d9b35c84ee066f3 jdk8u20-b25 + 938b9d502c2b0f9684151e1b1f47cf7052db1502 jdk8u20-b26 ++f734649a3f89316d84fc669fdbf7bbff92e7291a jdk8u20-b31 ++d791a17744d50a456d60ee5118d8cb9633bb36d2 jdk8u20-b32 + 65e5ee249ebc81c0ccfff23946a0a2a6d4becdcc jdk8u25-b00 + b29277565edfdece4e3928b135d4fd86ae141e4f jdk8u25-b01 + 09df5bda467090041090873f71d418eebcadf516 jdk8u25-b02 +@@ -331,3 +333,19 @@ + 90f3b8b970a8bb3173083111248372afdc61652d jdk8u25-b14 + f5ac2e242bb95be0a3deddf37362178202086137 jdk8u25-b15 + df68b132a471ed1e825a79bd1d8acb47d2bcc04f jdk8u25-b16 ++7a721e57b38ff6c1d34af0b86f6482540a815d90 jdk8u25-b17 ++fddbc00bde281d7d437b052262e921ed51de8b9a jdk8u25-b18 ++30420a31a81f21e363f412ae9801b7467c8cc908 jdk8u25-b31 ++19b6e16343925a4bf27879795b530d4f64e5d262 jdk8u31-b00 ++469792d179304c9b3218930112547577e1aecb77 jdk8u31-b01 ++adbd3e31ef1a95b3f80a77dfbb843d52c053c6d3 jdk8u31-b02 ++d7961ca9afbc744674eb3ffda8ef2003158f3ea6 jdk8u31-b03 ++3bcd38c92f216e6e0fd74742720b6f786301953e jdk8u31-b04 ++17bca3fe325b353929e0eda3f1aaa7cc2806b93d jdk8u31-b05 ++a1ab81b8cc36b156f272b20da62922d7f8aa6fe9 jdk8u31-b06 ++573b761785f798a8b5366a87aceb7324b312f747 jdk8u31-b07 ++43f0821902a71c1fccc99be36a0b205b1ae79183 jdk8u31-b08 ++630b05fb2ddcdaeda6269ddb74357f651b73d6d7 jdk8u31-b09 ++b5165ac3556e95c42a295d3cbeef8cd6e5607b25 jdk8u31-b10 ++f475dbc70345904bda6b520af43955e244292886 jdk8u31-b11 ++6563e438377f2086253577e08593b1ddfb901eff jdk8u31-b12 +--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java Mon Sep 08 12:36:00 2014 -0700 ++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java Mon Dec 08 12:29:23 2014 -0800 +@@ -147,8 +147,9 @@ + fCurrentEntity.lineNumber++; + fCurrentEntity.columnNumber = 1; + if (fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = (char)c; +- load(1, false, true); ++ load(1, false, false); + } + if (c == '\r' && external) { + int cc = fCurrentEntity.ch[fCurrentEntity.position++]; +@@ -306,9 +307,10 @@ + + if (XML11Char.isXML11NameStart(ch)) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = ch; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + fCurrentEntity.columnNumber++; + String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); + return symbol; +@@ -317,9 +319,10 @@ + } + else if (XML11Char.isXML11NameHighSurrogate(ch)) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = ch; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + --fCurrentEntity.position; + --fCurrentEntity.startPosition; + return null; +@@ -332,10 +335,11 @@ + return null; + } + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(2); + fCurrentEntity.ch[0] = ch; + fCurrentEntity.ch[1] = ch2; + offset = 0; +- if (load(2, false, true)) { ++ if (load(2, false, false)) { + fCurrentEntity.columnNumber += 2; + String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2); + return symbol; +@@ -464,9 +468,10 @@ + + if (XML11Char.isXML11NCNameStart(ch)) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = ch; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + fCurrentEntity.columnNumber++; + String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); + return symbol; +@@ -475,9 +480,10 @@ + } + else if (XML11Char.isXML11NameHighSurrogate(ch)) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = ch; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + --fCurrentEntity.position; + --fCurrentEntity.startPosition; + return null; +@@ -490,10 +496,11 @@ + return null; + } + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(2); + fCurrentEntity.ch[0] = ch; + fCurrentEntity.ch[1] = ch2; + offset = 0; +- if (load(2, false, true)) { ++ if (load(2, false, false)) { + fCurrentEntity.columnNumber += 2; + String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2); + return symbol; +@@ -628,9 +635,10 @@ + + if (XML11Char.isXML11NCNameStart(ch)) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = ch; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + fCurrentEntity.columnNumber++; + String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); + qname.setValues(null, name, name, null); +@@ -640,9 +648,10 @@ + } + else if (XML11Char.isXML11NameHighSurrogate(ch)) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = ch; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + --fCurrentEntity.startPosition; + --fCurrentEntity.position; + return false; +@@ -655,10 +664,11 @@ + return false; + } + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(2); + fCurrentEntity.ch[0] = ch; + fCurrentEntity.ch[1] = ch2; + offset = 0; +- if (load(2, false, true)) { ++ if (load(2, false, false)) { + fCurrentEntity.columnNumber += 2; + String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2); + qname.setValues(null, name, name, null); +@@ -835,8 +845,9 @@ + load(0, true, true); + } + else if (fCurrentEntity.position == fCurrentEntity.count - 1) { ++ invokeListeners(0); + fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; +- load(1, false, true); ++ load(1, false, false); + fCurrentEntity.position = 0; + fCurrentEntity.startPosition = 0; + } +@@ -976,8 +987,9 @@ + load(0, true, true); + } + else if (fCurrentEntity.position == fCurrentEntity.count - 1) { ++ invokeListeners(0); + fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; +- load(1, false, true); ++ load(1, false, false); + fCurrentEntity.startPosition = 0; + fCurrentEntity.position = 0; + } +@@ -1346,8 +1358,9 @@ + else if (c == '\n' && (cc == '\r' ) && fCurrentEntity.isExternal()) { + // handle newlines + if (fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = (char)cc; +- load(1, false, true); ++ load(1, false, false); + } + int ccc = fCurrentEntity.ch[++fCurrentEntity.position]; + if (ccc == '\n' || ccc == 0x85) { +@@ -1408,8 +1421,9 @@ + fCurrentEntity.lineNumber++; + fCurrentEntity.columnNumber = 1; + if (fCurrentEntity.position == fCurrentEntity.count - 1) { ++ invokeListeners(0); + fCurrentEntity.ch[0] = (char)c; +- entityChanged = load(1, true, true); ++ entityChanged = load(1, true, false); + if (!entityChanged) { + // the load change the position to be 1, + // need to restore it when entity not changed +--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java Mon Sep 08 12:36:00 2014 -0700 ++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java Mon Dec 08 12:29:23 2014 -0800 +@@ -538,8 +538,9 @@ + fCurrentEntity.lineNumber++; + fCurrentEntity.columnNumber = 1; + if (fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = (char)c; +- load(1, false, true); ++ load(1, false, false); + } + if (c == '\r' && isExternal) { + if (fCurrentEntity.ch[fCurrentEntity.position++] != '\n') { +@@ -670,9 +671,10 @@ + int offset = fCurrentEntity.position; + if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; + offset = 0; +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + fCurrentEntity.columnNumber++; + String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); + +@@ -776,10 +778,11 @@ + + if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { + if (++fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; + offset = 0; + +- if (load(1, false, true)) { ++ if (load(1, false, false)) { + fCurrentEntity.columnNumber++; + //adding into symbol table. + //XXX We are trying to add single character in SymbolTable?????? +@@ -906,8 +909,9 @@ + if (fCurrentEntity.position == fCurrentEntity.count) { + load(0, true, true); + } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { ++ invokeListeners(0); + fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; +- load(1, false, true); ++ load(1, false, false); + fCurrentEntity.position = 0; + } + +@@ -1054,8 +1058,9 @@ + if (fCurrentEntity.position == fCurrentEntity.count) { + load(0, true, true); + } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { ++ invokeListeners(0); + fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; +- load(1, false, true); ++ load(1, false, false); + fCurrentEntity.position = 0; + } + +@@ -1427,8 +1432,9 @@ + } else if (c == '\n' && cc == '\r' && isExternal) { + // handle newlines + if (fCurrentEntity.position == fCurrentEntity.count) { ++ invokeListeners(1); + fCurrentEntity.ch[0] = (char)cc; +- load(1, false, true); ++ load(1, false, false); + } + fCurrentEntity.position++; + if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') { +@@ -1502,8 +1508,9 @@ + fCurrentEntity.lineNumber++; + fCurrentEntity.columnNumber = 1; + if (fCurrentEntity.position == fCurrentEntity.count - 1) { ++ invokeListeners(0); + fCurrentEntity.ch[0] = (char)c; +- entityChanged = load(1, true, true); ++ entityChanged = load(1, true, false); + if (!entityChanged){ + // the load change the position to be 1, + // need to restore it when entity not changed +--- ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaLoader.java Mon Sep 08 12:36:00 2014 -0700 ++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaLoader.java Mon Dec 08 12:29:23 2014 -0800 +@@ -54,6 +54,7 @@ + import com.sun.org.apache.xerces.internal.util.SymbolTable; + import com.sun.org.apache.xerces.internal.util.XMLSymbols; + import com.sun.org.apache.xerces.internal.utils.SecuritySupport; ++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager; + import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager; + import com.sun.org.apache.xerces.internal.xni.XNIException; + import com.sun.org.apache.xerces.internal.xni.grammars.Grammar; +@@ -983,6 +984,18 @@ + */ + public void reset(XMLComponentManager componentManager) throws XMLConfigurationException { + ++ XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager)componentManager.getProperty(XML_SECURITY_PROPERTY_MANAGER); ++ if (spm == null) { ++ spm = new XMLSecurityPropertyManager(); ++ setProperty(XML_SECURITY_PROPERTY_MANAGER, spm); ++ } ++ ++ XMLSecurityManager sm = (XMLSecurityManager)componentManager.getProperty(SECURITY_MANAGER); ++ if (sm == null) ++ setProperty(SECURITY_MANAGER,new XMLSecurityManager(true)); ++ ++ faccessExternalSchema = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_SCHEMA); ++ + fGrammarBucket.reset(); + + fSubGroupHandler.reset(); +@@ -1066,9 +1079,6 @@ + // get generate-synthetic-annotations feature + fSchemaHandler.setGenerateSyntheticAnnotations(componentManager.getFeature(GENERATE_SYNTHETIC_ANNOTATIONS, false)); + fSchemaHandler.reset(componentManager); +- +- XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager)componentManager.getProperty(XML_SECURITY_PROPERTY_MANAGER); +- faccessExternalSchema = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_SCHEMA); + } + + private void initGrammarBucket(){ +--- ./jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java Mon Sep 08 12:36:00 2014 -0700 ++++ ./jaxp/src/com/sun/org/apache/xml/internal/res/XMLErrorResources_ja.java Mon Dec 08 12:29:23 2014 -0800 +@@ -227,7 +227,7 @@ + "\u4E0D\u660E\u306A\u8EF8\u30C8\u30E9\u30D0\u30FC\u30B9\u30FB\u30BF\u30A4\u30D7\u3067\u3059: {0}"}, + + { ER_AXIS_NOT_SUPPORTED, +- "\u8EF8traverser\u6A5F\u80FD\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {0}"}, ++ "\u8EF8\u30C8\u30E9\u30D0\u30FC\u30B5\u6A5F\u80FD\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {0}"}, + + { ER_NO_DTMIDS_AVAIL, + "DTM ID\u306F\u3053\u308C\u4EE5\u4E0A\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093"}, +@@ -326,7 +326,7 @@ + "XMLReader\u306FstartParse\u30EA\u30AF\u30A8\u30B9\u30C8\u3088\u308A\u524D\u306B\u3067\u304D\u307E\u305B\u3093"}, + + { ER_AXIS_TRAVERSER_NOT_SUPPORTED, +- "\u8EF8traverser\u6A5F\u80FD\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {0}"}, ++ "\u8EF8\u30C8\u30E9\u30D0\u30FC\u30B5\u6A5F\u80FD\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {0}"}, + + { ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER, + "null PrintWriter\u306B\u3088\u3063\u3066ListingErrorHandler\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F\u3002"}, +--- ./jaxws/.hgtags Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/.hgtags Mon Dec 08 12:29:31 2014 -0800 +@@ -312,6 +312,8 @@ + 1277c0d492fd9253f1ea2730eb160953397bd939 jdk8u20-b24 + 1277c0d492fd9253f1ea2730eb160953397bd939 jdk8u20-b25 + 7025a2c10ea4116ce8f31bb1e305f732aa1025f0 jdk8u20-b26 ++7053deda0ffd69046ef480b3595cf13451b477ec jdk8u20-b31 ++2f39063fee48f96fe9cacf704ce30c6fc333ae73 jdk8u20-b32 + efc85d318f4697f40bdd1f3757677be97f1758d9 jdk8u25-b00 + a76779e1b0376650dfc29a1f3b14760f05e0fc6d jdk8u25-b01 + 3d31955043b9f1807c9d695c7b5d604d11c132cf jdk8u25-b02 +@@ -329,3 +331,19 @@ + 392a9579cc95d27806c1dde16eee776524a49761 jdk8u25-b14 + d3a96bbb88521188a3af1a34dd9523f13afa521d jdk8u25-b15 + 4570a7d00aa9bd3df028f52d6f9d8c434163b689 jdk8u25-b16 ++d47a47f961ee423ce03623098f62d79254c6f328 jdk8u25-b17 ++cb0ad90bfe3c497c7236c5480447c4bde110934f jdk8u25-b18 ++a345282d661be80f2cdee3c43e12fbe01e7ff6d5 jdk8u25-b31 ++3a676fe898c93ad3afcaa55a71da96455e5f230e jdk8u31-b00 ++1c73ca9179f22d4a73d1a248a3254f891c71ee30 jdk8u31-b01 ++c1f1ed28e0bb68d7536fb30bb6f1a3623816b12a jdk8u31-b02 ++31893650acaf8935ad395d04cbc1575bada97622 jdk8u31-b03 ++60ee8e1e63aee861ea7606c5825c15209bb10aa2 jdk8u31-b04 ++e4e3070ba39416ea1f20a6583276117c5498466f jdk8u31-b05 ++90cd67a6b6e5e4db93155cc0260a94b55b35bc74 jdk8u31-b06 ++06807f9a68358f9684ab59b249760ba2b47cc07b jdk8u31-b07 ++45193c5ae26d67cd3dc6961506d8c06803ff646c jdk8u31-b08 ++9a310a2276f9a01822b3cfc91268a67cbaaafd0a jdk8u31-b09 ++dd0467f3fe130884849ad8fb226d76f02b4cbde4 jdk8u31-b10 ++497c783d228ed188d61964edd409794af3ad3e5c jdk8u31-b11 ++959e8fca46155528c8147da69a7c49edfb002cb1 jdk8u31-b12 +--- ./jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -38,6 +38,9 @@ + + /** + * Utils class. ++ * ++ * WARNING: If you are doing any changes don't forget to change other Utils classes in different packages. ++ * + * Has *package private* access to avoid inappropriate usage. + */ + final class Utils { +@@ -51,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -69,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -38,6 +38,9 @@ + + /** + * Utils class. ++ * ++ * WARNING: If you are doing any changes don't forget to change other Utils classes in different packages. ++ * + * Has *package private* access to avoid inappropriate usage. + */ + final class Utils { +@@ -51,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -69,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java Mon Dec 08 12:29:31 2014 -0800 +@@ -43,6 +43,8 @@ + import java.net.URI; + import java.net.URISyntaxException; + import java.net.URL; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.ArrayList; + import java.util.Calendar; + import java.util.Collections; +@@ -197,7 +199,15 @@ + + static { + +- QName[] qnames = (System.getProperty(MAP_ANYURI_TO_URI) == null) ? new QName[] { ++ String MAP_ANYURI_TO_URI_VALUE = AccessController.doPrivileged( ++ new PrivilegedAction() { ++ @Override ++ public String run() { ++ return System.getProperty(MAP_ANYURI_TO_URI); ++ } ++ } ++ ); ++ QName[] qnames = (MAP_ANYURI_TO_URI_VALUE == null) ? new QName[] { + createXS("string"), + createXS("anySimpleType"), + createXS("normalizedString"), +@@ -310,7 +320,7 @@ + return v.toExternalForm(); + } + }); +- if (System.getProperty(MAP_ANYURI_TO_URI) == null) { ++ if (MAP_ANYURI_TO_URI_VALUE == null) { + secondaryList.add( + new StringImpl(URI.class, createXS("string")) { + public URI parse(CharSequence text) throws SAXException { +@@ -774,17 +784,18 @@ + } + }); + primaryList.add( +- new StringImpl(BigDecimal.class, +- createXS("decimal") ++ new StringImpl(BigDecimal.class, ++ createXS("decimal") + ) { +- public BigDecimal parse(CharSequence text) { +- return DatatypeConverterImpl._parseDecimal(text.toString()); ++ public BigDecimal parse(CharSequence text) { ++ return DatatypeConverterImpl._parseDecimal(text.toString()); ++ } ++ ++ public String print(BigDecimal v) { ++ return DatatypeConverterImpl._printDecimal(v); ++ } + } +- +- public String print(BigDecimal v) { +- return DatatypeConverterImpl._printDecimal(v); +- } +- }); ++ ); + primaryList.add( + new StringImpl(QName.class, + createXS("QName") +@@ -812,7 +823,7 @@ + w.getNamespaceContext().declareNamespace(v.getNamespaceURI(),v.getPrefix(),false); + } + }); +- if (System.getProperty(MAP_ANYURI_TO_URI) != null) { ++ if (MAP_ANYURI_TO_URI_VALUE != null) { + primaryList.add( + new StringImpl(URI.class, createXS("anyURI")) { + public URI parse(CharSequence text) throws SAXException { +@@ -830,16 +841,17 @@ + }); + } + primaryList.add( +- new StringImpl(Duration.class, createXS("duration")) { +- public String print(Duration duration) { +- return duration.toString(); ++ new StringImpl(Duration.class, createXS("duration")) { ++ public String print(Duration duration) { ++ return duration.toString(); ++ } ++ ++ public Duration parse(CharSequence lexical) { ++ TODO.checkSpec("JSR222 Issue #42"); ++ return DatatypeConverterImpl.getDatatypeFactory().newDuration(lexical.toString()); ++ } + } +- +- public Duration parse(CharSequence lexical) { +- TODO.checkSpec("JSR222 Issue #42"); +- return DatatypeConverterImpl.getDatatypeFactory().newDuration(lexical.toString()); +- } +- }); ++ ); + primaryList.add( + new StringImpl(Void.class) { + // 'void' binding isn't defined by the spec, but when the JAX-RPC processes user-defined +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -38,6 +38,9 @@ + + /** + * Utils class. ++ * ++ * WARNING: If you are doing any changes don't forget to change other Utils classes in different packages. ++ * + * Has *package private* access to avoid inappropriate usage. + */ + final class Utils { +@@ -51,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -69,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ArrayBeanInfoImpl.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ArrayBeanInfoImpl.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -79,19 +79,19 @@ + + @Override + public void startElement(UnmarshallingContext.State state, TagName ea) { +- state.target = new ArrayList(); ++ state.setTarget(new ArrayList()); + } + + @Override + public void leaveElement(UnmarshallingContext.State state, TagName ea) { +- state.target = toArray((List)state.target); ++ state.setTarget(toArray((List)state.getTarget())); + } + + @Override + public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + if(ea.matches("","item")) { +- state.loader = itemLoader; +- state.receiver = this; ++ state.setLoader(itemLoader); ++ state.setReceiver(this); + } else { + super.childElement(state,ea); + } +@@ -103,9 +103,9 @@ + } + + public void receive(UnmarshallingContext.State state, Object o) { +- ((List)state.target).add(o); ++ ((List)state.getTarget()).add(o); + } +- }; ++ } + + protected Object toArray( List list ) { + int len = list.size(); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ContentHandlerAdaptor.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ContentHandlerAdaptor.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -25,10 +25,6 @@ + + package com.sun.xml.internal.bind.v2.runtime; + +-import java.io.IOException; +- +-import javax.xml.stream.XMLStreamException; +- + import com.sun.istack.internal.FinalArrayList; + import com.sun.istack.internal.SAXException2; + +@@ -36,6 +32,9 @@ + import org.xml.sax.SAXException; + import org.xml.sax.helpers.DefaultHandler; + ++import javax.xml.stream.XMLStreamException; ++import java.io.IOException; ++ + /** + * Receives SAX2 events and send the equivalent events to + * {@link XMLSerializer} +@@ -70,14 +69,14 @@ + private boolean containsPrefixMapping(String prefix, String uri) { + for( int i=0; i() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -69,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ValueListBeanInfoImpl.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ValueListBeanInfoImpl.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -90,7 +90,7 @@ + idx = p; + } + +- state.target = toArray(r); ++ state.setTarget(toArray(r)); + } + }; + +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayERProperty.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayERProperty.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -98,7 +98,7 @@ + UnmarshallingContext context = state.getContext(); + context.startScope(1); + // inherit the target so that our children can access its target +- state.target = state.prev.target; ++ state.setTarget(state.getPrev().getTarget()); + + // start it now, so that even if there's no children we can still return empty collection + context.getScope(0).start(acc,lister); +@@ -116,8 +116,8 @@ + super.childElement(state,ea); + return; + } +- state.loader = child.loader; +- state.receiver = child.receiver; ++ state.setLoader(child.loader); ++ state.setReceiver(child.receiver); + } + + @Override +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -148,18 +148,18 @@ + public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + // create or obtain the Map object + try { +- target.set((BeanT)state.prev.target); ++ target.set((BeanT)state.getPrev().getTarget()); + map.set(acc.get(target.get())); + depthCounter++; + if(map.get() == null) { + map.set(ClassFactory.create(mapImplClass)); + } + map.get().clear(); +- state.target = map.get(); ++ state.setTarget(map.get()); + } catch (AccessorException e) { + // recover from error by setting a dummy Map that receives and discards the values + handleGenericException(e,true); +- state.target = new HashMap(); ++ state.setTarget(new HashMap()); + } + } + +@@ -180,7 +180,7 @@ + @Override + public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + if(ea.matches(entryTag)) { +- state.loader = entryLoader; ++ state.setLoader(entryLoader); + } else { + super.childElement(state,ea); + } +@@ -200,26 +200,26 @@ + private final Loader entryLoader = new Loader(false) { + @Override + public void startElement(UnmarshallingContext.State state, TagName ea) { +- state.target = new Object[2]; // this is inefficient ++ state.setTarget(new Object[2]); // this is inefficient + } + + @Override + public void leaveElement(UnmarshallingContext.State state, TagName ea) { +- Object[] keyValue = (Object[])state.target; +- Map map = (Map) state.prev.target; ++ Object[] keyValue = (Object[])state.getTarget(); ++ Map map = (Map) state.getPrev().getTarget(); + map.put(keyValue[0],keyValue[1]); + } + + @Override + public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + if(ea.matches(keyTag)) { +- state.loader = keyLoader; +- state.receiver = keyReceiver; ++ state.setLoader(keyLoader); ++ state.setReceiver(keyReceiver); + return; + } + if(ea.matches(valueTag)) { +- state.loader = valueLoader; +- state.receiver = valueReceiver; ++ state.setLoader(valueLoader); ++ state.setReceiver(valueReceiver); + return; + } + super.childElement(state,ea); +@@ -237,7 +237,7 @@ + this.index = index; + } + public void receive(UnmarshallingContext.State state, Object o) { +- ((Object[])state.target)[index] = o; ++ ((Object[])state.getTarget())[index] = o; + } + } + +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -38,6 +38,9 @@ + + /** + * Utils class. ++ * ++ * WARNING: If you are doing any changes don't forget to change other Utils classes in different packages. ++ * + * Has *package private* access to avoid inappropriate usage. + */ + final class Utils { +@@ -51,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -69,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -148,7 +148,7 @@ + + public void receive(UnmarshallingContext.State state, Object o) throws SAXException { + try { +- set((BeanT) state.target, (ValueT) o); ++ set((BeanT) state.getTarget(), (ValueT) o); + } catch (AccessorException e) { + Loader.handleGenericException(e, true); + } catch (IllegalAccessError iae) { +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -38,6 +38,9 @@ + + /** + * Utils class. ++ * ++ * WARNING: If you are doing any changes don't forget to change other Utils classes in different packages. ++ * + * Has *package private* access to avoid inappropriate usage. + */ + final class Utils { +@@ -51,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -69,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DefaultValueLoaderDecorator.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DefaultValueLoaderDecorator.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -44,10 +44,10 @@ + @Override + public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + // install the default value, but don't override the one given by the parent loader +- if(state.elementDefaultValue==null) +- state.elementDefaultValue = defaultValue; ++ if(state.getElementDefaultValue() == null) ++ state.setElementDefaultValue(defaultValue); + +- state.loader = l; ++ state.setLoader(l); + l.startElement(state,ea); + } + } +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Discarder.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Discarder.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -44,8 +44,8 @@ + + @Override + public void childElement(UnmarshallingContext.State state, TagName ea) { +- state.target = null; ++ state.setTarget(null); + // registering this allows the discarder to process the whole subtree. +- state.loader = this; ++ state.setLoader(this); + } + } +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DomLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/DomLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -99,10 +99,10 @@ + @Override + public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + UnmarshallingContext context = state.getContext(); +- if (state.target == null) +- state.target = new State(context); ++ if (state.getTarget() == null) ++ state.setTarget(new State(context)); + +- State s = (State) state.target; ++ State s = (State) state.getTarget(); + try { + s.declarePrefixes(context, context.getNewlyDeclaredPrefixes()); + s.handler.startElement(ea.uri, ea.local, ea.getQname(), ea.atts); +@@ -114,10 +114,10 @@ + + @Override + public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { +- state.loader = this; +- State s = (State) state.prev.target; ++ state.setLoader(this); ++ State s = (State) state.getPrev().getTarget(); + s.depth++; +- state.target = s; ++ state.setTarget(s); + } + + @Override +@@ -125,7 +125,7 @@ + if(text.length()==0) + return; // there's no point in creating an empty Text node in DOM. + try { +- State s = (State) state.target; ++ State s = (State) state.getTarget(); + s.handler.characters(text.toString().toCharArray(),0,text.length()); + } catch( SAXException e ) { + state.getContext().handleError(e); +@@ -135,7 +135,7 @@ + + @Override + public void leaveElement(UnmarshallingContext.State state, TagName ea) throws SAXException { +- State s = (State) state.target; ++ State s = (State) state.getTarget(); + UnmarshallingContext context = state.getContext(); + + try { +@@ -157,7 +157,7 @@ + } + + // we are done +- state.target = s.getElement(); ++ state.setTarget(s.getElement()); + } + } + +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -47,7 +47,7 @@ + + public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException { + try { +- xacc.parse(state.prev.target,text); ++ xacc.parse(state.getPrev().getTarget(), text); + } catch (AccessorException e) { + handleGenericException(e,true); + } catch (RuntimeException e) { +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyXsiLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/LeafPropertyXsiLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -55,9 +55,9 @@ + + @Override + public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { +- state.loader = selectLoader(state, ea); +- +- state.loader.startElement(state, ea); ++ final Loader loader = selectLoader(state, ea); ++ state.setLoader(loader); ++ loader.startElement(state, ea); + } + + protected Loader selectLoader(UnmarshallingContext.State state, TagName ea) throws SAXException { +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Loader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Loader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -88,8 +88,8 @@ + public void childElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + // notify the error, then recover by ignoring the whole element. + reportUnexpectedChildElement(ea, true); +- state.loader = Discarder.INSTANCE; +- state.receiver = null; ++ state.setLoader(Discarder.INSTANCE); ++ state.setReceiver(null); + } + + @SuppressWarnings({"StringEquality"}) +@@ -195,10 +195,10 @@ + UnmarshallingContext context = state.getContext(); + Unmarshaller.Listener listener = context.parent.getListener(); + if(beanInfo.hasBeforeUnmarshalMethod()) { +- beanInfo.invokeBeforeUnmarshalMethod(context.parent, child, state.prev.target); ++ beanInfo.invokeBeforeUnmarshalMethod(context.parent, child, state.getPrev().getTarget()); + } + if(listener!=null) { +- listener.beforeUnmarshal(child, state.prev.target); ++ listener.beforeUnmarshal(child, state.getPrev().getTarget()); + } + } + } +@@ -215,10 +215,10 @@ + UnmarshallingContext context = state.getContext(); + Unmarshaller.Listener listener = context.parent.getListener(); + if(beanInfo.hasAfterUnmarshalMethod()) { +- beanInfo.invokeAfterUnmarshalMethod(context.parent, child, state.target); ++ beanInfo.invokeAfterUnmarshalMethod(context.parent, child, state.getTarget()); + } + if(listener!=null) +- listener.afterUnmarshal(child, state.target); ++ listener.afterUnmarshal(child, state.getTarget()); + } + } + +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ProxyLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ProxyLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -41,7 +41,7 @@ + @Override + public final void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + Loader loader = selectLoader(state,ea); +- state.loader = loader; ++ state.setLoader(loader); + loader.startElement(state,ea); + } + +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/SAXConnector.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/SAXConnector.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -144,17 +144,7 @@ + if( qname==null || qname.length()==0 ) + qname=local; + +- +- boolean ignorable = true; +- StructureLoader sl; +- +- // not null only if element content is processed (StructureLoader is used) +- // ugly +- if((sl = this.context.getStructureLoader()) != null) { +- ignorable = ((ClassBeanInfoImpl)sl.getBeanInfo()).hasElementOnlyContentModel(); +- } +- +- processText(ignorable); ++ processText(!context.getCurrentState().isMixed()); + + tagName.uri = uri; + tagName.local = local; +@@ -204,7 +194,7 @@ + } + + private void processText( boolean ignorable ) throws SAXException { +- if( predictor.expectText() && (!ignorable || !WhiteSpaceProcessor.isWhiteSpace(buffer))) ++ if (predictor.expectText() && (!ignorable || !WhiteSpaceProcessor.isWhiteSpace(buffer))) + next.text(buffer); + buffer.setLength(0); + } +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Scope.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/Scope.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -97,7 +97,7 @@ + public void add( Accessor acc, Lister lister, ItemT value) throws SAXException{ + try { + if(!hasStarted()) { +- this.bean = (BeanT)context.getCurrentState().target; ++ this.bean = (BeanT)context.getCurrentState().getTarget(); + this.acc = acc; + this.lister = lister; + this.pack = lister.startPacking(bean,acc); +@@ -121,7 +121,7 @@ + public void start( Accessor acc, Lister lister) throws SAXException{ + try { + if(!hasStarted()) { +- this.bean = (BeanT)context.getCurrentState().target; ++ this.bean = (BeanT)context.getCurrentState().getTarget(); + this.acc = acc; + this.lister = lister; + this.pack = lister.startPacking(bean,acc); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StAXStreamConnector.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StAXStreamConnector.java Mon Dec 08 12:29:31 2014 -0800 +@@ -70,7 +70,7 @@ + // Quick hack until SJSXP fixes 6270116 + boolean isZephyr = readerClass.getName().equals("com.sun.xml.internal.stream.XMLReaderImpl"); + if (getBoolProp(reader,"org.codehaus.stax2.internNames") && +- getBoolProp(reader,"org.codehaus.stax2.internNsUris")) ++ getBoolProp(reader,"org.codehaus.stax2.internNsUris")) + ; // no need for interning + else + if (isZephyr) +@@ -219,8 +219,8 @@ + int nsCount = staxStreamReader.getNamespaceCount(); + for (int i = 0; i < nsCount; i++) { + visitor.startPrefixMapping( +- fixNull(staxStreamReader.getNamespacePrefix(i)), +- fixNull(staxStreamReader.getNamespaceURI(i))); ++ fixNull(staxStreamReader.getNamespacePrefix(i)), ++ fixNull(staxStreamReader.getNamespaceURI(i))); + } + + // fire startElement +@@ -310,13 +310,13 @@ + protected void handleCharacters() throws XMLStreamException, SAXException { + if( predictor.expectText() ) + buffer.append( +- staxStreamReader.getTextCharacters(), +- staxStreamReader.getTextStart(), +- staxStreamReader.getTextLength() ); ++ staxStreamReader.getTextCharacters(), ++ staxStreamReader.getTextStart(), ++ staxStreamReader.getTextLength() ); + } + + private void processText( boolean ignorable ) throws SAXException { +- if( predictor.expectText() && (!ignorable || !WhiteSpaceProcessor.isWhiteSpace(buffer))) { ++ if( predictor.expectText() && (!ignorable || !WhiteSpaceProcessor.isWhiteSpace(buffer) || context.getCurrentState().isMixed())) { + if(textReported) { + textReported = false; + } else { +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StructureLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StructureLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -172,7 +172,7 @@ + + context.recordInnerPeer(child); + +- state.target = child; ++ state.setTarget(child); + + fireBeforeUnmarshal(beanInfo, child, state); + +@@ -197,7 +197,7 @@ + String qname = atts.getQName(i); + if(atts.getURI(i).equals(WellKnownNamespace.XML_SCHEMA_INSTANCE)) + continue; // xsi:* attributes are meant to be processed by us, not by user apps. +- Object o = state.target; ++ Object o = state.getTarget(); + Map map = attCatchAll.get(o); + if(map==null) { + // TODO: use ClassFactory.inferImplClass(sig,knownImplClasses) +@@ -250,8 +250,8 @@ + } + } + +- state.loader = child.loader; +- state.receiver = child.receiver; ++ state.setLoader(child.loader); ++ state.setReceiver(child.receiver); + } + + @Override +@@ -273,7 +273,7 @@ + @Override + public void leaveElement(UnmarshallingContext.State state, TagName ea) throws SAXException { + state.getContext().endScope(frameSize); +- fireAfterUnmarshal(beanInfo, state.target, state.prev); ++ fireAfterUnmarshal(beanInfo, state.getTarget(), state.getPrev()); + } + + private static final QNameMap EMPTY = new QNameMap(); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/TextLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/TextLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -51,7 +51,7 @@ + + public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException { + try { +- state.target = xducer.parse(text); ++ state.setTarget(xducer.parse(text)); + } catch (AccessorException e) { + handleGenericException(e,true); + } catch (RuntimeException e) { +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/UnmarshallingContext.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/UnmarshallingContext.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -35,8 +35,6 @@ + import java.util.List; + import java.util.Map; + import java.util.concurrent.Callable; +-import java.util.logging.Level; +-import java.util.logging.Logger; + + import javax.xml.XMLConstants; + import javax.xml.bind.JAXBElement; +@@ -198,20 +196,19 @@ + /** + * Loader that owns this element. + */ +- public Loader loader; ++ private Loader loader; + /** + * Once {@link #loader} is completed, this receiver + * receives the result. + */ +- public Receiver receiver; ++ private Receiver receiver; + +- public Intercepter intercepter; +- ++ private Intercepter intercepter; + + /** + * Object being unmarshalled by this {@link #loader}. + */ +- public Object target; ++ private Object target; + + /** + * Hack for making JAXBElement unmarshalling work. +@@ -240,7 +237,7 @@ + * @see ElementBeanInfoImpl.IntercepterLoader#startElement(State, TagName) + * @see ElementBeanInfoImpl.IntercepterLoader#intercept(State, Object) + */ +- public Object backup; ++ private Object backup; + + /** + * Number of {@link UnmarshallingContext#nsBind}s declared thus far. +@@ -256,17 +253,22 @@ + * or by a child {@link Loader} when + * {@link Loader#startElement(State, TagName)} is called. + */ +- public String elementDefaultValue; ++ private String elementDefaultValue; + + /** + * {@link State} for the parent element + * + * {@link State} objects form a doubly linked list. + */ +- public State prev; ++ private State prev; + private State next; + +- public boolean nil = false; ++ private boolean nil = false; ++ ++ /** ++ * specifies that we are working with mixed content ++ */ ++ private boolean mixed = false; + + /** + * Gets the context. +@@ -280,6 +282,8 @@ + this.prev = prev; + if (prev!=null) { + prev.next = this; ++ if (prev.mixed) // parent is in mixed mode ++ this.mixed = true; + } + } + +@@ -289,7 +293,7 @@ + } + if (next==null) { + assert current == this; +- allocateMoreStates(); ++ next = new State(this); + } + nil = false; + State n = next; +@@ -304,11 +308,71 @@ + assert prev!=null; + loader = null; + nil = false; ++ mixed = false; + receiver = null; + intercepter = null; + elementDefaultValue = null; + target = null; + current = prev; ++ next = null; ++ } ++ ++ public boolean isMixed() { ++ return mixed; ++ } ++ ++ public Object getTarget() { ++ return target; ++ } ++ ++ public void setLoader(Loader loader) { ++ if (loader instanceof StructureLoader) // set mixed mode ++ mixed = !((StructureLoader)loader).getBeanInfo().hasElementOnlyContentModel(); ++ this.loader = loader; ++ } ++ ++ public void setReceiver(Receiver receiver) { ++ this.receiver = receiver; ++ } ++ ++ public State getPrev() { ++ return prev; ++ } ++ ++ public void setIntercepter(Intercepter intercepter) { ++ this.intercepter = intercepter; ++ } ++ ++ public void setBackup(Object backup) { ++ this.backup = backup; ++ } ++ ++ public void setTarget(Object target) { ++ this.target = target; ++ } ++ ++ public Object getBackup() { ++ return backup; ++ } ++ ++ public boolean isNil() { ++ return nil; ++ } ++ ++ public void setNil(boolean nil) { ++ this.nil = nil; ++ } ++ ++ public Loader getLoader() { ++ return loader; ++ } ++ ++ public String getElementDefaultValue() { ++ return elementDefaultValue; ++ } ++ ++ public void setElementDefaultValue(String elementDefaultValue) { ++ this.elementDefaultValue = elementDefaultValue; + } + } + +@@ -348,7 +412,6 @@ + this.parent = _parent; + this.assoc = assoc; + this.root = this.current = new State(null); +- allocateMoreStates(); + } + + public void reset(InfosetScanner scanner,boolean isInplaceMode, JaxBeanInfo expectedType, IDResolver idResolver) { +@@ -395,23 +458,6 @@ + return null; + } + +- /** +- * Allocates a few more {@link State}s. +- * +- * Allocating multiple {@link State}s at once allows those objects +- * to be allocated near each other, which reduces the working set +- * of CPU. It improves the chance the relevant data is in the cache. +- */ +- private void allocateMoreStates() { +- // this method should be used only when we run out of a state. +- assert current.next==null; +- +- State s = current; +- for (int i=0; i<8; i++) { +- s = new State(s); +- } +- } +- + public void clearStates() { + State last = current; + while (last.next != null) last = last.next; +@@ -515,16 +561,15 @@ + + @Override + public void text(CharSequence pcdata) throws SAXException { +- State cur = current; + pushCoordinator(); + try { +- if(cur.elementDefaultValue!=null) { +- if(pcdata.length()==0) { ++ if (current.elementDefaultValue != null) { ++ if (pcdata.length() == 0) { + // send the default value into the unmarshaller instead +- pcdata = cur.elementDefaultValue; ++ pcdata = current.elementDefaultValue; + } + } +- cur.loader.text(cur,pcdata); ++ current.loader.text(current, pcdata); + } finally { + popCoordinator(); + } +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ValuePropertyLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/ValuePropertyLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -49,18 +49,17 @@ + + public void text(UnmarshallingContext.State state, CharSequence text) throws SAXException { + try { +- xacc.parse(state.target,text); ++ xacc.parse(state.getTarget(),text); + } catch (AccessorException e) { + handleGenericException(e,true); + } catch (RuntimeException e) { +- if(state.prev != null) { +- if(state.prev.target instanceof JAXBElement) { +- ; // do nothing - issue 601 - don't report exceptions like +- // NumberFormatException when unmarshalling "nillable" element +- // (I suppose JAXBElement indicates this +- } else { ++ if(state.getPrev() != null) { ++ if (!(state.getPrev().getTarget() instanceof JAXBElement)) + handleParseConversionException(state,e); +- } ++ // else ++ // do nothing - issue 601 - don't report exceptions like ++ // NumberFormatException when unmarshalling "nillable" element ++ // (I suppose JAXBElement indicates this + } else { + handleParseConversionException(state,e); + } +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiNilLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiNilLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -62,7 +62,7 @@ + onNil(state); + boolean hasOtherAttributes = (ea.atts.getLength() - 1) > 0; + // see issues 6759703 and 565 - need to preserve attributes even if the element is nil; only when the type is stored in JAXBElement +- if (!(hasOtherAttributes && (state.prev.target instanceof JAXBElement))) { ++ if (!(hasOtherAttributes && (state.getPrev().getTarget() instanceof JAXBElement))) { + return Discarder.INSTANCE; + } + } +@@ -96,8 +96,8 @@ + @Override + protected void onNil(UnmarshallingContext.State state) throws SAXException { + try { +- acc.set(state.prev.target,null); +- state.prev.nil = true; ++ acc.set(state.getPrev().getTarget(),null); ++ state.getPrev().setNil(true); + } catch (AccessorException e) { + handleGenericException(e,true); + } +@@ -113,7 +113,7 @@ + @Override + protected void onNil(UnmarshallingContext.State state) { + // let the receiver add this to the lister +- state.target = null; ++ state.setTarget(null); + } + } + } +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiTypeLoader.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/unmarshaller/XsiTypeLoader.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -61,7 +61,7 @@ + beanInfo = defaultBeanInfo; + + Loader loader = beanInfo.getLoader(null,false); +- state.loader = loader; ++ state.setLoader(loader); + loader.startElement(state,ea); + } + +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/util/XmlFactory.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/util/XmlFactory.java Mon Dec 08 12:29:31 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -25,8 +25,10 @@ + + package com.sun.xml.internal.bind.v2.util; + +-import com.sun.xml.internal.bind.Util; + import com.sun.xml.internal.bind.v2.Messages; ++ ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.logging.Level; + import java.util.logging.Logger; + import javax.xml.XMLConstants; +@@ -43,8 +45,6 @@ + import org.xml.sax.SAXNotRecognizedException; + import org.xml.sax.SAXNotSupportedException; + +-import static com.sun.xml.internal.bind.Util.getSystemProperty; +- + /** + * Provides helper methods for creating properly configured XML parser + * factory instances with namespace support turned on and configured for +@@ -68,7 +68,14 @@ + */ + private static final String DISABLE_XML_SECURITY = "com.sun.xml.internal.bind.disableXmlSecurity"; + +- public static final boolean XML_SECURITY_DISABLED = Boolean.parseBoolean(getSystemProperty(DISABLE_XML_SECURITY)); ++ private static final boolean XML_SECURITY_DISABLED = AccessController.doPrivileged( ++ new PrivilegedAction() { ++ @Override ++ public Boolean run() { ++ return Boolean.getBoolean(DISABLE_XML_SECURITY); ++ } ++ } ++ ); + + private static boolean isXMLSecurityDisabled(boolean runtimeSetting) { + return XML_SECURITY_DISABLED || runtimeSetting; +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -54,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -72,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/ProviderImpl.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/ProviderImpl.java Mon Dec 08 12:29:31 2014 -0800 +@@ -147,19 +147,12 @@ + } + + public EndpointReference readEndpointReference(final Source eprInfoset) { +- // EPR constructors are private, so we need privilege escalation. +- // this unmarshalling can only access instances of a fixed, known set of classes, +- // so doing that shouldn't introduce security vulnerability. +- return AccessController.doPrivileged(new PrivilegedAction() { +- public EndpointReference run() { +- try { +- Unmarshaller unmarshaller = eprjc.get().createUnmarshaller(); +- return (EndpointReference) unmarshaller.unmarshal(eprInfoset); +- } catch (JAXBException e) { +- throw new WebServiceException("Error creating Marshaller or marshalling.", e); +- } +- } +- }); ++ try { ++ Unmarshaller unmarshaller = eprjc.get().createUnmarshaller(); ++ return (EndpointReference) unmarshaller.unmarshal(eprInfoset); ++ } catch (JAXBException e) { ++ throw new WebServiceException("Error creating Marshaller or marshalling.", e); ++ } + } + + public T getPort(EndpointReference endpointReference, Class clazz, WebServiceFeature... webServiceFeatures) { +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Mon Dec 08 12:29:31 2014 -0800 +@@ -54,17 +54,20 @@ + + static { // we statically initializing REFLECTION_NAVIGATOR property + try { +- Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); +- //noinspection unchecked +- final Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ final Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + + // requires accessClassInPackage privilege +- AccessController.doPrivileged( +- new PrivilegedAction() { ++ final Method getInstance = AccessController.doPrivileged( ++ new PrivilegedAction() { + @Override +- public Object run() { +- getInstance.setAccessible(true); +- return null; ++ public Method run() { ++ try { ++ Method getInstance = refNav.getDeclaredMethod("getInstance"); ++ getInstance.setAccessible(true); ++ return getInstance; ++ } catch (NoSuchMethodException e) { ++ throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); ++ } + } + } + ); +@@ -72,16 +75,10 @@ + //noinspection unchecked + REFLECTION_NAVIGATOR = (Navigator) getInstance.invoke(null); + } catch (ClassNotFoundException e) { +- e.printStackTrace(); + throw new IllegalStateException("Can't find ReflectionNavigator class"); + } catch (InvocationTargetException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance throws the exception"); +- } catch (NoSuchMethodException e) { +- e.printStackTrace(); +- throw new IllegalStateException("ReflectionNavigator.getInstance can't be found"); + } catch (IllegalAccessException e) { +- e.printStackTrace(); + throw new IllegalStateException("ReflectionNavigator.getInstance method is inaccessible"); + } catch (SecurityException e) { + LOGGER.log(Level.FINE, "Unable to access ReflectionNavigator.getInstance", e); +--- ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/util/xml/XmlUtil.java Mon Sep 08 12:36:09 2014 -0700 ++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/util/xml/XmlUtil.java Mon Dec 08 12:29:31 2014 -0800 +@@ -63,6 +63,8 @@ + import java.io.OutputStreamWriter; + import java.io.Writer; + import java.net.URL; ++import java.security.AccessController; ++import java.security.PrivilegedAction; + import java.util.ArrayList; + import java.util.Enumeration; + import java.util.Iterator; +@@ -84,12 +86,16 @@ + + private static final Logger LOGGER = Logger.getLogger(XmlUtil.class.getName()); + +- private static boolean XML_SECURITY_DISABLED; ++ private static final String DISABLE_XML_SECURITY = "com.sun.xml.internal.ws.disableXmlSecurity"; + +- static { +- String disableXmlSecurity = System.getProperty("com.sun.xml.internal.ws.disableXmlSecurity"); +- XML_SECURITY_DISABLED = disableXmlSecurity == null || !Boolean.valueOf(disableXmlSecurity); +- } ++ private static boolean XML_SECURITY_DISABLED = AccessController.doPrivileged( ++ new PrivilegedAction() { ++ @Override ++ public Boolean run() { ++ return Boolean.getBoolean(DISABLE_XML_SECURITY); ++ } ++ } ++ ); + + public static String getPrefix(String s) { + int i = s.indexOf(':'); +--- ./jdk/.hgtags Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/.hgtags Mon Dec 08 12:29:42 2014 -0800 +@@ -312,6 +312,8 @@ + dfb9f24d56b51e5a2ca26e77fc69a2464d51a4d3 jdk8u20-b24 + dfb9f24d56b51e5a2ca26e77fc69a2464d51a4d3 jdk8u20-b25 + dd229c5f57bff4e75a70908294a13072b9a48385 jdk8u20-b26 ++684a13a7d2ccc91d2ad709ecad1fddbcc992ee5a jdk8u20-b31 ++eb459e6ac74a7db7b49393e470d04b6d854dfa89 jdk8u20-b32 + abca9f6f1a10e9f91b2538bbe7870f54f550d986 jdk8u25-b00 + 7d0627679c9fdeaaaa9fe15c7cc11af0763621ec jdk8u25-b01 + b0277ec994b751ebb761814675352506cd56bcd6 jdk8u25-b02 +@@ -332,3 +334,19 @@ + 0000000000000000000000000000000000000000 jdk8u25-b16 + 0000000000000000000000000000000000000000 jdk8u25-b16 + d067890f970f3a712f870f6311d20f3359b6eaf0 jdk8u25-b16 ++67b22a82345bfa1ae1492679bdf3c4d54f4eacde jdk8u25-b17 ++a4e88eaf15ea0569f3275a807a976fe0e04a086c jdk8u25-b18 ++556c79ef8a1d2fa38f79b3d3e102e80e0b0c9731 jdk8u25-b31 ++f935349e2c065487c745bc41f81ddc7869bd2d2d jdk8u31-b00 ++caebf6158e9d522df41a2c89a1602e5013bac401 jdk8u31-b01 ++b1cef4d76664564732004cf3aedb0cbaa1972683 jdk8u31-b02 ++649c7ba692012fd93c532fea133cf14785674387 jdk8u31-b03 ++ab6aa5ee3897ebfe4a04722a594fb2cecd6f3bef jdk8u31-b04 ++1e79baf89075967bddc64921d2680d8c1123f654 jdk8u31-b05 ++b6aeaae6dd9d3a17564130af142b4734c643267e jdk8u31-b06 ++34a484abc5d5391623294743d15e234a99d04dd7 jdk8u31-b07 ++ca1adc7c848370dda8dbf9e3a970c3e6427fb05b jdk8u31-b08 ++1c0cc3bbe07d52906d7ffbb72fa4733c327f1326 jdk8u31-b09 ++291505d802d9075e227f9ee865a67234e1d737cf jdk8u31-b10 ++a21dd7999d1e4ba612c951c2c78504d23eb7243a jdk8u31-b11 ++6a12f34816d2ee12368274fc21225384a8893426 jdk8u31-b12 +--- ./jdk/make/data/tzdata/VERSION Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/make/data/tzdata/VERSION Mon Dec 08 12:29:42 2014 -0800 +@@ -1,24 +1,24 @@ + # + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +-# ++# + # This code is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License version 2 only, as + # published by the Free Software Foundation. Oracle designates this + # particular file as subject to the "Classpath" exception as provided + # by Oracle in the LICENSE file that accompanied this code. +-# ++# + # This code is distributed in the hope that it will be useful, but WITHOUT + # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + # version 2 for more details (a copy is included in the LICENSE file that + # accompanied this code). +-# ++# + # You should have received a copy of the GNU General Public License version + # 2 along with this work; if not, write to the Free Software Foundation, + # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +-# ++# + # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + # or visit www.oracle.com if you need additional information or have any + # questions. + # +-tzdata2014c ++tzdata2014j +--- ./jdk/make/data/tzdata/africa Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/make/data/tzdata/africa Mon Dec 08 12:29:42 2014 -0800 +@@ -21,36 +21,35 @@ + # or visit www.oracle.com if you need additional information or have any + # questions. + # +-#
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2013-02-21):
++# From Paul Eggert (2014-10-31):
+ #
+-# A good source for time zone historical data outside the U.S. is
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Another source occasionally used is Edward W. Whitman, World Time Differences,
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
+ # For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
+ #
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+@@ -58,13 +57,13 @@
+ # Previous editions of this database used WAT, CAT, SAT, and EAT
+ # for +0:00 through +3:00, respectively,
+ # but Mark R V Murray reports that
+-# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
+-# `CAT' is commonly used for +2:00 in countries north of South Africa, and
+-# `WAT' is probably the best name for +1:00, as the common phrase for
+-# the area that includes Nigeria is ``West Africa''.
+-# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
++# 'SAST' is the official abbreviation for +2:00 in the country of South Africa,
++# 'CAT' is commonly used for +2:00 in countries north of South Africa, and
++# 'WAT' is probably the best name for +1:00, as the common phrase for
++# the area that includes Nigeria is "West Africa".
++# He has heard of "Western Sahara Time" for +0:00 but can find no reference.
+ #
+-# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
++# To make things confusing, 'WAT' seems to have been used for -1:00 long ago;
+ # I'd guess that this was because people needed _some_ name for -1:00,
+ # and at the time, far west Africa was the only major land area in -1:00.
+ # This usage is now obsolete, as the last use of -1:00 on the African
+@@ -77,7 +76,7 @@
+ #	 2:00	SAST	South Africa Standard Time
+ # and Murray suggests the following abbreviation:
+ #	 1:00	WAT	West Africa Time
+-# I realize that this leads to `WAT' being used for both -1:00 and 1:00
++# I realize that this leads to 'WAT' being used for both -1:00 and 1:00
+ # for times before 1976, but this is the best I can think of
+ # until we get more information.
+ #
+@@ -88,7 +87,6 @@
+ #	 3:00	CAST	Central Africa Summer Time (no longer used)
+ #	 3:00	SAST	South Africa Summer Time (no longer used)
+ #	 3:00	EAT	East Africa Time
+-#	 4:00	EAST	East Africa Summer Time (no longer used)
+ 
+ # Algeria
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -117,9 +115,9 @@
+ # Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+ # more precise 0:09:21.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15 0:01
+-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+-			0:00	Algeria	WE%sT	1940 Feb 25 2:00
++Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15  0:01
++			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
++			0:00	Algeria	WE%sT	1940 Feb 25  2:00
+ 			1:00	Algeria	CE%sT	1946 Oct  7
+ 			0:00	-	WET	1956 Jan 29
+ 			1:00	-	CET	1963 Apr 14
+@@ -129,92 +127,71 @@
+ 			1:00	-	CET
+ 
+ # Angola
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Luanda	0:52:56	-	LMT	1892
+-			0:52:04	-	AOT	1911 May 26 # Angola Time
+-			1:00	-	WAT
+-
+ # Benin
+-# Whitman says they switched to 1:00 in 1946, not 1934;
+-# go with Shanks & Pottenger.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Porto-Novo	0:10:28	-	LMT	1912
+-			0:00	-	GMT	1934 Feb 26
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Botswana
+-# From Paul Eggert (2013-02-21):
+-# Milne says they were regulated by the Cape Town Signal in 1899;
+-# assume they switched to 2:00 when Cape Town did.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Gaborone	1:43:40 -	LMT	1885
+-			1:30	-	SAST	1903 Mar
+-			2:00	-	CAT	1943 Sep 19 2:00
+-			2:00	1:00	CAST	1944 Mar 19 2:00
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # Burkina Faso
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Ouagadougou	-0:06:04 -	LMT	1912
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Burundi
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Bujumbura	1:57:28	-	LMT	1890
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # Cameroon
+-# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Douala	0:38:48	-	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Cape Verde
++#
++# Shanks gives 1907 for the transition to CVT.
++# Perhaps the 1911-05-26 Portuguese decree
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# merely made it official?
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907			# Praia
++Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907        # Praia
+ 			-2:00	-	CVT	1942 Sep
+ 			-2:00	1:00	CVST	1945 Oct 15
+-			-2:00	-	CVT	1975 Nov 25 2:00
++			-2:00	-	CVT	1975 Nov 25  2:00
+ 			-1:00	-	CVT
+ 
+ # Central African Republic
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Bangui	1:14:20	-	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Chad
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Ndjamena	1:00:12 -	LMT	1912
++Zone	Africa/Ndjamena	1:00:12 -	LMT	1912        # N'Djamena
+ 			1:00	-	WAT	1979 Oct 14
+ 			1:00	1:00	WAST	1980 Mar  8
+ 			1:00	-	WAT
+ 
+ # Comoros
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Comoro	2:53:04 -	LMT	1911 Jul   # Moroni, Gran Comoro
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+-# Democratic Republic of Congo
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov 9
+-			1:00	-	WAT
+-Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
+-			2:00	-	CAT
++# Democratic Republic of the Congo
++# See Africa/Lagos for the western part and Africa/Maputo for the eastern.
+ 
+ # Republic of the Congo
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Brazzaville	1:01:08 -	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+-# Cote D'Ivoire
++# Côte d'Ivoire / Ivory Coast
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
+ 			 0:00	-	GMT
++Link Africa/Abidjan Africa/Bamako	# Mali
++Link Africa/Abidjan Africa/Banjul	# Gambia
++Link Africa/Abidjan Africa/Conakry	# Guinea
++Link Africa/Abidjan Africa/Dakar	# Senegal
++Link Africa/Abidjan Africa/Freetown	# Sierra Leone
++Link Africa/Abidjan Africa/Lome		# Togo
++Link Africa/Abidjan Africa/Nouakchott	# Mauritania
++Link Africa/Abidjan Africa/Ouagadougou	# Burkina Faso
++Link Africa/Abidjan Africa/Sao_Tome	# São Tomé and Príncipe
++Link Africa/Abidjan Atlantic/St_Helena	# St Helena
+ 
+ # Djibouti
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Djibouti	2:52:36 -	LMT	1911 Jul
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ ###############################################################################
+ 
+@@ -254,30 +231,26 @@
+ # Egyptians would approve the cancellation."
+ #
+ # Egypt to cancel daylight saving time
+-# 
+ # http://www.almasryalyoum.com/en/node/407168
+-# 
+ # or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
+-# 
+ Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
+-Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
++Rule	Egypt	1995	2005	-	Sep	lastThu	24:00	0	-
+ # From Steffen Thorsen (2006-09-19):
+ # The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
+ # Egypt will turn back clocks by one hour at the midnight of Thursday
+ # after observing the daylight saving time since May.
+ # http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
+-Rule	Egypt	2006	only	-	Sep	21	23:00s	0	-
++Rule	Egypt	2006	only	-	Sep	21	24:00	0	-
+ # From Dirk Losch (2007-08-14):
+ # I received a mail from an airline which says that the daylight
+ # saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+-# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
++# From Jesper Nørgaard Welen (2007-08-15): [The following agree:]
+ # http://www.nentjes.info/Bill/bill5.htm
+ # http://www.timeanddate.com/worldclock/city.html?n=53
+ # From Steffen Thorsen (2007-09-04): The official information...:
+ # http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+-Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s	0	-
++Rule	Egypt	2007	only	-	Sep	Thu>=1	24:00	0	-
+ # From Abdelrahman Hassan (2007-09-06):
+ # Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
+ # than the year of the Gregorian calendar, Ramadan shifts earlier each
+@@ -311,15 +284,9 @@
+ #
+ # timeanddate[2] and another site I've found[3] also support that.
+ #
+-# [1] 
+-# https://bugzilla.redhat.com/show_bug.cgi?id=492263
+-# 
+-# [2] 
+-# http://www.timeanddate.com/worldclock/clockchange.html?n=53
+-# 
+-# [3] 
+-# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+-# 
++# [1] https://bugzilla.redhat.com/show_bug.cgi?id=492263
++# [2] http://www.timeanddate.com/worldclock/clockchange.html?n=53
++# [3] http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+ 
+ # From Arthur David Olson (2009-04-20):
+ # In 2009 (and for the next several years), Ramadan ends before the fourth
+@@ -329,14 +296,10 @@
+ # From Steffen Thorsen (2009-08-11):
+ # We have been able to confirm the August change with the Egyptian Cabinet
+ # Information and Decision Support Center:
+-# 
+ # http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
+-# 
+ #
+ # The Middle East News Agency
+-# 
+ # http://www.mena.org.eg/index.aspx
+-# 
+ # also reports "Egypt starts winter time on August 21"
+ # today in article numbered "71, 11/08/2009 12:25 GMT."
+ # Only the title above is available without a subscription to their service,
+@@ -344,67 +307,93 @@
+ # (at least today).
+ 
+ # From Alexander Krivenyshev (2010-07-20):
+-# According to News from Egypt -  Al-Masry Al-Youm Egypt's cabinet has
++# According to News from Egypt - Al-Masry Al-Youm Egypt's cabinet has
+ # decided that Daylight Saving Time will not be used in Egypt during
+ # Ramadan.
+ #
+ # Arabic translation:
+-# "Clocks to go back during Ramadan--and then forward again"
+-# 
++# "Clocks to go back during Ramadan - and then forward again"
+ # http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
+-# 
+ 
+ # From Ahmad El-Dardiry (2014-05-07):
+ # Egypt is to change back to Daylight system on May 15
+ # http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
+ 
+-# From Gunther Vermier (2015-05-13):
++# From Gunther Vermier (2014-05-13):
+ # our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
+ 
+-# From Paul Eggert (2014-05-13):
++# From Imed Chihi (2014-06-04):
++# We have finally "located" a precise official reference about the DST changes
++# in Egypt.  The Ministers Cabinet decision is explained at
++# http://www.cabinet.gov.eg/Media/CabinetMeetingsDetails.aspx?id=347 ...
++# [T]his (Arabic) site is not accessible outside Egypt, but the page ...
++# translates into: "With regard to daylight saving time, it is scheduled to
++# take effect at exactly twelve o'clock this evening, Thursday, 15 MAY 2014,
++# to be suspended by twelve o'clock on the evening of Thursday, 26 JUN 2014,
++# and re-established again at the end of the month of Ramadan, at twelve
++# o'clock on the evening of Thursday, 31 JUL 2014."  This statement has been
++# reproduced by other (more accessible) sites[, e.g.,]...
++# http://elgornal.net/news/news.aspx?id=4699258
++
++# From Paul Eggert (2014-06-04):
+ # Sarah El Deeb and Lee Keath of AP report that the Egyptian government says
+ # the change is because of blackouts in Cairo, even though Ahram Online (cited
+-# above) says DST had no affect on electricity consumption.  The AP story says
+-# DST will not be observed during Ramadan.  There is no information about when
+-# DST will end.  See:
++# above) says DST had no affect on electricity consumption.  There is
++# no information about when DST will end this fall.  See:
+ # http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
+ #
+-# For now, guess that later transitions will use 2010's rules, and that
+-# Egypt will agree with Morocco (see below) about the date Ramadan starts and
+-# ends, though (unlike Morocco) it will switch at 00:00 standard time.  In
+-# Egypt the spring-forward transitions are removed for 2020-2022, when the
+-# guessed spring-forward date falls during the estimated Ramadan, and all
+-# transitions removed for 2023-2038, where the estimated Ramadan falls entirely
+-# outside the guessed daylight-saving time.  Ramadan intrudes on the guessed
+-# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff.
+-
+-Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
+-Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
+-Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
+-Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
+-Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
++# For now, guess that later spring and fall transitions will use
++# 2010's rules, and guess that Egypt will switch to standard time at
++# 24:00 the last Thursday before Ramadan, and back to DST at 00:00 the
++# first Friday after Ramadan.  To implement this,
++# transition dates for 2015 through 2037 were determined by running
++# the following program under GNU Emacs 24.3, with the results integrated
++# by hand into the table below.  Ramadan again intrudes on the guessed
++# DST starting in 2038, but that's beyond our somewhat-arbitrary cutoff.
++# (let ((islamic-year 1436))
++#   (while (< islamic-year 1460)
++#     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
++#           (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
++#           (friday 5))
++#       (while (/= friday (mod a 7))
++#         (setq a (1- a)))
++#       (while (/= friday (mod b 7))
++#         (setq b (1+ b)))
++#       (setq a (1- a))
++#       (setq b (1- b))
++#       (setq a (calendar-gregorian-from-absolute a))
++#       (setq b (calendar-gregorian-from-absolute b))
++#       (insert
++#        (format
++#         (concat "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t0\t-\n"
++#                 "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t1:00\tS\n")
++#         (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
++#         (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
++#     (setq islamic-year (+ 1 islamic-year))))
++Rule	Egypt	2008	only	-	Aug	lastThu	24:00	0	-
++Rule	Egypt	2009	only	-	Aug	20	24:00	0	-
++Rule	Egypt	2010	only	-	Aug	10	24:00	0	-
++Rule	Egypt	2010	only	-	Sep	 9	24:00	1:00	S
++Rule	Egypt	2010	only	-	Sep	lastThu	24:00	0	-
+ Rule	Egypt	2014	only	-	May	15	24:00	1:00	S
+-Rule	Egypt	2014	only	-	Jun	29	 0:00s	0	-
+-Rule	Egypt	2014	only	-	Jul	29	 0:00s	1:00	S
+-Rule	Egypt	2014	max	-	Sep	lastThu	23:00s	0	-
++Rule	Egypt	2014	only	-	Jun	26	24:00	0	-
++Rule	Egypt	2014	only	-	Jul	31	24:00	1:00	S
++Rule	Egypt	2014	max	-	Sep	lastThu	24:00	0	-
+ Rule	Egypt	2015	2019	-	Apr	lastFri	 0:00s	1:00	S
+-Rule	Egypt	2015	only	-	Jun	18	 0:00s	0	-
+-Rule	Egypt	2015	only	-	Jul	18	 0:00s	1:00	S
+-Rule	Egypt	2016	only	-	Jun	 7	 0:00s	0	-
+-Rule	Egypt	2016	only	-	Jul	 7	 0:00s	1:00	S
+-Rule	Egypt	2017	only	-	May	27	 0:00s	0	-
+-Rule	Egypt	2017	only	-	Jun	26	 0:00s	1:00	S
+-Rule	Egypt	2018	only	-	May	16	 0:00s	0	-
+-Rule	Egypt	2018	only	-	Jun	15	 0:00s	1:00	S
+-Rule	Egypt	2019	only	-	May	 6	 0:00s	0	-
+-Rule	Egypt	2019	only	-	Jun	 5	 0:00s	1:00	S
+-Rule	Egypt	2020	only	-	May	24	 0:00s	1:00	S
+-Rule	Egypt	2021	only	-	May	13	 0:00s	1:00	S
+-Rule	Egypt	2022	only	-	May	 3	 0:00s	1:00	S
++Rule	Egypt	2015	only	-	Jun	11	24:00	0	-
++Rule	Egypt	2015	only	-	Jul	23	24:00	1:00	S
++Rule	Egypt	2016	only	-	Jun	 2	24:00	0	-
++Rule	Egypt	2016	only	-	Jul	 7	24:00	1:00	S
++Rule	Egypt	2017	only	-	May	25	24:00	0	-
++Rule	Egypt	2017	only	-	Jun	29	24:00	1:00	S
++Rule	Egypt	2018	only	-	May	10	24:00	0	-
++Rule	Egypt	2018	only	-	Jun	14	24:00	1:00	S
++Rule	Egypt	2019	only	-	May	 2	24:00	0	-
++Rule	Egypt	2019	only	-	Jun	 6	24:00	1:00	S
++Rule	Egypt	2020	only	-	May	28	24:00	1:00	S
++Rule	Egypt	2021	only	-	May	13	24:00	1:00	S
++Rule	Egypt	2022	only	-	May	 5	24:00	1:00	S
+ Rule	Egypt	2023	max	-	Apr	lastFri	 0:00s	1:00	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -412,60 +401,44 @@
+ 			2:00	Egypt	EE%sT
+ 
+ # Equatorial Guinea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Malabo	0:35:08 -	LMT	1912
+-			0:00	-	GMT	1963 Dec 15
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Eritrea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Asmara	2:35:32 -	LMT	1870
+-			2:35:32	-	AMT	1890	      # Asmara Mean Time
+-			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
+-			3:00	-	EAT
+-
+ # Ethiopia
+-# From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
+-# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
+-# We'll guess that 38E50 is for Adis Dera.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Addis_Ababa	2:34:48 -	LMT	1870
+-			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Gabon
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Libreville	0:37:48 -	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Gambia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Banjul	-1:06:36 -	LMT	1912
+-			-1:06:36 -	BMT	1935	# Banjul Mean Time
+-			-1:00	-	WAT	1964
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Ghana
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-# Whitman says DST was observed from 1931 to ``the present'';
+-# go with Shanks & Pottenger.
+-Rule	Ghana	1936	1942	-	Sep	 1	0:00	0:20	GHST
+-Rule	Ghana	1936	1942	-	Dec	31	0:00	0	GMT
++# Whitman says DST was observed from 1931 to "the present";
++# Shanks & Pottenger say 1936 to 1942;
++# and September 1 to January 1 is given by:
++# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book,
++# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii.
++# For lack of better info, assume DST was observed from 1920 to 1942.
++Rule	Ghana	1920	1942	-	Sep	 1	0:00	0:20	GHST
++Rule	Ghana	1920	1942	-	Dec	31	0:00	0	GMT
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Accra	-0:00:52 -	LMT	1918
+ 			 0:00	Ghana	%s
+ 
+ # Guinea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Conakry	-0:54:52 -	LMT	1912
+-			 0:00	-	GMT	1934 Feb 26
+-			-1:00	-	WAT	1960
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Guinea-Bissau
++#
++# Shanks gives 1911-05-26 for the transition to WAT,
++# evidently confusing the date of the Portuguese decree
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# with the date that it took effect, namely 1912-01-01.
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
++Zone	Africa/Bissau	-1:02:20 -	LMT	1912 Jan  1
+ 			-1:00	-	WAT	1975
+ 			 0:00	-	GMT
+ 
+@@ -476,13 +449,18 @@
+ 			2:30	-	BEAT	1940
+ 			2:45	-	BEAUT	1960
+ 			3:00	-	EAT
++Link Africa/Nairobi Africa/Addis_Ababa	 # Ethiopia
++Link Africa/Nairobi Africa/Asmara	 # Eritrea
++Link Africa/Nairobi Africa/Dar_es_Salaam # Tanzania
++Link Africa/Nairobi Africa/Djibouti
++Link Africa/Nairobi Africa/Kampala	 # Uganda
++Link Africa/Nairobi Africa/Mogadishu	 # Somalia
++Link Africa/Nairobi Indian/Antananarivo	 # Madagascar
++Link Africa/Nairobi Indian/Comoro
++Link Africa/Nairobi Indian/Mayotte
+ 
+ # Lesotho
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
+-			2:00	-	SAST	1943 Sep 19 2:00
+-			2:00	1:00	SAST	1944 Mar 19 2:00
+-			2:00	-	SAST
++# See Africa/Johannesburg.
+ 
+ # Liberia
+ # From Paul Eggert (2006-03-22):
+@@ -549,38 +527,22 @@
+ 			2:00	-	EET	1982
+ 			1:00	Libya	CE%sT	1990 May  4
+ # The 1996 and 1997 entries are from Shanks & Pottenger;
+-# the IATA SSIM data contain some obvious errors.
++# the IATA SSIM data entries contain some obvious errors.
+ 			2:00	-	EET	1996 Sep 30
+ 			1:00	Libya	CE%sT	1997 Oct  4
+-			2:00	-	EET	2012 Nov 10 2:00
+-			1:00	Libya	CE%sT	2013 Oct 25 2:00
++			2:00	-	EET	2012 Nov 10  2:00
++			1:00	Libya	CE%sT	2013 Oct 25  2:00
+ 			2:00	-	EET
+ 
+ # Madagascar
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Indian/Antananarivo 3:10:04 -	LMT	1911 Jul
+-			3:00	-	EAT	1954 Feb 27 23:00s
+-			3:00	1:00	EAST	1954 May 29 23:00s
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Malawi
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # Mali
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Bamako	-0:32:00 -	LMT	1912
+-			 0:00	-	GMT	1934 Feb 26
+-			-1:00	-	WAT	1960 Jun 20
+-			 0:00	-	GMT
+-
+ # Mauritania
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
+-			 0:00	-	GMT	1934 Feb 26
+-			-1:00	-	WAT	1960 Nov 28
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Mauritius
+ 
+@@ -604,9 +566,7 @@
+ 
+ # From Steffen Thorsen (2008-07-10):
+ # According to
+-# 
+ # http://www.lexpress.mu/display_article.php?news_id=111216
+-# 
+ # (in French), Mauritius will start and end their DST a few days earlier
+ # than previously announced (2008-11-01 to 2009-03-31).  The new start
+ # date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
+@@ -621,22 +581,17 @@
+ 
+ # From Alex Krivenyshev (2008-07-11):
+ # Seems that English language article "The revival of daylight saving
+-# time:  Energy conservation?"-# No. 16578 (07/11/2008) was originally
++# time: Energy conservation?"-# No. 16578 (07/11/2008) was originally
+ # published on Monday, June 30, 2008...
+ #
+ # I guess that article in French "Le gouvernement avance l'introduction
+-# de l'heure d'ete" stating that DST in Mauritius starting on October 26
+-# and ending on March 27, 2009 is the most recent one.
+-# ...
+-# 
++# de l'heure d'été" stating that DST in Mauritius starting on October 26
++# and ending on March 27, 2009 is the most recent one....
+ # http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html
+-# 
+ 
+ # From Riad M. Hossen Ally (2008-08-03):
+ # The Government of Mauritius weblink
+-# 
+ # http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
+-# 
+ # Cabinet Decision of July 18th, 2008 states as follows:
+ #
+ # 4. ...Cabinet has agreed to the introduction into the National Assembly
+@@ -646,33 +601,25 @@
+ # States of America. It will start at two o'clock in the morning on the
+ # last Sunday of October and will end at two o'clock in the morning on
+ # the last Sunday of March the following year. The summer time for the
+-# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
++# year 2008-2009 will, therefore, be effective as from 26 October 2008
+ # and end on 29 March 2009.
+ 
+ # From Ed Maste (2008-10-07):
+ # THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
+ # beginning / ending of summer time is 2 o'clock standard time in the
+ # morning of the last Sunday of October / last Sunday of March.
+-# 
+ # http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf
+-# 
+ 
+ # From Steffen Thorsen (2009-06-05):
+ # According to several sources, Mauritius will not continue to observe
+ # DST the coming summer...
+ #
+ # Some sources, in French:
+-# 
+ # http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB
+-# 
+-# 
+ # http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-
+-# 
+ #
+ # Our wrap-up:
+-# 
+ # http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html
+-# 
+ 
+ # From Arthur David Olson (2009-07-11):
+ # The "mauritius-dst-will-not-repeat" wrapup includes this:
+@@ -685,18 +632,16 @@
+ Rule Mauritius	2008	only	-	Oct	lastSun	2:00	1:00	S
+ Rule Mauritius	2009	only	-	Mar	lastSun	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Indian/Mauritius	3:50:00 -	LMT	1907		# Port Louis
++Zone Indian/Mauritius	3:50:00 -	LMT	1907 # Port Louis
+ 			4:00 Mauritius	MU%sT	# Mauritius Time
+ # Agalega Is, Rodriguez
+ # no information; probably like Indian/Mauritius
+ 
+ # Mayotte
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Morocco
+-# See the `europe' file for Spanish Morocco (Africa/Ceuta).
++# See the 'europe' file for Spanish Morocco (Africa/Ceuta).
+ 
+ # From Alex Krivenyshev (2008-05-09):
+ # Here is an article that Morocco plan to introduce Daylight Saving Time between
+@@ -704,60 +649,44 @@
+ #
+ # "... Morocco is to save energy by adjusting its clock during summer so it will
+ # be one hour ahead of GMT between 1 June and 27 September, according to
+-# Communication Minister and Gov ernment Spokesman, Khalid Naciri...."
++# Communication Minister and Government Spokesman, Khalid Naciri...."
+ #
+-# 
+ # http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
+-# 
+-# OR
+-# 
+ # http://en.afrik.com/news11892.html
+-# 
+ 
+ # From Alex Krivenyshev (2008-05-09):
+-# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:
+-# 
++# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe
++# Presse:
+ # http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
+-# 
+ #
+ # Morocco shifts to daylight time on June 1st through September 27, Govt.
+ # spokesman.
+ 
+ # From Patrice Scattolin (2008-05-09):
+ # According to this article:
+-# 
+ # http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
+-# 
+-# (and republished here:
+-# 
+-# http://www.actu.ma/heure-dete-comment_i127896_0.html
+-# 
+-# )
+-# the changes occurs at midnight:
++# (and republished here: )
++# the changes occur at midnight:
+ #
+-# saturday night may 31st at midnight (which in french is to be
+-# intrepreted as the night between saturday and sunday)
+-# sunday night the 28th  at midnight
++# Saturday night May 31st at midnight (which in French is to be
++# interpreted as the night between Saturday and Sunday)
++# Sunday night the 28th at midnight
+ #
+-# Seeing that the 28th is monday, I am guessing that she intends to say
+-# the midnight of the 28th which is the midnight between sunday and
+-# monday, which jives with other sources that say that it's inclusive
+-# june1st to sept 27th.
++# Seeing that the 28th is Monday, I am guessing that she intends to say
++# the midnight of the 28th which is the midnight between Sunday and
++# Monday, which jives with other sources that say that it's inclusive
++# June 1st to Sept 27th.
+ #
+ # The decision was taken by decree *2-08-224 *but I can't find the decree
+ # published on the web.
+ #
+ # It's also confirmed here:
+-# 
+ # http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
+-# 
+-# on a government portal as being  between june 1st and sept 27th (not yet
+-# posted in english).
++# on a government portal as being between June 1st and Sept 27th (not yet
++# posted in English).
+ #
+-# The following google query will generate many relevant hits:
+-# 
++# The following Google query will generate many relevant hits:
+ # http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
+-# 
+ 
+ # From Steffen Thorsen (2008-08-27):
+ # Morocco will change the clocks back on the midnight between August 31
+@@ -765,47 +694,32 @@
+ # of September:
+ #
+ # One article about it (in French):
+-# 
+ # http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
+-# 
+ #
+ # We have some further details posted here:
+-# 
+ # http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
+-# 
+ 
+ # From Steffen Thorsen (2009-03-17):
+ # Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according
+ # to many sources, such as
+-# 
+ # http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html
+-# 
+-# 
+ # http://www.medi1sat.ma/fr/depeche.aspx?idp=2312
+-# 
+ # (French)
+ #
+ # Our summary:
+-# 
+ # http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-03-17):
+ # Here is a link to official document from Royaume du Maroc Premier Ministre,
+-# Ministere de la Modernisation des Secteurs Publics
++# Ministère de la Modernisation des Secteurs Publics
+ #
+ # Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 june 1967)
+ # concerning the amendment of the legal time, the Ministry of Modernization of
+ # Public Sectors announced that the official time in the Kingdom will be
+ # advanced 60 minutes from Sunday 31 May 2009 at midnight.
+ #
+-# 
+ # http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf
+-# 
+-#
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_morocco03.html
+-# 
+ 
+ # From Steffen Thorsen (2010-04-13):
+ # Several news media in Morocco report that the Ministry of Modernization
+@@ -813,51 +727,33 @@
+ # 2010-05-02 to 2010-08-08.
+ #
+ # Example:
+-# 
+ # http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html
+-# 
+ # (French)
+ # Our page:
+-# 
+ # http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html
+-# 
+ 
+ # From Dan Abitol (2011-03-30):
+ # ...Rules for Africa/Casablanca are the following (24h format)
+-# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00
+-# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00
++# The 3rd April 2011 at 00:00:00, [it] will be 3rd April 01:00:00
++# The 31st July 2011 at 00:59:59, [it] will be 31st July 00:00:00
+ # ...Official links of change in morocco
+ # The change was broadcast on the FM Radio
+ # I ve called ANRT (telecom regulations in Morocco) at
+ # +212.537.71.84.00
+-# 
+ # http://www.anrt.net.ma/fr/
+-# 
+ # They said that
+-# 
+ # http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
+-# 
+ # is the official publication to look at.
+ # They said that the decision was already taken.
+ #
+ # More articles in the press
+-# 
+-# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev
+-# 
+-# e.html
+-# 
++# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-leve.html
+ # http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
+-# 
+-# 
+ # http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim
+-# anche-prochain-5538.html
+-# 
+ 
+ # From Petr Machata (2011-03-30):
+ # They have it written in English here:
+-# 
+ # http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
+-# 
+ #
+ # It says there that "Morocco will resume its standard time on July 31,
+ # 2011 at midnight." Now they don't say whether they mean midnight of
+@@ -865,20 +761,16 @@
+ # also been like that in the past.
+ 
+ # From Alexander Krivenyshev (2012-03-09):
+-# According to Infomédiaire web site from Morocco (infomediaire.ma),
+-# on March 9, 2012, (in French) Heure légale:
+-# Le Maroc adopte officiellement l'heure d'été
+-# 
++# According to Infomédiaire web site from Morocco (infomediaire.ma),
++# on March 9, 2012, (in French) Heure légale:
++# Le Maroc adopte officiellement l'heure d'été
+ # http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
+-# 
+ # Governing Council adopted draft decree, that Morocco DST starts on
+ # the last Sunday of March (March 25, 2012) and ends on
+ # last Sunday of September (September 30, 2012)
+ # except the month of Ramadan.
+ # or (brief)
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_morocco06.html
+-# 
+ 
+ # From Arthur David Olson (2012-03-10):
+ # The infomediaire.ma source indicates that the system is to be in
+@@ -889,17 +781,13 @@
+ 
+ # From Christophe Tropamer (2012-03-16):
+ # Seen Morocco change again:
+-# 
+ # http://www.le2uminutes.com/actualite.php
+-# 
+-# "...à partir du dernier dimance d'avril et non fins mars,
+-# comme annoncé précédemment."
++# "...à partir du dernier dimanche d'avril et non fins mars,
++# comme annoncé précédemment."
+ 
+ # From Milamber Space Network (2012-07-17):
+ # The official return to GMT is announced by the Moroccan government:
+-# 
+ # http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
+-# 
+ #
+ # Google translation, lightly edited:
+ # Back to the standard time of the Kingdom (GMT)
+@@ -917,7 +805,7 @@
+ # announced a bit in advance.  On 2012-07-11 the Moroccan government
+ # announced that year's Ramadan daylight-saving transitions would be
+ # 2012-07-20 and 2012-08-20; see
+-# .
++# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288
+ 
+ # From Andrew Paprocki (2013-07-02):
+ # Morocco announced that the year's Ramadan daylight-savings
+@@ -937,39 +825,36 @@
+ # From Sebastien Willemijns (2014-03-18):
+ # http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp
+ 
+-# From Paul Eggert (2014-03-19):
+-# To estimate what the Moroccan government will do in future years,
+-# transition dates for 2014 through 2038 were determined by running
+-# the following program under GNU Emacs 24.3:
+-#
+-# (let ((islamic-year 1435))
+-#   (while (< islamic-year 1461)
+-#     (let ((a
+-#	     (calendar-gregorian-from-absolute
+-#	      (calendar-islamic-to-absolute (list 9 1 islamic-year))))
+-#	    (b
+-#	     (calendar-gregorian-from-absolute
+-#	      (calendar-islamic-to-absolute (list 10 1 islamic-year)))))
+-#	(insert
+-#	 (format
+-#	  (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 3:00\t0\t-\n"
+-#		  "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 2:00\t1:00\tS\n")
+-#	  (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
+-#	  (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
++# From Milamber Space Network (2014-06-05):
++# The Moroccan government has recently announced that the country will return
++# to standard time at 03:00 on Saturday, June 28, 2014 local time....  DST
++# will resume again at 02:00 on Saturday, August 2, 2014....
++# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
++
++# From Paul Eggert (2014-06-05):
++# For now, guess that later spring and fall transitions will use 2014's rules,
++# and guess that Morocco will switch to standard time at 03:00 the last
++# Saturday before Ramadan, and back to DST at 02:00 the first Saturday after
++# Ramadan.  To implement this, transition dates for 2015 through 2037 were
++# determined by running the following program under GNU Emacs 24.3, with the
++# results integrated by hand into the table below.
++# (let ((islamic-year 1436))
++#   (while (< islamic-year 1460)
++#     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
++#           (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
++#           (saturday 6))
++#       (while (/= saturday (mod (setq a (1- a)) 7)))
++#       (while (/= saturday (mod b 7))
++#         (setq b (1+ b)))
++#       (setq a (calendar-gregorian-from-absolute a))
++#       (setq b (calendar-gregorian-from-absolute b))
++#       (insert
++#        (format
++#         (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t0\t-\n"
++#                 "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t1:00\tS\n")
++#         (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
++#         (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+ #     (setq islamic-year (+ 1 islamic-year))))
+-#
+-# with spring-forward transitions removed for 2023-2025, when the
+-# normal spring-forward date falls during the estimated Ramadan; with
+-# all transitions removed for 2026-2035, where the estimated Ramadan
+-# falls entirely outside daylight-saving time; and with fall-back
+-# transitions removed for 2036-2037, where the normal fall-back
+-# date falls during the estimated Ramadan.  Normally, the table would
+-# stop after 2037 because 32-bit time_t values roll around early in 2038,
+-# but that would imply a prediction of perpetual DST after March 2038
+-# due to the year-2037 glitches.  So, this table instead stops after
+-# 2038, the first non-glitchy year after the 32-bit rollover.
+-# An advantage of stopping after 2038 is that it lets zic guess
+-# TZ='WET0WEST,M3.5.0,M10.5.0/3' for time stamps far in the future.
+ 
+ # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ 
+@@ -991,46 +876,44 @@
+ Rule	Morocco	2008	only	-	Jun	 1	 0:00	1:00	S
+ Rule	Morocco	2008	only	-	Sep	 1	 0:00	0	-
+ Rule	Morocco	2009	only	-	Jun	 1	 0:00	1:00	S
+-Rule	Morocco	2009	only	-	Aug	 21	 0:00	0	-
++Rule	Morocco	2009	only	-	Aug	21	 0:00	0	-
+ Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
+ Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
+ Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
+-Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+-Rule	Morocco	2012	2013	-	Apr	 lastSun 2:00	1:00	S
+-Rule	Morocco	2012	only	-	Sep	 30	 3:00	0	-
+-Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
+-Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
+-Rule	Morocco	2013	only	-	Jul	  7	 3:00	0	-
+-Rule	Morocco	2013	only	-	Aug	 10	 2:00	1:00	S
+-Rule	Morocco	2013	2035	-	Oct	 lastSun 3:00	0	-
+-Rule	Morocco	2014	2022	-	Mar	 lastSun 2:00	1:00	S
+-Rule	Morocco	2014	only	-	Jun	 29	 3:00	0	-
+-Rule	Morocco	2014	only	-	Jul	 29	 2:00	1:00	S
+-Rule	Morocco	2015	only	-	Jun	 18	 3:00	0	-
+-Rule	Morocco	2015	only	-	Jul	 18	 2:00	1:00	S
+-Rule	Morocco	2016	only	-	Jun	  7	 3:00	0	-
+-Rule	Morocco	2016	only	-	Jul	  7	 2:00	1:00	S
+-Rule	Morocco	2017	only	-	May	 27	 3:00	0	-
+-Rule	Morocco	2017	only	-	Jun	 26	 2:00	1:00	S
+-Rule	Morocco	2018	only	-	May	 16	 3:00	0	-
+-Rule	Morocco	2018	only	-	Jun	 15	 2:00	1:00	S
+-Rule	Morocco	2019	only	-	May	  6	 3:00	0	-
+-Rule	Morocco	2019	only	-	Jun	  5	 2:00	1:00	S
+-Rule	Morocco	2020	only	-	Apr	 24	 3:00	0	-
+-Rule	Morocco	2020	only	-	May	 24	 2:00	1:00	S
+-Rule	Morocco	2021	only	-	Apr	 13	 3:00	0	-
+-Rule	Morocco	2021	only	-	May	 13	 2:00	1:00	S
+-Rule	Morocco	2022	only	-	Apr	  3	 3:00	0	-
+-Rule	Morocco	2022	only	-	May	  3	 2:00	1:00	S
+-Rule	Morocco	2023	only	-	Apr	 22	 2:00	1:00	S
+-Rule	Morocco	2024	only	-	Apr	 10	 2:00	1:00	S
+-Rule	Morocco	2025	only	-	Mar	 31	 2:00	1:00	S
+-Rule	Morocco	2026	max	-	Mar	 lastSun 2:00	1:00	S
+-Rule	Morocco	2036	only	-	Oct	 21	 3:00	0	-
+-Rule	Morocco	2037	only	-	Oct	 11	 3:00	0	-
+-Rule	Morocco	2038	only	-	Sep	 30	 3:00	0	-
+-Rule	Morocco	2038	only	-	Oct	 30	 2:00	1:00	S
+-Rule	Morocco	2038	max	-	Oct	 lastSun 3:00	0	-
++Rule	Morocco	2011	only	-	Jul	31	 0	0	-
++Rule	Morocco	2012	2013	-	Apr	lastSun	 2:00	1:00	S
++Rule	Morocco	2012	only	-	Sep	30	 3:00	0	-
++Rule	Morocco	2012	only	-	Jul	20	 3:00	0	-
++Rule	Morocco	2012	only	-	Aug	20	 2:00	1:00	S
++Rule	Morocco	2013	only	-	Jul	 7	 3:00	0	-
++Rule	Morocco	2013	only	-	Aug	10	 2:00	1:00	S
++Rule	Morocco	2013	max	-	Oct	lastSun	 3:00	0	-
++Rule	Morocco	2014	2022	-	Mar	lastSun	 2:00	1:00	S
++Rule	Morocco	2014	only	-	Jun	28	 3:00	0	-
++Rule	Morocco	2014	only	-	Aug	 2	 2:00	1:00	S
++Rule	Morocco	2015	only	-	Jun	13	 3:00	0	-
++Rule	Morocco	2015	only	-	Jul	18	 2:00	1:00	S
++Rule	Morocco	2016	only	-	Jun	 4	 3:00	0	-
++Rule	Morocco	2016	only	-	Jul	 9	 2:00	1:00	S
++Rule	Morocco	2017	only	-	May	20	 3:00	0	-
++Rule	Morocco	2017	only	-	Jul	 1	 2:00	1:00	S
++Rule	Morocco	2018	only	-	May	12	 3:00	0	-
++Rule	Morocco	2018	only	-	Jun	16	 2:00	1:00	S
++Rule	Morocco	2019	only	-	May	 4	 3:00	0	-
++Rule	Morocco	2019	only	-	Jun	 8	 2:00	1:00	S
++Rule	Morocco	2020	only	-	Apr	18	 3:00	0	-
++Rule	Morocco	2020	only	-	May	30	 2:00	1:00	S
++Rule	Morocco	2021	only	-	Apr	10	 3:00	0	-
++Rule	Morocco	2021	only	-	May	15	 2:00	1:00	S
++Rule	Morocco	2022	only	-	Apr	 2	 3:00	0	-
++Rule	Morocco	2022	only	-	May	 7	 2:00	1:00	S
++Rule	Morocco	2023	only	-	Apr	22	 2:00	1:00	S
++Rule	Morocco	2024	only	-	Apr	13	 2:00	1:00	S
++Rule	Morocco	2025	only	-	Apr	 5	 2:00	1:00	S
++Rule	Morocco	2026	max	-	Mar	lastSun	 2:00	1:00	S
++Rule	Morocco	2035	only	-	Oct	27	 3:00	0	-
++Rule	Morocco	2036	only	-	Oct	18	 3:00	0	-
++Rule	Morocco	2037	only	-	Oct	10	 3:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+@@ -1049,21 +932,34 @@
+ # Assume that this has been true since Western Sahara switched to GMT,
+ # since most of it was then controlled by Morocco.
+ 
+-Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
++Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan # El Aaiún
+ 			-1:00	-	WAT	1976 Apr 14
+ 			 0:00	Morocco	WE%sT
+ 
+ # Mozambique
++#
++# Shanks gives 1903-03-01 for the transition to CAT.
++# Perhaps the 1911-05-26 Portuguese decree
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# merely made it official?
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
+ 			2:00	-	CAT
++Link Africa/Maputo Africa/Blantyre	# Malawi
++Link Africa/Maputo Africa/Bujumbura	# Burundi
++Link Africa/Maputo Africa/Gaborone	# Botswana
++Link Africa/Maputo Africa/Harare	# Zimbabwe
++Link Africa/Maputo Africa/Kigali	# Rwanda
++Link Africa/Maputo Africa/Lubumbashi	# E Dem. Rep. of Congo
++Link Africa/Maputo Africa/Lusaka	# Zambia
+ 
+ # Namibia
+ # The 1994-04-03 transition is from Shanks & Pottenger.
+ # Shanks & Pottenger report no DST after 1998-04; go with IATA.
+ 
+-# From Petronella Sibeene (2007-03-30) in
+-# :
++# From Petronella Sibeene (2007-03-30):
++# http://allafrica.com/stories/200703300178.html
+ # While the entire country changes its time, Katima Mulilo and other
+ # settlements in Caprivi unofficially will not because the sun there
+ # rises and sets earlier compared to other regions.  Chief of
+@@ -1080,34 +976,41 @@
+ Rule	Namibia	1995	max	-	Apr	Sun>=1	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
+-			1:30	-	SWAT	1903 Mar	# SW Africa Time
+-			2:00	-	SAST	1942 Sep 20 2:00
+-			2:00	1:00	SAST	1943 Mar 21 2:00
++			1:30	-	SWAT	1903 Mar    # SW Africa Time
++			2:00	-	SAST	1942 Sep 20  2:00
++			2:00	1:00	SAST	1943 Mar 21  2:00
+ 			2:00	-	SAST	1990 Mar 21 # independence
+ 			2:00	-	CAT	1994 Apr  3
+ 			1:00	Namibia	WA%sT
+ 
+ # Niger
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Niamey	 0:08:28 -	LMT	1912
+-			-1:00	-	WAT	1934 Feb 26
+-			 0:00	-	GMT	1960
+-			 1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Nigeria
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
+ 			1:00	-	WAT
++Link Africa/Lagos Africa/Bangui	     # Central African Republic
++Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
++Link Africa/Lagos Africa/Douala	     # Cameroon
++Link Africa/Lagos Africa/Kinshasa    # Dem. Rep. of the Congo (west)
++Link Africa/Lagos Africa/Libreville  # Gabon
++Link Africa/Lagos Africa/Luanda	     # Angola
++Link Africa/Lagos Africa/Malabo	     # Equatorial Guinea
++Link Africa/Lagos Africa/Niamey	     # Niger
++Link Africa/Lagos Africa/Porto-Novo  # Benin
+ 
+-# Reunion
++# Réunion
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun	# Saint-Denis
+-			4:00	-	RET	# Reunion Time
++Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun # Saint-Denis
++			4:00	-	RET	# Réunion Time
+ #
+-# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
++# Crozet Islands also observes Réunion time; see the 'antarctica' file.
++#
++# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
+ # The following information about them is taken from
+-# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
+-# no longer available as of 1999-08-17).
++# Îles Éparses (, 1997-07-22,
++# in French; no longer available as of 1999-08-17).
+ # We have no info about their time zone histories.
+ #
+ # Bassas da India - uninhabited
+@@ -1117,37 +1020,24 @@
+ # Tromelin - inhabited until at least 1958
+ 
+ # Rwanda
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # St Helena
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/St_Helena	-0:22:48 -	LMT	1890		# Jamestown
+-			-0:22:48 -	JMT	1951	# Jamestown Mean Time
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ # The other parts of the St Helena territory are similar:
+ #	Tristan da Cunha: on GMT, say Whitman and the CIA
+-#	Ascension: on GMT, says usno1995 and the CIA
++#	Ascension: on GMT, say the USNO (1995-12-21) and the CIA
+ #	Gough (scientific station since 1955; sealers wintered previously):
+ #		on GMT, says the CIA
+-#	Inaccessible, Nightingale: no information, but probably GMT
++#	Inaccessible, Nightingale: uninhabited
+ 
+-# Sao Tome and Principe
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Sao_Tome	 0:26:56 -	LMT	1884
+-			-0:36:32 -	LMT	1912	# Lisbon Mean Time
+-			 0:00	-	GMT
+-
++# São Tomé and Príncipe
+ # Senegal
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Dakar	-1:09:44 -	LMT	1912
+-			-1:00	-	WAT	1941 Jun
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Seychelles
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun	# Victoria
++Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun # Victoria
+ 			4:00	-	SCT	# Seychelles Time
+ # From Paul Eggert (2001-05-30):
+ # Aldabra, Farquhar, and Desroches, originally dependencies of the
+@@ -1157,24 +1047,10 @@
+ # Possibly the islands were uninhabited.
+ 
+ # Sierra Leone
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
+-Rule	SL	1935	1942	-	Jun	 1	0:00	0:40	SLST
+-Rule	SL	1935	1942	-	Oct	 1	0:00	0	WAT
+-Rule	SL	1957	1962	-	Jun	 1	0:00	1:00	SLST
+-Rule	SL	1957	1962	-	Sep	 1	0:00	0	GMT
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Freetown	-0:53:00 -	LMT	1882
+-			-0:53:00 -	FMT	1913 Jun # Freetown Mean Time
+-			-1:00	SL	%s	1957
+-			 0:00	SL	%s
++# See Africa/Abidjan.
+ 
+ # Somalia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Mogadishu	3:01:28 -	LMT	1893 Nov
+-			3:00	-	EAT	1931
+-			2:30	-	BEAT	1957
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # South Africa
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1184,15 +1060,18 @@
+ Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
+ 			1:30	-	SAST	1903 Mar
+ 			2:00	SA	SAST
++Link Africa/Johannesburg Africa/Maseru	   # Lesotho
++Link Africa/Johannesburg Africa/Mbabane    # Swaziland
++#
+ # Marion and Prince Edward Is
+ # scientific station since 1947
+ # no information
+ 
+ # Sudan
+ #
+-# From 
+-# Sudan News Agency (2000-01-13)
+-# , also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
++# From 
++# Sudan News Agency (2000-01-13),
++# also reported by Michaël De Beukelaer-Dossche via Steffen Thorsen:
+ # Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
+ # Saturday....  This was announced Thursday by Caretaker State Minister for
+ # Manpower Abdul-Rahman Nur-Eddin.
+@@ -1211,26 +1090,18 @@
+ Link Africa/Khartoum Africa/Juba
+ 
+ # Swaziland
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
+-			2:00	-	SAST
++# See Africa/Johannesburg.
+ 
+ # Tanzania
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
+-			3:00	-	EAT	1948
+-			2:45	-	BEAUT	1961
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Togo
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Lome	0:04:52 -	LMT	1893
+-			0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Tunisia
+ 
+ # From Gwillim Law (2005-04-30):
+-# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
++# My correspondent, Risto Nykänen, has alerted me to another adoption of DST,
+ # this time in Tunisia.  According to Yahoo France News
+ # , in a story attributed to AP
+ # and dated 2005-04-26, "Tunisia has decided to advance its official time by
+@@ -1239,8 +1110,8 @@
+ # Saturday."  (My translation)
+ #
+ # From Oscar van Vlijmen (2005-05-02):
+-# LaPresse, the first national daily newspaper ...
+-# 
++# La Presse, the first national daily newspaper ...
++# http://www.lapresse.tn/archives/archives280405/actualites/lheure.html
+ # ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
+ # 1h standard time.
+ #
+@@ -1253,18 +1124,12 @@
+ # From Steffen Thorsen (2009-03-16):
+ # According to several news sources, Tunisia will not observe DST this year.
+ # (Arabic)
+-# 
+ # http://www.elbashayer.com/?page=viewn&nid=42546
+-# 
+-# 
+ # http://www.babnet.net/kiwidetail-15295.asp
+-# 
+ #
+ # We have also confirmed this with the US embassy in Tunisia.
+ # We have a wrap-up about this on the following page:
+-# 
+ # http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-03-17):
+ # Here is a link to Tunis Afrique Presse News Agency
+@@ -1272,20 +1137,17 @@
+ # Standard time to be kept the whole year long (tap.info.tn):
+ #
+ # (in English)
+-# 
+ # http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157
+-# 
+ #
+ # (in Arabic)
+-# 
+ # http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1
+-# 
+ 
+-# From Arthur David Olson (2009--3-18):
+-# The Tunis Afrique Presse News Agency notice contains this: "This measure is due to the fact
+-# that the fasting month of ramadan coincides with the period concerned by summer time.
+-# Therefore, the standard time will be kept unchanged the whole year long."
+-# So foregoing DST seems to be an exception (albeit one that may be repeated in the  future).
++# From Arthur David Olson (2009-03-18):
++# The Tunis Afrique Presse News Agency notice contains this: "This measure is
++# due to the fact that the fasting month of Ramadan coincides with the period
++# concerned by summer time.  Therefore, the standard time will be kept
++# unchanged the whole year long."  So foregoing DST seems to be an exception
++# (albeit one that may be repeated in the future).
+ 
+ # From Alexander Krivenyshev (2010-03-27):
+ # According to some news reports Tunis confirmed not to use DST in 2010
+@@ -1297,12 +1159,8 @@
+ # coincided with the month of Ramadan..."
+ #
+ # (in Arabic)
+-# 
+ # http://www.moheet.com/show_news.aspx?nid=358861&pg=1
+-# 
+ # http://www.almadenahnews.com/newss/news.php?c=118&id=38036
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1337,23 +1195,12 @@
+ # Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
+-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
++			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
+ 			1:00	Tunisia	CE%sT
+ 
+ # Uganda
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
+-			3:00	-	EAT	1930
+-			2:30	-	BEAT	1948
+-			2:45	-	BEAUT	1957
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Zambia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
+-			2:00	-	CAT
+-
+ # Zimbabwe
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
+-			2:00	-	CAT
++# See Africa/Maputo.
+--- ./jdk/make/data/tzdata/antarctica	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/antarctica	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,19 +21,16 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+ # From Paul Eggert (1999-11-15):
+ # To keep things manageable, we list only locations occupied year-round; see
+-# 
+ # COMNAP - Stations and Bases
+-# 
++# http://www.comnap.aq/comnap/comnap.nsf/P/Stations/
+ # and
+-# 
+ # Summary of the Peri-Antarctic Islands (1998-07-23)
+-# 
++# http://www.spri.cam.ac.uk/bob/periant.htm
+ # for information.
+ # Unless otherwise specified, we have no time zone information.
+ #
+@@ -78,19 +75,19 @@
+ 
+ # Argentina - year-round bases
+ # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+-# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
+-# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
+-# Marambio, Seymour I, -6414-05637, since 1969-10-29
++# Carlini, Potter Cove, King George Island, -6414-0602320, since 1982-01
++# Esperanza, Hope Bay, -6323-05659, since 1952-12-17
++# Marambio, -6414-05637, since 1969-10-29
+ # Orcadas, Laurie I, -6016-04444, since 1904-02-22
+-# San Martin, Debenham I, -6807-06708, since 1951-03-21
++# San Martín, Barry I, -6808-06706, since 1951-03-21
+ #	(except 1960-03 / 1976-03-21)
+ 
+ # Australia - territories
+ # Heard Island, McDonald Islands (uninhabited)
+ #	previously sealers and scientific personnel wintered
+-#	
+ #	Margaret Turner reports
+-#	 (1999-09-30) that they're UTC+5, with no DST;
++#	http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html
++#	(1999-09-30) that they're UTC+5, with no DST;
+ #	presumably this is when they have visitors.
+ #
+ # year-round bases
+@@ -107,14 +104,10 @@
+ # The changes occurred on 2009-10-18 at 02:00 (local times).
+ #
+ # Government source: (Australian Antarctic Division)
+-# 
+ # http://www.aad.gov.au/default.asp?casid=37079
+-# 
+ #
+ # We have more background information here:
+-# 
+ # http://www.timeanddate.com/news/time/antarctica-new-times.html
+-# 
+ 
+ # From Steffen Thorsen (2010-03-10):
+ # We got these changes from the Australian Antarctic Division: ...
+@@ -129,50 +122,49 @@
+ # - Mawson station stays on UTC+5.
+ #
+ # Background:
+-# 
+ # http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
+-# 
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Casey	0	-	zzz	1969
+-			8:00	-	WST	2009 Oct 18 2:00
+-						# Western (Aus) Standard Time
+-			11:00	-	CAST	2010 Mar 5 2:00
+-						# Casey Time
+-			8:00	-	WST	2011 Oct 28 2:00
++			8:00	-	AWST	2009 Oct 18  2:00
++						# Australian Western Std Time
++			11:00	-	CAST	2010 Mar  5  2:00  # Casey Time
++			8:00	-	AWST	2011 Oct 28  2:00
+ 			11:00	-	CAST	2012 Feb 21 17:00u
+-			8:00	-	WST
++			8:00	-	AWST
+ Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
+-			7:00	-	DAVT	1964 Nov # Davis Time
++			7:00	-	DAVT	1964 Nov    # Davis Time
+ 			0	-	zzz	1969 Feb
+-			7:00	-	DAVT	2009 Oct 18 2:00
++			7:00	-	DAVT	2009 Oct 18  2:00
+ 			5:00	-	DAVT	2010 Mar 10 20:00u
+-			7:00	-	DAVT	2011 Oct 28 2:00
++			7:00	-	DAVT	2011 Oct 28  2:00
+ 			5:00	-	DAVT	2012 Feb 21 20:00u
+ 			7:00	-	DAVT
+ Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
+-			6:00	-	MAWT	2009 Oct 18 2:00
+-						# Mawson Time
++			6:00	-	MAWT	2009 Oct 18  2:00 # Mawson Time
+ 			5:00	-	MAWT
+ # References:
+-# 
+ # Casey Weather (1998-02-26)
+-# 
+-# 
++# http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html
+ # Davis Station, Antarctica (1998-02-26)
+-# 
+-# 
++# http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html
+ # Mawson Station, Antarctica (1998-02-25)
+-# 
++# http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html
++
++# Belgium - year-round base
++# Princess Elisabeth, Queen Maud Land, -713412+0231200, since 2007
+ 
+ # Brazil - year-round base
+-# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
++# Ferraz, King George Island, -6205+05824, since 1983/4
++
++# Bulgaria - year-round base
++# St. Kliment Ohridski, Livingston Island, -623829-0602153, since 1988
+ 
+ # Chile - year-round bases and towns
+ # Escudero, South Shetland Is, -621157-0585735, since 1994
+-# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
+-# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
+-# Capitan Arturo Prat, -6230-05941
++# Frei Montalva, King George Island, -6214-05848, since 1969-03-07
++# O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
++# Prat, -6230-05941
+ # Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
+ # These locations have always used Santiago time; use TZ='America/Santiago'.
+ 
+@@ -180,31 +172,35 @@
+ # Great Wall, King George Island, -6213-05858, since 1985-02-20
+ # Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
+ 
+-# France - year-round bases
++# France - year-round bases (also see "France & Italy")
+ #
+ # From Antoine Leca (1997-01-20):
+-# Time data are from Nicole Pailleau at the IFRTP
++# Time data entries are from Nicole Pailleau at the IFRTP
+ # (French Institute for Polar Research and Technology).
+-# She confirms that French Southern Territories and Terre Adelie bases
+-# don't observe daylight saving time, even if Terre Adelie supplies came
++# She confirms that French Southern Territories and Terre Adélie bases
++# don't observe daylight saving time, even if Terre Adélie supplies came
+ # from Tasmania.
+ #
+ # French Southern Territories with year-round inhabitants
+ #
+-# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
+-# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
+-# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
++# Alfred Faure, Possession Island, Crozet Islands, -462551+0515152, since 1964;
++#	sealing & whaling stations operated variously 1802/1911+;
++#	see Indian/Reunion.
++#
++# Martin-de-Viviès, Amsterdam Island, -374105+0773155, since 1950
++# Port-aux-Français, Kerguelen Islands, -492110+0701303, since 1951;
+ #	whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
+ #
+ # St Paul Island - near Amsterdam, uninhabited
+ #	fishing stations operated variously 1819/1931
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Indian/Kerguelen	0	-	zzz	1950	# Port-aux-Francais
++Zone Indian/Kerguelen	0	-	zzz	1950 # Port-aux-Français
+ 			5:00	-	TFT	# ISO code TF Time
+ #
+ # year-round base in the main continent
+-# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
++# Dumont d'Urville, Île des Pétrels, -6640+14001, since 1956-11
++#  (2005-12-05)
+ #
+ # Another base at Port-Martin, 50km east, began operation in 1947.
+ # It was destroyed by fire on 1952-01-14.
+@@ -214,20 +210,22 @@
+ 			10:00	-	PMT	1952 Jan 14 # Port-Martin Time
+ 			0	-	zzz	1956 Nov
+ 			10:00	-	DDUT	# Dumont-d'Urville Time
+-# Reference:
+-# 
+-# Dumont d'Urville Station (2005-12-05)
+-# 
++
++# France & Italy - year-round base
++# Concordia, -750600+1232000, since 2005
+ 
+ # Germany - year-round base
+-# Georg von Neumayer, -7039-00815
++# Neumayer III, -704080-0081602, since 2009
+ 
+-# India - year-round base
+-# Dakshin Gangotri, -7005+01200
++# India - year-round bases
++# Bharati, -692428+0761114, since 2012
++# Maitri, -704558+0114356, since 1989
++
++# Italy - year-round base (also see "France & Italy")
++# Zuchelli, Terra Nova Bay, -744140+1640647, since 1986
+ 
+ # Japan - year-round bases
+-# Dome Fuji, -7719+03942
+-# Syowa, -690022+0393524
++# Syowa (also known as Showa), -690022+0393524, since 1957
+ #
+ # From Hideyuki Suzuki (1999-02-06):
+ # In all Japanese stations, +0300 is used as the standard time.
+@@ -239,11 +237,11 @@
+ Zone Antarctica/Syowa	0	-	zzz	1957 Jan 29
+ 			3:00	-	SYOT	# Syowa Time
+ # See:
+-# 
+ # NIPR Antarctic Research Activities (1999-08-17)
+-# 
++# http://www.nipr.ac.jp/english/ara01.html
+ 
+ # S Korea - year-round base
++# Jang Bogo, Terra Nova Bay, -743700+1641205 since 2014
+ # King Sejong, King George Island, -6213-05847, since 1988
+ 
+ # New Zealand - claims
+@@ -287,11 +285,14 @@
+ Rule	Troll	2004	max	-	Oct	lastSun	1:00u	0:00	UTC
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Troll	0	-	zzz	2005 Feb 12
+-     			0:00	Troll	%s
++			0:00	Troll	%s
+ 
+ # Poland - year-round base
+ # Arctowski, King George Island, -620945-0582745, since 1977
+ 
++# Romania - year-bound base
++# Law-Racoviță, Larsemann Hills, -692319+0762251, since 1986
++
+ # Russia - year-round bases
+ # Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
+ # Mirny, Davis coast, -6633+09301, since 1956-02
+@@ -301,8 +302,8 @@
+ #	year-round from 1960/61 to 1992
+ 
+ # Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
+-# 
+-# From Craig Mundell (1994-12-15):
++# From Craig Mundell (1994-12-15):
++# http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP
+ # Vostok, which is one of the Russian stations, is set on the same
+ # time as Moscow, Russia.
+ #
+@@ -317,7 +318,7 @@
+ #
+ # From Paul Eggert (2001-05-04):
+ # This seems to be hopelessly confusing, so I asked Lee Hotz about it
+-# in person.  He said that some Antartic locations set their local
++# in person.  He said that some Antarctic locations set their local
+ # time so that noon is the warmest part of the day, and that this
+ # changes during the year and does not necessarily correspond to mean
+ # solar noon.  So the Vostok time might have been whatever the clocks
+@@ -329,9 +330,12 @@
+ 
+ # S Africa - year-round bases
+ # Marion Island, -4653+03752
+-# Sanae, -7141-00250
++# SANAE IV, Vesleskarvet, Queen Maud Land, -714022-0025026, since 1997
+ 
+-# UK
++# Ukraine - year-round base
++# Vernadsky (formerly Faraday), Galindez Island, -651445-0641526, since 1954
++
++# United Kingdom
+ #
+ # British Antarctic Territories (BAT) claims
+ # South Orkney Islands
+@@ -387,7 +391,7 @@
+ # but that he found it more convenient to keep GMT+12
+ # as supplies for the station were coming from McMurdo Sound,
+ # which was on GMT+12 because New Zealand was on GMT+12 all year
+-# at that time (1957).  (Source: Siple's book 90 degrees SOUTH.)
++# at that time (1957).  (Source: Siple's book 90 Degrees South.)
+ #
+ # From Susan Smith
+ # http://www.cybertours.com/whs/pole10.html
+--- ./jdk/make/data/tzdata/asia	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/asia	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,41 +21,44 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2013-08-11):
++# From Paul Eggert (2014-10-31):
+ #
+-# A good source for time zone historical data outside the U.S. is
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Another source occasionally used is Edward W. Whitman, World Time Differences,
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
+ # For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
++#
++# For Russian data circa 1919, a source is:
++# Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
++# (See the 'europe' file for a fuller citation.)
+ #
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+-# I invented the abbreviations marked `*' in the following table;
++# I invented the abbreviations marked '*' in the following table;
+ # the rest are from earlier versions of this file, or from other sources.
+ # Corrections are welcome!
+ #	     std  dst
+@@ -66,17 +69,19 @@
+ #	3:30 IRST IRDT	Iran
+ #	4:00 GST	Gulf*
+ #	5:30 IST	India
+-#	7:00 ICT	Indochina*
++#	7:00 ICT	Indochina, most times and locations*
+ #	7:00 WIB	west Indonesia (Waktu Indonesia Barat)
+ #	8:00 WITA	central Indonesia (Waktu Indonesia Tengah)
+ #	8:00 CST	China
+-#	9:00 CJT	Central Japanese Time (1896/1937)*
++#	8:00 IDT	Indochina, 1943-45, 1947-55, 1960-75 (some locations)*
++#	8:00 JWST	Western Standard Time (Japan, 1896/1937)*
++#	9:00 JCST	Central Standard Time (Japan, 1896/1937)
+ #	9:00 WIT	east Indonesia (Waktu Indonesia Timur)
+ #	9:00 JST  JDT	Japan
+ #	9:00 KST  KDT	Korea
+-#	9:30 CST	(Australian) Central Standard Time
++#	9:30 ACST	Australian Central Standard Time
+ #
+-# See the `europe' file for Russia and Turkey in Asia.
++# See the 'europe' file for Russia and Turkey in Asia.
+ 
+ # From Guy Harris:
+ # Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
+@@ -86,7 +91,7 @@
+ 
+ ###############################################################################
+ 
+-# These rules are stolen from the `europe' file.
++# These rules are stolen from the 'europe' file.
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	EUAsia	1981	max	-	Mar	lastSun	 1:00u	1:00	S
+ Rule	EUAsia	1979	1995	-	Sep	lastSun	 1:00u	0	-
+@@ -138,11 +143,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
+ 			3:00	-	YERT	1957 Mar    # Yerevan Time
+-			4:00 RussiaAsia YER%sT	1991 Mar 31 2:00s
++			4:00 RussiaAsia YER%sT	1991 Mar 31  2:00s
+ 			3:00	1:00	YERST	1991 Sep 23 # independence
+-			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
++			3:00 RussiaAsia	AM%sT	1995 Sep 24  2:00s
+ 			4:00	-	AMT	1997
+-			4:00 RussiaAsia	AM%sT	2012 Mar 25 2:00s
++			4:00 RussiaAsia	AM%sT	2012 Mar 25  2:00s
+ 			4:00	-	AMT
+ 
+ # Azerbaijan
+@@ -155,16 +160,16 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
+ 			3:00	-	BAKT	1957 Mar    # Baku Time
+-			4:00 RussiaAsia BAK%sT	1991 Mar 31 2:00s
++			4:00 RussiaAsia BAK%sT	1991 Mar 31  2:00s
+ 			3:00	1:00	BAKST	1991 Aug 30 # independence
+ 			3:00 RussiaAsia	AZ%sT	1992 Sep lastSat 23:00
+-			4:00	-	AZT	1996 # Azerbaijan time
++			4:00	-	AZT	1996     # Azerbaijan Time
+ 			4:00	EUAsia	AZ%sT	1997
+ 			4:00	Azer	AZ%sT
+ 
+ # Bahrain
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
++Zone	Asia/Bahrain	3:22:20 -	LMT	1920     # Manamah
+ 			4:00	-	GST	1972 Jun
+ 			3:00	-	AST
+ 
+@@ -174,13 +179,8 @@
+ # Daylight Saving Time from June 16 to Sept 30
+ #
+ # Bangladesh to introduce daylight saving time likely from June 16
+-# 
+ # http://www.asiantribune.com/?q=node/17288
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html
+-# 
+ #
+ # "... Bangladesh government has decided to switch daylight saving time from
+ # June
+@@ -195,17 +195,11 @@
+ # the 19th and 20th, and they have not set the end date yet.
+ #
+ # Some sources:
+-# 
+ # http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601
+-# 
+-# 
+ # http://bdnews24.com/details.php?id=85889&cid=2
+-# 
+ #
+ # Our wrap-up:
+-# 
+ # http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html
+-# 
+ 
+ # From A. N. M. Kamrus Saadat (2009-06-15):
+ # Finally we've got the official mail regarding DST start time where DST start
+@@ -220,13 +214,8 @@
+ #
+ # Following report by same newspaper-"The Daily Star Friday":
+ # "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
+-# 
+ # http://www.thedailystar.net/newDesign/news-details.php?nid=107021
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
+-# 
+ 
+ # From Steffen Thorsen (2009-10-13):
+ # IANS (Indo-Asian News Service) now reports:
+@@ -235,22 +224,15 @@
+ # "continue for an indefinite period."
+ #
+ # One of many places where it is published:
+-# 
+ # http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-12-24):
+ # According to Bangladesh newspaper "The Daily Star,"
+ # Bangladesh will change its clock back to Standard Time on Dec 31, 2009.
+ #
+ # Clock goes back 1-hr on Dec 31 night.
+-# 
+ # http://www.thedailystar.net/newDesign/news-details.php?nid=119228
+-# 
+-# and
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html
+-# 
+ #
+ # "...The government yesterday decided to put the clock back by one hour
+ # on December 31 midnight and the new time will continue until March 31,
+@@ -260,17 +242,12 @@
+ # From Alexander Krivenyshev (2010-03-22):
+ # According to Bangladesh newspaper "The Daily Star,"
+ # Cabinet cancels Daylight Saving Time
+-# 
+ # http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
+-# 
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	S
+-Rule	Dhaka	2009	only	-	Dec	31	23:59	0	-
++Rule	Dhaka	2009	only	-	Dec	31	24:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dhaka	6:01:40 -	LMT	1890
+@@ -301,7 +278,7 @@
+ 
+ # Brunei
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar   # Bandar Seri Begawan
++Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar # Bandar Seri Begawan
+ 			7:30	-	BNT	1933
+ 			8:00	-	BNT
+ 
+@@ -310,19 +287,15 @@
+ # Milne says 6:24:40 was the meridian of the time ball observatory at Rangoon.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
+-			6:24:40	-	RMT	1920	   # Rangoon Mean Time?
+-			6:30	-	BURT	1942 May   # Burma Time
+-			9:00	-	JST	1945 May 3
+-			6:30	-	MMT		   # Myanmar Time
++Zone	Asia/Rangoon	6:24:40 -	LMT	1880        # or Yangon
++			6:24:40	-	RMT	1920        # Rangoon Mean Time?
++			6:30	-	BURT	1942 May    # Burma Time
++			9:00	-	JST	1945 May  3
++			6:30	-	MMT	# Myanmar Time
+ 
+ # Cambodia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Phnom_Penh	6:59:40 -	LMT	1906 Jun  9
+-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+-			7:00	-	ICT	1912 May
+-			8:00	-	ICT	1931 May
+-			7:00	-	ICT
++# See Asia/Bangkok.
++
+ 
+ # China
+ 
+@@ -332,12 +305,12 @@
+ # From Bob Devine (1988-01-28):
+ # No they don't.  See TIME mag, 1986-02-17 p.52.  Even though
+ # China is across 4 physical time zones, before Feb 1, 1986 only the
+-# Peking (Bejing) time zone was recognized.  Since that date, China
+-# has two of 'em -- Peking's and Urumqi (named after the capital of
++# Peking (Beijing) time zone was recognized.  Since that date, China
++# has two of 'em - Peking's and Ürümqi (named after the capital of
+ # the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.
+ #
+ # . . .I just deleted the DST table and this editor makes it too
+-# painful to suck in another copy..  So, here is what I have for
++# painful to suck in another copy.  So, here is what I have for
+ # DST start/end dates for Peking's time zone (info from AP):
+ #
+ #     1986 May 4 - Sept 14
+@@ -347,15 +320,16 @@
+ # CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
+ # CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
+ 
+-# From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger write that China (except for Hong Kong and Macau)
+-# has had a single time zone since 1980 May 1, observing summer DST
+-# from 1986 through 1991; this contradicts Devine's
+-# note about Time magazine, though apparently _something_ happened in 1986.
+-# Go with Shanks & Pottenger for now.  I made up names for the other
+-# pre-1980 time zones.
++# From Paul Eggert (2008-02-11):
++# Jim Mann, "A clumsy embrace for another western custom: China on daylight
++# time - sort of", Los Angeles Times, 1986-05-05 ... [says] that China began
++# observing daylight saving time in 1986.
+ 
+-# From Shanks & Pottenger:
++# From Paul Eggert (2014-06-30):
++# Shanks & Pottenger have China switching to a single time zone in 1980, but
++# this doesn't seem to be correct.  They also write that China observed summer
++# DST from 1986 through 1991, which seems to match the above commentary, so
++# go with them for DST rules as follows:
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Shang	1940	only	-	Jun	 3	0:00	1:00	D
+ Rule	Shang	1940	1941	-	Oct	 1	0:00	0	S
+@@ -369,7 +343,7 @@
+ # historic timezones from some Taiwan websites.  And yes, there are official
+ # Chinese names for these locales (before 1949).
+ #
+-# From Jesper Norgaard Welen (2006-07-14):
++# From Jesper Nørgaard Welen (2006-07-14):
+ # I have investigated the timezones around 1970 on the
+ # http://www.astro.com/atlas site [with provinces and county
+ # boundaries summarized below]....  A few other exceptions were two
+@@ -380,65 +354,97 @@
+ # (could be true), for the moment I am assuming that those two
+ # counties are mistakes in the astro.com data.
+ 
+-# From Paul Eggert (2008-02-11):
+-# I just now checked Google News for western news sources that talk
+-# about China's single time zone, and couldn't find anything before 1986
+-# talking about China being in one time zone.  (That article was: Jim
+-# Mann, "A clumsy embrace for another western custom: China on daylight
+-# time--sort of", Los Angeles Times, 1986-05-05.  By the way, this
+-# article confirms the tz database's data claiming that China began
+-# observing daylight saving time in 1986.
++# From Paul Eggert (2014-06-30):
++# Alois Treindl kindly sent me translations of the following two sources:
+ #
+-# From Thomas S. Mullaney (2008-02-11):
+-# I think you're combining two subjects that need to treated
+-# separately: daylight savings (which, you're correct, wasn't
+-# implemented until the 1980s) and the unified time zone centered near
+-# Beijing (which was implemented in 1949). Briefly, there was also a
+-# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
+-# ceased, and the second eventually recognized (again, in the 1980s).
++# (1)
++# Guo Qingsheng (National Time-Service Center, CAS, Xi'an 710600, China)
++# Beijing Time at the Beginning of the PRC
++# China Historical Materials of Science and Technology
++# (Zhongguo ke ji shi liao, 中国科技史料), Vol. 24, No. 1 (2003)
++# It gives evidence that at the beginning of the PRC, Beijing time was
++# officially apparent solar time!  However, Guo also says that the
++# evidence is dubious, as the relevant institute of astronomy had not
++# been taken over by the PRC yet.  It's plausible that apparent solar
++# time was announced but never implemented, and that people continued
++# to use UT+8.  As the Shanghai radio station (and I presume the
++# observatory) was still under control of French missionaries, it
++# could well have ignored any such mandate.
+ #
+-# From Paul Eggert (2008-06-30):
+-# There seems to be a good chance China switched to a single time zone in 1949
+-# rather than in 1980 as Shanks & Pottenger have it, but we don't have a
+-# reliable documentary source saying so yet, so for now we still go with
+-# Shanks & Pottenger.
+-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
++# (2)
++# Guo Qing-sheng (Shaanxi Astronomical Observatory, CAS, Xi'an 710600, China)
++# A Study on the Standard Time Changes for the Past 100 Years in China
++# [undated and unknown publication location]
++# It says several things:
++#   * The Qing dynasty used local apparent solar time throughout China.
++#   * The Republic of China instituted Beijing mean solar time effective
++#     the official calendar book of 1914.
++#   * The French Concession in Shanghai set up signal stations in
++#     French docks in the 1890s, controlled by Xujiahui (Zikawei)
++#     Observatory and set to local mean time.
++#   * "From the end of the 19th century" it changed to UT+8.
++#   * Chinese Customs (by then reduced to a tool of foreign powers)
++#     eventually standardized on this time for all ports, and it
++#     became used by railways as well.
++#   * In 1918 the Central Observatory proposed dividing China into
++#     five time zones (see below for details).  This caught on
++#     at first only in coastal areas observing UT+8.
++#   * During WWII all of China was in theory was at UT+7.  In practice
++#     this was ignored in the west, and I presume was ignored in
++#     Japanese-occupied territory.
++#   * Japanese-occupied Manchuria was at UT+9, i.e., Japan time.
++#   * The five-zone plan was resurrected after WWII and officially put into
++#     place (with some modifications) in March 1948.  It's not clear
++#     how well it was observed in areas under Nationalist control.
++#   * The People's Liberation Army used UT+8 during the civil war.
++#
++# An AP article "Shanghai Internat'l Area Little Changed" in the
++# Lewiston (ME) Daily Sun (1939-05-29), p 17, said "Even the time is
++# different - the occupied districts going by Tokyo time, an hour
++# ahead of that prevailing in the rest of Shanghai."  Guess that the
++# Xujiahui Observatory was under French control and stuck with UT+8.
++#
++# In earlier versions of this file, China had many separate Zone entries, but
++# this was based on what were apparently incorrect data in Shanks & Pottenger.
++# This has now been simplified to the two entries Asia/Shanghai and
++# Asia/Urumqi, with the others being links for backward compatibility.
++# Proposed in 1918 and theoretically in effect until 1949 (although in practice
++# mainly observed in coastal areas), the five zones were:
++#
++# Changbai Time ("Long-white Time", Long-white = Heilongjiang area) UT+8.5
++# Asia/Harbin (currently a link to Asia/Shanghai)
+ # Heilongjiang (except Mohe county), Jilin
+-Zone	Asia/Harbin	8:26:44	-	LMT	1928 # or Haerbin
+-			8:30	-	CHAT	1932 Mar # Changbai Time
+-			8:00	-	CST	1940
+-			9:00	-	CHAT	1966 May
+-			8:30	-	CHAT	1980 May
+-			8:00	PRC	C%sT
+-# Zhongyuan Time ("Central plain Time")
++#
++# Zhongyuan Time ("Central plain Time") UT+8
++# Asia/Shanghai
+ # most of China
+-# Milne gives 8:05:56.7; round to nearest.
+-Zone	Asia/Shanghai	8:05:57	-	LMT	1928
+-			8:00	Shang	C%sT	1949
+-			8:00	PRC	C%sT
+-# Long-shu Time (probably due to Long and Shu being two names of that area)
++# This currently represents most other zones as well,
++# as apparently these regions have been the same since 1970.
++# Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest.
++# Guo says Shanghai switched to UT+8 "from the end of the 19th century".
++#
++# Long-shu Time (probably due to Long and Shu being two names of that area) UT+7
++# Asia/Chongqing (currently a link to Asia/Shanghai)
+ # Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
+ # most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
+ # counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
+ # Yangchun, Yangjiang, Yu'nan, and Yunfu.
+-Zone	Asia/Chongqing	7:06:20	-	LMT	1928 # or Chungking
+-			7:00	-	LONT	1980 May # Long-shu Time
+-			8:00	PRC	C%sT
+-# Xin-zang Time ("Xinjiang-Tibet Time")
++#
++# Xin-zang Time ("Xinjiang-Tibet Time") UT+6
++# Asia/Urumqi
++# This currently represents Kunlun Time as well,
++# as apparently the two regions have been the same since 1970.
+ # The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
+ # the Guangdong counties  Xuwen, Haikang, Suixi, Lianjiang,
+ # Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
+ # east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
+-# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
++# east Xinjiang, including Ürümqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
+ # Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
+ # Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
+ # Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
+-Zone	Asia/Urumqi	5:50:20	-	LMT	1928 # or Urumchi
+-			6:00	-	URUT	1980 May # Urumqi Time
+-			8:00	PRC	C%sT
+-# Kunlun Time
++#
++# Kunlun Time UT+5.5
++# Asia/Kashgar (currently a link to Asia/Urumqi)
+ # West Tibet, including Pulan, Aheqi, Shufu, Shule;
+ # West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
+ # Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
+@@ -455,9 +461,9 @@
+ # population of Xinjiang, typically use "Xinjiang time" which is two
+ # hours behind Beijing time, or UTC +0600. The government of the Xinjiang
+ # Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as
+-# local governments such as the Urumqi city government use both times in
++# local governments such as the Ürümqi city government use both times in
+ # publications, referring to what is popularly called Xinjiang time as
+-# "Urumqi time." When Uyghurs make an appointment in the Uyghur language
++# "Ürümqi time." When Uyghurs make an appointment in the Uyghur language
+ # they almost invariably use Xinjiang time.
+ #
+ # (Their ethnic Han compatriots would typically have no clue of its
+@@ -469,21 +475,6 @@
+ # the province not having dual times but four times in use at the same
+ # time. Some areas remained on standard Xinjiang time or Beijing time and
+ # others moving their clocks ahead.)
+-#
+-# ...an example of an official website using of Urumqi time.
+-#
+-# The first few lines of the Google translation of
+-# 
+-# http://www.fjysgl.gov.cn/show.aspx?id=2379&cid=39
+-# 
+-# (retrieved 2009-10-13)
+-# > Urumqi fire seven people are missing the alleged losses of at least
+-# > 500 million yuan
+-# >
+-# > (Reporter Dong Liu) the day before 20:20 or so (Urumqi Time 18:20),
+-# > Urumqi City Department of International Plaza Luther Qiantang River
+-# > burst fire. As of yesterday, 18:30, Urumqi City Fire officers and men
+-# > have worked continuously for 22 hours...
+ 
+ # From Luther Ma (2009-11-19):
+ # With the risk of being redundant to previous answers these are the most common
+@@ -494,7 +485,7 @@
+ # 3. Urumqi...
+ # 4. Kashgar...
+ # ...
+-# 5. It seems that Uyghurs in Urumqi has been using Xinjiang since at least the
++# 5. It seems that Uyghurs in Ürümqi has been using Xinjiang since at least the
+ # 1960's. I know of one Han, now over 50, who grew up in the surrounding
+ # countryside and used Xinjiang time as a child.
+ #
+@@ -506,10 +497,55 @@
+ # Autonomous Region under the PRC. (Before that Uyghurs, of course, would also
+ # not be using Beijing time, but some local time.)
+ 
+-Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
+-			5:30	-	KAST	1940	 # Kashgar Time
+-			5:00	-	KAST	1980 May
++# From David Cochrane (2014-03-26):
++# Just a confirmation that Ürümqi time was implemented in Ürümqi on 1 Feb 1986:
++# http://content.time.com/time/magazine/article/0,9171,960684,00.html
++
++# From Luther Ma (2014-04-22):
++# I have interviewed numerous people of various nationalities and from
++# different localities in Xinjiang and can confirm the information in Guo's
++# report regarding Xinjiang, as well as the Time article reference by David
++# Cochrane.  Whether officially recognized or not (and both are officially
++# recognized), two separate times have been in use in Xinjiang since at least
++# the Cultural Revolution: Xinjiang Time (XJT), aka Ürümqi Time or local time;
++# and Beijing Time.  There is no confusion in Xinjiang as to which name refers
++# to which time. Both are widely used in the province, although in some
++# population groups might be use one to the exclusion of the other.  The only
++# problem is that computers and smart phones list Ürümqi (or Kashgar) as
++# having the same time as Beijing.
++
++# From Paul Eggert (2014-06-30):
++# In the early days of the PRC, Tibet was given its own time zone (UT+6) but
++# this was withdrawn in 1959 and never reinstated; see Tubten Khétsun,
++# Memories of life in Lhasa under Chinese Rule, Columbia U Press, ISBN
++# 978-0231142861 (2008), translator's introduction by Matthew Akester, p x.
++# As this is before our 1970 cutoff, Tibet doesn't need a separate zone.
++#
++# Xinjiang Time is well-documented as being officially recognized.  E.g., see
++# "The Working-Calendar for The Xinjiang Uygur Autonomous Region Government"
++#  (2014-04-22).
++# Unfortunately, we have no good records of time in Xinjiang before 1986.
++# During the 20th century parts of Xinjiang were ruled by the Qing dynasty,
++# the Republic of China, various warlords, the First and Second East Turkestan
++# Republics, the Soviet Union, the Kuomintang, and the People's Republic of
++# China, and tracking down all these organizations' timekeeping rules would be
++# quite a trick.  Approximate this lost history by a transition from LMT to
++# XJT at the start of 1928, the year of accession of the warlord Jin Shuren,
++# which happens to be the date given by Shanks & Pottenger (no doubt as a
++# guess) as the transition from LMT.  Ignore the usage of UT+8 before
++# 1986-02-01 under the theory that the transition date to UT+8 is unknown and
++# that the sort of users who prefer Asia/Urumqi now typically ignored the
++# UT+8 mandate back then.
++
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Beijing time, used throughout China; represented by Shanghai.
++Zone	Asia/Shanghai	8:05:43	-	LMT	1901
++			8:00	Shang	C%sT	1949
+ 			8:00	PRC	C%sT
++# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
++# / Wulumuqi.  (Please use Asia/Shanghai if you prefer Beijing time.)
++Zone	Asia/Urumqi	5:50:20	-	LMT	1928
++			6:00	-	XJT
+ 
+ 
+ # Hong Kong (Xianggang)
+@@ -524,15 +560,11 @@
+ # and incorrect rules. Although the exact switch over time is missing, I
+ # think 3:30 is correct. The official DST record for Hong Kong can be
+ # obtained from
+-# 
+ # http://www.hko.gov.hk/gts/time/Summertime.htm
+-# .
+ 
+ # From Arthur David Olson (2009-10-28):
+ # Here are the dates given at
+-# 
+ # http://www.hko.gov.hk/gts/time/Summertime.htm
+-# 
+ # as of 2009-10-28:
+ # Year        Period
+ # 1941        1 Apr to 30 Sep
+@@ -612,35 +644,113 @@
+ 
+ # Taiwan
+ 
+-# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
+-# was still controlled by Japan.  This is hard to believe, but we don't
+-# have any other information.
+-
+ # From smallufo (2010-04-03):
+-# According to Taiwan's CWB,
+-# 
++# According to Taiwan's CWB [Central Weather Bureau],
+ # http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm
+-# 
+ # Taipei has DST in 1979 between July 1st and Sep 30.
+ 
+-# From Arthur David Olson (2010-04-07):
+-# Here's Google's translation of the table at the bottom of the "summert.htm" page:
+-# Decade 	                                                    Name                      Start and end date
+-# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30
+-# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31
+-# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31
+-# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30
+-# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30
+-# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30
+-# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
+-# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30
+-# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time
+-# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30
+-# Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time
++# From Yu-Cheng Chuang (2013-07-12):
++# On Dec 28, 1895, the Meiji Emperor announced Ordinance No. 167 of
++# Meiji Year 28 "The clause about standard time", mentioned that
++# Taiwan and Penghu Islands, as well as Yaeyama and Miyako Islands
++# (both in Okinawa) adopt the Western Standard Time which is based on
++# 120E. The adoption began from Jan 1, 1896. The original text can be
++# found on Wikisource:
++# http://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
++# ... This could be the first adoption of time zone in Taiwan, because
++# during the Qing Dynasty, it seems that there was no time zone
++# declared officially.
++#
++# Later, in the beginning of World War II, on Sep 25, 1937, the Showa
++# Emperor announced Ordinance No. 529 of Showa Year 12 "The clause of
++# revision in the ordinance No. 167 of Meiji year 28 about standard
++# time", in which abolished the adoption of Western Standard Time in
++# western islands (listed above), which means the whole Japan
++# territory, including later occupations, adopt Japan Central Time
++# (UTC+9). The adoption began on Oct 1, 1937. The original text can
++# be found on Wikisource:
++# http://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
++#
++# That is, the time zone of Taipei switched to UTC+9 on Oct 1, 1937.
++
++# From Yu-Cheng Chuang (2014-07-02):
++# I've found more evidence about when the time zone was switched from UTC+9
++# back to UTC+8 after WW2.  I believe it was on Sep 21, 1945.  In a document
++# during Japanese era [1] in which the officer told the staff to change time
++# zone back to Western Standard Time (UTC+8) on Sep 21.  And in another
++# history page of National Cheng Kung University [2], on Sep 21 there is a
++# note "from today, switch back to Western Standard Time".  From these two
++# materials, I believe that the time zone change happened on Sep 21.  And
++# today I have found another monthly journal called "The Astronomical Herald"
++# from The Astronomical Society of Japan [3] in which it mentioned the fact
++# that:
++#
++# 1. Standard Time of the Country (Japan) was adopted on Jan 1, 1888, using
++# the time at 135E (GMT+9)
++#
++# 2. Standard Time of the Country was renamed to Central Standard Time, on Jan
++# 1, 1898, and on the same day, the new territories Taiwan and Penghu islands,
++# as well as Yaeyama and Miyako islands, adopted a new time zone called
++# Western Standard Time, which is in GMT+8.
++#
++# 3. Western Standard Time was deprecated on Sep 30, 1937. From then all the
++# territories of Japan adopted the same time zone, which is Central Standard
++# Time.
++#
++# [1] Academica Historica, Taiwan:
++# http://163.29.208.22:8080/govsaleShowImage/connect_img.php?s=00101738900090036&e=00101738900090037
++# [2] Nat'l Cheng Kung University 70th Anniversary Special Site:
++# http://www.ncku.edu.tw/~ncku70/menu/001/01_01.htm
++# [3] Yukio Niimi, The Standard Time in Japan (1997), p.475:
++# http://www.asj.or.jp/geppou/archive_open/1997/pdf/19971001c.pdf
++
++# Yu-Cheng Chuang (2014-07-03):
++# I finally have found the real official gazette about changing back to
++# Western Standard Time on Sep 21 in Taiwan.  It's Taiwan Governor-General
++# Bulletin No. 386 in Showa 20 years (1945), published on Sep 19, 1945. [1] ...
++# [It] abolishes Bulletin No. 207 in Showa 12 years (1937), which is a local
++# bulletin in Taiwan for that Ordinance No. 529. It also mentioned that 1am on
++# Sep 21, 1945 will be 12am on Sep 21.  I think this bulletin is much more
++# official than the one I mentioned in my first mail, because it's from the
++# top-level government in Taiwan. If you're going to quote any resource, this
++# would be a good one.
++# [1] Taiwan Governor-General Gazette, No. 1018, Sep 19, 1945:
++# http://db2.th.gov.tw/db2/view/viewImg.php?imgcode=0072031018a&num=19&bgn=019&end=019&otherImg=&type=gener
++
++# From Yu-Cheng Chuang (2014-07-02):
++# In 1946, DST in Taiwan was from May 15 and ended on Sep 30. The info from
++# Central Weather Bureau website was not correct.
++#
++# Original Bulletin:
++# http://subtpg.tpg.gov.tw/og/image2.asp?f=03502F0AKM1AF
++# http://subtpg.tpg.gov.tw/og/image2.asp?f=0350300AKM1B0 (cont.)
++#
++# In 1947, DST in Taiwan was expanded to Oct 31. There is a backup of that
++# telegram announcement from Taiwan Province Government:
++#
++# http://subtpg.tpg.gov.tw/og/image2.asp?f=0360310AKZ431
++#
++# Here is a brief translation:
++#
++#   The Summer Time this year is adopted from midnight Apr 15 until Sep 20
++#   midnight. To save (energy?) consumption, we're expanding Summer Time
++#   adoption till Oct 31 midnight.
++#
++# The Central Weather Bureau website didn't mention that, however it can
++# be found from historical government announcement database.
++
++# From Paul Eggert (2014-07-03):
++# As per Yu-Cheng Chuang, say that Taiwan was at UT+9 from 1937-10-01
++# until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
++# Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Taiwan	1945	1951	-	May	1	0:00	1:00	D
+-Rule	Taiwan	1945	1951	-	Oct	1	0:00	0	S
++Rule	Taiwan	1946	only	-	May	15	0:00	1:00	D
++Rule	Taiwan	1946	only	-	Oct	1	0:00	0	S
++Rule	Taiwan	1947	only	-	Apr	15	0:00	1:00	D
++Rule	Taiwan	1947	only	-	Nov	1	0:00	0	S
++Rule	Taiwan	1948	1951	-	May	1	0:00	1:00	D
++Rule	Taiwan	1948	1951	-	Oct	1	0:00	0	S
+ Rule	Taiwan	1952	only	-	Mar	1	0:00	1:00	D
+ Rule	Taiwan	1952	1954	-	Nov	1	0:00	0	S
+ Rule	Taiwan	1953	1959	-	Apr	1	0:00	1:00	D
+@@ -648,11 +758,14 @@
+ Rule	Taiwan	1960	1961	-	Jun	1	0:00	1:00	D
+ Rule	Taiwan	1974	1975	-	Apr	1	0:00	1:00	D
+ Rule	Taiwan	1974	1975	-	Oct	1	0:00	0	S
+-Rule	Taiwan	1979	only	-	Jun	30	0:00	1:00	D
+-Rule	Taiwan	1979	only	-	Sep	30	0:00	0	S
++Rule	Taiwan	1979	only	-	Jul	1	0:00	1:00	D
++Rule	Taiwan	1979	only	-	Oct	1	0:00	0	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Taipei	8:06:00 -	LMT	1896 # or Taibei or T'ai-pei
++# Taipei or Taibei or T'ai-pei
++Zone	Asia/Taipei	8:06:00 -	LMT	1896 Jan  1
++			8:00	-	JWST	1937 Oct  1
++			9:00	-	JST	1945 Sep 21  1:00
+ 			8:00	Taiwan	C%sT
+ 
+ # Macau (Macao, Aomen)
+@@ -672,7 +785,7 @@
+ Rule	Macau	1978	1980	-	Apr	Sun>=15	0:00	1:00	S
+ Rule	Macau	1978	1980	-	Oct	Sun>=15	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Macau	7:34:20 -	LMT	1912
++Zone	Asia/Macau	7:34:20 -	LMT	1912 Jan  1
+ 			8:00	Macau	MO%sT	1999 Dec 20 # return to China
+ 			8:00	PRC	C%sT
+ 
+@@ -721,7 +834,7 @@
+ # republic has changed its time zone back to that of Moscow.  As a result it
+ # is now just four hours ahead of Greenwich Mean Time, rather than five hours
+ # ahead.  The switch was decreed by the pro-Western president of Georgia,
+-# Mikhail Saakashvili, who said the change was partly prompted by the process
++# Mikheil Saakashvili, who said the change was partly prompted by the process
+ # of integration into Europe.
+ 
+ # From Teimuraz Abashidze (2005-11-07):
+@@ -734,29 +847,31 @@
+ # I don't know what can be done, especially knowing that some years ago our
+ # DST rules where changed THREE TIMES during one month.
+ 
++# Milne 1899 says Tbilisi (Tiflis) time was 2:59:05.7.
++# Byalokoz 1919 says Georgia was 2:59:11.
++# Go with Byalokoz.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Tbilisi	2:59:16 -	LMT	1880
+-			2:59:16	-	TBMT	1924 May  2 # Tbilisi Mean Time
++Zone	Asia/Tbilisi	2:59:11 -	LMT	1880
++			2:59:11	-	TBMT	1924 May  2 # Tbilisi Mean Time
+ 			3:00	-	TBIT	1957 Mar    # Tbilisi Time
+-			4:00 RussiaAsia TBI%sT	1991 Mar 31 2:00s
++			4:00 RussiaAsia TBI%sT	1991 Mar 31  2:00s
+ 			3:00	1:00	TBIST	1991 Apr  9 # independence
+-			3:00 RussiaAsia GE%sT	1992 # Georgia Time
++			3:00 RussiaAsia GE%sT	1992        # Georgia Time
+ 			3:00 E-EurAsia	GE%sT	1994 Sep lastSun
+ 			4:00 E-EurAsia	GE%sT	1996 Oct lastSun
+ 			4:00	1:00	GEST	1997 Mar lastSun
+ 			4:00 E-EurAsia	GE%sT	2004 Jun 27
+-			3:00 RussiaAsia	GE%sT	2005 Mar lastSun 2:00
++			3:00 RussiaAsia	GE%sT	2005 Mar lastSun  2:00
+ 			4:00	-	GET
+ 
+ # East Timor
+ 
+ # See Indonesia for the 1945 transition.
+ 
+-# From Joao Carrascalao, brother of the former governor of East Timor, in
+-# 
++# From João Carrascalão, brother of the former governor of East Timor, in
+ # East Timor may be late for its millennium
+-#  (1999-12-26/31):
++#  (1999-12-26/31):
+ # Portugal tried to change the time forward in 1974 because the sun
+ # rises too early but the suggestion raised a lot of problems with the
+ # Timorese and I still don't think it would work today because it
+@@ -766,25 +881,25 @@
+ # We don't have any record of the above attempt.
+ # Most likely our records are incomplete, but we have no better data.
+ 
+-# 
+ # From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
+-# (2000-08-16):
++# http://www.hri.org/news/world/undh/2000/00-08-16.undh.html
++# (2000-08-16):
+ # The Cabinet of the East Timor Transition Administration decided
+ # today to advance East Timor's time by one hour.  The time change,
+ # which will be permanent, with no seasonal adjustment, will happen at
+ # midnight on Saturday, September 16.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Dili	8:22:20 -	LMT	1912
++Zone	Asia/Dili	8:22:20 -	LMT	1912 Jan  1
+ 			8:00	-	TLT	1942 Feb 21 23:00 # E Timor Time
+ 			9:00	-	JST	1945 Sep 23
+ 			9:00	-	TLT	1976 May  3
+-			8:00	-	WITA	2000 Sep 17 00:00
++			8:00	-	WITA	2000 Sep 17  0:00
+ 			9:00	-	TLT
+ 
+ # India
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Kolkata	5:53:28 -	LMT	1880	# Kolkata
++Zone	Asia/Kolkata	5:53:28 -	LMT	1880        # Kolkata
+ 			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
+ 			6:30	-	BURT	1942 May 15 # Burma Time
+ 			5:30	-	IST	1942 Sep
+@@ -797,8 +912,12 @@
+ 
+ # Indonesia
+ #
++# From Paul Eggert (2014-09-06):
++# The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia
++# civil time was 7:07:12.5; round to even for Jakarta.
++#
+ # From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
+-# 
++# http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime
+ # says that Indonesia's time zones changed on 1988-01-01.  Looking at some
+ # time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
+ # and Kalimantan Tengah) switching from UTC+8 to UTC+7.
+@@ -810,7 +929,7 @@
+ # other formal surrender ceremonies were September 9, 11, and 13, plus
+ # September 12 for the regional surrender to Mountbatten in Singapore.
+ # These would be the earliest possible times for a change.
+-# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
++# Régimes horaires pour le monde entier, by Henri Le Corre, (Éditions
+ # Traditionnelles, 1987, Paris) says that Java and Madura switched
+ # from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
+ # (Hollandia).  For now, assume all Indonesian locations other than Jayapura
+@@ -835,7 +954,7 @@
+ # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+ # but this must be a typo.
+ 			7:07:12	-	BMT	1923 Dec 31 23:47:12 # Batavia
+-			7:20	-	JAVT	1932 Nov	 # Java Time
++			7:20	-	JAVT	1932 Nov    # Java Time
+ 			7:30	-	WIB	1942 Mar 23
+ 			9:00	-	JST	1945 Sep 23
+ 			7:30	-	WIB	1948 May
+@@ -861,7 +980,7 @@
+ # Maluku Islands, West Papua, Papua
+ Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
+ 			9:00	-	WIT	1944 Sep  1
+-			9:30	-	CST	1964
++			9:30	-	ACST	1964
+ 			9:00	-	WIT
+ 
+ # Iran
+@@ -927,7 +1046,7 @@
+ # Several of my users have reported that Iran will not observe DST anymore:
+ # http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
+ #
+-# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
++# From Reuters (2007-09-16), with a heads-up from Jesper Nørgaard Welen:
+ # ... the Guardian Council ... approved a law on Sunday to re-introduce
+ # daylight saving time ...
+ # http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
+@@ -993,7 +1112,7 @@
+ Rule	Iran	2036	2037	-	Sep	21	0:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tehran	3:25:44	-	LMT	1916
+-			3:25:44	-	TMT	1946	# Tehran Mean Time
++			3:25:44	-	TMT	1946     # Tehran Mean Time
+ 			3:30	-	IRST	1977 Nov
+ 			4:00	Iran	IR%sT	1979
+ 			3:30	Iran	IR%sT
+@@ -1018,17 +1137,11 @@
+ # From Steffen Thorsen (2008-03-10):
+ # The cabinet in Iraq abolished DST last week, according to the following
+ # news sources (in Arabic):
+-# 
+ # http://www.aljeeran.net/wesima_articles/news-20080305-98602.html
+-# 
+-# 
+ # http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10
+-# 
+ #
+ # We have published a short article in English about the change:
+-# 
+ # http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
+-# 
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Iraq	1982	only	-	May	1	0:00	1:00	D
+@@ -1037,14 +1150,14 @@
+ Rule	Iraq	1984	1985	-	Apr	1	0:00	1:00	D
+ Rule	Iraq	1985	1990	-	Sep	lastSun	1:00s	0	S
+ Rule	Iraq	1986	1990	-	Mar	lastSun	1:00s	1:00	D
+-# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
++# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo.
+ # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
+ #
+ Rule	Iraq	1991	2007	-	Apr	 1	3:00s	1:00	D
+ Rule	Iraq	1991	2007	-	Oct	 1	3:00s	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Baghdad	2:57:40	-	LMT	1890
+-			2:57:36	-	BMT	1918	    # Baghdad Mean Time?
++			2:57:36	-	BMT	1918     # Baghdad Mean Time?
+ 			3:00	-	AST	1982 May
+ 			3:00	Iraq	A%sT
+ 
+@@ -1272,7 +1385,7 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Jerusalem	2:20:54 -	LMT	1880
+-			2:20:40	-	JMT	1918	# Jerusalem Mean Time?
++			2:20:40	-	JMT	1918 # Jerusalem Mean Time?
+ 			2:00	Zion	I%sT
+ 
+ 
+@@ -1281,15 +1394,15 @@
+ 
+ # Japan
+ 
+-# `9:00' and `JST' is from Guy Harris.
++# '9:00' and 'JST' is from Guy Harris.
+ 
+ # From Paul Eggert (1995-03-06):
+ # Today's _Asahi Evening News_ (page 4) reports that Japan had
+-# daylight saving between 1948 and 1951, but ``the system was discontinued
+-# because the public believed it would lead to longer working hours.''
++# daylight saving between 1948 and 1951, but "the system was discontinued
++# because the public believed it would lead to longer working hours."
+ 
+-# From Mayumi Negishi in the 2005-08-10 Japan Times
+-# :
++# From Mayumi Negishi in the 2005-08-10 Japan Times:
++# http://www.japantimes.co.jp/cgi-bin/getarticle.pl5?nn20050810f2.htm
+ # Occupation authorities imposed daylight-saving time on Japan on
+ # [1948-05-01]....  But lack of prior debate and the execution of
+ # daylight-saving time just three days after the bill was passed generated
+@@ -1313,7 +1426,8 @@
+ 
+ # From Hideyuki Suzuki (1998-11-09):
+ # 'Tokyo' usually stands for the former location of Tokyo Astronomical
+-# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
++# Observatory: 139 degrees 44' 40.90" E (9h 18m 58.727s),
++# 35 degrees 39' 16.0" N.
+ # This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
+ # edited by National Astronomical Observatory of Japan....
+ # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
+@@ -1321,10 +1435,10 @@
+ 
+ # From Hideyuki Suzuki (1998-11-16):
+ # The ordinance No. 51 (1886) established "standard time" in Japan,
+-# which stands for the time on E 135 degree.
++# which stands for the time on 135 degrees E.
+ # In the ordinance No. 167 (1895), "standard time" was renamed to "central
+ # standard time".  And the same ordinance also established "western standard
+-# time", which stands for the time on E 120 degree....  But "western standard
++# time", which stands for the time on 120 degrees E....  But "western standard
+ # time" was abolished in the ordinance No. 529 (1937).  In the ordinance No.
+ # 167, there is no mention regarding for what place western standard time is
+ # standard....
+@@ -1332,27 +1446,33 @@
+ # I wrote "ordinance" above, but I don't know how to translate.
+ # In Japanese it's "chokurei", which means ordinance from emperor.
+ 
+-# Shanks & Pottenger claim JST in use since 1896, and that a few
+-# places (e.g. Ishigaki) use +0800; go with Suzuki.  Guess that all
+-# ordinances took effect on Jan 1.
++# From Yu-Cheng Chuang (2013-07-12):
++# ...the Meiji Emperor announced Ordinance No. 167 of Meiji Year 28 "The clause
++# about standard time" ... The adoption began from Jan 1, 1896.
++# http://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
++#
++# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
++# means the whole Japan territory, including later occupations, adopt Japan
++# Central Time (UTC+9). The adoption began on Oct 1, 1937.
++# http://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
+-			9:00	-	JST	1896
+-			9:00	-	CJT	1938
++			9:00	-	JST	1896 Jan  1
++			9:00	-	JCST	1937 Oct  1
+ 			9:00	Japan	J%sT
+ # Since 1938, all Japanese possessions have been like Asia/Tokyo.
+ 
+ # Jordan
+ #
+-# From 
+-# Jordan Week (1999-07-01)  via Steffen Thorsen (1999-09-09):
++# From 
++# Jordan Week (1999-07-01) via Steffen Thorsen (1999-09-09):
+ # Clocks in Jordan were forwarded one hour on Wednesday at midnight,
+ # in accordance with the government's decision to implement summer time
+ # all year round.
+ #
+-# From 
+-# Jordan Week (1999-09-30)  via Steffen Thorsen (1999-11-09):
++# From 
++# Jordan Week (1999-09-30) via Steffen Thorsen (1999-11-09):
+ # Winter time starts today Thursday, 30 September. Clocks will be turned back
+ # by one hour.  This is the latest government decision and it's final!
+ # The decision was taken because of the increase in working hours in
+@@ -1372,9 +1492,7 @@
+ 
+ # From Steffen Thorsen (2009-04-02):
+ # This single one might be good enough, (2009-03-24, Arabic):
+-# 
+ # http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279
+-# 
+ #
+ # Google's translation:
+ #
+@@ -1465,9 +1583,8 @@
+ # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+ # - Oral switched from +5:00 to +4:00 in spring 1989.
+ 
+-# 
+-# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
+-# 
++# From Kazakhstan Embassy's News Bulletin #11
++#  (2005-03-21):
+ # The Government of Kazakhstan passed a resolution March 15 abolishing
+ # daylight saving time citing lack of economic benefits and health
+ # complications coupled with a decrease in productivity.
+@@ -1500,10 +1617,10 @@
+ 			6:00	-	KIZT	1982 Apr  1
+ 			5:00 RussiaAsia	KIZ%sT	1991
+ 			5:00	-	KIZT	1991 Dec 16 # independence
+-			5:00	-	QYZT	1992 Jan 19 2:00
++			5:00	-	QYZT	1992 Jan 19  2:00
+ 			6:00 RussiaAsia	QYZ%sT	2005 Mar 15
+ 			6:00	-	QYZT
+-# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
++# Aqtobe (aka Aktobe, formerly Aktyubinsk)
+ Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
+ 			4:00	-	AKTT	1930 Jun 21 # Aktyubinsk Time
+ 			5:00	-	AKTT	1981 Apr  1
+@@ -1523,7 +1640,7 @@
+ 			6:00	-	SHET	1982 Apr  1
+ 			5:00 RussiaAsia	SHE%sT	1991
+ 			5:00	-	SHET	1991 Dec 16 # independence
+-			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun 2:00 # Aqtau Time
++			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun  2:00 # Aqtau Time
+ 			4:00 RussiaAsia	AQT%sT	2005 Mar 15
+ 			5:00	-	AQTT
+ # West Kazakhstan
+@@ -1532,7 +1649,7 @@
+ 			5:00	-	URAT	1981 Apr  1
+ 			5:00	1:00	URAST	1981 Oct  1
+ 			6:00	-	URAT	1982 Apr  1
+-			5:00 RussiaAsia	URA%sT	1989 Mar 26 2:00
++			5:00 RussiaAsia	URA%sT	1989 Mar 26  2:00
+ 			4:00 RussiaAsia	URA%sT	1991
+ 			4:00	-	URAT	1991 Dec 16 # independence
+ 			4:00 RussiaAsia	ORA%sT	2005 Mar 15 # Oral Time
+@@ -1543,7 +1660,7 @@
+ 
+ # From Paul Eggert (2005-08-15):
+ # According to an article dated today in the Kyrgyzstan Development Gateway
+-# 
++# http://eng.gateway.kg/cgi-bin/page.pl?id=1&story_name=doc9979.shtml
+ # Kyrgyzstan is canceling the daylight saving time system.  I take the article
+ # to mean that they will leave their clocks at 6 hours ahead of UTC.
+ # From Malik Abdugaliev (2005-09-21):
+@@ -1558,68 +1675,92 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
+ 			5:00	-	FRUT	1930 Jun 21 # Frunze Time
+-			6:00 RussiaAsia FRU%sT	1991 Mar 31 2:00s
+-			5:00	1:00	FRUST	1991 Aug 31 2:00 # independence
+-			5:00	Kyrgyz	KG%sT	2005 Aug 12    # Kyrgyzstan Time
++			6:00 RussiaAsia FRU%sT	1991 Mar 31  2:00s
++			5:00	1:00	FRUST	1991 Aug 31  2:00 # independence
++			5:00	Kyrgyz	KG%sT	2005 Aug 12 # Kyrgyzstan Time
+ 			6:00	-	KGT
+ 
+ ###############################################################################
+ 
+ # Korea (North and South)
+ 
+-# From Annie I. Bang (2006-07-10) in
+-# :
+-# The Ministry of Commerce, Industry and Energy has already
+-# commissioned a research project [to reintroduce DST] and has said
+-# the system may begin as early as 2008....  Korea ran a daylight
+-# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
++# From Annie I. Bang (2006-07-10):
++# http://www.koreaherald.com/view.php?ud=200607100012
++# Korea ran a daylight saving program from 1949-61 but stopped it
++# during the 1950-53 Korean War.  The system was temporarily enforced
++# between 1987 and 1988 ...
+ 
+-# From Shanks & Pottenger:
++# From Sanghyuk Jung (2014-10-29):
++# http://mm.icann.org/pipermail/tz/2014-October/021830.html
++# According to the Korean Wikipedia
++# http://ko.wikipedia.org/wiki/한국_표준시
++# [oldid=12896437 2014-09-04 08:03 UTC]
++# DST in Republic of Korea was as follows....  And I checked old
++# newspapers in Korean, all articles correspond with data in Wikipedia.
++# For example, the article in 1948 (Korean Language) proved that DST
++# started at June 1 in that year.  For another example, the article in
++# 1988 said that DST started at 2:00 AM in that year.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	ROK	1960	only	-	May	15	0:00	1:00	D
+-Rule	ROK	1960	only	-	Sep	13	0:00	0	S
+-Rule	ROK	1987	1988	-	May	Sun>=8	0:00	1:00	D
+-Rule	ROK	1987	1988	-	Oct	Sun>=8	0:00	0	S
++Rule	ROK	1948	only	-	Jun	 1	0:00	1:00	D
++Rule	ROK	1948	only	-	Sep	13	0:00	0	S
++Rule	ROK	1949	only	-	Apr	 3	0:00	1:00	D
++Rule	ROK	1949	1951	-	Sep	Sun>=8	0:00	0	S
++Rule	ROK	1950	only	-	Apr	 1	0:00	1:00	D
++Rule	ROK	1951	only	-	May	 6	0:00	1:00	D
++Rule	ROK	1955	only	-	May	 5	0:00	1:00	D
++Rule	ROK	1955	only	-	Sep	 9	0:00	0	S
++Rule	ROK	1956	only	-	May	20	0:00	1:00	D
++Rule	ROK	1956	only	-	Sep	30	0:00	0	S
++Rule	ROK	1957	1960	-	May	Sun>=1	0:00	1:00	D
++Rule	ROK	1957	1960	-	Sep	Sun>=18	0:00	0	S
++Rule	ROK	1987	1988	-	May	Sun>=8	2:00	1:00	D
++Rule	ROK	1987	1988	-	Oct	Sun>=8	3:00	0	S
++
++# From Paul Eggert (2014-10-30):
++# The Korean Wikipedia entry gives the following sources for UT offsets:
++#
++# 1908: Official Journal Article No. 3994 (Edict No. 5)
++# 1912: Governor-General of Korea Official Gazette Issue No. 367
++#       (Announcement No. 338)
++# 1954: Presidential Decree No. 876 (1954-03-17)
++# 1961: Law No. 676 (1961-08-07)
++# 1987: Law No. 3919 (1986-12-31)
++#
++# The Wikipedia entry also has confusing information about a change
++# to UT+9 in April 1910, but then what would be the point of the later change
++# to UT+9 on 1912-01-01?  Omit the 1910 change for now.
++#
++# I guessed that time zone abbreviations through 1945 followed the same
++# rules as discussed under Taiwan, with nominal switches from JST to KST
++# when the respective cities were taken over by the Allies after WWII.
++#
++# For Pyongyang we have no information; guess no changes since World War II.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Seoul	8:27:52	-	LMT	1890
+-			8:30	-	KST	1904 Dec
+-			9:00	-	KST	1928
+-			8:30	-	KST	1932
++Zone	Asia/Seoul	8:27:52	-	LMT	1908 Apr  1
++			8:30	-	KST	1912 Jan  1
++			9:00	-	JCST	1937 Oct  1
++			9:00	-	JST	1945 Sep  8
+ 			9:00	-	KST	1954 Mar 21
+-			8:00	ROK	K%sT	1961 Aug 10
+-			8:30	-	KST	1968 Oct
++			8:30	ROK	K%sT	1961 Aug 10
+ 			9:00	ROK	K%sT
+-Zone	Asia/Pyongyang	8:23:00 -	LMT	1890
+-			8:30	-	KST	1904 Dec
+-			9:00	-	KST	1928
+-			8:30	-	KST	1932
+-			9:00	-	KST	1954 Mar 21
+-			8:00	-	KST	1961 Aug 10
++Zone	Asia/Pyongyang	8:23:00 -	LMT	1908 Apr  1
++			8:30	-	KST	1912 Jan  1
++			9:00	-	JCST	1937 Oct  1
++			9:00	-	JST	1945 Aug 24
+ 			9:00	-	KST
+ 
+ ###############################################################################
+ 
+ # Kuwait
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# From the Arab Times (2007-03-14):
+-# The Civil Service Commission (CSC) has approved a proposal forwarded
+-# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
+-# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
+-# .
+-# From Paul Eggert (2007-03-29):
+-# We don't know the details, or whether the approval means it'll happen,
+-# so for now we assume no DST.
+ Zone	Asia/Kuwait	3:11:56 -	LMT	1950
+ 			3:00	-	AST
+ 
+ # Laos
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Vientiane	6:50:24 -	LMT	1906 Jun  9 # or Viangchan
+-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+-			7:00	-	ICT	1912 May
+-			8:00	-	ICT	1931 May
+-			7:00	-	ICT
++# See Asia/Bangkok.
++
+ 
+ # Lebanon
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1657,8 +1798,8 @@
+ Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
+ #
+ # peninsular Malaysia
+-# The data here are taken from Mok Ly Yng (2003-10-30)
+-# .
++# taken from Mok Ly Yng (2003-10-30)
++# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Kuala_Lumpur	6:46:46 -	LMT	1901 Jan  1
+ 			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+@@ -1670,12 +1811,12 @@
+ 			7:30	-	MALT	1982 Jan  1
+ 			8:00	-	MYT	# Malaysia Time
+ # Sabah & Sarawak
+-# From Paul Eggert (2006-03-22):
+-# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
+-# transition dates are from Mok Ly Yng.
++# From Paul Eggert (2014-08-12):
++# The data entries here are mostly from Shanks & Pottenger, but the 1942, 1945
++# and 1982 transition dates are from Mok Ly Yng.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
+-			7:30	-	BORT	1933	# Borneo Time
++			7:30	-	BORT	1933        # Borneo Time
+ 			8:00	NBorneo	BOR%sT	1942 Feb 16
+ 			9:00	-	JST	1945 Sep 12
+ 			8:00	-	BORT	1982 Jan  1
+@@ -1683,22 +1824,21 @@
+ 
+ # Maldives
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Maldives	4:54:00 -	LMT	1880	# Male
+-			4:54:00	-	MMT	1960	# Male Mean Time
+-			5:00	-	MVT		# Maldives Time
++Zone	Indian/Maldives	4:54:00 -	LMT	1880 # Male
++			4:54:00	-	MMT	1960 # Male Mean Time
++			5:00	-	MVT	# Maldives Time
+ 
+ # Mongolia
+ 
+ # Shanks & Pottenger say that Mongolia has three time zones, but
+-# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
+-# both say that it has just one.
++# The USNO (1995-12-21) and the CIA map Standard Time Zones of the World
++# (2005-03) both say that it has just one.
+ 
+ # From Oscar van Vlijmen (1999-12-11):
+-# 
+ # General Information Mongolia
+-#  (1999-09)
++#  (1999-09)
+ # "Time: Mongolia has two time zones. Three westernmost provinces of
+-# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
++# Bayan-Ölgii, Uvs, and Hovd are one hour earlier than the capital city, and
+ # the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
+ # eight hours."
+ 
+@@ -1709,7 +1849,7 @@
+ # of implementation may have been different....
+ # Some maps in the past have indicated that there was an additional time
+ # zone in the eastern part of Mongolia, including the provinces of Dornod,
+-# Suhbaatar, and possibly Khentij.
++# Sükhbaatar, and possibly Khentii.
+ 
+ # From Paul Eggert (1999-12-15):
+ # Naming and spelling is tricky in Mongolia.
+@@ -1723,10 +1863,10 @@
+ # (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
+ # there are three time zones.
+ #
+-# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
+-# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
+-#	Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
+-# Provinces [at 9:00]: Dornod, Sukhbaatar
++# Provinces [at 7:00]: Bayan-Ölgii, Uvs, Khovd, Zavkhan, Govi-Altai
++# Provinces [at 8:00]: Khövsgöl, Bulgan, Arkhangai, Khentii, Töv,
++#	Bayankhongor, Övörkhangai, Dundgovi, Dornogovi, Ömnögovi
++# Provinces [at 9:00]: Dornod, Sükhbaatar
+ #
+ # [The province of Selenge is omitted from the above lists.]
+ 
+@@ -1743,16 +1883,16 @@
+ # We have wildly conflicting information about Mongolia's time zones.
+ # Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
+ # there is only one time zone and that DST is observed, citing Microsoft
+-# Windows XP as the source.  Risto Nykanen (2005-05-16) reports that
++# Windows XP as the source.  Risto Nykänen (2005-05-16) reports that
+ # travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
+ # Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
+ # Washington, DC says there are two time zones, with DST observed.
+ # He also found
+-# 
++# http://ubpost.mongolnews.mn/index.php?subaction=showcomments&id=1111634894&archive=&start_from=&ucat=1&
+ # which also says that there is DST, and which has a comment by "Toddius"
+ # (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
+ # The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
+-# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
++# and some Eastern provinces are +9 GMT but Sükhbaatar Aimag is SUHK +8.5 GMT.
+ # The SUKH timezone is new this year, it is one of the few things the
+ # parliament passed during the tumultuous winter session."
+ # For now, let's ignore this information, until we have more confirmation.
+@@ -1768,29 +1908,23 @@
+ # +08:00 instead. Different sources appear to disagree with the tz
+ # database on this, e.g.:
+ #
+-# 
+ # http://www.timeanddate.com/worldclock/city.html?n=1026
+-# 
+-# 
+ # http://www.worldtimeserver.com/current_time_in_MN.aspx
+-# 
+ #
+ # both say GMT+08:00.
+ 
+ # From Steffen Thorsen (2008-03-31):
+ # eznis airways, which operates several domestic flights, has a flight
+ # schedule here:
+-# 
+ # http://www.eznis.com/Container.jsp?id=112
+-# 
+ # (click the English flag for English)
+ #
+-# There it appears that flights between Choibalsan and Ulaanbatar arrive
++# There it appears that flights between Choibalsan and Ulaanbaatar arrive
+ # about 1:35 - 1:50 hours later in local clock time, no matter the
+-# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern
+-# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are
++# direction, while Ulaanbaatar-Khovd takes 2 hours in the Eastern
++# direction and 3:35 back, which indicates that Ulaanbaatar and Khovd are
+ # in different time zones (like we know about), while Choibalsan and
+-# Ulaanbatar are in the same time zone (correction needed).
++# Ulaanbaatar are in the same time zone (correction needed).
+ 
+ # From Arthur David Olson (2008-05-19):
+ # Assume that Choibalsan is indeed offset by 8:00.
+@@ -1806,7 +1940,7 @@
+ # (1996-09) says 1996-10-25.  Go with Shanks & Pottenger through 1998.
+ #
+ # Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
+-# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
++# in Choibalsan (more precisely, in Dornod and Sükhbaatar) took place
+ # at 02:00 standard time, not at 00:00 local time as in the rest of
+ # the country.  That would be odd, and possibly is a result of their
+ # correction of 02:00 (in the previous edition) not being done correctly
+@@ -1822,13 +1956,13 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+ Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
+-			6:00	-	HOVT	1978	# Hovd Time
++			6:00	-	HOVT	1978     # Hovd Time
+ 			7:00	Mongol	HOV%sT
+ # Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
+ Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
+-			7:00	-	ULAT	1978	# Ulaanbaatar Time
++			7:00	-	ULAT	1978     # Ulaanbaatar Time
+ 			8:00	Mongol	ULA%sT
+-# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
++# Choibalsan, a.k.a. Bajan Tümen, Bajan Tumen, Chojbalsan,
+ # Choybalsan, Sanbejse, Tchoibalsan
+ Zone	Asia/Choibalsan	7:38:00 -	LMT	1905 Aug
+ 			7:00	-	ULAT	1978
+@@ -1860,7 +1994,7 @@
+ # 00:01 was to make it clear which day it was on.
+ 
+ # From Paul Eggert (2002-03-15):
+-# Jesper Norgaard found this URL:
++# Jesper Nørgaard found this URL:
+ # http://www.pak.gov.pk/public/news/app/app06_dec.htm
+ # (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
+ # advance the clocks by one hour on the night between the first
+@@ -1892,43 +2026,30 @@
+ # Here is an article that Pakistan plan to introduce Daylight Saving Time
+ # on June 1, 2008 for 3 months.
+ #
+-# "... The federal cabinet on Wednesday announced a new conservation plan to help
+-# reduce load shedding by approving the closure of commercial centres at 9pm and
+-# moving clocks forward by one hour for the next three months.
+-# ...."
++# "... The federal cabinet on Wednesday announced a new conservation plan to
++# help reduce load shedding by approving the closure of commercial centres at
++# 9pm and moving clocks forward by one hour for the next three months. ...."
+ #
+-# 
+ # http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
+-# 
+-# OR
+-# 
+ # http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4
+-# 
+ 
+ # From Arthur David Olson (2008-05-19):
+ # XXX--midnight transitions is a guess; 2008 only is a guess.
+ 
+ # From Alexander Krivenyshev (2008-08-28):
+ # Pakistan government has decided to keep the watches one-hour advanced
+-# for another 2 months--plan to return to Standard Time on October 31
++# for another 2 months - plan to return to Standard Time on October 31
+ # instead of August 31.
+ #
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
+-# 
+-# OR
+-# 
+ # http://dailymailnews.com/200808/28/news/dmbrn03.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-04-08):
+ # Based on previous media reports that "... proposed plan to
+ # advance clocks by one hour from May 1 will cause disturbance
+ # to the working schedules rather than bringing discipline in
+ # official working."
+-# 
+ # http://www.thenews.com.pk/daily_detail.asp?id=171280
+-# 
+ #
+ # recent news that instead of May 2009 - Pakistan plan to
+ # introduce DST from April 15, 2009
+@@ -1936,15 +2057,8 @@
+ # FYI: Associated Press Of Pakistan
+ # April 08, 2009
+ # Cabinet okays proposal to advance clocks by one hour from April 15
+-# 
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1
+-# 
+-#
+-# or
+-#
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html
+-# 
+ #
+ # ....
+ # The Federal Cabinet on Wednesday approved the proposal to
+@@ -1957,34 +2071,20 @@
+ # clocks backward by one hour from October 1. A formal announcement to
+ # this effect will be made after the Prime Minister grants approval in
+ # this regard."
+-# 
+ # http://www.thenews.com.pk/updates.asp?id=87168
+-# 
+ 
+ # From Alexander Krivenyshev (2009-09-28):
+ # According to Associated Press Of Pakistan, it is confirmed that
+-# Pakistan clocks across the country would be turned back by an hour from October
+-# 1, 2009.
++# Pakistan clocks across the country would be turned back by an hour from
++# October 1, 2009.
+ #
+ # "Clocks to go back one hour from 1 Oct"
+-# 
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
+-# 
+-
++#
+ # From Steffen Thorsen (2009-09-29):
+-# Alexander Krivenyshev wrote:
+-# > According to Associated Press Of Pakistan, it is confirmed that
+-# > Pakistan clocks across the country would be turned back by an hour from October
+-# > 1, 2009.
+-#
+ # Now they seem to have changed their mind, November 1 is the new date:
+-# 
+ # http://www.thenews.com.pk/top_story_detail.asp?Id=24742
+-# 
+ # "The country's clocks will be reversed by one hour on November 1.
+ # Officials of Federal Ministry for Interior told this to Geo News on
+ # Monday."
+@@ -1996,11 +2096,9 @@
+ #
+ # We have confirmed this year's end date with both with the Ministry of
+ # Water and Power and the Pakistan Electric Power Company:
+-# 
+ # http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
+-# 
+ 
+-# From Christoph Goehre (2009-10-01):
++# From Christoph Göhre (2009-10-01):
+ # [T]he German Consulate General in Karachi reported me today that Pakistan
+ # will go back to standard time on 1st of November.
+ 
+@@ -2016,22 +2114,17 @@
+ # Now, it seems that the decision to not observe DST in final:
+ #
+ # "Govt Withdraws Plan To Advance Clocks"
+-# 
+ # http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041
+-# 
+ #
+ # "People laud PM's announcement to end DST"
+-# 
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
+-# 
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule Pakistan	2002	only	-	Apr	Sun>=2	0:01	1:00	S
+ Rule Pakistan	2002	only	-	Oct	Sun>=2	0:01	0	-
+ Rule Pakistan	2008	only	-	Jun	1	0:00	1:00	S
+-Rule Pakistan	2008	only	-	Nov	1	0:00	0	-
++Rule Pakistan	2008	2009	-	Nov	1	0:00	0	-
+ Rule Pakistan	2009	only	-	Apr	15	0:00	1:00	S
+-Rule Pakistan	2009	only	-	Nov	1	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Karachi	4:28:12 -	LMT	1907
+@@ -2105,10 +2198,9 @@
+ # the PA has decided to implement DST in April.
+ 
+ # From Paul Eggert (1999-09-20):
+-# Daoud Kuttab writes in
+-# 
+-# Holiday havoc
+-#  (Jerusalem Post, 1999-04-22) that
++# Daoud Kuttab writes in Holiday havoc
++# http://www.jpost.com/com/Archive/22.Apr.1999/Opinion/Article-2.html
++# (Jerusalem Post, 1999-04-22) that
+ # the Palestinian National Authority changed to DST on 1999-04-15.
+ # I vaguely recall that they switch back in October (sorry, forgot the source).
+ # For now, let's assume that the spring switch was at 24:00,
+@@ -2121,7 +2213,7 @@
+ # A user from Gaza reported that Gaza made the change early because of
+ # the Ramadan.  Next year Ramadan will be even earlier, so I think
+ # there is a good chance next year's end date will be around two weeks
+-# earlier--the same goes for Jordan.
++# earlier - the same goes for Jordan.
+ 
+ # From Steffen Thorsen (2006-08-17):
+ # I was informed by a user in Bethlehem that in Bethlehem it started the
+@@ -2140,7 +2232,7 @@
+ # I guess it is likely that next year's date will be moved as well,
+ # because of the Ramadan.
+ 
+-# From Jesper Norgaard Welen (2007-09-18):
++# From Jesper Nørgaard Welen (2007-09-18):
+ # According to Steffen Thorsen's web site the Gaza Strip and the rest of the
+ # Palestinian territories left DST early on 13.th. of September at 2:00.
+ 
+@@ -2157,16 +2249,9 @@
+ # Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
+ # the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
+ #
+-# 
+ # http://www.guardian.co.uk/world/feedarticle/7759001
+-# 
+-# 
+ # http://www.abcnews.go.com/International/wireStory?id=5676087
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-03-26):
+ # According to the Palestine News Network (arabic.pnn.ps), Palestinian
+@@ -2174,24 +2259,17 @@
+ # 26 and continue until the night of 27 September 2009.
+ #
+ # (in Arabic)
+-# 
+ # http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850
+-# 
+ #
+-# or
+ # (English translation)
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_westbank01.html
+-# 
+ 
+ # From Steffen Thorsen (2009-08-31):
+ # Palestine's Council of Ministers announced that they will revert back to
+ # winter time on Friday, 2009-09-04.
+ #
+ # One news source:
+-# 
+ # http://www.safa.ps/ara/?action=showdetail&seid=4158
+-# 
+ # (Palestinian press agency, Arabic),
+ # Google translate: "Decided that the Palestinian government in Ramallah
+ # headed by Salam Fayyad, the start of work in time for the winter of
+@@ -2200,9 +2278,7 @@
+ #
+ # We are not sure if Gaza will do the same, last year they had a different
+ # end date, we will keep this page updated:
+-# 
+ # http://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-09-02):
+ # Seems that Gaza Strip will go back to Winter Time same date as West Bank.
+@@ -2212,51 +2288,35 @@
+ #
+ # "Winter time unite the West Bank and Gaza"
+ # (from Palestinian National Authority):
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html
+-# 
+ 
+ # From Alexander Krivenyshev (2010-03-19):
+ # According to Voice of Palestine DST will last for 191 days, from March
+ # 26, 2010 till "the last Sunday before the tenth day of Tishri
+ # (October), each year" (October 03, 2010?)
+ #
+-# 
+ # http://palvoice.org/forums/showthread.php?t=245697
+-# 
+ # (in Arabic)
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_westbank03.html
+-# 
+ 
+ # From Steffen Thorsen (2010-03-24):
+ # ...Ma'an News Agency reports that Hamas cabinet has decided it will
+ # start one day later, at 12:01am. Not sure if they really mean 12:01am or
+ # noon though:
+ #
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
+-# 
+ # (Ma'an News Agency)
+ # "At 12:01am Friday, clocks in Israel and the West Bank will change to
+ # 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
+ 
+ # From Steffen Thorsen (2010-08-11):
+ # According to several sources, including
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
+-# 
+ # the clocks were set back one hour at 2010-08-11 00:00:00 local time in
+ # Gaza and the West Bank.
+ # Some more background info:
+-# 
+ # http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
+-# 
+ 
+ # From Steffen Thorsen (2011-08-26):
+ # Gaza and the West Bank did go back to standard time in the beginning of
+@@ -2264,13 +2324,9 @@
+ # 00:00 (so two periods of DST in 2011). The pause was because of
+ # Ramadan.
+ #
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
+-# 
+ # Additional info:
+-# 
+ # http://www.timeanddate.com/news/time/palestine-dst-2011.html
+-# 
+ 
+ # From Alexander Krivenyshev (2011-08-27):
+ # According to the article in The Jerusalem Post:
+@@ -2280,14 +2336,9 @@
+ # The Hamas government said on Saturday that it won't observe summertime after
+ # the Muslim feast of Id al-Fitr, which begins on Tuesday..."
+ # ...
+-# 
+ # http://www.jpost.com/MiddleEast/Article.aspx?id=235650
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
+-# 
+-# The rules for Egypt are stolen from the `africa' file.
++# The rules for Egypt are stolen from the 'africa' file.
+ 
+ # From Steffen Thorsen (2011-09-30):
+ # West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
+@@ -2295,26 +2346,18 @@
+ # So West Bank and Gaza now have the same time again.
+ #
+ # Many sources, including:
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
+-# 
+ 
+ # From Steffen Thorsen (2012-03-26):
+ # Palestinian news sources tell that both Gaza and West Bank will start DST
+ # on Friday (Thursday midnight, 2012-03-29 24:00).
+ # Some of many sources in Arabic:
+-# 
+ # http://www.samanews.com/index.php?act=Show&id=122638
+-# 
+ #
+-# 
+ # http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html
+-# 
+ #
+ # Our brief summary:
+-# 
+ # http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
+-# 
+ 
+ # From Steffen Thorsen (2013-03-26):
+ # The following news sources tells that Palestine will "start daylight saving
+@@ -2374,10 +2417,10 @@
+ 			2:00 EgyptAsia	EE%sT	1967 Jun  5
+ 			2:00	Zion	I%sT	1996
+ 			2:00	Jordan	EE%sT	1999
+-			2:00 Palestine	EE%sT	2008 Aug 29 0:00
++			2:00 Palestine	EE%sT	2008 Aug 29  0:00
+ 			2:00	-	EET	2008 Sep
+ 			2:00 Palestine	EE%sT	2010
+-			2:00	-	EET	2010 Mar 27 0:01
++			2:00	-	EET	2010 Mar 27  0:01
+ 			2:00 Palestine	EE%sT	2011 Aug  1
+ 			2:00	-	EET	2012
+ 			2:00 Palestine	EE%sT
+@@ -2393,25 +2436,27 @@
+ # no information
+ 
+ # Philippines
+-# On 1844-08-16, Narciso Claveria, governor-general of the
++# On 1844-08-16, Narciso Clavería, governor-general of the
+ # Philippines, issued a proclamation announcing that 1844-12-30 was to
+-# be immediately followed by 1845-01-01.  Robert H. van Gent has a
+-# transcript of the decree in .
+-# The rest of the data are from Shanks & Pottenger.
++# be immediately followed by 1845-01-01; see R.H. van Gent's
++# History of the International Date Line
++# http://www.staff.science.uu.nl/~gent0113/idl/idl_philippines.htm
++# The rest of the data entries are from Shanks & Pottenger.
+ 
+-# From Paul Eggert (2006-04-25):
+-# Tomorrow's Manila Standard reports that the Philippines Department of
+-# Trade and Industry is considering adopting DST this June when the
+-# rainy season begins.  See
+-# .
+-# For now, we'll ignore this, since it's not definite and we lack details.
+-#
+-# From Jesper Norgaard Welen (2006-04-26):
++# From Jesper Nørgaard Welen (2006-04-26):
+ # ... claims that Philippines had DST last time in 1990:
+ # http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
+ # [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
+ # but no details]
+ 
++# From Paul Eggert (2014-08-14):
++# The following source says DST may be instituted November-January and again
++# March-June, but this is not definite.  It also says DST was last proclaimed
++# during the Ramos administration (1992-1998); but again, no details.
++# Carcamo D. PNoy urged to declare use of daylight saving time.
++# Philippine Star 2014-08-05
++# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Phil	1936	only	-	Nov	1	0:00	1:00	S
+ Rule	Phil	1937	only	-	Feb	1	0:00	0	-
+@@ -2428,18 +2473,39 @@
+ 
+ # Qatar
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Qatar	3:26:08 -	LMT	1920	# Al Dawhah / Doha
++Zone	Asia/Qatar	3:26:08 -	LMT	1920     # Al Dawhah / Doha
+ 			4:00	-	GST	1972 Jun
+ 			3:00	-	AST
+ 
+ # Saudi Arabia
++#
++# From Paul Eggert (2014-07-15):
++# Time in Saudi Arabia and other countries in the Arabian peninsula was not
++# standardized until relatively recently; we don't know when, and possibly it
++# has never been made official.  Richard P Hunt, in "Islam city yielding to
++# modern times", New York Times (1961-04-09), p 20, wrote that only airlines
++# observed standard time, and that people in Jeddah mostly observed quasi-solar
++# time, doing so by setting their watches at sunrise to 6 o'clock (or to 12
++# o'clock for "Arab" time).
++#
++# The TZ database cannot represent quasi-solar time; airline time is the best
++# we can do.  The 1946 foreign air news digest of the U.S. Civil Aeronautics
++# Board (OCLC 42299995) reported that the "... Arabian Government, inaugurated
++# a weekly Dhahran-Cairo service, via the Saudi Arabian cities of Riyadh and
++# Jidda, on March 14, 1947".  Shanks & Pottenger guessed 1950; go with the
++# earlier date.
++#
++# Shanks & Pottenger also state that until 1968-05-01 Saudi Arabia had two
++# time zones; the other zone, at UTC+4, was in the far eastern part of
++# the country.  Ignore this, as it's before our 1970 cutoff.
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Riyadh	3:06:52 -	LMT	1950
++Zone	Asia/Riyadh	3:06:52 -	LMT	1947 Mar 14
+ 			3:00	-	AST
+ 
+ # Singapore
+-# The data here are taken from Mok Ly Yng (2003-10-30)
+-# .
++# taken from Mok Ly Yng (2003-10-30)
++# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
+ 			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+@@ -2465,26 +2531,24 @@
+ 
+ # From Paul Eggert (1996-09-03):
+ # "Sri Lanka advances clock by an hour to avoid blackout"
+-# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
++# (, 1996-05-24,
+ # no longer available as of 1999-08-17)
+-# reported ``the country's standard time will be put forward by one hour at
+-# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
++# reported "the country's standard time will be put forward by one hour at
++# midnight Friday (1830 GMT) 'in the light of the present power crisis'."
+ #
+ # From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
+-# by Shamindra in
+-# 
+-# Daily News - Hot News Section (1996-10-26)
+-# :
++# by Shamindra in Daily News - Hot News Section
++#  (1996-10-26):
+ # With effect from 12.30 a.m. on 26th October 1996
+ # Sri Lanka will be six (06) hours ahead of GMT.
+ 
+-# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
++# From Jesper Nørgaard Welen (2006-04-14), quoting Sri Lanka News Online
+ #  (2006-04-13):
+ # 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
+ # at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
+ 
+ # From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
+-# 
++# http://today.reuters.co.uk/news/newsArticle.aspx?type=scienceNews&storyID=2006-04-12T172228Z_01_COL295762_RTRIDST_0_SCIENCE-SRILANKA-TIME-DC.XML
+ # [The Tamil Tigers] never accepted the original 1996 time change and simply
+ # kept their clocks set five and a half hours ahead of Greenwich Mean
+ # Time (GMT), in line with neighbor India.
+@@ -2498,7 +2562,7 @@
+ # twice in 1996 and probably SL Government or its standardization
+ # agencies never declared an abbreviation as a national standard.
+ #
+-# I recollect before the recent change the government annoucemments
++# I recollect before the recent change the government announcements
+ # mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
+ # Time and no mention was made about the abbreviation.
+ #
+@@ -2508,7 +2572,7 @@
+ # item....
+ #
+ # Within Sri Lanka I think LKT is well known among computer users and
+-# adminsitrators.  In my opinion SLT may not be a good choice because the
++# administrators.  In my opinion SLT may not be a good choice because the
+ # nation's largest telcom / internet operator Sri Lanka Telcom is well
+ # known by that abbreviation - simply as SLT (there IP domains are
+ # slt.lk and sltnet.lk).
+@@ -2523,13 +2587,13 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Colombo	5:19:24 -	LMT	1880
+-			5:19:32	-	MMT	1906	# Moratuwa Mean Time
++			5:19:32	-	MMT	1906        # Moratuwa Mean Time
+ 			5:30	-	IST	1942 Jan  5
+ 			5:30	0:30	IHST	1942 Sep
+-			5:30	1:00	IST	1945 Oct 16 2:00
+-			5:30	-	IST	1996 May 25 0:00
+-			6:30	-	LKT	1996 Oct 26 0:30
+-			6:00	-	LKT	2006 Apr 15 0:30
++			5:30	1:00	IST	1945 Oct 16  2:00
++			5:30	-	IST	1996 May 25  0:00
++			6:30	-	LKT	1996 Oct 26  0:30
++			6:00	-	LKT	2006 Apr 15  0:30
+ 			5:30	-	IST
+ 
+ # Syria
+@@ -2580,7 +2644,7 @@
+ # Today the AP reported "Syria will switch to summertime at midnight Thursday."
+ # http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
+ Rule	Syria	2007	only	-	Mar	lastFri	0:00	1:00	S
+-# From Jesper Norgard (2007-10-27):
++# From Jesper Nørgaard (2007-10-27):
+ # The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
+ # not take place 1st November at 0:00 o'clock but 1st November at 24:00 or
+ # rather Midnight between Thursday and Friday. This does make more sense than
+@@ -2589,7 +2653,7 @@
+ # it is implemented at midnight of the last workday before weekend...
+ #
+ # From Steffen Thorsen (2007-10-27):
+-# Jesper Norgaard Welen wrote:
++# Jesper Nørgaard Welen wrote:
+ #
+ # > "Winter local time in Syria will be observed at midnight of Thursday 1
+ # > November 2007, and the clock will be put back 1 hour."
+@@ -2605,8 +2669,7 @@
+ 
+ # From Stephen Colebourne (2008-03-17):
+ # For everyone's info, I saw an IATA time zone change for [Syria] for
+-# this month (March 2008) in the last day or so...This is the data IATA
+-# are now using:
++# this month (March 2008) in the last day or so....
+ # Country     Time Standard   --- DST Start ---   --- DST End ---  DST
+ # Name        Zone Variation   Time    Date        Time    Date
+ # Variation
+@@ -2618,16 +2681,15 @@
+ # From Arthur David Olson (2008-03-17):
+ # Here's a link to English-language coverage by the Syrian Arab News
+ # Agency (SANA)...
+-# 
+ # http://www.sana.sy/eng/21/2008/03/11/165173.htm
+-# ...which reads (in part) "The Cabinet approved the suggestion of the
++# ...which reads (in part) "The Cabinet approved the suggestion of the
+ # Ministry of Electricity to begin daylight savings time on Friday April
+ # 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd."
+ # Since Syria is two hours east of UTC, the 2200 and 2100 transition times
+ # shown above match up with midnight in Syria.
+ 
+ # From Arthur David Olson (2008-03-18):
+-# My buest guess at a Syrian rule is "the Friday nearest April 1";
++# My best guess at a Syrian rule is "the Friday nearest April 1";
+ # coding that involves either using a "Mar Fri>=29" construct that old time zone
+ # compilers can't handle  or having multiple Rules (a la Israel).
+ # For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.
+@@ -2640,37 +2702,27 @@
+ # winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
+ # clocks back 60 minutes).
+ #
+-# 
+ # http://sana.sy/ara/2/2008/10/07/195459.htm
+-# 
+ 
+ # From Steffen Thorsen (2009-03-19):
+ # Syria will start DST on 2009-03-27 00:00 this year according to many sources,
+ # two examples:
+ #
+-# 
+ # http://www.sana.sy/eng/21/2009/03/17/217563.htm
+-# 
+ # (English, Syrian Arab News # Agency)
+-# 
+ # http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209
+-# 
+ # (Arabic, gov-site)
+ #
+ # We have not found any sources saying anything about when DST ends this year.
+ #
+ # Our summary
+-# 
+ # http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html
+-# 
+ 
+ # From Steffen Thorsen (2009-10-27):
+ # The Syrian Arab News Network on 2009-09-29 reported that Syria will
+ # revert back to winter (standard) time on midnight between Thursday
+ # 2009-10-29 and Friday 2009-10-30:
+-# 
+ # http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
+-# 
+ 
+ # From Arthur David Olson (2009-10-28):
+ # We'll see if future DST switching times turn out to be end of the last
+@@ -2681,23 +2733,17 @@
+ # The "Syrian News Station" reported on 2010-03-16 that the Council of
+ # Ministers has decided that Syria will start DST on midnight Thursday
+ # 2010-04-01: (midnight between Thursday and Friday):
+-# 
+ # http://sns.sy/sns/?path=news/read/11421 (Arabic)
+-# 
+ 
+ # From Steffen Thorsen (2012-03-26):
+ # Today, Syria's government announced that they will start DST early on Friday
+ # (00:00). This is a bit earlier than the past two years.
+ #
+ # From Syrian Arab News Agency, in Arabic:
+-# 
+ # http://www.sana.sy/ara/2/2012/03/26/408215.htm
+-# 
+ #
+ # Our brief summary:
+-# 
+ # http://www.timeanddate.com/news/time/syria-dst-2012.html
+-# 
+ 
+ # From Arthur David Olson (2012-03-27):
+ # Assume last Friday in March going forward XXX.
+@@ -2710,7 +2756,7 @@
+ Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Damascus	2:25:12 -	LMT	1920	# Dimashq
++Zone	Asia/Damascus	2:25:12 -	LMT	1920 # Dimashq
+ 			2:00	Syria	EE%sT
+ 
+ # Tajikistan
+@@ -2718,24 +2764,26 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
+ 			5:00	-	DUST	1930 Jun 21 # Dushanbe Time
+-			6:00 RussiaAsia DUS%sT	1991 Mar 31 2:00s
+-			5:00	1:00	DUSST	1991 Sep  9 2:00s
+-			5:00	-	TJT		    # Tajikistan Time
++			6:00 RussiaAsia DUS%sT	1991 Mar 31  2:00s
++			5:00	1:00	DUSST	1991 Sep  9  2:00s
++			5:00	-	TJT	# Tajikistan Time
+ 
+ # Thailand
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Bangkok	6:42:04	-	LMT	1880
+ 			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
+ 			7:00	-	ICT
++Link Asia/Bangkok Asia/Phnom_Penh	# Cambodia
++Link Asia/Bangkok Asia/Vientiane	# Laos
+ 
+ # Turkmenistan
+ # From Shanks & Pottenger.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
+ 			4:00	-	ASHT	1930 Jun 21 # Ashkhabad Time
+-			5:00 RussiaAsia	ASH%sT	1991 Mar 31 2:00
++			5:00 RussiaAsia	ASH%sT	1991 Mar 31  2:00
+ 			4:00 RussiaAsia	ASH%sT	1991 Oct 27 # independence
+-			4:00 RussiaAsia	TM%sT	1992 Jan 19 2:00
++			4:00 RussiaAsia	TM%sT	1992 Jan 19  2:00
+ 			5:00	-	TMT
+ 
+ # United Arab Emirates
+@@ -2744,8 +2792,9 @@
+ 			4:00	-	GST
+ 
+ # Uzbekistan
++# Byalokoz 1919 says Uzbekistan was 4:27:53.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Samarkand	4:27:12 -	LMT	1924 May  2
++Zone	Asia/Samarkand	4:27:53 -	LMT	1924 May  2
+ 			4:00	-	SAMT	1930 Jun 21 # Samarkand Time
+ 			5:00	-	SAMT	1981 Apr  1
+ 			5:00	1:00	SAMST	1981 Oct  1
+@@ -2753,31 +2802,75 @@
+ 			5:00 RussiaAsia	SAM%sT	1991 Sep  1 # independence
+ 			5:00 RussiaAsia	UZ%sT	1992
+ 			5:00	-	UZT
+-Zone	Asia/Tashkent	4:37:12 -	LMT	1924 May  2
++# Milne says Tashkent was 4:37:10.8; round to nearest.
++Zone	Asia/Tashkent	4:37:11 -	LMT	1924 May  2
+ 			5:00	-	TAST	1930 Jun 21 # Tashkent Time
+-			6:00 RussiaAsia	TAS%sT	1991 Mar 31 2:00
++			6:00 RussiaAsia	TAS%sT	1991 Mar 31  2:00
+ 			5:00 RussiaAsia	TAS%sT	1991 Sep  1 # independence
+ 			5:00 RussiaAsia	UZ%sT	1992
+ 			5:00	-	UZT
+ 
+ # Vietnam
+ 
+-# From Paul Eggert (2013-02-21):
++# From Paul Eggert (2014-10-04):
+ # Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
+ # used in Lower Laos, Cambodia, and Annam.  But this is quite a ways
+ # from Saigon's location.  For now, ignore this and stick with Shanks
+-# and Pottenger.
++# and Pottenger for LMT before 1906.
+ 
+ # From Arthur David Olson (2008-03-18):
+-# The English-language name of Vietnam's most populous city is "Ho Chi Min City";
+-# we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
++# The English-language name of Vietnam's most populous city is "Ho Chi Minh
++# City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
+ 
+-# From Shanks & Pottenger:
++# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân:
++# Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)"
++# (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50,
++# is quoted verbatim in:
++# http://www.thoigian.com.vn/?mPage=P80D01
++# is translated by Brian Inglis in:
++# http://mm.icann.org/pipermail/tz/2014-October/021654.html
++# and is the basis for the information below.
++#
++# The 1906 transition was effective July 1 and standardized Indochina to
++# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris.
++# It's unclear whether this meant legal Paris Mean Time (00:09:21) or
++# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333...
++# and the latter 07:06:29.333... so either way it rounds to 07:06:30,
++# which is used below even though the modern-day Phù Liễn Observatory
++# is closer to 07:06:31.  Abbreviate Phù Liễn Mean Time as PLMT.
++#
++# The following transitions occurred in Indochina in general (before 1954)
++# and in South Vietnam in particular (after 1954):
++# To 07:00 on 1911-05-01.
++# To 08:00 on 1942-12-31 at 23:00.
++# To 09:00 in 1945-03-14 at 23:00.
++# To 07:00 on 1945-09-02 in Vietnam.
++# To 08:00 on 1947-04-01 in French-controlled Indochina.
++# To 07:00 on 1955-07-01 in South Vietnam.
++# To 08:00 on 1959-12-31 at 23:00 in South Vietnam.
++# To 07:00 on 1975-06-13 in South Vietnam.
++#
++# Trần cites the following sources; it's unclear which supplied the info above.
++#
++# Hoàng Xuân Hãn: "Lịch và lịch Việt Nam". Tập san Khoa học Xã hội,
++# No. 9, Paris, February 1982.
++#
++# Lê Thành Lân: "Lịch và niên biểu lịch sử hai mươi thế kỷ (0001-2010)",
++# NXB Thống kê, Hanoi, 2000.
++#
++# Lê Thành Lân: "Lịch hai thế kỷ (1802-2010) và các lịch vĩnh cửu",
++# NXB Thuận Hoá, Huế, 1995.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jun  9
+-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+-			7:00	-	ICT	1912 May
+-			8:00	-	ICT	1931 May
++Zone Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jul  1
++			7:06:30	-	PLMT	1911 May  1
++			7:00	-	ICT	1942 Dec 31 23:00
++			8:00	-	IDT	1945 Mar 14 23:00
++			9:00	-	JST	1945 Sep  2
++			7:00	-	ICT	1947 Apr  1
++			8:00	-	IDT	1955 Jul  1
++			7:00	-	ICT	1959 Dec 31 23:00
++			8:00	-	IDT	1975 Jun 13
+ 			7:00	-	ICT
+ 
+ # Yemen
+--- ./jdk/make/data/tzdata/australasia	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/australasia	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -36,13 +35,13 @@
+ # Please see the notes below for the controversy about "EST" versus "AEST" etc.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	-
+-Rule	Aus	1917	only	-	Mar	25	2:00	0	-
+-Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	-
+-Rule	Aus	1942	only	-	Mar	29	2:00	0	-
+-Rule	Aus	1942	only	-	Sep	27	2:00	1:00	-
+-Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	-
+-Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	-
++Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	D
++Rule	Aus	1917	only	-	Mar	25	2:00	0	S
++Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	D
++Rule	Aus	1942	only	-	Mar	29	2:00	0	S
++Rule	Aus	1942	only	-	Sep	27	2:00	1:00	D
++Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	S
++Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	D
+ # Go with Whitman and the Australian National Standards Commission, which
+ # says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that
+ # 1944/1945 was just like 1943/1944.
+@@ -50,26 +49,26 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # Northern Territory
+ Zone Australia/Darwin	 8:43:20 -	LMT	1895 Feb
+-			 9:00	-	CST	1899 May
+-			 9:30	Aus	CST
++			 9:00	-	ACST	1899 May
++			 9:30	Aus	AC%sT
+ # Western Australia
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AW	1991	only	-	Nov	17	2:00s	1:00	-
+-Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	-
+-Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	-
+-Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	-
++Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	D
++Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	S
++Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	D
++Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	S
++Rule	AW	1991	only	-	Nov	17	2:00s	1:00	D
++Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	S
++Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	D
++Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	S
++Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	D
+ Zone Australia/Perth	 7:43:24 -	LMT	1895 Dec
+-			 8:00	Aus	WST	1943 Jul
+-			 8:00	AW	WST
++			 8:00	Aus	AW%sT	1943 Jul
++			 8:00	AW	AW%sT
+ Zone Australia/Eucla	 8:35:28 -	LMT	1895 Dec
+-			 8:45	Aus	CWST	1943 Jul
+-			 8:45	AW	CWST
++			 8:45	Aus	ACW%sT	1943 Jul
++			 8:45	AW	ACW%sT
+ 
+ # Queensland
+ #
+@@ -85,150 +84,150 @@
+ # so use Lindeman.
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	-
+-Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	-
+-Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	-
+-Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	-
++Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	D
++Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	S
++Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	D
++Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	S
++Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	D
++Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	S
+ Zone Australia/Brisbane	10:12:08 -	LMT	1895
+-			10:00	Aus	EST	1971
+-			10:00	AQ	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AQ	AE%sT
+ Zone Australia/Lindeman  9:55:56 -	LMT	1895
+-			10:00	Aus	EST	1971
+-			10:00	AQ	EST	1992 Jul
+-			10:00	Holiday	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AQ	AE%sT	1992 Jul
++			10:00	Holiday	AE%sT
+ 
+ # South Australia
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AS	1986	only	-	Oct	19	2:00s	1:00	-
+-Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AS	1972	only	-	Feb	27	2:00s	0	-
+-Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AS	1991	only	-	Mar	3	2:00s	0	-
+-Rule	AS	1992	only	-	Mar	22	2:00s	0	-
+-Rule	AS	1993	only	-	Mar	7	2:00s	0	-
+-Rule	AS	1994	only	-	Mar	20	2:00s	0	-
+-Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AS	2006	only	-	Apr	2	2:00s	0	-
+-Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
++Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AS	1986	only	-	Oct	19	2:00s	1:00	D
++Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	D
++Rule	AS	1972	only	-	Feb	27	2:00s	0	S
++Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	S
++Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	S
++Rule	AS	1991	only	-	Mar	3	2:00s	0	S
++Rule	AS	1992	only	-	Mar	22	2:00s	0	S
++Rule	AS	1993	only	-	Mar	7	2:00s	0	S
++Rule	AS	1994	only	-	Mar	20	2:00s	0	S
++Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AS	2006	only	-	Apr	2	2:00s	0	S
++Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	S
++Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Adelaide	9:14:20 -	LMT	1895 Feb
+-			9:00	-	CST	1899 May
+-			9:30	Aus	CST	1971
+-			9:30	AS	CST
++			9:00	-	ACST	1899 May
++			9:30	Aus	AC%sT	1971
++			9:30	AS	AC%sT
+ 
+ # Tasmania
+ #
+ # From Paul Eggert (2005-08-16):
+-# 
++# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
+ # says King Island didn't observe DST from WWII until late 1971.
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
+-Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	-
+-Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	-
+-Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
+-Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
+-Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
+-Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	-
+-Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
+-Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	-
++Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	D
++Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	S
++Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	S
++Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	S
++Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	S
++Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	S
++Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	S
++Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	D
++Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	S
++Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	D
++Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	D
++Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	D
++Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	D
++Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	D
++Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Hobart	9:49:16	-	LMT	1895 Sep
+-			10:00	-	EST	1916 Oct 1 2:00
+-			10:00	1:00	EST	1917 Feb
+-			10:00	Aus	EST	1967
+-			10:00	AT	EST
++			10:00	-	AEST	1916 Oct  1  2:00
++			10:00	1:00	AEDT	1917 Feb
++			10:00	Aus	AE%sT	1967
++			10:00	AT	AE%sT
+ Zone Australia/Currie	9:35:28	-	LMT	1895 Sep
+-			10:00	-	EST	1916 Oct 1 2:00
+-			10:00	1:00	EST	1917 Feb
+-			10:00	Aus	EST	1971 Jul
+-			10:00	AT	EST
++			10:00	-	AEST	1916 Oct  1  2:00
++			10:00	1:00	AEDT	1917 Feb
++			10:00	Aus	AE%sT	1971 Jul
++			10:00	AT	AE%sT
+ 
+ # Victoria
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	-
+-Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	-
+-Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	-
+-Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
++Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	S
++Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	S
++Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	S
++Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	D
++Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	D
++Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	S
++Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	D
++Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	D
++Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	S
++Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Melbourne 9:39:52 -	LMT	1895 Feb
+-			10:00	Aus	EST	1971
+-			10:00	AV	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AV	AE%sT
+ 
+ # New South Wales
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AN	1972	only	-	Feb	27	2:00s	0	-
+-Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AN	1986	only	-	Oct	19	2:00s	1:00	-
+-Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	-
+-Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
++Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AN	1972	only	-	Feb	27	2:00s	0	S
++Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	S
++Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	S
++Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	S
++Rule	AN	1986	only	-	Oct	19	2:00s	1:00	D
++Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	D
++Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	S
++Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	D
++Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	D
++Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	S
++Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Sydney	10:04:52 -	LMT	1895 Feb
+-			10:00	Aus	EST	1971
+-			10:00	AN	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AN	AE%sT
+ Zone Australia/Broken_Hill 9:25:48 -	LMT	1895 Feb
+-			10:00	-	EST	1896 Aug 23
+-			9:00	-	CST	1899 May
+-			9:30	Aus	CST	1971
+-			9:30	AN	CST	2000
+-			9:30	AS	CST
++			10:00	-	AEST	1896 Aug 23
++			9:00	-	ACST	1899 May
++			9:30	Aus	AC%sT	1971
++			9:30	AN	AC%sT	2000
++			9:30	AS	AC%sT
+ 
+ # Lord Howe Island
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	-
+-Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	-
+-Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	-
+-Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	-
+-Rule	LH	1986	only	-	Oct	19	2:00	0:30	-
+-Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	-
+-Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	-
+-Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	-
+-Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	-
+-Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	-
+-Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	-
+-Rule	LH	2007	only	-	Mar	lastSun	2:00	0	-
+-Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	-
+-Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	-
++Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	D
++Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	S
++Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	D
++Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	S
++Rule	LH	1986	only	-	Oct	19	2:00	0:30	D
++Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	D
++Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	S
++Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	S
++Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	D
++Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	D
++Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	S
++Rule	LH	2007	only	-	Mar	lastSun	2:00	0	S
++Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	S
++Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	D
+ Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
+-			10:00	-	EST	1981 Mar
+-			10:30	LH	LHST
++			10:00	-	AEST	1981 Mar
++			10:30	LH	LH%sT
+ 
+ # Australian miscellany
+ #
+@@ -244,8 +243,8 @@
+ # Permanent occupation (scientific station) 1911-1915 and since 25 March 1948;
+ # sealing and penguin oil station operated Nov 1899 to Apr 1919.  See the
+ # Tasmania Parks & Wildlife Service history of sealing at Macquarie Island
+-# 
+-# .
++# http://www.parks.tas.gov.au/index.aspx?base=1828
++# http://www.parks.tas.gov.au/index.aspx?base=1831
+ # Guess that it was like Australia/Hobart while inhabited before 2010.
+ #
+ # From Steffen Thorsen (2010-03-10):
+@@ -256,16 +255,16 @@
+ #
+ # From Arthur David Olson (2013-05-23):
+ # The 1919 transition is overspecified below so pre-2013 zics
+-# will produce a binary file with an EST-type as the first 32-bit type;
++# will produce a binary file with an [A]EST-type as the first 32-bit type;
+ # this is required for correct handling of times before 1916 by
+ # pre-2013 versions of localtime.
+ Zone Antarctica/Macquarie 0	-	zzz	1899 Nov
+-			10:00	-	EST	1916 Oct 1 2:00
+-			10:00	1:00	EST	1917 Feb
+-			10:00	Aus	EST	1919 Apr 1 0:00s
++			10:00	-	AEST	1916 Oct  1  2:00
++			10:00	1:00	AEDT	1917 Feb
++			10:00	Aus	AE%sT	1919 Apr  1  0:00s
+ 			0	-	zzz	1948 Mar 25
+-			10:00	Aus	EST	1967
+-			10:00	AT	EST	2010 Apr 4 3:00
++			10:00	Aus	AE%sT	1967
++			10:00	AT	AE%sT	2010 Apr  4  3:00
+ 			11:00	-	MIST	# Macquarie I Standard Time
+ 
+ # Christmas
+@@ -273,24 +272,14 @@
+ Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
+ 			7:00	-	CXT	# Christmas Island Time
+ 
+-# Cook Is
+-# From Shanks & Pottenger:
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
+-Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
+-Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901		# Avarua
+-			-10:30	-	CKT	1978 Nov 12	# Cook Is Time
+-			-10:00	Cook	CK%sT
+-
+-# Cocos
++# Cocos (Keeling) Is
+ # These islands were ruled by the Ross family from about 1830 to 1978.
+ # We don't know when standard time was introduced; for now, we guess 1900.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Cocos	6:27:40	-	LMT	1900
+ 			6:30	-	CCT	# Cocos Islands Time
+ 
++
+ # Fiji
+ 
+ # Milne gives 11:55:44 for Suva.
+@@ -300,20 +289,13 @@
+ # from November 29th 2009  to April 25th 2010.
+ #
+ # "Daylight savings to commence this month"
+-# 
+ # http://www.radiofiji.com.fj/fullstory.php?id=23719
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_fiji01.html
+-# 
+ 
+ # From Steffen Thorsen (2009-11-10):
+ # The Fiji Government has posted some more details about the approved
+ # amendments:
+-# 
+ # http://www.fiji.gov.fj/publish/page_16198.shtml
+-# 
+ 
+ # From Steffen Thorsen (2010-03-03):
+ # The Cabinet in Fiji has decided to end DST about a month early, on
+@@ -322,35 +304,24 @@
+ # 2011 (last Sunday a good guess?).
+ #
+ # Official source:
+-# 
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166
+-# 
+ #
+ # A bit more background info here:
+-# 
+ # http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html
+-# 
+ 
+ # From Alexander Krivenyshev (2010-10-24):
+ # According to Radio Fiji and Fiji Times online, Fiji will end DST 3
+ # weeks earlier than expected - on March 6, 2011, not March 27, 2011...
+ # Here is confirmation from Government of the Republic of the Fiji Islands,
+ # Ministry of Information (fiji.gov.fj) web site:
+-# 
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
+-# 
+ 
+ # From Steffen Thorsen (2011-10-03):
+ # Now the dates have been confirmed, and at least our start date
+ # assumption was correct (end date was one week wrong).
+ #
+-# 
+-# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+-# 
++# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+ # which says
+ # Members of the public are reminded to change their time to one hour in
+ # advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
+@@ -360,9 +331,7 @@
+ # Another change to the Fiji DST end date. In the TZ database the end date for
+ # Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.
+ #
+-# 
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155
+-# 
+ # states:
+ #
+ # The end of daylight saving scheduled initially for the 26th of February 2012
+@@ -385,31 +354,38 @@
+ # Fiji will end DST on 2014-01-19 02:00:
+ # http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
+ 
+-# From Paul Eggert (2014-01-10):
+-# For now, guess that Fiji springs forward the Sunday before the fourth
+-# Monday in October, and springs back the penultimate Sunday in January.
+-# This is ad hoc, but matches recent practice.
++# From Ken Rylander (2014-10-20):
++# DST will start Nov. 2 this year.
++# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-NOVEMBER-2ND.aspx
++
++# From Paul Eggert (2014-10-20):
++# For now, guess DST from 02:00 the first Sunday in November to
++# 03:00 the first Sunday on or after January 18.  Although ad hoc, it
++# matches this year's plan and seems more likely to match future
++# practice than guessing no DST.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+ Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+ Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
+ Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+-Rule	Fiji	2010	max	-	Oct	Sun>=21	2:00	1:00	S
++Rule	Fiji	2010	2013	-	Oct	Sun>=21	2:00	1:00	S
+ Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+ Rule	Fiji	2012	2013	-	Jan	Sun>=18	3:00	0	-
+-Rule	Fiji	2014	max	-	Jan	Sun>=18	2:00	0	-
++Rule	Fiji	2014	only	-	Jan	Sun>=18	2:00	0	-
++Rule	Fiji	2014	max	-	Nov	Sun>=1	2:00	1:00	S
++Rule	Fiji	2015	max	-	Jan	Sun>=18	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26	# Suva
++Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26 # Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+ 
+ # French Polynesia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct	# Rikitea
++Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct # Rikitea
+ 			 -9:00	-	GAMT	# Gambier Time
+ Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
+ 			 -9:30	-	MART	# Marquesas Time
+-Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct	# Papeete
++Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct # Papeete
+ 			-10:00	-	TAHT	# Tahiti Time
+ # Clipperton (near North America) is administered from French Polynesia;
+ # it is uninhabited.
+@@ -417,14 +393,14 @@
+ # Guam
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Guam	-14:21:00 -	LMT	1844 Dec 31
+-			 9:39:00 -	LMT	1901		# Agana
+-			10:00	-	GST	2000 Dec 23	# Guam
++			 9:39:00 -	LMT	1901        # Agana
++			10:00	-	GST	2000 Dec 23 # Guam
+ 			10:00	-	ChST	# Chamorro Standard Time
+ 
+ # Kiribati
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Tarawa	 11:32:04 -	LMT	1901		# Bairiki
+-			 12:00	-	GILT		 # Gilbert Is Time
++Zone Pacific/Tarawa	 11:32:04 -	LMT	1901 # Bairiki
++			 12:00	-	GILT	# Gilbert Is Time
+ Zone Pacific/Enderbury	-11:24:20 -	LMT	1901
+ 			-12:00	-	PHOT	1979 Oct # Phoenix Is Time
+ 			-11:00	-	PHOT	1995
+@@ -438,7 +414,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Saipan	-14:17:00 -	LMT	1844 Dec 31
+ 			 9:43:00 -	LMT	1901
+-			 9:00	-	MPT	1969 Oct # N Mariana Is Time
++			 9:00	-	MPT	1969 Oct    # N Mariana Is Time
+ 			10:00	-	MPT	2000 Dec 23
+ 			10:00	-	ChST	# Chamorro Standard Time
+ 
+@@ -449,24 +425,24 @@
+ 			12:00	-	MHT
+ Zone Pacific/Kwajalein	11:09:20 -	LMT	1901
+ 			11:00	-	MHT	1969 Oct
+-			-12:00	-	KWAT	1993 Aug 20	# Kwajalein Time
++			-12:00	-	KWAT	1993 Aug 20 # Kwajalein Time
+ 			12:00	-	MHT
+ 
+ # Micronesia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Chuuk	10:07:08 -	LMT	1901
+-			10:00	-	CHUT			# Chuuk Time
+-Zone Pacific/Pohnpei	10:32:52 -	LMT	1901		# Kolonia
+-			11:00	-	PONT			# Pohnpei Time
++			10:00	-	CHUT	# Chuuk Time
++Zone Pacific/Pohnpei	10:32:52 -	LMT	1901 # Kolonia
++			11:00	-	PONT	# Pohnpei Time
+ Zone Pacific/Kosrae	10:51:56 -	LMT	1901
+-			11:00	-	KOST	1969 Oct	# Kosrae Time
++			11:00	-	KOST	1969 Oct # Kosrae Time
+ 			12:00	-	KOST	1999
+ 			11:00	-	KOST
+ 
+ # Nauru
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15	# Uaobe
+-			11:30	-	NRT	1942 Mar 15	# Nauru Time
++Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15 # Uaobe
++			11:30	-	NRT	1942 Mar 15 # Nauru Time
+ 			9:00	-	JST	1944 Aug 15
+ 			11:30	-	NRT	1979 May
+ 			12:00	-	NRT
+@@ -479,7 +455,7 @@
+ # Shanks & Pottenger say the following was at 2:00; go with IATA.
+ Rule	NC	1997	only	-	Mar	 2	2:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13
++Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13 # Nouméa
+ 			11:00	NC	NC%sT
+ 
+ 
+@@ -496,7 +472,8 @@
+ Rule	NZ	1934	1940	-	Sep	lastSun	2:00	0:30	S
+ Rule	NZ	1946	only	-	Jan	 1	0:00	0	S
+ # Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
+-# convenient notation for this so we must duplicate the Rule lines.
++# convenient single notation for the date and time of this transition
++# so we must duplicate the Rule lines.
+ Rule	NZ	1974	only	-	Nov	Sun>=1	2:00s	1:00	D
+ Rule	Chatham	1974	only	-	Nov	Sun>=1	2:45s	1:00	D
+ Rule	NZ	1975	only	-	Feb	lastSun	2:00s	0	S
+@@ -519,13 +496,14 @@
+ Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
+ 			11:30	NZ	NZ%sT	1946 Jan  1
+ 			12:00	NZ	NZ%sT
+-Zone Pacific/Chatham	12:13:48 -	LMT	1957 Jan  1
++Zone Pacific/Chatham	12:13:48 -	LMT	1868 Nov  2
++			12:15	-	CHAST	1946 Jan  1
+ 			12:45	Chatham	CHA%sT
+ 
+ Link Pacific/Auckland Antarctica/McMurdo
+ 
+ # Auckland Is
+-# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
++# uninhabited; Māori and Moriori, colonial settlers, pastoralists, sealers,
+ # and scientific personnel have wintered
+ 
+ # Campbell I
+@@ -534,48 +512,82 @@
+ # previously whalers, sealers, pastoralists, and scientific personnel wintered
+ # was probably like Pacific/Auckland
+ 
++# Cook Is
++# From Shanks & Pottenger:
++# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
++Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
++Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901        # Avarua
++			-10:30	-	CKT	1978 Nov 12 # Cook Is Time
++			-10:00	Cook	CK%sT
++
+ ###############################################################################
+ 
+ 
+ # Niue
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Niue	-11:19:40 -	LMT	1901		# Alofi
+-			-11:20	-	NUT	1951	# Niue Time
+-			-11:30	-	NUT	1978 Oct 1
++Zone	Pacific/Niue	-11:19:40 -	LMT	1901        # Alofi
++			-11:20	-	NUT	1951        # Niue Time
++			-11:30	-	NUT	1978 Oct  1
+ 			-11:00	-	NUT
+ 
+ # Norfolk
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Norfolk	11:11:52 -	LMT	1901		# Kingston
+-			11:12	-	NMT	1951	# Norfolk Mean Time
+-			11:30	-	NFT		# Norfolk Time
++Zone	Pacific/Norfolk	11:11:52 -	LMT	1901 # Kingston
++			11:12	-	NMT	1951 # Norfolk Mean Time
++			11:30	-	NFT	# Norfolk Time
+ 
+ # Palau (Belau)
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Palau	8:57:56 -	LMT	1901		# Koror
++Zone Pacific/Palau	8:57:56 -	LMT	1901 # Koror
+ 			9:00	-	PWT	# Palau Time
+ 
+ # Papua New Guinea
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Port_Moresby 9:48:40 -	LMT	1880
+-			9:48:32	-	PMMT	1895	# Port Moresby Mean Time
+-			10:00	-	PGT		# Papua New Guinea Time
++			9:48:32	-	PMMT	1895 # Port Moresby Mean Time
++			10:00	-	PGT	# Papua New Guinea Time
++#
++# From Paul Eggert (2014-10-13):
++# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
++# the most people even though it was devastated in the Bougainville Civil War.
++#
++# Although Shanks gives 1942-03-15 / 1943-11-01 for JST, these dates
++# are apparently rough guesswork from the starts of military campaigns.
++# The World War II entries below are instead based on Arawa-Kieta.
++# The Japanese occupied Kieta in July 1942,
++# according to the Pacific War Online Encyclopedia
++# http://pwencycl.kgbudge.com/B/o/Bougainville.htm
++# and seem to have controlled it until their 1945-08-21 surrender.
++#
++# The Autonomous Region of Bougainville plans to switch from UTC+10 to UTC+11
++# on 2014-12-28 at 02:00.  They call UTC+11 "Bougainville Standard Time";
++# abbreviate this as BST.  See:
++# http://www.bougainville24.com/bougainville-issues/bougainville-gets-own-timezone/
++#
++Zone Pacific/Bougainville 10:22:16 -	LMT	1880
++			 9:48:32 -	PMMT	1895
++			10:00	-	PGT	1942 Jul
++			 9:00	-	JST	1945 Aug 21
++			10:00	-	PGT	2014 Dec 28  2:00
++			11:00	-	BST
+ 
+ # Pitcairn
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901		# Adamstown
+-			-8:30	-	PNT	1998 Apr 27 00:00
++Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901        # Adamstown
++			-8:30	-	PNT	1998 Apr 27  0:00
+ 			-8:00	-	PST	# Pitcairn Standard Time
+ 
+ # American Samoa
+ Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
+ 			-11:22:48 -	LMT	1911
+-			-11:30	-	SAMT	1950		# Samoa Time
+-			-11:00	-	NST	1967 Apr	# N=Nome
+-			-11:00	-	BST	1983 Nov 30	# B=Bering
+-			-11:00	-	SST			# S=Samoa
++			-11:00	-	NST	1967 Apr    # N=Nome
++			-11:00	-	BST	1983 Nov 30 # B=Bering
++			-11:00	-	SST	            # S=Samoa
+ 
+-# Samoa
++# Samoa (formerly and also known as Western Samoa)
+ 
+ # From Steffen Thorsen (2009-10-16):
+ # We have been in contact with the government of Samoa again, and received
+@@ -586,141 +598,80 @@
+ # Sunday of April 2011."
+ #
+ # Background info:
+-# 
+ # http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
+-# 
+ #
+ # Samoa's Daylight Saving Time Act 2009 is available here, but does not
+ # contain any dates:
+-# 
+ # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
+-# 
+ 
+ # From Laupue Raymond Hughes (2010-10-07):
+ # Please see
+-# 
+ # http://www.mcil.gov.ws
+-# ,
+ # the Ministry of Commerce, Industry and Labour (sideframe) "Last Sunday
+ # September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight
+ # to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
+ # backwards from 1:00am to 12:00am"
+ 
+ # From Laupue Raymond Hughes (2011-03-07):
+-# I believe this will be posted shortly on the website
+-# 
+-# www.mcil.gov.ws
+-# 
++# [http://www.mcil.gov.ws/ftcd/daylight_saving_2011.pdf]
+ #
+-# PUBLIC NOTICE ON DAYLIGHT SAVING TIME
+-#
+-# Pursuant to the Daylight Saving Act 2009 and Cabinets decision,
+-# businesses and the general public are hereby advised that daylight
+-# saving time is on the first Saturday of April 2011 (02/04/11).
+-#
+-# The public is therefore advised that when the standard time strikes
+-# the hour of four oclock (4.00am or 0400 Hours) on the 2nd April 2011,
+-# then all instruments used to measure standard time are to be
+-# adjusted/changed to three oclock (3:00am or 0300Hrs).
+-#
+-# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
+-# INDUSTRY AND LABOUR 28th February 2011
++# ... when the standard time strikes the hour of four o'clock (4.00am
++# or 0400 Hours) on the 2nd April 2011, then all instruments used to
++# measure standard time are to be adjusted/changed to three o'clock
++# (3:00am or 0300Hrs).
+ 
+-# From David Zuelke (2011-05-09):
++# From David Zülke (2011-05-09):
+ # Subject: Samoa to move timezone from east to west of international date line
+ #
+-# 
+ # http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
+-# 
+ 
+-# From Mark Sim-Smith (2011-08-17):
+-# I have been in contact with Leilani Tuala Warren from the Samoa Law
+-# Reform Commission, and she has sent me a copy of the Bill that she
+-# confirmed has been passed...Most of the sections are about maps rather
+-# than the time zone change, but I'll paste the relevant bits below. But
+-# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
+-# changes from UTC-11 to UTC+13:
+-#
+-# International Date Line Bill 2011
+-#
+-# AN ACT to provide for the change to standard time in Samoa and to make
+-# consequential amendments to the position of the International Date
+-# Line, and for related purposes.
+-#
+-# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
+-# assembled as follows:
+-#
+-# 1. Short title and commencement-(1) This Act may be cited as the
+-# International Date Line Act 2011. (2) Except for section 5(3) this Act
+-# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
+-# Section 5(3) commences on the date of assent by the Head of State.
+-#
+-# [snip]
+-#
+-# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
+-# other statute of Samoa which refers to 'Samoa standard time' means the
+-# time 13 hours in advance of Co-ordinated Universal Time.
+-#
+-# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
+-# standard time shall be set at 13 hours in advance of Co-ordinated
+-# Universal Time for the whole of Samoa. (2) All references to Samoa's
+-# time zone and to Samoa standard time in Samoa in all legislation and
+-# instruments after the commencement of this Act shall be references to
+-# Samoa standard time as provided for in this Act. (3) Nothing in this
+-# Act affects the provisions of the Daylight Saving Act 2009, except that
+-# it defines Samoa standard time....
++# From Paul Eggert (2014-06-27):
++# The International Date Line Act 2011
++# http://www.parliament.gov.ws/images/ACTS/International_Date_Line_Act__2011_-_Eng.pdf
++# changed Samoa from UTC-11 to UTC+13, effective "12 o'clock midnight, on
++# Thursday 29th December 2011".  The International Date Line was adjusted
++# accordingly.
+ 
+ # From Laupue Raymond Hughes (2011-09-02):
+-# 
+ # http://www.mcil.gov.ws/mcil_publications.html
+-# 
+ #
+ # here is the official website publication for Samoa DST and dateline change
+ #
+ # DST
+-# Year	End	Time	Start	Time
+-# 2011	- - -	- - -	24 September	3:00am to 4:00am
+-# 2012	01 April	4:00am to 3:00am	- - -	- - -
++# Year  End      Time              Start        Time
++# 2011  - - -    - - -             24 September 3:00am to 4:00am
++# 2012  01 April 4:00am to 3:00am  - - -        - - -
+ #
+ # Dateline Change skip Friday 30th Dec 2011
+ # Thursday 29th December 2011	23:59:59 Hours
+ # Saturday 31st December 2011	00:00:00 Hours
+ #
+-# Clarification by Tim Parenti (2012-01-03):
+-# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
+-# seasons, there is not yet any indication that this trend will continue on
+-# a regular basis. For now, we have explicitly listed the transitions below.
+-#
+-# From Nicky (2012-09-10):
++# From Nicholas Pereira (2012-09-10):
+ # Daylight Saving Time commences on Sunday 30th September 2012 and
+-# ends on Sunday 7th of April 2013.
+-#
+-# Please find link below for more information.
++# ends on Sunday 7th of April 2013....
+ # http://www.mcil.gov.ws/mcil_publications.html
+ #
+-# That publication also includes dates for Summer of 2013/4 as well
+-# which give the impression of a pattern in selecting dates for the
+-# future, so for now, we will guess this will continue.
++# From Paul Eggert (2014-07-08):
++# That web page currently lists transitions for 2012/3 and 2013/4.
++# Assume the pattern instituted in 2012 will continue indefinitely.
+ 
+-# Western Samoa
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	WS	2010	only	-	Sep	lastSun	0:00	1	D
++Rule	WS	2011	only	-	Apr	Sat>=1	4:00	0	S
++Rule	WS	2011	only	-	Sep	lastSat	3:00	1	D
++Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	S
+ Rule	WS	2012	max	-	Sep	lastSun	3:00	1	D
+-Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+-			-11:30	-	SAMT	1950		# Samoa Time
+-			-11:00	-	WST	2010 Sep 26
+-			-11:00	1:00	WSDT	2011 Apr 2 4:00
+-			-11:00	-	WST	2011 Sep 24 3:00
+-			-11:00	1:00	WSDT	2011 Dec 30
+-			 13:00	1:00	WSDT	2012 Apr Sun>=1 4:00
++			-11:30	-	WSST	1950
++			-11:00	WS	S%sT	2011 Dec 29 24:00 # S=Samoa
+ 			 13:00	WS	WS%sT
+ 
+ # Solomon Is
+ # excludes Bougainville, for which see Papua New Guinea
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct	# Honiara
++Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct # Honiara
+ 			11:00	-	SBT	# Solomon Is Time
+ 
+ # Tokelau Is
+@@ -744,7 +695,7 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
+-			-11:00	-	TKT 2011 Dec 30	# Tokelau Time
++			-11:00	-	TKT	2011 Dec 30 # Tokelau Time
+ 			13:00	-	TKT
+ 
+ # Tonga
+@@ -804,8 +755,8 @@
+ # time from Operation Newsreel (Hardtack I/Teak shot, 1958-08-01) to the last
+ # Operation Fishbowl shot (Tightrope, 1962-11-04).... [See] Herman Hoerlin,
+ # "The United States High-Altitude Test Experience: A Review Emphasizing the
+-# Impact on the Environment", Los Alamos LA-6405, Oct 1976
+-# .
++# Impact on the Environment", Los Alamos LA-6405, Oct 1976.
++# http://www.fas.org/sgp/othergov/doe/lanl/docs1/00322994.pdf
+ # See the table on page 4 where he lists GMT and local times for the tests; a
+ # footnote for the JI tests reads that local time is "JI time = Hawaii Time
+ # Minus One Hour".
+@@ -820,7 +771,7 @@
+ # From Mark Brader (2005-01-23):
+ # [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+ # published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+-# reproduced a Pan American Airways timeables from 1936, for their weekly
++# reproduced a Pan American Airways timetable from 1936, for their weekly
+ # "Orient Express" flights between San Francisco and Manila, and connecting
+ # flights to Chicago and the US East Coast.  As it uses some time zone
+ # designations that I've never seen before:....
+@@ -830,9 +781,9 @@
+ Zone Pacific/Midway	-11:49:28 -	LMT	1901
+ 			-11:00	-	NST	1956 Jun  3
+ 			-11:00	1:00	NDT	1956 Sep  2
+-			-11:00	-	NST	1967 Apr	# N=Nome
+-			-11:00	-	BST	1983 Nov 30	# B=Bering
+-			-11:00	-	SST			# S=Samoa
++			-11:00	-	NST	1967 Apr    # N=Nome
++			-11:00	-	BST	1983 Nov 30 # B=Bering
++			-11:00	-	SST	            # S=Samoa
+ 
+ # Palmyra
+ # uninhabited since World War II; was probably like Pacific/Kiritimati
+@@ -852,7 +803,7 @@
+ Rule	Vanuatu	1992	1993	-	Jan	Sun>=23	0:00	0	-
+ Rule	Vanuatu	1992	only	-	Oct	Sun>=23	0:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13		# Vila
++Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13 # Vila
+ 			11:00	Vanuatu	VU%sT	# Vanuatu Time
+ 
+ # Wallis and Futuna
+@@ -864,188 +815,213 @@
+ 
+ # NOTES
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2013-02-21):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Another source occasionally used is Edward W. Whitman, World Time Differences,
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
+ # For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
+ #
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+-# I invented the abbreviations marked `*' in the following table;
++# I invented the abbreviations marked '*' in the following table;
+ # the rest are from earlier versions of this file, or from other sources.
+ # Corrections are welcome!
+-#		std dst
+-#		LMT	Local Mean Time
+-#	  8:00	WST WST	Western Australia
+-#	  8:45	CWST CWST Central Western Australia*
+-#	  9:00	JST	Japan
+-#	  9:30	CST CST	Central Australia
+-#	 10:00	EST EST	Eastern Australia
+-#	 10:00	ChST	Chamorro
+-#	 10:30	LHST LHST Lord Howe*
+-#	 11:30	NZMT NZST New Zealand through 1945
+-#	 12:00	NZST NZDT New Zealand 1946-present
+-#	 12:45	CHAST CHADT Chatham*
+-#	-11:00	SST	Samoa
+-#	-10:00	HST	Hawaii
+-#	- 8:00	PST	Pitcairn*
++#		std	dst
++#		LMT		Local Mean Time
++#	  8:00	AWST	AWDT	Western Australia
++#	  8:45	ACWST	ACWDT	Central Western Australia*
++#	  9:00	JST		Japan
++#	  9:30	ACST	ACDT	Central Australia
++#	 10:00	AEST	AEDT	Eastern Australia
++#	 10:00	ChST		Chamorro
++#	 10:30	LHST	LHDT	Lord Howe*
++#	 11:00	BST		Bougainville*
++#	 11:30	NZMT	NZST	New Zealand through 1945
++#	 12:00	NZST	NZDT	New Zealand 1946-present
++#	 12:15	CHAST		Chatham through 1945*
++#	 12:45	CHAST	CHADT	Chatham 1946-present*
++#	 13:00	WSST	WSDT	(western) Samoa 2011-present*
++#	-11:30	WSST		Western Samoa through 1950*
++#	-11:00	SST		Samoa
++#	-10:00	HST		Hawaii
++#	- 8:00	PST		Pitcairn*
+ #
+-# See the `northamerica' file for Hawaii.
+-# See the `southamerica' file for Easter I and the Galapagos Is.
++# See the 'northamerica' file for Hawaii.
++# See the 'southamerica' file for Easter I and the Galápagos Is.
+ 
+ ###############################################################################
+ 
+ # Australia
+ 
++# From Paul Eggert (2014-06-30):
++# Daylight saving time has long been controversial in Australia, pitting
++# region against region, rural against urban, and local against global.
++# For example, in her review of Graeme Davison's _The Unforgiving
++# Minute: how Australians learned to tell the time_ (1993), Perth native
++# Phillipa J Martyr wrote, "The section entitled 'Saving Daylight' was
++# very informative, but was (as can, sadly, only be expected from a
++# Melbourne-based study) replete with the usual chuckleheaded
++# Queenslanders and straw-chewing yokels from the West prattling fables
++# about fading curtains and crazed farm animals."
++# Electronic Journal of Australian and New Zealand History (1997-03-03)
++# http://www.jcu.edu.au/aff/history/reviews/davison.htm
++
+ # From Paul Eggert (2005-12-08):
+-# 
+ # Implementation Dates of Daylight Saving Time within Australia
+-#  summarizes daylight saving issues in Australia.
++# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
++# summarizes daylight saving issues in Australia.
+ 
+ # From Arthur David Olson (2005-12-12):
+-# 
+ # Lawlink NSW:Daylight Saving in New South Wales
+-#  covers New South Wales in particular.
++# http://www.lawlink.nsw.gov.au/lawlink/Corporate/ll_agdinfo.nsf/pages/community_relations_daylight_saving
++# covers New South Wales in particular.
+ 
+ # From John Mackin (1991-03-06):
+-# We in Australia have _never_ referred to DST as `daylight' time.
+-# It is called `summer' time.  Now by a happy coincidence, `summer'
+-# and `standard' happen to start with the same letter; hence, the
++# We in Australia have _never_ referred to DST as 'daylight' time.
++# It is called 'summer' time.  Now by a happy coincidence, 'summer'
++# and 'standard' happen to start with the same letter; hence, the
+ # abbreviation does _not_ change...
+ # The legislation does not actually define abbreviations, at least
+ # in this State, but the abbreviation is just commonly taken to be the
+ # initials of the phrase, and the legislation here uniformly uses
+-# the phrase `summer time' and does not use the phrase `daylight
++# the phrase 'summer time' and does not use the phrase 'daylight
+ # time'.
+ # Announcers on the Commonwealth radio network, the ABC (for Australian
+-# Broadcasting Commission), use the phrases `Eastern Standard Time'
+-# or `Eastern Summer Time'.  (Note, though, that as I say in the
++# Broadcasting Commission), use the phrases 'Eastern Standard Time'
++# or 'Eastern Summer Time'.  (Note, though, that as I say in the
+ # current australasia file, there is really no such thing.)  Announcers
+ # on its overseas service, Radio Australia, use the same phrases
+-# prefixed by the word `Australian' when referring to local times;
++# prefixed by the word 'Australian' when referring to local times;
+ # time announcements on that service, naturally enough, are made in UTC.
+ 
+-# From Arthur David Olson (1992-03-08):
+-# Given the above, what's chosen for year-round use is:
+-#	CST	for any place operating at a GMTOFF of 9:30
+-#	WST	for any place operating at a GMTOFF of 8:00
+-#	EST	for any place operating at a GMTOFF of 10:00
+-
+-# From Chuck Soper (2006-06-01):
+-# I recently found this Australian government web page on time zones:
+-# 
+-# And this government web page lists time zone names and abbreviations:
+-# 
+-
+-# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
+-# versus "AEST" etc.:
++# From Paul Eggert (2014-06-30):
+ #
+-# I see the following points of dispute:
++# Inspired by Mackin's remarks quoted above, earlier versions of this
++# file used "EST" for both Eastern Standard Time and Eastern Summer
++# Time in Australia, and similarly for "CST", "CWST", and "WST".
++# However, these abbreviations were confusing and were not common
++# practice among Australians, and there were justifiable complaints
++# about them, so I attempted to survey current Australian usage.
++# For the tz database, the full English phrase is not that important;
++# what matters is the abbreviation.  It's difficult to survey the web
++# directly for abbreviation usage, as there are so many false hits for
++# strings like "EST" and "EDT", so I looked for pages that defined an
++# abbreviation for eastern or central DST in Australia, and got the
++# following numbers of unique hits for the listed Google queries:
+ #
+-# * How important are unique time zone abbreviations?
++#   10 "Eastern Daylight Time AEST" site:au [some are false hits]
++#   10 "Eastern Summer Time AEST" site:au
++#   10 "Summer Time AEDT" site:au
++#   13 "EDST Eastern Daylight Saving Time" site:au
++#   18 "Summer Time ESST" site:au
++#   28 "Eastern Daylight Saving Time EDST" site:au
++#   39 "EDT Eastern Daylight Time" site:au [some are false hits]
++#   53 "Eastern Daylight Time EDT" site:au [some are false hits]
++#   54 "AEDT Australian Eastern Daylight Time" site:au
++#  182 "Eastern Daylight Time AEDT" site:au
+ #
+-#   Here I tend to agree with the point (most recently made by Chris
+-#   Newman) that unique abbreviations should not be essential for proper
+-#   operation of software.  We have other instances of ambiguity
+-#   (e.g. "IST" denoting both "Israel Standard Time" and "Indian
+-#   Standard Time"), and they are not likely to go away any time soon.
+-#   In the old days, some software mistakenly relied on unique
+-#   abbreviations, but this is becoming less true with time, and I don't
+-#   think it's that important to cater to such software these days.
++#   17 "Central Daylight Time CDT" site:au [some are false hits]
++#   46 "Central Daylight Time ACDT" site:au
+ #
+-#   On the other hand, there is another motivation for unambiguous
+-#   abbreviations: it cuts down on human confusion.  This is
+-#   particularly true for Australia, where "EST" can mean one thing for
+-#   time T and a different thing for time T plus 1 second.
++# I tried several other variants (e.g., "Eastern Summer Time EST") but
++# they all returned fewer than 10 unique hits.  I also looked for pages
++# mentioning both "western standard time" and an abbreviation, since
++# there is no WST in the US to generate false hits, and found:
+ #
+-# * Does the relevant legislation indicate which abbreviations should be used?
++#  156 "western standard time" AWST site:au
++#  226 "western standard time" WST site:au
+ #
+-#   Here I tend to think that things are a mess, just as they are in
+-#   many other countries.  We Americans are currently disagreeing about
+-#   which abbreviation to use for the newly legislated Chamorro Standard
+-#   Time, for example.
++# I then surveyed the top ten newspapers in Australia by circulation as
++# listed in Wikipedia, using Google queries like "AEDT site:heraldsun.com.au"
++# and obtaining estimated counts from the initial page of search results.
++# All ten papers greatly preferred "AEDT" to "EDT".  The papers
++# surveyed were the Herald Sun, The Daily Telegraph, The Courier-Mail,
++# The Sydney Morning Herald, The West Australian, The Age, The Advertiser,
++# The Australian, The Financial Review, and The Herald (Newcastle).
+ #
+-#   Personally, I would prefer to use common practice; I would like to
+-#   refer to legislation only for examples of common practice, or as a
+-#   tiebreaker.
++# I also searched for historical usage, to see whether abbreviations
++# like "AEDT" are new.  A Trove search 
++# found only one newspaper (The Canberra Times) with a house style
++# dating back to the 1970s, I expect because other newspapers weren't
++# fully indexed.  The Canberra Times strongly preferred abbreviations
++# like "AEDT".  The first occurrence of "AEDT" was a World Weather
++# column (1971-11-17, page 24), and of "ACDT" was a Scoreboard column
++# (1993-01-24, p 16).  The style was the typical usage but was not
++# strictly enforced; for example, "Welcome to the twilight zones ..."
++# (1994-10-29, p 1) uses the abbreviations AEST/AEDT, CST/CDT, and
++# WST, and goes on to say, "The confusion and frustration some feel
++# about the lack of uniformity among Australia's six states and two
++# territories has prompted one group to form its very own political
++# party -- the Sydney-based Daylight Saving Extension Party."
+ #
+-# * Do Australians more often use "Eastern Daylight Time" or "Eastern
+-#   Summer Time"?  Do they typically prefix the time zone names with
+-#   the word "Australian"?
++# I also surveyed federal government sources.  They did not agree:
+ #
+-#   My own impression is that both "Daylight Time" and "Summer Time" are
+-#   common and are widely understood, but that "Summer Time" is more
+-#   popular; and that the leading "A" is also common but is omitted more
+-#   often than not.  I just used AltaVista advanced search and got the
+-#   following count of page hits:
++#   The Australian Government (2014-03-26)
++#   http://australia.gov.au/about-australia/our-country/time
++#   (This document was produced by the Department of Finance.)
++#   AEST ACST AWST AEDT ACDT
+ #
+-#     1,103 "Eastern Summer Time" AND domain:au
+-#       971 "Australian Eastern Summer Time" AND domain:au
+-#       613 "Eastern Daylight Time" AND domain:au
+-#       127 "Australian Eastern Daylight Time" AND domain:au
++#   Bureau of Meteorology (2012-11-08)
++#   http://www.bom.gov.au/climate/averages/tables/daysavtm.shtml
++#   EST CST WST EDT CDT
+ #
+-#   Here "Summer" seems quite a bit more popular than "Daylight",
+-#   particularly when we know the time zone is Australian and not US,
+-#   say.  The "Australian" prefix seems to be popular for Eastern Summer
+-#   Time, but unpopular for Eastern Daylight Time.
++#   Civil Aviation Safety Authority (undated)
++#   http://services.casa.gov.au/outnback/inc/pages/episode3/episode-3_time_zones.shtml
++#   EST CST WST (no abbreviations given for DST)
+ #
+-#   For abbreviations, tools like AltaVista are less useful because of
+-#   ambiguity.  Many hits are not really time zones, unfortunately, and
+-#   many hits denote US time zones and not Australian ones.  But here
+-#   are the hit counts anyway:
++#   Geoscience Australia (2011-11-24)
++#   http://www.ga.gov.au/geodesy/astro/sunrise.jsp
++#   AEST ACST AWST AEDT ACDT
+ #
+-#     161,304 "EST" and domain:au
+-#      25,156 "EDT" and domain:au
+-#      18,263 "AEST" and domain:au
+-#      10,416 "AEDT" and domain:au
++#   Parliamentary Library (2008-11-10)
++#   http://www.aph.gov.au/binaries/library/pubs/rp/2008-09/09rp14.pdf
++#   EST CST WST preferred for standard time; AEST AEDT ACST ACDT also used
+ #
+-#      14,538 "CST" and domain:au
+-#       5,728 "CDT" and domain:au
+-#         176 "ACST" and domain:au
+-#          29 "ACDT" and domain:au
++#   The Transport Safety Bureau has an extensive series of accident reports,
++#   and investigators seem to use whatever abbreviation they like.
++#   Googling site:atsb.gov.au found the following number of unique hits:
++#   311 "ESuT", 195 "EDT", 26 "AEDT", 83 "CSuT", 46 "CDT".
++#   "_SuT" tended to appear in older reports, and "A_DT" tended to
++#   appear in reports of events with international implications.
+ #
+-#       7,539 "WST" and domain:au
+-#          68 "AWST" and domain:au
+-#
+-#   This data suggest that Australians tend to omit the "A" prefix in
+-#   practice.  The situation for "ST" versus "DT" is less clear, given
+-#   the ambiguities involved.
+-#
+-# * How do Australians feel about the abbreviations in the tz database?
+-#
+-#   If you just count Australians on this list, I count 2 in favor and 3
+-#   against.  One of the "against" votes (David Keegel) counseled delay,
+-#   saying that both AEST/AEDT and EST/EST are widely used and
+-#   understood in Australia.
++# From the above it appears that there is a working consensus in
++# Australia to use trailing "DT" for daylight saving time; although
++# some sources use trailing "SST" or "ST" or "SuT" they are by far in
++# the minority.  The case for leading "A" is weaker, but since it
++# seems to be preferred in the overall web and is preferred in all
++# the leading newspaper websites and in many government departments,
++# it has a stronger case than omitting the leading "A".  The current
++# version of the database therefore uses abbreviations like "AEST" and
++# "AEDT" for Australian time zones.
+ 
+ # From Paul Eggert (1995-12-19):
+ # Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+ # Mark Prior writes that his newspaper
+ # reports that NSW's fall 1995 change will occur at 2:00,
+ # but Robert Elz says it's been 3:00 in Victoria since 1970
+-# and perhaps the newspaper's `2:00' is referring to standard time.
++# and perhaps the newspaper's '2:00' is referring to standard time.
+ # For now we'll continue to assume 2:00s for changes since 1960.
+ 
+ # From Eric Ulevik (1998-01-05):
+@@ -1055,17 +1031,14 @@
+ # relevant entries in this database.
+ #
+ # NSW (including LHI and Broken Hill):
+-# 
+ # Standard Time Act 1987 (updated 1995-04-04)
+-# 
++# http://www.austlii.edu.au/au/legis/nsw/consol_act/sta1987137/index.html
+ # ACT
+-# 
+ # Standard Time and Summer Time Act 1972
+-# 
++# http://www.austlii.edu.au/au/legis/act/consol_act/stasta1972279/index.html
+ # SA
+-# 
+ # Standard Time Act, 1898
+-# 
++# http://www.austlii.edu.au/au/legis/sa/consol_act/sta1898137/index.html
+ 
+ # From David Grosz (2005-06-13):
+ # It was announced last week that Daylight Saving would be extended by
+@@ -1083,7 +1056,7 @@
+ # Victoria: I wasn't able to find anything separate, but the other articles
+ # allude to it.
+ # But not Queensland
+-# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
++# http://www.news.com.au/story/0,10117,15564030-1248,00.html
+ 
+ # Northern Territory
+ 
+@@ -1130,9 +1103,9 @@
+ # The 1992 ending date used in the rules is a best guess;
+ # it matches what was used in the past.
+ 
+-# 
+ # The Australian Bureau of Meteorology FAQ
+-#  (1999-09-27) writes that Giles Meteorological Station uses
++# http://www.bom.gov.au/faq/faqgen.htm
++# (1999-09-27) writes that Giles Meteorological Station uses
+ # South Australian time even though it's located in Western Australia.
+ 
+ # Queensland
+@@ -1173,9 +1146,9 @@
+ # The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
+ 
+ # From Christopher Hunt (2006-11-21), after an advance warning
+-# from Jesper Norgaard Welen (2006-11-01):
++# from Jesper Nørgaard Welen (2006-11-01):
+ # WA are trialing DST for three years.
+-# 
++# http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf
+ 
+ # From Rives McDow (2002-04-09):
+ # The most interesting region I have found consists of three towns on the
+@@ -1189,7 +1162,7 @@
+ # From Paul Eggert (2002-04-09):
+ # This is confirmed by the section entitled
+ # "What's the deal with time zones???" in
+-# .
++# http://www.earthsci.unimelb.edu.au/~awatkins/null.html
+ #
+ # From Alex Livingston (2006-12-07):
+ # ... it was just on four years ago that I drove along the Eyre Highway,
+@@ -1337,7 +1310,7 @@
+ # Based on law library research by John Mackin,
+ # who notes:
+ #	In Australia, time is not legislated federally, but rather by the
+-#	individual states.  Thus, while such terms as ``Eastern Standard Time''
++#	individual states.  Thus, while such terms as "Eastern Standard Time"
+ #	[I mean, of course, Australian EST, not any other kind] are in common
+ #	use, _they have NO REAL MEANING_, as they are not defined in the
+ #	legislation.  This is very important to understand.
+@@ -1345,48 +1318,42 @@
+ 
+ # From Eric Ulevik (1999-05-26):
+ # DST will start in NSW on the last Sunday of August, rather than the usual
+-# October in 2000.  [See: Matthew Moore,
+-# 
+-# Two months more daylight saving
+-# 
+-# Sydney Morning Herald (1999-05-26).]
++# October in 2000.  See: Matthew Moore,
++# Two months more daylight saving, Sydney Morning Herald (1999-05-26).
++# http://www.smh.com.au/news/9905/26/pageone/pageone4.html
+ 
+ # From Paul Eggert (1999-09-27):
+ # See the following official NSW source:
+-# 
+ # Daylight Saving in New South Wales.
+-# 
++# http://dir.gis.nsw.gov.au/cgi-bin/genobject/document/other/daylightsaving/tigGmZ
+ #
+ # Narrabri Shire (NSW) council has announced it will ignore the extension of
+ # daylight saving next year.  See:
+-# 
+ # Narrabri Council to ignore daylight saving
+-#  (1999-07-22).  For now, we'll wait to see if this really happens.
++# http://abc.net.au/news/regionals/neweng/monthly/regeng-22jul1999-1.htm
++# (1999-07-22).  For now, we'll wait to see if this really happens.
+ #
+ # Victoria will following NSW.  See:
+-# 
+-# Vic to extend daylight saving
+-#  (1999-07-28).
++# Vic to extend daylight saving (1999-07-28)
++# http://abc.net.au/local/news/olympics/1999/07/item19990728112314_1.htm
+ #
+ # However, South Australia rejected the DST request.  See:
+-# 
+-# South Australia rejects Olympics daylight savings request
+-#  (1999-07-19).
++# South Australia rejects Olympics daylight savings request (1999-07-19)
++# http://abc.net.au/news/olympics/1999/07/item19990719151754_1.htm
+ #
+ # Queensland also will not observe DST for the Olympics.  See:
+-# 
+ # Qld says no to daylight savings for Olympics
+-#  (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
+-# ``Look you've got to remember in my family when this came up last time
++# http://abc.net.au/news/olympics/1999/06/item19990601114608_1.htm
++# (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
++# "Look you've got to remember in my family when this came up last time
+ # I voted for it, my wife voted against it and she said to me it's all very
+ # well for you, you don't have to worry about getting the children out of
+ # bed, getting them to school, getting them to sleep at night.
+-# I've been through all this argument domestically...my wife rules.''
++# I've been through all this argument domestically...my wife rules."
+ #
+ # Broken Hill will stick with South Australian time in 2000.  See:
+-# 
+-# Broken Hill to be behind the times
+-#  (1999-07-21).
++# Broken Hill to be behind the times (1999-07-21)
++# http://abc.net.au/news/regionals/brokenh/monthly/regbrok-21jul1999-6.htm
+ 
+ # IATA SSIM (1998-09) says that the spring 2000 change for Australian
+ # Capital Territory, New South Wales except Lord Howe Island and Broken
+@@ -1402,7 +1369,7 @@
+ # Yancowinna
+ 
+ # From John Mackin (1989-01-04):
+-# `Broken Hill' means the County of Yancowinna.
++# 'Broken Hill' means the County of Yancowinna.
+ 
+ # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+ # # YANCOWINNA..  [ Confirmation courtesy of Broken Hill Postmaster ]
+@@ -1459,9 +1426,7 @@
+ # summer (southern hemisphere).
+ #
+ # From
+-# 
+ # http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
+-# 
+ # The extended daylight saving period that South Australia has been trialling
+ # for over the last year is now set to be ongoing.
+ # Daylight saving will continue to start on the first Sunday in October each
+@@ -1471,9 +1436,7 @@
+ # the ACT for all 52 weeks of the year...
+ #
+ # We have a wrap-up here:
+-# 
+ # http://www.timeanddate.com/news/time/south-australia-extends-dst.html
+-# 
+ ###############################################################################
+ 
+ # New Zealand
+@@ -1482,7 +1445,7 @@
+ # the 1989/90 year was a trial of an extended "daylight saving" period.
+ # This trial was deemed successful and the extended period adopted for
+ # subsequent years (with the addition of a further week at the start).
+-# source -- phone call to Ministry of Internal Affairs Head Office.
++# source - phone call to Ministry of Internal Affairs Head Office.
+ 
+ # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+ # # The Country of New Zealand   (Australia's east island -) Gee they hate that!
+@@ -1524,6 +1487,19 @@
+ # that DST will begin on 2007-09-30 2008-04-06.
+ # http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
+ 
++# From Paul Eggert (2014-07-14):
++# Chatham Island time was formally standardized on 1957-01-01 by
++# New Zealand's Standard Time Amendment Act 1956 (1956-10-26).
++# http://www.austlii.edu.au/nz/legis/hist_act/staa19561956n100244.pdf
++# According to Google Books snippet view, a speaker in the New Zealand
++# parliamentary debates in 1956 said "Clause 78 makes provision for standard
++# time in the Chatham Islands.  The time there is 45 minutes in advance of New
++# Zealand time.  I understand that is the time they keep locally, anyhow."
++# For now, assume this practice goes back to the introduction of standard time
++# in New Zealand, as this would make Chatham Islands time almost exactly match
++# LMT back when New Zealand was at UTC+11:30; also, assume Chatham Islands did
++# not observe New Zealand's prewar DST.
++
+ ###############################################################################
+ 
+ 
+@@ -1543,7 +1519,7 @@
+ 
+ # From the BBC World Service in
+ # http://news.bbc.co.uk/2/hi/asia-pacific/205226.stm (1998-10-31 16:03 UTC):
+-# The Fijiian government says the main reasons for the time change is to
++# The Fijian government says the main reasons for the time change is to
+ # improve productivity and reduce road accidents.... [T]he move is also
+ # intended to boost Fiji's ability to attract tourists to witness the dawning
+ # of the new millennium.
+@@ -1551,16 +1527,12 @@
+ # http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
+ # reports that Fiji has discontinued DST.
+ 
+-# Johnston
+-
+-# Johnston data is from usno1995.
+-
+ 
+ # Kiribati
+ 
+ # From Paul Eggert (1996-01-22):
+ # Today's _Wall Street Journal_ (page 1) reports that Kiribati
+-# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
++# "declared it the same day [throughout] the country as of Jan. 1, 1995"
+ # as part of the competition to be first into the 21st century.
+ 
+ 
+@@ -1575,8 +1547,8 @@
+ 
+ # N Mariana Is, Guam
+ 
+-# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
+-# Philippines and the Ladrones from America,'' and implies that the Ladrones
++# Howse writes (p 153) "The Spaniards, on the other hand, reached the
++# Philippines and the Ladrones from America," and implies that the Ladrones
+ # (now called the Marianas) kept American date for quite some time.
+ # For now, we assume the Ladrones switched at the same time as the Philippines;
+ # see Asia/Manila.
+@@ -1590,17 +1562,16 @@
+ # Micronesia
+ 
+ # Alan Eugene Davis writes (1996-03-16),
+-# ``I am certain, having lived there for the past decade, that "Truk"
+-# (now properly known as Chuuk) ... is in the time zone GMT+10.''
++# "I am certain, having lived there for the past decade, that 'Truk'
++# (now properly known as Chuuk) ... is in the time zone GMT+10."
+ #
+ # Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
+ # on 1978-10-01; ignore this for now.
+ 
+ # From Paul Eggert (1999-10-29):
+ # The Federated States of Micronesia Visitors Board writes in
+-# 
+-# The Federated States of Micronesia - Visitor Information
+-#  (1999-01-26)
++# The Federated States of Micronesia - Visitor Information (1999-01-26)
++# http://www.fsmgov.org/info/clocks.html
+ # that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
+ # We don't know when Kosrae switched from UTC+12; assume January 1 for now.
+ 
+@@ -1646,27 +1617,34 @@
+ # Sacramento but it was changed a couple of years ago.
+ 
+ 
+-# Samoa
++# (Western) Samoa and American Samoa
+ 
+ # Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
+ # that in 1879 the King of Samoa decided to change
+-# ``the date in his kingdom from the Antipodean to the American system,
+-# ordaining -- by a masterpiece of diplomatic flattery -- that
+-# the Fourth of July should be celebrated twice in that year.''
++# "the date in his kingdom from the Antipodean to the American system,
++# ordaining - by a masterpiece of diplomatic flattery - that
++# the Fourth of July should be celebrated twice in that year."
+ 
++# Although Shanks & Pottenger says they both switched to UTC-11:30
++# in 1911, and to UTC-11 in 1950. many earlier sources give UTC-11
++# for American Samoa, e.g., the US National Bureau of Standards
++# circular "Standard Time Throughout the World", 1932.
++# Assume American Samoa switched to UTC-11 in 1911, not 1950,
++# and that after 1950 they agreed until (western) Samoa skipped a
++# day in 2011.  Assume also that the Samoas follow the US and New
++# Zealand's "ST"/"DT" style of daylight-saving abbreviations.
+ 
+ # Tonga
+ 
+ # From Paul Eggert (1996-01-22):
+-# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
+-# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
++# Today's _Wall Street Journal_ (p 1) reports that "Tonga has been plotting
++# to sneak ahead of [New Zealanders] by introducing daylight-saving time."
+ # Since Kiribati has moved the Date Line it's not clear what Tonga will do.
+ 
+ # Don Mundell writes in the 1997-02-20 Tonga Chronicle
+-# 
+-# How Tonga became `The Land where Time Begins'
+-# :
+-
++# How Tonga became 'The Land where Time Begins':
++# http://www.tongatapu.net.to/tonga/homeland/timebegins.htm
++#
+ # Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
+ # 12 hours and 20 minutes ahead of GMT.  When New Zealand adjusted its
+ # standard time in 1940s, Tonga had the choice of subtracting from its
+@@ -1674,8 +1652,8 @@
+ # advancing its time to maintain the differential of 13 degrees
+ # (approximately 50 minutes ahead of New Zealand time).
+ #
+-# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
+-# Tungi, preferred to ensure Tonga's title as the land where time
++# Because His Majesty King Tāufaʻāhau Tupou IV, then Crown Prince
++# Tungī, preferred to ensure Tonga's title as the land where time
+ # begins, the Legislative Assembly approved the latter change.
+ #
+ # But some of the older, more conservative members from the outer
+@@ -1701,9 +1679,7 @@
+ # * Tonga will introduce DST in November
+ #
+ # I was given this link by John Letts:
+-# 
+ # http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
+-# 
+ #
+ # I have not been able to find exact dates for the transition in November
+ # yet. By reading this article it seems like Fiji will be 14 hours ahead
+@@ -1711,9 +1687,7 @@
+ # (12 + 1 hour DST).
+ 
+ # From Arthur David Olson (1999-09-20):
+-# According to 
+-# http://www.tongaonline.com/news/sept1799.html
+-# :
++# According to :
+ # "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
+ # and annually thereafter from the first Saturday in October through the
+ # third Saturday of April.  Under the system approved by Privy Council on
+@@ -1731,7 +1705,7 @@
+ # instead of the original reported date April 16. Unfortunately, the article
+ # is no longer available on the site, and I did not make a copy of the
+ # text, and I have forgotten to report it here.
+-# (Original URL was: http://www.tongaonline.com/news/march162000.htm )
++# (Original URL was )
+ 
+ # From Rives McDow (2000-12-01):
+ # Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.
+@@ -1751,7 +1725,7 @@
+ # From Vernice Anderson, Personal Secretary to Philip Jessup,
+ # US Ambassador At Large (oral history interview, 1971-02-02):
+ #
+-# Saturday, the 14th [of October, 1950] -- ...  The time was all the
++# Saturday, the 14th [of October, 1950] - ...  The time was all the
+ # more confusing at that point, because we had crossed the
+ # International Date Line, thus getting two Sundays.  Furthermore, we
+ # discovered that Wake Island had two hours of daylight saving time
+@@ -1796,7 +1770,7 @@
+ # on the high seas.  Whenever a ship was within the territorial waters of any
+ # nation it would use that nation's standard time.  The captain was permitted
+ # to change his ship's clocks at a time of his choice following his ship's
+-# entry into another zone time--he often chose midnight.  These zones were
++# entry into another zone time - he often chose midnight.  These zones were
+ # adopted by all major fleets between 1920 and 1925 but not by many
+ # independent merchant ships until World War II.
+ 
+@@ -1804,6 +1778,6 @@
+ # (2005-03-20):
+ #
+ # The American Practical Navigator (2002)
+-# 
++# http://pollux.nss.nima.mil/pubs/pubs_j_apn_sections.html?rid=187
+ # talks only about the 180-degree meridian with respect to ships in
+ # international waters; it ignores the international date line.
+--- ./jdk/make/data/tzdata/backward	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/backward	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,15 +21,15 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+ # This file provides links between current names for time zones
+ # and their old names.  Many names changed in late 1993.
+ 
++# Link	TARGET			LINK-NAME
+ Link	Africa/Asmara		Africa/Asmera
+-Link	Africa/Bamako		Africa/Timbuktu
++Link	Africa/Abidjan		Africa/Timbuktu
+ Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
+ Link	America/Adak		America/Atka
+ Link	America/Argentina/Buenos_Aires	America/Buenos_Aires
+@@ -50,8 +50,11 @@
+ Link	Pacific/Auckland	Antarctica/South_Pole
+ Link	Asia/Ashgabat		Asia/Ashkhabad
+ Link	Asia/Kolkata		Asia/Calcutta
+-Link	Asia/Chongqing		Asia/Chungking
++Link	Asia/Shanghai		Asia/Chongqing
++Link	Asia/Shanghai		Asia/Chungking
+ Link	Asia/Dhaka		Asia/Dacca
++Link	Asia/Shanghai		Asia/Harbin
++Link	Asia/Urumqi		Asia/Kashgar
+ Link	Asia/Kathmandu		Asia/Katmandu
+ Link	Asia/Macau		Asia/Macao
+ Link	Asia/Ho_Chi_Minh	Asia/Saigon
+--- ./jdk/make/data/tzdata/etcetera	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/etcetera	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -37,7 +36,7 @@
+ Zone	Etc/UCT		0	-	UCT
+ 
+ # The following link uses older naming conventions,
+-# but it belongs here, not in the file `backward',
++# but it belongs here, not in the file 'backward',
+ # as functions like gmtime load the "GMT" file to handle leap seconds properly.
+ # We want this to work even on installations that omit the other older names.
+ Link	Etc/GMT				GMT
+--- ./jdk/make/data/tzdata/europe	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/europe	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,24 +21,30 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2006-03-22):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
++#
++# A reliable and entertaining source about time zones is
++# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+ # Except where otherwise noted, Shanks & Pottenger is the source for
+ # entries through 1991, and IATA SSIM is the source for entries afterwards.
+@@ -49,9 +55,9 @@
+ #	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+ #	which I found in the UCLA library.
+ #
+-#	
+ #	William Willett, The Waste of Daylight, 19th edition
+-#	 (1914-03)
++#	
++#	[PDF] (1914-03)
+ #
+ #	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+ #	.  He writes:
+@@ -59,10 +65,20 @@
+ #	may be sent to Mr. John Milne, Royal Geographical Society,
+ #	Savile Row, London."  Nowadays please email them to tz@iana.org.
+ #
+-#	Brazil's Departamento Servico da Hora (DSH),
+-#	
++#	Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
++#	This Russian-language source was consulted by Vladimir Karpinsky; see
++#	http://mm.icann.org/pipermail/tz/2014-August/021320.html
++#	The full Russian citation is:
++#	Бялокоз, Евгений Людвигович. Новый счет времени в течении суток
++#	введенный декретом Совета народных комиссаров для всей России с 1-го
++#	июля 1919 г. / Изд. 2-е Междуведомственной комиссии. - Петроград:
++#	Десятая гос. тип., 1919.
++#	http://resolver.gpntb.ru/purl?docushare/dsweb/Get/Resource-2011/Byalokoz__E.L.__Novyy__schet__vremeni__v__techenie__sutok__izd__2(1).pdf
++#
++#	Brazil's Divisão Serviço da Hora (DSHO),
+ #	History of Summer Time
+-#	 (1998-09-21, in Portuguese)
++#	
++#	(1998-09-21, in Portuguese)
+ 
+ #
+ # I invented the abbreviations marked '*' in the following table;
+@@ -78,13 +94,12 @@
+ #        0:00       WET WEST WEMT Western Europe
+ #        0:19:32.13 AMT NST       Amsterdam, Netherlands Summer (1835-1937)*
+ #        0:20       NET NEST      Netherlands (1937-1940)*
++#        1:00       BST           British Standard (1968-1971)
+ #        1:00       CET CEST CEMT Central Europe
+ #        1:00:14    SET           Swedish (1879-1899)*
+ #        2:00       EET EEST      Eastern Europe
+-#        3:00       MSK MSD       Moscow
+-#
+-# A reliable and entertaining source about time zones, especially in Britain,
+-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
++#        3:00       FET           Further-eastern Europe (2011-2014)*
++#        3:00       MSK MSD  MSM* Moscow
+ 
+ # From Peter Ilieve (1994-12-04),
+ # The original six [EU members]: Belgium, France, (West) Germany, Italy,
+@@ -128,7 +143,7 @@
+ # along the towpath within a few yards of it.'
+ #
+ # I have a one inch to one mile map of London and my estimate of the stone's
+-# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
++# position is 51 degrees 28' 30" N, 0 degrees 18' 45" W. The longitude should
+ # be within about +-2". The Ordnance Survey grid reference is TQ172761.
+ #
+ # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
+@@ -160,8 +175,22 @@
+ # transition date for London, namely 1847-12-01.  We don't know as much
+ # about Dublin, so we use 1880-08-02, the legal transition time.
+ 
+-# From Paul Eggert (2003-09-27):
+-# Summer Time was first seriously proposed by William Willett (1857-1915),
++# From Paul Eggert (2014-07-19):
++# The ancients had no need for daylight saving, as they kept time
++# informally or via hours whose length depended on the time of year.
++# Daylight saving time in its modern sense was invented by the
++# New Zealand entomologist George Vernon Hudson (1867-1946),
++# whose day job as a postal clerk led him to value
++# after-hours daylight in which to pursue his research.
++# In 1895 he presented a paper to the Wellington Philosophical Society
++# that proposed a two-hour daylight-saving shift.  See:
++# Hudson GV. On seasonal time-adjustment in countries south of lat. 30 deg.
++# Transactions and Proceedings of the New Zealand Institute. 1895;28:734
++# http://rsnz.natlib.govt.nz/volume/rsnz_28/rsnz_28_00_006110.html
++# Although some interest was expressed in New Zealand, his proposal
++# did not find its way into law and eventually it was almost forgotten.
++#
++# In England, DST was independently reinvented by William Willett (1857-1915),
+ # a London builder and member of the Royal Astronomical Society
+ # who circulated a pamphlet "The Waste of Daylight" (1907)
+ # that proposed advancing clocks 20 minutes on each of four Sundays in April,
+@@ -174,7 +203,7 @@
+ # A monument to Willett was unveiled on 1927-05-21, in an open space in
+ # a 45-acre wood near Chislehurst, Kent that was purchased by popular
+ # subscription and open to the public.  On the south face of the monolith,
+-# designed by G. W. Miller, is the...William Willett Memorial Sundial,
++# designed by G. W. Miller, is the William Willett Memorial Sundial,
+ # which is permanently set to Summer Time.
+ 
+ # From Winston Churchill (1934-04-28):
+@@ -183,9 +212,9 @@
+ # between 160 and 170 hours more daylight leisure, to a war which
+ # plunged Europe into darkness for four years, and shook the
+ # foundations of civilization throughout the world.
+-#	-- 
+-#	"A Silent Toast to William Willett", Pictorial Weekly
+-#	
++#	-- "A Silent Toast to William Willett", Pictorial Weekly;
++#	republished in Finest Hour (Spring 2002) 1(114):26
++#	http://www.winstonchurchill.org/images/finesthour/Vol.01%20No.114.pdf
+ 
+ # From Paul Eggert (1996-09-03):
+ # The OED Supplement says that the English originally said "Daylight Saving"
+@@ -194,7 +223,6 @@
+ # proponents (who eventually won the argument) are quoted as using "Summer".
+ 
+ # From Arthur David Olson (1989-01-19):
+-#
+ # A source at the British Information Office in New York avers that it's
+ # known as "British" Summer Time in all parts of the United Kingdom.
+ 
+@@ -221,8 +249,8 @@
+ # official designation; the reply of the 21st was that there wasn't
+ # but he couldn't think of anything better than the "Double British
+ # Summer Time" that the BBC had been using informally.
+-# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
+-# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
++# http://www.polyomino.org.uk/british-time/bbc-19410418.png
++# http://www.polyomino.org.uk/british-time/ho-19410421.png
+ 
+ # From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
+ # [N]o official designation has as far as I know been adopted for the time
+@@ -239,23 +267,14 @@
+ # the history of summer time legislation in the United Kingdom.
+ # Since 1998 Joseph S. Myers has been updating
+ # and extending this list, which can be found in
+-# http://student.cusu.cam.ac.uk/~jsm28/british-time/
+-# 
+-# History of legal time in Britain
+-# 
+-# Rob Crowther (2012-01-04) reports that that URL no longer
+-# exists, and the article can now be found at:
+-# 
+ # http://www.polyomino.org.uk/british-time/
+-# 
+ 
+ # From Joseph S. Myers (1998-01-06):
+ #
+ # The legal time in the UK outside of summer time is definitely GMT, not UTC;
+ # see Lord Tanlaw's speech
+-# 
+-# (Lords Hansard 11 June 1997 columns 964 to 976)
+-# .
++# http://www.publications.parliament.uk/pa/ld199798/ldhansrd/vo970611/text/70611-10.htm#70611-10_head0
++# (Lords Hansard 11 June 1997 columns 964 to 976).
+ 
+ # From Paul Eggert (2006-03-22):
+ #
+@@ -294,9 +313,17 @@
+ #   "Timeball on the ballast office is down.  Dunsink time."
+ #   -- James Joyce, Ulysses
+ 
++# "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time
++# was among various actions undertaken by the 'English' government that
++# would 'put the whole country into the SF (Sinn Féin) camp'.  She claimed
++# Irish 'public feeling (was) outraged by forcing of English time on us'."
++# -- Parsons M. Dublin lost its time zone - and 25 minutes - after 1916 Rising.
++# Irish Times 2014-10-27.
++# http://www.irishtimes.com/news/politics/dublin-lost-its-time-zone-and-25-minutes-after-1916-rising-1.1977411
++
+ # From Joseph S. Myers (2005-01-26):
+-# Irish laws are available online at www.irishstatutebook.ie.  These include
+-# various relating to legal time, for example:
++# Irish laws are available online at .
++# These include various relating to legal time, for example:
+ #
+ # ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
+ #
+@@ -458,25 +485,27 @@
+ # Use Europe/London for Jersey, Guernsey, and the Isle of Man.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1 0:00s
++Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1  0:00s
+ 			 0:00	GB-Eire	%s	1968 Oct 27
+-			 1:00	-	BST	1971 Oct 31 2:00u
++			 1:00	-	BST	1971 Oct 31  2:00u
+ 			 0:00	GB-Eire	%s	1996
+ 			 0:00	EU	GMT/BST
+ Link	Europe/London	Europe/Jersey
+ Link	Europe/London	Europe/Guernsey
+ Link	Europe/London	Europe/Isle_of_Man
++
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
+-			-0:25:21 -	DMT	1916 May 21 2:00
+-			-0:25:21 1:00	IST	1916 Oct  1 2:00s
++			-0:25:21 -	DMT	1916 May 21  2:00
++			-0:25:21 1:00	IST	1916 Oct  1  2:00s
+ 			 0:00	GB-Eire	%s	1921 Dec  6 # independence
+-			 0:00	GB-Eire	GMT/IST	1940 Feb 25 2:00
+-			 0:00	1:00	IST	1946 Oct  6 2:00
+-			 0:00	-	GMT	1947 Mar 16 2:00
+-			 0:00	1:00	IST	1947 Nov  2 2:00
+-			 0:00	-	GMT	1948 Apr 18 2:00
++			 0:00	GB-Eire	GMT/IST	1940 Feb 25  2:00
++			 0:00	1:00	IST	1946 Oct  6  2:00
++			 0:00	-	GMT	1947 Mar 16  2:00
++			 0:00	1:00	IST	1947 Nov  2  2:00
++			 0:00	-	GMT	1948 Apr 18  2:00
+ 			 0:00	GB-Eire	GMT/IST	1968 Oct 27
+-			 1:00	-	IST	1971 Oct 31 2:00u
++			 1:00	-	IST	1971 Oct 31  2:00u
+ 			 0:00	GB-Eire	GMT/IST	1996
+ 			 0:00	EU	GMT/IST
+ 
+@@ -495,10 +524,9 @@
+ Rule	EU	1981	max	-	Mar	lastSun	 1:00u	1:00	S
+ Rule	EU	1996	max	-	Oct	lastSun	 1:00u	0	-
+ # The most recent directive covers the years starting in 2002.  See:
+-# 
+ # Directive 2000/84/EC of the European Parliament and of the Council
+ # of 19 January 2001 on summer-time arrangements.
+-# 
++# http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32000L0084:EN:NOT
+ 
+ # W-Eur differs from EU only in that W-Eur uses standard time.
+ Rule	W-Eur	1977	1980	-	Apr	Sun>=1	 1:00s	1:00	S
+@@ -521,18 +549,18 @@
+ Rule	C-Eur	1944	1945	-	Apr	Mon>=1	 2:00s	1:00	S
+ # Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
+ Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
+-# From Jesper Norgaard Welen (2008-07-13):
++# From Jesper Nørgaard Welen (2008-07-13):
+ #
+ # I found what is probably a typo of 2:00 which should perhaps be 2:00s
+ # in the C-Eur rule from tz database version 2008d (this part was
+-# corrected in version 2008d). The circumstancial evidence is simply the
++# corrected in version 2008d). The circumstantial evidence is simply the
+ # tz database itself, as seen below:
+ #
+ # Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15  0:01
+ #    0:00 France WE%sT 1945 Sep 16  3:00
+ #
+ # Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+-#    0:00 France WE%sT 1945 Sep 16 3:00
++#    0:00 France WE%sT 1945 Sep 16  3:00
+ #
+ # Zone Europe/Belgrade 1:22:00 - LMT 1884
+ #    1:00 1:00 CEST 1945 Sep 16  2:00s
+@@ -576,16 +604,16 @@
+ Rule	E-Eur	1996	max	-	Oct	lastSun	 0:00	0	-
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST	# Moscow Summer Time
+-Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT	# Moscow Mean Time
+-Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST	# Moscow Double Summer Time
++Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST  # Moscow Summer Time
++Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT  # Moscow Mean Time
++Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST # Moscow Double Summer Time
+ Rule	Russia	1918	only	-	Sep	16	 1:00	1:00	MST
+ Rule	Russia	1919	only	-	May	31	23:00	2:00	MDST
+-Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	S
+-Rule	Russia	1919	only	-	Aug	16	 0:00	0	-
+-Rule	Russia	1921	only	-	Feb	14	23:00	1:00	S
+-Rule	Russia	1921	only	-	Mar	20	23:00	2:00	M # Midsummer
+-Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	S
++Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	MSD
++Rule	Russia	1919	only	-	Aug	16	 0:00	0	MSK
++Rule	Russia	1921	only	-	Feb	14	23:00	1:00	MSD
++Rule	Russia	1921	only	-	Mar	20	23:00	2:00	MSM  # Midsummer
++Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	MSD
+ Rule	Russia	1921	only	-	Oct	 1	 0:00	0	-
+ # Act No.925 of the Council of Ministers of the USSR (1980-10-24):
+ Rule	Russia	1981	1984	-	Apr	 1	 0:00	1:00	S
+@@ -600,6 +628,7 @@
+ Rule	Russia	1993	2010	-	Mar	lastSun	 2:00s	1:00	S
+ Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+ Rule	Russia	1996	2010	-	Oct	lastSun	 2:00s	0	-
++# As described below, Russia's 2014 change affects Zone data, not Rule data.
+ 
+ # From Alexander Krivenyshev (2011-06-14):
+ # According to Kremlin press service, Russian President Dmitry Medvedev
+@@ -607,14 +636,10 @@
+ # According to the law Russia is abolishing daylight saving time.
+ #
+ # Medvedev signed a law "On the Calculation of Time" (in russian):
+-# 
+ # http://bmockbe.ru/events/?ID=7583
+-# 
+ #
+ # Medvedev signed a law on the calculation of the time (in russian):
+-# 
+ # http://www.regnum.ru/news/polit/1413906.html
+-# 
+ 
+ # From Arthur David Olson (2011-06-15):
+ # Take "abolishing daylight saving time" to mean that time is now considered
+@@ -634,10 +659,10 @@
+ # From Markus Kuhn (1996-07-12):
+ # The official German names ... are
+ #
+-#	Mitteleuropaeische Zeit (MEZ)         = UTC+01:00
+-#	Mitteleuropaeische Sommerzeit (MESZ)  = UTC+02:00
++#	Mitteleuropäische Zeit (MEZ)         = UTC+01:00
++#	Mitteleuropäische Sommerzeit (MESZ)  = UTC+02:00
+ #
+-# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
++# as defined in the German Time Act (Gesetz über die Zeitbestimmung (ZeitG),
+ # 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
+ # I wrote ... to the German Federal Physical-Technical Institution
+ #
+@@ -692,7 +717,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Andorra	0:06:04 -	LMT	1901
+ 			0:00	-	WET	1946 Sep 30
+-			1:00	-	CET	1985 Mar 31 2:00
++			1:00	-	CET	1985 Mar 31  2:00
+ 			1:00	EU	CE%sT
+ 
+ # Austria
+@@ -718,9 +743,9 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Vienna	1:05:21 -	LMT	1893 Apr
+ 			1:00	C-Eur	CE%sT	1920
+-			1:00	Austria	CE%sT	1940 Apr  1 2:00s
+-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
+-			1:00	1:00	CEST	1945 Apr 12 2:00s
++			1:00	Austria	CE%sT	1940 Apr  1  2:00s
++			1:00	C-Eur	CE%sT	1945 Apr  2  2:00s
++			1:00	1:00	CEST	1945 Apr 12  2:00s
+ 			1:00	-	CET	1946
+ 			1:00	Austria	CE%sT	1981
+ 			1:00	EU	CE%sT
+@@ -731,38 +756,37 @@
+ # GMT+3 without DST (was GMT+2 with DST).
+ #
+ # Sources (Russian language):
+-# 1.
+-# 
+ # http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
+-# 
+-# 2.
+-# 
+ # http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
+-# 
+-# 3.
+-# 
+ # http://news.tut.by/society/250578.html
+-# 
++#
++# From Alexander Bokovoy (2014-10-09):
++# Belarussian government decided against changing to winter time....
++# http://eng.belta.by/all_news/society/Belarus-decides-against-adjusting-time-in-Russias-wake_i_76335.html
++# From Paul Eggert (2014-10-08):
++# Hence Belarus can share time zone abbreviations with Moscow again.
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Minsk	1:50:16 -	LMT	1880
+-			1:50	-	MMT	1924 May 2 # Minsk Mean Time
++			1:50	-	MMT	1924 May  2 # Minsk Mean Time
+ 			2:00	-	EET	1930 Jun 21
+ 			3:00	-	MSK	1941 Jun 28
+ 			1:00	C-Eur	CE%sT	1944 Jul  3
+ 			3:00	Russia	MSK/MSD	1990
+-			3:00	-	MSK	1991 Mar 31 2:00s
+-			2:00	1:00	EEST	1991 Sep 29 2:00s
+-			2:00	-	EET	1992 Mar 29 0:00s
+-			2:00	1:00	EEST	1992 Sep 27 0:00s
+-			2:00	Russia	EE%sT	2011 Mar 27 2:00s
+-			3:00	-	FET # Further-eastern European Time
++			3:00	-	MSK	1991 Mar 31  2:00s
++			2:00	1:00	EEST	1991 Sep 29  2:00s
++			2:00	-	EET	1992 Mar 29  0:00s
++			2:00	1:00	EEST	1992 Sep 27  0:00s
++			2:00	Russia	EE%sT	2011 Mar 27  2:00s
++			3:00	-	FET	2014 Oct 26  1:00s
++			3:00	-	MSK
+ 
+ # Belgium
+ #
+ # From Paul Eggert (1997-07-02):
+ # Entries from 1918 through 1991 are taken from:
+ #	Annuaire de L'Observatoire Royal de Belgique,
+-#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
++#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe année, 1991
+ #	(Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
+ #	pp 8-9.
+ # LMT before 1892 was 0:17:30, according to the official journal of Belgium:
+@@ -812,7 +836,7 @@
+ Rule	Belgium	1946	only	-	Oct	 7	 2:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Brussels	0:17:30 -	LMT	1880
+-			0:17:30	-	BMT	1892 May  1 12:00 # Brussels MT
++			0:17:30	-	BMT	1892 May  1 12:00  # Brussels MT
+ 			0:00	-	WET	1914 Nov  8
+ 			1:00	-	CET	1916 May  1  0:00
+ 			1:00	C-Eur	CE%sT	1918 Nov 11 11:00u
+@@ -828,8 +852,8 @@
+ #
+ # From Plamen Simenov via Steffen Thorsen (1999-09-09):
+ # A document of Government of Bulgaria (No.94/1997) says:
+-# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
+-# EETDST --> EET is in 04:00 Local time in last Sunday of October
++# EET -> EETDST is in 03:00 Local time in last Sunday of March ...
++# EETDST -> EET is in 04:00 Local time in last Sunday of October
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Bulg	1979	only	-	Mar	31	23:00	1:00	S
+@@ -842,7 +866,7 @@
+ 			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
+ 			2:00	-	EET	1942 Nov  2  3:00
+ 			1:00	C-Eur	CE%sT	1945
+-			1:00	-	CET	1945 Apr 2 3:00
++			1:00	-	CET	1945 Apr  2  3:00
+ 			2:00	-	EET	1979 Mar 31 23:00
+ 			2:00	Bulg	EE%sT	1982 Sep 26  2:00
+ 			2:00	C-Eur	EE%sT	1991
+@@ -866,15 +890,15 @@
+ Rule	Czech	1949	only	-	Apr	 9	2:00s	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Prague	0:57:44 -	LMT	1850
+-			0:57:44	-	PMT	1891 Oct     # Prague Mean Time
+-			1:00	C-Eur	CE%sT	1944 Sep 17 2:00s
++			0:57:44	-	PMT	1891 Oct    # Prague Mean Time
++			1:00	C-Eur	CE%sT	1944 Sep 17  2:00s
+ 			1:00	Czech	CE%sT	1979
+ 			1:00	EU	CE%sT
+ # Use Europe/Prague also for Slovakia.
+ 
+ # Denmark, Faroe Islands, and Greenland
+ 
+-# From Jesper Norgaard Welen (2005-04-26):
++# From Jesper Nørgaard Welen (2005-04-26):
+ # http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
+ # [introducing standard time] was in effect from 1894-01-01....
+ # The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
+@@ -884,7 +908,7 @@
+ # http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
+ #
+ # This provoked a new law from 1974 to make possible summer time changes
+-# in subsequenet decrees with the law
++# in subsequent decrees with the law
+ # http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
+ #
+ # It seems however that no decree was set forward until 1980.  I have
+@@ -899,7 +923,7 @@
+ # was suspended on that night):
+ # http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
+ 
+-# From Jesper Norgaard Welen (2005-06-11):
++# From Jesper Nørgaard Welen (2005-06-11):
+ # The Herning Folkeblad (1980-09-26) reported that the night between
+ # Saturday and Sunday the clock is set back from three to two.
+ 
+@@ -923,11 +947,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Copenhagen	 0:50:20 -	LMT	1890
+ 			 0:50:20 -	CMT	1894 Jan  1 # Copenhagen MT
+-			 1:00	Denmark	CE%sT	1942 Nov  2 2:00s
+-			 1:00	C-Eur	CE%sT	1945 Apr  2 2:00
++			 1:00	Denmark	CE%sT	1942 Nov  2  2:00s
++			 1:00	C-Eur	CE%sT	1945 Apr  2  2:00
+ 			 1:00	Denmark	CE%sT	1980
+ 			 1:00	EU	CE%sT
+-Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11	# Torshavn
++Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11 # Tórshavn
+ 			 0:00	-	WET	1981
+ 			 0:00	EU	WE%sT
+ #
+@@ -939,11 +963,11 @@
+ # From Paul Eggert (2006-03-22):
+ # Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
+ # and left the EU on 1985-02-01.  It therefore should have been using EU
+-# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthab
++# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthåb
+ # used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
+ # rules since at least 1991.  Assume EU rules since 1980.
+ 
+-# From Gwillin Law (2001-06-06), citing
++# From Gwillim Law (2001-06-06), citing
+ #  (2001-03-15),
+ # and with translations corrected by Steffen Thorsen:
+ #
+@@ -978,16 +1002,16 @@
+ # DPC research station at Zackenberg.
+ #
+ # Scoresbysund and two small villages nearby keep time UTC-1 and use
+-# the same daylight savings time period as in West Greenland (Godthab).
++# the same daylight savings time period as in West Greenland (Godthåb).
+ #
+-# The rest of Greenland, including Godthab (this area, although it
++# The rest of Greenland, including Godthåb (this area, although it
+ # includes central Greenland, is known as west Greenland), keeps time
+ # UTC-3, with daylight savings methods according to European rules.
+ #
+ # It is common procedure to use UTC 0 in the wilderness of East and
+ # North Greenland, because it is mainly Icelandic aircraft operators
+ # maintaining traffic in these areas.  However, the official status of
+-# this area is that it sticks with Godthab time.  This area might be
++# this area is that it sticks with Godthåb time.  This area might be
+ # considered a dual time zone in some respects because of this.
+ 
+ # From Rives McDow (2001-11-19):
+@@ -996,8 +1020,8 @@
+ 
+ # From Paul Eggert (2006-03-22):
+ # From 1997 on the CIA map shows Danmarkshavn on GMT;
+-# the 1995 map as like Godthab.
+-# For lack of better info, assume they were like Godthab before 1996.
++# the 1995 map as like Godthåb.
++# For lack of better info, assume they were like Godthåb before 1996.
+ # startkart.no says Thule does not observe DST, but this is clearly an error,
+ # so go with Shanks & Pottenger for Thule transitions until this year.
+ # For 2007 on assume Thule will stay in sync with US DST rules.
+@@ -1012,15 +1036,15 @@
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Danmarkshavn -1:14:40 -	LMT	1916 Jul 28
+-			-3:00	-	WGT	1980 Apr  6 2:00
++			-3:00	-	WGT	1980 Apr  6  2:00
+ 			-3:00	EU	WG%sT	1996
+ 			0:00	-	GMT
+ Zone America/Scoresbysund -1:27:52 -	LMT	1916 Jul 28 # Ittoqqortoormiit
+-			-2:00	-	CGT	1980 Apr  6 2:00
++			-2:00	-	CGT	1980 Apr  6  2:00
+ 			-2:00	C-Eur	CG%sT	1981 Mar 29
+ 			-1:00	EU	EG%sT
+ Zone America/Godthab	-3:26:56 -	LMT	1916 Jul 28 # Nuuk
+-			-3:00	-	WGT	1980 Apr  6 2:00
++			-3:00	-	WGT	1980 Apr  6  2:00
+ 			-3:00	EU	WG%sT
+ Zone America/Thule	-4:35:08 -	LMT	1916 Jul 28 # Pituffik air base
+ 			-4:00	Thule	A%sT
+@@ -1042,17 +1066,16 @@
+ # summer time next spring."
+ 
+ # From Peter Ilieve (1998-11-04), heavily edited:
+-# 
+ # The 1998-09-22 Estonian time law
+-# 
++# http://trip.rk.ee/cgi-bin/thw?${BASE}=akt&${OOHTML}=rtd&TA=1998&TO=1&AN=1390
+ # refers to the Eighth Directive and cites the association agreement between
+-# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
++# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22-27, 120).
+ #
+ # I also asked [my relative] whether they use any standard abbreviation
+ # for their standard and summer times. He says no, they use "suveaeg"
+ # (summer time) and "talveaeg" (winter time).
+ 
+-# From The Baltic Times (1999-09-09)
++# From The Baltic Times  (1999-09-09)
+ # via Steffen Thorsen:
+ # This year will mark the last time Estonia shifts to summer time,
+ # a council of the ruling coalition announced Sept. 6....
+@@ -1070,19 +1093,19 @@
+ # The Estonian government has changed once again timezone politics.
+ # Now we are using again EU rules.
+ #
+-# From Urmet Jaanes (2002-03-28):
++# From Urmet Jänes (2002-03-28):
+ # The legislative reference is Government decree No. 84 on 2002-02-21.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Tallinn	1:39:00	-	LMT	1880
+-			1:39:00	-	TMT	1918 Feb # Tallinn Mean Time
++			1:39:00	-	TMT	1918 Feb    # Tallinn Mean Time
+ 			1:00	C-Eur	CE%sT	1919 Jul
+ 			1:39:00	-	TMT	1921 May
+ 			2:00	-	EET	1940 Aug  6
+ 			3:00	-	MSK	1941 Sep 15
+ 			1:00	C-Eur	CE%sT	1944 Sep 22
+-			3:00	Russia	MSK/MSD	1989 Mar 26 2:00s
+-			2:00	1:00	EEST	1989 Sep 24 2:00s
++			3:00	Russia	MSK/MSD	1989 Mar 26  2:00s
++			2:00	1:00	EEST	1989 Sep 24  2:00s
+ 			2:00	C-Eur	EE%sT	1998 Sep 22
+ 			2:00	EU	EE%sT	1999 Nov  1
+ 			2:00	-	EET	2002 Feb 21
+@@ -1104,35 +1127,45 @@
+ # This is documented in Heikki Oja: Aikakirja 2007, published by The Almanac
+ # Office of University of Helsinki, ISBN 952-10-3221-9, available online (in
+ # Finnish) at
+-#
+-# 
+ # http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf
+-# 
+ #
+ # Page 105 (56 in PDF version) has a handy table of all past daylight savings
+ # transitions. It is easy enough to interpret without Finnish skills.
+ #
+ # This is also confirmed by Finnish Broadcasting Company's archive at:
+-#
+-# 
+ # http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401
+-# 
+ #
+ # The news clip from 1981 says that "the time between 2 and 3 o'clock does not
+ # exist tonight."
+ 
++# From Konstantin Hyppönen (2014-06-13):
++# [Heikki Oja's book Aikakirja 2013]
++# http://almanakka.helsinki.fi/images/aikakirja/Aikakirja2013kokonaan.pdf
++# pages 104-105, including a scan from a newspaper published on Apr 2 1942
++# say that ... [o]n Apr 2 1942, 24 o'clock (which means Apr 3 1942,
++# 00:00), clocks were moved one hour forward. The newspaper
++# mentions "on the night from Thursday to Friday"....
++# On Oct 4 1942, clocks were moved at 1:00 one hour backwards.
++#
++# From Paul Eggert (2014-06-14):
++# Go with Oja over Shanks.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Finland	1942	only	-	Apr	3	0:00	1:00	S
+-Rule	Finland	1942	only	-	Oct	3	0:00	0	-
++Rule	Finland	1942	only	-	Apr	2	24:00	1:00	S
++Rule	Finland	1942	only	-	Oct	4	1:00	0	-
+ Rule	Finland	1981	1982	-	Mar	lastSun	2:00	1:00	S
+ Rule	Finland	1981	1982	-	Sep	lastSun	3:00	0	-
++
++# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document);
++# round to nearest.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Helsinki	1:39:52 -	LMT	1878 May 31
+-			1:39:52	-	HMT	1921 May    # Helsinki Mean Time
++Zone	Europe/Helsinki	1:39:49 -	LMT	1878 May 31
++			1:39:49	-	HMT	1921 May    # Helsinki Mean Time
+ 			2:00	Finland	EE%sT	1983
+ 			2:00	EU	EE%sT
+ 
+-# Aaland Is
++# Åland Is
+ Link	Europe/Helsinki	Europe/Mariehamn
+ 
+ 
+@@ -1140,14 +1173,14 @@
+ 
+ # From Ciro Discepolo (2000-12-20):
+ #
+-# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
++# Henri Le Corre, Régimes horaires pour le monde entier, Éditions
+ # Traditionnelles - Paris 2 books, 1993
+ #
+-# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
++# Gabriel, Traité de l'heure dans le monde, Guy Trédaniel,
+ # Paris, 1991
+ #
+-# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
+-# Guy tredaniel, Paris 1987
++# Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
++# Guy Trédaniel, Paris 1987
+ 
+ 
+ #
+@@ -1188,16 +1221,16 @@
+ Rule	France	1940	only	-	Feb	25	 2:00	1:00	S
+ # The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
+ # write that they were used in Monaco and in many French locations.
+-# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
+-# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
+-# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
++# Le Corre writes that the upper limit of the free zone was Arnéguy, Orthez,
++# Mont-de-Marsan, Bazas, Langon, Lamothe-Montravel, Marœuil, La
++# Rochefoucauld, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
+ # Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
+-# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
++# Paray-le-Monial, Montceau-les-Mines, Chalon-sur-Saône, Arbois,
+ # Dole, Morez, St-Claude, and Collonges (Haute-Savoie).
+ Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
+ # Shanks & Pottenger say this transition occurred at Oct 6 1:00,
+ # but go with Denis Excoffier (1997-12-12),
+-# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
++# who quotes the Ephémérides astronomiques for 1998 from Bureau des Longitudes
+ # as saying 5/10/41 22hUT.
+ Rule	France	1941	only	-	Oct	 6	 0:00	1:00	S
+ Rule	France	1942	only	-	Mar	 9	 0:00	2:00	M
+@@ -1218,7 +1251,7 @@
+ # on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
+-			0:09:21	-	PMT	1911 Mar 11  0:01  # Paris MT
++			0:09:21	-	PMT	1911 Mar 11  0:01 # Paris MT
+ # Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+ 			0:00	France	WE%sT	1940 Jun 14 23:00
+ # Le Corre says Paris stuck with occupied-France time after the liberation;
+@@ -1235,15 +1268,13 @@
+ # Bundesanstalt contains DST information back to 1916.
+ # [See tz-link.htm for the URL.]
+ 
+-# From Joerg Schilling (2002-10-23):
++# From Jörg Schilling (2002-10-23):
+ # In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
+-# 
+-# General [Nikolai] Bersarin.
++# http://www.dhm.de/lemo/html/biografien/BersarinNikolai/
++# General [Nikolai] Bersarin.
+ 
+ # From Paul Eggert (2003-03-08):
+-# 
+ # http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf
+-# 
+ # says that Bersarin issued an order to use Moscow time on May 20.
+ # However, Moscow did not observe daylight saving in 1945, so
+ # this was equivalent to CEMT (GMT+3), not GMT+4.
+@@ -1268,23 +1299,23 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
+-			1:00	C-Eur	CE%sT	1945 May 24 2:00
++			1:00	C-Eur	CE%sT	1945 May 24  2:00
+ 			1:00 SovietZone	CE%sT	1946
+ 			1:00	Germany	CE%sT	1980
+ 			1:00	EU	CE%sT
+ 
+ # From Tobias Conradi (2011-09-12):
+-# Busingen , surrounded by the Swiss canton
++# Büsingen , surrounded by the Swiss canton
+ # Schaffhausen, did not start observing DST in 1980 as the rest of DE
+ # (West Germany at that time) and DD (East Germany at that time) did.
+ # DD merged into DE, the area is currently covered by code DE in ISO 3166-1,
+ # which in turn is covered by the zone Europe/Berlin.
+ #
+-# Source for the time in Busingen 1980:
++# Source for the time in Büsingen 1980:
+ # http://www.srf.ch/player/video?id=c012c029-03b7-4c2b-9164-aa5902cd58d3
+ 
+ # From Arthur David Olson (2012-03-03):
+-# Busingen and Zurich have shared clocks since 1970.
++# Büsingen and Zurich have shared clocks since 1970.
+ 
+ Link	Europe/Zurich	Europe/Busingen
+ 
+@@ -1295,8 +1326,8 @@
+ 
+ # Gibraltar
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2 0:00s
+-			0:00	GB-Eire	%s	1957 Apr 14 2:00
++Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2  0:00s
++			0:00	GB-Eire	%s	1957 Apr 14  2:00
+ 			1:00	-	CET	1982
+ 			1:00	EU	CE%sT
+ 
+@@ -1327,7 +1358,7 @@
+ Rule	Greece	1980	only	-	Sep	28	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Athens	1:34:52 -	LMT	1895 Sep 14
+-			1:34:52	-	AMT	1916 Jul 28 0:01     # Athens MT
++			1:34:52	-	AMT	1916 Jul 28  0:01 # Athens MT
+ 			2:00	Greece	EE%sT	1941 Apr 30
+ 			1:00	Greece	CE%sT	1944 Apr  4
+ 			2:00	Greece	EE%sT	1981
+@@ -1336,15 +1367,20 @@
+ 			2:00	EU	EE%sT
+ 
+ # Hungary
++# From Paul Eggert (2014-07-15):
++# Dates for 1916-1945 are taken from:
++# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
++# National Archives of Hungary (2012-10-29).
++# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
++# This source does not always give times, which are taken from Shanks
++# & Pottenger (which disagree about the dates).
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Hungary	1918	only	-	Apr	 1	 3:00	1:00	S
+-Rule	Hungary	1918	only	-	Sep	29	 3:00	0	-
++Rule	Hungary	1918	only	-	Sep	16	 3:00	0	-
+ Rule	Hungary	1919	only	-	Apr	15	 3:00	1:00	S
+-Rule	Hungary	1919	only	-	Sep	15	 3:00	0	-
+-Rule	Hungary	1920	only	-	Apr	 5	 3:00	1:00	S
+-Rule	Hungary	1920	only	-	Sep	30	 3:00	0	-
++Rule	Hungary	1919	only	-	Nov	24	 3:00	0	-
+ Rule	Hungary	1945	only	-	May	 1	23:00	1:00	S
+-Rule	Hungary	1945	only	-	Nov	 3	 0:00	0	-
++Rule	Hungary	1945	only	-	Nov	 1	 0:00	0	-
+ Rule	Hungary	1946	only	-	Mar	31	 2:00s	1:00	S
+ Rule	Hungary	1946	1949	-	Oct	Sun>=1	 2:00s	0	-
+ Rule	Hungary	1947	1949	-	Apr	Sun>=4	 2:00s	1:00	S
+@@ -1360,7 +1396,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
+ 			1:00	C-Eur	CE%sT	1918
+-			1:00	Hungary	CE%sT	1941 Apr  6  2:00
++			1:00	Hungary	CE%sT	1941 Apr  8
+ 			1:00	C-Eur	CE%sT	1945
+ 			1:00	Hungary	CE%sT	1980 Sep 28  2:00s
+ 			1:00	EU	CE%sT
+@@ -1423,7 +1459,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
+ 			-1:27:48 -	RMT	1908 # Reykjavik Mean Time?
+-			-1:00	Iceland	IS%sT	1968 Apr 7 1:00s
++			-1:00	Iceland	IS%sT	1968 Apr  7  1:00s
+ 			 0:00	-	GMT
+ 
+ # Italy
+@@ -1438,9 +1474,8 @@
+ # From Paul Eggert (2006-03-22):
+ # For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
+ # F. Pollastri
+-# 
+ # Day-light Saving Time in Italy (2006-02-03)
+-# 
++# http://toi.iriti.cnr.it/uk/ienitlt.html
+ # ('FP' below), taken from an Italian National Electrotechnical Institute
+ # publication. When the three sources disagree, guess who's right, as follows:
+ #
+@@ -1500,8 +1535,8 @@
+ Rule	Italy	1979	only	-	Sep	30	0:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Rome	0:49:56 -	LMT	1866 Sep 22
+-			0:49:56	-	RMT	1893 Nov  1 0:00s # Rome Mean
+-			1:00	Italy	CE%sT	1942 Nov  2 2:00s
++			0:49:56	-	RMT	1893 Nov  1  0:00s # Rome Mean
++			1:00	Italy	CE%sT	1942 Nov  2  2:00s
+ 			1:00	C-Eur	CE%sT	1944 Jul
+ 			1:00	Italy	CE%sT	1980
+ 			1:00	EU	CE%sT
+@@ -1548,18 +1583,18 @@
+ 
+ # From Andrei Ivanov (2000-03-06):
+ # This year Latvia will not switch to Daylight Savings Time (as specified in
+-# 
+ # The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
+-# 29-Feb-2000 (#79), in Latvian for subscribers only).
++# 29-Feb-2000 (#79) ,
++# in Latvian for subscribers only).
+ 
+-# 
+-# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
+-# 
++# From RFE/RL Newsline
++# http://www.rferl.org/newsline/2001/01/3-CEE/cee-030101.html
++# (2001-01-03), noted after a heads-up by Rives McDow:
+ # The Latvian government on 2 January decided that the country will
+ # institute daylight-saving time this spring, LETA reported.
+ # Last February the three Baltic states decided not to turn back their
+ # clocks one hour in the spring....
+-# Minister of Economy Aigars Kalvitis noted that Latvia had too few
++# Minister of Economy Aigars Kalvītis noted that Latvia had too few
+ # daylight hours and thus decided to comply with a draft European
+ # Commission directive that provides for instituting daylight-saving
+ # time in EU countries between 2002 and 2006. The Latvian government
+@@ -1569,18 +1604,23 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Latvia	1989	1996	-	Mar	lastSun	 2:00s	1:00	S
+ Rule	Latvia	1989	1996	-	Sep	lastSun	 2:00s	0	-
++
++# Milne 1899 says Riga was 1:36:28 (Polytechnique House time).
++# Byalokoz 1919 says Latvia was 1:36:34.
++# Go with Byalokoz.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Riga	1:36:24	-	LMT	1880
+-			1:36:24	-	RMT	1918 Apr 15 2:00 #Riga Mean Time
+-			1:36:24	1:00	LST	1918 Sep 16 3:00 #Latvian Summer
+-			1:36:24	-	RMT	1919 Apr  1 2:00
+-			1:36:24	1:00	LST	1919 May 22 3:00
+-			1:36:24	-	RMT	1926 May 11
++Zone	Europe/Riga	1:36:34	-	LMT	1880
++			1:36:34	-	RMT	1918 Apr 15  2:00 # Riga MT
++			1:36:34	1:00	LST	1918 Sep 16  3:00 # Latvian ST
++			1:36:34	-	RMT	1919 Apr  1  2:00
++			1:36:34	1:00	LST	1919 May 22  3:00
++			1:36:34	-	RMT	1926 May 11
+ 			2:00	-	EET	1940 Aug  5
+ 			3:00	-	MSK	1941 Jul
+ 			1:00	C-Eur	CE%sT	1944 Oct 13
+-			3:00	Russia	MSK/MSD	1989 Mar lastSun 2:00s
+-			2:00	1:00	EEST	1989 Sep lastSun 2:00s
++			3:00	Russia	MSK/MSD	1989 Mar lastSun  2:00s
++			2:00	1:00	EEST	1989 Sep lastSun  2:00s
+ 			2:00	Latvia	EE%sT	1997 Jan 21
+ 			2:00	EU	EE%sT	2000 Feb 29
+ 			2:00	-	EET	2001 Jan  2
+@@ -1614,7 +1654,7 @@
+ # I would like to inform that in this year Lithuanian time zone
+ # (Europe/Vilnius) was changed.
+ 
+-# From ELTA No. 972 (2582) (1999-09-29),
++# From ELTA No. 972 (2582) (1999-09-29) ,
+ # via Steffen Thorsen:
+ # Lithuania has shifted back to the second time zone (GMT plus two hours)
+ # to be valid here starting from October 31,
+@@ -1623,9 +1663,9 @@
+ # motion to give up shifting to summer time in spring, as it was
+ # already done by Estonia.
+ 
+-# From the 
+-# Fact File, Lithuanian State Department of Tourism
+-#  (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
++# From the Fact File, Lithuanian State Department of Tourism
++#  (2000-03-27):
++# Local time is GMT+2 hours ..., no daylight saving.
+ 
+ # From a user via Klaus Marten (2003-02-07):
+ # As a candidate for membership of the European Union, Lithuania will
+@@ -1638,18 +1678,18 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Vilnius	1:41:16	-	LMT	1880
+-			1:24:00	-	WMT	1917	    # Warsaw Mean Time
++			1:24:00	-	WMT	1917        # Warsaw Mean Time
+ 			1:35:36	-	KMT	1919 Oct 10 # Kaunas Mean Time
+ 			1:00	-	CET	1920 Jul 12
+ 			2:00	-	EET	1920 Oct  9
+ 			1:00	-	CET	1940 Aug  3
+ 			3:00	-	MSK	1941 Jun 24
+ 			1:00	C-Eur	CE%sT	1944 Aug
+-			3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			2:00	1:00	EEST	1991 Sep 29 2:00s
++			3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			2:00	1:00	EEST	1991 Sep 29  2:00s
+ 			2:00	C-Eur	EE%sT	1998
+-			2:00	-	EET	1998 Mar 29 1:00u
+-			1:00	EU	CE%sT	1999 Oct 31 1:00u
++			2:00	-	EET	1998 Mar 29  1:00u
++			1:00	EU	CE%sT	1999 Oct 31  1:00u
+ 			2:00	-	EET	2003 Jan  1
+ 			2:00	EU	EE%sT
+ 
+@@ -1683,9 +1723,9 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
+ 			1:00	Lux	CE%sT	1918 Nov 25
+-			0:00	Lux	WE%sT	1929 Oct  6 2:00s
+-			0:00	Belgium	WE%sT	1940 May 14 3:00
+-			1:00	C-Eur	WE%sT	1944 Sep 18 3:00
++			0:00	Lux	WE%sT	1929 Oct  6  2:00s
++			0:00	Belgium	WE%sT	1940 May 14  3:00
++			1:00	C-Eur	WE%sT	1944 Sep 18  3:00
+ 			1:00	Belgium	CE%sT	1977
+ 			1:00	EU	CE%sT
+ 
+@@ -1702,9 +1742,9 @@
+ Rule	Malta	1975	1980	-	Sep	Sun>=15	2:00	0	-
+ Rule	Malta	1980	only	-	Mar	31	2:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2 0:00s # Valletta
+-			1:00	Italy	CE%sT	1942 Nov  2 2:00s
+-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
++Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2  0:00s # Valletta
++			1:00	Italy	CE%sT	1942 Nov  2  2:00s
++			1:00	C-Eur	CE%sT	1945 Apr  2  2:00s
+ 			1:00	Italy	CE%sT	1973 Mar 31
+ 			1:00	Malta	CE%sT	1981
+ 			1:00	EU	CE%sT
+@@ -1719,7 +1759,7 @@
+ # In early 1992 there was large-scale interethnic violence in the area
+ # and it's possible that some Russophones continued to observe Moscow time.
+ # But [two people] separately reported via
+-# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
++# Jesper Nørgaard that as of 2001-01-24 Tiraspol was like Chisinau.
+ # The Tiraspol entry has therefore been removed for now.
+ #
+ # From Alexander Krivenyshev (2011-10-17):
+@@ -1728,13 +1768,8 @@
+ # to the Winter Time).
+ #
+ # News (in Russian):
+-# 
+ # http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html
+-# 
+-#
+-# 
+ # http://www.allmoldova.com/moldova-news/1249064116.html
+-# 
+ #
+ # The substance of this change (reinstatement of the Tiraspol entry)
+ # is from a patch from Petr Machata (2011-10-17)
+@@ -1752,9 +1787,7 @@
+ # Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
+ # Tiraspol will go back to winter time on October 30, 2011.
+ # News from Moldova (in russian):
+-# 
+ # http://ru.publika.md/link_317061.html
+-# 
+ 
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -1777,8 +1810,8 @@
+ # more precise 0:09:21.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
+-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+-			0:00	France	WE%sT	1945 Sep 16 3:00
++			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
++			0:00	France	WE%sT	1945 Sep 16  3:00
+ 			1:00	France	CE%sT	1977
+ 			1:00	EU	CE%sT
+ 
+@@ -1822,8 +1855,8 @@
+ # was not until 1866 when they were all required by law to observe
+ # Amsterdam mean time.
+ 
+-# The data before 1945 are taken from
+-# .
++# The data entries before 1945 are taken from
++# http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Neth	1916	only	-	May	 1	0:00	1:00	NST	# Netherlands Summer Time
+@@ -1854,8 +1887,8 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Amsterdam	0:19:32 -	LMT	1835
+ 			0:19:32	Neth	%s	1937 Jul  1
+-			0:20	Neth	NE%sT	1940 May 16 0:00 # Dutch Time
+-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00
++			0:20	Neth	NE%sT	1940 May 16  0:00 # Dutch Time
++			1:00	C-Eur	CE%sT	1945 Apr  2  2:00
+ 			1:00	Neth	CE%sT	1977
+ 			1:00	EU	CE%sT
+ 
+@@ -1885,14 +1918,14 @@
+ # time they were declared as parts of Norway.  Svalbard was declared
+ # as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
+ # Mayen by law of 1930-02-27 no 2, section 2. (From
+-# http://www.lovdata.no/all/nl-19250717-011.html and
+-# http://www.lovdata.no/all/nl-19300227-002.html).  The law/regulation
++#  and
++# ).  The law/regulation
+ # for normal/standard time in Norway is from 1894-06-29 no 1 (came
+ # into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
+ # part of this law since 1925/1930. (From
+-# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
++# ) I have not been
+ # able to find if Jan Mayen used a different time zone (e.g. -0100)
+-# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
++# before 1930. Jan Mayen has only been "inhabited" since 1921 by
+ # Norwegian meteorologists and maybe used the same time as Norway ever
+ # since 1921.  Svalbard (Arctic/Longyearbyen) has been inhabited since
+ # before 1895, and therefore probably changed the local time somewhere
+@@ -1907,7 +1940,7 @@
+ #  says that the meteorologists
+ # burned down their station in 1940 and left the island, but returned in
+ # 1941 with a small Norwegian garrison and continued operations despite
+-# frequent air ttacks from Germans.  In 1943 the Americans established a
++# frequent air attacks from Germans.  In 1943 the Americans established a
+ # radiolocating station on the island, called "Atlantic City".  Possibly
+ # the UT offset changed during the war, but I think it unlikely that
+ # Jan Mayen used German daylight-saving rules.
+@@ -1918,7 +1951,7 @@
+ #  says that the Germans were
+ # expelled on 1942-05-14.  However, small parties of Germans did return,
+ # and according to Wilhelm Dege's book "War North of 80" (1954)
+-# 
++# http://www.ucalgary.ca/UofC/departments/UP/1-55238/1-55238-110-2.html
+ # the German armed forces at the Svalbard weather station code-named
+ # Haudegen did not surrender to the Allies until September 1945.
+ #
+@@ -1927,6 +1960,10 @@
+ Link	Europe/Oslo	Arctic/Longyearbyen
+ 
+ # Poland
++
++# The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
++#  pp 1-2.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Poland	1918	1919	-	Sep	16	2:00s	0	-
+ Rule	Poland	1919	only	-	Apr	15	2:00s	1:00	S
+@@ -1937,9 +1974,9 @@
+ Rule	Poland	1945	only	-	Apr	29	0:00	1:00	S
+ Rule	Poland	1945	only	-	Nov	 1	0:00	0	-
+ # For 1946 on the source is Kazimierz Borkowski,
+-# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
+-# 
+-# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
++# Toruń Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
++# http://www.astro.uni.torun.pl/~kb/Artykuly/U-PA/Czas2.htm#tth_tAb1
++# Thanks to Przemysław Augustyniak (2005-05-28) for this reference.
+ # He also gives these further references:
+ # Mon Pol nr 13, poz 162 (1995) 
+ # Druk nr 2180 (2003) 
+@@ -1959,10 +1996,10 @@
+ Rule	Poland	1962	1964	-	Sep	lastSun	1:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Warsaw	1:24:00 -	LMT	1880
+-			1:24:00	-	WMT	1915 Aug  5   # Warsaw Mean Time
+-			1:00	C-Eur	CE%sT	1918 Sep 16 3:00
++			1:24:00	-	WMT	1915 Aug  5 # Warsaw Mean Time
++			1:00	C-Eur	CE%sT	1918 Sep 16  3:00
+ 			2:00	Poland	EE%sT	1922 Jun
+-			1:00	Poland	CE%sT	1940 Jun 23 2:00
++			1:00	Poland	CE%sT	1940 Jun 23  2:00
+ 			1:00	C-Eur	CE%sT	1944 Oct
+ 			1:00	Poland	CE%sT	1977
+ 			1:00	W-Eur	CE%sT	1988
+@@ -1970,6 +2007,14 @@
+ 
+ # Portugal
+ #
++# From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne:
++# According to a Portuguese decree (1911-05-26)
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00.
++# Round the old offset to -0:36:45.  This agrees with Willett but disagrees
++# with Shanks, who says the transition occurred on 1911-05-24 at 00:00 for
++# Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira.
++#
+ # From Rui Pedro Salgueiro (1992-11-12):
+ # Portugal has recently (September, 27) changed timezone
+ # (from WET to MET or CET) to harmonize with EEC.
+@@ -2049,35 +2094,34 @@
+ Rule	Port	1980	only	-	Mar	lastSun	 0:00s	1:00	S
+ Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
+ Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
+-# Willett says 1912-01-01.  Go with Willett.
+-Zone	Europe/Lisbon	-0:36:32 -	LMT	1884
+-			-0:36:32 -	LMT	1912 Jan  1  # Lisbon Mean Time
+-			 0:00	Port	WE%sT	1966 Apr  3 2:00
+-			 1:00	-	CET	1976 Sep 26 1:00
+-			 0:00	Port	WE%sT	1983 Sep 25 1:00s
+-			 0:00	W-Eur	WE%sT	1992 Sep 27 1:00s
+-			 1:00	EU	CE%sT	1996 Mar 31 1:00u
++Zone	Europe/Lisbon	-0:36:45 -	LMT	1884
++			-0:36:45 -	LMT	1912 Jan  1 # Lisbon Mean Time
++			 0:00	Port	WE%sT	1966 Apr  3  2:00
++			 1:00	-	CET	1976 Sep 26  1:00
++			 0:00	Port	WE%sT	1983 Sep 25  1:00s
++			 0:00	W-Eur	WE%sT	1992 Sep 27  1:00s
++			 1:00	EU	CE%sT	1996 Mar 31  1:00u
+ 			 0:00	EU	WE%sT
+-Zone Atlantic/Azores	-1:42:40 -	LMT	1884		# Ponta Delgada
+-			-1:54:32 -	HMT	1911 May 24  # Horta Mean Time
+-			-2:00	Port	AZO%sT	1966 Apr  3 2:00 # Azores Time
+-			-1:00	Port	AZO%sT	1983 Sep 25 1:00s
+-			-1:00	W-Eur	AZO%sT	1992 Sep 27 1:00s
+-			 0:00	EU	WE%sT	1993 Mar 28 1:00u
++Zone Atlantic/Azores	-1:42:40 -	LMT	1884        # Ponta Delgada
++			-1:54:32 -	HMT	1912 Jan  1 # Horta Mean Time
++			-2:00	Port	AZO%sT	1966 Apr  3  2:00  # Azores Time
++			-1:00	Port	AZO%sT	1983 Sep 25  1:00s
++			-1:00	W-Eur	AZO%sT	1992 Sep 27  1:00s
++			 0:00	EU	WE%sT	1993 Mar 28  1:00u
+ 			-1:00	EU	AZO%sT
+-Zone Atlantic/Madeira	-1:07:36 -	LMT	1884		# Funchal
+-			-1:07:36 -	FMT	1911 May 24  # Funchal Mean Time
+-			-1:00	Port	MAD%sT	1966 Apr  3 2:00 # Madeira Time
+-			 0:00	Port	WE%sT	1983 Sep 25 1:00s
++Zone Atlantic/Madeira	-1:07:36 -	LMT	1884        # Funchal
++			-1:07:36 -	FMT	1912 Jan  1 # Funchal Mean Time
++			-1:00	Port	MAD%sT	1966 Apr  3  2:00 # Madeira Time
++			 0:00	Port	WE%sT	1983 Sep 25  1:00s
+ 			 0:00	EU	WE%sT
+ 
+ # Romania
+ #
+ # From Paul Eggert (1999-10-07):
+-# 
+-# Nine O'clock (1998-10-23) reports that the switch occurred at
++# Nine O'clock 
++# (1998-10-23) reports that the switch occurred at
+ # 04:00 local time in fall 1998.  For lack of better info,
+ # assume that Romania and Moldova switched to EU rules in 1997,
+ # the same year as Bulgaria.
+@@ -2094,32 +2138,28 @@
+ Rule	Romania	1991	1993	-	Sep	lastSun	 0:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
+-			1:44:24	-	BMT	1931 Jul 24	# Bucharest MT
+-			2:00	Romania	EE%sT	1981 Mar 29 2:00s
++			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
++			2:00	Romania	EE%sT	1981 Mar 29  2:00s
+ 			2:00	C-Eur	EE%sT	1991
+ 			2:00	Romania	EE%sT	1994
+ 			2:00	E-Eur	EE%sT	1997
+ 			2:00	EU	EE%sT
+ 
++
+ # Russia
+ 
+ # From Alexander Krivenyshev (2011-09-15):
+ # Based on last Russian Government Decree # 725 on August 31, 2011
+ # (Government document
+-# 
+ # http://www.government.ru/gov/results/16355/print/
+-# 
+ # in Russian)
+ # there are few corrections have to be made for some Russian time zones...
+ # All updated Russian Time Zones were placed in table and translated to English
+ # by WorldTimeZone.com at the link below:
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_russia36.htm
+-# 
+ 
+ # From Sanjeev Gupta (2011-09-27):
+ # Scans of [Decree #23 of January 8, 1992] are available at:
+-# 
+ # http://government.consultant.ru/page.aspx?1223966
+ # They are in Cyrillic letters (presumably Russian).
+ 
+@@ -2128,16 +2168,12 @@
+ # changed in September 2011:
+ #
+ # One source is
+-# < a href="http://government.ru/gov/results/16355/>
+ # http://government.ru/gov/results/16355/
+-# 
+ # which, according to translate.google.com, begins "Decree of August 31,
+ # 2011 No 725" and contains no other dates or "effective date" information.
+ #
+ # Another source is
+-# 
+ # http://www.rg.ru/2011/09/06/chas-zona-dok.html
+-# 
+ # which, according to translate.google.com, begins "Resolution of the
+ # Government of the Russian Federation on August 31, 2011 N 725" and also
+ # contains "Date first official publication: September 6, 2011 Posted on:
+@@ -2145,28 +2181,45 @@
+ # does not contain any "effective date" information.
+ #
+ # Another source is
+-# 
+ # http://en.wikipedia.org/wiki/Oymyakonsky_District#cite_note-RuTime-7
+-# 
+ # which, in note 8, contains "Resolution #725 of August 31, 2011...
+ # Effective as of after 7 days following the day of the official publication"
+ # but which does not contain any reference to September 6, 2011.
+ #
+ # The Wikipedia article refers to
+-# 
+ # http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=118896
+-# 
+ # which seems to copy the text of the government.ru page.
+ #
+ # Tobias Conradi combines Wikipedia's
+ # "as of after 7 days following the day of the official publication"
+-# with www.rg.ru's "Date of first official publication: September 6, 2011" to get
+-# September 13, 2011 as the cutover date (unusually, a Tuesday, as Tobias Conradi notes).
++# with www.rg.ru's "Date of first official publication: September 6, 2011" to
++# get September 13, 2011 as the cutover date (unusually, a Tuesday, as Tobias
++# Conradi notes).
+ #
+ # None of the sources indicates a time of day for changing clocks.
+ #
+ # Go with 2011-09-13 0:00s.
+ 
++# From Alexander Krivenyshev (2014-07-01):
++# According to the Russian news (ITAR-TASS News Agency)
++# http://en.itar-tass.com/russia/738562
++# the State Duma has approved ... the draft bill on returning to
++# winter time standard and return Russia 11 time zones.  The new
++# regulations will come into effect on October 26, 2014 at 02:00 ...
++# http://asozd2.duma.gov.ru/main.nsf/%28Spravka%29?OpenAgent&RN=431985-6&02
++# Here is a link where we put together table (based on approved Bill N
++# 431985-6) with proposed 11 Russian time zones and corresponding
++# areas/cities/administrative centers in the Russian Federation (in English):
++# http://www.worldtimezone.com/dst_news/dst_news_russia65.html
++#
++# From Alexander Krivenyshev (2014-07-22):
++# Putin signed the Federal Law 431985-6 ... (in Russian)
++# http://itar-tass.com/obschestvo/1333711
++# http://www.pravo.gov.ru:8080/page.aspx?111660
++# http://www.kremlin.ru/acts/46279
++# From October 26, 2014 the new Russian time zone map will looks like this:
++# http://www.worldtimezone.com/dst_news/dst_news_russia-map-2014-07.html
++
+ # From Paul Eggert (2006-03-22):
+ # Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
+ # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
+@@ -2193,9 +2246,9 @@
+ #
+ # For Grozny, Chechnya, we have the following story from
+ # John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
+-# News--often false--is spread by word of mouth.  A rumor that it was
++# News - often false - is spread by word of mouth.  A rumor that it was
+ # time to move the clocks back put this whole city out of sync with
+-# the rest of Russia for two weeks--even soldiers stationed here began
++# the rest of Russia for two weeks - even soldiers stationed here began
+ # enforcing curfew at the wrong time.
+ #
+ # From Gwillim Law (2001-06-05):
+@@ -2206,107 +2259,265 @@
+ # since September 1997....  Although the Kuril Islands are
+ # administratively part of Sakhalin oblast', they appear to have
+ # remained on UTC+11 along with Magadan.
+-#
++
++# From Tim Parenti (2014-07-06):
++# The comments detailing the coverage of each Russian zone are meant to assist
++# with maintenance only and represent our best guesses as to which regions
++# are covered by each zone.  They are not meant to be taken as an authoritative
++# listing.  The region codes listed come from
++# http://en.wikipedia.org/w/?title=Federal_subjects_of_Russia&oldid=611810498
++# and are used for convenience only; no guarantees are made regarding their
++# future stability.  ISO 3166-2:RU codes are also listed for first-level
++# divisions where available.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-#
+-# Kaliningradskaya oblast'.
++
++
++# From Tim Parenti (2014-07-03):
++# Europe/Kaliningrad covers...
++# 39	RU-KGD	Kaliningrad Oblast
++
+ Zone Europe/Kaliningrad	 1:22:00 -	LMT	1893 Apr
+ 			 1:00	C-Eur	CE%sT	1945
+ 			 2:00	Poland	CE%sT	1946
+-			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
+-			 3:00	-	FET # Further-eastern European Time
++			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			 2:00	Russia	EE%sT	2011 Mar 27  2:00s
++			 3:00	-	FET	2014 Oct 26  2:00s
++			 2:00	-	EET
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Europe/Moscow covers...
++# 01	RU-AD	Adygea, Republic of
++# 05	RU-DA	Dagestan, Republic of
++# 06	RU-IN	Ingushetia, Republic of
++# 07	RU-KB	Kabardino-Balkar Republic
++# 08	RU-KL	Kalmykia, Republic of
++# 09	RU-KC	Karachay-Cherkess Republic
++# 10	RU-KR	Karelia, Republic of
++# 11	RU-KO	Komi Republic
++# 12	RU-ME	Mari El Republic
++# 13	RU-MO	Mordovia, Republic of
++# 15	RU-SE	North Ossetia-Alania, Republic of
++# 16	RU-TA	Tatarstan, Republic of
++# 20	RU-CE	Chechen Republic
++# 21	RU-CU	Chuvash Republic
++# 23	RU-KDA	Krasnodar Krai
++# 26	RU-STA	Stavropol Krai
++# 29	RU-ARK	Arkhangelsk Oblast
++# 31	RU-BEL	Belgorod Oblast
++# 32	RU-BRY	Bryansk Oblast
++# 33	RU-VLA	Vladimir Oblast
++# 35	RU-VLG	Vologda Oblast
++# 36	RU-VOR	Voronezh Oblast
++# 37	RU-IVA	Ivanovo Oblast
++# 40	RU-KLU	Kaluga Oblast
++# 44	RU-KOS	Kostroma Oblast
++# 46	RU-KRS	Kursk Oblast
++# 47	RU-LEN	Leningrad Oblast
++# 48	RU-LIP	Lipetsk Oblast
++# 50	RU-MOS	Moscow Oblast
++# 51	RU-MUR	Murmansk Oblast
++# 52	RU-NIZ	Nizhny Novgorod Oblast
++# 53	RU-NGR	Novgorod Oblast
++# 57	RU-ORL	Oryol Oblast
++# 58	RU-PNZ	Penza Oblast
++# 60	RU-PSK	Pskov Oblast
++# 61	RU-ROS	Rostov Oblast
++# 62	RU-RYA	Ryazan Oblast
++# 67	RU-SMO	Smolensk Oblast
++# 68	RU-TAM	Tambov Oblast
++# 69	RU-TVE	Tver Oblast
++# 71	RU-TUL	Tula Oblast
++# 73	RU-ULY	Ulyanovsk Oblast
++# 76	RU-YAR	Yaroslavl Oblast
++# 77	RU-MOW	Moscow
++# 78	RU-SPE	Saint Petersburg
++# 83	RU-NEN	Nenets Autonomous Okrug
++
++# From Vladimir Karpinsky (2014-07-08):
++# LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow
++# Observatory (coordinates: 55 deg. 45'29.70", 37 deg. 34'05.30")....
++# LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard.
++# (The info is from the book by Byalokoz ... p. 18.)
++# The time in St. Petersburg as capital of Russia was defined by
++# Pulkov observatory, near St. Petersburg.  In 1916 LMT Moscow
++# was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory
++# coordinates: 59 deg. 46'18.70", 30 deg. 19'40.70") so 30 deg. 19'40.70" >
++# 2h01m18.7s = 2:01:19.  LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 =
++# 2:31:19 ...
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Adygeya, Arkhangel'skaya oblast',
+-# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
+-# Vologodskaya oblast', Voronezhskaya oblast',
+-# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
+-# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
+-# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
+-# Respublika Kareliya, Respublika Komi,
+-# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
+-# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
+-# Respublika Mordoviya, Moskva, Moskovskaya oblast',
+-# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
+-# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
+-# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
+-# Ryazanskaya oblast', Sankt-Peterburg,
+-# Respublika Severnaya Osetiya, Smolenskaya oblast',
+-# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
+-# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
+-# Chechenskaya Respublika, Chuvashskaya oblast',
+-# Yaroslavskaya oblast'
+-Zone Europe/Moscow	 2:30:20 -	LMT	1880
+-			 2:30	-	MMT	1916 Jul  3 # Moscow Mean Time
+-			 2:30:48 Russia	%s	1919 Jul  1 2:00
++# From Paul Eggert (2014-07-08):
++# Milne does not list Moscow, but suggests that its time might be listed in
++# Résumés mensuels et annuels des observations météorologiques (1895).
++# Presumably this is OCLC 85825704, a journal published with parallel text in
++# Russian and French.  This source has not been located; go with Karpinsky.
++
++Zone Europe/Moscow	 2:30:17 -	LMT	1880
++			 2:30:17 -	MMT	1916 Jul  3 # Moscow Mean Time
++			 2:31:19 Russia	%s	1919 Jul  1  2:00
++			 3:00	Russia	%s	1921 Oct
+ 			 3:00	Russia	MSK/MSD	1922 Oct
+ 			 2:00	-	EET	1930 Jun 21
+-			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
+-			 3:00	Russia	MSK/MSD	2011 Mar 27 2:00s
+-			 4:00	-	MSK
++			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			 2:00	Russia	EE%sT	1992 Jan 19  2:00s
++			 3:00	Russia	MSK/MSD	2011 Mar 27  2:00s
++			 4:00	-	MSK	2014 Oct 26  2:00s
++			 3:00	-	MSK
++
++
++# From Tim Parenti (2014-07-03):
++# Europe/Simferopol covers...
++# **	****	Crimea, Republic of
++# **	****	Sevastopol
++
++Zone Europe/Simferopol	 2:16:24 -	LMT	1880
++			 2:16	-	SMT	1924 May  2 # Simferopol Mean T
++			 2:00	-	EET	1930 Jun 21
++			 3:00	-	MSK	1941 Nov
++			 1:00	C-Eur	CE%sT	1944 Apr 13
++			 3:00	Russia	MSK/MSD	1990
++			 3:00	-	MSK	1990 Jul  1  2:00
++			 2:00	-	EET	1992
++# Central Crimea used Moscow time 1994/1997.
+ #
+-# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
+-# Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
+-# but Wikipedia (2006-05-09) says +0300.  Perhaps it switched after the
+-# others?  But we have no data.
++# From Paul Eggert (2006-03-22):
++# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
++# from Kiev to Moscow time sometime after the January 1994 elections.
++# Shanks (1999) says "date of change uncertain", but implies that it happened
++# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
++# 1994-09-25 03:00, but that can't be right.  For now, guess it
++# changed in May.
++			 2:00	E-Eur	EE%sT	1994 May
++# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
++			 3:00	E-Eur	MSK/MSD	1996 Mar 31  3:00s
++			 3:00	1:00	MSD	1996 Oct 27  3:00s
++# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
++# Assume it happened in March by not changing the clocks.
++			 3:00	Russia	MSK/MSD	1997
++			 3:00	-	MSK	1997 Mar lastSun  1:00u
++# From Alexander Krivenyshev (2014-03-17):
++# time change at 2:00 (2am) on March 30, 2014
++# http://vz.ru/news/2014/3/17/677464.html
++# From Paul Eggert (2014-03-30):
++# Simferopol and Sevastopol reportedly changed their central town clocks
++# late the previous day, but this appears to have been ceremonial
++# and the discrepancies are small enough to not worry about.
++			 2:00	EU	EE%sT	2014 Mar 30  2:00
++			 4:00	-	MSK	2014 Oct 26  2:00s
++			 3:00	-	MSK
++
++
++# From Tim Parenti (2014-07-03):
++# Europe/Volgograd covers...
++# 30	RU-AST	Astrakhan Oblast
++# 34	RU-VGG	Volgograd Oblast
++# 43	RU-KIR	Kirov Oblast
++# 64	RU-SAR	Saratov Oblast
++
++# From Paul Eggert (2006-05-09):
++# Shanks & Pottenger say Kirov is still at +0400 but Wikipedia says +0300.
++# Perhaps it switched after the others?  But we have no data.
++
+ Zone Europe/Volgograd	 2:57:40 -	LMT	1920 Jan  3
+ 			 3:00	-	TSAT	1925 Apr  6 # Tsaritsyn Time
+ 			 3:00	-	STAT	1930 Jun 21 # Stalingrad Time
+ 			 4:00	-	STAT	1961 Nov 11
+-			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
+-			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
+-			 4:00	-	VOLT	1992 Mar 29 2:00s
+-			 3:00	Russia	VOL%sT	2011 Mar 27 2:00s
+-			 4:00	-	VOLT
+-#
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Samarskaya oblast', Udmyrtskaya respublika
+-Zone Europe/Samara	 3:20:36 -	LMT	1919 Jul  1 2:00
++			 4:00	Russia	VOL%sT	1989 Mar 26  2:00s # Volgograd T
++			 3:00	Russia	VOL%sT	1991 Mar 31  2:00s
++			 4:00	-	VOLT	1992 Mar 29  2:00s
++			 3:00	Russia	MSK	2011 Mar 27  2:00s
++			 4:00	-	MSK	2014 Oct 26  2:00s
++			 3:00	-	MSK
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Europe/Samara covers...
++# 18	RU-UD	Udmurt Republic
++# 63	RU-SAM	Samara Oblast
++
++# Byalokoz 1919 says Samara was 3:20:20.
++
++Zone Europe/Samara	 3:20:20 -	LMT	1919 Jul  1  2:00
+ 			 3:00	-	SAMT	1930 Jun 21
+ 			 4:00	-	SAMT	1935 Jan 27
+-			 4:00	Russia	KUY%sT	1989 Mar 26 2:00s # Kuybyshev
+-			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
+-			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
+-			 3:00	-	KUYT	1991 Oct 20 3:00
+-			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
+-			 3:00	Russia	SAM%sT	2011 Mar 27 2:00s
++			 4:00	Russia	KUY%sT	1989 Mar 26  2:00s # Kuybyshev
++			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			 2:00	Russia	EE%sT	1991 Sep 29  2:00s
++			 3:00	-	KUYT	1991 Oct 20  3:00
++			 4:00	Russia	SAM%sT	2010 Mar 28  2:00s # Samara Time
++			 3:00	Russia	SAM%sT	2011 Mar 27  2:00s
+ 			 4:00	-	SAMT
+ 
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Yekaterinburg covers...
++# 02	RU-BA	Bashkortostan, Republic of
++# 90	RU-PER	Perm Krai
++# 45	RU-KGN	Kurgan Oblast
++# 56	RU-ORE	Orenburg Oblast
++# 66	RU-SVE	Sverdlovsk Oblast
++# 72	RU-TYU	Tyumen Oblast
++# 74	RU-CHE	Chelyabinsk Oblast
++# 86	RU-KHM	Khanty-Mansi Autonomous Okrug - Yugra
++# 89	RU-YAN	Yamalo-Nenets Autonomous Okrug
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
+-# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
+-# Sverdlovskaya oblast', Tyumenskaya oblast',
+-# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
+-# Yamalo-Nenetskij avtonomnyj okrug.
+-Zone Asia/Yekaterinburg	 4:02:24 -	LMT	1919 Jul 15 4:00
++# Note: Effective 2005-12-01, (59) Perm Oblast and (81) Komi-Permyak
++# Autonomous Okrug merged to form (90, RU-PER) Perm Krai.
++
++# Milne says Yekaterinburg was 4:02:32.9; round to nearest.
++# Byalokoz 1919 says its provincial time was based on Perm, at 3:45:05.
++# Assume it switched on 1916-07-03, the time of the new standard.
++# The 1919 and 1930 transitions are from Shanks.
++
++Zone Asia/Yekaterinburg	 4:02:33 -	LMT	1916 Jul  3
++			 3:45:05 -	PMT	1919 Jul 15  4:00
+ 			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
+-			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
+-			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
+-			 5:00	Russia	YEK%sT	2011 Mar 27 2:00s
+-			 6:00	-	YEKT	# Yekaterinburg Time
+-#
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
+-Zone Asia/Omsk		 4:53:36 -	LMT	1919 Nov 14
+-			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
+-			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
+-			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
+-			 6:00	Russia	OMS%sT	2011 Mar 27 2:00s
+-			 7:00	-	OMST
+-#
++			 5:00	Russia	SVE%sT	1991 Mar 31  2:00s
++			 4:00	Russia	SVE%sT	1992 Jan 19  2:00s
++			 5:00	Russia	YEK%sT	2011 Mar 27  2:00s
++			 6:00	-	YEKT	2014 Oct 26  2:00s
++			 5:00	-	YEKT
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Omsk covers...
++# 04	RU-AL	Altai Republic
++# 22	RU-ALT	Altai Krai
++# 55	RU-OMS	Omsk Oblast
++
++# Byalokoz 1919 says Omsk was 4:53:30.
++
++Zone Asia/Omsk		 4:53:30 -	LMT	1919 Nov 14
++			 5:00	-	OMST	1930 Jun 21 # Omsk Time
++			 6:00	Russia	OMS%sT	1991 Mar 31  2:00s
++			 5:00	Russia	OMS%sT	1992 Jan 19  2:00s
++			 6:00	Russia	OMS%sT	2011 Mar 27  2:00s
++			 7:00	-	OMST	2014 Oct 26  2:00s
++			 6:00	-	OMST
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Novosibirsk covers...
++# 54	RU-NVS	Novosibirsk Oblast
++# 70	RU-TOM	Tomsk Oblast
++
+ # From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
+ # not clear when it switched from +7 to +6.
+-# Novosibirskaya oblast', Tomskaya oblast'.
+-Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14 6:00
++
++Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14  6:00
+ 			 6:00	-	NOVT	1930 Jun 21 # Novosibirsk Time
+-			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
+-			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
++			 7:00	Russia	NOV%sT	1991 Mar 31  2:00s
++			 6:00	Russia	NOV%sT	1992 Jan 19  2:00s
+ 			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
+-			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+-			 7:00	-	NOVT
++			 6:00	Russia	NOV%sT	2011 Mar 27  2:00s
++			 7:00	-	NOVT	2014 Oct 26  2:00s
++			 6:00	-	NOVT
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Novokuznetsk covers...
++# 42	RU-KEM	Kemerovo Oblast
+ 
+ # From Alexander Krivenyshev (2009-10-13):
+ # Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
+@@ -2319,14 +2530,10 @@
+ # time zone." ("Russia Zone 5" or old "USSR Zone 5" is GMT +0600)
+ #
+ # Russian Government web site (Russian language)
+-# 
+ # http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2009/09/14/991633.htm
+-# 
+ # or Russian-English translation by WorldTimeZone.com with reference
+ # map to local region and new Russia Time Zone map after March 28, 2010
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_russia03.html
+-# 
+ #
+ # Thus, when Russia will switch to DST on the night of March 28, 2010
+ # Kemerovo region (Kemerovo oblast') will not change the clock.
+@@ -2334,152 +2541,319 @@
+ # As a result, Kemerovo oblast' will be in the same time zone as
+ # Novosibirsk, Omsk, Tomsk, Barnaul and Altai Republic.
+ 
+-Zone Asia/Novokuznetsk	 5:48:48 -	NMT	1920 Jan  6
++# From Tim Parenti (2014-07-02), per Alexander Krivenyshev (2014-07-02):
++# The Kemerovo region will remain at UTC+7 through the 2014-10-26 change, thus
++# realigning itself with KRAT.
++
++Zone Asia/Novokuznetsk	 5:48:48 -	LMT	1924 May  1
+ 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+-			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+-			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+-			 7:00	Russia	KRA%sT	2010 Mar 28 2:00s
+-			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+-			 7:00	-	NOVT # Novosibirsk/Novokuznetsk Time
++			 7:00	Russia	KRA%sT	1991 Mar 31  2:00s
++			 6:00	Russia	KRA%sT	1992 Jan 19  2:00s
++			 7:00	Russia	KRA%sT	2010 Mar 28  2:00s
++			 6:00	Russia	NOV%sT	2011 Mar 27  2:00s # Novosibirsk
++			 7:00	-	NOVT	2014 Oct 26  2:00s
++			 7:00	-	KRAT	# Krasnoyarsk Time
+ 
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Krasnoyarsk covers...
++# 17	RU-TY	Tuva Republic
++# 19	RU-KK	Khakassia, Republic of
++# 24	RU-KYA	Krasnoyarsk Krai
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Krasnoyarskij kraj,
+-# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
+-# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
+-Zone Asia/Krasnoyarsk	 6:11:20 -	LMT	1920 Jan  6
++# Note: Effective 2007-01-01, (88) Evenk Autonomous Okrug and (84) Taymyr
++# Autonomous Okrug were merged into (24, RU-KYA) Krasnoyarsk Krai.
++
++# Byalokoz 1919 says Krasnoyarsk was 6:11:26.
++
++Zone Asia/Krasnoyarsk	 6:11:26 -	LMT	1920 Jan  6
+ 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+-			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+-			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+-			 7:00	Russia	KRA%sT	2011 Mar 27 2:00s
+-			 8:00	-	KRAT
++			 7:00	Russia	KRA%sT	1991 Mar 31  2:00s
++			 6:00	Russia	KRA%sT	1992 Jan 19  2:00s
++			 7:00	Russia	KRA%sT	2011 Mar 27  2:00s
++			 8:00	-	KRAT	2014 Oct 26  2:00s
++			 7:00	-	KRAT
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Irkutsk covers...
++# 03	RU-BU	Buryatia, Republic of
++# 38	RU-IRK	Irkutsk Oblast
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Buryatiya, Irkutskaya oblast',
+-# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
+-Zone Asia/Irkutsk	 6:57:20 -	LMT	1880
+-			 6:57:20 -	IMT	1920 Jan 25 # Irkutsk Mean Time
++# Note: Effective 2008-01-01, (85) Ust-Orda Buryat Autonomous Okrug was
++# merged into (38, RU-IRK) Irkutsk Oblast.
++
++# Milne 1899 says Irkutsk was 6:57:15.
++# Byalokoz 1919 says Irkutsk was 6:57:05.
++# Go with Byalokoz.
++
++Zone Asia/Irkutsk	 6:57:05 -	LMT	1880
++			 6:57:05 -	IMT	1920 Jan 25 # Irkutsk Mean Time
+ 			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
+-			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
+-			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
+-			 8:00	Russia	IRK%sT	2011 Mar 27 2:00s
+-			 9:00	-	IRKT
++			 8:00	Russia	IRK%sT	1991 Mar 31  2:00s
++			 7:00	Russia	IRK%sT	1992 Jan 19  2:00s
++			 8:00	Russia	IRK%sT	2011 Mar 27  2:00s
++			 9:00	-	IRKT	2014 Oct 26  2:00s
++			 8:00	-	IRKT
++
++
++# From Tim Parenti (2014-07-06):
++# Asia/Chita covers...
++# 92	RU-ZAB	Zabaykalsky Krai
+ #
+-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+-# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
+-# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
++# Note: Effective 2008-03-01, (75) Chita Oblast and (80) Agin-Buryat
++# Autonomous Okrug merged to form (92, RU-ZAB) Zabaykalsky Krai.
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# ...some regions of [Russia] were merged with others since 2005...
+-# Some names were changed, no big deal, except for one instance: a new name.
+-# YAK/YAKST: UTC+9 Zabajkal'skij kraj.
++Zone Asia/Chita	 7:33:52 -	LMT	1919 Dec 15
++			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
++			 9:00	Russia	YAK%sT	1991 Mar 31  2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19  2:00s
++			 9:00	Russia	YAK%sT	2011 Mar 27  2:00s
++			10:00	-	YAKT	2014 Oct 26  2:00s
++			 8:00	-	IRKT
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
+-# Verkhnevilyujskij, Vilyujskij, Gornyj,
+-# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
+-# Namskij, Nyurbinskij, Olenyokskij, Olyokminskij,
+-# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
+-# Churapchinskij, Eveno-Bytantajskij Natsional'nij.
+ 
+-Zone Asia/Yakutsk	 8:38:40 -	LMT	1919 Dec 15
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
++# Asia/Yakutsk covers...
++# 28	RU-AMU	Amur Oblast
++#
++# ...and parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-02	****	Aldansky District
++# 14-04	****	Amginsky District
++# 14-05	****	Anabarsky District
++# 14-06	****	Bulunsky District
++# 14-07	****	Verkhnevilyuysky District
++# 14-10	****	Vilyuysky District
++# 14-11	****	Gorny District
++# 14-12	****	Zhigansky District
++# 14-13	****	Kobyaysky District
++# 14-14	****	Lensky District
++# 14-15	****	Megino-Kangalassky District
++# 14-16	****	Mirninsky District
++# 14-18	****	Namsky District
++# 14-19	****	Neryungrinsky District
++# 14-21	****	Nyurbinsky District
++# 14-23	****	Olenyoksky District
++# 14-24	****	Olyokminsky District
++# 14-26	****	Suntarsky District
++# 14-27	****	Tattinsky District
++# 14-29	****	Ust-Aldansky District
++# 14-32	****	Khangalassky District
++# 14-33	****	Churapchinsky District
++# 14-34	****	Eveno-Bytantaysky National District
++
++# From Tim Parenti (2014-07-03):
++# Our commentary seems to have lost mention of (14-19) Neryungrinsky District.
++# Since the surrounding districts of Sakha are all YAKT, assume this is, too.
++# Also assume its history has been the same as the rest of Asia/Yakutsk.
++
++# Byalokoz 1919 says Yakutsk was 8:38:58.
++
++Zone Asia/Yakutsk	 8:38:58 -	LMT	1919 Dec 15
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+-			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+-			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
+-			 9:00	Russia	YAK%sT	2011 Mar 27 2:00s
+-			 10:00	-	YAKT
++			 9:00	Russia	YAK%sT	1991 Mar 31  2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19  2:00s
++			 9:00	Russia	YAK%sT	2011 Mar 27  2:00s
++			10:00	-	YAKT	2014 Oct 26  2:00s
++			 9:00	-	YAKT
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
++# Asia/Vladivostok covers...
++# 25	RU-PRI	Primorsky Krai
++# 27	RU-KHA	Khabarovsk Krai
++# 79	RU-YEV	Jewish Autonomous Oblast
+ #
+-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+-# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
+-# [parts of] Respublika Sakha (Yakutiya).
++# ...and parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-09	****	Verkhoyansky District
++# 14-31	****	Ust-Yansky District
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Bulunskij, Verkhoyanskij, ... Ust'-Yanskij.
+-Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
++# Milne 1899 says Vladivostok was 8:47:33.5.
++# Byalokoz 1919 says Vladivostok was 8:47:31.
++# Go with Byalokoz.
++
++Zone Asia/Vladivostok	 8:47:31 -	LMT	1922 Nov 15
+ 			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
+-			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
+-			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
+-			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+-			11:00	-	VLAT
++			10:00	Russia	VLA%sT	1991 Mar 31  2:00s
++			 9:00	Russia	VLA%sT	1992 Jan 19  2:00s
++			10:00	Russia	VLA%sT	2011 Mar 27  2:00s
++			11:00	-	VLAT	2014 Oct 26  2:00s
++			10:00	-	VLAT
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Khandyga covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-28	****	Tomponsky District
++# 14-30	****	Ust-Maysky District
+ 
+ # From Arthur David Olson (2012-05-09):
+ # Tomponskij and Ust'-Majskij switched from Vladivostok time to Yakutsk time
+ # in 2011.
+-#
++
+ # From Paul Eggert (2012-11-25):
+ # Shanks and Pottenger (2003) has Khandyga on Yakutsk time.
+ # Make a wild guess that it switched to Vladivostok time in 2004.
+ # This transition is no doubt wrong, but we have no better info.
+-#
++
+ Zone Asia/Khandyga	 9:02:13 -	LMT	1919 Dec 15
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+-			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+-			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
++			 9:00	Russia	YAK%sT	1991 Mar 31  2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19  2:00s
+ 			 9:00	Russia	YAK%sT	2004
+-			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+-			11:00	-	VLAT	2011 Sep 13 0:00s # Decree 725?
+-			10:00	-	YAKT
++			10:00	Russia	VLA%sT	2011 Mar 27  2:00s
++			11:00	-	VLAT	2011 Sep 13  0:00s # Decree 725?
++			10:00	-	YAKT	2014 Oct 26  2:00s
++			 9:00	-	YAKT
+ 
+-#
+-# Sakhalinskaya oblast'.
+-# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
++
++# From Tim Parenti (2014-07-03):
++# Asia/Sakhalin covers...
++# 65	RU-SAK	Sakhalin Oblast
++# ...with the exception of:
++# 65-11	****	Severo-Kurilsky District (North Kuril Islands)
++
++# The Zone name should be Asia/Yuzhno-Sakhalinsk, but that's too long.
+ Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
+-			 9:00	-	CJT	1938
++			 9:00	-	JCST	1937 Oct  1
+ 			 9:00	-	JST	1945 Aug 25
+-			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
+-			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
+-			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
+-			10:00	Russia	SAK%sT	2011 Mar 27 2:00s
+-			11:00	-	SAKT
+-#
+-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+-# Magadanskaya oblast', Respublika Sakha (Yakutiya).
+-# Probably also: Kuril Islands.
++			11:00	Russia	SAK%sT	1991 Mar 31  2:00s # Sakhalin T
++			10:00	Russia	SAK%sT	1992 Jan 19  2:00s
++			11:00	Russia	SAK%sT	1997 Mar lastSun  2:00s
++			10:00	Russia	SAK%sT	2011 Mar 27  2:00s
++			11:00	-	SAKT	2014 Oct 26  2:00s
++			10:00	-	SAKT
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,
+-# Nizhnekolymskij, ... Srednekolymskij.
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
++# Asia/Magadan covers...
++# 49	RU-MAG	Magadan Oblast
++
++# From Tim Parenti (2014-07-06), per Alexander Krivenyshev (2014-07-02):
++# Magadan Oblast is moving from UTC+12 to UTC+10 on 2014-10-26; however,
++# several districts of Sakha Republic as well as Severo-Kurilsky District of
++# the Sakhalin Oblast (also known as the North Kuril Islands), represented
++# until now by Asia/Magadan, will instead move to UTC+11.  These regions will
++# need their own zone.
++
+ Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
+ 			10:00	-	MAGT	1930 Jun 21 # Magadan Time
+-			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+-			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+-			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+-			12:00	-	MAGT
++			11:00	Russia	MAG%sT	1991 Mar 31  2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19  2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27  2:00s
++			12:00	-	MAGT	2014 Oct 26  2:00s
++			10:00	-	MAGT
++
++
++# From Tim Parenti (2014-07-06):
++# Asia/Srednekolymsk covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-01	****	Abyysky District
++# 14-03	****	Allaikhovsky District
++# 14-08	****	Verkhnekolymsky District
++# 14-17	****	Momsky District
++# 14-20	****	Nizhnekolymsky District
++# 14-25	****	Srednekolymsky District
++#
++# ...and parts of (65, RU-SAK) Sakhalin Oblast:
++# 65-11	****	Severo-Kurilsky District (North Kuril Islands)
++
++# From Tim Parenti (2014-07-02):
++# Oymyakonsky District of Sakha Republic (represented by Ust-Nera), along with
++# most of Sakhalin Oblast (represented by Sakhalin) will be moving to UTC+10 on
++# 2014-10-26 to stay aligned with VLAT/SAKT; however, Severo-Kurilsky District
++# of the Sakhalin Oblast (also known as the North Kuril Islands, represented by
++# Severo-Kurilsk) will remain on UTC+11.
++
++# From Tim Parenti (2014-07-06):
++# Assume North Kuril Islands have history like Magadan before 2011-03-27.
++# There is a decent chance this is wrong, in which case a new zone
++# Asia/Severo-Kurilsk would become necessary.
++#
++# Srednekolymsk and Zyryanka are the most populous places amongst these
++# districts, but have very similar populations.  In fact, Wikipedia currently
++# lists them both as having 3528 people, exactly 1668 males and 1860 females
++# each!  (Yikes!)
++# http://en.wikipedia.org/w/?title=Srednekolymsky_District&oldid=603435276
++# http://en.wikipedia.org/w/?title=Verkhnekolymsky_District&oldid=594378493
++# Assume this is a mistake, albeit an amusing one.
++#
++# Looking at censuses, the populations of the two municipalities seem to have
++# fluctuated recently.  Zyryanka was more populous than Srednekolymsk in the
++# 1989 and 2002 censuses, but Srednekolymsk was more populous in the most
++# recent (2010) census, 3525 to 3170.  (See pages 195 and 197 of
++# http://www.gks.ru/free_doc/new_site/perepis2010/croc/Documents/Vol1/pub-01-05.pdf
++# in Russian.)  In addition, Srednekolymsk appears to be a much older
++# settlement and the population of Zyryanka seems to be declining.
++# Go with Srednekolymsk.
++#
++# Since Magadan Oblast moves to UTC+10 on 2014-10-26, we cannot keep using MAGT
++# as the abbreviation.  Use SRET instead.
++
++Zone Asia/Srednekolymsk	10:14:52 -	LMT	1924 May  2
++			10:00	-	MAGT	1930 Jun 21 # Magadan Time
++			11:00	Russia	MAG%sT	1991 Mar 31  2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19  2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27  2:00s
++			12:00	-	MAGT	2014 Oct 26  2:00s
++			11:00	-	SRET	# Srednekolymsk Time
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Ust-Nera covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-22	****	Oymyakonsky District
+ 
+ # From Arthur David Olson (2012-05-09):
+-# Ojmyakonskij and the Kuril Islands switched from
++# Ojmyakonskij [and the Kuril Islands] switched from
+ # Magadan time to Vladivostok time in 2011.
++#
++# From Tim Parenti (2014-07-06), per Alexander Krivenyshev (2014-07-02):
++# It's unlikely that any of the Kuril Islands were involved in such a switch,
++# as the South and Middle Kurils have been on UTC+11 (SAKT) with the rest of
++# Sakhalin Oblast since at least 2011-09, and the North Kurils have been on
++# UTC+12 since at least then, too.
++
+ Zone Asia/Ust-Nera	 9:32:54 -	LMT	1919 Dec 15
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+ 			 9:00	Russia	YAKT	1981 Apr  1
+-			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+-			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+-			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+-			12:00	-	MAGT	2011 Sep 13 0:00s # Decree 725?
+-			11:00	-	VLAT
++			11:00	Russia	MAG%sT	1991 Mar 31  2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19  2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27  2:00s
++			12:00	-	MAGT	2011 Sep 13  0:00s # Decree 725?
++			11:00	-	VLAT	2014 Oct 26  2:00s
++			10:00	-	VLAT
+ 
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Kamchatka covers...
++# 91	RU-KAM	Kamchatka Krai
+ #
+-# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
++# Note: Effective 2007-07-01, (41) Kamchatka Oblast and (82) Koryak
++# Autonomous Okrug merged to form (91, RU-KAM) Kamchatka Krai.
++
++# The Zone name should be Asia/Petropavlovsk-Kamchatski or perhaps
++# Asia/Petropavlovsk-Kamchatsky, but these are too long.
+ Zone Asia/Kamchatka	10:34:36 -	LMT	1922 Nov 10
+ 			11:00	-	PETT	1930 Jun 21 # P-K Time
+-			12:00	Russia	PET%sT	1991 Mar 31 2:00s
+-			11:00	Russia	PET%sT	1992 Jan 19 2:00s
+-			12:00	Russia	PET%sT	2010 Mar 28 2:00s
+-			11:00	Russia	PET%sT	2011 Mar 27 2:00s
++			12:00	Russia	PET%sT	1991 Mar 31  2:00s
++			11:00	Russia	PET%sT	1992 Jan 19  2:00s
++			12:00	Russia	PET%sT	2010 Mar 28  2:00s
++			11:00	Russia	PET%sT	2011 Mar 27  2:00s
+ 			12:00	-	PETT
+-#
+-# Chukotskij avtonomnyj okrug
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Anadyr covers...
++# 87	RU-CHU	Chukotka Autonomous Okrug
++
+ Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
+ 			12:00	-	ANAT	1930 Jun 21 # Anadyr Time
+-			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
+-			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
+-			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
+-			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
+-			11:00	Russia	ANA%sT	2011 Mar 27 2:00s
++			13:00	Russia	ANA%sT	1982 Apr  1  0:00s
++			12:00	Russia	ANA%sT	1991 Mar 31  2:00s
++			11:00	Russia	ANA%sT	1992 Jan 19  2:00s
++			12:00	Russia	ANA%sT	2010 Mar 28  2:00s
++			11:00	Russia	ANA%sT	2011 Mar 27  2:00s
+ 			12:00	-	ANAT
+ 
++
+ # San Marino
+ # See Europe/Rome.
+ 
+@@ -2488,11 +2862,11 @@
+ Zone	Europe/Belgrade	1:22:00	-	LMT	1884
+ 			1:00	-	CET	1941 Apr 18 23:00
+ 			1:00	C-Eur	CE%sT	1945
+-			1:00	-	CET	1945 May 8 2:00s
++			1:00	-	CET	1945 May  8  2:00s
+ 			1:00	1:00	CEST	1945 Sep 16  2:00s
+-# Metod Kozelj reports that the legal date of
++# Metod Koželj reports that the legal date of
+ # transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
+-# Shanks & Pottenger don't give as much detail, so go with Kozelj.
++# Shanks & Pottenger don't give as much detail, so go with Koželj.
+ 			1:00	-	CET	1982 Nov 27
+ 			1:00	EU	CE%sT
+ Link Europe/Belgrade Europe/Ljubljana	# Slovenia
+@@ -2568,13 +2942,13 @@
+ 			 0:00	1:00	WEST	1918 Oct  7 23:00
+ 			 0:00	-	WET	1924
+ 			 0:00	Spain	WE%sT	1929
+-			 0:00 SpainAfrica WE%sT 1984 Mar 16
++			 0:00 SpainAfrica WE%sT	1984 Mar 16
+ 			 1:00	-	CET	1986
+ 			 1:00	EU	CE%sT
+ Zone	Atlantic/Canary	-1:01:36 -	LMT	1922 Mar # Las Palmas de Gran C.
+-			-1:00	-	CANT	1946 Sep 30 1:00 # Canaries Time
+-			 0:00	-	WET	1980 Apr  6 0:00s
+-			 0:00	1:00	WEST	1980 Sep 28 0:00s
++			-1:00	-	CANT	1946 Sep 30  1:00 # Canaries T
++			 0:00	-	WET	1980 Apr  6  0:00s
++			 0:00	1:00	WEST	1980 Sep 28  0:00s
+ 			 0:00	EU	WE%sT
+ # IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
+ # Ignore this for now, as the Canaries are part of the EU.
+@@ -2583,7 +2957,7 @@
+ 
+ # From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
+ #
+-# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
++# The law "Svensk författningssamling 1878, no 14" about standard time in 1879:
+ # From the beginning of 1879 (that is 01-01 00:00) the time for all
+ # places in the country is "the mean solar time for the meridian at
+ # three degrees, or twelve minutes of time, to the west of the
+@@ -2594,7 +2968,7 @@
+ # national standard time as 01:00:14 ahead of GMT....
+ #
+ # About the beginning of CET in Sweden. The lawtext ("Svensk
+-# forfattningssamling 1899, no 44") states, that "from the beginning
++# författningssamling 1899, no 44") states, that "from the beginning
+ # of 1900... ... the same as the mean solar time for the meridian at
+ # the distance of one hour of time from the meridian of the English
+ # observatory at Greenwich, or at 12 minutes 14 seconds to the west
+@@ -2602,7 +2976,7 @@
+ # 1899-06-16.  In short: At 1900-01-01 00:00:00 the new standard time
+ # in Sweden is 01:00:00 ahead of GMT.
+ #
+-# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
++# 1916: The lawtext ("Svensk författningssamling 1916, no 124") states
+ # that "1916-05-15 is considered to begin one hour earlier". It is
+ # pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
+ # Further the law says, that "1916-09-30 is considered to end one hour later".
+@@ -2612,7 +2986,7 @@
+ # not available on the site (to my knowledge they are only available
+ # in Swedish):  (type
+ # "sommartid" without the quotes in the field "Fritext" and then click
+-# the Sok-button).
++# the Sök-button).
+ #
+ # (2001-05-13):
+ #
+@@ -2627,9 +3001,9 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
+-			1:00:14	-	SET	1900 Jan  1	# Swedish Time
++			1:00:14	-	SET	1900 Jan  1 # Swedish Time
+ 			1:00	-	CET	1916 May 14 23:00
+-			1:00	1:00	CEST	1916 Oct  1 01:00
++			1:00	1:00	CEST	1916 Oct  1  1:00
+ 			1:00	-	CET	1980
+ 			1:00	EU	CE%sT
+ 
+@@ -2637,7 +3011,7 @@
+ # From Howse:
+ # By the end of the 18th century clocks and watches became commonplace
+ # and their performance improved enormously.  Communities began to keep
+-# mean time in preference to apparent time -- Geneva from 1780 ....
++# mean time in preference to apparent time - Geneva from 1780 ....
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ # From Whitman (who writes "Midnight?"):
+ # Rule	Swiss	1940	only	-	Nov	 2	0:00	1:00	S
+@@ -2653,7 +3027,7 @@
+ # to be wrong. This is now verified.
+ #
+ # I have found copies of the original ruling by the Swiss Federal
+-# government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss
++# government, in 'Eidgenössische Gesetzessammlung 1941 and 1942' (Swiss
+ # federal law collection)...
+ #
+ # DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am
+@@ -2672,7 +3046,7 @@
+ # night as an absolute novelty, because this was the first time that such
+ # a thing had happened in Switzerland.
+ #
+-# I have also checked 1916, because one book source (Gabriel, Traite de
++# I have also checked 1916, because one book source (Gabriel, Traité de
+ # l'heure dans le monde) claims that Switzerland had DST in 1916. This is
+ # false, no official document could be found. Probably Gabriel got misled
+ # by references to Germany, which introduced DST in 1916 for the first time.
+@@ -2686,19 +3060,19 @@
+ # One further detail for Switzerland, which is probably out of scope for
+ # most users of tzdata: The [Europe/Zurich zone] ...
+ # describes all of Switzerland correctly, with the exception of
+-# the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not
++# the Canton de Genève (Geneva, Genf). Between 1848 and 1894 Geneva did not
+ # follow Bern Mean Time but kept its own local mean time.
+ # To represent this, an extra zone would be needed.
+ #
+ # From Alois Treindl (2013-09-11):
+ # The Federal regulations say
+ # http://www.admin.ch/opc/de/classified-compilation/20071096/index.html
+-# ... the meridian for Bern mean time ... is 7 degrees 26'22.50".
++# ... the meridian for Bern mean time ... is 7 degrees 26' 22.50".
+ # Expressed in time, it is 0h29m45.5s.
+ 
+ # From Pierre-Yves Berger (2013-09-11):
+-# the "Circulaire du conseil federal" (December 11 1893)
+-#  ...
++# the "Circulaire du conseil fédéral" (December 11 1893)
++# http://www.amtsdruckschriften.bar.admin.ch/viewOrigDoc.do?id=10071353
+ # clearly states that the [1894-06-01] change should be done at midnight
+ # but if no one is present after 11 at night, could be postponed until one
+ # hour before the beginning of service.
+@@ -2709,14 +3083,14 @@
+ # We can find no reliable source for Shanks's assertion that all of Switzerland
+ # except Geneva switched to Bern Mean Time at 00:00 on 1848-09-12.  This book:
+ #
+-#	Jakob Messerli. Gleichmassig, punktlich, schnell: Zeiteinteilung und
++#	Jakob Messerli. Gleichmässig, pünktlich, schnell. Zeiteinteilung und
+ #	Zeitgebrauch in der Schweiz im 19. Jahrhundert. Chronos, Zurich 1995,
+ #	ISBN 3-905311-68-2, OCLC 717570797.
+ #
+ # suggests that the transition was more gradual, and that the Swiss did not
+ # agree about civil time during the transition.  The timekeeping it gives the
+ # most detail for is postal and telegraph time: here, federal legislation (the
+-# "Bundesgesetz uber die Erstellung von elektrischen Telegraphen") passed on
++# "Bundesgesetz über die Erstellung von elektrischen Telegraphen") passed on
+ # 1851-11-23, and an official implementation notice was published 1853-07-16
+ # (Bundesblatt 1853, Bd. II, S. 859).  On p 72 Messerli writes that in
+ # practice since July 1853 Bernese time was used in "all postal and telegraph
+@@ -2730,7 +3104,7 @@
+ Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Zurich	0:34:08 -	LMT	1853 Jul 16 # See above comment.
+-			0:29:46	-	BMT	1894 Jun # Bern Mean Time
++			0:29:46	-	BMT	1894 Jun    # Bern Mean Time
+ 			1:00	Swiss	CE%sT	1981
+ 			1:00	EU	CE%sT
+ 
+@@ -2738,7 +3112,7 @@
+ 
+ # From Amar Devegowda (2007-01-03):
+ # The time zone rules for Istanbul, Turkey have not been changed for years now.
+-# ... The latest rules are available at -
++# ... The latest rules are available at:
+ # http://www.timeanddate.com/worldclock/timezone.html?n=107
+ # From Steffen Thorsen (2007-01-03):
+ # I have been able to find press records back to 1996 which all say that
+@@ -2763,8 +3137,7 @@
+ # (on a non-government server though) describing dates between 2002 and 2006:
+ # http://www.alomaliye.com/bkk_2002_3769.htm
+ 
+-# From Gökdeniz Karadağ (2011-03-10):
+-#
++# From Gökdeniz Karadağ (2011-03-10):
+ # According to the articles linked below, Turkey will change into summer
+ # time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
+ # This change is due to a nationwide exam on 27th.
+@@ -2777,9 +3150,16 @@
+ # Turkish Local election....
+ # http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik
+ # ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m.
+-# From Paul Eggert (2014-02-17):
+-# Here is an English-language source:
+-# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31
++# From Randal L. Schwartz (2014-04-15):
++# Having landed on a flight from the states to Istanbul (via AMS) on March 31,
++# I can tell you that NOBODY (even the airlines) respected this timezone DST
++# change delay.  Maybe the word just didn't get out in time.
++# From Paul Eggert (2014-06-15):
++# The press reported massive confusion, as election officials obeyed the rule
++# change but cell phones (and airline baggage systems) did not.  See:
++# Kostidis M. Eventful elections in Turkey. Balkan News Agency
++# http://www.balkaneu.com/eventful-elections-turkey/ 2014-03-30.
++# I guess the best we can do is document the official time.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Turkey	1916	only	-	May	 1	0:00	1:00	S
+@@ -2846,10 +3226,10 @@
+ 			2:00	Turkey	EE%sT	1978 Oct 15
+ 			3:00	Turkey	TR%sT	1985 Apr 20 # Turkey Time
+ 			2:00	Turkey	EE%sT	2007
+-			2:00	EU	EE%sT	2011 Mar 27 1:00u
+-			2:00	-	EET	2011 Mar 28 1:00u
+-			2:00	EU	EE%sT	2014 Mar 30 1:00u
+-			2:00	-	EET	2014 Mar 31 1:00u
++			2:00	EU	EE%sT	2011 Mar 27  1:00u
++			2:00	-	EET	2011 Mar 28  1:00u
++			2:00	EU	EE%sT	2014 Mar 30  1:00u
++			2:00	-	EET	2014 Mar 31  1:00u
+ 			2:00	EU	EE%sT
+ Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
+ 
+@@ -2870,7 +3250,7 @@
+ # Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got
+ # approval from 266 deputies.
+ #
+-# Ukraine abolishes transter back to the winter time (in Russian)
++# Ukraine abolishes transfer back to the winter time (in Russian)
+ # http://news.mail.ru/politics/6861560/
+ #
+ # The Ukrainians will no longer change the clock (in Russian)
+@@ -2931,12 +3311,12 @@
+ 			2:00	-	EET	1930 Jun 21
+ 			3:00	-	MSK	1941 Sep 20
+ 			1:00	C-Eur	CE%sT	1943 Nov  6
+-			3:00	Russia	MSK/MSD	1990 Jul  1 2:00
+-			2:00	1:00	EEST	1991 Sep 29 3:00
++			3:00	Russia	MSK/MSD	1990 Jul  1  2:00
++			2:00	1:00	EEST	1991 Sep 29  3:00
+ 			2:00	E-Eur	EE%sT	1995
+ 			2:00	EU	EE%sT
+ # Ruthenia used CET 1990/1991.
+-# "Uzhhorod" is the transliteration of the Ukrainian name, but
++# "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
+ # "Uzhgorod" is more common in English.
+ Zone Europe/Uzhgorod	1:29:12 -	LMT	1890 Oct
+ 			1:00	-	CET	1940
+@@ -2944,8 +3324,8 @@
+ 			1:00	1:00	CEST	1944 Oct 26
+ 			1:00	-	CET	1945 Jun 29
+ 			3:00	Russia	MSK/MSD	1990
+-			3:00	-	MSK	1990 Jul  1 2:00
+-			1:00	-	CET	1991 Mar 31 3:00
++			3:00	-	MSK	1990 Jul  1  2:00
++			1:00	-	CET	1991 Mar 31  3:00
+ 			2:00	-	EET	1992
+ 			2:00	E-Eur	EE%sT	1995
+ 			2:00	EU	EE%sT
+@@ -2959,42 +3339,9 @@
+ 			2:00	-	EET	1930 Jun 21
+ 			3:00	-	MSK	1941 Aug 25
+ 			1:00	C-Eur	CE%sT	1943 Oct 25
+-			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
++			3:00	Russia	MSK/MSD	1991 Mar 31  2:00
+ 			2:00	E-Eur	EE%sT	1995
+ 			2:00	EU	EE%sT
+-# Central Crimea used Moscow time 1994/1997.
+-Zone Europe/Simferopol	2:16:24 -	LMT	1880
+-			2:16	-	SMT	1924 May  2 # Simferopol Mean T
+-			2:00	-	EET	1930 Jun 21
+-			3:00	-	MSK	1941 Nov
+-			1:00	C-Eur	CE%sT	1944 Apr 13
+-			3:00	Russia	MSK/MSD	1990
+-			3:00	-	MSK	1990 Jul  1 2:00
+-			2:00	-	EET	1992
+-# From Paul Eggert (2006-03-22):
+-# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
+-# from Kiev to Moscow time sometime after the January 1994 elections.
+-# Shanks (1999) says "date of change uncertain", but implies that it happened
+-# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
+-# 1994-09-25 03:00, but that can't be right.  For now, guess it
+-# changed in May.
+-			2:00	E-Eur	EE%sT	1994 May
+-# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
+-			3:00	E-Eur	MSK/MSD	1996 Mar 31 3:00s
+-			3:00	1:00	MSD	1996 Oct 27 3:00s
+-# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
+-# Assume it happened in March by not changing the clocks.
+-			3:00	Russia	MSK/MSD	1997
+-			3:00	-	MSK	1997 Mar lastSun 1:00u
+-# From Alexander Krivenyshev (2014-03-17):
+-# time change at 2:00 (2am) on March 30, 2014
+-# http://vz.ru/news/2014/3/17/677464.html
+-# From Paul Eggert (2014-03-30):
+-# Simferopol and Sevastopol reportedly changed their central town clocks
+-# late the previous day, but this appears to have been ceremonial
+-# and the discrepancies are small enough to not worry about.
+-			2:00	EU	EE%sT	2014 Mar 30 2:00
+-			4:00	-	MSK
+ 
+ # Vatican City
+ # See Europe/Rome.
+@@ -3018,7 +3365,7 @@
+ # ...
+ #
+ # ...the European time rules are...standardized since 1981, when
+-# most European coun[tr]ies started DST.  Before that year, only
++# most European countries started DST.  Before that year, only
+ # a few countries (UK, France, Italy) had DST, each according
+ # to own national rules.  In 1981, however, DST started on
+ # 'Apr firstSun', and not on 'Mar lastSun' as in the following
+@@ -3026,7 +3373,7 @@
+ # But also since 1981 there are some more national exceptions
+ # than listed in 'europe': Switzerland, for example, joined DST
+ # one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
+-# lastSun' in 1981---I don't know how they handle now.
++# lastSun' in 1981 - I don't know how they handle now.
+ #
+ # Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
+ # Soviet Union (as far as I know).
+--- ./jdk/make/data/tzdata/factory	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/factory	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- ./jdk/make/data/tzdata/iso3166.tab	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/iso3166.tab	Mon Dec 08 12:29:42 2014 -0800
+@@ -26,21 +26,21 @@
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
+-# From Paul Eggert (2013-05-27):
++# From Paul Eggert (2014-07-18):
++# This file contains a table of two-letter country codes.  Columns are
++# separated by a single tab.  Lines beginning with '#' are comments.
++# Although all text currently uses ASCII encoding, this is planned to
++# change to UTF-8 soon.  The columns of the table are as follows:
+ #
+-# This file contains a table with the following columns:
+ # 1.  ISO 3166-1 alpha-2 country code, current as of
+-#     ISO 3166-1 Newsletter VI-15 (2013-05-10).  See: Updates on ISO 3166
++#     ISO 3166-1 Newsletter VI-16 (2013-07-11).  See: Updates on ISO 3166
+ #   http://www.iso.org/iso/home/standards/country_codes/updates_on_iso_3166.htm
+ # 2.  The usual English name for the coded region,
+ #     chosen so that alphabetic sorting of subsets produces helpful lists.
+ #     This is not the same as the English name in the ISO 3166 tables.
+ #
+-# Columns are separated by a single tab.
+ # The table is sorted by country code.
+ #
+-# Lines beginning with `#' are comments.
+-#
+ # This table is intended as an aid for users, to help them select time
+ # zone data appropriate for their practical needs.  It is not intended
+ # to take or endorse any position on legal or territorial claims.
+--- ./jdk/make/data/tzdata/leapseconds	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/leapseconds	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,7 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# Allowance for leapseconds added to each timezone file.
++# Allowance for leap seconds added to each time zone file.
+ 
+ # This file is in the public domain.
+ 
+@@ -31,10 +31,10 @@
+ # you should be able to pick up leap-seconds.list from a secondary NIST server.
+ # For more about leap-seconds.list, please see
+ # The NTP Timescale and Leap Seconds
+-# .
++# http://www.eecis.udel.edu/~mills/leap.html
+ 
+-# The International Earth Rotation Service periodically uses leap seconds
+-# to keep UTC to within 0.9 s of UT1
++# The International Earth Rotation and Reference Systems Service
++# periodically uses leap seconds to keep UTC to within 0.9 s of UT1
+ # (which measures the true angular orientation of the earth in space); see
+ # Terry J Quinn, The BIPM and the accurate measure of time,
+ # Proc IEEE 79, 7 (July 1991), 894-905 .
+--- ./jdk/make/data/tzdata/northamerica	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/northamerica	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,15 +21,15 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+ # also includes Central America and the Caribbean
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+ # From Paul Eggert (1999-03-22):
+ # A reliable and entertaining source about time zones is
+@@ -78,13 +78,13 @@
+ #	to push people into bed earlier, and get them up earlier, to make
+ #	them healthy, wealthy and wise in spite of themselves.
+ #
+-#	-- Robertson Davies, The diary of Samuel Marchbanks,
++#	 -- Robertson Davies, The diary of Samuel Marchbanks,
+ #	   Clarke, Irwin (1947), XIX, Sunday
+ #
+ # For more about the first ten years of DST in the United States, see
+-# Robert Garland's 
+-# Ten years of daylight saving from the Pittsburgh standpoint
+-# (Carnegie Library of Pittsburgh, 1927).
++# Robert Garland, Ten years of daylight saving from the Pittsburgh standpoint
++# (Carnegie Library of Pittsburgh, 1927).
++# http://www.clpgh.org/exhibit/dst.html
+ #
+ # Shanks says that DST was called "War Time" in the US in 1918 and 1919.
+ # However, DST was imposed by the Standard Time Act of 1918, which
+@@ -103,11 +103,11 @@
+ # From Arthur David Olson (2000-09-25):
+ # Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
+ # In the introduction, Oboler spoke of "Eastern Peace Time."
+-# An AltaVista search turned up
+-# :
++# An AltaVista search turned up:
++# http://rowayton.org/rhs/hstaug45.html
+ # "When the time is announced over the radio now, it is 'Eastern Peace
+ # Time' instead of the old familiar 'Eastern War Time.'  Peace is wonderful."
+-#  (August 1945) by way of confirmation.
++# (August 1945) by way of confirmation.
+ 
+ # From Joseph Gallant citing
+ # George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
+@@ -205,7 +205,7 @@
+ # USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
+ # USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
+ # USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
+-# USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
++# USA    "           9 H  BEHIND UTC    APR 3 - OCT 30
+ # USA  HAWAII       10 H  BEHIND UTC
+ # USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
+ 
+@@ -258,19 +258,19 @@
+ # The following was signed into law on 2005-08-08.
+ #
+ # H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
+-#   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
++#   (a) Amendment.--Section 3(a) of the Uniform Time Act of 1966 (15
+ #   U.S.C. 260a(a)) is amended--
+-#     (1) by striking 'first Sunday of April' and inserting 'second
+-#     Sunday of March'; and
+-#     (2) by striking 'last Sunday of October' and inserting 'first
++#     (1) by striking "first Sunday of April" and inserting "second
++#     Sunday of March"; and
++#     (2) by striking "last Sunday of October" and inserting "first
+ #     Sunday of November'.
+-#   (b) Effective Date- Subsection (a) shall take effect 1 year after the
++#   (b) Effective Date.--Subsection (a) shall take effect 1 year after the
+ #   date of enactment of this Act or March 1, 2007, whichever is later.
+-#   (c) Report to Congress- Not later than 9 months after the effective
++#   (c) Report to Congress.--Not later than 9 months after the effective
+ #   date stated in subsection (b), the Secretary shall report to Congress
+ #   on the impact of this section on energy consumption in the United
+ #   States.
+-#   (d) Right to Revert- Congress retains the right to revert the
++#   (d) Right to Revert.--Congress retains the right to revert the
+ #   Daylight Saving Time back to the 2005 time schedules once the
+ #   Department study is complete.
+ 
+@@ -292,7 +292,7 @@
+ 
+ # From Paul Eggert (2005-08-26):
+ # According to today's Huntsville Times
+-# 
++# http://www.al.com/news/huntsvilletimes/index.ssf?/base/news/1125047783228320.xml&coll=1
+ # a few towns on Alabama's "eastern border with Georgia, such as Phenix City
+ # in Russell County, Lanett in Chambers County and some towns in Lee County,
+ # set their watches and clocks on Eastern time."  It quotes H.H. "Bubba"
+@@ -300,6 +300,12 @@
+ # time zone, but we do go by the Eastern time zone because so many people work
+ # in Columbus."
+ 
++# From Paul Eggert (2014-09-06):
++# Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208
++# says that New York City Hall time was 3 minutes 58.4 seconds fast of
++# Eastern time (i.e., -4:56:01.6) just before the 1883 switch.  Round to the
++# nearest second.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+ Rule	NYC	1920	only	-	Mar	lastSun	2:00	1:00	D
+ Rule	NYC	1920	only	-	Oct	lastSun	2:00	0	S
+@@ -347,15 +353,15 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Chicago	-5:50:36 -	LMT	1883 Nov 18 12:09:24
+ 			-6:00	US	C%sT	1920
+-			-6:00	Chicago	C%sT	1936 Mar  1 2:00
+-			-5:00	-	EST	1936 Nov 15 2:00
++			-6:00	Chicago	C%sT	1936 Mar  1  2:00
++			-5:00	-	EST	1936 Nov 15  2:00
+ 			-6:00	Chicago	C%sT	1942
+ 			-6:00	US	C%sT	1946
+ 			-6:00	Chicago	C%sT	1967
+ 			-6:00	US	C%sT
+ # Oliver County, ND switched from mountain to central time on 1992-10-25.
+ Zone America/North_Dakota/Center -6:45:12 - LMT	1883 Nov 18 12:14:48
+-			-7:00	US	M%sT	1992 Oct 25 02:00
++			-7:00	US	M%sT	1992 Oct 25  2:00
+ 			-6:00	US	C%sT
+ # Morton County, ND, switched from mountain to central time on
+ # 2003-10-26, except for the area around Mandan which was already central time.
+@@ -364,29 +370,26 @@
+ # Jones, Mellette, and Todd Counties in South Dakota;
+ # but in practice these other counties were already observing central time.
+ # See .
+-Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
+-			-7:00	US	M%sT	2003 Oct 26 02:00
++Zone America/North_Dakota/New_Salem -6:45:39 - LMT	1883 Nov 18 12:14:21
++			-7:00	US	M%sT	2003 Oct 26  2:00
+ 			-6:00	US	C%sT
+ 
+ # From Josh Findley (2011-01-21):
+ # ...it appears that Mercer County, North Dakota, changed from the
+ # mountain time zone to the central time zone at the last transition from
+ # daylight-saving to standard time (on Nov. 7, 2010):
+-# 
+ # http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm
+-# 
+-# 
+ # http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html
+-# 
+ 
+ # From Andy Lipscomb (2011-01-24):
+ # ...according to the Census Bureau, the largest city is Beulah (although
+ # it's commonly referred to as Beulah-Hazen, with Hazen being the next
+ # largest city in Mercer County).  Google Maps places Beulah's city hall
+-# at 4715'51" north, 10146'40" west, which yields an offset of 6h47'07".
++# at 47 degrees 15' 51" N, 101 degrees 46' 40" W, which yields an offset
++# of 6h47'07".
+ 
+-Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
+-			-7:00	US	M%sT	2010 Nov  7 2:00
++Zone America/North_Dakota/Beulah -6:47:07 - LMT	1883 Nov 18 12:12:53
++			-7:00	US	M%sT	2010 Nov  7  2:00
+ 			-6:00	US	C%sT
+ 
+ # US mountain time, represented by Denver
+@@ -448,15 +451,18 @@
+ # was destroyed in 1805 by a Yakutat-kon war party.)  However, there
+ # were nearby inhabitants in some cases and for our purposes perhaps
+ # it's best to simply use the official transition.
++
++# From Paul Eggert (2014-07-18):
++# One opinion of the early-1980s turmoil in Alaska over time zones and
++# daylight saving time appeared as graffiti on a Juneau airport wall:
++# "Welcome to Juneau.  Please turn your watch back to the 19th century."
++# See: Turner W. Alaska's four time zones now two. NY Times 1983-11-01.
++# http://www.nytimes.com/1983/11/01/us/alaska-s-four-time-zones-now-two.html
+ #
+-
+-# From Steve Ferguson (2011-01-31):
+-# The author lives in Alaska and many of the references listed are only
+-# available to Alaskan residents.
+-#
+-# 
+-# http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98
+-# 
++# Steve Ferguson (2011-01-31) referred to the following source:
++# Norris F. Keeping time in Alaska: national directives, local response.
++# Alaska History 2001;16(1-2).
++# http://alaskahistoricalsociety.org/discover-alaska/glimpses-of-the-past/keeping-time-in-alaska/
+ 
+ # From Arthur David Olson (2011-02-01):
+ # Here's database-relevant material from the 2001 "Alaska History" article:
+@@ -482,12 +488,10 @@
+ # From Arthur David Olson (2011-02-09):
+ # I just spoke by phone with a staff member at the Metlakatla Indian
+ # Community office (using contact information available at
+-# 
+ # http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla
+-# ).
+ # It's shortly after 1:00 here on the east coast of the United States;
+ # the staffer said it was shortly after 10:00 there. When I asked whether
+-# that meant they were on Pacific time, they said no--they were on their
++# that meant they were on Pacific time, they said no - they were on their
+ # own time. I asked about daylight saving; they said it wasn't used. I
+ # did not inquire about practices in the past.
+ 
+@@ -501,9 +505,9 @@
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+-			 -8:00	US	P%sT	1980 Apr 27 2:00
+-			 -9:00	US	Y%sT	1980 Oct 26 2:00
+-			 -8:00	US	P%sT	1983 Oct 30 2:00
++			 -8:00	US	P%sT	1980 Apr 27  2:00
++			 -9:00	US	Y%sT	1980 Oct 26  2:00
++			 -8:00	US	P%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Sitka	 14:58:47 -	LMT	1867 Oct 18
+@@ -511,7 +515,7 @@
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+-			 -8:00	US	P%sT	1983 Oct 30 2:00
++			 -8:00	US	P%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Metlakatla	 15:13:42 -	LMT	1867 Oct 18
+@@ -519,8 +523,8 @@
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+-			 -8:00	US	P%sT	1983 Oct 30 2:00
+-			 -8:00	-	MeST
++			 -8:00	US	P%sT	1983 Oct 30  2:00
++			 -8:00	-	PST
+ Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
+ 			 -9:18:55 -	LMT	1900 Aug 20 12:00
+ 			 -9:00	-	YST	1942
+@@ -535,7 +539,7 @@
+ 			-10:00	US	CAT/CAPT 1946 # Peace
+ 			-10:00	-	CAT	1967 Apr
+ 			-10:00	-	AHST	1969
+-			-10:00	US	AH%sT	1983 Oct 30 2:00
++			-10:00	US	AH%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Nome	 12:58:21 -	LMT	1867 Oct 18
+@@ -544,7 +548,7 @@
+ 			-11:00	US	N%sT	1946
+ 			-11:00	-	NST	1967 Apr
+ 			-11:00	-	BST	1969
+-			-11:00	US	B%sT	1983 Oct 30 2:00
++			-11:00	US	B%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Adak	 12:13:21 -	LMT	1867 Oct 18
+@@ -553,7 +557,7 @@
+ 			-11:00	US	N%sT	1946
+ 			-11:00	-	NST	1967 Apr
+ 			-11:00	-	BST	1969
+-			-11:00	US	B%sT	1983 Oct 30 2:00
++			-11:00	US	B%sT	1983 Oct 30  2:00
+ 			-10:00	US	AH%sT	1983 Nov 30
+ 			-10:00	US	HA%sT
+ # The following switches don't quite make our 1970 cutoff.
+@@ -571,7 +575,7 @@
+ #  Minutes of the Unalaska City Council Meeting, January 10, 1967:
+ #  "Except for St. Paul and Akutan, Unalaska is the only important
+ #  location not on Alaska Standard Time.  The following resolution was
+-#  made by William Robinson and seconded by Henry Swanson:  Be it
++#  made by William Robinson and seconded by Henry Swanson: Be it
+ #  resolved that the City of Unalaska hereby goes to Alaska Standard
+ #  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
+ #  January 14, Alaska Standard Time.)  This resolution was passed with
+@@ -583,9 +587,7 @@
+ # "Hawaiian Time" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225
+ # of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,
+ # the article is available at
+-# 
+ # http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf
+-# 
+ # and indicates that standard time was adopted effective noon, January
+ # 13, 1896 (page 218), that in "1933, the Legislature decreed daylight
+ # saving for the period between the last Sunday of each April and the
+@@ -606,7 +608,7 @@
+ # year, the standard time of this Territory shall be advanced one
+ # hour...This Act shall take effect upon its approval. Approved this 26th
+ # day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of
+-# Hawaii." Page 172:  "Act 163...Act 90 of the Session Laws of 1933 is
++# Hawaii." Page 172: "Act 163...Act 90 of the Session Laws of 1933 is
+ # hereby repealed...This Act shall take effect upon its approval, upon
+ # which date the standard time of this Territory shall be restored to
+ # that existing immediately prior to the taking effect of said Act 90.
+@@ -616,14 +618,14 @@
+ # Note that 1933-05-21 was a Sunday.
+ # We're left to guess the time of day when Act 163 was approved; guess noon.
+ 
+-Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
+-			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
+-			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
+-			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
+-			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Cox+2
+-			-10:30	-	HST	1947 Jun  8 2:00 #Schmitt&Cox+2
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00
++			-10:30	-	HST	1933 Apr 30  2:00
++			-10:30	1:00	HDT	1933 May 21 12:00
++			-10:30	-	HST	1942 Feb  9  2:00
++			-10:30	1:00	HDT	1945 Sep 30  2:00
++			-10:30	-	HST	1947 Jun  8  2:00
+ 			-10:00	-	HST
+-
+ Link Pacific/Honolulu Pacific/Johnston
+ 
+ # Now we turn to US areas that have diverged from the consensus since 1970.
+@@ -633,9 +635,9 @@
+ # From Paul Eggert (2002-10-20):
+ #
+ # The information in the rest of this paragraph is derived from the
+-# 
+-# Daylight Saving Time web page (2002-01-23) maintained by the
+-# Arizona State Library, Archives and Public Records.
++# Daylight Saving Time web page
++#  (2002-01-23)
++# maintained by the Arizona State Library, Archives and Public Records.
+ # Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
+ # time, but by federal law railroads, airlines, bus lines, military
+ # personnel, and some engaged in interstate commerce continued to
+@@ -649,10 +651,11 @@
+ # Shanks says the 1944 experiment came to an end on 1944-03-17.
+ # Go with the Arizona State Library instead.
+ 
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
+-			-7:00	US	M%sT	1944 Jan  1 00:01
+-			-7:00	-	MST	1944 Apr  1 00:01
+-			-7:00	US	M%sT	1944 Oct  1 00:01
++			-7:00	US	M%sT	1944 Jan  1  0:01
++			-7:00	-	MST	1944 Apr  1  0:01
++			-7:00	US	M%sT	1944 Oct  1  0:01
+ 			-7:00	-	MST	1967
+ 			-7:00	US	M%sT	1968 Mar 21
+ 			-7:00	-	MST
+@@ -676,24 +679,22 @@
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
+-			-8:00	US	P%sT	1923 May 13 2:00
++			-8:00	US	P%sT	1923 May 13  2:00
+ 			-7:00	US	M%sT	1974
+-			-7:00	-	MST	1974 Feb  3 2:00
++			-7:00	-	MST	1974 Feb  3  2:00
+ 			-7:00	US	M%sT
+ 
+ # Indiana
+ #
+ # For a map of Indiana's time zone regions, see:
+-# 
+-# What time is it in Indiana?
+-#  (2006-03-01)
++# http://en.wikipedia.org/wiki/Time_in_Indiana
+ #
+ # From Paul Eggert (2007-08-17):
+ # Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
+ # with the following exceptions:
+ #
+ # - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+-#   Vandenburgh, and Warrick counties have been like America/Chicago.
++#   Vanderburgh, and Warrick counties have been like America/Chicago.
+ #
+ # - Dearborn and Ohio counties have been like America/New_York.
+ #
+@@ -712,22 +713,16 @@
+ # that they would be ambiguous if we left them at the 'America' level.
+ # So we reluctantly put them all in a subdirectory 'America/Indiana'.
+ 
+-# From Paul Eggert (2005-08-16):
+-# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
+-
+-# From Nathan Stratton Treadway (2006-03-30):
+-# http://www.dot.gov/affairs/dot0406.htm [3705 B]
+-# From Deborah Goldsmith (2006-01-18):
+-# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
+-# From Paul Eggert (2006-01-20):
+-# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
++# From Paul Eggert (2014-06-26):
++# https://www.federalregister.gov/articles/2006/01/20/06-563/standard-time-zone-boundary-in-the-state-of-indiana
++# says "DOT is relocating the time zone boundary in Indiana to move Starke,
+ # Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
+ # Eastern Time Zone to the Central Time Zone.... The effective date of
+-# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
++# this rule is 2 a.m. EST Sunday, April 2, 2006, which is the
+ # changeover date from standard time to Daylight Saving Time."
+-# Strictly speaking, this means the affected counties will change their
+-# clocks twice that night, but this obviously is in error.  The intent
+-# is that 01:59:59 EST be followed by 02:00:00 CDT.
++# Strictly speaking, this meant the affected counties changed their
++# clocks twice that night, but this obviously was in error.  The intent
++# was that 01:59:59 EST be followed by 02:00:00 CDT.
+ 
+ # From Gwillim Law (2007-02-10):
+ # The Associated Press has been reporting that Pulaski County, Indiana is
+@@ -739,13 +734,13 @@
+ Rule Indianapolis 1941	1954	-	Sep	lastSun	2:00	0	S
+ Rule Indianapolis 1946	1954	-	Apr	lastSun	2:00	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
++Zone America/Indiana/Indianapolis -5:44:38 - LMT	1883 Nov 18 12:15:22
+ 			-6:00	US	C%sT	1920
+ 			-6:00 Indianapolis C%sT	1942
+ 			-6:00	US	C%sT	1946
+-			-6:00 Indianapolis C%sT	1955 Apr 24 2:00
+-			-5:00	-	EST	1957 Sep 29 2:00
+-			-6:00	-	CST	1958 Apr 27 2:00
++			-6:00 Indianapolis C%sT	1955 Apr 24  2:00
++			-5:00	-	EST	1957 Sep 29  2:00
++			-6:00	-	CST	1958 Apr 27  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+ 			-5:00	-	EST	2006
+@@ -761,10 +756,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Marengo -5:45:23 -	LMT	1883 Nov 18 12:14:37
+ 			-6:00	US	C%sT	1951
+-			-6:00	Marengo	C%sT	1961 Apr 30 2:00
++			-6:00	Marengo	C%sT	1961 Apr 30  2:00
+ 			-5:00	-	EST	1969
+-			-5:00	US	E%sT	1974 Jan  6 2:00
+-			-6:00	1:00	CDT	1974 Oct 27 2:00
++			-5:00	US	E%sT	1974 Jan  6  2:00
++			-6:00	1:00	CDT	1974 Oct 27  2:00
+ 			-5:00	US	E%sT	1976
+ 			-5:00	-	EST	2006
+ 			-5:00	US	E%sT
+@@ -785,11 +780,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Vincennes -5:50:07 - LMT	1883 Nov 18 12:09:53
+ 			-6:00	US	C%sT	1946
+-			-6:00 Vincennes	C%sT	1964 Apr 26 2:00
++			-6:00 Vincennes	C%sT	1964 Apr 26  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+-			-5:00	-	EST	2006 Apr  2 2:00
+-			-6:00	US	C%sT	2007 Nov  4 2:00
++			-5:00	-	EST	2006 Apr  2  2:00
++			-6:00	US	C%sT	2007 Nov  4  2:00
+ 			-5:00	US	E%sT
+ #
+ # Perry County, Indiana, switched from eastern to central time in April 2006.
+@@ -806,10 +801,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Tell_City -5:47:03 - LMT	1883 Nov 18 12:12:57
+ 			-6:00	US	C%sT	1946
+-			-6:00 Perry	C%sT	1964 Apr 26 2:00
++			-6:00 Perry	C%sT	1964 Apr 26  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+-			-5:00	-	EST	2006 Apr  2 2:00
++			-5:00	-	EST	2006 Apr  2  2:00
+ 			-6:00	US	C%sT
+ #
+ # Pike County, Indiana moved from central to eastern time in 1977,
+@@ -822,11 +817,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Petersburg -5:49:07 - LMT	1883 Nov 18 12:10:53
+ 			-6:00	US	C%sT	1955
+-			-6:00	Pike	C%sT	1965 Apr 25 2:00
+-			-5:00	-	EST	1966 Oct 30 2:00
+-			-6:00	US	C%sT	1977 Oct 30 2:00
+-			-5:00	-	EST	2006 Apr  2 2:00
+-			-6:00	US	C%sT	2007 Nov  4 2:00
++			-6:00	Pike	C%sT	1965 Apr 25  2:00
++			-5:00	-	EST	1966 Oct 30  2:00
++			-6:00	US	C%sT	1977 Oct 30  2:00
++			-5:00	-	EST	2006 Apr  2  2:00
++			-6:00	US	C%sT	2007 Nov  4  2:00
+ 			-5:00	US	E%sT
+ #
+ # Starke County, Indiana moved from central to eastern time in 1991,
+@@ -844,10 +839,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Knox -5:46:30 -	LMT	1883 Nov 18 12:13:30
+ 			-6:00	US	C%sT	1947
+-			-6:00	Starke	C%sT	1962 Apr 29 2:00
+-			-5:00	-	EST	1963 Oct 27 2:00
+-			-6:00	US	C%sT	1991 Oct 27 2:00
+-			-5:00	-	EST	2006 Apr  2 2:00
++			-6:00	Starke	C%sT	1962 Apr 29  2:00
++			-5:00	-	EST	1963 Oct 27  2:00
++			-6:00	US	C%sT	1991 Oct 27  2:00
++			-5:00	-	EST	2006 Apr  2  2:00
+ 			-6:00	US	C%sT
+ #
+ # Pulaski County, Indiana, switched from eastern to central time in
+@@ -860,17 +855,17 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Winamac -5:46:25 - LMT	1883 Nov 18 12:13:35
+ 			-6:00	US	C%sT	1946
+-			-6:00	Pulaski	C%sT	1961 Apr 30 2:00
++			-6:00	Pulaski	C%sT	1961 Apr 30  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+-			-5:00	-	EST	2006 Apr  2 2:00
+-			-6:00	US	C%sT	2007 Mar 11 2:00
++			-5:00	-	EST	2006 Apr  2  2:00
++			-6:00	US	C%sT	2007 Mar 11  2:00
+ 			-5:00	US	E%sT
+ #
+ # Switzerland County, Indiana, did not observe DST from 1973 through 2005.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Vevay -5:40:16 -	LMT	1883 Nov 18 12:19:44
+-			-6:00	US	C%sT	1954 Apr 25 2:00
++			-6:00	US	C%sT	1954 Apr 25  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1973
+ 			-5:00	-	EST	2006
+@@ -891,18 +886,17 @@
+ 			-6:00	US	C%sT	1921
+ 			-6:00 Louisville C%sT	1942
+ 			-6:00	US	C%sT	1946
+-			-6:00 Louisville C%sT	1961 Jul 23 2:00
++			-6:00 Louisville C%sT	1961 Jul 23  2:00
+ 			-5:00	-	EST	1968
+-			-5:00	US	E%sT	1974 Jan  6 2:00
+-			-6:00	1:00	CDT	1974 Oct 27 2:00
++			-5:00	US	E%sT	1974 Jan  6  2:00
++			-6:00	1:00	CDT	1974 Oct 27  2:00
+ 			-5:00	US	E%sT
+ #
+ # Wayne County, Kentucky
+ #
+-# From
+-# 
+-# Lake Cumberland LIFE
+-#  (1999-01-29) via WKYM-101.7:
++# From Lake Cumberland LIFE
++# http://www.lake-cumberland.com/life/archive/news990129time.shtml
++# (1999-01-29) via WKYM-101.7:
+ # Clinton County has joined Wayne County in asking the DoT to change from
+ # the Central to the Eastern time zone....  The Wayne County government made
+ # the same request in December.  And while Russell County officials have not
+@@ -919,9 +913,8 @@
+ #
+ # From Paul Eggert (2001-07-16):
+ # The final rule was published in the
+-# 
+-# Federal Register 65, 160 (2000-08-17), page 50154-50158.
+-# 
++# Federal Register 65, 160 (2000-08-17), pp 50154-50158.
++# http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22
+ #
+ Zone America/Kentucky/Monticello -5:39:24 - LMT	1883 Nov 18 12:20:36
+ 			-6:00	US	C%sT	1946
+@@ -946,9 +939,8 @@
+ # See America/North_Dakota/Center for the Oliver County, ND change.
+ # West Wendover, NV officially switched from Pacific to mountain time on
+ # 1999-10-31.  See the
+-# 
+-# Federal Register 64, 203 (1999-10-21), page 56705-56707.
+-# 
++# Federal Register 64, 203 (1999-10-21), pp 56705-56707.
++# http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=1999_register&docid=fr21oc99-15
+ # However, the Federal Register says that West Wendover already operated
+ # on mountain time, and the rule merely made this official;
+ # hence a separate tz entry is not needed.
+@@ -986,12 +978,12 @@
+ Rule	Detroit	1967	only	-	Oct	lastSun	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Detroit	-5:32:11 -	LMT	1905
+-			-6:00	-	CST	1915 May 15 2:00
++			-6:00	-	CST	1915 May 15  2:00
+ 			-5:00	-	EST	1942
+ 			-5:00	US	E%sT	1946
+ 			-5:00	Detroit	E%sT	1973
+ 			-5:00	US	E%sT	1975
+-			-5:00	-	EST	1975 Apr 27 2:00
++			-5:00	-	EST	1975 Apr 27  2:00
+ 			-5:00	US	E%sT
+ #
+ # Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+@@ -1004,8 +996,8 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
+ 			-6:00	US	C%sT	1946
+-			-6:00 Menominee	C%sT	1969 Apr 27 2:00
+-			-5:00	-	EST	1973 Apr 29 2:00
++			-6:00 Menominee	C%sT	1969 Apr 27  2:00
++			-5:00	-	EST	1973 Apr 29  2:00
+ 			-6:00	US	C%sT
+ 
+ # Navassa
+@@ -1022,19 +1014,19 @@
+ ################################################################################
+ 
+ 
+-# From Paul Eggert (2006-03-22):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Other sources occasionally used include:
+ #
+@@ -1042,9 +1034,9 @@
+ #	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+ #	which I found in the UCLA library.
+ #
+-#	
+ #	William Willett, The Waste of Daylight, 19th edition
+-#	 (1914-03)
++#	
++#	[PDF] (1914-03)
+ #
+ #	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+ #	.
+@@ -1053,11 +1045,11 @@
+ 
+ # Canada
+ 
+-# From Alain LaBont (1994-11-14):
++# From Alain LaBonté (1994-11-14):
+ # I post here the time zone abbreviations standardized in Canada
+ # for both English and French in the CAN/CSA-Z234.4-89 standard....
+ #
+-#	UTC	Standard time	Daylight savings time
++#	UTC	Standard time	Daylight saving time
+ #	offset	French	English	French	English
+ #	-2:30	-	-	HAT	NDT
+ #	-3	-	-	HAA	ADT
+@@ -1070,7 +1062,7 @@
+ #	-9	HNY	YST	-	-
+ #
+ #	HN: Heure Normale	ST: Standard Time
+-#	HA: Heure Avance	DT: Daylight saving Time
++#	HA: Heure Avancée	DT: Daylight saving Time
+ #
+ #	A: de l'Atlantique	Atlantic
+ #	C: du Centre		Central
+@@ -1085,7 +1077,7 @@
+ # From Paul Eggert (1994-11-22):
+ # Alas, this sort of thing must be handled by localization software.
+ 
+-# Unless otherwise specified, the data for Canada are all from Shanks
++# Unless otherwise specified, the data entries for Canada are all from Shanks
+ # & Pottenger.
+ 
+ # From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
+@@ -1132,17 +1124,16 @@
+ # An amendment to the Interpretation Act was registered on February 19/2007....
+ # http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
+ 
+-# From Paul Eggert (2006-04-25):
++# From Paul Eggert (2014-10-18):
+ # H. David Matthews and Mary Vincent's map
+-# 
+ # "It's about TIME", _Canadian Geographic_ (September-October 1998)
+-#  contains detailed boundaries for regions observing nonstandard
++# http://www.canadiangeographic.ca/Magazine/SO98/alacarte.asp
++# contains detailed boundaries for regions observing nonstandard
+ # time and daylight saving time arrangements in Canada circa 1998.
+ #
+-# INMS, the Institute for National Measurement Standards in Ottawa, has 
+-# information about standard and daylight saving time zones in Canada.
+-#  (updated periodically).
++# National Research Council Canada maintains info about time zones and DST.
++# http://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html
++# http://www.nrc-cnrc.gc.ca/eng/services/time/faq/index.html#Q5
+ # Its unofficial information is often taken from Matthews and Vincent.
+ 
+ # From Paul Eggert (2006-06-27):
+@@ -1151,9 +1142,7 @@
+ 
+ # From Chris Walton (2011-12-01)
+ # In the first of Tammy Hardwick's articles
+-# 
+ # http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+-# 
+ # she quotes the Friday November 1/1918 edition of the Creston Review.
+ # The quote includes these two statements:
+ # 'Sunday the CPR went back to the old system of time...'
+@@ -1221,9 +1210,7 @@
+ # Time to Standard Time and from Standard Time to Daylight Savings Time
+ # now occurs at 2:00AM.
+ # ...
+-# 
+ # http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm
+-# 
+ # ...
+ # MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery
+ # Office of the Chief Information Officer
+@@ -1259,7 +1246,7 @@
+ 			-3:30	-	NST	1936
+ 			-3:30	StJohns	N%sT	1942 May 11
+ 			-3:30	Canada	N%sT	1946
+-			-3:30	StJohns	N%sT	1966 Mar 15 2:00
++			-3:30	StJohns	N%sT	1966 Mar 15  2:00
+ 			-4:00	StJohns	A%sT	2011 Nov
+ 			-4:00	Canada	A%sT
+ 
+@@ -1320,7 +1307,7 @@
+ Zone America/Halifax	-4:14:24 -	LMT	1902 Jun 15
+ 			-4:00	Halifax	A%sT	1918
+ 			-4:00	Canada	A%sT	1919
+-			-4:00	Halifax	A%sT	1942 Feb  9 2:00s
++			-4:00	Halifax	A%sT	1942 Feb  9  2:00s
+ 			-4:00	Canada	A%sT	1946
+ 			-4:00	Halifax	A%sT	1974
+ 			-4:00	Canada	A%sT
+@@ -1379,7 +1366,7 @@
+ # meridian is supposed to observe AST, but residents as far east as
+ # Natashquan use EST/EDT, and residents east of Natashquan use AST.
+ # The Quebec department of justice writes in
+-# "The situation in Minganie and Basse-Cote-Nord"
++# "The situation in Minganie and Basse-Côte-Nord"
+ # http://www.justice.gouv.qc.ca/english/publications/generale/temps-minganie-a.htm
+ # that the coastal strip from just east of Natashquan to Blanc-Sablon
+ # observes Atlantic standard time all year round.
+@@ -1387,7 +1374,6 @@
+ # says this common practice was codified into law as of 2007.
+ # For lack of better info, guess this practice began around 1970, contra to
+ # Shanks & Pottenger who have this region observing AST/ADT.
+-# for post-1970 data America/Puerto_Rico.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
+@@ -1401,18 +1387,10 @@
+ Rule	Mont	1924	only	-	May	17	2:00	1:00	D
+ Rule	Mont	1924	1926	-	Sep	lastSun	2:30	0	S
+ Rule	Mont	1925	1926	-	May	Sun>=1	2:00	1:00	D
+-# The 1927-to-1937 rules can be expressed more simply as
+-# Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
+-# Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
+-# The rules below avoid use of 24:00
+-# (which pre-1998 versions of zic cannot handle).
+-Rule	Mont	1927	only	-	May	1	0:00	1:00	D
+-Rule	Mont	1927	1932	-	Sep	lastSun	0:00	0	S
+-Rule	Mont	1928	1931	-	Apr	lastSun	0:00	1:00	D
+-Rule	Mont	1932	only	-	May	1	0:00	1:00	D
+-Rule	Mont	1933	1940	-	Apr	lastSun	0:00	1:00	D
+-Rule	Mont	1933	only	-	Oct	1	0:00	0	S
+-Rule	Mont	1934	1939	-	Sep	lastSun	0:00	0	S
++Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
++Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
++Rule	Mont	1938	1940	-	Apr	lastSun	0:00	1:00	D
++Rule	Mont	1938	1939	-	Sep	lastSun	0:00	0	S
+ Rule	Mont	1946	1973	-	Apr	lastSun	2:00	1:00	D
+ Rule	Mont	1945	1948	-	Sep	lastSun	2:00	0	S
+ Rule	Mont	1949	1950	-	Oct	lastSun	2:00	0	S
+@@ -1426,7 +1404,7 @@
+ Zone America/Montreal	-4:54:16 -	LMT	1884
+ 			-5:00	Mont	E%sT	1918
+ 			-5:00	Canada	E%sT	1919
+-			-5:00	Mont	E%sT	1942 Feb  9 2:00s
++			-5:00	Mont	E%sT	1942 Feb  9  2:00s
+ 			-5:00	Canada	E%sT	1946
+ 			-5:00	Mont	E%sT	1974
+ 			-5:00	Canada	E%sT
+@@ -1448,7 +1426,7 @@
+ # have already done so.  In Orillia DST was to run until Saturday,
+ # 1912-08-31 (no time mentioned), but it was met with considerable
+ # hostility from certain segments of the public, and was revoked after
+-# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
++# only two weeks - I copied it as Saturday, 1912-07-07, 22:00, but
+ # presumably that should be -07-06.  (1912-06-19, -07-12; also letters
+ # earlier in June).
+ #
+@@ -1458,10 +1436,8 @@
+ # Mark Brader writes that an article in the 1997-10-14 Toronto Star
+ # says that Atikokan, Ontario currently does not observe DST,
+ # but will vote on 11-10 whether to use EST/EDT.
+-# He also writes that the
+-# 
+-# Ontario Time Act (1990, Chapter T.9)
+-# 
++# He also writes that the Ontario Time Act (1990, Chapter T.9)
++# http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html
+ # says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
+ # Officially Atikokan is therefore on CST/CDT, and most likely this report
+ # concerns a non-official time observed as a matter of local practice.
+@@ -1540,9 +1516,7 @@
+ # The Journal of The Royal Astronomical Society of Canada,
+ # volume 26, number 2 (February 1932) and, as of 2010-07-17,
+ # was available at
+-# 
+ # http://adsabs.harvard.edu/full/1932JRASC..26...49S
+-# 
+ #
+ # It includes the text below (starting on page 57):
+ #
+@@ -1553,26 +1527,26 @@
+ # ing in 1930. The information for the province of Quebec is definite,
+ # for the other provinces only approximate:
+ #
+-# 	Province	Daylight saving time used
++#	Province	Daylight saving time used
+ # Prince Edward Island	Not used.
+ # Nova Scotia		In Halifax only.
+ # New Brunswick		In St. John only.
+ # Quebec		In the following places:
+-# 			Montreal	Lachine
+-# 			Quebec		Mont-Royal
+-# 			Levis		Iberville
+-# 			St. Lambert	Cap de la Madeleine
+-# 			Verdun		Loretteville
+-# 			Westmount	Richmond
+-# 			Outremont	St. Jerome
+-# 			Longueuil	Greenfield Park
+-# 			Arvida		Waterloo
+-# 			Chambly-Canton	Beaulieu
+-# 			Melbourne	La Tuque
+-# 			St. Theophile	Buckingham
++#			Montreal	Lachine
++#			Quebec		Mont-Royal
++#			Lévis		Iberville
++#			St. Lambert	Cap de la Madelèine
++#			Verdun		Loretteville
++#			Westmount	Richmond
++#			Outremont	St. Jérôme
++#			Longueuil	Greenfield Park
++#			Arvida		Waterloo
++#			Chambly-Canton	Beaulieu
++#			Melbourne	La Tuque
++#			St. Théophile	Buckingham
+ # Ontario		Used generally in the cities and towns along
+-# 			the southerly part of the province. Not
+-# 			used in the northwesterlhy part.
++#			the southerly part of the province. Not
++#			used in the northwesterly part.
+ # Manitoba		Not used.
+ # Saskatchewan		In Regina only.
+ # Alberta		Not used.
+@@ -1641,7 +1615,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Toronto	-5:17:32 -	LMT	1895
+ 			-5:00	Canada	E%sT	1919
+-			-5:00	Toronto	E%sT	1942 Feb  9 2:00s
++			-5:00	Toronto	E%sT	1942 Feb  9  2:00s
+ 			-5:00	Canada	E%sT	1946
+ 			-5:00	Toronto	E%sT	1974
+ 			-5:00	Canada	E%sT
+@@ -1654,16 +1628,16 @@
+ 			-5:00	Canada	E%sT
+ Zone America/Nipigon	-5:53:04 -	LMT	1895
+ 			-5:00	Canada	E%sT	1940 Sep 29
+-			-5:00	1:00	EDT	1942 Feb  9 2:00s
++			-5:00	1:00	EDT	1942 Feb  9  2:00s
+ 			-5:00	Canada	E%sT
+ Zone America/Rainy_River -6:18:16 -	LMT	1895
+ 			-6:00	Canada	C%sT	1940 Sep 29
+-			-6:00	1:00	CDT	1942 Feb  9 2:00s
++			-6:00	1:00	CDT	1942 Feb  9  2:00s
+ 			-6:00	Canada	C%sT
+ Zone America/Atikokan	-6:06:28 -	LMT	1895
+ 			-6:00	Canada	C%sT	1940 Sep 29
+-			-6:00	1:00	CDT	1942 Feb  9 2:00s
+-			-6:00	Canada	C%sT	1945 Sep 30 2:00
++			-6:00	1:00	CDT	1942 Feb  9  2:00s
++			-6:00	Canada	C%sT	1945 Sep 30  2:00
+ 			-5:00	-	EST
+ 
+ 
+@@ -1676,7 +1650,7 @@
+ # the first Sunday of April of each year and two o'clock Central
+ # Standard Time in the morning of the last Sunday of October next
+ # following, one hour in advance of Central Standard Time."...
+-# I believe that the English legislation [of the old time act] had =
++# I believe that the English legislation [of the old time act] had
+ # been assented to (March 22, 1967)....
+ # Also, as far as I can tell, there was no order-in-council varying
+ # the time of Daylight Saving Time for 2005 and so the provisions of
+@@ -1799,12 +1773,12 @@
+ Rule	Swift	1960	1961	-	Sep	lastSun	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Regina	-6:58:36 -	LMT	1905 Sep
+-			-7:00	Regina	M%sT	1960 Apr lastSun 2:00
++			-7:00	Regina	M%sT	1960 Apr lastSun  2:00
+ 			-6:00	-	CST
+ Zone America/Swift_Current -7:11:20 -	LMT	1905 Sep
+-			-7:00	Canada	M%sT	1946 Apr lastSun 2:00
++			-7:00	Canada	M%sT	1946 Apr lastSun  2:00
+ 			-7:00	Regina	M%sT	1950
+-			-7:00	Swift	M%sT	1972 Apr lastSun 2:00
++			-7:00	Swift	M%sT	1972 Apr lastSun  2:00
+ 			-6:00	-	CST
+ 
+ 
+@@ -1854,9 +1828,7 @@
+ # Earlier this year I stumbled across a detailed article about the time
+ # keeping history of Creston; it was written by Tammy Hardwick who is the
+ # manager of the Creston & District Museum. The article was written in May 2009.
+-# 
+ # http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+-# 
+ # According to the article, Creston has not changed its clocks since June 1918.
+ # i.e. Creston has been stuck on UTC-7 for 93 years.
+ # Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
+@@ -1864,18 +1836,16 @@
+ # Unfortunately the exact date for the time change in June 1918 remains
+ # unknown and will be difficult to ascertain.  I e-mailed Tammy a few months
+ # ago to ask if Sunday June 2 was a reasonable guess.  She said it was just
+-# as plausible as any other date (in June).  She also said that after writing the
+-# article she had discovered another time change in 1916; this is the subject
+-# of another article which she wrote in October 2010.
+-# 
++# as plausible as any other date (in June).  She also said that after writing
++# the article she had discovered another time change in 1916; this is the
++# subject of another article which she wrote in October 2010.
+ # http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
+-# 
+ 
+ # Here is a summary of the three clock change events in Creston's history:
+ # 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
+ # Exact date unknown
+ # 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
+-# Exact date in October unknown;  Sunday October 1 is a reasonable guess.
++# Exact date in October unknown; Sunday October 1 is a reasonable guess.
+ # 3. June 1918: switch to Pacific Daylight Time (GMT-7)
+ # Exact date in June unknown; Sunday June 2 is a reasonable guess.
+ # note#1:
+@@ -1888,9 +1858,7 @@
+ # There is no guarantee that Creston will remain on Mountain Standard Time
+ # (UTC-7) forever.
+ # The subject was debated at least once this year by the town Council.
+-# 
+ # http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
+-# 
+ 
+ # During a period WWII, summer time (Daylight saying) was mandatory in Canada.
+ # In Creston, that was handled by shifting the area to PST (-8:00) then applying
+@@ -1917,7 +1885,7 @@
+ 			-8:00	Canada	P%sT
+ Zone America/Dawson_Creek -8:00:56 -	LMT	1884
+ 			-8:00	Canada	P%sT	1947
+-			-8:00	Vanc	P%sT	1972 Aug 30 2:00
++			-8:00	Vanc	P%sT	1972 Aug 30  2:00
+ 			-7:00	-	MST
+ Zone America/Creston	-7:46:04 -	LMT	1884
+ 			-7:00	-	MST	1916 Oct 1
+@@ -1944,18 +1912,17 @@
+ 
+ # From Rives McDow (1999-09-04):
+ # Nunavut ... moved ... to incorporate the whole territory into one time zone.
+-# 
+ # Nunavut moves to single time zone Oct. 31
+-# 
++# http://www.nunatsiaq.com/nunavut/nvt90903_13.html
+ #
+ # From Antoine Leca (1999-09-06):
+ # We then need to create a new timezone for the Kitikmeot region of Nunavut
+ # to differentiate it from the Yellowknife region.
+ 
+ # From Paul Eggert (1999-09-20):
+-# 
+ # Basic Facts: The New Territory
+-#  (1999) reports that Pangnirtung operates on eastern time,
++# http://www.nunavut.com/basicfacts/english/basicfacts_1territory.html
++# (1999) reports that Pangnirtung operates on eastern time,
+ # and that Coral Harbour does not observe DST.  We don't know when
+ # Pangnirtung switched to eastern time; we'll guess 1995.
+ 
+@@ -1983,8 +1950,8 @@
+ # the current state of affairs.
+ 
+ # From Michaela Rodrigue, writing in the
+-# 
+-# Nunatsiaq News (1999-11-19):
++# Nunatsiaq News (1999-11-19):
++# http://www.nunatsiaq.com/archives/nunavut991130/nvt91119_17.html
+ # Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
+ # central - or Nunavut time - for government offices, and eastern time
+ # for municipal offices and schools....  Igloolik [was similar but then]
+@@ -2002,10 +1969,8 @@
+ # Central Time and Southampton Island [in the Central zone] is not
+ # required to use daylight savings.
+ 
+-# From
+-# 
+-# Nunavut now has two time zones
+-#  (2000-11-10):
++# From 
++# Nunavut now has two time zones (2000-11-10):
+ # The Nunavut government would allow its employees in Kugluktuk and
+ # Cambridge Bay to operate on central time year-round, putting them
+ # one hour behind the rest of Nunavut for six months during the winter.
+@@ -2033,10 +1998,7 @@
+ # [Also see  (2001-03-09).]
+ 
+ # From Gwillim Law (2005-05-21):
+-# According to maps at
+-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
+-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
+-# (both dated 2003), and
++# According to ...
+ # http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
+ # (from a 1998 Canadian Geographic article), the de facto and de jure time
+ # for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
+@@ -2045,9 +2007,11 @@
+ # predates the creation of Nunavut, it probably goes back many years....
+ # The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
+ #
+-# From Paul Eggert (2005-07-26):
++# From Paul Eggert (2014-10-17):
+ # For lack of better information, assume that Southampton Island observed
+-# daylight saving only during wartime.
++# daylight saving only during wartime.  Gwillim Law's email also
++# mentioned maps now maintained by National Research Council Canada;
++# see above for an up-to-date link.
+ 
+ # From Chris Walton (2007-03-01):
+ # ... the community of Resolute (located on Cornwallis Island in
+@@ -2096,9 +2060,7 @@
+ # used to be the mayor of Resolute Bay and he apparently owns half the
+ # businesses including "South Camp Inn." This website has some info on
+ # Aziz:
+-# 
+ # http://www.uphere.ca/node/493
+-# 
+ #
+ # I sent Aziz an e-mail asking when Resolute Bay had stopped using
+ # Eastern Standard Time.
+@@ -2136,47 +2098,47 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # aka Panniqtuuq
+ Zone America/Pangnirtung 0	-	zzz	1921 # trading post est.
+-			-4:00	NT_YK	A%sT	1995 Apr Sun>=1 2:00
+-			-5:00	Canada	E%sT	1999 Oct 31 2:00
+-			-6:00	Canada	C%sT	2000 Oct 29 2:00
++			-4:00	NT_YK	A%sT	1995 Apr Sun>=1  2:00
++			-5:00	Canada	E%sT	1999 Oct 31  2:00
++			-6:00	Canada	C%sT	2000 Oct 29  2:00
+ 			-5:00	Canada	E%sT
+ # formerly Frobisher Bay
+ Zone America/Iqaluit	0	-	zzz	1942 Aug # Frobisher Bay est.
+-			-5:00	NT_YK	E%sT	1999 Oct 31 2:00
+-			-6:00	Canada	C%sT	2000 Oct 29 2:00
++			-5:00	NT_YK	E%sT	1999 Oct 31  2:00
++			-6:00	Canada	C%sT	2000 Oct 29  2:00
+ 			-5:00	Canada	E%sT
+ # aka Qausuittuq
+ Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
+-			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+-			-5:00	-	EST	2001 Apr  1 3:00
+-			-6:00	Canada	C%sT	2006 Oct 29 2:00
+-			-5:00	-	EST	2007 Mar 11 3:00
++			-6:00	NT_YK	C%sT	2000 Oct 29  2:00
++			-5:00	-	EST	2001 Apr  1  3:00
++			-6:00	Canada	C%sT	2006 Oct 29  2:00
++			-5:00	-	EST	2007 Mar 11  3:00
+ 			-6:00	Canada	C%sT
+ # aka Kangiqiniq
+ Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
+-			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+-			-5:00	-	EST	2001 Apr  1 3:00
++			-6:00	NT_YK	C%sT	2000 Oct 29  2:00
++			-5:00	-	EST	2001 Apr  1  3:00
+ 			-6:00	Canada	C%sT
+ # aka Iqaluktuuttiaq
+ Zone America/Cambridge_Bay 0	-	zzz	1920 # trading post est.?
+-			-7:00	NT_YK	M%sT	1999 Oct 31 2:00
+-			-6:00	Canada	C%sT	2000 Oct 29 2:00
+-			-5:00	-	EST	2000 Nov  5 0:00
+-			-6:00	-	CST	2001 Apr  1 3:00
++			-7:00	NT_YK	M%sT	1999 Oct 31  2:00
++			-6:00	Canada	C%sT	2000 Oct 29  2:00
++			-5:00	-	EST	2000 Nov  5  0:00
++			-6:00	-	CST	2001 Apr  1  3:00
+ 			-7:00	Canada	M%sT
+ Zone America/Yellowknife 0	-	zzz	1935 # Yellowknife founded?
+ 			-7:00	NT_YK	M%sT	1980
+ 			-7:00	Canada	M%sT
+ Zone America/Inuvik	0	-	zzz	1953 # Inuvik founded
+-			-8:00	NT_YK	P%sT	1979 Apr lastSun 2:00
++			-8:00	NT_YK	P%sT	1979 Apr lastSun  2:00
+ 			-7:00	NT_YK	M%sT	1980
+ 			-7:00	Canada	M%sT
+ Zone America/Whitehorse	-9:00:12 -	LMT	1900 Aug 20
+-			-9:00	NT_YK	Y%sT	1966 Jul 1 2:00
++			-9:00	NT_YK	Y%sT	1966 Jul  1  2:00
+ 			-8:00	NT_YK	P%sT	1980
+ 			-8:00	Canada	P%sT
+ Zone America/Dawson	-9:17:40 -	LMT	1900 Aug 20
+-			-9:00	NT_YK	Y%sT	1973 Oct 28 0:00
++			-9:00	NT_YK	Y%sT	1973 Oct 28  0:00
+ 			-8:00	NT_YK	P%sT	1980
+ 			-8:00	Canada	P%sT
+ 
+@@ -2188,9 +2150,8 @@
+ # From Paul Eggert (2001-03-05):
+ # The Investigation and Analysis Service of the
+ # Mexican Library of Congress (MLoC) has published a
+-# 
+ # history of Mexican local time (in Spanish)
+-# .
++# http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/
+ #
+ # Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
+ # (In all cases we go with the MLoC.)
+@@ -2235,9 +2196,8 @@
+ # -------------- End Forwarded Message --------------
+ # From Paul Eggert (1996-06-12):
+ # For an English translation of the decree, see
+-# 
+ # "Diario Oficial: Time Zone Changeover" (1996-01-04).
+-# 
++# http://mexico-travel.com/extra/timezone_eng.html
+ 
+ # From Rives McDow (1998-10-08):
+ # The State of Quintana Roo has reverted back to central STD and DST times
+@@ -2249,7 +2209,7 @@
+ # savings time so as to stay on the same time zone as the southern part of
+ # Arizona year round.
+ 
+-# From Jesper Norgaard, translating
++# From Jesper Nørgaard, translating
+ #  (2001-01-17):
+ # In Oaxaca, the 55.000 teachers from the Section 22 of the National
+ # Syndicate of Education Workers, refuse to apply daylight saving each
+@@ -2262,7 +2222,7 @@
+ # January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
+ # that Summer Time will be reduced from seven to five months, starting
+ # this year....
+-# 
++# http://www.publico.com.mx/scripts/texto3.asp?action=pagina&pag=21&pos=p&secc=naci&date=01/17/2001
+ # [translated], says "summer time will ... take effect on the first Sunday
+ # in May, and end on the last Sunday of September.
+ 
+@@ -2270,23 +2230,22 @@
+ # The 2001-01-24 traditional Washington Post contained the page one
+ # story "Timely Issue Divides Mexicans."...
+ # http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
+-# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
++# ... Mexico City Mayor López Obrador "...is threatening to keep
+ # Mexico City and its 20 million residents on a different time than
+-# the rest of the country..." In particular, Lopez Obrador would abolish
++# the rest of the country..." In particular, López Obrador would abolish
+ # observation of Daylight Saving Time.
+ 
+-# 
+ # Official statute published by the Energy Department
+-#  (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
+-# and Sonora with no DST.  This was reported by Jesper Norgaard (2001-02-03).
++# http://www.conae.gob.mx/ahorro/decretohorver2001.html#decre
++# (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
++# and Sonora with no DST.  This was reported by Jesper Nørgaard (2001-02-03).
+ 
+ # From Paul Eggert (2001-03-03):
+ #
+-# 
++# http://www.latimes.com/news/nation/20010303/t000018766.html
+ # James F. Smith writes in today's LA Times
+-# 
+ # * Sonora will continue to observe standard time.
+-# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
++# * Last week Mexico City's mayor Andrés Manuel López Obrador decreed that
+ #   the Federal District will not adopt DST.
+ # * 4 of 16 district leaders announced they'll ignore the decree.
+ # * The decree does not affect federal-controlled facilities including
+@@ -2294,7 +2253,7 @@
+ #
+ # For now we'll assume that the Federal District will bow to federal rules.
+ 
+-# From Jesper Norgaard (2001-04-01):
++# From Jesper Nørgaard (2001-04-01):
+ # I found some references to the Mexican application of daylight
+ # saving, which modifies what I had already sent you, stating earlier
+ # that a number of northern Mexican states would go on daylight
+@@ -2303,7 +2262,7 @@
+ # saving all year) will follow the original decree of president
+ # Vicente Fox, starting daylight saving May 6, 2001 and ending
+ # September 30, 2001.
+-# References: "Diario de Monterrey" 
++# References: "Diario de Monterrey" 
+ # Palabra  (2001-03-31)
+ 
+ # From Reuters (2001-09-04):
+@@ -2315,7 +2274,7 @@
+ # standard time. "This is so residents of the Federal District are not
+ # subject to unexpected time changes," a statement from the court said.
+ 
+-# From Jesper Norgaard Welen (2002-03-12):
++# From Jesper Nørgaard Welen (2002-03-12):
+ # ... consulting my local grocery store(!) and my coworkers, they all insisted
+ # that a new decision had been made to reinstate US style DST in Mexico....
+ # http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
+@@ -2329,48 +2288,36 @@
+ # > the United States.
+ # Now this has passed both the Congress and the Senate, so starting from
+ # 2010, some border regions will be the same:
+-# 
+ # http://www.signonsandiego.com/news/2009/dec/28/clocks-will-match-both-sides-border/
+-# 
+-# 
+ # http://www.elmananarey.com/diario/noticia/nacional/noticias/empatan_horario_de_frontera_con_eu/621939
+-# 
+ # (Spanish)
+ #
+ # Could not find the new law text, but the proposed law text changes are here:
+-# 
+ # http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/20091210-V.pdf
+-# 
+ # (Gaceta Parlamentaria)
+ #
+ # There is also a list of the votes here:
+-# 
+ # http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/V2-101209.html
+-# 
+ #
+ # Our page:
+-# 
+ # http://www.timeanddate.com/news/time/north-mexico-dst-change.html
+-# 
+ 
+ # From Arthur David Olson (2010-01-20):
+ # The page
+-# 
+ # http://dof.gob.mx/nota_detalle.php?codigo=5127480&fecha=06/01/2010
+-# 
+ # includes this text:
+ # En los municipios fronterizos de Tijuana y Mexicali en Baja California;
+-# Juárez y Ojinaga en Chihuahua; Acuña y Piedras Negras en Coahuila;
+-# Anáhuac en Nuevo León; y Nuevo Laredo, Reynosa y Matamoros en
+-# Tamaulipas, la aplicación de este horario estacional surtirá efecto
+-# desde las dos horas del segundo domingo de marzo y concluirá a las dos
++# Juárez y Ojinaga en Chihuahua; Acuña y Piedras Negras en Coahuila;
++# Anáhuac en Nuevo León; y Nuevo Laredo, Reynosa y Matamoros en
++# Tamaulipas, la aplicación de este horario estacional surtirá efecto
++# desde las dos horas del segundo domingo de marzo y concluirá a las dos
+ # horas del primer domingo de noviembre.
+ # En los municipios fronterizos que se encuentren ubicados en la franja
+-# fronteriza norte en el territorio comprendido entre la línea
+-# internacional y la línea paralela ubicada a una distancia de veinte
+-# kilómetros, así como la Ciudad de Ensenada, Baja California, hacia el
+-# interior del país, la aplicación de este horario estacional surtirá
+-# efecto desde las dos horas del segundo domingo de marzo y concluirá a
++# fronteriza norte en el territorio comprendido entre la línea
++# internacional y la línea paralela ubicada a una distancia de veinte
++# kilómetros, así como la Ciudad de Ensenada, Baja California, hacia el
++# interior del país, la aplicación de este horario estacional surtirá
++# efecto desde las dos horas del segundo domingo de marzo y concluirá a
+ # las dos horas del primer domingo de noviembre.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -2389,39 +2336,39 @@
+ Rule	Mexico	2002	max	-	Apr	Sun>=1	2:00	1:00	D
+ Rule	Mexico	2002	max	-	Oct	lastSun	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# Quintana Roo
++# Quintana Roo; represented by Cancún
+ Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
+ 			-6:00	-	CST	1981 Dec 23
+ 			-5:00	Mexico	E%sT	1998 Aug  2  2:00
+ 			-6:00	Mexico	C%sT
+-# Campeche, Yucatan
++# Campeche, Yucatán; represented by Mérida
+ Zone America/Merida	-5:58:28 -	LMT	1922 Jan  1  0:01:32
+ 			-6:00	-	CST	1981 Dec 23
+ 			-5:00	-	EST	1982 Dec  2
+ 			-6:00	Mexico	C%sT
+-# Coahuila, Durango, Nuevo Leon, Tamaulipas (near US border)
++# Coahuila, Durango, Nuevo León, Tamaulipas (near US border)
+ Zone America/Matamoros	-6:40:00 -	LMT	1921 Dec 31 23:20:00
+ 			-6:00	-	CST	1988
+ 			-6:00	US	C%sT	1989
+ 			-6:00	Mexico	C%sT	2010
+ 			-6:00	US	C%sT
+-# Coahuila, Durango, Nuevo Leon, Tamaulipas (away from US border)
++# Coahuila, Durango, Nuevo León, Tamaulipas (away from US border)
+ Zone America/Monterrey	-6:41:16 -	LMT	1921 Dec 31 23:18:44
+ 			-6:00	-	CST	1988
+ 			-6:00	US	C%sT	1989
+ 			-6:00	Mexico	C%sT
+ # Central Mexico
+-Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1 0:23:24
++Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1  0:23:24
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+ 			-7:00	-	MST	1931 May  1 23:00
+ 			-6:00	-	CST	1931 Oct
+ 			-7:00	-	MST	1932 Apr  1
+-			-6:00	Mexico	C%sT	2001 Sep 30 02:00
++			-6:00	Mexico	C%sT	2001 Sep 30  2:00
+ 			-6:00	-	CST	2002 Feb 20
+ 			-6:00	Mexico	C%sT
+ # Chihuahua (near US border)
+-Zone America/Ojinaga	-6:57:40 -	LMT	1922 Jan 1 0:02:20
++Zone America/Ojinaga	-6:57:40 -	LMT	1922 Jan  1  0:02:20
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+ 			-7:00	-	MST	1931 May  1 23:00
+@@ -2429,7 +2376,7 @@
+ 			-7:00	-	MST	1932 Apr  1
+ 			-6:00	-	CST	1996
+ 			-6:00	Mexico	C%sT	1998
+-			-6:00	-	CST	1998 Apr Sun>=1 3:00
++			-6:00	-	CST	1998 Apr Sun>=1  3:00
+ 			-7:00	Mexico	M%sT	2010
+ 			-7:00	US	M%sT
+ # Chihuahua (away from US border)
+@@ -2441,7 +2388,7 @@
+ 			-7:00	-	MST	1932 Apr  1
+ 			-6:00	-	CST	1996
+ 			-6:00	Mexico	C%sT	1998
+-			-6:00	-	CST	1998 Apr Sun>=1 3:00
++			-6:00	-	CST	1998 Apr Sun>=1  3:00
+ 			-7:00	Mexico	M%sT
+ # Sonora
+ Zone America/Hermosillo	-7:23:52 -	LMT	1921 Dec 31 23:36:08
+@@ -2457,42 +2404,33 @@
+ 			-7:00	-	MST
+ 
+ # From Alexander Krivenyshev (2010-04-21):
+-# According to news, Bahía de Banderas (Mexican state of Nayarit)
++# According to news, Bahía de Banderas (Mexican state of Nayarit)
+ # changed time zone UTC-7 to new time zone UTC-6 on April 4, 2010 (to
+ # share the same time zone as nearby city Puerto Vallarta, Jalisco).
+ #
+ # (Spanish)
+-# Bahía de Banderas homologa su horario al del centro del
+-# país, a partir de este domingo
+-# 
++# Bahía de Banderas homologa su horario al del centro del
++# país, a partir de este domingo
+ # http://www.nayarit.gob.mx/notes.asp?id=20748
+-# 
+ #
+-# Bahía de Banderas homologa su horario con el del Centro del
+-# País
+-# 
+-# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50"
+-# 
++# Bahía de Banderas homologa su horario con el del Centro del
++# País
++# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50
+ #
+ # (English)
+-# Puerto Vallarta and Bahía de Banderas: One Time Zone
+-# 
++# Puerto Vallarta and Bahía de Banderas: One Time Zone
+ # http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml
+-# 
+-#
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_mexico08.html
+-# 
+ #
+ # "Mexico's Senate approved the amendments to the Mexican Schedule System that
+-# will allow Bahía de Banderas and Puerto Vallarta to share the same time
++# will allow Bahía de Banderas and Puerto Vallarta to share the same time
+ # zone ..."
+ # Baja California Sur, Nayarit, Sinaloa
+ 
+ # From Arthur David Olson (2010-05-01):
+ # Use "Bahia_Banderas" to keep the name to fourteen characters.
+ 
++# Mazatlán
+ Zone America/Mazatlan	-7:05:40 -	LMT	1921 Dec 31 23:54:20
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+@@ -2504,6 +2442,7 @@
+ 			-8:00	-	PST	1970
+ 			-7:00	Mexico	M%sT
+ 
++# Bahía de Banderas
+ Zone America/Bahia_Banderas	-7:01:00 -	LMT	1921 Dec 31 23:59:00
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+@@ -2513,7 +2452,7 @@
+ 			-6:00	-	CST	1942 Apr 24
+ 			-7:00	-	MST	1949 Jan 14
+ 			-8:00	-	PST	1970
+-			-7:00	Mexico	M%sT	2010 Apr 4 2:00
++			-7:00	Mexico	M%sT	2010 Apr  4  2:00
+ 			-6:00	Mexico	C%sT
+ 
+ # Baja California (near US border)
+@@ -2560,7 +2499,7 @@
+ # America/Tijuana only in that it did not observe DST from 1976
+ # through 1995.  This was as per Shanks (1999).  But Shanks & Pottenger say
+ # Ensenada did not observe DST from 1948 through 1975.  Guy Harris reports
+-# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
++# that the 1987 OAG says "Only Ensenada, Mexicali, San Felipe and
+ # Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
+ # DST-observance was a town-by-town matter back then.  This concerns
+ # data after 1970 so most likely there should be at least one Zone
+@@ -2573,7 +2512,7 @@
+ ###############################################################################
+ 
+ # Anguilla
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Antigua and Barbuda
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -2609,8 +2548,8 @@
+ Rule	Barb	1979	only	-	Sep	30	2:00	0	S
+ Rule	Barb	1980	only	-	Sep	25	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Barbados	-3:58:29 -	LMT	1924		# Bridgetown
+-			-3:58:29 -	BMT	1932	  # Bridgetown Mean Time
++Zone America/Barbados	-3:58:29 -	LMT	1924 # Bridgetown
++			-3:58:29 -	BMT	1932 # Bridgetown Mean Time
+ 			-4:00	Barb	A%sT
+ 
+ # Belize
+@@ -2640,20 +2579,20 @@
+ # http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1 2:00    # Hamilton
+-			-4:00	-	AST	1974 Apr 28 2:00
++Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1  2:00 # Hamilton
++			-4:00	-	AST	1974 Apr 28  2:00
+ 			-4:00	Canada	A%sT	1976
+ 			-4:00	US	A%sT
+ 
+ # Cayman Is
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
+-			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
++Zone	America/Cayman	-5:25:32 -	LMT	1890     # Georgetown
++			-5:07:11 -	KMT	1912 Feb # Kingston Mean Time
+ 			-5:00	-	EST
+ 
+ # Costa Rica
+ 
+-# Milne gives -5:36:13.3 as San Jose mean time; round to nearest.
++# Milne gives -5:36:13.3 as San José mean time; round to nearest.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
+@@ -2663,10 +2602,10 @@
+ # go with Shanks & Pottenger.
+ Rule	CR	1991	only	-	Jul	 1	0:00	0	S
+ Rule	CR	1992	only	-	Mar	15	0:00	0	S
+-# There are too many San Joses elsewhere, so we'll use 'Costa Rica'.
++# There are too many San Josés elsewhere, so we'll use 'Costa Rica'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Costa_Rica	-5:36:13 -	LMT	1890		# San Jose
+-			-5:36:13 -	SJMT	1921 Jan 15 # San Jose Mean Time
++Zone America/Costa_Rica	-5:36:13 -	LMT	1890        # San José
++			-5:36:13 -	SJMT	1921 Jan 15 # San José Mean Time
+ 			-6:00	CR	C%sT
+ # Coco
+ # no information; probably like America/Costa_Rica
+@@ -2685,8 +2624,8 @@
+ # During the game, play-by-play announcer Jim Hunter noted that
+ # "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
+ # Time today."  (The "two hour" remark referred to losing one hour of
+-# sleep on 1999-03-28--when the announcers were in Cuba as it switched
+-# to DST--and one more hour on 1999-04-04--when the announcers will have
++# sleep on 1999-03-28 - when the announcers were in Cuba as it switched
++# to DST - and one more hour on 1999-04-04 - when the announcers will have
+ # returned to Baltimore, which switches on that date.)
+ 
+ # From Steffen Thorsen (2013-11-11):
+@@ -2708,16 +2647,16 @@
+ # adjustment in Cuba.  We will stay in daylight saving time:
+ # http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
+ 
+-# From Jesper Norgaard Welen (2006-10-21):
++# From Jesper Nørgaard Welen (2006-10-21):
+ # An article in GRANMA INTERNACIONAL claims that Cuba will end
+ # the 3 years of permanent DST next weekend, see
+ # http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
+ # "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
+-# watches should be set back one hour -- going back to 00:00 hours -- returning
++# watches should be set back one hour - going back to 00:00 hours - returning
+ # to the normal schedule....
+ 
+ # From Paul Eggert (2007-03-02):
+-# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
++# , dated yesterday,
+ # says Cuban clocks will advance at midnight on March 10.
+ # For lack of better information, assume Cuba will use US rules,
+ # except that it switches at midnight standard time as usual.
+@@ -2731,10 +2670,10 @@
+ # http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
+ # http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
+ #
+-# From Alex Kryvenishev (2007-10-25):
++# From Alex Krivenyshev (2007-10-25):
+ # Here is also article from Granma (Cuba):
+ #
+-# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
++# Regirá el Horario Normal desde el próximo domingo 28 de octubre
+ # http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
+ #
+ # http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
+@@ -2742,23 +2681,18 @@
+ # From Arthur David Olson (2008-03-09):
+ # I'm in Maryland which is now observing United States Eastern Daylight
+ # Time. At 9:44 local time I used RealPlayer to listen to
+-# 
+ # http://media.enet.cu/radioreloj
+-# , a Cuban information station, and heard
++# a Cuban information station, and heard
+ # the time announced as "ocho cuarenta y cuatro" ("eight forty-four"),
+ # indicating that Cuba is still on standard time.
+ 
+ # From Steffen Thorsen (2008-03-12):
+ # It seems that Cuba will start DST on Sunday, 2007-03-16...
+ # It was announced yesterday, according to this source (in Spanish):
+-# 
+ # http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm
+-# 
+ #
+ # Some more background information is posted here:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html
+-# 
+ #
+ # The article also says that Cuba has been observing DST since 1963,
+ # while Shanks (and tzdata) has 1965 as the first date (except in the
+@@ -2768,18 +2702,14 @@
+ # change some historic records as well.
+ #
+ # One example:
+-# 
+ # http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm
+-# 
+ 
+-# From Jesper Norgaard Welen (2008-03-13):
++# From Jesper Nørgaard Welen (2008-03-13):
+ # The Cuban time change has just been confirmed on the most authoritative
+ # web site, the Granma.  Please check out
+-# 
+ # http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html
+-# 
+ #
+-# Basically as expected after Steffen Thorsens information, the change
++# Basically as expected after Steffen Thorsen's information, the change
+ # will take place midnight between Saturday and Sunday.
+ 
+ # From Arthur David Olson (2008-03-12):
+@@ -2790,18 +2720,14 @@
+ # midnight between Saturday, March 07, 2009 and Sunday, March 08, 2009-
+ # not on midnight March 14 / March 15 as previously thought.
+ #
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_cuba05.html
+ # (in Spanish)
+-# 
+ 
+ # From Arthur David Olson (2009-03-09)
+ # I listened over the Internet to
+-# 
+ # http://media.enet.cu/readioreloj
+-# 
+ # this morning; when it was 10:05 a. m. here in Bethesda, Maryland the
+-# the time was announced as "diez cinco"--the same time as here, indicating
++# the time was announced as "diez cinco" - the same time as here, indicating
+ # that has indeed switched to DST. Assume second Sunday from 2009 forward.
+ 
+ # From Steffen Thorsen (2011-03-08):
+@@ -2810,42 +2736,30 @@
+ # changed at all).
+ #
+ # Source:
+-# 
+ # http://granma.co.cu/2011/03/08/nacional/artic01.html
+-# 
+ #
+ # Our info:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
+-# 
+ #
+ # From Steffen Thorsen (2011-10-30)
+ # Cuba will end DST two weeks later this year. Instead of going back
+ # tonight, it has been delayed to 2011-11-13 at 01:00.
+ #
+ # One source (Spanish)
+-# 
+ # http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html
+-# 
+ #
+ # Our page:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
+-# 
+ #
+ # From Steffen Thorsen (2012-03-01)
+ # According to Radio Reloj, Cuba will start DST on Midnight between March
+ # 31 and April 1.
+ #
+ # Radio Reloj has the following info (Spanish):
+-# 
+ # http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
+-# 
+ #
+ # Our info on it:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
+-# 
+ 
+ # From Steffen Thorsen (2012-11-03):
+ # Radio Reloj and many other sources report that Cuba is changing back
+@@ -2901,7 +2815,7 @@
+ 			-5:00	Cuba	C%sT
+ 
+ # Dominica
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Dominican Republic
+ 
+@@ -2934,8 +2848,8 @@
+ Zone America/Santo_Domingo -4:39:36 -	LMT	1890
+ 			-4:40	-	SDMT	1933 Apr  1 12:00 # S. Dom. MT
+ 			-5:00	DR	E%sT	1974 Oct 27
+-			-4:00	-	AST	2000 Oct 29 02:00
+-			-5:00	US	E%sT	2000 Dec  3 01:00
++			-4:00	-	AST	2000 Oct 29  2:00
++			-5:00	US	E%sT	2000 Dec  3  1:00
+ 			-4:00	-	AST
+ 
+ # El Salvador
+@@ -2946,20 +2860,20 @@
+ # There are too many San Salvadors elsewhere, so use America/El_Salvador
+ # instead of America/San_Salvador.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
++Zone America/El_Salvador -5:56:48 -	LMT	1921 # San Salvador
+ 			-6:00	Salv	C%sT
+ 
+ # Grenada
+ # Guadeloupe
+-# St Barthelemy
++# St Barthélemy
+ # St Martin (French part)
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Guatemala
+ #
+ # From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
+ # Diario Co Latino, at
+-# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
++# ,
+ # says in an article dated 2006-04-19 that the Guatemalan government had
+ # decided on that date to advance official time by 60 minutes, to lessen the
+ # impact of the elevated cost of oil....  Daylight saving time will last from
+@@ -2967,7 +2881,7 @@
+ # From Paul Eggert (2006-06-22):
+ # The Ministry of Energy and Mines, press release CP-15/2006
+ # (2006-04-19), says DST ends at 24:00.  See
+-# .
++# http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Guat	1973	only	-	Nov	25	0:00	1:00	D
+@@ -2984,11 +2898,10 @@
+ 
+ # Haiti
+ # From Gwillim Law (2005-04-15):
+-# Risto O. Nykanen wrote me that Haiti is now on DST.
+-# I searched for confirmation, and I found a
+-#  press release
++# Risto O. Nykänen wrote me that Haiti is now on DST.
++# I searched for confirmation, and I found a press release
+ # on the Web page of the Haitian Consulate in Chicago (2005-03-31),
+-# .  Translated from French, it says:
++# .  Translated from French, it says:
+ #
+ #  "The Prime Minister's Communication Office notifies the public in general
+ #   and the press in particular that, following a decision of the Interior
+@@ -3065,14 +2978,14 @@
+ #  that Manuel Zelaya, the president
+ # of Honduras, refused to back down on this.
+ 
+-# From Jesper Norgaard Welen (2006-08-08):
++# From Jesper Nørgaard Welen (2006-08-08):
+ # It seems that Honduras has returned from DST to standard time this Monday at
+ # 00:00 hours (prolonging Sunday to 25 hours duration).
+ # http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
+ 
+ # From Paul Eggert (2006-08-08):
+-# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
+-# .
++# Also see Diario El Heraldo, The country returns to standard time (2006-08-08).
++# http://www.elheraldo.hn/nota.php?nid=54941&sec=12
+ # It mentions executive decree 18-2006.
+ 
+ # From Steffen Thorsen (2006-08-17):
+@@ -3099,23 +3012,34 @@
+ # Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an
+ # unspecified official document, and says "This time is used throughout the
+ # island".  Go with Milne.  Round to the nearest second as required by zic.
++#
++# Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but
++# Lance Neita writes that Prime Minister Michael Manley decreed it January 5.
++# Assume Neita meant Jan 6 02:00, the same as the US.  Neita also writes that
++# Manley's supporters associated this act with Manley's nickname "Joshua"
++# (recall that in the Bible the sun stood still at Joshua's request),
++# and with the Rod of Correction which Manley said he had received from
++# Haile Selassie, Emperor of Ethiopia.  See:
++# Neita L. The politician in all of us. Jamaica Observer 2014-09-20
++# http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Jamaica	-5:07:11 -	LMT	1890		# Kingston
++Zone	America/Jamaica	-5:07:11 -	LMT	1890        # Kingston
+ 			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
+-			-5:00	-	EST	1974 Apr 28 2:00
++			-5:00	-	EST	1974
+ 			-5:00	US	E%sT	1984
+ 			-5:00	-	EST
+ 
+ # Martinique
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Martinique	-4:04:20 -      LMT	1890		# Fort-de-France
+-			-4:04:20 -	FFMT	1911 May     # Fort-de-France MT
++Zone America/Martinique	-4:04:20 -      LMT	1890        # Fort-de-France
++			-4:04:20 -	FFMT	1911 May    # Fort-de-France MT
+ 			-4:00	-	AST	1980 Apr  6
+ 			-4:00	1:00	ADT	1980 Sep 28
+ 			-4:00	-	AST
+ 
+ # Montserrat
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Nicaragua
+ #
+@@ -3138,27 +3062,27 @@
+ # From Gwillim Law (2005-04-21):
+ # The Associated Press story on the time change, which can be found at
+ # http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
+-# and elsewhere, says (fifth paragraph, translated from Spanish):  "The last
++# and elsewhere, says (fifth paragraph, translated from Spanish): "The last
+ # time that a change of clocks was applied to save energy was in the year 2000
+-# during the Arnoldo Aleman administration."...
++# during the Arnoldo Alemán administration."...
+ # The northamerica file says that Nicaragua has been on UTC-6 continuously
+ # since December 1998.  I wasn't able to find any details of Nicaraguan time
+ # changes in 2000.  Perhaps a note could be added to the northamerica file, to
+ # the effect that we have indirect evidence that DST was observed in 2000.
+ #
+-# From Jesper Norgaard Welen (2005-11-02):
++# From Jesper Nørgaard Welen (2005-11-02):
+ # Nicaragua left DST the 2005-10-02 at 00:00 (local time).
+ # http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
+ # (2005-09-26)
+ #
+-# From Jesper Norgaard Welen (2006-05-05):
++# From Jesper Nørgaard Welen (2006-05-05):
+ # http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
+ # (my informal translation)
+-# By order of the president of the republic, Enrique Bolanos, Nicaragua
++# By order of the president of the republic, Enrique Bolaños, Nicaragua
+ # advanced by sixty minutes their official time, yesterday at 2 in the
+-# morning, and will stay that way until 30.th. of september.
++# morning, and will stay that way until 30th of September.
+ #
+-# From Jesper Norgaard Welen (2006-09-30):
++# From Jesper Nørgaard Welen (2006-09-30):
+ # http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
+ # My informal translation runs:
+ # The natural sun time is restored in all the national territory, in that the
+@@ -3176,7 +3100,7 @@
+ 			-5:45:12 -	MMT	1934 Jun 23 # Managua Mean Time?
+ 			-6:00	-	CST	1973 May
+ 			-5:00	-	EST	1975 Feb 16
+-			-6:00	Nic	C%sT	1992 Jan  1 4:00
++			-6:00	Nic	C%sT	1992 Jan  1  4:00
+ 			-5:00	-	EST	1992 Sep 24
+ 			-6:00	-	CST	1993
+ 			-5:00	-	EST	1997
+@@ -3185,36 +3109,36 @@
+ # Panama
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Panama	-5:18:08 -	LMT	1890
+-			-5:19:36 -	CMT	1908 Apr 22   # Colon Mean Time
++			-5:19:36 -	CMT	1908 Apr 22 # Colón Mean Time
+ 			-5:00	-	EST
+ 
+ # Puerto Rico
+ # There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
++Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00 # San Juan
+ 			-4:00	-	AST	1942 May  3
+ 			-4:00	US	A%sT	1946
+ 			-4:00	-	AST
+ 
+ # St Kitts-Nevis
+ # St Lucia
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # St Pierre and Miquelon
+ # There are too many St Pierres elsewhere, so we'll use 'Miquelon'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
++Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15 # St Pierre
+ 			-4:00	-	AST	1980 May
+ 			-3:00	-	PMST	1987 # Pierre & Miquelon Time
+ 			-3:00	Canada	PM%sT
+ 
+ # St Vincent and the Grenadines
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Turks and Caicos
+ #
+ # From Chris Dunn in
+-# 
++# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415007
+ # (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
+ # daylight saving dates for time changes have been adjusted to match
+ # the recent U.S. change of dates.
+@@ -3227,21 +3151,27 @@
+ # Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
+ # indicating that the normal ET rules are followed.
+ #
+-# From Paul Eggert (2006-05-01):
+-# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
+-# says they switch at midnight.  Go with Shanks & Pottenger.
++# From Paul Eggert (2014-08-19):
++# The 2014-08-13 Cabinet meeting decided to stay on UTC-4 year-round.  See:
++# http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm
++# Model this as a switch from EST/EDT to AST ...
++# From Chris Walton (2014-11-04):
++# ... the TCI government appears to have delayed the switch to
++# "permanent daylight saving time" by one year....
++# http://tcweeklynews.com/time-change-to-go-ahead-this-november-p5437-127.htm
+ #
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	TC	1979	1986	-	Apr	lastSun	2:00	1:00	D
+-Rule	TC	1979	2006	-	Oct	lastSun	2:00	0	S
+-Rule	TC	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+-Rule	TC	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+-Rule	TC	2007	max	-	Nov	Sun>=1	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Grand_Turk	-4:44:32 -	LMT	1890
+-			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
+-			-5:00	TC	E%sT
++			-5:07:11 -	KMT	1912 Feb # Kingston Mean Time
++			-5:00	-	EST	1979
++			-5:00	US	E%sT	2015 Nov Sun>=1 2:00
++			-4:00	-	AST
+ 
+ # British Virgin Is
+ # Virgin Is
+-# See 'southamerica'.
++# See America/Port_of_Spain.
++
++
++# Local Variables:
++# coding: utf-8
++# End:
+--- ./jdk/make/data/tzdata/pacificnew	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/pacificnew	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- ./jdk/make/data/tzdata/southamerica	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/southamerica	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,31 +21,31 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2006-03-22):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
+-#
+-# For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# For data circa 1899, a common source is:
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
+ #
+ # Earlier editions of these tables used the North American style (e.g. ARST and
+ # ARDT for Argentine Standard and Daylight Time), but the following quote
+@@ -53,24 +53,24 @@
+ #	I suggest the use of _Summer time_ instead of the more cumbersome
+ #	_daylight-saving time_.  _Summer time_ seems to be in general use
+ #	in Europe and South America.
+-#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
++#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
+ #	H L Mencken, _The American Language: Supplement I_ (1960), p 466
+ #
+ # Earlier editions of these tables also used the North American style
+ # for time zones in Brazil, but this was incorrect, as Brazilians say
+-# "summer time".  Reinaldo Goulart, a Sao Paulo businessman active in
++# "summer time".  Reinaldo Goulart, a São Paulo businessman active in
+ # the railroad sector, writes (1999-07-06):
+ #	The subject of time zones is currently a matter of discussion/debate in
+-#	Brazil.  Let's say that "the Brasilia time" is considered the
+-#	"official time" because Brasilia is the capital city.
+-#	The other three time zones are called "Brasilia time "minus one" or
++#	Brazil.  Let's say that "the Brasília time" is considered the
++#	"official time" because Brasília is the capital city.
++#	The other three time zones are called "Brasília time "minus one" or
+ #	"plus one" or "plus two".  As far as I know there is no such
+ #	name/designation as "Eastern Time" or "Central Time".
+ # So I invented the following (English-language) abbreviations for now.
+ # Corrections are welcome!
+ #		std	dst
+ #	-2:00	FNT	FNST	Fernando de Noronha
+-#	-3:00	BRT	BRST	Brasilia
++#	-3:00	BRT	BRST	Brasília
+ #	-4:00	AMT	AMST	Amazon
+ #	-5:00	ACT	ACST	Acre
+ 
+@@ -84,7 +84,7 @@
+ # Argentina: first Sunday in October to first Sunday in April since 1976.
+ # Double Summer time from 1969 to 1974.  Switches at midnight.
+ 
+-# From U. S. Naval Observatory (1988-01-199):
++# From U. S. Naval Observatory (1988-01-19):
+ # ARGENTINA           3 H BEHIND   UTC
+ 
+ # From Hernan G. Otero (1995-06-26):
+@@ -118,7 +118,7 @@
+ # From Hernan G. Otero (1995-06-26):
+ # These corrections were contributed by InterSoft Argentina S.A.,
+ # obtaining the data from the:
+-# Talleres de Hidrografia Naval Argentina
++# Talleres de Hidrografía Naval Argentina
+ # (Argentine Naval Hydrography Institute)
+ Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
+ Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	S
+@@ -140,13 +140,13 @@
+ Rule	Arg	2000	only	-	Mar	3	0:00	0	-
+ #
+ # From Peter Gradelski via Steffen Thorsen (2000-03-01):
+-# We just checked with our Sao Paulo office and they say the government of
++# We just checked with our São Paulo office and they say the government of
+ # Argentina decided not to become one of the countries that go on or off DST.
+ # So Buenos Aires should be -3 hours from GMT at all times.
+ #
+-# From Fabian L. Arce Jofre (2000-04-04):
++# From Fabián L. Arce Jofré (2000-04-04):
+ # The law that claimed DST for Argentina was derogated by President Fernando
+-# de la Rua on March 2, 2000, because it would make people spend more energy
++# de la Rúa on March 2, 2000, because it would make people spend more energy
+ # in the winter time, rather than less.  The change took effect on March 3.
+ #
+ # From Mariano Absatz (2001-06-06):
+@@ -179,15 +179,13 @@
+ # that Argentina will use DST next year as well, from October to
+ # March, although exact rules are not given.
+ #
+-# From Jesper Norgaard Welen (2007-12-26)
++# From Jesper Nørgaard Welen (2007-12-26)
+ # The last hurdle of Argentina DST is over, the proposal was approved in
+-# the lower chamber too (Deputados) with a vote 192 for and 2 against.
++# the lower chamber too (Diputados) with a vote 192 for and 2 against.
+ # By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
+ # the original scanned proposal, where the dates and the zero hours are
+ # clear and unambiguous...This is the article about final approval:
+-# 
+ # http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
+-# 
+ #
+ # From Paul Eggert (2007-12-22):
+ # For dates after mid-2008, the following rules are my guesses and
+@@ -197,13 +195,8 @@
+ # As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
+ # Argentina will start DST on Sunday October 19, 2008.
+ #
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
+-# 
+-# OR
+-# 
+ # http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
+-# 
+ 
+ # From Rodrigo Severo (2008-10-06):
+ # Here is some info available at a Gentoo bug related to TZ on Argentina's DST:
+@@ -212,48 +205,39 @@
+ # Hi, there is a problem with timezone-data-2008e and maybe with
+ # timezone-data-2008f
+ # Argentinian law [Number] 25.155 is no longer valid.
+-# 
+ # http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
+-# 
+ # The new one is law [Number] 26.350
+-# 
+ # http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
+-# 
+ # So there is no summer time in Argentina for now.
+ 
+ # From Mariano Absatz (2008-10-20):
+-# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina
+-# From 2008-10-19 until 2009-03-15
+-# 
++# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST
++# in Argentina from 2008-10-19 until 2009-03-15.
+ # http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
+-# 
+ #
+-# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:
+-# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz
+-# and Tierra del Fuego
+-# 
++
++# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer
++# 2008/2009: Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La
++# Pampa, Neuquén, Rio Negro, Chubut, Santa Cruz and Tierra del Fuego
+ # http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
+-# 
+ #
+-# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying
+-# it will not apply DST either (even when it was not included in Decree 1705/2008)
+-# 
++# Press release 235 dated Saturday October 18th, from the Government of the
++# Province of Jujuy saying it will not apply DST either (even when it was not
++# included in Decree 1705/2008).
+ # http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
+-# 
+ 
+ # From fullinet (2009-10-18):
+ # As announced in
+-# 
+ # http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
+-# 
+-# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
++# (an official .gob.ar) under title: "Sin Cambio de Hora"
++# (English: "No hour change").
+ #
+-# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
+-# oficial, decision que estaba en estudio para su implementacion el
+-# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
+-# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
+-# la modificacion del huso horario, ya que 2009 nos encuentra con
+-# crecimiento en la produccion y distribucion energetica."
++# "Por el momento, el Gobierno Nacional resolvió no modificar la hora
++# oficial, decisión que estaba en estudio para su implementación el
++# domingo 18 de octubre. Desde el Ministerio de Planificación se anunció
++# que la Argentina hoy, en estas condiciones meteorológicas, no necesita
++# la modificación del huso horario, ya que 2009 nos encuentra con
++# crecimiento en la producción y distribución energética."
+ 
+ Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
+ Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
+@@ -267,10 +251,10 @@
+ # It's Law No. 7,210.  This change is due to a public power emergency, so for
+ # now we'll assume it's for this year only.
+ #
+-# From Paul Eggert (2006-03-22):
+-# 
+-# Hora de verano para la Republica Argentina (2003-06-08)
+-#  says that standard time in Argentina from 1894-10-31
++# From Paul Eggert (2014-08-09):
++# Hora de verano para la República Argentina
++# http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html
++# says that standard time in Argentina from 1894-10-31
+ # to 1920-05-01 was -4:16:48.25.  Go with this more-precise value
+ # over Shanks & Pottenger.
+ #
+@@ -285,10 +269,10 @@
+ # time in October 17th.
+ #
+ # Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
+-# Tierra del Fuego, Tucuman.
++# Tierra del Fuego, Tucumán.
+ #
+ # From Mariano Absatz (2004-06-14):
+-# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
++# ... this weekend, the Province of Tucumán decided it'd go back to UTC-03:00
+ # yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
+ # annoyance with the change is much higher than the power savings obtained....
+ #
+@@ -323,49 +307,38 @@
+ # Here are articles that Argentina Province San Luis is planning to end DST
+ # as earlier as upcoming Monday January 21, 2008 or February 2008:
+ #
+-# Provincia argentina retrasa reloj y marca diferencia con resto del pais
++# Provincia argentina retrasa reloj y marca diferencia con resto del país
+ # (Argentine Province delayed clock and mark difference with the rest of the
+ # country)
+-# 
+ # http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
+-# 
+ #
+ # Es inminente que en San Luis atrasen una hora los relojes
+ # (It is imminent in San Luis clocks one hour delay)
+-# 
+-# http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414
+-# 
+-#
+-# 
++# http://www.lagaceta.com.ar/nota/253414/Economia/Es-inminente-que-en-San-Luis-atrasen-una-hora-los-relojes.html
+ # http://www.worldtimezone.net/dst_news/dst_news_argentina02.html
+-# 
+ 
+-# From Jesper Norgaard Welen (2008-01-18):
++# From Jesper Nørgaard Welen (2008-01-18):
+ # The page of the San Luis provincial government
+-# 
+ # http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
+-# 
+ # confirms what Alex Krivenyshev has earlier sent to the tz
+ # emailing list about that San Luis plans to return to standard
+ # time much earlier than the rest of the country. It also
+ # confirms that upon request the provinces San Juan and Mendoza
+ # refused to follow San Luis in this change.
+ #
+-# The change is supposed to take place Monday the 21.st at 0:00
++# The change is supposed to take place Monday the 21st at 0:00
+ # hours. As far as I understand it if this goes ahead, we need
+ # a new timezone for San Luis (although there are also documented
+ # independent changes in the southamerica file of San Luis in
+ # 1990 and 1991 which has not been confirmed).
+ 
+-# From Jesper Norgaard Welen (2008-01-25):
++# From Jesper Nørgaard Welen (2008-01-25):
+ # Unfortunately the below page has become defunct, about the San Luis
+ # time change. Perhaps because it now is part of a group of pages "Most
+ # important pages of 2008."
+ #
+ # You can use
+-# 
+ # http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
+-# 
+ # instead it seems. Or use "Buscador" from the main page of the San Luis
+ # government, and fill in "huso" and click OK, and you will get 3 pages
+ # from which the first one is identical to the above.
+@@ -385,9 +358,9 @@
+ # back in 2004, when these provinces changed to UTC-4 for a few days, I
+ # mailed them personally and never got an answer).
+ 
+-# From Paul Eggert (2008-06-30):
+-# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
+-# from the IATA otherwise.  As noted below, Shanks & Pottenger say that
++# From Paul Eggert (2014-08-12):
++# Unless otherwise specified, data entries are from Shanks & Pottenger through
++# 1992, from the IATA otherwise.  As noted below, Shanks & Pottenger say that
+ # America/Cordoba split into 6 subregions during 1991/1992, one of which
+ # was America/San_Luis, but we haven't verified this yet so for now we'll
+ # keep America/Cordoba a single region rather than splitting it into the
+@@ -399,14 +372,9 @@
+ # to utc-04:00 until the second Saturday in October...
+ #
+ # The press release is at
+-# 
+ # http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
+-# 
+-# (I couldn't find the decree, but
+-# 
+-# www.sanluis.gov.ar
+-# 
+-# is the official page for the Province Government).
++# (I couldn't find the decree, but www.sanluis.gov.ar
++# is the official page for the Province Government.)
+ #
+ # There's also a note in only one of the major national papers ...
+ # http://www.lanacion.com.ar/nota.asp?nota_id=1107912
+@@ -423,9 +391,7 @@
+ # ...the Province of San Luis is a case in itself.
+ #
+ # The Law at
+-# 
+ # is ambiguous because establishes a calendar from the 2nd Sunday in
+ # October at 0:00 thru the 2nd Saturday in March at 24:00 and the
+ # complement of that starting on the 2nd Sunday of March at 0:00 and
+@@ -454,19 +420,15 @@
+ # ...
+ 
+ # From Alexander Krivenyshev (2010-04-09):
+-# According to news reports from El Diario de la Republica Province San
++# According to news reports from El Diario de la República Province San
+ # Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time
+-# after April 11, 2010--will continue to have same time as rest of
++# after April 11, 2010 - will continue to have same time as rest of
+ # Argentina (UTC-3) (no DST).
+ #
+-# Confirmaron la prórroga del huso horario de verano (Spanish)
+-# 
++# Confirmaron la prórroga del huso horario de verano (Spanish)
+ # http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9
+-# 
+ # or (some English translation):
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_argentina08.html
+-# 
+ 
+ # From Mariano Absatz (2010-04-12):
+ # yes...I can confirm this...and given that San Luis keeps calling
+@@ -478,7 +440,7 @@
+ # Perhaps San Luis operates on the legal fiction that it is at UTC-4
+ # with perpetual summer time, but ordinary usage typically seems to
+ # just say it's at UTC-3; see, for example,
+-# .
++# http://es.wikipedia.org/wiki/Hora_oficial_argentina
+ # We've documented similar situations as being plain changes to
+ # standard time, so let's do that here too.  This does not change UTC
+ # offsets, only tm_isdst and the time zone abbreviations.  One minor
+@@ -486,20 +448,20 @@
+ # setting for time stamps past 2038.
+ 
+ # From Paul Eggert (2013-02-21):
+-# Milne says Cordoba time was -4:16:48.2.  Round to the nearest second.
++# Milne says Córdoba time was -4:16:48.2.  Round to the nearest second.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ #
+ # Buenos Aires (BA), Capital Federal (CF),
+-Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
+-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
++Zone America/Argentina/Buenos_Aires -3:53:48 - LMT	1894 Oct 31
++			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+ 			-4:00	Arg	AR%sT	2000 Mar  3
+ 			-3:00	Arg	AR%sT
+ #
+-# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),
++# Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN),
+ # Chaco (CC), Formosa (FM), Santiago del Estero (SE)
+ #
+ # Shanks & Pottenger also make the following claims, which we haven't verified:
+@@ -519,7 +481,7 @@
+ 			-4:00	Arg	AR%sT	2000 Mar  3
+ 			-3:00	Arg	AR%sT
+ #
+-# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
++# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
+ Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
+ 			-4:16:48 -	CMT	1920 May
+ 			-4:00	-	ART	1930 Dec
+@@ -531,7 +493,7 @@
+ 			-3:00	Arg	AR%sT	2008 Oct 18
+ 			-3:00	-	ART
+ #
+-# Tucuman (TM)
++# Tucumán (TM)
+ Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
+ 			-4:16:48 -	CMT	1920 May
+ 			-4:00	-	ART	1930 Dec
+@@ -642,8 +604,8 @@
+ 			-3:00	-	ART
+ #
+ # Santa Cruz (SC)
+-Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
+-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
++Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT	1894 Oct 31
++			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+@@ -653,9 +615,9 @@
+ 			-3:00	Arg	AR%sT	2008 Oct 18
+ 			-3:00	-	ART
+ #
+-# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
+-Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
+-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
++# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
++Zone America/Argentina/Ushuaia -4:33:12 - LMT	1894 Oct 31
++			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+@@ -686,13 +648,13 @@
+ 
+ # From IATA SSIM (1996-02):
+ # _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
+-# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
+-# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
++# Santa Catarina (SC), Paraná (PR), São Paulo (SP), Rio de Janeiro (RJ),
++# Espírito Santo (ES), Minas Gerais (MG), Bahia (BA), Goiás (GO),
+ # Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
+ # [The last three states are new to this issue of the IATA SSIM.]
+ 
+ # From Gwillim Law (1996-10-07):
+-# Geography, history (Tocantins was part of Goias until 1989), and other
++# Geography, history (Tocantins was part of Goiás until 1989), and other
+ # sources of time zone information lead me to believe that AL, SE, and TO were
+ # always in BR1, and so the only change was whether or not they observed DST....
+ # The earliest issue of the SSIM I have is 2/91.  Each issue from then until
+@@ -706,16 +668,14 @@
+ # However, some conclusions can be drawn from another IATA manual: the Airline
+ # Coding Directory, which lists close to 400 airports in Brazil.  For each
+ # airport it gives a time zone which is coded to the SSIM.  From that
+-# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
+-# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
+-# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
++# information, I'm led to conclude that the states of Amapá (AP), Ceará (CE),
++# Maranhão (MA), Paraíba (PR), Pernambuco (PE), Piauí (PI), and Rio Grande do
++# Norte (RN), and the eastern part of Pará (PA) are all in BR1 without DST.
+ 
+ # From Marcos Tadeu (1998-09-27):
+-# 
+-# Brazilian official page
+-# 
++# Brazilian official page 
+ 
+-# From Jesper Norgaard (2000-11-03):
++# From Jesper Nørgaard (2000-11-03):
+ # [For an official list of which regions in Brazil use which time zones, see:]
+ # http://pcdsh01.on.br/Fusbr.htm
+ # http://pcdsh01.on.br/Fusbrhv.htm
+@@ -748,13 +708,13 @@
+ 
+ # From Paul Schulze (2008-06-24):
+ # ...by law number 11.662 of April 24, 2008 (published in the "Diario
+-# Oficial da Uniao"...) in Brazil there are changes in the timezones,
++# Oficial da União"...) in Brazil there are changes in the timezones,
+ # effective today (00:00am at June 24, 2008) as follows:
+ #
+-# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the
++# a) The timezone UTC+5 is extinguished, with all the Acre state and the
+ # part of the Amazonas state that had this timezone now being put to the
+ # timezone UTC+4
+-# b) The whole Para state now is put at timezone UTC+3, instead of just
++# b) The whole Pará state now is put at timezone UTC+3, instead of just
+ # part of it, as was before.
+ #
+ # This change follows a proposal of senator Tiao Viana of Acre state, that
+@@ -767,13 +727,11 @@
+ 
+ # From Rodrigo Severo (2008-06-24):
+ # Just correcting the URL:
+-# 
+ # https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
+-# 
+ #
+ # As a result of the above Decree I believe the America/Rio_Branco
+ # timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
+-# be created to represent the...west side of the Para State. I
++# be created to represent the...west side of the Pará State. I
+ # suggest this new timezone be called Santarem as the most
+ # important/populated city in the affected area.
+ #
+@@ -782,19 +740,16 @@
+ 
+ # From Alex Krivenyshev (2008-06-24):
+ # This is a quick reference page for New and Old Brazil Time Zones map.
+-# 
+ # http://www.worldtimezone.com/brazil-time-new-old.php
+-# 
+ #
+-# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05
+-# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western
+-# part of Par state is moving to one timezone UTC- 03 (from UTC -04).
++# - 4 time zones replaced by 3 time zones - eliminating time zone UTC-05
++# (state Acre and the part of the Amazonas will be UTC/GMT-04) - western
++# part of Par state is moving to one timezone UTC-03 (from UTC-04).
+ 
+ # From Paul Eggert (2002-10-10):
+ # The official decrees referenced below are mostly taken from
+-# 
+-# Decretos sobre o Horario de Verao no Brasil
+-# .
++# Decretos sobre o Horário de Verão no Brasil.
++# http://pcdsh01.on.br/DecHV.html
+ 
+ # From Steffen Thorsen (2008-08-29):
+ # As announced by the government and many newspapers in Brazil late
+@@ -806,25 +761,17 @@
+ # It has not yet been posted to http://pcdsh01.on.br/DecHV.html
+ #
+ # An official page about it:
+-# 
+ # http://www.mme.gov.br/site/news/detail.do?newsId=16722
+-# 
+ # Note that this link does not always work directly, but must be accessed
+ # by going to
+-# 
+ # http://www.mme.gov.br/first
+-# 
+ #
+ # One example link that works directly:
+-# 
+ # http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
+ # (Portuguese)
+-# 
+ #
+ # We have a written a short article about it as well:
+-# 
+ # http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
+-# 
+ #
+ # From Alexander Krivenyshev (2011-10-04):
+ # State Bahia will return to Daylight savings time this year after 8 years off.
+@@ -832,17 +779,12 @@
+ # television station in Salvador.
+ 
+ # In Portuguese:
+-# 
+ # http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
+-#  and
+-# 
+ # http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html
+-# 
+ 
+ # From Guilherme Bernardes Rodrigues (2011-10-07):
+ # There is news in the media, however there is still no decree about it.
+-# I just send a e-mail to Zulmira Brandao at
+-# http://pcdsh01.on.br/ the
++# I just send a e-mail to Zulmira Brandao at http://pcdsh01.on.br/ the
+ # official agency about time in Brazil, and she confirmed that the old rule is
+ # still in force.
+ 
+@@ -854,9 +796,7 @@
+ #
+ # DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011
+ # Link :
+-# 
+ # http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
+-# 
+ 
+ # From Kelley Cook (2012-10-16):
+ # The governor of state of Bahia in Brazil announced on Thursday that
+@@ -884,42 +824,42 @@
+ # For now, assume western Amazonas will change as well.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-# Decree 20,466 (1931-10-01)
+-# Decree 21,896 (1932-01-10)
++# Decree 20,466  (1931-10-01)
++# Decree 21,896  (1932-01-10)
+ Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	S
+ Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
+ Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
+-# Decree 23,195 (1933-10-10)
++# Decree 23,195  (1933-10-10)
+ # revoked DST.
+-# Decree 27,496 (1949-11-24)
+-# Decree 27,998 (1950-04-13)
++# Decree 27,496  (1949-11-24)
++# Decree 27,998  (1950-04-13)
+ Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	S
+ Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
+ Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
+-# Decree 32,308 (1953-02-24)
++# Decree 32,308  (1953-02-24)
+ Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
+-# Decree 34,724 (1953-11-30)
++# Decree 34,724  (1953-11-30)
+ # revoked DST.
+-# Decree 52,700 (1963-10-18)
++# Decree 52,700  (1963-10-18)
+ # established DST from 1963-10-23 00:00 to 1964-02-29 00:00
+ # in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
+-# Decree 53,071 (1963-12-03)
++# Decree 53,071  (1963-12-03)
+ # extended the above decree to all of the national territory on 12-09.
+ Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	S
+-# Decree 53,604 (1964-02-25)
++# Decree 53,604  (1964-02-25)
+ # extended summer time by one day to 1964-03-01 00:00 (start of school).
+ Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
+-# Decree 55,639 (1965-01-27)
++# Decree 55,639  (1965-01-27)
+ Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
+ Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
+-# Decree 57,303 (1965-11-22)
++# Decree 57,303  (1965-11-22)
+ Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
+-# Decree 57,843 (1966-02-18)
++# Decree 57,843  (1966-02-18)
+ Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
+ Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
+-# Decree 63,429 (1968-10-15)
++# Decree 63,429  (1968-10-15)
+ # revoked DST.
+-# Decree 91,698 (1985-09-27)
++# Decree 91,698  (1985-09-27)
+ Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	S
+ # Decree 92,310 (1986-01-21)
+ # Decree 92,463 (1986-03-13)
+@@ -927,42 +867,42 @@
+ # Decree 93,316 (1986-10-01)
+ Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	S
+ Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
+-# Decree 94,922 (1987-09-22)
++# Decree 94,922  (1987-09-22)
+ Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
+ Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
+-# Decree 96,676 (1988-09-12)
++# Decree 96,676  (1988-09-12)
+ # except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
+ Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	S
+ Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
+-# Decree 98,077 (1989-08-21)
++# Decree 98,077  (1989-08-21)
+ # with the same exceptions
+ Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	S
+ Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
+-# Decree 99,530 (1990-09-17)
++# Decree 99,530  (1990-09-17)
+ # adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
+ # Decree 99,629 (1990-10-19) adds BA, MT.
+ Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	S
+ Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
+-# Unnumbered decree (1991-09-25)
++# Unnumbered decree  (1991-09-25)
+ # adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
+ Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	S
+ Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
+-# Unnumbered decree (1992-10-16)
++# Unnumbered decree  (1992-10-16)
+ # adopted by same states.
+ Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	S
+ Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
+-# Decree 942 (1993-09-28)
++# Decree 942  (1993-09-28)
+ # adopted by same states, plus AM.
+-# Decree 1,252 (1994-09-22;
++# Decree 1,252  (1994-09-22;
+ # web page corrected 2004-01-07) adopted by same states, minus AM.
+-# Decree 1,636 (1995-09-14)
++# Decree 1,636  (1995-09-14)
+ # adopted by same states, plus MT and TO.
+-# Decree 1,674 (1995-10-13)
++# Decree 1,674  (1995-10-13)
+ # adds AL, SE.
+ Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	S
+ Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
+ Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
+-# Decree 2,000 (1996-09-04)
++# Decree 2,000  (1996-09-04)
+ # adopted by same states, minus AL, SE.
+ Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	S
+ Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
+@@ -975,53 +915,51 @@
+ #
+ # Decree 2,317 (1997-09-04), adopted by same states.
+ Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	S
+-# Decree 2,495
++# Decree 2,495 
+ # (1998-02-10)
+ Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
+-# Decree 2,780 (1998-09-11)
++# Decree 2,780  (1998-09-11)
+ # adopted by the same states as before.
+ Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	S
+ Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
+-# Decree 3,150
++# Decree 3,150 
+ # (1999-08-23) adopted by same states.
+-# Decree 3,188 (1999-09-30)
++# Decree 3,188  (1999-09-30)
+ # adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
+ Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	S
+ Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
+-# Decree 3,592 (2000-09-06)
++# Decree 3,592  (2000-09-06)
+ # adopted by the same states as before.
+-# Decree 3,630 (2000-10-13)
++# Decree 3,630  (2000-10-13)
+ # repeals DST in PE and RR, effective 2000-10-15 00:00.
+-# Decree 3,632 (2000-10-17)
++# Decree 3,632  (2000-10-17)
+ # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
+-# Decree 3,916
++# Decree 3,916 
+ # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
+ Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
+ Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
+ # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
+-# 4,399
++# 4,399 
+ Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
+ # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
+-# 4,844
++# 4,844 
+ Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
+ # Decree 5,223 (2004-10-01) reestablishes DST in MT.
+-# 5,223
++# 5,223 
+ Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
+-# Decree 5,539 (2005-09-19),
++# Decree 5,539  (2005-09-19),
+ # adopted by the same states as before.
+ Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
+-# Decree 5,920 (2006-10-03),
++# Decree 5,920  (2006-10-03),
+ # adopted by the same states as before.
+ Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
+ Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
+-# Decree 6,212 (2007-09-26),
++# Decree 6,212  (2007-09-26),
+ # adopted by the same states as before.
+ Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
+ # From Frederico A. C. Neves (2008-09-10):
+ # According to this decree
+-# 
+ # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
+-# 
+ # [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
+ # 3rd Feb Sunday. There is an exception on the return date when this is
+ # the Carnival Sunday then the return date will be the next Sunday...
+@@ -1056,29 +994,29 @@
+ 			-2:00	Brazil	FN%sT	2002 Oct  1
+ 			-2:00	-	FNT
+ # Other Atlantic islands have no permanent settlement.
+-# These include Trindade and Martin Vaz (administratively part of ES),
+-# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
++# These include Trindade and Martim Vaz (administratively part of ES),
++# Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE).
+ # Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
+ # it also included the Penedos.
+ #
+-# Amapa (AP), east Para (PA)
+-# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
+-# The division between east and west Para is the river Xingu.
++# Amapá (AP), east Pará (PA)
++# East Pará includes Belém, Marabá, Serra Norte, and São Félix do Xingu.
++# The division between east and west Pará is the river Xingu.
+ # In the north a very small part from the river Javary (now Jari I guess,
+-# the border with Amapa) to the Amazon, then to the Xingu.
++# the border with Amapá) to the Amazon, then to the Xingu.
+ Zone America/Belem	-3:13:56 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	1988 Sep 12
+ 			-3:00	-	BRT
+ #
+-# west Para (PA)
+-# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
++# west Pará (PA)
++# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
+ Zone America/Santarem	-3:38:48 -	LMT	1914
+ 			-4:00	Brazil	AM%sT	1988 Sep 12
+-			-4:00	-	AMT	2008 Jun 24 00:00
++			-4:00	-	AMT	2008 Jun 24  0:00
+ 			-3:00	-	BRT
+ #
+-# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
+-# Paraiba (PB)
++# Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN),
++# Paraíba (PB)
+ Zone America/Fortaleza	-2:34:00 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	1990 Sep 17
+ 			-3:00	-	BRT	1999 Sep 30
+@@ -1125,11 +1063,11 @@
+ 			-3:00	Brazil	BR%sT	2012 Oct 21
+ 			-3:00	-	BRT
+ #
+-# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+-# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
++# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
++# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
+ # Santa Catarina (SC), Rio Grande do Sul (RS)
+ Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
+-			-3:00	Brazil	BR%sT	1963 Oct 23 00:00
++			-3:00	Brazil	BR%sT	1963 Oct 23  0:00
+ 			-3:00	1:00	BRST	1964
+ 			-3:00	Brazil	BR%sT
+ #
+@@ -1143,7 +1081,7 @@
+ 			-4:00	-	AMT	2004 Oct  1
+ 			-4:00	Brazil	AM%sT
+ #
+-# Rondonia (RO)
++# Rondônia (RO)
+ Zone America/Porto_Velho -4:15:36 -	LMT	1914
+ 			-4:00	Brazil	AM%sT	1988 Sep 12
+ 			-4:00	-	AMT
+@@ -1155,7 +1093,7 @@
+ 			-4:00	Brazil	AM%sT	2000 Oct 15
+ 			-4:00	-	AMT
+ #
+-# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
++# east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto
+ # The great circle line from Tabatinga to Porto Acre divides
+ # east from west Amazonas.
+ Zone America/Manaus	-4:00:04 -	LMT	1914
+@@ -1165,19 +1103,19 @@
+ 			-4:00	-	AMT
+ #
+ # west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
+-#	Eirunepe, Envira, Ipixuna
++#	Eirunepé, Envira, Ipixuna
+ Zone America/Eirunepe	-4:39:28 -	LMT	1914
+ 			-5:00	Brazil	AC%sT	1988 Sep 12
+ 			-5:00	-	ACT	1993 Sep 28
+ 			-5:00	Brazil	AC%sT	1994 Sep 22
+-			-5:00	-	ACT	2008 Jun 24 00:00
++			-5:00	-	ACT	2008 Jun 24  0:00
+ 			-4:00	-	AMT	2013 Nov 10
+ 			-5:00	-	ACT
+ #
+ # Acre (AC)
+ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
+ 			-5:00	Brazil	AC%sT	1988 Sep 12
+-			-5:00	-	ACT	2008 Jun 24 00:00
++			-5:00	-	ACT	2008 Jun 24  0:00
+ 			-4:00	-	AMT	2013 Nov 10
+ 			-5:00	-	ACT
+ 
+@@ -1198,66 +1136,54 @@
+ # From Oscar van Vlijmen (2006-10-08):
+ # http://www.horaoficial.cl/cambio.htm
+ 
+-# From Jesper Norgaard Welen (2006-10-08):
++# From Jesper Nørgaard Welen (2006-10-08):
+ # I think that there are some obvious mistakes in the suggested link
+ # from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+ # ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+ # (they should have been 1990-09-15 and 1990-09-16 respectively), but
+ # anyhow it clears up some doubts too.
+ 
+-# From Paul Eggert (2006-12-27):
+-# The following data for Chile and America/Santiago are from
++# From Paul Eggert (2014-08-12):
++# The following data entries for Chile and America/Santiago are from
+ #  (2006-09-20), transcribed by
+-# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
++# Jesper Nørgaard Welen.  The data entries for Pacific/Easter are from Shanks
+ # & Pottenger, except with DST transitions after 1932 cloned from
+-# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
++# America/Santiago.  The pre-1980 Pacific/Easter data entries are dubious,
+ # but we have no other source.
+ 
+-# From German Poo-Caaman~o (2008-03-03):
++# From Germán Poo-Caamaño (2008-03-03):
+ # Due to drought, Chile extends Daylight Time in three weeks.  This
+ # is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+ # and Saturday 3/29 at 22:00 for Pacific/Easter)
+ # The Supreme Decree is located at
+-# 
+ # http://www.shoa.cl/servicios/supremo316.pdf
+-# 
+ # and the instructions for 2008 are located in:
+-# 
+ # http://www.horaoficial.cl/cambio.htm
+-# .
+ 
+-# From Jose Miguel Garrido (2008-03-05):
++# From José Miguel Garrido (2008-03-05):
+ # ...
+ # You could see the announces of the change on
+-# 
+ # http://www.shoa.cl/noticias/2008/04hora/hora.htm
+-# .
+ 
+ # From Angel Chiang (2010-03-04):
+ # Subject: DST in Chile exceptionally extended to 3 April due to earthquake
+-# 
+ # http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
+-# 
+ # (in Spanish, last paragraph).
+ #
+ # This is breaking news. There should be more information available later.
+ 
+-# From Arthur Daivd Olson (2010-03-06):
++# From Arthur David Olson (2010-03-06):
+ # Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+ 
+-# From Glenn Eychaner (2011-03-02): [geychaner@mac.com]
++# From Glenn Eychaner (2011-03-02):
+ # It appears that the Chilean government has decided to postpone the
+ # change from summer time to winter time again, by three weeks to April
+ # 2nd:
+-# 
+ # http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
+-# 
+ #
+ # This is not yet reflected in the official "cambio de hora" site, but
+ # probably will be soon:
+-# 
+ # http://www.horaoficial.cl/cambio.htm
+-# 
+ 
+ # From Arthur David Olson (2011-03-02):
+ # The emol.com article mentions a water shortage as the cause of the
+@@ -1265,9 +1191,7 @@
+ 
+ # From Glenn Eychaner (2011-03-28):
+ # The article:
+-# 
+ # http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
+-# 
+ #
+ # In English:
+ # Chile's clocks will go back an hour this year on the 7th of May instead
+@@ -1298,7 +1222,7 @@
+ # start date is 2013-09-08 00:00....
+ # http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm
+ 
+-# From Jose Miguel Garrido (2014-02-19):
++# From José Miguel Garrido (2014-02-19):
+ # Today appeared in the Diario Oficial a decree amending the time change
+ # dates to 2014.
+ # DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
+@@ -1352,7 +1276,7 @@
+ # (1996-09) says 1998-03-08.  Ignore these.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Santiago	-4:42:46 -	LMT	1890
+-			-4:42:46 -	SMT	1910 	    # Santiago Mean Time
++			-4:42:46 -	SMT	1910        # Santiago Mean Time
+ 			-5:00	-	CLT	1916 Jul  1 # Chile Time
+ 			-4:42:46 -	SMT	1918 Sep  1 # Santiago Mean Time
+ 			-4:00	-	CLT	1919 Jul  1 # Chile Time
+@@ -1361,16 +1285,16 @@
+ 			-4:00	Chile	CL%sT
+ Zone Pacific/Easter	-7:17:44 -	LMT	1890
+ 			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
+-			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter I Time
++			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter Time
+ 			-6:00	Chile	EAS%sT
+ #
+-# Sala y Gomez Island is like Pacific/Easter.
+-# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
+-# San Felix, and Antarctic bases, are like America/Santiago.
++# Salas y Gómez Island is uninhabited.
++# Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
++# and Antarctic bases, are like America/Santiago.
+ 
+ # Colombia
+ 
+-# Milne gives 4:56:16.4 for Bogota time in 1899; round to nearest.  He writes,
++# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest.  He writes,
+ # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1378,37 +1302,37 @@
+ Rule	CO	1993	only	-	Apr	 4	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
+-			-4:56:16 -	BMT	1914 Nov 23 # Bogota Mean Time
++			-4:56:16 -	BMT	1914 Nov 23 # Bogotá Mean Time
+ 			-5:00	CO	CO%sT	# Colombia Time
+ # Malpelo, Providencia, San Andres
+ # no information; probably like America/Bogota
+ 
+-# Curacao
++# Curaçao
+ 
+-# Milne gives 4:35:46.9 for Curacao mean time; round to nearest.
++# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
+ #
+ # From Paul Eggert (2006-03-22):
+ # Shanks & Pottenger say that The Bottom and Philipsburg have been at
+ # -4:00 since standard time was introduced on 1912-03-02; and that
+ # Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
+ # 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
+-# Saba Island has been like Curacao.
++# Saba Island has been like Curaçao.
+ # This all predates our 1970 cutoff, though.
+ #
+-# By July 2007 Curacao and St Maarten are planned to become
++# By July 2007 Curaçao and St Maarten are planned to become
+ # associated states within the Netherlands, much like Aruba;
+ # Bonaire, Saba and St Eustatius would become directly part of the
+ # Netherlands as Kingdom Islands.  This won't affect their time zones
+ # though, as far as we know.
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12	# Willemstad
++Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12 # Willemstad
+ 			-4:30	-	ANT	1965 # Netherlands Antilles Time
+ 			-4:00	-	AST
+ 
+ # From Arthur David Olson (2011-06-15):
+ # use links for places with new iso3166 codes.
+-# The name "Lower Prince's Quarter" is both longer than fourteen charaters
++# The name "Lower Prince's Quarter" is both longer than fourteen characters
+ # and contains an apostrophe; use "Lower_Princes" below.
+ 
+ Link	America/Curacao	America/Lower_Princes	# Sint Maarten
+@@ -1416,7 +1340,7 @@
+ 
+ # Ecuador
+ #
+-# Milne says the Sentral and South American Telegraph Company used -5:24:15.
++# Milne says the Central and South American Telegraph Company used -5:24:15.
+ #
+ # From Paul Eggert (2007-03-04):
+ # Apparently Ecuador had a failed experiment with DST in 1992.
+@@ -1427,10 +1351,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Guayaquil	-5:19:20 -	LMT	1890
+ 			-5:14:00 -	QMT	1931 # Quito Mean Time
+-			-5:00	-	ECT	     # Ecuador Time
++			-5:00	-	ECT	# Ecuador Time
+ Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
+ 			-5:00	-	ECT	1986
+-			-6:00	-	GALT	     # Galapagos Time
++			-6:00	-	GALT	# Galápagos Time
+ 
+ # Falklands
+ 
+@@ -1439,7 +1363,7 @@
+ # the IATA gives 1996-09-08.  Go with Shanks & Pottenger.
+ 
+ # From Falkland Islands Government Office, London (2001-01-22)
+-# via Jesper Norgaard:
++# via Jesper Nørgaard:
+ # ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
+ # April 2001 and advance one hour to summer time at 2 am on Sunday 2
+ # September.  It is anticipated that the clocks will revert back at 2
+@@ -1488,9 +1412,7 @@
+ # daylight saving time.
+ #
+ # One source:
+-# 
+ # http://www.falklandnews.com/public/story.cfm?get=5914&source=3
+-# 
+ #
+ # We have gotten this confirmed by a clerk of the legislative assembly:
+ # Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
+@@ -1531,10 +1453,10 @@
+ Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
+-			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
+-			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
++			-3:51:24 -	SMT	1912 Mar 12 # Stanley Mean Time
++			-4:00	Falk	FK%sT	1983 May    # Falkland Is Time
+ 			-3:00	Falk	FK%sT	1985 Sep 15
+-			-4:00	Falk	FK%sT	2010 Sep 5 02:00
++			-4:00	Falk	FK%sT	2010 Sep  5  2:00
+ 			-3:00	-	FKST
+ 
+ # French Guiana
+@@ -1545,7 +1467,7 @@
+ 
+ # Guyana
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
++Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar    # Georgetown
+ 			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
+ 			-3:45	-	GYT	1975 Jul 31 # Guyana Time
+ 			-3:00	-	GYT	1991
+@@ -1555,8 +1477,8 @@
+ # Paraguay
+ #
+ # From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
+-# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
++# Shanks & Pottenger say that spring transitions are 01:00 -> 02:00,
++# and autumn transitions are 00:00 -> 23:00.  Go with pre-1999
+ # editions of Shanks, and with the IATA, who say transitions occur at 00:00.
+ #
+ # From Waldemar Villamayor-Venialbo (2013-09-20):
+@@ -1582,9 +1504,8 @@
+ # (10-01).
+ #
+ # Translated by Gwillim Law (2001-02-27) from
+-# 
+-# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
+-# :
++# Noticias, a daily paper in Asunción, Paraguay (2000-10-01):
++# http://www.diarionoticias.com.py/011000/nacional/naciona1.htm
+ # Starting at 0:00 today, the clock will be set forward 60 minutes, in
+ # fulfillment of Decree No. 7,273 of the Executive Power....  The time change
+ # system has been operating for several years.  Formerly there was a separate
+@@ -1605,21 +1526,18 @@
+ Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
+ Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
+ #
+-# From Jesper Norgaard Welen (2005-01-02):
++# From Jesper Nørgaard Welen (2005-01-02):
+ # There are several sources that claim that Paraguay made
+ # a timezone rule change in autumn 2004.
+ # From Steffen Thorsen (2005-01-05):
+ # Decree 1,867 (2004-03-05)
+-# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
+-# 
++# From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13)
++# http://www.presidencia.gov.py/decretos/D1867.pdf
+ Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	S
+ Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
+-# From Carlos Raul Perasso (2010-02-18):
+-# By decree number 3958 issued yesterday (
+-# 
++# From Carlos Raúl Perasso (2010-02-18):
++# By decree number 3958 issued yesterday
+ # http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
+-# 
+-# )
+ # Paraguay changes its DST schedule, postponing the March rule to April and
+ # modifying the October date. The decree reads:
+ # ...
+@@ -1635,25 +1553,25 @@
+ # Paraguay will end DST on 2013-03-24 00:00....
+ # http://www.ande.gov.py/interna.php?id=1075
+ #
+-# From Carlos Raul Perasso (2013-03-15):
++# From Carlos Raúl Perasso (2013-03-15):
+ # The change in Paraguay is now final.  Decree number 10780
+ # http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
+-# From Carlos Raul Perasso (2014-02-28):
++# From Carlos Raúl Perasso (2014-02-28):
+ # Decree 1264 can be found at:
+ # http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
+ Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Asuncion	-3:50:40 -	LMT	1890
+-			-3:50:40 -	AMT	1931 Oct 10 # Asuncion Mean Time
+-			-4:00	-	PYT	1972 Oct # Paraguay Time
++			-3:50:40 -	AMT	1931 Oct 10 # Asunción Mean Time
++			-4:00	-	PYT	1972 Oct    # Paraguay Time
+ 			-3:00	-	PYT	1974 Apr
+ 			-4:00	Para	PY%sT
+ 
+ # Peru
+ #
+-# 
+-# From Evelyn C. Leeper via Mark Brader (2003-10-26):
++# From Evelyn C. Leeper via Mark Brader (2003-10-26)
++# :
+ # When we were in Peru in 1985-1986, they apparently switched over
+ # sometime between December 29 and January 3 while we were on the Amazon.
+ #
+@@ -1679,7 +1597,7 @@
+ 
+ # South Georgia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890		# Grytviken
++Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890 # Grytviken
+ 			-2:00	-	GST	# South Georgia Time
+ 
+ # South Sandwich Is
+@@ -1689,9 +1607,9 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Paramaribo	-3:40:40 -	LMT	1911
+ 			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
+-			-3:40:36 -	PMT	1945 Oct # The capital moved?
++			-3:40:36 -	PMT	1945 Oct    # The capital moved?
+ 			-3:30	-	NEGT	1975 Nov 20 # Dutch Guiana Time
+-			-3:30	-	SRT	1984 Oct # Suriname Time
++			-3:30	-	SRT	1984 Oct    # Suriname Time
+ 			-3:00	-	SRT
+ 
+ # Trinidad and Tobago
+@@ -1706,7 +1624,7 @@
+ Link America/Port_of_Spain America/Guadeloupe
+ Link America/Port_of_Spain America/Marigot	# St Martin (French part)
+ Link America/Port_of_Spain America/Montserrat
+-Link America/Port_of_Spain America/St_Barthelemy
++Link America/Port_of_Spain America/St_Barthelemy # St Barthélemy
+ Link America/Port_of_Spain America/St_Kitts	# St Kitts & Nevis
+ Link America/Port_of_Spain America/St_Lucia
+ Link America/Port_of_Spain America/St_Thomas	# Virgin Islands (US)
+@@ -1765,7 +1683,7 @@
+ Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
+ Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
+ # From Eduardo Cota (2004-09-20):
+-# The uruguayan government has decreed a change in the local time....
++# The Uruguayan government has decreed a change in the local time....
+ # http://www.presidencia.gub.uy/decretos/2004091502.htm
+ Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
+ # From Steffen Thorsen (2005-03-11):
+@@ -1779,14 +1697,14 @@
+ # 02:00 local time, official time in Uruguay will be at GMT -2.
+ Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
+ Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
+-# From Jesper Norgaard Welen (2006-09-06):
++# From Jesper Nørgaard Welen (2006-09-06):
+ # http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
+ Rule	Uruguay	2006	max	-	Oct	Sun>=1	 2:00	1:00	S
+ Rule	Uruguay	2007	max	-	Mar	Sun>=8	 2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
+-			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
+-			-3:30	Uruguay	UY%sT	1942 Dec 14	# Uruguay Time
++			-3:44:44 -	MMT	1920 May  1 # Montevideo MT
++			-3:30	Uruguay	UY%sT	1942 Dec 14 # Uruguay Time
+ 			-3:00	Uruguay	UY%sT
+ 
+ # Venezuela
+@@ -1794,14 +1712,14 @@
+ # From John Stainforth (2007-11-28):
+ # ... the change for Venezuela originally expected for 2007-12-31 has
+ # been brought forward to 2007-12-09.  The official announcement was
+-# published today in the "Gaceta Oficial de la Republica Bolivariana
+-# de Venezuela, numero 38.819" (official document for all laws or
++# published today in the "Gaceta Oficial de la República Bolivariana
++# de Venezuela, número 38.819" (official document for all laws or
+ # resolution publication)
+ # http://www.globovision.com/news.php?nid=72208
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Caracas	-4:27:44 -	LMT	1890
+ 			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
+-			-4:30	-	VET	1965	     # Venezuela Time
+-			-4:00	-	VET	2007 Dec  9 03:00
++			-4:30	-	VET	1965        # Venezuela Time
++			-4:00	-	VET	2007 Dec  9  3:00
+ 			-4:30	-	VET
+--- ./jdk/make/data/tzdata/systemv	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/systemv	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- ./jdk/make/data/tzdata/zone.tab	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/data/tzdata/zone.tab	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,39 +21,27 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# TZ zone descriptions
++# tz zone descriptions (deprecated version)
+ #
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
+-# From Paul Eggert (2013-08-14):
++# From Paul Eggert (2014-07-31):
++# This file is intended as a backward-compatibility aid for older programs.
++# New programs should use zone1970.tab.  This file is like zone1970.tab (see
++# zone1970.tab's comments), but with the following additional restrictions:
+ #
+-# This file contains a table where each row stands for an area that is
+-# the intersection of a region identified by a country code and of a
+-# zone where civil clocks have agreed since 1970.  The columns of the
+-# table are as follows:
++# 1.  This file contains only ASCII characters.
++# 2.  The first data column contains exactly one country code.
+ #
+-# 1.  ISO 3166 2-character country code.  See the file 'iso3166.tab'.
+-# 2.  Latitude and longitude of the area's principal location
+-#     in ISO 6709 sign-degrees-minutes-seconds format,
+-#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
+-#     first latitude (+ is north), then longitude (+ is east).
+-# 3.  Zone name used in value of TZ environment variable.
+-#     Please see the 'Theory' file for how zone names are chosen.
+-#     If multiple zones overlap a country, each has a row in the
+-#     table, with column 1 being duplicated.
+-# 4.  Comments; present if and only if the country has multiple rows.
+-#
+-# Columns are separated by a single tab.
+-# The table is sorted first by country, then an order within the country that
+-# (1) makes some geographical sense, and
+-# (2) puts the most populous areas first, where that does not contradict (1).
+-#
+-# Lines beginning with '#' are comments.
++# Because of (2), each row stands for an area that is the intersection
++# of a region identified by a country code and of a zone where civil
++# clocks have agreed since 1970; this is a narrower definition than
++# that of zone1970.tab.
+ #
+ # This table is intended as an aid for users, to help them select time
+-# zone data appropriate for their practical needs.  It is not intended
+-# to take or endorse any position on legal or territorial claims.
++# zone data entries appropriate for their practical needs.  It is not
++# intended to take or endorse any position on legal or territorial claims.
+ #
+ #country-
+ #code	coordinates	TZ			comments
+@@ -72,7 +60,7 @@
+ AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
+ AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
+ AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
+-AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
++AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Adelie Land
+ AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
+ AQ	-720041+0023206	Antarctica/Troll	Troll Station, Queen Maud Land
+ AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
+@@ -151,7 +139,7 @@
+ CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
+ CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
+ CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
+-CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut
++CA	+744144-0944945	America/Resolute	Central Time - Resolute, Nunavut
+ CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
+ CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
+ CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
+@@ -176,13 +164,10 @@
+ CI	+0519-00402	Africa/Abidjan
+ CK	-2114-15946	Pacific/Rarotonga
+ CL	-3327-07040	America/Santiago	most locations
+-CL	-2709-10926	Pacific/Easter	Easter Island & Sala y Gomez
++CL	-2709-10926	Pacific/Easter	Easter Island
+ CM	+0403+00942	Africa/Douala
+-CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.
+-CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin
+-CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
+-CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang
+-CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang
++CN	+3114+12128	Asia/Shanghai	Beijing Time
++CN	+4348+08735	Asia/Urumqi	Xinjiang Time
+ CO	+0436-07405	America/Bogota
+ CR	+0956-08405	America/Costa_Rica
+ CU	+2308-08222	America/Havana
+@@ -345,7 +330,8 @@
+ PF	-1732-14934	Pacific/Tahiti	Society Islands
+ PF	-0900-13930	Pacific/Marquesas	Marquesas Islands
+ PF	-2308-13457	Pacific/Gambier	Gambier Islands
+-PG	-0930+14710	Pacific/Port_Moresby
++PG	-0930+14710	Pacific/Port_Moresby	most locations
++PG	-0613+15534	Pacific/Bougainville	Bougainville
+ PH	+1435+12100	Asia/Manila
+ PK	+2452+06703	Asia/Karachi
+ PL	+5215+02100	Europe/Warsaw
+@@ -364,24 +350,26 @@
+ RO	+4426+02606	Europe/Bucharest
+ RS	+4450+02030	Europe/Belgrade
+ RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
+-RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
++RU	+554521+0373704	Europe/Moscow	Moscow+00 - west Russia
++RU	+4457+03406	Europe/Simferopol	Moscow+00 - Crimea
+ RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
+-RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia
+-RU	+4457+03406	Europe/Simferopol	Moscow+00 - Crimea
++RU	+5312+05009	Europe/Samara	Moscow+00 (Moscow+01 after 2014-10-26) - Samara, Udmurtia
+ RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
+ RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
+ RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
+-RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk
++RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 (Moscow+04 after 2014-10-26) - Kemerovo
+ RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
+ RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
++RU	+5203+11328	Asia/Chita	Moscow+06 (Moscow+05 after 2014-10-26) - Zabaykalsky
+ RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
+ RU	+623923+1353314	Asia/Khandyga	Moscow+06 - Tomponsky, Ust-Maysky
+ RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
+ RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
+ RU	+643337+1431336	Asia/Ust-Nera	Moscow+07 - Oymyakonsky
+-RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
+-RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+-RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
++RU	+5934+15048	Asia/Magadan	Moscow+08 (Moscow+07 after 2014-10-26) - Magadan
++RU	+6728+15343	Asia/Srednekolymsk	Moscow+08 - E Sakha, N Kuril Is
++RU	+5301+15839	Asia/Kamchatka	Moscow+08 (Moscow+09 after 2014-10-26) - Kamchatka
++RU	+6445+17729	Asia/Anadyr	Moscow+08 (Moscow+09 after 2014-10-26) - Bering Sea
+ RW	-0157+03004	Africa/Kigali
+ SA	+2438+04643	Asia/Riyadh
+ SB	-0932+16012	Pacific/Guadalcanal
+@@ -448,13 +436,13 @@
+ US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
+ US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona (except Navajo)
+ US	+340308-1181434	America/Los_Angeles	Pacific Time
++US	+550737-1313435	America/Metlakatla	Pacific Standard Time - Annette Island, Alaska
+ US	+611305-1495401	America/Anchorage	Alaska Time
+ US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
+ US	+571035-1351807	America/Sitka	Alaska Time - southeast Alaska panhandle
+ US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
+ US	+643004-1652423	America/Nome	Alaska Time - west Alaska
+ US	+515248-1763929	America/Adak	Aleutian Islands
+-US	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island
+ US	+211825-1575130	Pacific/Honolulu	Hawaii
+ UY	-3453-05611	America/Montevideo
+ UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
+--- ./jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -27,6 +27,8 @@
+ 
+ import sun.awt.EventQueueDelegate;
+ import sun.awt.AppContext;
++import sun.awt.SunToolkit;
++
+ import java.util.Collections;
+ import java.util.Map;
+ import java.util.WeakHashMap;
+@@ -117,8 +119,8 @@
+     public static RepaintManager getDelegateRepaintManager(Component
+                                                             component) {
+         RepaintManager delegate = null;
+-        if (Boolean.TRUE == AppContext.getAppContext().get(
+-                                               DELEGATE_REPAINT_MANAGER_KEY)) {
++        if (Boolean.TRUE == SunToolkit.targetToAppContext(component)
++                                      .get(DELEGATE_REPAINT_MANAGER_KEY)) {
+             while (delegate == null && component != null) {
+                 while (component != null
+                          && ! (component instanceof JComponent)) {
+--- ./jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1067,16 +1067,9 @@
+ 
+             directories.clear();
+ 
+-            File[] baseFolders;
+-            if (useShellFolder) {
+-                baseFolders = AccessController.doPrivileged(new PrivilegedAction() {
+-                    public File[] run() {
+-                        return (File[]) ShellFolder.get("fileChooserComboBoxFolders");
+-                    }
+-                });
+-            } else {
+-                baseFolders = fsv.getRoots();
+-            }
++            File[] baseFolders = (useShellFolder)
++                    ? (File[]) ShellFolder.get("fileChooserComboBoxFolders")
++                    : fsv.getRoots();
+             directories.addAll(Arrays.asList(baseFolders));
+ 
+             // Get the canonical (full) path. This has the side
+--- ./jdk/src/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -84,7 +84,7 @@
+                 "  -V\u3001--version                   \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059",
+                 "  -J{X}                           \u30AA\u30D7\u30B7\u30E7\u30F3X\u3092\u57FA\u790E\u3068\u306A\u308BJava VM\u306B\u6E21\u3057\u307E\u3059",
+                 "",
+-                "\u6CE8\u610F:",
++                "\u6CE8:",
+                 "  -P\u3001-C\u3001-F\u3001-M\u304A\u3088\u3073-D\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u7D2F\u7A4D\u3055\u308C\u307E\u3059\u3002",
+                 "  \u5C5E\u6027\u5B9A\u7FA9\u306E\u4F8B:  -C SourceFile=RUH .",
+                 "  Config.\u30D5\u30A1\u30A4\u30EB\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u3001Pack200 API\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002",
+--- ./jdk/src/share/classes/com/sun/jndi/ldap/BerDecoder.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/com/sun/jndi/ldap/BerDecoder.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -95,6 +95,9 @@
+             for( int i = 0; i < lengthbyte; i++) {
+                 retval = (retval << 8) + (buf[offset++] & 0xff);
+             }
++            if (retval < 0) {
++              throw new DecodeException("Invalid length bytes");
++            }
+             return retval;
+         } else {
+             return lengthbyte;
+--- ./jdk/src/share/classes/java/awt/Component.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/awt/Component.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -3400,7 +3400,7 @@
+                 (width > 0) && (height > 0)) {
+                 PaintEvent e = new PaintEvent(this, PaintEvent.UPDATE,
+                                               new Rectangle(x, y, width, height));
+-                Toolkit.getEventQueue().postEvent(e);
++                SunToolkit.postEvent(SunToolkit.targetToAppContext(this), e);
+             }
+         }
+     }
+--- ./jdk/src/share/classes/java/awt/EventQueue.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/awt/EventQueue.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -214,6 +214,11 @@
+                                             FwDispatcher dispatcher) {
+                     eventQueue.setFwDispatcher(dispatcher);
+                 }
++
++                @Override
++                public long getMostRecentEventTime(EventQueue eventQueue) {
++                    return eventQueue.getMostRecentEventTimeImpl();
++                }
+             });
+     }
+ 
+--- ./jdk/src/share/classes/java/awt/event/InputMethodEvent.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/awt/event/InputMethodEvent.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -25,6 +25,10 @@
+ 
+ package java.awt.event;
+ 
++import sun.awt.AWTAccessor;
++import sun.awt.AppContext;
++import sun.awt.SunToolkit;
++
+ import java.awt.AWTEvent;
+ import java.awt.Component;
+ import java.awt.EventQueue;
+@@ -217,8 +221,10 @@
+     public InputMethodEvent(Component source, int id,
+             AttributedCharacterIterator text, int committedCharacterCount,
+             TextHitInfo caret, TextHitInfo visiblePosition) {
+-        this(source, id, EventQueue.getMostRecentEventTime(), text,
+-             committedCharacterCount, caret, visiblePosition);
++        this(source, id,
++                getMostRecentEventTimeForSource(source),
++                text, committedCharacterCount,
++                caret, visiblePosition);
+     }
+ 
+     /**
+@@ -258,8 +264,9 @@
+      */
+     public InputMethodEvent(Component source, int id, TextHitInfo caret,
+             TextHitInfo visiblePosition) {
+-        this(source, id, EventQueue.getMostRecentEventTime(), null,
+-             0, caret, visiblePosition);
++        this(source, id,
++                getMostRecentEventTimeForSource(source),
++                null, 0, caret, visiblePosition);
+     }
+ 
+     /**
+@@ -410,7 +417,26 @@
+     private void readObject(ObjectInputStream s) throws ClassNotFoundException, IOException {
+         s.defaultReadObject();
+         if (when == 0) {
++            // Can't use getMostRecentEventTimeForSource because source is always null during deserialization
+             when = EventQueue.getMostRecentEventTime();
+         }
+     }
++
++    /**
++     * Get the most recent event time in the {@code EventQueue} which the {@code source}
++     * belongs to.
++     *
++     * @param source the source of the event
++     * @exception  IllegalArgumentException  if source is null.
++     * @return most recent event time in the {@code EventQueue}
++     */
++    private static long getMostRecentEventTimeForSource(Object source) {
++        if (source == null) {
++            // throw the IllegalArgumentException to conform to EventObject spec
++            throw new IllegalArgumentException("null source");
++        }
++        AppContext appContext = SunToolkit.targetToAppContext(source);
++        EventQueue eventQueue = SunToolkit.getSystemEventQueueImplPP(appContext);
++        return AWTAccessor.getEventQueueAccessor().getMostRecentEventTime(eventQueue);
++    }
+ }
+--- ./jdk/src/share/classes/java/io/ByteArrayOutputStream.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/io/ByteArrayOutputStream.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -94,6 +94,14 @@
+     }
+ 
+     /**
++     * The maximum size of array to allocate.
++     * Some VMs reserve some header words in an array.
++     * Attempts to allocate larger arrays may result in
++     * OutOfMemoryError: Requested array size exceeds VM limit
++     */
++    private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
++
++    /**
+      * Increases the capacity to ensure that it can hold at least the
+      * number of elements specified by the minimum capacity argument.
+      *
+@@ -105,14 +113,19 @@
+         int newCapacity = oldCapacity << 1;
+         if (newCapacity - minCapacity < 0)
+             newCapacity = minCapacity;
+-        if (newCapacity < 0) {
+-            if (minCapacity < 0) // overflow
+-                throw new OutOfMemoryError();
+-            newCapacity = Integer.MAX_VALUE;
+-        }
++        if (newCapacity - MAX_ARRAY_SIZE > 0)
++            newCapacity = hugeCapacity(minCapacity);
+         buf = Arrays.copyOf(buf, newCapacity);
+     }
+ 
++    private static int hugeCapacity(int minCapacity) {
++        if (minCapacity < 0) // overflow
++            throw new OutOfMemoryError();
++        return (minCapacity > MAX_ARRAY_SIZE) ?
++            Integer.MAX_VALUE :
++            MAX_ARRAY_SIZE;
++    }
++
+     /**
+      * Writes the specified byte to this byte array output stream.
+      *
+--- ./jdk/src/share/classes/java/lang/ClassLoader.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/lang/ClassLoader.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1365,7 +1365,10 @@
+             return null;
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+-            checkClassLoaderPermission(this, Reflection.getCallerClass());
++            // Check access to the parent class loader
++            // If the caller's class loader is same as this class loader,
++            // permission check is performed.
++            checkClassLoaderPermission(parent, Reflection.getCallerClass());
+         }
+         return parent;
+     }
+@@ -1508,6 +1511,11 @@
+         return caller.getClassLoader0();
+     }
+ 
++    /*
++     * Checks RuntimePermission("getClassLoader") permission
++     * if caller's class loader is not null and caller's class loader
++     * is not the same as or an ancestor of the given cl argument.
++     */
+     static void checkClassLoaderPermission(ClassLoader cl, Class caller) {
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+--- ./jdk/src/share/classes/java/net/MulticastSocket.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/net/MulticastSocket.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -569,7 +569,7 @@
+     public NetworkInterface getNetworkInterface() throws SocketException {
+         NetworkInterface ni
+             = (NetworkInterface)getImpl().getOption(SocketOptions.IP_MULTICAST_IF2);
+-        if (ni.getIndex() == 0) {
++        if ((ni.getIndex() == 0) || (ni.getIndex() == -1)) {
+             InetAddress[] addrs = new InetAddress[1];
+             addrs[0] = InetAddress.anyLocalAddress();
+             return new NetworkInterface(addrs[0].getHostName(), 0, addrs);
+--- ./jdk/src/share/classes/java/util/CurrencyData.properties	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/java/util/CurrencyData.properties	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -28,7 +28,7 @@
+ # Version of the currency code information in this class.
+ # It is a serial number that accompanies with each amendment.
+ 
+-dataVersion=156
++dataVersion=159
+ 
+ # List of all valid ISO 4217 currency codes.
+ # To ensure compatibility, do not remove codes.
+@@ -332,7 +332,7 @@
+ # LIECHTENSTEIN
+ LI=CHF
+ # LITHUANIA
+-LT=LTL
++LT=LTL;2014-12-31-22-00-00;EUR
+ # LUXEMBOURG
+ LU=EUR
+ # MACAU
+--- ./jdk/src/share/classes/javax/swing/JComponent.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/javax/swing/JComponent.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -63,6 +63,7 @@
+ import static javax.swing.ClientPropertyKey.*;
+ import javax.accessibility.*;
+ 
++import sun.awt.SunToolkit;
+ import sun.swing.SwingUtilities2;
+ import sun.swing.UIClientPropertyKey;
+ 
+@@ -4795,7 +4796,8 @@
+      * @see RepaintManager#addDirtyRegion
+      */
+     public void repaint(long tm, int x, int y, int width, int height) {
+-        RepaintManager.currentManager(this).addDirtyRegion(this, x, y, width, height);
++        RepaintManager.currentManager(SunToolkit.targetToAppContext(this))
++                      .addDirtyRegion(this, x, y, width, height);
+     }
+ 
+ 
+@@ -4849,7 +4851,7 @@
+             // which was causing some people grief.
+             return;
+         }
+-        if (SwingUtilities.isEventDispatchThread()) {
++        if (SunToolkit.isDispatchThreadForAppContext(this)) {
+             invalidate();
+             RepaintManager.currentManager(this).addInvalidComponent(this);
+         }
+@@ -4863,15 +4865,12 @@
+                 }
+                 setFlag(REVALIDATE_RUNNABLE_SCHEDULED, true);
+             }
+-            Runnable callRevalidate = new Runnable() {
+-                public void run() {
+-                    synchronized(JComponent.this) {
+-                        setFlag(REVALIDATE_RUNNABLE_SCHEDULED, false);
+-                    }
+-                    revalidate();
++            SunToolkit.executeOnEventHandlerThread(this, () -> {
++                synchronized(JComponent.this) {
++                    setFlag(REVALIDATE_RUNNABLE_SCHEDULED, false);
+                 }
+-            };
+-            SwingUtilities.invokeLater(callRevalidate);
++                revalidate();
++            });
+         }
+     }
+ 
+--- ./jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -941,16 +941,9 @@
+ 
+             directories.clear();
+ 
+-            File[] baseFolders;
+-            if (useShellFolder) {
+-                baseFolders = AccessController.doPrivileged(new PrivilegedAction() {
+-                    public File[] run() {
+-                        return (File[]) ShellFolder.get("fileChooserComboBoxFolders");
+-                    }
+-                });
+-            } else {
+-                baseFolders = fsv.getRoots();
+-            }
++            File[] baseFolders = (useShellFolder)
++                    ? (File[]) ShellFolder.get("fileChooserComboBoxFolders")
++                    : fsv.getRoots();
+             directories.addAll(Arrays.asList(baseFolders));
+ 
+             // Get the canonical (full) path. This has the side
+--- ./jdk/src/share/classes/sun/awt/AWTAccessor.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/awt/AWTAccessor.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -504,7 +504,12 @@
+         /**
+          * Sets the delegate for the EventQueue used by FX/AWT single threaded mode
+          */
+-        public void setFwDispatcher(EventQueue eventQueue, FwDispatcher dispatcher);
++        void setFwDispatcher(EventQueue eventQueue, FwDispatcher dispatcher);
++
++        /**
++         * Gets most recent event time in the EventQueue
++         */
++        long getMostRecentEventTime(EventQueue eventQueue);
+     }
+ 
+     /*
+--- ./jdk/src/share/classes/sun/awt/SunToolkit.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/awt/SunToolkit.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -386,7 +386,7 @@
+      * null or the target can't be found, a null with be returned.
+      */
+     public static AppContext targetToAppContext(Object target) {
+-        if (target == null || GraphicsEnvironment.isHeadless()) {
++        if (target == null) {
+             return null;
+         }
+         AppContext context = getAppContext(target);
+@@ -460,12 +460,10 @@
+      * via targetToAppContext() above.
+      */
+     public static void insertTargetMapping(Object target, AppContext appContext) {
+-        if (!GraphicsEnvironment.isHeadless()) {
+-            if (!setAppContext(target, appContext)) {
+-                // Target is not a Component/MenuComponent, use the private Map
+-                // instead.
+-                appContextMap.put(target, appContext);
+-            }
++        if (!setAppContext(target, appContext)) {
++            // Target is not a Component/MenuComponent, use the private Map
++            // instead.
++            appContextMap.put(target, appContext);
+         }
+     }
+ 
+--- ./jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceDataProxy.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceDataProxy.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -65,7 +65,11 @@
+                                            int w, int h)
+     {
+         if (cachedData == null) {
+-            cachedData = oglgc.createManagedSurface(w, h, transparency);
++            try {
++                cachedData = oglgc.createManagedSurface(w, h, transparency);
++            } catch (OutOfMemoryError er) {
++                return null;
++            }
+         }
+         return cachedData;
+     }
+--- ./jdk/src/share/classes/sun/launcher/resources/launcher_de.properties	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/launcher/resources/launcher_de.properties	Mon Dec 08 12:29:42 2014 -0800
+@@ -34,7 +34,7 @@
+ java.launcher.ergo.message2  =\                  weil die Ausf\u00FChrung auf einem Server-Class-Rechner erfolgt.\n
+ 
+ # Translators please note do not translate the options themselves
+-java.launcher.opt.footer     =\    -cp \n    -classpath \n                  Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n                  und ZIP-Archiven zur Suche nach Klassendateien.\n    -D=\n                  Legt eine Systemeigenschaft fest\n    -verbose:[class|gc|jni]\n                  Aktiviert die Verbose-Ausgabe\n    -version      Druckt Produktversion und beendet das Programm\n    -version:\n                  Erfordert die angegebene Version zur Ausf\u00FChrung\n    -showversion  Druckt Produktversion und f\u00E4hrt fort\n    -jre-restrict-search | -no-jre-restrict-search\n                  Bezieht private JREs des Benutzers in Versionssuche ein bzw. schlie\u00DFt sie aus\n    -? -help      Druckt diese Hilfemeldung\n    -X            Druckt Hilfe zu Nicht-Standardoptionen\n    -ea[:...|:]\n    -enableassertions[:...|:]\n                  Aktiviert Assertionen mit angegebener Granularit\u00E4t\n    -da[:...|:]\n    -disableassertions[:...|:]\n                  Deaktiviert Assertionen mit angegebener Granularit\u00E4t\n    -esa | -enablesystemassertions\n                  Aktiviert Systemassertionen\n    -dsa | -disablesystemassertions\n                  Deaktiviert Systemassertionen\n    -agentlib:[=]\n                  L\u00E4dt native Agent Library , z.B. -agentlib:hprof\n                  siehe auch -agentlib:jdwp=help und -agentlib:hprof=help\n    -agentpath:[=]\n                  L\u00E4dt native Agent Library nach vollem Pfadnamen\n    -javaagent:[=]\n                  L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n    -splash:\n                  Zeigt Startbildschirm mit angegebenem Bild\nWeitere Einzelheiten finden Sie unter http://www.oracle.com/technetwork/java/javase/documentation/index.html
++java.launcher.opt.footer     =\    -cp \n    -classpath \n                  Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n                  und ZIP-Archiven zur Suche nach Klassendateien.\n    -D=\n                  Legt eine Systemeigenschaft fest\n    -verbose:[class|gc|jni]\n                  Aktiviert die Verbose-Ausgabe\n    -version      Druckt Produktversion und beendet das Programm\n    -version:\n                  Erfordert die angegebene Version zur Ausf\u00FChrung\n    -showversion  Druckt Produktversion und f\u00E4hrt fort\n    -jre-restrict-search | -no-jre-restrict-search\n                  Bezieht private JREs des Benutzers in Versionssuche ein bzw. schlie\u00DFt sie aus\n    -? -help      Druckt diese Hilfemeldung\n    -X            Druckt Hilfe zu Nicht-Standardoptionen\n    -ea[:...|:]\n    -enableassertions[:...|:]\n                  Aktiviert Assertions mit angegebener Granularit\u00E4t\n    -da[:...|:]\n    -disableassertions[:...|:]\n                  Deaktiviert Assertions mit angegebener Granularit\u00E4t\n    -esa | -enablesystemassertions\n                  Aktiviert Systemassertionen\n    -dsa | -disablesystemassertions\n                  Deaktiviert Systemassertionen\n    -agentlib:[=]\n                  L\u00E4dt native Agent Library , z.B. -agentlib:hprof\n                  siehe auch -agentlib:jdwp=help und -agentlib:hprof=help\n    -agentpath:[=]\n                  L\u00E4dt native Agent Library nach vollem Pfadnamen\n    -javaagent:[=]\n                  L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n    -splash:\n                  Zeigt Startbildschirm mit angegebenem Bild\nWeitere Einzelheiten finden Sie unter http://www.oracle.com/technetwork/java/javase/documentation/index.html
+ 
+ # Translators please note do not translate the options themselves
+ java.launcher.X.usage=\    -Xmixed           Ausf\u00FChrung im gemischten Modus (Standard)\n    -Xint             Nur Ausf\u00FChrung im interpretierten Modus\n    -Xbootclasspath:\n                      Legt Suchpfad f\u00FCr Bootstrap-Klassen und Ressourcen fest\n    -Xbootclasspath/a:\n                      H\u00E4ngt an das Ende des Bootstrap Classpath an\n    -Xbootclasspath/p:\n                      Stellt Bootstrap Classpath voran\n    -Xdiag            Zeigt zus\u00E4tzliche Diagnosemeldungen an\n    -Xnoclassgc       Deaktiviert Klassen-Garbage Collection\n    -Xincgc           Aktiviert inkrementelle Garbage Collection\n    -Xloggc:    Loggt GC-Status in einer Datei mit Zeitstempeln\n    -Xbatch           Deaktiviert Hintergrundkompilierung\n    -Xms        Legt anf\u00E4ngliche Java Heap-Gr\u00F6\u00DFe fest\n    -Xmx        Legt maximale Java Heap-Gr\u00F6\u00DFe fest\n    -Xss        Legt Java-Threadstackgr\u00F6\u00DFe fest\n    -Xprof            Gibt CPU-Profiling-Daten aus\n    -Xfuture          Aktiviert strengste Pr\u00FCfungen, antizipiert zuk\u00FCnftigen Standardwert\n    -Xrs              Reduziert Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n    -Xcheck:jni       F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen durch\n    -Xshare:off       Kein Versuch, gemeinsame Klassendaten zu verwenden\n    -Xshare:auto      Verwendet gemeinsame Klassendaten, wenn m\u00F6glich (Standard)\n    -Xshare:on        Erfordert die Verwendung gemeinsamer Klassendaten, sonst verl\u00E4uft der Vorgang nicht erfolgreich.\n    -XshowSettings    Zeigt alle Einstellungen und f\u00E4hrt fort\n    -XshowSettings:all\n                      Zeigt alle Einstellungen und f\u00E4hrt fort\n    -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen und f\u00E4hrt fort\n    -XshowSettings:properties\n                      Zeigt alle Eigenschaftseinstellungen und f\u00E4hrt fort\n    -XshowSettings:locale\n                      Zeigt alle gebietsschemabezogenen Einstellungen und f\u00E4hrt fort\n\nDie -X-Optionen sind keine Standardoptionen und k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.\n
+--- ./jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -336,6 +336,7 @@
+     /* try auth without calling Authenticator. Used for transparent NTLM authentication */
+     private boolean tryTransparentNTLMServer = true;
+     private boolean tryTransparentNTLMProxy = true;
++    private boolean useProxyResponseCode = false;
+ 
+     /* Used by Windows specific code */
+     private Object authObj;
+@@ -2243,6 +2244,14 @@
+                         if (tryTransparentNTLMProxy) {
+                             tryTransparentNTLMProxy =
+                                     NTLMAuthenticationProxy.supportsTransparentAuth;
++                            /* If the platform supports transparent authentication
++                             * then normally it's ok to do transparent auth to a proxy
++                             * because we generally trust proxies (chosen by the user)
++                             * But not in the case of 305 response where the server
++                             * chose it. */
++                            if (tryTransparentNTLMProxy && useProxyResponseCode) {
++                                tryTransparentNTLMProxy = false;
++                            }
+                         }
+                         a = null;
+                         if (tryTransparentNTLMProxy) {
+@@ -2614,6 +2623,10 @@
+             requests.set(0, method + " " + getRequestURI()+" "  +
+                              httpVersion, null);
+             connected = true;
++            // need to remember this in case NTLM proxy authentication gets
++            // used. We can't use transparent authentication when user
++            // doesn't know about proxy.
++            useProxyResponseCode = true;
+         } else {
+             // maintain previous headers, just change the name
+             // of the file we're getting
+--- ./jdk/src/share/classes/sun/rmi/transport/Transport.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/rmi/transport/Transport.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -37,6 +37,10 @@
+ import java.rmi.server.RemoteServer;
+ import java.rmi.server.ServerNotActiveException;
+ import java.security.AccessControlContext;
++import java.security.AccessController;
++import java.security.Permissions;
++import java.security.PrivilegedAction;
++import java.security.ProtectionDomain;
+ import sun.rmi.runtime.Log;
+ import sun.rmi.server.Dispatcher;
+ import sun.rmi.server.UnicastServerRef;
+@@ -68,6 +72,15 @@
+     /** ObjID for DGCImpl */
+     private static final ObjID dgcID = new ObjID(ObjID.DGC_ID);
+ 
++    /** AccessControlContext for setting context ClassLoader */
++    private static final AccessControlContext SETCCL_ACC;
++    static {
++        Permissions perms = new Permissions();
++        perms.add(new RuntimePermission("setContextClassLoader"));
++        ProtectionDomain[] pd = { new ProtectionDomain(null, perms) };
++        SETCCL_ACC = new AccessControlContext(pd);
++    }
++
+     /**
+      * Returns a Channel that generates connections to the
+      * endpoint ep. A Channel is an object that creates and
+@@ -117,6 +130,16 @@
+     protected abstract void checkAcceptPermission(AccessControlContext acc);
+ 
+     /**
++     * Sets the context class loader for the current thread.
++     */
++    private static void setContextClassLoader(ClassLoader ccl) {
++        AccessController.doPrivileged((PrivilegedAction)() -> {
++                Thread.currentThread().setContextClassLoader(ccl);
++                return null;
++            }, SETCCL_ACC);
++    }
++
++    /**
+      * Service an incoming remote call. When a message arrives on the
+      * connection indicating the beginning of a remote call, the
+      * threads are required to call the serviceCall method of
+@@ -164,11 +187,10 @@
+                     target.getAccessControlContext();
+                 ClassLoader ccl = target.getContextClassLoader();
+ 
+-                Thread t = Thread.currentThread();
+-                ClassLoader savedCcl = t.getContextClassLoader();
++                ClassLoader savedCcl = Thread.currentThread().getContextClassLoader();
+ 
+                 try {
+-                    t.setContextClassLoader(ccl);
++                    setContextClassLoader(ccl);
+                     currentTransport.set(this);
+                     try {
+                         java.security.AccessController.doPrivileged(
+@@ -183,7 +205,7 @@
+                         throw (IOException) pae.getException();
+                     }
+                 } finally {
+-                    t.setContextClassLoader(savedCcl);
++                    setContextClassLoader(savedCcl);
+                     currentTransport.set(null);
+                 }
+ 
+--- ./jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -49,6 +49,9 @@
+ import java.rmi.server.UID;
+ import java.security.AccessControlContext;
+ import java.security.AccessController;
++import java.security.Permissions;
++import java.security.PrivilegedAction;
++import java.security.ProtectionDomain;
+ import java.util.ArrayList;
+ import java.util.LinkedList;
+ import java.util.List;
+@@ -123,6 +126,14 @@
+     private static final ThreadLocal
+         threadConnectionHandler = new ThreadLocal<>();
+ 
++    /** an AccessControlContext with no permissions */
++    private static final AccessControlContext NOPERMS_ACC;
++    static {
++        Permissions perms = new Permissions();
++        ProtectionDomain[] pd = { new ProtectionDomain(null, perms) };
++        NOPERMS_ACC = new AccessControlContext(pd);
++    }
++
+     /** endpoints for this transport */
+     private final LinkedList epList;
+     /** number of objects exported on this transport */
+@@ -668,7 +679,10 @@
+                 t.setName("RMI TCP Connection(" +
+                           connectionCount.incrementAndGet() +
+                           ")-" + remoteHost);
+-                run0();
++                AccessController.doPrivileged((PrivilegedAction)() -> {
++                    run0();
++                    return null;
++                }, NOPERMS_ACC);
+             } finally {
+                 t.setName(name);
+             }
+--- ./jdk/src/share/classes/sun/security/jgss/GSSHeader.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/GSSHeader.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -270,6 +270,9 @@
+                 value <<= 8;
+                 value += 0x0ff & in.read();
+             }
++            if (value < 0) {
++                throw new IOException("Invalid length bytes");
++            }
+         }
+         return value;
+     }
+--- ./jdk/src/share/classes/sun/security/jgss/GSSNameImpl.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/GSSNameImpl.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -257,6 +257,10 @@
+                               ((0xFF & bytes[pos++]) << 16) |
+                               ((0xFF & bytes[pos++]) << 8) |
+                               (0xFF & bytes[pos++]));
++        if (mechPortionLen < 0 || pos > bytes.length - mechPortionLen) {
++             throw new GSSExceptionImpl(GSSException.BAD_NAME,
++                     "Exported name mech name is corrupted!");
++         }
+         byte[] mechPortion = new byte[mechPortionLen];
+         System.arraycopy(bytes, pos, mechPortion, 0, mechPortionLen);
+ 
+--- ./jdk/src/share/classes/sun/security/jgss/wrapper/GSSNameElement.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/wrapper/GSSNameElement.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -233,6 +233,9 @@
+                               ((0xFF & nameVal[pos++]) << 16) |
+                               ((0xFF & nameVal[pos++]) << 8) |
+                               (0xFF & nameVal[pos++]));
++        if (mechPortionLen < 0) {
++            throw new GSSException(GSSException.BAD_NAME);
++        }
+         byte[] mechPortion = new byte[mechPortionLen];
+         System.arraycopy(nameVal, pos, mechPortion, 0, mechPortionLen);
+         return mechPortion;
+--- ./jdk/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -122,7 +122,7 @@
+         } else {
+             type = read(4);
+         }
+-        length = read(4);
++        length = readLength4();
+         String[] result = new String[length + 1];
+         /*
+          * DCE includes the principal's realm in the count; the new format
+@@ -131,7 +131,7 @@
+         if (version == KRB5_FCC_FVNO_1)
+             length--;
+         for (int i = 0; i <= length; i++) {
+-            namelength = read(4);
++            namelength = readLength4();
+             if (namelength > MAXNAMELENGTH) {
+                 throw new IOException("Invalid name length in principal name.");
+             }
+@@ -183,7 +183,7 @@
+         keyType = read(2);
+         if (version == KRB5_FCC_FVNO_3)
+             read(2); /* keytype recorded twice in fvno 3 */
+-        keyLen = read(4);
++        keyLen = readLength4();
+         byte[] bytes = new byte[keyLen];
+         for (int i = 0; i < keyLen; i++) {
+             bytes[i] = (byte)read();
+@@ -209,12 +209,12 @@
+ 
+     HostAddress[] readAddr() throws IOException, KrbApErrException {
+         int numAddrs, addrType, addrLength;
+-        numAddrs = read(4);
++        numAddrs = readLength4();
+         if (numAddrs > 0) {
+             HostAddress[] addrs = new HostAddress[numAddrs];
+             for (int i = 0; i < numAddrs; i++) {
+                 addrType = read(2);
+-                addrLength = read(4);
++                addrLength = readLength4();
+                 if (!(addrLength == 4 || addrLength == 16)) {
+                     if (DEBUG) {
+                         System.out.println("Incorrect address format.");
+@@ -233,13 +233,13 @@
+ 
+     AuthorizationDataEntry[] readAuth() throws IOException {
+         int num, adtype, adlength;
+-        num = read(4);
++        num = readLength4();
+         if (num > 0) {
+             AuthorizationDataEntry[] auData = new AuthorizationDataEntry[num];
+             byte[] data = null;
+             for (int i = 0; i < num; i++) {
+                 adtype = read(2);
+-                adlength = read(4);
++                adlength = readLength4();
+                 data = new byte[adlength];
+                 for (int j = 0; j < adlength; j++) {
+                     data[j] = (byte)read();
+@@ -253,7 +253,7 @@
+ 
+     byte[] readData() throws IOException {
+         int length;
+-        length = read(4);
++        length = readLength4();
+         if (length == 0) {
+             return null;
+         } else {
+--- ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -151,43 +151,43 @@
+     synchronized void init(PrincipalName principal, String name)
+         throws IOException, KrbException {
+         primaryPrincipal = principal;
+-        CCacheOutputStream cos =
+-            new CCacheOutputStream(new FileOutputStream(name));
+-        version = KRB5_FCC_FVNO_3;
+-        cos.writeHeader(primaryPrincipal, version);
+-        cos.close();
++        try (FileOutputStream fos = new FileOutputStream(name);
++             CCacheOutputStream cos = new CCacheOutputStream(fos)) {
++            version = KRB5_FCC_FVNO_3;
++            cos.writeHeader(primaryPrincipal, version);
++        }
+         load(name);
+     }
+ 
+     synchronized void load(String name) throws IOException, KrbException {
+         PrincipalName p;
+-        CCacheInputStream cis =
+-            new CCacheInputStream(new FileInputStream(name));
+-        version = cis.readVersion();
+-        if (version == KRB5_FCC_FVNO_4) {
+-            tag = cis.readTag();
+-        } else {
+-            tag = null;
+-            if (version == KRB5_FCC_FVNO_1 || version == KRB5_FCC_FVNO_2) {
+-                cis.setNativeByteOrder();
++        try (FileInputStream fis = new FileInputStream(name);
++             CCacheInputStream cis = new CCacheInputStream(fis)) {
++            version = cis.readVersion();
++            if (version == KRB5_FCC_FVNO_4) {
++                tag = cis.readTag();
++            } else {
++                tag = null;
++                if (version == KRB5_FCC_FVNO_1 || version == KRB5_FCC_FVNO_2) {
++                    cis.setNativeByteOrder();
++                }
++            }
++            p = cis.readPrincipal(version);
++
++            if (primaryPrincipal != null) {
++                if (!(primaryPrincipal.match(p))) {
++                    throw new IOException("Primary principals don't match.");
++                }
++            } else
++                primaryPrincipal = p;
++            credentialsList = new Vector();
++            while (cis.available() > 0) {
++                Credentials cred = cis.readCred(version);
++                if (cred != null) {
++                    credentialsList.addElement(cred);
++                }
+             }
+         }
+-        p = cis.readPrincipal(version);
+-
+-        if (primaryPrincipal != null) {
+-            if (!(primaryPrincipal.match(p))) {
+-                throw new IOException("Primary principals don't match.");
+-            }
+-        } else
+-            primaryPrincipal = p;
+-        credentialsList = new Vector ();
+-        while (cis.available() > 0) {
+-            Credentials cred = cis.readCred(version);
+-            if (cred != null) {
+-                credentialsList.addElement(cred);
+-            }
+-        }
+-        cis.close();
+     }
+ 
+ 
+@@ -246,16 +246,16 @@
+      * Saves the credentials cache file to the disk.
+      */
+     public synchronized void save() throws IOException, Asn1Exception {
+-        CCacheOutputStream cos
+-            = new CCacheOutputStream(new FileOutputStream(cacheName));
+-        cos.writeHeader(primaryPrincipal, version);
+-        Credentials[] tmp = null;
+-        if ((tmp = getCredsList()) != null) {
+-            for (int i = 0; i < tmp.length; i++) {
+-                cos.addCreds(tmp[i]);
++        try (FileOutputStream fos = new FileOutputStream(cacheName);
++             CCacheOutputStream cos = new CCacheOutputStream(fos)) {
++            cos.writeHeader(primaryPrincipal, version);
++            Credentials[] tmp = null;
++            if ((tmp = getCredsList()) != null) {
++                for (int i = 0; i < tmp.length; i++) {
++                    cos.addCreds(tmp[i]);
++                }
+             }
+         }
+-        cos.close();
+     }
+ 
+     boolean match(String[] s1, String[] s2) {
+--- ./jdk/src/share/classes/sun/security/krb5/internal/util/KrbDataInputStream.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/krb5/internal/util/KrbDataInputStream.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -56,15 +56,33 @@
+     public KrbDataInputStream(InputStream is){
+         super(is);
+     }
++
++    /**
++     * Reads a length value which is represented in 4 bytes from
++     * this input stream. The value must be positive.
++     * @return the length value represented by this byte array.
++     * @throws IOException if there are not enough bytes or it represents
++     * a negative value
++     */
++    final public int readLength4() throws IOException {
++        int len = read(4);
++        if (len < 0) {
++            throw new IOException("Invalid encoding");
++        }
++        return len;
++    }
++
+     /**
+      * Reads up to the specific number of bytes from this input stream.
+      * @param num the number of bytes to be read.
+      * @return the int value of this byte array.
+-     * @exception IOException.
++     * @throws IOException if there are not enough bytes
+      */
+-    public int read(int num) throws IOException{
++    public int read(int num) throws IOException {
+         byte[] bytes = new byte[num];
+-        read(bytes, 0, num);
++        if (read(bytes, 0, num) != num) {
++            throw new IOException("Premature end of stream reached");
++        }
+         int result = 0;
+         for (int i = 0; i < num; i++) {
+             if (bigEndian) {
+--- ./jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -345,6 +345,13 @@
+             break;
+ 
+         case HandshakeMessage.ht_finished:
++            // A ChangeCipherSpec record must have been received prior to
++            // reception of the Finished message (RFC 5246, 7.4.9).
++            if (!receivedChangeCipherSpec()) {
++                fatalSE(Alerts.alert_handshake_failure,
++                        "Received Finished message before ChangeCipherSpec");
++            }
++
+             this.serverFinished(
+                 new Finished(protocolVersion, input, cipherSuite));
+             break;
+--- ./jdk/src/share/classes/sun/security/ssl/Handshaker.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/Handshaker.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -66,27 +66,27 @@
+     ProtocolVersion protocolVersion;
+ 
+     // the currently active protocol version during a renegotiation
+-    ProtocolVersion     activeProtocolVersion;
++    ProtocolVersion activeProtocolVersion;
+ 
+     // security parameters for secure renegotiation.
+-    boolean             secureRenegotiation;
+-    byte[]              clientVerifyData;
+-    byte[]              serverVerifyData;
++    boolean secureRenegotiation;
++    byte[] clientVerifyData;
++    byte[] serverVerifyData;
+ 
+     // Is it an initial negotiation  or a renegotiation?
+-    boolean                     isInitialHandshake;
++    boolean isInitialHandshake;
+ 
+     // List of enabled protocols
+-    private ProtocolList        enabledProtocols;
++    private ProtocolList enabledProtocols;
+ 
+     // List of enabled CipherSuites
+-    private CipherSuiteList     enabledCipherSuites;
++    private CipherSuiteList enabledCipherSuites;
+ 
+     // The endpoint identification protocol
+-    String              identificationProtocol;
++    String identificationProtocol;
+ 
+     // The cryptographic algorithm constraints
+-    private AlgorithmConstraints    algorithmConstraints = null;
++    private AlgorithmConstraints algorithmConstraints = null;
+ 
+     // Local supported signature and algorithms
+     Collection localSupportedSignAlgs;
+@@ -95,15 +95,13 @@
+     Collection peerSupportedSignAlgs;
+ 
+     /*
+-
+-    /*
+      * List of active protocols
+      *
+      * Active protocols is a subset of enabled protocols, and will
+      * contain only those protocols that have vaild cipher suites
+      * enabled.
+      */
+-    private ProtocolList       activeProtocols;
++    private ProtocolList activeProtocols;
+ 
+     /*
+      * List of active cipher suites
+@@ -111,39 +109,41 @@
+      * Active cipher suites is a subset of enabled cipher suites, and will
+      * contain only those cipher suites available for the active protocols.
+      */
+-    private CipherSuiteList    activeCipherSuites;
++    private CipherSuiteList activeCipherSuites;
+ 
+     // The server name indication and matchers
+-    List         serverNames =
+-                                    Collections.emptyList();
+-    Collection      sniMatchers =
+-                                    Collections.emptyList();
++    List serverNames = Collections.emptyList();
++    Collection sniMatchers = Collections.emptyList();
+ 
+-    private boolean             isClient;
+-    private boolean             needCertVerify;
++    private boolean isClient;
++    private boolean needCertVerify;
+ 
+-    SSLSocketImpl               conn = null;
+-    SSLEngineImpl               engine = null;
++    SSLSocketImpl conn = null;
++    SSLEngineImpl engine = null;
+ 
+-    HandshakeHash               handshakeHash;
+-    HandshakeInStream           input;
+-    HandshakeOutStream          output;
+-    int                         state;
+-    SSLContextImpl              sslContext;
+-    RandomCookie                clnt_random, svr_random;
+-    SSLSessionImpl              session;
++    HandshakeHash handshakeHash;
++    HandshakeInStream input;
++    HandshakeOutStream output;
++    int state;
++    SSLContextImpl sslContext;
++    RandomCookie clnt_random, svr_random;
++    SSLSessionImpl session;
+ 
+     // current CipherSuite. Never null, initially SSL_NULL_WITH_NULL_NULL
+-    CipherSuite         cipherSuite;
++    CipherSuite cipherSuite;
+ 
+     // current key exchange. Never null, initially K_NULL
+-    KeyExchange         keyExchange;
++    KeyExchange keyExchange;
+ 
+-    /* True if this session is being resumed (fast handshake) */
+-    boolean             resumingSession;
++    // True if this session is being resumed (fast handshake)
++    boolean resumingSession;
+ 
+-    /* True if it's OK to start a new SSL session */
+-    boolean             enableNewSession;
++    // True if it's OK to start a new SSL session
++    boolean enableNewSession;
++
++    // True if session keys have been calculated and the caller may receive
++    // and process a ChangeCipherSpec message
++    private boolean sessKeysCalculated;
+ 
+     // Whether local cipher suites preference should be honored during
+     // handshaking?
+@@ -176,7 +176,7 @@
+     // here instead of using this lock.  Consider changing.
+     private Object thrownLock = new Object();
+ 
+-    /* Class and subclass dynamic debugging support */
++    // Class and subclass dynamic debugging support
+     static final Debug debug = Debug.getInstance("ssl");
+ 
+     // By default, disable the unsafe legacy session renegotiation
+@@ -253,6 +253,7 @@
+         this.serverVerifyData = serverVerifyData;
+         enableNewSession = true;
+         invalidated = false;
++        sessKeysCalculated = false;
+ 
+         setCipherSuite(CipherSuite.C_NULL);
+         setEnabledProtocols(enabledProtocols);
+@@ -359,6 +360,14 @@
+         }
+     }
+ 
++    final boolean receivedChangeCipherSpec() {
++        if (conn != null) {
++            return conn.receivedChangeCipherSpec();
++        } else {
++            return engine.receivedChangeCipherSpec();
++        }
++    }
++
+     String getEndpointIdentificationAlgorithmSE() {
+         SSLParameters paras;
+         if (conn != null) {
+@@ -491,7 +500,9 @@
+ 
+         if (activeProtocols.collection().isEmpty() ||
+                 activeProtocols.max.v == ProtocolVersion.NONE.v) {
+-            throw new SSLHandshakeException("No appropriate protocol");
++            throw new SSLHandshakeException(
++                    "No appropriate protocol (protocol is disabled or " +
++                    "cipher suites are inappropriate)");
+         }
+ 
+         if (activeCipherSuites == null) {
+@@ -669,6 +680,16 @@
+         if (activeProtocols == null) {
+             ArrayList protocols = new ArrayList<>(4);
+             for (ProtocolVersion protocol : enabledProtocols.collection()) {
++                if (!algorithmConstraints.permits(
++                        EnumSet.of(CryptoPrimitive.KEY_AGREEMENT),
++                        protocol.name, null)) {
++                    if (debug != null && Debug.isOn("verbose")) {
++                        System.out.println(
++                            "Ignoring disabled protocol: " + protocol);
++                    }
++
++                    continue;
++                }
+                 boolean found = false;
+                 for (CipherSuite suite : enabledCipherSuites.collection()) {
+                     if (suite.isAvailable() && suite.obsoleted > protocol.v &&
+@@ -1212,6 +1233,10 @@
+             throw new ProviderException(e);
+         }
+ 
++        // Mark a flag that allows outside entities (like SSLSocket/SSLEngine)
++        // determine if a ChangeCipherSpec message could be processed.
++        sessKeysCalculated = true;
++
+         //
+         // Dump the connection keys as they're generated.
+         //
+@@ -1266,6 +1291,15 @@
+         }
+     }
+ 
++    /**
++     * Return whether or not the Handshaker has derived session keys for
++     * this handshake.  This is used for determining readiness to process
++     * an incoming ChangeCipherSpec message.
++     */
++    boolean sessionKeysCalculated() {
++        return sessKeysCalculated;
++    }
++
+     private static void printHex(HexDumpEncoder dump, byte[] bytes) {
+         if (bytes == null) {
+             System.out.println("(key bytes not available)");
+--- ./jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -25,6 +25,9 @@
+ 
+ package sun.security.ssl;
+ 
++import java.util.*;
++import java.security.CryptoPrimitive;
++
+ /**
+  * Type safe enum for an SSL/TLS protocol version. Instances are obtained
+  * using the static factory methods or by referencing the static members
+@@ -86,6 +89,11 @@
+     // Default version for hello messages (SSLv2Hello)
+     final static ProtocolVersion DEFAULT_HELLO = FIPS ? TLS10 : SSL30;
+ 
++    // Available protocols
++    //
++    // Including all supported protocols except the disabled ones.
++    final static Set availableProtocols;
++
+     // version in 16 bit MSB format as it appears in records and
+     // messages, i.e. 0x0301 for TLS 1.0
+     public final int v;
+@@ -96,6 +104,24 @@
+     // name used in JSSE (e.g. TLSv1 for TLS 1.0)
+     final String name;
+ 
++    // Initialize the available protocols.
++    static {
++        Set protocols = new HashSet<>(5);
++
++        ProtocolVersion[] pvs = new ProtocolVersion[] {
++                SSL20Hello, SSL30, TLS10, TLS11, TLS12};
++        for (ProtocolVersion p : pvs) {
++            if (SSLAlgorithmConstraints.DEFAULT_SSL_ONLY.permits(
++                    EnumSet.of(CryptoPrimitive.KEY_AGREEMENT),
++                    p.name, null)) {
++                protocols.add(p);
++            }
++        }
++
++        availableProtocols =
++                Collections.unmodifiableSet(protocols);
++    }
++
+     // private
+     private ProtocolVersion(int v, String name) {
+         this.v = v;
+--- ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -55,6 +55,14 @@
+ 
+     private boolean enabledX509DisabledAlgConstraints = true;
+ 
++    // the default algorithm constraints
++    final static AlgorithmConstraints DEFAULT =
++                        new SSLAlgorithmConstraints(null);
++
++    // the default SSL only algorithm constraints
++    final static AlgorithmConstraints DEFAULT_SSL_ONLY =
++                        new SSLAlgorithmConstraints((SSLSocket)null, false);
++
+     SSLAlgorithmConstraints(AlgorithmConstraints algorithmConstraints) {
+         userAlgConstraints = algorithmConstraints;
+     }
+--- ./jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -52,10 +52,6 @@
+     private X509TrustManager trustManager;
+     private SecureRandom secureRandom;
+ 
+-    // The default algrithm constraints
+-    private AlgorithmConstraints defaultAlgorithmConstraints =
+-                                 new SSLAlgorithmConstraints(null);
+-
+     // supported and default protocols
+     private ProtocolList defaultServerProtocolList;
+     private ProtocolList defaultClientProtocolList;
+@@ -350,7 +346,7 @@
+                 if (suite.isAvailable() &&
+                         suite.obsoleted > protocols.min.v &&
+                         suite.supported <= protocols.max.v) {
+-                    if (defaultAlgorithmConstraints.permits(
++                    if (SSLAlgorithmConstraints.DEFAULT.permits(
+                             EnumSet.of(CryptoPrimitive.KEY_AGREEMENT),
+                             suite.name, null)) {
+                         suites.add(suite);
+@@ -431,11 +427,16 @@
+      */
+     private abstract static class AbstractSSLContext extends SSLContextImpl {
+         // parameters
+-        private final static SSLParameters defaultServerSSLParams;
+-        private final static SSLParameters supportedSSLParams;
++        private static final SSLParameters defaultServerSSLParams;
++        private static final SSLParameters supportedSSLParams;
+ 
+         static {
++            // supported SSL parameters
+             supportedSSLParams = new SSLParameters();
++
++            // candidates for available protocols
++            ProtocolVersion[] candidates;
++
+             if (SunJSSE.isFIPS()) {
+                 supportedSSLParams.setProtocols(new String[] {
+                     ProtocolVersion.TLS10.name,
+@@ -443,7 +444,11 @@
+                     ProtocolVersion.TLS12.name
+                 });
+ 
+-                defaultServerSSLParams = supportedSSLParams;
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.TLS10,
++                    ProtocolVersion.TLS11,
++                    ProtocolVersion.TLS12
++                };
+             } else {
+                 supportedSSLParams.setProtocols(new String[] {
+                     ProtocolVersion.SSL20Hello.name,
+@@ -453,8 +458,18 @@
+                     ProtocolVersion.TLS12.name
+                 });
+ 
+-                defaultServerSSLParams = supportedSSLParams;
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.SSL20Hello,
++                    ProtocolVersion.SSL30,
++                    ProtocolVersion.TLS10,
++                    ProtocolVersion.TLS11,
++                    ProtocolVersion.TLS12
++                };
+             }
++
++            defaultServerSSLParams = new SSLParameters();
++            defaultServerSSLParams.setProtocols(
++                getAvailableProtocols(candidates).toArray(new String[0]));
+         }
+ 
+         @Override
+@@ -466,6 +481,22 @@
+         SSLParameters getSupportedSSLParams() {
+             return supportedSSLParams;
+         }
++
++        static List getAvailableProtocols(
++                ProtocolVersion[] protocolCandidates) {
++
++            List availableProtocols = Collections.emptyList();
++            if (protocolCandidates !=  null && protocolCandidates.length != 0) {
++                availableProtocols = new ArrayList<>(protocolCandidates.length);
++                for (ProtocolVersion p : protocolCandidates) {
++                    if (ProtocolVersion.availableProtocols.contains(p)) {
++                        availableProtocols.add(p.name);
++                    }
++                }
++            }
++
++            return availableProtocols;
++        }
+     }
+ 
+     /*
+@@ -474,21 +505,25 @@
+      * @see SSLContext
+      */
+     public static final class TLS10Context extends AbstractSSLContext {
+-        private final static SSLParameters defaultClientSSLParams;
++        private static final SSLParameters defaultClientSSLParams;
+ 
+         static {
++            // candidates for available protocols
++            ProtocolVersion[] candidates;
++            if (SunJSSE.isFIPS()) {
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.TLS10
++                };
++            } else {
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.SSL30,
++                    ProtocolVersion.TLS10
++                };
++            }
++
+             defaultClientSSLParams = new SSLParameters();
+-            if (SunJSSE.isFIPS()) {
+-                defaultClientSSLParams.setProtocols(new String[] {
+-                    ProtocolVersion.TLS10.name
+-                });
+-
+-            } else {
+-                defaultClientSSLParams.setProtocols(new String[] {
+-                    ProtocolVersion.SSL30.name,
+-                    ProtocolVersion.TLS10.name
+-                });
+-            }
++            defaultClientSSLParams.setProtocols(
++                getAvailableProtocols(candidates).toArray(new String[0]));
+         }
+ 
+         @Override
+@@ -503,23 +538,27 @@
+      * @see SSLContext
+      */
+     public static final class TLS11Context extends AbstractSSLContext {
+-        private final static SSLParameters defaultClientSSLParams;
++        private static final SSLParameters defaultClientSSLParams;
+ 
+         static {
++            // candidates for available protocols
++            ProtocolVersion[] candidates;
++            if (SunJSSE.isFIPS()) {
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.TLS10,
++                    ProtocolVersion.TLS11
++                };
++            } else {
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.SSL30,
++                    ProtocolVersion.TLS10,
++                    ProtocolVersion.TLS11
++                };
++            }
++
+             defaultClientSSLParams = new SSLParameters();
+-            if (SunJSSE.isFIPS()) {
+-                defaultClientSSLParams.setProtocols(new String[] {
+-                    ProtocolVersion.TLS10.name,
+-                    ProtocolVersion.TLS11.name
+-                });
+-
+-            } else {
+-                defaultClientSSLParams.setProtocols(new String[] {
+-                    ProtocolVersion.SSL30.name,
+-                    ProtocolVersion.TLS10.name,
+-                    ProtocolVersion.TLS11.name
+-                });
+-            }
++            defaultClientSSLParams.setProtocols(
++                getAvailableProtocols(candidates).toArray(new String[0]));
+         }
+ 
+         @Override
+@@ -534,25 +573,29 @@
+      * @see SSLContext
+      */
+     public static final class TLS12Context extends AbstractSSLContext {
+-        private final static SSLParameters defaultClientSSLParams;
++        private static final SSLParameters defaultClientSSLParams;
+ 
+         static {
++            // candidates for available protocols
++            ProtocolVersion[] candidates;
++            if (SunJSSE.isFIPS()) {
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.TLS10,
++                    ProtocolVersion.TLS11,
++                    ProtocolVersion.TLS12
++                };
++            } else {
++                candidates = new ProtocolVersion[] {
++                    ProtocolVersion.SSL30,
++                    ProtocolVersion.TLS10,
++                    ProtocolVersion.TLS11,
++                    ProtocolVersion.TLS12
++                };
++            }
++
+             defaultClientSSLParams = new SSLParameters();
+-            if (SunJSSE.isFIPS()) {
+-                defaultClientSSLParams.setProtocols(new String[] {
+-                    ProtocolVersion.TLS10.name,
+-                    ProtocolVersion.TLS11.name,
+-                    ProtocolVersion.TLS12.name
+-                });
+-
+-            } else {
+-                defaultClientSSLParams.setProtocols(new String[] {
+-                    ProtocolVersion.SSL30.name,
+-                    ProtocolVersion.TLS10.name,
+-                    ProtocolVersion.TLS11.name,
+-                    ProtocolVersion.TLS12.name
+-                });
+-            }
++            defaultClientSSLParams.setProtocols(
++                getAvailableProtocols(candidates).toArray(new String[0]));
+         }
+ 
+         @Override
+@@ -567,8 +610,8 @@
+      * @see SSLContext
+      */
+     private static class CustomizedSSLContext extends AbstractSSLContext {
+-        private final static String PROPERTY_NAME = "jdk.tls.client.protocols";
+-        private final static SSLParameters defaultClientSSLParams;
++        private static final String PROPERTY_NAME = "jdk.tls.client.protocols";
++        private static final SSLParameters defaultClientSSLParams;
+         private static IllegalArgumentException reservedException = null;
+ 
+         // Don't want a java.lang.LinkageError for illegal system property.
+@@ -578,60 +621,74 @@
+         // the provider service. Instead, let's handle the initialization
+         // exception in constructor.
+         static {
++            // candidates for available protocols
++            ProtocolVersion[] candidates;
++
+             String property = AccessController.doPrivileged(
+                     new GetPropertyAction(PROPERTY_NAME));
+-            defaultClientSSLParams = new SSLParameters();
+             if (property == null || property.length() == 0) {
+                 // the default enabled client TLS protocols
+                 if (SunJSSE.isFIPS()) {
+-                    defaultClientSSLParams.setProtocols(new String[] {
+-                        ProtocolVersion.TLS10.name,
+-                        ProtocolVersion.TLS11.name,
+-                        ProtocolVersion.TLS12.name
+-                    });
+-
++                    candidates = new ProtocolVersion[] {
++                        ProtocolVersion.TLS10,
++                        ProtocolVersion.TLS11,
++                        ProtocolVersion.TLS12
++                    };
+                 } else {
+-                    defaultClientSSLParams.setProtocols(new String[] {
+-                        ProtocolVersion.SSL30.name,
+-                        ProtocolVersion.TLS10.name,
+-                        ProtocolVersion.TLS11.name,
+-                        ProtocolVersion.TLS12.name
+-                    });
++                    candidates = new ProtocolVersion[] {
++                        ProtocolVersion.SSL30,
++                        ProtocolVersion.TLS10,
++                        ProtocolVersion.TLS11,
++                        ProtocolVersion.TLS12
++                    };
+                 }
+             } else {
+                 // remove double quote marks from beginning/end of the property
+-                if (property.charAt(0) == '"' &&
++                if (property.length() > 1 && property.charAt(0) == '"' &&
+                         property.charAt(property.length() - 1) == '"') {
+                     property = property.substring(1, property.length() - 1);
+                 }
+ 
+-                String[] protocols = property.split(",");
++                String[] protocols = null;
++                if (property != null && property.length() != 0) {
++                    protocols = property.split(",");
++                } else {
++                    reservedException = new IllegalArgumentException(
++                        "No protocol specified in " +
++                        PROPERTY_NAME + " system property");
++                    protocols = new String[0];
++                }
++
++                candidates = new ProtocolVersion[protocols.length];
+                 for (int i = 0; i < protocols.length; i++) {
+                     protocols[i] = protocols[i].trim();
+                     // Is it a supported protocol name?
+                     try {
+-                        ProtocolVersion.valueOf(protocols[i]);
++                        candidates[i] = ProtocolVersion.valueOf(protocols[i]);
+                     } catch (IllegalArgumentException iae) {
+                         reservedException = new IllegalArgumentException(
+-                                PROPERTY_NAME + ": " + protocols[i] +
+-                                " is not a standard SSL protocol name", iae);
++                            PROPERTY_NAME + ": " + protocols[i] +
++                            " is not a standard SSL/TLS protocol name", iae);
++                        break;
+                     }
+                 }
+ 
+                 if ((reservedException == null) && SunJSSE.isFIPS()) {
+-                    for (String protocol : protocols) {
+-                        if (ProtocolVersion.SSL20Hello.name.equals(protocol) ||
+-                                ProtocolVersion.SSL30.name.equals(protocol)) {
++                    for (ProtocolVersion protocolVersion : candidates) {
++                        if (ProtocolVersion.SSL20Hello.v == protocolVersion.v ||
++                                ProtocolVersion.SSL30.v == protocolVersion.v) {
+                             reservedException = new IllegalArgumentException(
+-                                    PROPERTY_NAME + ": " + protocol +
++                                    PROPERTY_NAME + ": " + protocolVersion +
+                                     " is not FIPS compliant");
+                         }
+                     }
+                 }
++            }
+ 
+-                if (reservedException == null) {
+-                    defaultClientSSLParams.setProtocols(protocols);
+-               }
++            defaultClientSSLParams = new SSLParameters();
++            if (reservedException == null) {
++                defaultClientSSLParams.setProtocols(
++                    getAvailableProtocols(candidates).toArray(new String[0]));
+             }
+         }
+ 
+--- ./jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -212,6 +212,11 @@
+     static final byte           clauth_required = 2;
+ 
+     /*
++     * Flag indicating that the engine has received a ChangeCipherSpec message.
++     */
++    private boolean             receivedCCS;
++
++    /*
+      * Flag indicating if the next record we receive MUST be a Finished
+      * message. Temporarily set during the handshake to ensure that
+      * a change cipher spec message is followed by a finished message.
+@@ -372,6 +377,7 @@
+          */
+         roleIsServer = true;
+         connectionState = cs_START;
++        receivedCCS = false;
+ 
+         // default server name indication
+         serverNames =
+@@ -1021,6 +1027,7 @@
+ 
+                     if (handshaker.invalidated) {
+                         handshaker = null;
++                        receivedCCS = false;
+                         // if state is cs_RENEGOTIATE, revert it to cs_DATA
+                         if (connectionState == cs_RENEGOTIATE) {
+                             connectionState = cs_DATA;
+@@ -1039,6 +1046,7 @@
+                         }
+                         handshaker = null;
+                         connectionState = cs_DATA;
++                        receivedCCS = false;
+ 
+                         // No handshakeListeners here.  That's a
+                         // SSLSocket thing.
+@@ -1078,13 +1086,25 @@
+                 case Record.ct_change_cipher_spec:
+                     if ((connectionState != cs_HANDSHAKE
+                                 && connectionState != cs_RENEGOTIATE)
+-                            || inputRecord.available() != 1
++                            || !handshaker.sessionKeysCalculated()
++                            || receivedCCS) {
++                        // For the CCS message arriving in the wrong state
++                        fatal(Alerts.alert_unexpected_message,
++                                "illegal change cipher spec msg, conn state = "
++                                + connectionState + ", handshake state = "
++                                + handshaker.state);
++                    } else if (inputRecord.available() != 1
+                             || inputRecord.read() != 1) {
++                        // For structural/content issues with the CCS
+                         fatal(Alerts.alert_unexpected_message,
+-                            "illegal change cipher spec msg, state = "
+-                            + connectionState);
++                                "Malformed change cipher spec msg");
+                     }
+ 
++                    // Once we've received CCS, update the flag.
++                    // If the remote endpoint sends it again in this handshake
++                    // we won't process it.
++                    receivedCCS = true;
++
+                     //
+                     // The first message after a change_cipher_spec
+                     // record MUST be a "Finished" handshake record,
+@@ -2120,6 +2140,14 @@
+         }
+     }
+ 
++    /*
++     * Returns a boolean indicating whether the ChangeCipherSpec message
++     * has been received for this handshake.
++     */
++    boolean receivedChangeCipherSpec() {
++        return receivedCCS;
++    }
++
+     /**
+      * Returns a printable representation of this end of the connection.
+      */
+--- ./jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -172,6 +172,12 @@
+     private volatile int        connectionState;
+ 
+     /*
++     * Flag indicating that the engine's handshaker has done the necessary
++     * steps so the engine may process a ChangeCipherSpec message.
++     */
++    private boolean             receivedCCS;
++
++    /*
+      * Flag indicating if the next record we receive MUST be a Finished
+      * message. Temporarily set during the handshake to ensure that
+      * a change cipher spec message is followed by a finished message.
+@@ -587,6 +593,7 @@
+          */
+         roleIsServer = isServer;
+         connectionState = cs_START;
++        receivedCCS = false;
+ 
+         /*
+          * default read and write side cipher and MAC support
+@@ -1045,6 +1052,7 @@
+ 
+                     if (handshaker.invalidated) {
+                         handshaker = null;
++                        receivedCCS = false;
+                         // if state is cs_RENEGOTIATE, revert it to cs_DATA
+                         if (connectionState == cs_RENEGOTIATE) {
+                             connectionState = cs_DATA;
+@@ -1060,6 +1068,7 @@
+                         handshakeSession = null;
+                         handshaker = null;
+                         connectionState = cs_DATA;
++                        receivedCCS = false;
+ 
+                         //
+                         // Tell folk about handshake completion, but do
+@@ -1107,13 +1116,24 @@
+                 case Record.ct_change_cipher_spec:
+                     if ((connectionState != cs_HANDSHAKE
+                                 && connectionState != cs_RENEGOTIATE)
+-                            || r.available() != 1
+-                            || r.read() != 1) {
++                            || !handshaker.sessionKeysCalculated()
++                            || receivedCCS) {
++                        // For the CCS message arriving in the wrong state
+                         fatal(Alerts.alert_unexpected_message,
+-                            "illegal change cipher spec msg, state = "
+-                            + connectionState);
++                                "illegal change cipher spec msg, conn state = "
++                                + connectionState + ", handshake state = "
++                                + handshaker.state);
++                    } else if (r.available() != 1 || r.read() != 1) {
++                        // For structural/content issues with the CCS
++                        fatal(Alerts.alert_unexpected_message,
++                                "Malformed change cipher spec msg");
+                     }
+ 
++                    // Once we've received CCS, update the flag.
++                    // If the remote endpoint sends it again in this handshake
++                    // we won't process it.
++                    receivedCCS = true;
++
+                     //
+                     // The first message after a change_cipher_spec
+                     // record MUST be a "Finished" handshake record,
+@@ -2550,6 +2570,14 @@
+         }
+     }
+ 
++    /*
++     * Returns a boolean indicating whether the ChangeCipherSpec message
++     * has been received for this handshake.
++     */
++    boolean receivedChangeCipherSpec() {
++        return receivedCCS;
++    }
++
+     //
+     // We allocate a separate thread to deliver handshake completion
+     // events.  This ensures that the notifications don't block the
+--- ./jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -287,6 +287,13 @@
+                 break;
+ 
+             case HandshakeMessage.ht_finished:
++                // A ChangeCipherSpec record must have been received prior to
++                // reception of the Finished message (RFC 5246, 7.4.9).
++                if (!receivedChangeCipherSpec()) {
++                    fatalSE(Alerts.alert_handshake_failure,
++                        "Received Finished message before ChangeCipherSpec");
++                }
++
+                 this.clientFinished(
+                     new Finished(protocolVersion, input, cipherSuite));
+                 break;
+--- ./jdk/src/share/classes/sun/security/tools/keytool/Resources_ja.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/tools/keytool/Resources_ja.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -248,7 +248,7 @@
+                  "\u65E2\u5B58\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D{0}\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]:  "},
+         {"Too.many.failures.try.later", "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u5F8C\u3067\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
+         {"Certification.request.stored.in.file.filename.",
+-                "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
++                "\u8A8D\u8A3C\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
+         {"Submit.this.to.your.CA", "\u3053\u308C\u3092CA\u306B\u63D0\u51FA\u3057\u3066\u304F\u3060\u3055\u3044"},
+         {"if.alias.not.specified.destalias.and.srckeypass.must.not.be.specified",
+             "\u5225\u540D\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u5225\u540D\u304A\u3088\u3073\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+--- ./jdk/src/share/classes/sun/security/util/DerIndefLenConverter.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/util/DerIndefLenConverter.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -156,12 +156,18 @@
+         }
+         if (isLongForm(lenByte)) {
+             lenByte &= LEN_MASK;
+-            if (lenByte > 4)
++            if (lenByte > 4) {
+                 throw new IOException("Too much data");
+-            if ((dataSize - dataPos) < (lenByte + 1))
++            }
++            if ((dataSize - dataPos) < (lenByte + 1)) {
+                 throw new IOException("Too little data");
+-            for (int i = 0; i < lenByte; i++)
++            }
++            for (int i = 0; i < lenByte; i++) {
+                 curLen = (curLen << 8) + (data[dataPos++] & 0xff);
++            }
++            if (curLen < 0) {
++                throw new IOException("Invalid length bytes");
++            }
+         } else {
+            curLen = (lenByte & LEN_MASK);
+         }
+@@ -188,10 +194,15 @@
+         }
+         if (isLongForm(lenByte)) {
+             lenByte &= LEN_MASK;
+-            for (int i = 0; i < lenByte; i++)
++            for (int i = 0; i < lenByte; i++) {
+                 curLen = (curLen << 8) + (data[dataPos++] & 0xff);
+-        } else
++            }
++            if (curLen < 0) {
++                throw new IOException("Invalid length bytes");
++            }
++        } else {
+             curLen = (lenByte & LEN_MASK);
++        }
+         writeLength(curLen);
+         writeValue(curLen);
+     }
+--- ./jdk/src/share/classes/sun/security/util/DerInputStream.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/util/DerInputStream.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -566,6 +566,10 @@
+                 value <<= 8;
+                 value += 0x0ff & in.read();
+             }
++            if (value < 0) {
++                throw new IOException("DerInputStream.getLength(): "
++                        + "Invalid length bytes");
++            }
+         }
+         return value;
+     }
+--- ./jdk/src/share/classes/sun/swing/FilePane.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/swing/FilePane.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -1979,20 +1979,24 @@
+             return false;
+         }
+ 
+-        if (f instanceof ShellFolder) {
+-            return f.canWrite();
+-        } else {
+-            if (usesShellFolder(getFileChooser())) {
+-                try {
+-                    return ShellFolder.getShellFolder(f).canWrite();
+-                } catch (FileNotFoundException ex) {
+-                    // File doesn't exist
+-                    return false;
++        try {
++            if (f instanceof ShellFolder) {
++                return f.canWrite();
++            } else {
++                if (usesShellFolder(getFileChooser())) {
++                    try {
++                        return ShellFolder.getShellFolder(f).canWrite();
++                    } catch (FileNotFoundException ex) {
++                        // File doesn't exist
++                        return false;
++                    }
++                } else {
++                    // Ordinary file
++                    return f.canWrite();
+                 }
+-            } else {
+-                // Ordinary file
+-                return f.canWrite();
+             }
++        } catch (SecurityException e) {
++            return false;
+         }
+     }
+ 
+--- ./jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -81,11 +81,7 @@
+         setBackground(bgColor);
+         FileSystemView fsv = fc.getFileSystemView();
+ 
+-        files = AccessController.doPrivileged(new PrivilegedAction() {
+-            public File[] run() {
+-                return (File[]) ShellFolder.get("fileChooserShortcutPanelFolders");
+-            }
+-        });
++        files = (File[]) ShellFolder.get("fileChooserShortcutPanelFolders");
+ 
+         buttons = new JToggleButton[files.length];
+         buttonGroup = new ButtonGroup();
+--- ./jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -769,16 +769,9 @@
+                 fireIntervalRemoved(this, 0, oldSize);
+             }
+ 
+-            File[] baseFolders;
+-            if (useShellFolder) {
+-                baseFolders = AccessController.doPrivileged(new PrivilegedAction() {
+-                    public File[] run() {
+-                        return (File[]) ShellFolder.get("fileChooserComboBoxFolders");
+-                    }
+-                });
+-            } else {
+-                baseFolders = fsv.getRoots();
+-            }
++            File[] baseFolders = (useShellFolder)
++                    ? (File[]) ShellFolder.get("fileChooserComboBoxFolders")
++                    : fsv.getRoots();
+             directories.addAll(Arrays.asList(baseFolders));
+ 
+             // Get the canonical (full) path. This has the side
+--- ./jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -615,7 +615,9 @@
+                 //                 startTime=86400000   <= 24 hours
+                 // This:           startDayOfWeek=6
+                 //                 startTime=0
+-                // Below is the workaround, it probably slows down everyone a little
++                // Similar workaround needs to be applied to Africa/Cairo and
++                // its endDayOfWeek and endTime
++                // Below is the workarounds, it probably slows down everyone a little
+                 if (params[2] == 6 && params[3] == 0 &&
+                     (zoneId.equals("Asia/Amman") ||
+                      zoneId.equals("Asia/Gaza") ||
+@@ -623,6 +625,13 @@
+                     params[2] = 5;
+                     params[3] = 86400000;
+                 }
++                //endDayOfWeek and endTime workaround
++                if (params[7] == 6 && params[8] == 0 &&
++                    (zoneId.equals("Africa/Cairo"))) {
++                    params[7] = 5;
++                    params[8] = 86400000;
++                }
++
+             } else if (nTrans > 0) {  // only do this if there is something in table already
+                 if (lastyear < LASTYEAR) {
+                     // ZoneInfo has an ending entry for 2037
+--- ./jdk/src/share/classes/sun/util/resources/TimeZoneNames.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/TimeZoneNames.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -47,9 +47,9 @@
+         String ACT[] = new String[] {"Acre Time", "ACT",
+                                      "Acre Summer Time", "ACST",
+                                      "Acre Time", "ACT"};
+-        String ADELAIDE[] = new String[] {"Central Standard Time (South Australia)", "CST",
+-                                          "Central Summer Time (South Australia)", "CST",
+-                                          "Central Time (South Australia)", "CT"};
++        String ADELAIDE[] = new String[] {"Australian Central Standard Time (South Australia)", "ACST",
++                                          "Australian Central Daylight Time (South Australia)", "ACDT",
++                                          "Australian Central Time (South Australia)", "ACT"};
+         String AGT[] = new String[] {"Argentine Time", "ART",
+                                      "Argentine Summer Time", "ARST",
+                                      "Argentine Time", "ART"};
+@@ -71,12 +71,12 @@
+         String BDT[] = new String[] {"Bangladesh Time", "BDT",
+                                      "Bangladesh Summer Time", "BDST",
+                                      "Bangladesh Time", "BDT"};
+-        String BRISBANE[] = new String[] {"Eastern Standard Time (Queensland)", "EST",
+-                                          "Eastern Summer Time (Queensland)", "EST",
+-                                          "Eastern Time (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Central Standard Time (South Australia/New South Wales)", "CST",
+-                                             "Central Summer Time (South Australia/New South Wales)", "CST",
+-                                             "Central Time (South Australia/New South Wales)", "CT"};
++        String BRISBANE[] = new String[] {"Australian Eastern Standard Time (Queensland)", "AEST",
++                                          "Australian Eastern Daylight Time (Queensland)", "AEDT",
++                                          "Australian Eastern Time (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Australian Central Standard Time (South Australia/New South Wales)", "ACST",
++                                             "Australian Central Daylight Time (South Australia/New South Wales)", "ACDT",
++                                             "Australian Central Time (South Australia/New South Wales)", "ACT"};
+         String BRT[] = new String[] {"Brasilia Time", "BRT",
+                                      "Brasilia Summer Time", "BRST",
+                                      "Brasilia Time", "BRT"};
+@@ -110,9 +110,9 @@
+         String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+                                       "Cuba Daylight Time", "CDT",
+                                       "Cuba Time", "CT"};
+-        String DARWIN[] = new String[] {"Central Standard Time (Northern Territory)", "CST",
+-                                        "Central Summer Time (Northern Territory)", "CST",
+-                                        "Central Time (Northern Territory)", "CT"};
++        String DARWIN[] = new String[] {"Australian Central Standard Time (Northern Territory)", "ACST",
++                                        "Australian Central Daylight Time (Northern Territory)", "ACDT",
++                                        "Australian Central Time (Northern Territory)", "ACT"};
+         String DUBLIN[] = new String[] {"Greenwich Mean Time", "GMT",
+                                         "Irish Summer Time", "IST",
+                                         "Irish Time", "IT"};
+@@ -131,9 +131,9 @@
+         String EST[] = new String[] {"Eastern Standard Time", "EST",
+                                      "Eastern Daylight Time", "EDT",
+                                      "Eastern Time", "ET"};
+-        String EST_NSW[] = new String[] {"Eastern Standard Time (New South Wales)", "EST",
+-                                         "Eastern Summer Time (New South Wales)", "EST",
+-                                         "Eastern Time (New South Wales)", "ET"};
++        String EST_NSW[] = new String[] {"Australian Eastern Standard Time (New South Wales)", "AEST",
++                                         "Australian Eastern Daylight Time (New South Wales)", "AEDT",
++                                         "Australian Eastern Time (New South Wales)", "AET"};
+         String FET[] = new String[] {"Further-eastern European Time", "FET",
+                                      "Further-eastern European Summer Time", "FEST",
+                                      "Further-eastern European Time", "FET"};
+@@ -167,6 +167,9 @@
+         String IRT[] = new String[] {"Iran Standard Time", "IRST",
+                                      "Iran Daylight Time", "IRDT",
+                                      "Iran Time", "IRT"};
++        String IRKT[] = new String[] {"Irkutsk Time", "IRKT",
++                                      "Irkutsk Summer Time", "IRKST",
++                                      "Irkutsk Time", "IRKT"};
+         String ISRAEL[] = new String[] {"Israel Standard Time", "IST",
+                                         "Israel Daylight Time", "IDT",
+                                         "Israel Time", "IT"};
+@@ -176,11 +179,14 @@
+         String JST[] = new String[] {"Japan Standard Time", "JST",
+                                      "Japan Daylight Time", "JDT",
+                                      "Japan Time", "JT"};
++        String KRAT[] = new String[] {"Krasnoyarsk Time", "KRAT",
++                                      "Krasnoyarsk Summer Time", "KRAST",
++                                      "Krasnoyarsk Time", "KRAT"};
+         String KST[] = new String[] {"Korea Standard Time", "KST",
+                                      "Korea Daylight Time", "KDT",
+                                      "Korea Time", "KT"};
+         String LORD_HOWE[] = new String[] {"Lord Howe Standard Time", "LHST",
+-                                           "Lord Howe Summer Time", "LHST",
++                                           "Lord Howe Daylight Time", "LHDT",
+                                            "Lord Howe Time", "LHT"};
+         String MHT[] = new String[] {"Marshall Islands Time", "MHT",
+                                      "Marshall Islands Summer Time", "MHST",
+@@ -230,21 +236,15 @@
+         String SGT[] = new String[] {"Singapore Time", "SGT",
+                                      "Singapore Summer Time", "SGST",
+                                      "Singapore Time", "SGT"};
+-        String SLST[] = new String[] {"Greenwich Mean Time", "GMT",
+-                                      "Sierra Leone Summer Time", "SLST",
+-                                      "Sierra Leone Time", "SLT"};
+-        String TASMANIA[] = new String[] {"Eastern Standard Time (Tasmania)", "EST",
+-                                          "Eastern Summer Time (Tasmania)", "EST",
+-                                          "Eastern Time (Tasmania)", "ET"};
++        String TASMANIA[] = new String[] {"Australian Eastern Standard Time (Tasmania)", "AEST",
++                                          "Australian Eastern Daylight Time (Tasmania)", "AEDT",
++                                          "Australian Eastern Time (Tasmania)", "AET"};
+         String TMT[] = new String[] {"Turkmenistan Time", "TMT",
+                                      "Turkmenistan Summer Time", "TMST",
+                                      "Turkmenistan Time", "TMT"};
+         String ULAT[]= new String[] {"Ulaanbaatar Time", "ULAT",
+                                      "Ulaanbaatar Summer Time", "ULAST",
+                                      "Ulaanbaatar Time", "ULAT"};
+-        String WART[] = new String[] {"Western Argentine Time", "WART",
+-                                      "Western Argentine Summer Time", "WARST",
+-                                      "Western Argentine Time", "WART"};
+         String WAT[] = new String[] {"Western African Time", "WAT",
+                                      "Western African Summer Time", "WAST",
+                                      "Western African Time", "WAT"};
+@@ -254,27 +254,30 @@
+         String WIT[] = new String[] {"West Indonesia Time", "WIB",
+                                      "West Indonesia Summer Time", "WIST",
+                                      "West Indonesia Time", "WIB"};
+-        String WST_AUS[] = new String[] {"Western Standard Time (Australia)", "WST",
+-                                         "Western Summer Time (Australia)", "WST",
+-                                         "Western Time (Australia)", "WT"};
++        String WST_AUS[] = new String[] {"Australian Western Standard Time", "AWST",
++                                         "Australian Western Daylight Time", "AWDT",
++                                         "Australian Western Time", "AWT"};
+         String SAMOA[] = new String[] {"Samoa Standard Time", "SST",
+                                        "Samoa Daylight Time", "SDT",
+                                        "Samoa Time", "ST"};
+-        String WST_SAMOA[] = new String[] {"West Samoa Time", "WST",
++        String WST_SAMOA[] = new String[] {"West Samoa Standard Time", "WSST",
+                                            "West Samoa Daylight Time", "WSDT",
+                                            "West Samoa Time", "WST"};
+         String ChST[] = new String[] {"Chamorro Standard Time", "ChST",
+                                       "Chamorro Daylight Time", "ChDT",
+                                       "Chamorro Time", "ChT"};
+-        String VICTORIA[] = new String[] {"Eastern Standard Time (Victoria)", "EST",
+-                                          "Eastern Summer Time (Victoria)", "EST",
+-                                          "Eastern Time (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"Australian Eastern Standard Time (Victoria)", "AEST",
++                                          "Australian Eastern Daylight Time (Victoria)", "AEDT",
++                                          "Australian Eastern Time (Victoria)", "AET"};
+         String UTC[] = new String[] {"Coordinated Universal Time", "UTC",
+                                      "Coordinated Universal Time", "UTC",
+                                      "Coordinated Universal Time", "UTC"};
+         String UZT[] = new String[] {"Uzbekistan Time", "UZT",
+                                      "Uzbekistan Summer Time", "UZST",
+                                      "Uzbekistan Time", "UZT"};
++        String XJT[] = new String[] {"Xinjiang Standard Time", "XJT",
++                                     "Xinjiang Daylight Time", "XJDT",
++                                     "Xinjiang Time", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +339,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +440,7 @@
+                                               "Western Greenland Summer Time", "WGST",
+                                               "Western Greenland Time", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +487,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
+-                                                 "Metlakatla Daylight Time", "MeDT",
+-                                                 "Metlakatla Time", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Pierre & Miquelon Standard Time", "PMST",
+                                                "Pierre & Miquelon Daylight Time", "PMDT",
+@@ -555,8 +556,8 @@
+             {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville Time", "DDUT",
+                                                         "Dumont-d'Urville Summer Time", "DDUST",
+                                                         "Dumont-d'Urville Time", "DDUT"}},
+-            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
+-                                                   "Macquarie Island Summer Time", "MIST",
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Standard Time", "MIST",
++                                                   "Macquarie Island Daylight Time", "MIDT",
+                                                    "Macquarie Island Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"Mawson Time", "MAWT",
+                                                 "Mawson Summer Time", "MAWST",
+@@ -607,6 +608,7 @@
+                                           "Brunei Summer Time", "BNST",
+                                           "Brunei Time", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Choibalsan Time", "CHOT",
+                                               "Choibalsan Summer Time", "CHOST",
+                                               "Choibalsan Time", "CHOT"}},
+@@ -631,9 +633,7 @@
+             {"Asia/Hovd", new String[] {"Hovd Time", "HOVT",
+                                         "Hovd Summer Time", "HOVST",
+                                         "Hovd Time", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Irkutsk Time", "IRKT",
+-                                           "Irkutsk Summer Time", "IRKST",
+-                                           "Irkutsk Time", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"East Indonesia Time", "WIT",
+@@ -646,7 +646,7 @@
+                                              "Petropavlovsk-Kamchatski Summer Time", "PETST",
+                                              "Petropavlovsk-Kamchatski Time", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"Khandyga Time", "YAKT",
+@@ -654,9 +654,7 @@
+                                             "Khandyga Time", "YAKT"}},
+ 
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"Krasnoyarsk Time", "KRAT",
+-                                               "Krasnoyarsk Summer Time", "KRAST",
+-                                               "Krasnoyarsk Time", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -671,7 +669,7 @@
+                                           "Philippines Time", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Oral Time", "ORAT",
+                                         "Oral Summer Time", "ORAST",
+@@ -697,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -709,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Ust-Nera Time", "VLAT",
+                                             "Ust-Nera Summer Time", "VLAST",
+                                             "Ust-Nera Time", "VLAT"}},
+@@ -751,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST",
+-                                              "Central Western Time (Australia)", "CWT"}},
++            {"Australia/Eucla", new String[] {"Australian Central Western Standard Time", "ACWST",
++                                              "Australian Central Western Daylight Time", "ACWDT",
++                                              "Australian Central Western Time", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -819,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -828,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -854,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Volgograd Time", "VOLT",
+-                                               "Volgograd Summer Time", "VOLST",
+-                                               "Volgograd Time", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -918,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Acre Normalzeit", "ACT",
+                                      "Acre Sommerzeit", "ACST",
+                                      "Acre Normalzeit", "ACT"};
+-        String ADELAIDE[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien)", "CST",
+-                                          "Zentrale Sommerzeit (S\u00FCdaustralien)", "CST",
+-                                          "Zentrale Zeitzone (S\u00FCdaustralien)", "CT"};
++        String ADELAIDE[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien)", "ACST",
++                                          "Zentrale Sommerzeit (S\u00FCdaustralien)", "ACDT",
++                                          "Zentrale Zeitzone (S\u00FCdaustralien)", "ACT"};
+         String AGT[] = new String[] {"Argentinische Zeit", "ART",
+                                      "Argentinische Sommerzeit", "ARST",
+                                      "Argentinische Zeit", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"Bangladesch Zeit", "BDT",
+                                      "Bangladesch Sommerzeit", "BDST",
+                                      "Bangladesch Zeit", "BDT"};
+-        String BRISBANE[] = new String[] {"\u00D6stliche Normalzeit (Queensland)", "EST",
+-                                          "\u00D6stliche Sommerzeit (Queensland)", "EST",
+-                                          "\u00D6stliche Zeitzone (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)", "CST",
+-                                             "Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)", "CST",
+-                                             "Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)", "CT"};
++        String BRISBANE[] = new String[] {"\u00D6stliche Normalzeit (Queensland)", "AEST",
++                                          "\u00D6stliche Sommerzeit (Queensland)", "AEDT",
++                                          "\u00D6stliche Zeitzone (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)", "ACST",
++                                             "Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)", "ACDT",
++                                             "Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)", "ACT"};
+         String BRT[] = new String[] {"Brasilianische Zeit", "BRT",
+                                      "Brasilianische Sommerzeit", "BRST",
+                                      "Brasilianische Zeit", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"Kubanische Normalzeit", "CST",
+                                       "Kubanische Sommerzeit", "CDT",
+                                       "Kubanische Normalzeit", "CT"};
+-        String DARWIN[] = new String[] {"Zentrale Normalzeit (Northern Territory)", "CST",
+-                                        "Zentrale Sommerzeit (Northern Territory)", "CST",
+-                                        "Zentrale Zeitzone (Northern Territory)", "CT"};
++        String DARWIN[] = new String[] {"Zentrale Normalzeit (Northern Territory)", "ACST",
++                                        "Zentrale Sommerzeit (Northern Territory)", "ACDT",
++                                        "Zentrale Zeitzone (Northern Territory)", "ACT"};
+         String DUBLIN[] = new String[] {"Greenwich Zeit", "GMT",
+                                         "Irische Sommerzeit", "IST",
+                                         "Irische Zeit", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"\u00d6stliche Normalzeit", "EST",
+                                      "\u00d6stliche Sommerzeit", "EDT",
+                                      "\u00D6stliche Zeitzone", "ET"};
+-        String EST_NSW[] = new String[] {"\u00D6stliche Normalzeit (New South Wales)", "EST",
+-                                         "\u00D6stliche Sommerzeit (New South Wales)", "EST",
+-                                         "\u00D6stliche Zeitzone (New South Wales)", "ET"};
++        String EST_NSW[] = new String[] {"\u00D6stliche Normalzeit (New South Wales)", "AEST",
++                                         "\u00D6stliche Sommerzeit (New South Wales)", "AEDT",
++                                         "\u00D6stliche Zeitzone (New South Wales)", "AET"};
+         String FET[] = new String[] {"Kaliningrader Zeit", "FET",
+                                      "Kaliningrader Sommerzeit", "FEST",
+                                      "Kaliningrader Zeit", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"Indochina Zeit", "ICT",
+                                      "Indochina Sommerzeit", "ICST",
+                                      "Indochina Zeit", "ICT"};
++        String IRKT[] = new String[] {"Irkutsk Zeit", "IRKT",
++                                      "Irkutsk Sommerzeit", "IRKST",
++                                      "Irkutsk Zeit", "IRKT"};
+         String IRT[] = new String[] {"Iranische Normalzeit", "IRST",
+                                      "Iranische Sommerzeit", "IRDT",
+                                      "Iranische Zeit", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"Japanische Normalzeit", "JST",
+                                      "Japanische Sommerzeit", "JDT",
+                                      "Zeitzone f\u00FCr Japan", "JT"};
++        String KRAT[] = new String[] {"Krasnojarsker Zeit", "KRAT",
++                                      "Krasnojarsker Sommerzeit", "KRAST",
++                                      "Krasnojarsker Zeit", "KRAT"};
+         String KST[] = new String[] {"Koreanische Normalzeit", "KST",
+                                      "Koreanische Sommerzeit", "KDT",
+                                      "Zeitzone f\u00FCr Korea", "KT"};
+         String LORD_HOWE[] = new String[] {"Lord Howe Normalzeit", "LHST",
+-                                           "Lord Howe Sommerzeit", "LHST",
++                                           "Lord Howe Sommerzeit", "LHDT",
+                                            "Lord-Howe Normalzeit", "LHT"};
+         String MHT[] = new String[] {"Marshallinseln Zeit", "MHT",
+                                      "Marshallinseln Sommerzeit", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"Singapur Zeit", "SGT",
+                                      "Singapur Sommerzeit", "SGST",
+                                      "Singapur Zeit", "SGT"};
+-        String SLST[] = new String[] {"Greenwich Normalzeit", "GMT",
+-                                      "Sierra Leone Sommerzeit", "SLST",
+-                                      "Sierra Leone Zeit", "SLT"};
+-        String TASMANIA[] = new String[] {"\u00D6stliche Normalzeit (Tasmanien)", "EST",
+-                                          "\u00D6stliche Sommerzeit (Tasmanien)", "EST",
+-                                          "\u00D6stliche Zeitzone (Tasmanien)", "ET"};
++        String TASMANIA[] = new String[] {"\u00D6stliche Normalzeit (Tasmanien)", "AEST",
++                                          "\u00D6stliche Sommerzeit (Tasmanien)", "AEDT",
++                                          "\u00D6stliche Zeitzone (Tasmanien)", "AET"};
+         String TMT[] = new String[] {"Turkmenische Zeit", "TMT",
+                                      "Turkmenische Sommerzeit", "TMST",
+                                      "Turkmenische Zeit", "TMT"};
+         String ULAT[]= new String[] {"Ulaanbaatar Zeit", "ULAT",
+                                      "Ulaanbaatar Sommerzeit", "ULAST",
+                                      "Ulaanbaatar Zeit", "ULAT"};
+-        String WART[] = new String[] {"Westargentinische Zeit", "WART",
+-                                      "Westargentinische Sommerzeit", "WARST"};
+         String WAT[] = new String[] {"Westafrikanische Zeit", "WAT",
+                                      "Westafrikanische Sommerzeit", "WAST",
+                                      "Westafrikanische Zeit", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"Westindonesische Zeit", "WIB",
+                                      "Westindonesische Sommerzeit", "WIST",
+                                      "Westindonesische Zeit", "WIB"};
+-        String WST_AUS[] = new String[] {"Westliche Normalzeit (Australien)", "WST",
+-                                         "Westliche Sommerzeit (Australien)", "WST",
+-                                         "Westliche Zeitzone (Australien)", "WT"};
++        String WST_AUS[] = new String[] {"Westliche Normalzeit (Australien)", "AWST",
++                                         "Westliche Sommerzeit (Australien)", "AWDT",
++                                         "Westliche Zeitzone (Australien)", "AWT"};
+         String SAMOA[] = new String[] {"Samoa Normalzeit", "SST",
+                                        "Samoa Sommerzeit", "SDT",
+                                        "Zeitzone f\u00FCr Samoa", "ST"};
+-        String WST_SAMOA[] = new String[] {"West Samoa Zeit", "WST",
++        String WST_SAMOA[] = new String[] {"West Samoa Zeit", "WSST",
+                                            "West Samoa Sommerzeit", "WSDT",
+                                            "West Samoa Zeit", "WST"};
+         String ChST[] = new String[] {"Chamorro Normalzeit", "ChST",
+                       "Chamorro Sommerzeit", "ChDT",
+                       "Zeitzone f\u00FCr die Marianen", "ChT"};
+-        String VICTORIA[] = new String[] {"\u00D6stliche Normalzeit (Victoria)", "EST",
+-                                          "\u00D6stliche Sommerzeit (Victoria)", "EST",
+-                                          "\u00D6stliche Zeitzone (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"\u00D6stliche Normalzeit (Victoria)", "AEST",
++                                          "\u00D6stliche Sommerzeit (Victoria)", "AEDT",
++                                          "\u00D6stliche Zeitzone (Victoria)", "AET"};
+         String UTC[] = new String[] {"Koordinierte Universalzeit", "UTC",
+                                      "Koordinierte Universalzeit", "UTC",
+                                      "Koordinierte Universalzeit", "UTC"};
+         String UZT[] = new String[] {"Usbekistan Zeit", "UZT",
+                                      "Usbekistan Sommerzeit", "UZST",
+                                      "Usbekistan Zeit", "UZT"};
++        String XJT[] = new String[] {"Chinesische Normalzeit", "XJT",
++                                     "Chinesische Sommerzeit", "XJDT",
++                                     "Zeitzone f\u00FCr China", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST",
+                                               "Westgr\u00F6nl\u00E4ndische Zeit", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Metlakatla Normalzeit", "MeST",
+-                                                 "Metlakatla Sommerzeit", "MeDT",
+-                                                 "Metlakatla Normalzeit", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Pierre & Miquelon Normalzeit", "PMST",
+                                                "Pierre & Miquelon Sommerzeit", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "Brunei Sommerzeit", "BNST",
+                                           "Brunei Zeit", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Choibalsan Zeit", "CHOT",
+                                               "Choibalsan Sommerzeit", "CHOST",
+                                               "Choibalsan Zeit", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Hovd Zeit", "HOVT",
+                                         "Hovd Sommerzeit", "HOVST",
+                                         "Hovd Zeit", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Irkutsk Zeit", "IRKT",
+-                                           "Irkutsk Sommerzeit", "IRKST",
+-                                           "Irkutsk Zeit", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"Ostindonesische Zeit", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Petropawlowsk-Kamtschatkische Sommerzeit", "PETST",
+                                              "Petropawlowsk-Kamtschatkische Zeit", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"Chandyga Zeit", "YAKT",
+                                             "Chandyga Sommerzeit", "YAKST",
+                                             "Chandyga Zeit", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"Krasnojarsker Zeit", "KRAT",
+-                                               "Krasnojarsker Sommerzeit", "KRAST",
+-                                               "Krasnojarsker Zeit", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "Philippinische Zeit", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Oral Zeit", "ORAT",
+                                         "Oral Sommerzeit", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Ust-Nera Zeit", "VLAT",
+                                             "Ust-Nera Sommerzeit", "VLAST",
+                                             "Ust-Nera Zeit", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Zentral-Westliche Normalzeit (Australien)", "CWST",
+-                                              "Zentral-Westliche Sommerzeit (Australien)", "CWST",
+-                                              "Zentral-Westliche Normalzeit (Australien)", "CWT"}},
++            {"Australia/Eucla", new String[] {"Zentral-Westliche Normalzeit (Australien)", "ACWST",
++                                              "Zentral-Westliche Sommerzeit (Australien)", "ACWDT",
++                                              "Zentral-Westliche Normalzeit (Australien)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Wolgograder Zeit", "VOLT",
+-                                               "Wolgograder Sommerzeit", "VOLST",
+-                                               "Wolgograder Zeit", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Hora de Acre", "ACT",
+                                      "Hora de verano de Acre", "ACST",
+                                      "Hora de Acre", "ACT"};
+-        String ADELAIDE[] = new String[] {"Hora est\u00E1ndar Central (Sur de Australia)", "CST",
+-                                          "Hora de verano Central (Sur de Australia)", "CST",
+-                                          "Hora Central (Australia del Sur)", "CT"};
++        String ADELAIDE[] = new String[] {"Hora est\u00E1ndar Central (Sur de Australia)", "ACST",
++                                          "Hora de verano Central (Sur de Australia)", "ACDT",
++                                          "Hora Central (Australia del Sur)", "ACT"};
+         String AGT[] = new String[] {"Hora de Argentina", "ART",
+                                      "Hora de verano de Argentina", "ARST",
+                                      "Hora de Argentina", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"Hora de Bangladesh", "BDT",
+                                      "Hora de verano de Bangladesh", "BDST",
+                                      "Hora de Bangladesh", "BDT"};
+-        String BRISBANE[] = new String[] {"Hora est\u00E1ndar del Este (Queensland)", "EST",
+-                                          "Hora est\u00E1ndar de verano del Este (Queensland)", "EST",
+-                                          "Hora Oriental (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)", "CST",
+-                                             "Hora de verano Central (Sur de Australia/Nueva Gales del Sur)", "CST",
+-                                             "Hora Central (Australia del Sur/Nueva Gales del Sur)", "CT"};
++        String BRISBANE[] = new String[] {"Hora est\u00E1ndar del Este (Queensland)", "AEST",
++                                          "Hora est\u00E1ndar de verano del Este (Queensland)", "AEDT",
++                                          "Hora Oriental (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)", "ACST",
++                                             "Hora de verano Central (Sur de Australia/Nueva Gales del Sur)", "ACDT",
++                                             "Hora Central (Australia del Sur/Nueva Gales del Sur)", "ACT"};
+         String BRT[] = new String[] {"Hora de Brasil", "BRT",
+                                      "Hora de verano de Brasil", "BRST",
+                                      "Hora de Brasil", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"Hora est\u00e1ndar de Cuba", "CST",
+                                       "Hora de verano de Cuba", "CDT",
+                                       "Hora de Cuba", "CT"};
+-        String DARWIN[] = new String[] {"Hora est\u00E1ndar Central (territorio del Norte)", "CST",
+-                                        "Hora de verano Central (territorio del Norte)", "CST",
+-                                        "Hora Central (Territorio Septentrional)", "CT"};
++        String DARWIN[] = new String[] {"Hora est\u00E1ndar Central (territorio del Norte)", "ACST",
++                                        "Hora de verano Central (territorio del Norte)", "ACDT",
++                                        "Hora Central (Territorio Septentrional)", "ACT"};
+         String DUBLIN[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
+                                         "Hora de verano de Irlanda", "IST",
+                                         "Hora de Irlanda", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"Hora est\u00e1ndar Oriental", "EST",
+                                      "Hora de verano Oriental", "EDT",
+                                      "Hora Oriental", "ET"};
+-        String EST_NSW[] = new String[] {"Hora est\u00E1ndar Oriental (Nueva Gales del Sur)", "EST",
+-                                         "Hora de verano Oriental (Nueva Gales del Sur)", "EST",
+-                                         "Hora Oriental (Nueva Gales del Sur)", "ET"};
++        String EST_NSW[] = new String[] {"Hora est\u00E1ndar Oriental (Nueva Gales del Sur)", "AEST",
++                                         "Hora de verano Oriental (Nueva Gales del Sur)", "AEDT",
++                                         "Hora Oriental (Nueva Gales del Sur)", "AET"};
+         String FET[] = new String[] {"Hora de Europa m\u00E1s Oriental", "FET",
+                                      "Hora de verano de Europa m\u00E1s Oriental", "FEST",
+                                      "Hora de Europa m\u00E1s Oriental", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"Hora de Indochina", "ICT",
+                                      "Hora de verano de Indochina", "ICST",
+                                      "Hora de Indochina", "ICT"};
++        String IRKT[] = new String[] {"Hora de Irkutsk", "IRKT",
++                                      "Hora de verano de Irkutsk", "IRKST",
++                                      "Hora de Irkutsk", "IRKT"};
+         String IRT[] = new String[] {"Hora est\u00e1ndar de Ir\u00e1n", "IRST",
+                                      "Hora de verano de Ir\u00e1n", "IRDT",
+                                      "Hora de Ir\u00E1n", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"Hora est\u00e1ndar de Jap\u00f3n", "JST",
+                                      "Hora de verano de Jap\u00f3n", "JDT",
+                                      "Hora de Jap\u00F3n", "JT"};
++        String KRAT[] = new String[] {"Hora de Krasnoyarsk", "KRAT",
++                                      "Hora de verano de Krasnoyarsk", "KRAST",
++                                      "Hora de Krasnoyarsk", "KRAT"};
+         String KST[] = new String[] {"Hora est\u00e1ndar de Corea", "KST",
+                                      "Hora de verano de Corea", "KDT",
+                                      "Hora de Corea", "KT"};
+         String LORD_HOWE[] = new String[] {"Hora est\u00e1ndar de Lord Howe", "LHST",
+-                                           "Hora de verano de Lord Howe", "LHST",
++                                           "Hora de verano de Lord Howe", "LHDT",
+                                            "Hora de Lord Howe", "LHT"};
+         String MHT[] = new String[] {"Hora de las Islas Marshall", "MHT",
+                                      "Hora de verano de las Islas Marshall", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"Hora de Singapur", "SGT",
+                                      "Hora de verano de  Singapur", "SGST",
+                                      "Hora de Singapur", "SGT"};
+-        String SLST[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
+-                                      "Hora de verano de Sierra Leona", "SLST",
+-                                      "Horario de Sierra Leona", "SLT"};
+-        String TASMANIA[] = new String[] {"Hora est\u00E1ndar del Este (Tasmania)", "EST",
+-                                          "Hora de verano del Este (Tasmania)", "EST",
+-                                          "Hora Oriental (Tasmania)", "ET"};
++        String TASMANIA[] = new String[] {"Hora est\u00E1ndar del Este (Tasmania)", "AEST",
++                                          "Hora de verano del Este (Tasmania)", "AEDT",
++                                          "Hora Oriental (Tasmania)", "AET"};
+         String TMT[] = new String[] {"Hora de Turkmenist\u00e1n", "TMT",
+                                      "Hora de verano de Turkmenist\u00e1n", "TMST",
+                                      "Hora de Turkmenist\u00E1n", "TMT"};
+         String ULAT[]= new String[] {"Hora de Ulan Bator", "ULAT",
+                                      "Hora de verano de Ulan Bator", "ULAST",
+                                      "Hora de Ulan Bator", "ULAT"};
+-        String WART[] = new String[] {"Hora de Argentina Occidental", "WART",
+-                                      "Hora de verano de Argentina Occidental", "WARST"};
+         String WAT[] = new String[] {"Hora de \u00c1frica Occidental", "WAT",
+                                      "Hora de verano de \u00c1frica Occidental", "WAST",
+                                      "Hora de \u00C1frica Occidental", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"Hora de Indonesia Occidental", "WIB",
+                                      "Indonesia Hora de verano de Indonesia Occidental", "WIST",
+                                      "Hora de Indonesia Occidental", "WIB"};
+-        String WST_AUS[] = new String[] {"Hora est\u00E1ndar Occidental (Australia)", "WST",
+-                                         "Hora de verano Occidental (Australia)", "WST",
+-                                         "Hora Occidental (Australia)", "WT"};
++        String WST_AUS[] = new String[] {"Hora est\u00E1ndar Occidental (Australia)", "AWST",
++                                         "Hora de verano Occidental (Australia)", "AWDT",
++                                         "Hora Occidental (Australia)", "AWT"};
+         String SAMOA[] = new String[] {"Hora est\u00e1ndar de Samoa", "SST",
+                                        "Hora de verano de Samoa", "SDT",
+                                        "Hora de Samoa", "ST"};
+-        String WST_SAMOA[] = new String[] {"Hora de Samoa Occidental", "WST",
++        String WST_SAMOA[] = new String[] {"Hora de Samoa Occidental", "WSST",
+                                            "Hora de verano de Samoa Occidental", "WSDT",
+                                            "Hora de Samoa Occidental", "WST"};
+         String ChST[] = new String[] {"Hora est\u00e1ndar de Chamorro", "ChST",
+                                       "Hora de verano de Chamorro", "ChDT",
+                                       "Hora de Chamorro", "ChT"};
+-        String VICTORIA[] = new String[] {"Hora est\u00E1ndar del Este (Victoria)", "EST",
+-                                          "Hora de verano del Este (Victoria)", "EST",
+-                                          "Hora Oriental (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"Hora est\u00E1ndar del Este (Victoria)", "AEST",
++                                          "Hora de verano del Este (Victoria)", "AEDT",
++                                          "Hora Oriental (Victoria)", "AET"};
+         String UTC[] = new String[] {"Hora Universal Coordinada", "UTC",
+                                      "Hora Universal Coordinada", "UTC",
+                                      "Hora Universal Coordinada", "UTC"};
+         String UZT[] = new String[] {"Hora de Uzbekist\u00e1n", "UZT",
+                                      "Hora de verano de Uzbekist\u00e1n", "UZST",
+                                      "Hora de Uzbekist\u00E1n", "UZT"};
++        String XJT[] = new String[] {"Hora est\u00e1ndar de China", "XJT",
++                                     "Hora de verano de China", "XJDT",
++                                     "Hora de China", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "Hora de verano de Groenlandia Occidental", "WGST",
+                                               "Hora de Groenlandia Occidental", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Hora de Metlakatla", "MeST",
+-                                                 "Hora de verano de Metlakatla", "MeDT",
+-                                                 "Metlakatla Time", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Hora est\u00e1ndar de Pierre & Miquelon", "PMST",
+                                                "Hora de verano de Pierre & Miquelon", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "Hora de verano de Brunei", "BNST",
+                                           "Hora de Brunei", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Hora de Choibalsan", "CHOT",
+                                               "Hora de verano de Choibalsan", "CHOST",
+                                               "Hora de Choibalsan", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Hora de Hovd", "HOVT",
+                                         "Hora de verano de Hovd", "HOVST",
+                                         "Hora de Hovd", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Hora de Irkutsk", "IRKT",
+-                                           "Hora de verano de Irkutsk", "IRKST",
+-                                           "Hora de Irkutsk", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"Hora de Indonesia Oriental", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Hora de verano de Petropavlovsk-Kamchatski", "PETST",
+                                              "Hora de Petropavlovsk-Kamchatski", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"Hora de Khandyga", "YAKT",
+                                             "Hora de verano de Khandyga", "YAKST",
+                                             "Hora de Khandyga", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"Hora de Krasnoyarsk", "KRAT",
+-                                               "Hora de verano de Krasnoyarsk", "KRAST",
+-                                               "Hora de Krasnoyarsk", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "Hora de Filipinas", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Hora de Uralsk", "ORAT",
+                                         "Hora de verano de Uralsk", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Hora de Ust-Nera", "VLAT",
+                                             "Hora de verano de Ust-Nera", "VLAST",
+                                             "Hora de Ust-Nera", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Hora est\u00E1ndar de Australia Central y Occidental", "CWST",
+-                                              "Hora est\u00E1ndar de verano de Australia Central y Occidental", "CWST",
+-                                              "Hora de Australia Central y Occidental", "CWT"}},
++            {"Australia/Eucla", new String[] {"Hora est\u00E1ndar de Australia Central y Occidental", "ACWST",
++                                              "Hora est\u00E1ndar de verano de Australia Central y Occidental", "ACWDT",
++                                              "Hora de Australia Central y Occidental", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Hora de Volgogrado", "VOLT",
+-                                               "Hora de verano de Volgogrado", "VOLST",
+-                                               "Hora de Volgogrado", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Heure de l'Acre", "ACT",
+                                      "Heure d'\u00e9t\u00e9 de l'Acre", "ACST",
+                                      "Heure de l'Acre", "ACT"};
+-        String ADELAIDE[] = new String[] {"Heure standard d'Australie centrale (Australie du sud)", "CST",
+-                                          "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)", "CST",
+-                                          "Centre (Australie-M\u00E9ridionale)", "CT"};
++        String ADELAIDE[] = new String[] {"Heure standard d'Australie centrale (Australie du sud)", "ACST",
++                                          "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)", "ACDT",
++                                          "Centre (Australie-M\u00E9ridionale)", "ACT"};
+         String AGT[] = new String[] {"Heure D'Argentine", "ART",
+                                      "Heure d'\u00e9t\u00e9 D'Argentine", "ARST",
+                                      "Heure d'Argentine", "ART"} ;
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"Heure du Bangladesh", "BDT",
+                                      "Heure d'\u00e9t\u00e9 du Bangladesh", "BDST",
+                                      "Heure du Bangladesh", "BDT"} ;
+-        String BRISBANE[] = new String[] {"Heure standard d'Australie orientale (Queensland)", "EST",
+-                                          "Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)", "EST",
+-                                          "C\u00F4te Est (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "CST",
+-                                             "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "CST",
+-                                             "Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)", "CT"};
++        String BRISBANE[] = new String[] {"Heure standard d'Australie orientale (Queensland)", "AEST",
++                                          "Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)", "AEDT",
++                                          "C\u00F4te Est (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "ACST",
++                                             "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "ACDT",
++                                             "Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)", "ACT"};
+         String BRT[] = new String[] {"Heure du Br\u00e9sil", "BRT",
+                                      "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST",
+                                      "Heure du Br\u00E9sil", "BRT"} ;
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"Heure standard de Cuba", "CST",
+                                       "Heure d'\u00e9t\u00e9 de Cuba", "CDT",
+                                       "Heure de Cuba", "CT"};
+-        String DARWIN[] = new String[] {"Heure standard d'Australie centrale (Territoire du Nord)", "CST",
+-                                        "Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)", "CST",
+-                                        "Centre (Territoire du Nord)", "CT"};
++        String DARWIN[] = new String[] {"Heure standard d'Australie centrale (Territoire du Nord)", "ACST",
++                                        "Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)", "ACDT",
++                                        "Centre (Territoire du Nord)", "ACT"};
+         String DUBLIN[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
+                                         "Heure d'\u00e9t\u00e9 irlandaise", "IST",
+                                         "Heure irlandaise", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"Heure normale de l'Est", "EST",
+                                      "Heure avanc\u00e9e de l'Est", "EDT",
+                                      "C\u00F4te Est", "ET"} ;
+-        String EST_NSW[] = new String[] {"Heure normale de l'Est (Nouvelle-Galles du Sud)", "EST",
+-                                         "Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)", "EST",
+-                                         "C\u00F4te Est (Nouvelle-Galles du Sud)", "ET"} ;
++        String EST_NSW[] = new String[] {"Heure normale de l'Est (Nouvelle-Galles du Sud)", "AEST",
++                                         "Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)", "AEDT",
++                                         "C\u00F4te Est (Nouvelle-Galles du Sud)", "AET"} ;
+         String FET[] = new String[] {"Heure d'Europe de l'Est UTC+3", "FET",
+                                      "Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3", "FEST",
+                                      "Heure d'Europe de l'Est UTC+3", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"Heure d'Indochine", "ICT",
+                                      "Heure d'\u00e9t\u00e9 d'Indochine", "ICST",
+                                      "Heure d'Indochine", "ICT"} ;
++        String IRKT[] = new String[] {"Heure d'Irkutsk", "IRKT",
++                                      "Heure d'\u00e9t\u00e9 d'Irkutsk", "IRKST",
++                                      "Heure d'Irkutsk", "IRKT"};
+         String IRT[] = new String[] {"Heure normale d'Iran", "IRST",
+                                      "Heure avanc\u00e9e d'Iran", "IRDT",
+                                      "Heure d'Iran", "IRT"} ;
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"Heure normale du Japon", "JST",
+                                      "Heure avanc\u00e9e du Japon", "JDT",
+                                      "Japon", "JT"} ;
++        String KRAT[] = new String[] {"Heure de Krasno\u00efarsk", "KRAT",
++                                      "Heure d'\u00e9t\u00e9 de Krasno\u00efarsk", "KRAST",
++                                      "Heure de Krasno\u00EFarsk", "KRAT"};
+         String KST[] = new String[] {"Heure normale de Cor\u00e9e", "KST",
+                                      "Heure avanc\u00e9e de Cor\u00e9e", "KDT",
+                                      "Cor\u00E9e", "KT"} ;
+         String LORD_HOWE[] = new String[] {"Heure standard de Lord Howe", "LHST",
+-                                           "Heure d'\u00e9t\u00e9 de Lord Howe", "LHST",
++                                           "Heure d'\u00e9t\u00e9 de Lord Howe", "LHDT",
+                                            "Heure de Lord Howe", "LHT"};
+         String MHT[] = new String[] {"Heure des Iles Marshall", "MHT",
+                                      "Heure d'\u00e9t\u00e9 des Iles Marshall", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"Heure de Singapour", "SGT",
+                                      "Heure d'\u00e9t\u00e9 de Singapour", "SGST",
+                                      "Heure de Singapour", "SGT"};
+-        String SLST[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
+-                                      "Heure d'\u00e9t\u00e9 de Sierra Leone", "SLST",
+-                                      "Heure de Sierra Leone", "SLT"};
+-        String TASMANIA[] = new String[] {"Heure standard d'Australie orientale (Tasmanie)", "EST",
+-                                          "Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)", "EST",
+-                                          "C\u00F4te Est (Tasmanie)", "ET"};
++        String TASMANIA[] = new String[] {"Heure standard d'Australie orientale (Tasmanie)", "AEST",
++                                          "Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)", "AEDT",
++                                          "C\u00F4te Est (Tasmanie)", "AET"};
+         String TMT[] = new String[] {"Heure du Turkm\u00e9nistan", "TMT",
+                                      "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST",
+                                      "Heure du Turkm\u00E9nistan", "TMT"} ;
+         String ULAT[]= new String[] {"Heure de l'Ulaanbaatar", "ULAT",
+                                      "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST",
+                                      "Heure de l'Ulaanbaatar", "ULAT"} ;
+-        String WART[] = new String[] {"Heure D'Argentine de l'Ouest", "WART",
+-                                      "Heure d'\u00e9t\u00e9 D'Argentine de l'Ouest", "WARST"} ;
+         String WAT[] = new String[] {"Heure d'Afrique de l'Ouest", "WAT",
+                                      "Heure d'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST",
+                                      "Heure d'Afrique de l'Ouest", "WAT"} ;
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"Heure de l'Indon\u00e9sie occidentale", "WIB",
+                                      "Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST",
+                                      "Heure de l'Indon\u00E9sie occidentale", "WIB"};
+-        String WST_AUS[] = new String[] {"Heure normale de l'Ouest (Australie)", "WST",
+-                                         "Heure d'\u00E9t\u00E9 de l'Ouest (Australie)", "WST",
+-                                         "Ouest (Australie)", "WT"} ;
++        String WST_AUS[] = new String[] {"Heure normale de l'Ouest (Australie)", "AWST",
++                                         "Heure d'\u00E9t\u00E9 de l'Ouest (Australie)", "AWDT",
++                                         "Ouest (Australie)", "AWT"} ;
+         String SAMOA[] = new String[] {"Heure standard de Samoa", "SST",
+                                        "Heure avanc\u00e9e de Samoa", "SDT",
+                                        "Samoa", "ST"};
+-        String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WST",
++        String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WSST",
+                                            "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT",
+                                            "Heure des Samoas occidentales", "WST"} ;
+         String ChST[] = new String[] {"Heure normale des \u00eeles Mariannes", "ChST",
+                       "Heure d'\u00e9t\u00e9 des \u00eeles Mariannes", "ChDT",
+                       "Chamorro", "ChT"};
+-        String VICTORIA[] = new String[] {"Heure standard d'Australie orientale (Victoria)", "EST",
+-                                          "Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)", "EST",
+-                                          "C\u00F4te Est (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"Heure standard d'Australie orientale (Victoria)", "AEST",
++                                          "Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)", "AEDT",
++                                          "C\u00F4te Est (Victoria)", "AET"};
+         String UTC[] = new String[] {"Temps universel coordonn\u00e9", "UTC",
+                                      "Temps universel coordonn\u00e9", "UTC",
+                                      "Temps universel coordonn\u00E9", "UTC"};
+         String UZT[] = new String[] {"Heure de l'Ouzb\u00e9kistan", "UZT",
+                                      "Heure d'\u00e9t\u00e9 de l'Ouzb\u00e9kistan", "UZST",
+                                      "Heure de l'Ouzb\u00E9kistan", "UZT"};
++        String XJT[] = new String[] {"Heure normale de Chine", "XJT",
++                                     "Heure avanc\u00e9e de Chine", "XJDT",
++                                     "Chine", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST",
+                                               "Heure du Groenland de l'Ouest", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Heure normale de Metlakatla", "MeST",
+-                                                 "Heure avanc\u00E9e de Metlakatla", "MeDT",
+-                                                 "Heure de Metlakatla", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Heure normale de Saint-Pierre et Miquelon", "PMST",
+                                                "Heure avanc\u00e9e de Saint-Pierre et Miquelon", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "Heure d'\u00e9t\u00e9 du Brunei", "BNST",
+                                           "Heure du Brunei", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Heure de Choibalsan", "CHOT",
+                                               "Heure d'\u00e9t\u00e9 de Choibalsan", "CHOST",
+                                               "Heure de Choibalsan", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Heure de Hovd", "HOVT",
+                                         "Heure d'\u00e9t\u00e9 de Hovd", "HOVST",
+                                         "Heure de Hovd", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Heure d'Irkutsk", "IRKT",
+-                                           "Heure d'\u00e9t\u00e9 d'Irkutsk", "IRKST",
+-                                           "Heure d'Irkutsk", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"Heure d'Indon\u00e9sie orientale", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Heure d'\u00e9t\u00e9 de Petropavlovsk-Kamchatski", "PETST",
+                                              "Heure de Petropavlovsk-Kamchatski", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"Heure de Khandyga", "YAKT",
+                                             "Heure d'\u00E9t\u00E9 de Khandyga", "YAKST",
+                                             "Heure de Khandyga", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"Heure de Krasno\u00efarsk", "KRAT",
+-                                               "Heure d'\u00e9t\u00e9 de Krasno\u00efarsk", "KRAST",
+-                                               "Heure de Krasno\u00EFarsk", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "Heure des Philippines", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Heure d'Oral", "ORAT",
+                                         "Heure d'\u00e9t\u00e9 d'Oral", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Heure d'Ust-Nera", "VLAT",
+                                             "Heure d'\u00E9t\u00E9 d'Ust-Nera", "VLAST",
+                                             "Heure d'Ust-Nera", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Heure standard de l'Australie occidentale (centre)", "CWST",
+-                                              "Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre)", "CWST",
+-                                              "Heure de l'Australie occidentale (centre)", "CWT"}},
++            {"Australia/Eucla", new String[] {"Heure standard de l'Australie occidentale (centre)", "ACWST",
++                                              "Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre)", "ACWDT",
++                                              "Heure de l'Australie occidentale (centre)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Heure de Volgograd", "VOLT",
+-                                               "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST",
+-                                               "Heure de Volgograd", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Ora di Acre", "ACT",
+                                      "Ora estiva di Acre", "ACST",
+                                      "Ora di Acre", "ACT"};
+-        String ADELAIDE[] = new String[] {"Ora standard centrale (Australia del Sud)", "CST",
+-                                          "Ora estiva centrale (Australia del Sud)", "CST",
+-                                          "Ora fuso centrale (Australia del Sud)", "CT"};
++        String ADELAIDE[] = new String[] {"Ora standard centrale (Australia del Sud)", "ACST",
++                                          "Ora estiva centrale (Australia del Sud)", "ACDT",
++                                          "Ora fuso centrale (Australia del Sud)", "ACT"};
+         String AGT[] = new String[] {"Ora dell'Argentina", "ART",
+                                      "Ora estiva dell'Argentina", "ARST",
+                                      "Ora dell'Argentina", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"Ora del Bangladesh", "BDT",
+                                      "Ora estiva del Bangladesh", "BDST",
+                                      "Ora del Bangladesh", "BDT"};
+-        String BRISBANE[] = new String[] {"Ora standard orientale (Queensland)", "EST",
+-                                          "Ora estiva orientale (Queensland)", "EST",
+-                                          "Ora fuso orientale (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)", "CST",
+-                                             "Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)", "CST",
+-                                             "Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)", "CT"};
++        String BRISBANE[] = new String[] {"Ora standard orientale (Queensland)", "AEST",
++                                          "Ora estiva orientale (Queensland)", "AEDT",
++                                          "Ora fuso orientale (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)", "ACST",
++                                             "Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)", "ACDT",
++                                             "Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)", "ACT"};
+         String BRT[] = new String[] {"Ora del Brasile", "BRT",
+                                      "Ora estiva del Brasile", "BRST",
+                                      "Ora di Brasilia", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"Ora solare Cuba", "CST",
+                                       "Ora legale Cuba", "CDT",
+                                       "Ora di Cuba", "CT"};
+-        String DARWIN[] = new String[] {"Ora standard centrale (Territori del Nord)", "CST",
+-                                        "Ora estiva centrale (Territori del Nord)", "CST",
+-                                        "Ora fuso centrale (Territori del Nord)", "CT"};
++        String DARWIN[] = new String[] {"Ora standard centrale (Territori del Nord)", "ACST",
++                                        "Ora estiva centrale (Territori del Nord)", "ACDT",
++                                        "Ora fuso centrale (Territori del Nord)", "ACT"};
+         String DUBLIN[] = new String[] {"Ora media di Greenwich", "GMT",
+                                         "Ora estiva irlandese", "IST",
+                                         "Ora irlandese", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"Ora solare USA orientale", "EST",
+                                      "Ora legale USA orientale", "EDT",
+                                      "Fuso orientale", "ET"};
+-        String EST_NSW[] = new String[] {"Ora standard dell'Australia orientale (Nuovo Galles del Sud)", "EST",
+-                                         "Ora estiva dell'Australia orientale (Nuovo Galles del Sud)", "EST",
+-                                         "Ora fuso orientale (Nuovo Galles del Sud)", "ET"};
++        String EST_NSW[] = new String[] {"Ora standard dell'Australia orientale (Nuovo Galles del Sud)", "AEST",
++                                         "Ora estiva dell'Australia orientale (Nuovo Galles del Sud)", "AEDT",
++                                         "Ora fuso orientale (Nuovo Galles del Sud)", "AET"};
+         String FET[] = new String[] {"Ora dei paesi europei pi\u00F9 orientali", "FET",
+                                      "Ora estiva dei paesi europei pi\u00F9 orientali", "FEST",
+                                      "Ora dei paesi europei pi\u00F9 orientali", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"Ora dell'Indocina", "ICT",
+                                      "Ora estiva dell'Indocina", "ICST",
+                                      "Ora dell'Indocina", "ICT"};
++        String IRKT[] = new String[] {"Ora di Irkutsk", "IRKT",
++                                      "Ora estiva di Irkutsk", "IRKST",
++                                      "Ora di Irkutsk", "IRKT"};
+         String IRT[] = new String[] {"Ora solare Iran", "IRST",
+                                      "Ora legale Iran", "IRDT",
+                                      "Ora Iran", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"Ora solare del Giappone", "JST",
+                                      "Ora legale del Giappone", "JDT",
+                                      "Ora Giappone", "JT"};
++        String KRAT[] = new String[] {"Ora di Krasnojarsk", "KRAT",
++                                      "Ora estiva di Krasnojarsk", "KRAST",
++                                      "Ora di Krasnojarsk", "KRAT"};
+         String KST[] = new String[] {"Ora solare della Corea", "KST",
+                                      "Ora legale della Corea", "KDT",
+                                      "Ora Corea", "KT"};
+         String LORD_HOWE[] = new String[] {"Ora standard di Lord Howe", "LHST",
+-                                           "Ora estiva di Lord Howe", "LHST",
++                                           "Ora estiva di Lord Howe", "LHDT",
+                                            "Ora di Lord Howe", "LHT"};
+         String MHT[] = new String[] {"Ora delle Isole Marshall", "MHT",
+                                      "Ora estiva delle Isole Marshall", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"Ora di Singapore", "SGT",
+                                      "Ora estiva di Singapore", "SGST",
+                                      "Ora di Singapore", "SGT"};
+-        String SLST[] = new String[] {"Ora media di Greenwich", "GMT",
+-                                      "Ora legale della Sierra Leone", "SLST",
+-                                      "Ora della Sierra Leone", "SLT"};
+-        String TASMANIA[] = new String[] {"Ora standard orientale (Tasmania)", "EST",
+-                                          "Ora estiva orientale (Tasmania)", "EST",
+-                                          "Ora fuso orientale (Tasmania)", "ET"};
++        String TASMANIA[] = new String[] {"Ora standard orientale (Tasmania)", "AEST",
++                                          "Ora estiva orientale (Tasmania)", "AEDT",
++                                          "Ora fuso orientale (Tasmania)", "AET"};
+         String TMT[] = new String[] {"Ora del Turkmenistan", "TMT",
+                                      "Ora estiva del Turkmenistan", "TMST",
+                                      "Ora del Turkmenistan", "TMT"};
+         String ULAT[]= new String[] {"Ora di Ulaanbaatar", "ULAT",
+                                      "Ora estiva di Ulaanbaatar", "ULAST",
+                                      "Ora di Ulaanbaatar", "ULAT"};
+-        String WART[] = new String[] {"Ora dell'Argentina occidentale", "WART",
+-                                      "Ora estiva dell'Argentina occidentale", "WARST"};
+         String WAT[] = new String[] {"Ora dell'Africa occidentale", "WAT",
+                                      "Ora estiva dell'Africa occidentale", "WAST",
+                                      "Ora dell'Africa occidentale", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"Ora dell'Indonesia occidentale", "WIB",
+                                      "Ora estiva dell'Indonesia occidentale", "WIST",
+                                      "Ora dell'Indonesia occidentale", "WIB"};
+-        String WST_AUS[] = new String[] {"Ora standard dell'Australia occidentale", "WST",
+-                                         "Ora estiva dell'Australia occidentale", "WST",
+-                                         "Ora Australia occidentale", "WT"};
++        String WST_AUS[] = new String[] {"Ora standard dell'Australia occidentale", "AWST",
++                                         "Ora estiva dell'Australia occidentale", "AWDT",
++                                         "Ora Australia occidentale", "AWT"};
+         String SAMOA[] = new String[] {"Ora standard di Samoa", "SST",
+                                        "Ora legale di Samoa", "SDT",
+                                        "Ora Samoa", "ST"};
+-        String WST_SAMOA[] = new String[] {"Ora di Samoa", "WST",
++        String WST_SAMOA[] = new String[] {"Ora di Samoa", "WSST",
+                                            "Ora estiva di Samoa", "WSDT",
+                                            "Ora di Samoa occidentale", "WST"};
+         String ChST[] = new String[] {"Ora standard di Chamorro", "ChST",
+                               "Ora legale di Chamorro", "ChDT",
+                               "Ora Chamorro", "ChT"};
+-        String VICTORIA[] = new String[] {"Ora standard orientale (Victoria)", "EST",
+-                                          "Ora estiva orientale (Victoria)", "EST",
+-                                          "Ora fuso orientale (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"Ora standard orientale (Victoria)", "AEST",
++                                          "Ora estiva orientale (Victoria)", "AEDT",
++                                          "Ora fuso orientale (Victoria)", "AET"};
+         String UTC[] = new String[] {"Tempo universale coordinato", "UTC",
+                                      "Tempo universale coordinato", "UTC",
+                                      "Tempo universale coordinato", "UTC"};
+         String UZT[] = new String[] {"Ora dell'Uzbekistan", "UZT",
+                                      "Ora estiva dell'Uzbekistan", "UZST",
+                                      "Ora dell'Uzbekistan", "UZT"};
++        String XJT[] = new String[] {"Ora solare della Cina", "XJT",
++                                     "Ora legale della Cina", "XJDT",
++                                     "Ora Cina", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "Ora estiva della Groenlandia occidentale", "WGST",
+                                               "Ora della Groenlandia occidentale", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Ora standard di Metlakatla", "MeST",
+-                                                 "Ora legale di Metlakatla", "MeDT",
+-                                                 "Ora di Metlakatla", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Ora solare di Saint-Pierre e Miquelon", "PMST",
+                                                "Ora legale di Saint-Pierre e Miquelon", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "Ora estiva del Brunei", "BNST",
+                                           "Ora del Brunei", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Ora di Choibalsan", "CHOT",
+                                               "Ora estiva di Choibalsan", "CHOST",
+                                               "Ora di Choibalsan", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Ora di Hovd", "HOVT",
+                                         "Ora estiva di Hovd", "HOVST",
+                                         "Ora di Hovd", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Ora di Irkutsk", "IRKT",
+-                                           "Ora estiva di Irkutsk", "IRKST",
+-                                           "Ora di Irkutsk", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"Ora dell'Indonesia orientale", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Ora estiva di Petropavlovsk-Kamchatski", "PETST",
+                                              "Ora di Petropavlovsk-Kamchatski", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Khandyga", new String[] {"Ora di Khandyga", "YAKT",
+                                             "Ora estiva di Khandyga", "YAKST",
+                                             "Ora di Khandyga", "YAKT"}},
+-            {"Asia/Krasnoyarsk", new String[] {"Ora di Krasnojarsk", "KRAT",
+-                                               "Ora estiva di Krasnojarsk", "KRAST",
+-                                               "Ora di Krasnojarsk", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "Ora delle Filippine", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Ora di Oral", "ORAT",
+                                         "Ora estiva di Oral", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Ora di Ust-Nera", "VLAT",
+                                             "Ora estiva di Ust-Nera", "VLAST",
+                                             "Ora di Ust-Nera", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Ora standard Australia centro-occidentale", "CWST",
+-                                              "Ora estiva Australia centro-occidentale", "CWST",
+-                                              "Ora Australia centro-occidentale", "CWT"}},
++            {"Australia/Eucla", new String[] {"Ora standard Australia centro-occidentale", "ACWST",
++                                              "Ora estiva Australia centro-occidentale", "ACWDT",
++                                              "Ora Australia centro-occidentale", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Ora di Volgograd", "VOLT",
+-                                               "Ora estiva di Volgograd", "VOLST",
+-                                               "Ora di Volgograd", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"\u30a2\u30af\u30ec\u6642\u9593", "ACT",
+                                      "\u30a2\u30af\u30ec\u590f\u6642\u9593", "ACST",
+                                      "\u30a2\u30af\u30ec\u6642\u9593", "ACT"};
+-        String ADELAIDE[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CST",
+-                                          "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CST",
+-                                          "\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CT"};
++        String ADELAIDE[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "ACST",
++                                          "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "ACDT",
++                                          "\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "ACT"};
+         String AGT[] = new String[] {"\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "ART",
+                                      "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "ARST",
+                                      "\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5\u6642\u9593", "BDT",
+                                      "\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5\u590f\u6642\u9593", "BDST",
+                                      "\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593", "BDT"};
+-        String BRISBANE[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "EST",
+-                                          "\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "EST",
+-                                          "\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CST",
+-                                             "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CST",
+-                                             "\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CT"};
++        String BRISBANE[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "AEST",
++                                          "\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "AEDT",
++                                          "\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "AET"};
++        String BROKEN_HILL[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "ACST",
++                                             "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "ACDT",
++                                             "\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "ACT"};
+         String BRT[] = new String[] {"\u30d6\u30e9\u30b8\u30eb\u6642\u9593", "BRT",
+                                      "\u30d6\u30e9\u30b8\u30eb\u590f\u6642\u9593", "BRST",
+                                      "\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"\u30ad\u30e5\u30fc\u30d0\u6a19\u6e96\u6642", "CST",
+                                       "\u30ad\u30e5\u30fc\u30d0\u590f\u6642\u9593", "CDT",
+                                       "\u30AD\u30E5\u30FC\u30D0\u6642\u9593", "CT"};
+-        String DARWIN[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CST",
+-                                        "\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CST",
+-                                        "\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CT"};
++        String DARWIN[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "ACST",
++                                        "\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "ACDT",
++                                        "\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "ACT"};
+         String DUBLIN[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
+                                         "\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u590f\u6642\u9593", "IST",
+                                         "\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642", "EST",
+                                      "\u6771\u90e8\u590f\u6642\u9593", "EDT",
+                                      "\u6771\u90E8\u6A19\u6E96\u6642", "ET"};
+-        String EST_NSW[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "EST",
+-                                         "\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "EST",
+-                                         "\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "ET"};
++        String EST_NSW[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "AEST",
++                                         "\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "AEDT",
++                                         "\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "AET"};
+         String FET[] = new String[] {"\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "FET",
+                                      "\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593", "FEST",
+                                      "\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"\u30a4\u30f3\u30c9\u30b7\u30ca\u6642\u9593", "ICT",
+                                      "\u30a4\u30f3\u30c9\u30b7\u30ca\u590f\u6642\u9593", "ICST",
+                                      "\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593", "ICT"};
++        String IRKT[] = new String[] {"\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u6642\u9593", "IRKT",
++                                      "\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "IRKST",
++                                      "\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593", "IRKT"};
+         String IRT[] = new String[] {"\u30a4\u30e9\u30f3\u6a19\u6e96\u6642", "IRST",
+                                      "\u30a4\u30e9\u30f3\u590f\u6642\u9593", "IRDT",
+                                      "\u30A4\u30E9\u30F3\u6642\u9593", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"\u65e5\u672c\u6a19\u6e96\u6642", "JST",
+                                      "\u65e5\u672c\u590f\u6642\u9593", "JDT",
+                                      "\u65E5\u672C\u6642\u9593", "JT"};
++        String KRAT[] = new String[] {"\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u6642\u9593", "KRAT",
++                                      "\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u590f\u6642\u9593", "KRAST",
++                                      "\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593", "KRAT"};
+         String KST[] = new String[] {"\u97d3\u56fd\u6a19\u6e96\u6642", "KST",
+                                      "\u97d3\u56fd\u590f\u6642\u9593", "KDT",
+                                      "\u97D3\u56FD\u6642\u9593", "KT"};
+         String LORD_HOWE[] = new String[] {"\u30ed\u30fc\u30c9\u30cf\u30a6\u5cf6\u6a19\u6e96\u6642", "LHST",
+-                                           "\u30ed\u30fc\u30c9\u30cf\u30a6\u5cf6\u590f\u6642\u9593", "LHST",
++                                           "\u30ed\u30fc\u30c9\u30cf\u30a6\u5cf6\u590f\u6642\u9593", "LHDT",
+                                            "\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593", "LHT"};
+         String MHT[] = new String[] {"\u30de\u30fc\u30b7\u30e3\u30eb\u5cf6\u6642\u9593", "MHT",
+                                      "\u30de\u30fc\u30b7\u30e3\u30eb\u5cf6\u590f\u6642\u9593", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u6642\u9593", "SGT",
+                                      "\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u590f\u6642\u9593", "SGST",
+                                      "\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593", "SGT"};
+-        String SLST[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
+-                                      "\u30b7\u30a8\u30e9\u30ec\u30aa\u30cd\u590f\u6642\u9593", "SLST",
+-                                      "\u30B7\u30A8\u30E9\u30EC\u30AA\u30CD\u6642\u9593", "SLT"};
+-        String TASMANIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "EST",
+-                                          "\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)", "EST",
+-                                          "\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "ET"};
++        String TASMANIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "AEST",
++                                          "\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)", "AEDT",
++                                          "\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "AET"};
+         String TMT[] = new String[] {"\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u6642\u9593", "TMT",
+                                      "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TMST",
+                                      "\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593", "TMT"};
+         String ULAT[]= new String[] {"\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u6642\u9593", "ULAT",
+                                      "\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u590f\u6642\u9593", "ULAST",
+                                      "\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593", "ULAT"};
+-        String WART[] = new String[] {"\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "WART",
+-                                      "\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "WARST"};
+         String WAT[] = new String[] {"\u897f\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "WAT",
+                                      "\u897f\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "WAST",
+                                      "\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WIB",
+                                      "\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "WIST",
+                                      "\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WIB"};
+-        String WST_AUS[] = new String[] {"\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WST",
+-                                         "\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WST",
+-                                         "\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WT"};
++        String WST_AUS[] = new String[] {"\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "AWST",
++                                         "\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "AWDT",
++                                         "\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "AWT"};
+         String SAMOA[] = new String[] {"\u30b5\u30e2\u30a2\u6a19\u6e96\u6642", "SST",
+                                        "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT",
+                                        "\u30B5\u30E2\u30A2\u6642\u9593", "ST"};
+-        String WST_SAMOA[] = new String[] {"\u897f\u30b5\u30e2\u30a2\u6642\u9593", "WST",
++        String WST_SAMOA[] = new String[] {"\u897f\u30b5\u30e2\u30a2\u6642\u9593", "WSST",
+                                            "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSDT",
+                                            "\u897F\u30B5\u30E2\u30A2\u6642\u9593", "WST"};
+         String ChST[] = new String[] {"\u30b0\u30a2\u30e0\u6a19\u6e96\u6642", "ChST",
+                                       "\u30b0\u30a2\u30e0\u590f\u6642\u9593", "ChDT",
+                                       "\u30C1\u30E3\u30E2\u30ED\u6642\u9593", "ChT"};
+-        String VICTORIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "EST",
+-                                          "\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)", "EST",
+-                                          "\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "ET"};
++        String VICTORIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "AEST",
++                                          "\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)", "AEDT",
++                                          "\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "AET"};
+         String UTC[] = new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
+                                      "\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
+                                      "\u5354\u5B9A\u4E16\u754C\u6642", "UTC"};
+         String UZT[] = new String[] {"\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "UZT",
+                                      "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "UZST",
+                                      "\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "UZT"};
++        String XJT[] = new String[] {"\u4e2d\u56fd\u6a19\u6e96\u6642", "XJT",
++                                     "\u4e2d\u56fd\u590f\u6642\u9593", "XJDT",
++                                     "\u4E2D\u56FD\u6642\u9593", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST",
+                                               "\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6A19\u6E96\u6642\u9593", "MeST",
+-                                                 "\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u590F\u6642\u9593", "MeDT",
+-                                                 "\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6642\u9593", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u6a19\u6e96\u6642", "PMST",
+                                                "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "\u30d6\u30eb\u30cd\u30a4\u590f\u6642\u9593", "BNST",
+                                           "\u30D6\u30EB\u30CD\u30A4\u6642\u9593", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"\u30c1\u30e7\u30a4\u30d0\u30eb\u30b5\u30f3\u6642\u9593", "CHOT",
+                                               "\u30c1\u30e7\u30a4\u30d0\u30eb\u30b5\u30f3\u590f\u6642\u9593", "CHOST",
+                                               "\u30C1\u30E7\u30A4\u30D0\u30EB\u30B5\u30F3\u6642\u9593", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"\u30db\u30d6\u30c9\u6642\u9593", "HOVT",
+                                         "\u30db\u30d6\u30c9\u590f\u6642\u9593", "HOVST",
+                                         "\u30DB\u30D6\u30C9\u6642\u9593", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u6642\u9593", "IRKT",
+-                                           "\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "IRKST",
+-                                           "\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WIT",
+@@ -646,16 +647,14 @@
+                                              "\u30da\u30c8\u30ed\u30d1\u30d6\u30ed\u30d5\u30b9\u30af\u30ab\u30e0\u30c1\u30e3\u30c4\u30ad\u30fc\u590f\u6642\u9593", "PETST",
+                                              "\u30DA\u30C8\u30ED\u30D1\u30D6\u30ED\u30D5\u30B9\u30AF\u30FB\u30AB\u30E0\u30C1\u30E3\u30C4\u30AD\u30FC\u6642\u9593", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593", "YAKT",
+                                             "\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u590F\u6642\u9593", "YAKST",
+                                             "\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u6642\u9593", "KRAT",
+-                                               "\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u590f\u6642\u9593", "KRAST",
+-                                               "\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"\u30aa\u30e9\u30eb\u6642\u9593", "ORAT",
+                                         "\u30aa\u30e9\u30eb\u590f\u6642\u9593", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593", "VLAT",
+                                             "\u30A6\u30B9\u30C1\u30CD\u30E9\u590F\u6642\u9593", "VLAST",
+                                             "\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWST",
+-                                              "\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWST",
+-                                              "\u4E2D\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWT"}},
++            {"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "ACWST",
++                                              "\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "ACWDT",
++                                              "\u4E2D\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u6642\u9593", "VOLT",
+-                                               "\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u590f\u6642\u9593", "VOLST",
+-                                               "\u30DC\u30EB\u30B4\u30B0\u30E9\u30FC\u30C9\u6642\u9593", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"\uc5d0\uc774\ucee4 \uc2dc\uac04", "ACT",
+                                      "\uc5d0\uc774\ucee4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ACST",
+                                      "\uc5d0\uc774\ucee4 \uc2dc\uac04", "ACT"};
+-        String ADELAIDE[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CST",
+-                                          "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CST",
+-                                          "\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CT"};
++        String ADELAIDE[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "ACST",
++                                          "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "ACDT",
++                                          "\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "ACT"};
+         String AGT[] = new String[] {"\uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "ART",
+                                      "\uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ARST",
+                                      "\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"\ubc29\uae00\ub77c\ub370\uc2dc \uc2dc\uac04", "BDT",
+                                      "\ubc29\uae00\ub77c\ub370\uc2dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BDST",
+                                      "\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC", "BDT"};
+-        String BRISBANE[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)", "EST",
+-                                          "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)", "EST",
+-                                          "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CST",
+-                                             "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CST",
+-                                             "\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CT"};
++        String BRISBANE[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)", "AEST",
++                                          "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)", "AEDT",
++                                          "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)", "AET"};
++        String BROKEN_HILL[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "ACST",
++                                             "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "ACDT",
++                                             "\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "ACT"};
+         String BRT[] = new String[] {"\ube0c\ub77c\uc9c8\ub9ac\uc544 \uc2dc\uac04", "BRT",
+                                      "\ube0c\ub77c\uc9c8\ub9ac\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BRST",
+                                      "\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"\ucfe0\ubc14 \ud45c\uc900\uc2dc", "CST",
+                                       "\ucfe0\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT",
+                                       "\uCFE0\uBC14 \uD45C\uC900\uC2DC", "CT"};
+-        String DARWIN[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "CST",
+-                                        "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)", "CST",
+-                                        "\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "CT"};
++        String DARWIN[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "ACST",
++                                        "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)", "ACDT",
++                                        "\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "ACT"};
+         String DUBLIN[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
+                                         "\uc544\uc77c\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IST",
+                                         "\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc", "EST",
+                                      "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EDT",
+                                      "\uB3D9\uBD80 \uD45C\uC900\uC2DC", "ET"};
+-        String EST_NSW[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "EST",
+-                                         "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "EST",
+-                                         "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "ET"};
++        String EST_NSW[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "AEST",
++                                         "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "AEDT",
++                                         "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "AET"};
+         String FET[] = new String[] {"\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC", "FET",
+                                      "\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "FEST",
+                                      "\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"\uc778\ub3c4\ucc28\uc774\ub098 \ubc18\ub3c4 \uc2dc\uac04", "ICT",
+                                      "\uc778\ub3c4\ucc28\uc774\ub098 \ubc18\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ICST",
+                                      "\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC", "ICT"};
++        String IRKT[] =  new String[] {"\uc774\ub974\ucfe0\uce20\ud06c \uc2dc\uac04", "IRKT",
++                                       "\uc774\ub974\ucfe0\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRKST",
++                                       "\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC", "IRKT"};
+         String IRT[] = new String[] {"\uc774\ub780 \ud45c\uc900\uc2dc", "IRST",
+                                      "\uc774\ub780 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRDT",
+                                      "\uC774\uB780 \uD45C\uC900\uC2DC", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"\uc77c\ubcf8 \ud45c\uc900\uc2dc", "JST",
+                                      "\uc77c\ubcf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "JDT",
+                                      "\uC77C\uBCF8 \uD45C\uC900\uC2DC", "JT"};
++        String KRAT[] = new String[] {"\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc2dc\uac04", "KRAT",
++                                      "\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KRAST",
++                                      "\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC", "KRAT"};
+         String KST[] = new String[] {"\ud55c\uad6d \ud45c\uc900\uc2dc", "KST",
+                                      "\ud55c\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KDT",
+                                      "\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC", "KT"};
+         String LORD_HOWE[] = new String[] {"\ub85c\ub4dc \ud558\uc6b0 \ud45c\uc900\uc2dc", "LHST",
+-                                           "\ub85c\ub4dc \ud558\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LHST",
++                                           "\ub85c\ub4dc \ud558\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LHDT",
+                                            "\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC", "LHT"};
+         String MHT[] = new String[] {"\ub9c8\uc15c\uc81c\ub3c4 \uc2dc\uac04", "MHT",
+                                      "\ub9c8\uc15c\uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"\uc2f1\uac00\ud3ec\ub974 \uc2dc\uac04", "SGT",
+                                      "\uc2f1\uac00\ud3ec\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SGST",
+                                      "\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC", "SGT"};
+-        String SLST[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
+-                                      "\uc2dc\uc5d0\ub77c\ub9ac\uc628 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SLST",
+-                                      "\uC2DC\uC5D0\uB77C\uB9AC\uC628 \uD45C\uC900\uC2DC", "SLT"};
+-        String TASMANIA[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "EST",
+-                                          "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "EST",
+-                                          "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "ET"};
++        String TASMANIA[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "AEST",
++                                          "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "AEDT",
++                                          "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "AET"};
+         String TMT[] = new String[] {"\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc2dc\uac04", "TMT",
+                                      "\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TMST",
+                                      "\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "TMT"};
+         String ULAT[]= new String[] {"\uc6b8\ub780\ubc14\ud0c0\ub974 \uc2dc\uac04", "ULAT",
+                                      "\uc6b8\ub780\ubc14\ud0c0\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ULAST",
+                                      "\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC", "ULAT"};
+-        String WART[] = new String[] {"\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "WART",
+-                                      "\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WARST"};
+         String WAT[] = new String[] {"\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "WAT",
+                                      "\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAST",
+                                      "\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WIB",
+                                      "\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WIST",
+                                      "\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WIB"};
+-        String WST_AUS[] = new String[] {"\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WST",
+-                                         "\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WST",
+-                                         "\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WT"};
++        String WST_AUS[] = new String[] {"\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "AWST",
++                                         "\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "AWDT",
++                                         "\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "AWT"};
+         String SAMOA[] = new String[] {"\uc0ac\ubaa8\uc544 \ud45c\uc900\uc2dc", "SST",
+                                        "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT",
+                                        "\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC", "ST"};
+-        String WST_SAMOA[] = new String[] {"\uc11c\uc0ac\ubaa8\uc544 \uc2dc\uac04", "WST",
++        String WST_SAMOA[] = new String[] {"\uc11c\uc0ac\ubaa8\uc544 \uc2dc\uac04", "WSST",
+                                            "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSDT",
+                                            "\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC", "WST"};
+         String ChST[] = new String[] {"\ucc28\ubaa8\ub85c \ud45c\uc900\uc2dc", "ChST",
+                                       "\ucc28\ubaa8\ub85c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ChDT",
+                                       "\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC", "ChT"};
+-        String VICTORIA[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "EST",
+-                                          "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)", "EST",
+-                                          "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "ET"};
++        String VICTORIA[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "AEST",
++                                          "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)", "AEDT",
++                                          "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "AET"};
+         String UTC[] = new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
+                                      "\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
+                                      "\uC9C0\uC5ED \uD45C\uC900\uC2DC", "UTC"};
+         String UZT[] = new String[] {"\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "UZT",
+                                      "\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UZST",
+                                      "\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "UZT"};
++        String XJT[] = new String[] {"\uc911\uad6d \ud45c\uc900\uc2dc", "XJT",
++                                     "\uc911\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "XJDT",
++                                     "\uC911\uAD6D \uD45C\uC900\uC2DC", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST",
+                                               "\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC", "MeST",
+-                                                 "\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MeDT",
+-                                                 "\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \ud45c\uc900\uc2dc", "PMST",
+                                                "\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "\ube0c\ub8e8\ub098\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BNST",
+                                           "\uBE0C\uB8E8\uB098\uC774 \uD45C\uC900\uC2DC", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Choibalsan \uc2dc\uac04", "CHOT",
+                                               "Choibalsan \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHOST",
+                                               "\uCD08\uC774\uBC1C\uC0B0 \uD45C\uC900\uC2DC", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Hovd \uc2dc\uac04", "HOVT",
+                                         "Hovd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HOVST",
+                                         "\uD638\uBE0C\uB4DC \uD45C\uC900\uC2DC", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"\uc774\ub974\ucfe0\uce20\ud06c \uc2dc\uac04", "IRKT",
+-                                            "\uc774\ub974\ucfe0\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRKST",
+-                                            "\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WIT",
+@@ -646,16 +647,14 @@
+                                             "\ud398\ud2b8\ub85c\ud30c\ube14\ub85c\ud504\uc2a4\ud06c-\uce84\ucc28\uce20\ud0a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PETST",
+                                             "\uD398\uD2B8\uB85C\uD30C\uBE0C\uB85C\uD504\uC2A4\uD06C-\uCE84\uCC28\uCE20\uD0A4 \uD45C\uC900\uC2DC", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC", "YAKT",
+                                             "\uD55C\uB514\uAC00 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "YAKST",
+                                             "\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc2dc\uac04", "KRAT",
+-                                               "\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KRAST",
+-                                               "\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Oral \ud45c\uc900\uc2dc", "ORAT",
+                                         "Oral \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC", "VLAT",
+                                             "\uC6B0\uC2A4\uD2F0\uB124\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "VLAST" ,
+                                             "\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWST",
+-                                              "\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWST",
+-                                              "\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWT"}},
++            {"Australia/Eucla", new String[] {"\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "ACWST",
++                                              "\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "ACWDT",
++                                              "\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"\ubcfc\uace0\uadf8\ub77c\ub4dc \uc2dc\uac04", "VOLT",
+-                                               "\ubcfc\uace0\uadf8\ub77c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOLST",
+-                                               "\uBCFC\uACE0\uADF8\uB77C\uB4DC \uD45C\uC900\uC2DC", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/lt/CurrencyNames_lt_LT.properties	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/lt/CurrencyNames_lt_LT.properties	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ # 
+-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ #
+ # This code is free software; you can redistribute it and/or modify it
+@@ -35,4 +35,5 @@
+ # This notice and attribution to Taligent may not be removed.
+ # Taligent is a registered trademark of Taligent, Inc.
+ 
++EUR=\u20AC
+ LTL=Lt
+--- ./jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Fuso hor\u00e1rio do Acre", "ACT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o do Acre", "ACST",
+                                      "Fuso hor\u00e1rio do Acre", "ACT"};
+-        String ADELAIDE[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)", "CST",
+-                                          "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)", "CST",
+-                                          "Hor\u00E1rio Central (Austr\u00E1lia do Sul)", "CT"};
++        String ADELAIDE[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)", "ACST",
++                                          "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)", "ACDT",
++                                          "Hor\u00E1rio Central (Austr\u00E1lia do Sul)", "ACT"};
+         String AGT[] = new String[] {"Fuso hor\u00e1rio da Argentina", "ART",
+                                      "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST",
+                                      "Hor\u00E1rio da Argentina", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"Fuso hor\u00e1rio de Bangladesh", "BDT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o de Bangladesh", "BDST",
+                                      "Hor\u00E1rio de Bangladesh", "BDT"};
+-        String BRISBANE[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)", "EST",
+-                                          "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)", "EST",
+-                                          "Hor\u00E1rio do Leste (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CST",
+-                                             "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CST",
+-                                             "Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CT"};
++        String BRISBANE[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)", "AEST",
++                                          "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)", "AEDT",
++                                          "Hor\u00E1rio do Leste (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "ACST",
++                                             "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "ACDT",
++                                             "Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "ACT"};
+         String BRT[] = new String[] {"Fuso hor\u00e1rio de Bras\u00edlia", "BRT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST",
+                                      "Hor\u00E1rio de Bras\u00EDlia", "BRT"};
+@@ -108,9 +108,9 @@
+         String CUBA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Cuba", "CST",
+                                       "Hor\u00e1rio de luz natural de Cuba", "CDT",
+                                       "Hor\u00E1rio de Cuba", "CT"};
+-        String DARWIN[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)", "CST",
+-                                        "Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)", "CST",
+-                                        "Hor\u00E1rio Central (Territ\u00F3rio do Norte)", "CT"};
++        String DARWIN[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)", "ACST",
++                                        "Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)", "ACDT",
++                                        "Hor\u00E1rio Central (Territ\u00F3rio do Norte)", "ACT"};
+         String DUBLIN[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
+                                         "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST",
+                                         "Hor\u00E1rio da Rep\u00FAblica da Irlanda", "IT"};
+@@ -129,9 +129,9 @@
+         String EST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental", "EST",
+                                      "Hor\u00e1rio de luz natural oriental", "EDT",
+                                      "Hor\u00E1rio do Leste", "ET"};
+-        String EST_NSW[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)", "EST",
+-                                         "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)", "EST",
+-                                         "Hor\u00E1rio Oriental (Nova Gales do Sul)", "ET"};
++        String EST_NSW[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)", "AEST",
++                                         "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)", "AEDT",
++                                         "Hor\u00E1rio Oriental (Nova Gales do Sul)", "AET"};
+         String FET[] = new String[] {"Hor\u00E1rio do Extremo Leste Europeu (FET)", "FET",
+                                      "Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu", "FEST",
+                                      "Hor\u00E1rio do Extremo Leste Europeu (FET)", "FET"};
+@@ -162,6 +162,9 @@
+         String ICT[] = new String[] {"Fuso hor\u00e1rio da Indochina", "ICT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST",
+                                      "Hor\u00E1rio da Indochina", "ICT"};
++        String IRKT[] = new String[] {"Fuso hor\u00e1rio de Irkutsk", "IRKT",
++                                      "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST",
++                                      "Hor\u00E1rio de Irkutsk", "IRKT"};
+         String IRT[] = new String[] {"Fuso hor\u00e1rio do Ir\u00e3", "IRST",
+                                      "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT",
+                                      "Hor\u00E1rio do Ir\u00E3", "IRT"};
+@@ -174,11 +177,14 @@
+         String JST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Jap\u00e3o", "JST",
+                                      "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT",
+                                      "Hor\u00E1rio do Jap\u00E3o", "JT"};
++        String KRAT[] = new String[] {"Fuso hor\u00e1rio de Krasnoyarsk", "KRAT",
++                                      "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST",
++                                      "Hor\u00E1rio de Krasnoyarsk", "KRAT"};
+         String KST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Coreia", "KST",
+                                      "Hor\u00e1rio de luz natural da Coreia", "KDT",
+                                      "Hor\u00E1rio da Coreia", "KT"};
+         String LORD_HOWE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Lord Howe", "LHST",
+-                                           "Fuso hor\u00e1rio de ver\u00e3o de Lord Howe", "LHST",
++                                           "Fuso hor\u00e1rio de ver\u00e3o de Lord Howe", "LHDT",
+                                            "Hor\u00E1rio de Lord Howe", "LHT"};
+         String MHT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Marshall", "MHT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marshall", "MHST",
+@@ -228,12 +234,9 @@
+         String SGT[] = new String[] {"Fuso hor\u00e1rio de Cingapura", "SGT",
+                                      "Fuso hor\u00e1rio de ver\u00e1 de Cingapura", "SGST",
+                                      "Hor\u00E1rio de Cingapura", "SGT"};
+-        String SLST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
+-                                      "Fuso hor\u00e1rio de ver\u00e3o de Serra Leoa", "SLST",
+-                                      "Hor\u00E1rio de Serra Leoa", "SLT"};
+-        String TASMANIA[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)", "EST",
+-                                          "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)", "EST",
+-                                          "Hor\u00E1rio do Leste (Tasm\u00E2nia)", "ET"};
++        String TASMANIA[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)", "AEST",
++                                          "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)", "AEDT",
++                                          "Hor\u00E1rio do Leste (Tasm\u00E2nia)", "AET"};
+         String TMT[] = new String[] {"Fuso hor\u00e1rio do Turcomenist\u00e3o", "TMT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST",
+                                      "Hor\u00E1rio do Turcomenist\u00E3o", "TMT"};
+@@ -252,29 +255,30 @@
+         String WIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Ocidental", "WIB",
+                                      "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST",
+                                      "Hor\u00E1rio da Indon\u00E9sia Ocidental", "WIB"};
+-        String WST_AUS[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)", "WST",
+-                                         "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)", "WST",
+-                                         "Hor\u00E1rio Ocidental (Austr\u00E1lia)", "WT"};
++        String WST_AUS[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)", "AWST",
++                                         "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)", "AWDT",
++                                         "Hor\u00E1rio Ocidental (Austr\u00E1lia)", "AWT"};
+         String SAMOA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Samoa", "SST",
+                                        "Hor\u00e1rio de luz natural de Samoa", "SDT",
+                                        "Hor\u00E1rio da Samoa", "ST"};
+-        String WST_SAMOA[] = new String[] {"Fuso hor\u00e1rio de Samoa Ocidental", "WST",
++        String WST_SAMOA[] = new String[] {"Fuso hor\u00e1rio de Samoa Ocidental", "WSST",
+                                            "Fuso hor\u00e1rio de ver\u00e3o de Samoa Ocidental", "WSDT",
+                                            "Fuso Hor\u00E1rio de Samoa Ocidental", "WST"};
+         String ChST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chamorro", "ChST",
+                                       "Hor\u00e1rio de luz natural de Chamorro", "ChDT",
+                                       "Hor\u00E1rio de Chamorro", "ChT"};
+-        String VICTORIA[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)", "EST",
+-                                          "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)", "EST",
+-                                          "Hor\u00E1rio do Leste (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)", "AEST",
++                                          "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)", "AEDT",
++                                          "Hor\u00E1rio do Leste (Victoria)", "AET"};
+         String UTC[] = new String[] {"Tempo universal coordenado", "UTC",
+                                      "Tempo universal coordenado", "UTC",
+                                      "Hor\u00E1rio Universal Coordenado", "UTC"};
+         String UZT[] = new String[] {"Fuso hor\u00e1rio do Uzbequist\u00e3o", "UZT",
+                                      "Fuso hor\u00e1rio de ver\u00e3o do Uzbequist\u00e3o", "UZST",
+                                      "Hor\u00E1rio do Uzbequist\u00E3o", "UZT"};
+-        String WART[] = new String[] {"Fuso hor\u00e1rio da Argentina Ocidental", "WART",
+-                                      "Fuso hor\u00e1rio de ver\u00e3o da Argentina Ocidental", "WARST"};
++        String XJT[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da China", "XJT",
++                                     "Hor\u00e1rio de luz natural da China", "XJDT",
++                                     "Hor\u00E1rio da China", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST",
+                                               "Hor\u00E1rio da Groenl\u00E2ndia Ocidental", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Hor\u00E1rio Padr\u00E3o de Metlakatla", "MeST",
+-                                                 "Hor\u00E1rio de Luz Natural de Metlakatla", "MeDT",
+-                                                 "Hor\u00E1rio de Metlakatla", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Fuso hor\u00e1rio padr\u00e3o de S\u00e3o Pedro e Miquelon", "PMST",
+                                                "Hor\u00e1rio de luz natural de S\u00e3o Pedro e Miquelon", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST",
+                                           "Hor\u00E1rio de Brunei", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Fuso hor\u00e1rio de Choibalsan", "CHOT",
+                                               "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST",
+                                               "Hor\u00E1rio de Choibalsan", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Fuso hor\u00e1rio de Hovd", "HOVT",
+                                         "Fuso hor\u00e1rio de ver\u00e3o de Hovd", "HOVST",
+                                         "Hor\u00E1rio de Hovd", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Fuso hor\u00e1rio de Irkutsk", "IRKT",
+-                                           "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST",
+-                                           "Hor\u00E1rio de Irkutsk", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Oriental", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST",
+                                              "Hor\u00E1rio de Petropavlovsk-Kamchatski", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"Hor\u00E1rio de Khandyga", "YAKT",
+                                             "Hor\u00E1rio de Ver\u00E3o de Khandyga", "YAKST",
+                                             "Hor\u00E1rio de Khandyga", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"Fuso hor\u00e1rio de Krasnoyarsk", "KRAT",
+-                                               "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST",
+-                                               "Hor\u00E1rio de Krasnoyarsk", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "Hor\u00E1rio das Filipinas", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Fuso hor\u00e1rio de Uralsk", "ORAT",
+                                         "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Hor\u00E1rio de Ust-Nera", "VLAT",
+                                             "Hor\u00E1rio de Ver\u00E3o de Ust-Nera", "VLAST",
+                                             "Hor\u00E1rio de Ust-Nera", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Fuso Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "CWST",
+-                                              "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)", "CWST",
+-                                              "Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "CWT"}},
++            {"Australia/Eucla", new String[] {"Fuso Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "ACWST",
++                                              "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)", "ACWDT",
++                                              "Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Fuso hor\u00e1rio de Volgogrado", "VOLT",
+-                                               "Fuso hor\u00e1rio de ver\u00e3o de Volgogrado", "VOLST",
+-                                               "Hor\u00E1rio de Volgogrado", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", TRUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Acre, normaltid", "ACT",
+                                      "Acre, sommartid", "ACST",
+                                      "Acre, normaltid", "ACT"};
+-        String ADELAIDE[] = new String[] {"Central standardtid (Sydaustralien)", "CST",
+-                                          "Central sommartid (South Australia)", "CST",
+-                                          "Central tid (Sydaustralien)", "CT"};
++        String ADELAIDE[] = new String[] {"Central standardtid (Sydaustralien)", "ACST",
++                                          "Central sommartid (South Australia)", "ACDT",
++                                          "Central tid (Sydaustralien)", "ACT"};
+         String AGT[] = new String[] {"Argentina, normaltid", "ART",
+                                      "Argentina, sommartid", "ARST",
+                                      "Argentinsk tid", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"Bangladesh, normaltid", "BDT",
+                                      "Bangladesh, sommartid", "BDST",
+                                      "Bangladeshisk tid", "BDT"};
+-        String BRISBANE[] = new String[] {"\u00D6stlig standardtid (Queensland)", "EST",
+-                                          "\u00D6stlig sommartid (Queensland)", "EST",
+-                                          "\u00D6stlig tid (Queensland)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"Central standardtid (Sydaustralien/New South Wales)", "CST",
+-                                             "Central sommartid (South Australia/New South Wales)", "CST",
+-                                             "Central tid (Sydaustralien/New South Wales)", "CT"};
++        String BRISBANE[] = new String[] {"\u00D6stlig standardtid (Queensland)", "AEST",
++                                          "\u00D6stlig sommartid (Queensland)", "AEDT",
++                                          "\u00D6stlig tid (Queensland)", "AET"};
++        String BROKEN_HILL[] = new String[] {"Central standardtid (Sydaustralien/New South Wales)", "ACST",
++                                             "Central sommartid (South Australia/New South Wales)", "ACDT",
++                                             "Central tid (Sydaustralien/New South Wales)", "ACT"};
+         String BRT[] = new String[] {"Brasilien, normaltid", "BRT",
+                                      "Brasilien, sommartid", "BRST",
+                                      "Brasiliansk tid", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"Kuba, normaltid", "CST",
+                                       "Kuba, sommartid", "CDT",
+                                       "Kubansk tid", "CT"};
+-        String DARWIN[] = new String[] {"Central standardtid (Nordterritoriet)", "CST",
+-                                        "Central sommartid (Nordterritoriet)", "CST",
+-                                        "Central tid (Nordterritoriet)", "CT"};
++        String DARWIN[] = new String[] {"Central standardtid (Nordterritoriet)", "ACST",
++                                        "Central sommartid (Nordterritoriet)", "ACDT",
++                                        "Central tid (Nordterritoriet)", "ACT"};
+         String DUBLIN[] = new String[] {"Greenwichtid", "GMT",
+                                         "Irland, sommartid", "IST",
+                                         "Irl\u00E4ndsk tid", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"Eastern, normaltid", "EST",
+                                      "Eastern, sommartid", "EDT",
+                                      "\u00D6stlig tid", "ET"};
+-        String EST_NSW[] = new String[] {"\u00D6stlig standardtid (New South Wales)", "EST",
+-                                         "\u00D6stlig sommartid (New South Wales)", "EST",
+-                                         "\u00D6stlig tid (New South Wales)", "ET"};
++        String EST_NSW[] = new String[] {"\u00D6stlig standardtid (New South Wales)", "AEST",
++                                         "\u00D6stlig sommartid (New South Wales)", "AEDT",
++                                         "\u00D6stlig tid (New South Wales)", "AET"};
+         String FET[] = new String[] {"Kaliningradtid", "FET",
+                                      "\u00D6steuropeisk sommartid", "FEST",
+                                      "Kaliningradtid", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"Indokinesisk tid", "ICT",
+                                      "Indokinesisk sommartid", "ICST",
+                                      "Indokinesisk tid", "ICT"};
++        String IRKT[] = new String[] {"Irkutsk, normaltid", "IRKT",
++                                      "Irkutsk, sommartid", "IRKST",
++                                      "Irkutsk-tid", "IRKT"};
+         String IRT[] = new String[] {"Iran, normaltid", "IRST",
+                                      "Iran, sommartid", "IRDT",
+                                      "Iransk tid", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"Japan, normaltid", "JST",
+                                      "Japan, sommartid", "JDT",
+                                      "Japansk tid", "JT"};
++        String KRAT[] = new String[] {"Krasnojarsk, normaltid", "KRAT",
++                                      "Krasnojarsk, sommartid", "KRAST",
++                                      "Krasnojarsk-tid", "KRAT"};
+         String KST[] = new String[] {"Korea, normaltid", "KST",
+                                      "Korea, sommartid", "KDT",
+                                      "Koreansk tid", "KT"};
+         String LORD_HOWE[] = new String[] {"Lord Howe, normaltid", "LHST",
+-                                           "Lord Howe, sommartid", "LHST",
++                                           "Lord Howe, sommartid", "LHDT",
+                                            "Lord Howe-tid", "LHT"};
+         String MHT[] = new String[] {"Marshall\u00f6arna, normaltid", "MHT",
+                                      "Marshall\u00f6arna, sommartid", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"Singapore, normaltid", "SGT",
+                                      "Singapore, sommartid", "SGST",
+                                      "Singapore-tid", "SGT"};
+-        String SLST[] = new String[] {"Greenwichtid", "GMT",
+-                                      "Sierra Leone, sommartid", "SLST",
+-                                      "Sierra Leone-tid", "SLT"};
+-        String TASMANIA[] = new String[] {"\u00D6stlig standardtid (Tasmania)", "EST",
+-                                          "\u00D6stlig sommartid (Tasmanien)", "EST",
+-                                          "\u00D6stlig tid (Tasmania)", "ET"};
++        String TASMANIA[] = new String[] {"\u00D6stlig standardtid (Tasmania)", "AEST",
++                                          "\u00D6stlig sommartid (Tasmanien)", "AEDT",
++                                          "\u00D6stlig tid (Tasmania)", "AET"};
+         String TMT[] = new String[] {"Turkmenistan, normaltid", "TMT",
+                                      "Turkmenistan, sommartid", "TMST",
+                                      "Turkmensk tid", "TMT"};
+         String ULAT[]= new String[] {"Ulaanbaatar, normaltid", "ULAT",
+                                      "Ulaanbaatar, sommartid", "ULAST",
+                                      "Ulaanbaatar-tid", "ULAT"};
+-        String WART[] = new String[] {"V\u00e4stargentina, normaltid", "WART",
+-                                      "V\u00e4stargentina, sommartid", "WARST"};
+         String WAT[] = new String[] {"V\u00e4stafrikansk tid", "WAT",
+                                      "V\u00e4stafrikansk sommartid", "WAST",
+                                      "V\u00E4stafrikansk tid", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"V\u00e4stindonesisk tid", "WIB",
+                                      "V\u00e4stindonesisk sommartid", "WIST",
+                                      "V\u00E4stindonesisk tid", "WIB"};
+-        String WST_AUS[] = new String[] {"Western Standard Time (Australien)", "WST",
+-                                         "V\u00E4stlig sommartid (Australien)", "WST",
+-                                         "V\u00E4stlig tid (Australien)", "WT"};
++        String WST_AUS[] = new String[] {"Western Standard Time (Australien)", "AWST",
++                                         "V\u00E4stlig sommartid (Australien)", "AWDT",
++                                         "V\u00E4stlig tid (Australien)", "AWT"};
+         String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
+                                        "Samoa, sommartid", "SDT",
+                                        "Samoansk tid", "ST"};
+-        String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WST",
++        String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WSST",
+                                            "V\u00e4stsamoansk sommartid", "WSDT",
+                                            "V\u00E4stsamoansk tid", "WST"};
+         String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
+                                       "Chamorro, sommartid", "ChDT",
+                                       "Chamorros tid", "ChT"};
+-        String VICTORIA[] = new String[] {"\u00D6stlig standardtid (Victoria)", "EST",
+-                                          "\u00D6stlig sommartid (Victoria)", "EST",
+-                                          "\u00D6stlig tid (Victoria)", "ET"};
++        String VICTORIA[] = new String[] {"\u00D6stlig standardtid (Victoria)", "AEST",
++                                          "\u00D6stlig sommartid (Victoria)", "AEDT",
++                                          "\u00D6stlig tid (Victoria)", "AET"};
+         String UTC[] = new String[] {"Koordinerad universell tid", "UTC",
+                                      "Koordinerad universell tid", "UTC",
+                                      "UTC (koordinerad v\u00E4rldstid)", "UTC"};
+         String UZT[] = new String[] {"Uzbekistan, normaltid", "UZT",
+                                      "Uzbekistan, sommartid", "UZST",
+                                      "Uzbekisk tid", "UZT"};
++        String XJT[] = new String[] {"Kina, normaltid", "XJT",
++                                     "Kina, sommartid", "XJDT",
++                                     "Kinesisk tid", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "V\u00e4stra Gr\u00f6nland, sommartid", "WGST",
+                                               "V\u00E4stgr\u00F6nl\u00E4ndsk tid", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"Metlakatla, normaltid", "MeST",
+-                                                 "Metlakatla, sommartid", "MeDT",
+-                                                 "Metlakatla-tid", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Saint-Pierre-et-Miquelon, normaltid", "PMST",
+                                                "Saint-Pierre-et-Miquelon, sommartid", "PMDT",
+@@ -612,6 +614,7 @@
+                                               "Choibalsan-tid", "CHOT"}},
+             {"Asia/Chongqing", CTT},
+             {"Asia/Chungking", CTT},
++            {"Asia/Chita", IRKT},
+             {"Asia/Colombo", IST},
+             {"Asia/Dacca", BDT},
+             {"Asia/Dhaka", BDT},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"Hovd, normaltid", "HOVT",
+                                         "Hovd, sommartid", "HOVST",
+                                         "Hovd-tid", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Irkutsk, normaltid", "IRKT",
+-                                           "Irkutsk, sommartid", "IRKST",
+-                                           "Irkutsk-tid", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"\u00d6stindonesisk tid", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Petropavlovsk-Kamtjatka, sommartid", "PETST",
+                                              "Petropavlovsk-Kamtjatskij-tid", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"Khandyga, normaltid", "YAKT",
+                                             "Khandyga, sommartid", "YAKST",
+                                             "Khandyga, normaltid", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"Krasnojarsk, normaltid", "KRAT",
+-                                               "Krasnojarsk, sommartid", "KRAST",
+-                                               "Krasnojarsk-tid", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "Filippinsk tid", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Oral, normaltid", "ORAT",
+                                         "Oral, sommartid", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"Ust-Nera, normaltid", "VLAT",
+                                             "Ust-Nera, sommartid", "VLAST",
+                                             "Ust-Nera, normaltid", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central v\u00E4stlig normaltid (Australien)", "CWST",
+-                                              "Central v\u00E4stlig sommartid (Australien)", "CWST",
+-                                              "Central v\u00E4stlig tid (Australien)", "CWT"}},
++            {"Australia/Eucla", new String[] {"Central v\u00E4stlig normaltid (Australien)", "ACWST",
++                                              "Central v\u00E4stlig sommartid (Australien)", "ACWDT",
++                                              "Central v\u00E4stlig tid (Australien)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"Volgograd-tid", "VOLT",
+-                                               "Volgograd, sommartid", "VOLST",
+-                                               "Volgograd, normaltid", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Acre \u65f6\u95f4", "ACT",
+                                      "Acre \u590f\u4ee4\u65f6", "ACST",
+                                      "Acre \u65f6\u95f4", "ACT"};
+-        String ADELAIDE[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CST",
+-                                          "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CST",
+-                                          "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CT"};
++        String ADELAIDE[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "ACST",
++                                          "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)", "ACDT",
++                                          "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "ACT"};
+         String AGT[] = new String[] {"\u963f\u6839\u5ef7\u65f6\u95f4", "ART",
+                                      "\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "ARST",
+                                      "\u963F\u6839\u5EF7\u65F6\u95F4", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"\u5b5f\u52a0\u62c9\u65f6\u95f4", "BDT",
+                                      "\u5b5f\u52a0\u62c9\u590f\u4ee4\u65f6", "BDST",
+                                      "\u5B5F\u52A0\u62C9\u65F6\u95F4", "BDT"};
+-        String BRISBANE[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)", "EST",
+-                                          "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)", "EST",
+-                                          "\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CST",
+-                                             "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CST",
+-                                             "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CT"};
++        String BRISBANE[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)", "AEST",
++                                          "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)", "AEDT",
++                                          "\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)", "AET"};
++        String BROKEN_HILL[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "ACST",
++                                             "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "ACDT",
++                                             "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "ACT"};
+         String BRT[] = new String[] {"\u5df4\u897f\u5229\u4e9a\u65f6\u95f4", "BRT",
+                                      "\u5df4\u897f\u5229\u4e9a\u590f\u4ee4\u65f6", "BRST",
+                                      "\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"\u53e4\u5df4\u6807\u51c6\u65f6\u95f4", "CST",
+                                       "\u53e4\u5df4\u590f\u4ee4\u65f6", "CDT",
+                                       "\u53E4\u5DF4\u65F6\u95F4", "CT"};
+-        String DARWIN[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)", "CST",
+-                                        "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)", "CST",
+-                                        "\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)", "CT"};
++        String DARWIN[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)", "ACST",
++                                        "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)", "ACDT",
++                                        "\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)", "ACT"};
+         String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
+                                         "\u7231\u5c14\u5170\u590f\u4ee4\u65f6", "IST",
+                                         "\u7231\u5C14\u5170\u65F6\u95F4", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "EST",
+                                      "\u4e1c\u90e8\u590f\u4ee4\u65f6", "EDT",
+                                      "\u4E1C\u90E8\u65F6\u95F4", "ET"};
+-        String EST_NSW[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "EST",
+-                                         "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)", "EST",
+-                                         "\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "ET"};
++        String EST_NSW[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "AEST",
++                                         "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)", "AEDT",
++                                         "\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "AET"};
+         String FET[] = new String[] {"\u8FDC\u4E1C\u6B27\u65F6\u95F4", "FET",
+                                      "\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6", "FEST",
+                                      "\u8FDC\u4E1C\u6B27\u65F6\u95F4", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"\u5370\u5ea6\u652f\u90a3\u65f6\u95f4", "ICT",
+                                      "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u65f6", "ICST",
+                                      "\u5370\u5EA6\u652F\u90A3\u65F6\u95F4", "ICT"};
++        String IRKT[] = new String[] {"\u4f0a\u5c14\u5e93\u6b21\u514b\u65f6\u95f4", "IRKT",
++                                      "\u4f0a\u5c14\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "IRKST",
++                                      "\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4", "IRKT"};
+         String IRT[] = new String[] {"\u4f0a\u6717\u6807\u51c6\u65f6\u95f4", "IRST",
+                                      "\u4f0a\u6717\u590f\u4ee4\u65f6", "IRDT",
+                                      "\u4F0A\u6717\u65F6\u95F4", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"\u65e5\u672c\u6807\u51c6\u65f6\u95f4", "JST",
+                                      "\u65e5\u672c\u590f\u4ee4\u65f6", "JDT",
+                                      "\u65E5\u672C\u65F6\u95F4", "JT"};
++        String KRAT[] = new String[] {"\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u65f6\u95f4", "KRAT",
++                                      "\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u590f\u4ee4\u65f6", "KRAST",
++                                      "\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4", "KRAT"};
+         String KST[] = new String[] {"\u97e9\u56fd\u6807\u51c6\u65f6\u95f4", "KST",
+                                      "\u97e9\u56fd\u590f\u4ee4\u65f6", "KDT",
+                                      "\u97E9\u56FD\u65F6\u95F4", "KT"};
+         String LORD_HOWE[] = new String[] {"\u8c6a\u516c\u6807\u51c6\u65f6\u95f4", "LHST",
+-                                           "\u8c6a\u516c\u590f\u4ee4\u65f6", "LHST",
++                                           "\u8c6a\u516c\u590f\u4ee4\u65f6", "LHDT",
+                                            "\u8C6A\u516C\u65F6\u95F4", "LHT"};
+         String MHT[] = new String[] {"\u9a6c\u7ecd\u5c14\u7fa4\u5c9b\u65f6\u95f4", "MHT",
+                                      "\u9a6c\u7ecd\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"\u65b0\u52a0\u5761\u65f6\u95f4", "SGT",
+                                      "\u65b0\u52a0\u5761\u590f\u4ee4\u65f6", "SGST",
+                                      "\u65B0\u52A0\u5761\u65F6\u95F4", "SGT"};
+-        String SLST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
+-                                      "\u585e\u62c9\u5229\u6602\u590f\u4ee4\u65f6", "SLST",
+-                                      "\u585E\u62C9\u91CC\u6602\u65F6\u95F4", "SLT"};
+-        String TASMANIA[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "EST",
+-                                          "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "EST",
+-                                          "\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "ET"};
++        String TASMANIA[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "AEST",
++                                          "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "AEDT",
++                                          "\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "AET"};
+         String TMT[] = new String[] {"\u571f\u5e93\u66fc\u65f6\u95f4", "TMT",
+                                      "\u571f\u5e93\u66fc\u590f\u4ee4\u65f6", "TMST",
+                                      "\u571F\u5E93\u66FC\u65F6\u95F4", "TMT"};
+         String ULAT[]= new String[] {"\u5e93\u4f26\u65f6\u95f4", "ULAT",
+                                      "\u5e93\u4f26\u590f\u4ee4\u65f6", "ULAST",
+                                      "\u5E93\u4F26\u65F6\u95F4", "ULAT"};
+-        String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u65f6\u95f4", "WART",
+-                                      "\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "WARST"};
+         String WAT[] = new String[] {"\u897f\u975e\u65f6\u95f4", "WAT",
+                                      "\u897f\u975e\u590f\u4ee4\u65f6", "WAST",
+                                      "\u897F\u975E\u65F6\u95F4", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WIB",
+                                      "\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "WIST",
+                                      "\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WIB"};
+-        String WST_AUS[] = new String[] {"\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "WST",
+-                                         "\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "WST",
+-                                         "\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "WT"};
++        String WST_AUS[] = new String[] {"\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "AWST",
++                                         "\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "AWDT",
++                                         "\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "AWT"};
+         String SAMOA[] = new String[] {"\u8428\u6469\u4e9a\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "SST",
+                                        "\u8428\u6469\u4e9a\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT",
+                                        "\u8428\u6469\u4E9A\u65F6\u95F4", "ST"};
+-        String WST_SAMOA[] = new String[] {"\u897f\u8428\u6469\u4e9a\u65f6\u95f4", "WST",
++        String WST_SAMOA[] = new String[] {"\u897f\u8428\u6469\u4e9a\u65f6\u95f4", "WSST",
+                                            "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSDT",
+                                            "\u897F\u8428\u6469\u4E9A\u65F6\u95F4", "WST"};
+         String ChST[] = new String[] {"Chamorro \u6807\u51c6\u65f6\u95f4", "ChST",
+                                       "Chamorro \u590f\u4ee4\u65f6", "ChDT",
+                                       "\u67E5\u6469\u6D1B\u65F6\u95F4", "ChT"};
+-        String VICTORIA[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "EST",
+-                                          "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)", "EST",
+-                                          "\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "ET"};
++        String VICTORIA[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "AEST",
++                                          "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)", "AEDT",
++                                          "\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "AET"};
+         String UTC[] = new String[] {"\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
+                                      "\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
+                                      "\u534F\u8C03\u4E16\u754C\u65F6\u95F4", "UTC"};
+         String UZT[] = new String[] {"\u4e4c\u5179\u522b\u514b\u65af\u5766\u65f6\u95f4", "UZT",
+                                      "\u4e4c\u5179\u522b\u514b\u65af\u5766\u590f\u4ee4\u65f6", "UZST",
+                                      "\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4", "UZT"};
++        String XJT[] = new String[] {"\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4", "XJT",
++                                     "\u4e2d\u56fd\u590f\u4ee4\u65f6", "XJDT",
++                                     "\u4E2D\u56FD\u65F6\u95F4", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST",
+                                               "\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"\u6885\u7279\u62C9\u5361\u7279\u62C9\u6807\u51C6\u65F6\u95F4", "MeST",
+-                                                 "\u6885\u7279\u62C9\u5361\u7279\u62C9\u590F\u4EE4\u65F6", "MeDT",
+-                                                 "\u6885\u7279\u62C9\u5361\u7279\u62C9\u65F6\u95F4", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u6807\u51c6\u65f6\u95f4", "PMST",
+                                                "\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u590f\u4ee4\u65f6", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "\u6587\u83b1\u590f\u4ee4\u65f6", "BNST",
+                                           "\u6587\u83B1\u65F6\u95F4", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"Choibalsan \u65f6\u95f4", "CHOT",
+                                               "Choibalsan \u590f\u4ee4\u65f6", "CHOST",
+                                               "Choibalsan \u65F6\u95F4", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"\u79d1\u5e03\u591a\u65f6\u95f4", "HOVT",
+                                         "\u79d1\u5e03\u591a\u590f\u4ee4\u65f6", "HOVST",
+                                         "\u79D1\u5E03\u591A\u65F6\u95F4", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"\u4f0a\u5c14\u5e93\u6b21\u514b\u65f6\u95f4", "IRKT",
+-                                           "\u4f0a\u5c14\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "IRKST",
+-                                           "\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WIT",
+@@ -646,16 +647,14 @@
+                                              "\u5f7c\u5f97\u7f57\u5df4\u752b\u6d1b\u592b\u65af\u514b\u590f\u4ee4\u65f6", "PETST",
+                                              "\u5F7C\u5F97\u7F57\u5DF4\u752B\u6D1B\u592B\u65AF\u514B\u65F6\u95F4", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"\u6C49\u5FB7\u52A0\u65F6\u95F4", "YAKT",
+                                             "\u6C49\u5FB7\u52A0\u590F\u4EE4\u65F6", "YAKST",
+                                             "\u6C49\u5FB7\u52A0\u65F6\u95F4", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u65f6\u95f4", "KRAT",
+-                                               "\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u590f\u4ee4\u65f6", "KRAST",
+-                                               "\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "\u83F2\u5F8B\u5BBE\u65F6\u95F4", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Oral \u65f6\u95f4", "ORAT",
+                                         "Oral \u590f\u4ee4\u65f6", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", CTT},
+             {"Asia/Tel_Aviv", ISRAEL},
+             {"Asia/Tashkent", UZT},
+@@ -708,7 +710,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4", "VLAT",
+                                             "\u4E4C\u65AF\u5B63\u6D85\u62C9\u590F\u4EE4\u65F6", "VLAST",
+                                             "\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4", "VLAT"}},
+@@ -750,9 +752,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "CWST",
+-                                              "\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "CWST",
+-                                              "\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "CWT"}},
++            {"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "ACWST",
++                                              "\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "ACWDT",
++                                              "\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -818,7 +820,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -827,7 +829,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -853,9 +855,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"\u4f0f\u5c14\u52a0\u683c\u52d2\u65f6\u95f4", "VOLT",
+-                                               "\u4f0f\u5c14\u52a0\u683c\u52d2\u590f\u4ee4\u65f6", "VOLST",
+-                                               "\u4F0F\u5C14\u52A0\u683C\u52D2\u65F6\u95F4", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -917,6 +917,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -48,9 +48,9 @@
+         String ACT[] = new String[] {"Acre \u6642\u9593", "ACT",
+                                      "Acre \u590f\u4ee4\u6642\u9593", "ACST",
+                                      "Acre \u6642\u9593", "ACT"};
+-        String ADELAIDE[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "CST",
+-                                          "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)", "CST",
+-                                          "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "CT"};
++        String ADELAIDE[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "ACST",
++                                          "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)", "ACDT",
++                                          "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "ACT"};
+         String AGT[] = new String[] {"\u963f\u6839\u5ef7\u6642\u9593", "ART",
+                                      "\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "ARST",
+                                      "\u963F\u6839\u5EF7\u6642\u9593", "ART"};
+@@ -72,12 +72,12 @@
+         String BDT[] = new String[] {"\u5b5f\u52a0\u62c9\u6642\u9593", "BDT",
+                                      "\u5b5f\u52a0\u62c9\u590f\u4ee4\u6642\u9593", "BDST",
+                                      "\u5B5F\u52A0\u62C9\u6642\u9593", "BDT"};
+-        String BRISBANE[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)", "EST",
+-                                          "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)", "EST",
+-                                          "\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)", "ET"};
+-        String BROKEN_HILL[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "CST",
+-                                             "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "CST",
+-                                             "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)", "CT"};
++        String BRISBANE[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)", "AEST",
++                                          "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)", "AEDT",
++                                          "\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)", "AET"};
++        String BROKEN_HILL[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "ACST",
++                                             "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "ACDT",
++                                             "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)", "ACT"};
+         String BRT[] = new String[] {"\u5df4\u897f\u5229\u4e9e\u6642\u9593", "BRT",
+                                      "\u5df4\u897f\u5229\u4e9e\u590f\u4ee4\u6642\u9593", "BRST",
+                                      "\u5DF4\u897F\u5229\u4E9E\u6642\u9593", "BRT"};
+@@ -111,9 +111,9 @@
+         String CUBA[] = new String[] {"\u53e4\u5df4\u6a19\u6e96\u6642\u9593", "CST",
+                                       "\u53e4\u5df4\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT",
+                                       "\u53E4\u5DF4\u6642\u9593", "CT"};
+-        String DARWIN[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "CST",
+-                                        "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "CST",
+-                                        "\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)", "CT"};
++        String DARWIN[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "ACST",
++                                        "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "ACDT",
++                                        "\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)", "ACT"};
+         String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
+                                         "\u611b\u723e\u862d\u590f\u4ee4\u6642\u9593", "IST",
+                                         "\u611B\u723E\u862D\u6587\u6642\u9593", "IT"};
+@@ -132,9 +132,9 @@
+         String EST[] = new String[] {"\u6771\u65b9\u6a19\u6e96\u6642\u9593", "EST",
+                                      "\u6771\u65b9\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "EDT",
+                                      "\u7F8E\u570B\u6771\u90E8\u6642\u9593", "ET"};
+-        String EST_NSW[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "EST",
+-                                         "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "EST",
+-                                         "\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "ET"};
++        String EST_NSW[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "AEST",
++                                         "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "AEDT",
++                                         "\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "AET"};
+         String FET[] = new String[] {"\u6771\u6B50\u5167\u9678\u6642\u9593", "FET",
+                                      "\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593", "FEST",
+                                      "\u6771\u6B50\u5167\u9678\u6642\u9593", "FET"};
+@@ -165,6 +165,9 @@
+         String ICT[] = new String[] {"\u5370\u5ea6\u652f\u90a3\u6642\u9593", "ICT",
+                                      "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u6642\u9593", "ICST",
+                                      "\u5370\u5EA6\u652F\u90A3\u6642\u9593", "ICT"};
++        String IRKT[] = new String[] {"Irkutsk \u6642\u9593", "IRKT",
++                                      "Irkutsk \u590f\u4ee4\u6642\u9593", "IRKST",
++                                      "\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593", "IRKT"};
+         String IRT[] = new String[] {"\u4f0a\u6717\u6a19\u6e96\u6642\u9593", "IRST",
+                                      "\u4f0a\u6717\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IRDT",
+                                      "\u4F0A\u6717\u6642\u9593", "IRT"};
+@@ -177,11 +180,14 @@
+         String JST[] = new String[] {"\u65e5\u672c\u6a19\u6e96\u6642\u9593", "JST",
+                                      "\u65e5\u672c\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "JDT",
+                                      "\u65E5\u672C\u6642\u9593", "JT"};
++        String KRAT[] = new String[] {"\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u6642\u9593", "KRAT",
++                                      "\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u590f\u4ee4\u6642\u9593", "KRAST",
++                                      "\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593", "KRAT"};
+         String KST[] = new String[] {"\u97d3\u570b\u6a19\u6e96\u6642\u9593", "KST",
+                                      "\u97d3\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "KDT",
+                                      "\u97D3\u570B\u6642\u9593", "KT"};
+         String LORD_HOWE[] = new String[] {"\u8c6a\u52f3\u7235\u5cf6\u6a19\u6e96\u6642\u9593", "LHST",
+-                                           "\u8c6a\u52f3\u7235\u5cf6\u590f\u4ee4\u6642\u9593", "LHST",
++                                           "\u8c6a\u52f3\u7235\u5cf6\u590f\u4ee4\u6642\u9593", "LHDT",
+                                            "\u8C6A\u52F3\u7235\u5CF6\u6642\u9593", "LHT"};
+         String MHT[] = new String[] {"\u99ac\u7d39\u723e\u7fa4\u5cf6\u6642\u9593", "MHT",
+                                      "\u99ac\u7d39\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "MHST",
+@@ -231,20 +237,15 @@
+         String SGT[] = new String[] {"\u65b0\u52a0\u5761\u6642\u9593", "SGT",
+                                      "\u65b0\u52a0\u5761\u590f\u4ee4\u6642\u9593", "SGST",
+                                      "\u65B0\u52A0\u5761\u6642\u9593", "SGT"};
+-        String SLST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
+-                                      "\u7345\u5b50\u5c71\u590f\u4ee4\u6642\u9593", "SLST",
+-                                      "\u7345\u5B50\u5C71\u6642\u9593", "SLT"};
+-        String TASMANIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "EST",
+-                                          "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "EST",
+-                                          "\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)", "ET"};
++        String TASMANIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "AEST",
++                                          "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "AEDT",
++                                          "\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)", "AET"};
+         String TMT[] = new String[] {"\u571f\u5eab\u66fc\u6642\u9593", "TMT",
+                                      "\u571f\u5eab\u66fc\u590f\u4ee4\u6642\u9593", "TMST",
+                                      "\u571F\u5EAB\u66FC\u6642\u9593", "TMT"};
+         String ULAT[]= new String[] {"\u5eab\u502b\u6642\u9593", "ULAT",
+                                      "\u5eab\u502b\u590f\u4ee4\u6642\u9593", "ULAST",
+                                      "\u5EAB\u502B\u6642\u9593", "ULAT"};
+-          String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u6642\u9593", "WART",
+-                                      "\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "WARST"};
+         String WAT[] = new String[] {"\u897f\u975e\u6642\u9593", "WAT",
+                                      "\u897f\u975e\u590f\u4ee4\u6642\u9593", "WAST",
+                                      "\u897F\u975E\u6642\u9593", "WAT"};
+@@ -254,27 +255,30 @@
+         String WIT[] = new String[] {"\u897f\u5370\u5c3c\u6642\u9593", "WIB",
+                                      "\u897f\u5370\u5c3c\u590f\u4ee4\u6642\u9593", "WIST",
+                                      "\u897F\u5370\u5C3C\u6642\u9593", "WIB"};
+-        String WST_AUS[] = new String[] {"\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WST",
+-                                         "\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WST",
+-                                         "\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WT"};
++        String WST_AUS[] = new String[] {"\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "AWST",
++                                         "\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "AWDT",
++                                         "\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "AWT"};
+         String SAMOA[] = new String[] {"\u85a9\u6469\u4e9e\u6a19\u6e96\u6642\u9593", "SST",
+                                        "\u85a9\u6469\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "SDT",
+                                        "\u85A9\u6469\u4E9E\u6642\u9593", "ST"};
+-        String WST_SAMOA[] = new String[] {"\u897f\u85a9\u6469\u4e9e\u6642\u9593", "WST",
++        String WST_SAMOA[] = new String[] {"\u897f\u85a9\u6469\u4e9e\u6642\u9593", "WSST",
+                                            "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSDT",
+                                            "\u897F\u85A9\u6469\u4E9E\u6642\u9593", "WST"};
+         String ChST[] = new String[] {"\u67e5\u83ab\u6d1b\u6a19\u6e96\u6642\u9593", "ChST",
+                                      "\u67e5\u83ab\u6d1b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ChDT",
+                                      "\u67E5\u83AB\u7F85\u6642\u9593", "ChT"};
+-        String VICTORIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "EST",
+-                                          "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "EST",
+-                                          "\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)", "ET"};
++        String VICTORIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "AEST",
++                                          "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "AEDT",
++                                          "\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)", "AET"};
+         String UTC[] = new String[] {"\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
+                                      "\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
+                                      "\u5354\u8ABF\u4E16\u754C\u6642\u9593", "UTC"};
+         String UZT[] = new String[] {"\u70cf\u8332\u5225\u514b\u65af\u5766\u6642\u9593", "UZT",
+                                      "\u70cf\u8332\u5225\u514b\u65af\u5766\u590f\u4ee4\u6642\u9593", "UZST",
+                                      "\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593", "UZT"};
++        String XJT[] = new String[] {"\u4e2d\u570b\u6a19\u6e96\u6642\u9593", "XJT",
++                                     "\u4e2d\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "XJDT",
++                                     "\u4E2D\u570B\u6642\u9593", "XJT"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -336,7 +340,7 @@
+             {"Africa/Djibouti", EAT},
+             {"Africa/Douala", WAT},
+             {"Africa/El_Aaiun", WET},
+-            {"Africa/Freetown", SLST},
++            {"Africa/Freetown", GMT},
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
+@@ -437,7 +441,7 @@
+                                               "\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST",
+                                               "\u897F\u683C\u9675\u862D\u6642\u9593", "WGT"}},
+             {"America/Goose_Bay", AST},
+-            {"America/Grand_Turk", EST},
++            {"America/Grand_Turk", AST},
+             {"America/Grenada", AST},
+             {"America/Guadeloupe", AST},
+             {"America/Guatemala", CST},
+@@ -484,9 +488,7 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
+-            {"America/Metlakatla", new String[] {"\u6885\u7279\u62C9\u5361\u7279\u62C9\u6A19\u6E96\u6642\u9593", "MeST",
+-                                                 "\u6885\u7279\u62C9\u5361\u7279\u62C9\u65E5\u5149\u7BC0\u7D04\u6642\u9593", "MeDT",
+-                                                 "\u6885\u7279\u62C9\u5361\u7279\u62C9\u6642\u9593", "MeT"}},
++            {"America/Metlakatla", PST},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u6a19\u6e96\u6642\u9593", "PMST",
+                                                "\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PMDT",
+@@ -607,6 +609,7 @@
+                                           "\u6c76\u840a\u590f\u4ee4\u6642\u9593", "BNST",
+                                           "\u6C76\u840A\u6642\u9593", "BNT"}},
+             {"Asia/Calcutta", IST},
++            {"Asia/Chita", IRKT},
+             {"Asia/Choibalsan", new String[] {"\u5de7\u5df4\u5c71 (Choibalsan) \u6642\u9593", "CHOT",
+                                               "\u5de7\u5df4\u5c71 (Choibalsan) \u590f\u4ee4\u6642\u9593", "CHOST",
+                                               "\u5DE7\u5DF4\u5C71 (Choibalsan) \u6642\u9593", "CHOT"}},
+@@ -631,9 +634,7 @@
+             {"Asia/Hovd", new String[] {"\u4faf\u5fb7 (Hovd) \u6642\u9593", "HOVT",
+                                         "\u4faf\u5fb7 (Hovd) \u590f\u4ee4\u6642\u9593", "HOVST",
+                                         "\u4FAF\u5FB7 (Hovd) \u6642\u9593", "HOVT"}},
+-            {"Asia/Irkutsk", new String[] {"Irkutsk \u6642\u9593", "IRKT",
+-                                           "Irkutsk \u590f\u4ee4\u6642\u9593", "IRKST",
+-                                           "\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593", "IRKT"}},
++            {"Asia/Irkutsk", IRKT},
+             {"Asia/Istanbul", EET},
+             {"Asia/Jakarta", WIT},
+             {"Asia/Jayapura", new String[] {"\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "WIT",
+@@ -646,16 +647,14 @@
+                                              "Petropavlovsk-Kamchatski \u590f\u4ee4\u6642\u9593", "PETST",
+                                              "Petropavlovsk-Kamchatski \u6642\u9593", "PETT"}},
+             {"Asia/Karachi", PKT},
+-            {"Asia/Kashgar", CTT},
++            {"Asia/Kashgar", XJT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
+             {"Asia/Khandyga", new String[] {"\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593", "YAKT",
+                                             "\u6F22\u5730\u52A0 (Khandyga) \u590F\u4EE4\u6642\u9593", "YAKST",
+                                             "\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593", "YAKT"}},
+             {"Asia/Kolkata", IST},
+-            {"Asia/Krasnoyarsk", new String[] {"\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u6642\u9593", "KRAT",
+-                                               "\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u590f\u4ee4\u6642\u9593", "KRAST",
+-                                               "\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593", "KRAT"}},
++            {"Asia/Krasnoyarsk", KRAT},
+             {"Asia/Kuala_Lumpur", MYT},
+             {"Asia/Kuching", MYT},
+             {"Asia/Kuwait", ARAST},
+@@ -670,7 +669,7 @@
+                                           "\u83F2\u5F8B\u8CD3\u6642\u9593", "PHT"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-            {"Asia/Novokuznetsk", NOVT},
++            {"Asia/Novokuznetsk", KRAT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"\u6b50\u4f5b\u6642\u9593", "ORAT",
+                                         "\u6b50\u4f5b\u590f\u4ee4\u6642\u9593", "ORAST",
+@@ -696,6 +695,9 @@
+             {"Asia/Samarkand", UZT},
+             {"Asia/Seoul", KST},
+             {"Asia/Singapore", SGT},
++            {"Asia/Srednekolymsk", new String[] {"Srednekolymsk Time", "SRET",
++                                                 "Srednekolymsk Daylight Time", "SREDT",
++                                                 "Srednekolymsk Time", "SRET"}},
+             {"Asia/Taipei", new String[] {"\u53f0\u7063\u6a19\u6e96\u6642\u9593", "TST",
+                                           "\u53f0\u7063\u590f\u4ee4\u6642\u9593", "TDT",
+                                           "\u53f0\u7063\u6642\u9593", "TT"}},
+@@ -710,7 +712,7 @@
+             {"Asia/Ujung_Pandang", CIT},
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+-            {"Asia/Urumqi", CTT},
++            {"Asia/Urumqi", XJT},
+             {"Asia/Ust-Nera", new String[] {"\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593", "VLAT",
+                                             "\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u590F\u4EE4\u6642\u9593", "VLAST",
+                                             "\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593", "VLAT"}},
+@@ -752,9 +754,9 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWST",
+-                                              "\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWST",
+-                                              "\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWT"}},
++            {"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "ACWST",
++                                              "\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "ACWDT",
++                                              "\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "ACWT"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+@@ -820,7 +822,7 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", FET},
++            {"Europe/Kaliningrad", EET},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+@@ -829,7 +831,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", FET},
++            {"Europe/Minsk", MSK},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -855,9 +857,7 @@
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+             {"Europe/Vilnius", EET},
+-            {"Europe/Volgograd", new String[] {"\u4f0f\u723e\u52a0\u683c\u52d2\u6642\u9593", "VOLT",
+-                                               "\u4f0f\u723e\u52a0\u683c\u52d2\u590f\u4ee4\u6642\u9593", "VOLST",
+-                                               "\u4F0F\u723E\u52A0\u683C\u52D2\u6642\u9593", "VOLT"}},
++            {"Europe/Volgograd", MSK},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+             {"Europe/Zaporozhye", EET},
+@@ -919,6 +919,9 @@
+             {"PRT", AST},
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
++            {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
++                                                   "Bougainville Daylight Time", "BST",
++                                                   "Bougainville Time", "BT"}},
+             {"Pacific/Chatham", CHAST},
+             {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+--- ./jdk/src/share/lib/security/java.security-aix	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/lib/security/java.security-aix	Mon Dec 08 12:29:42 2014 -0800
+@@ -210,8 +210,8 @@
+                org.jcp.xml.dsig.internal.,\
+                jdk.internal.,\
+                jdk.nashorn.internal.,\
+-               jdk.nashorn.tools.
+-
++               jdk.nashorn.tools.,\
++               com.sun.activation.registries.
+ 
+ #
+ # List of comma-separated packages that start with or equal this string
+@@ -257,8 +257,8 @@
+                    org.jcp.xml.dsig.internal.,\
+                    jdk.internal.,\
+                    jdk.nashorn.internal.,\
+-                   jdk.nashorn.tools.
+-
++                   jdk.nashorn.tools.,\
++                   com.sun.activation.registries.
+ 
+ #
+ # Determines whether this properties file can be appended to
+@@ -479,8 +479,12 @@
+ #
+ # In some environments, certain algorithms or key lengths may be undesirable
+ # when using SSL/TLS.  This section describes the mechanism for disabling
+-# algorithms during SSL/TLS security parameters negotiation, including cipher
+-# suites selection, peer authentication and key exchange mechanisms.
++# algorithms during SSL/TLS security parameters negotiation, including
++# protocol version negotiation, cipher suites selection, peer authentication
++# and key exchange mechanisms.
++#
++# Disabled algorithms will not be negotiated for SSL/TLS connections, even
++# if they are enabled explicitly in an application.
+ #
+ # For PKI-based peer authentication and key exchange mechanisms, this list
+ # of disabled algorithms will also be checked during certification path
+@@ -495,4 +499,5 @@
+ # It is not guaranteed to be examined and used by other implementations.
+ #
+ # Example:
+-#   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
++#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
++jdk.tls.disabledAlgorithms=SSLv3
+--- ./jdk/src/share/lib/security/java.security-linux	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/lib/security/java.security-linux	Mon Dec 08 12:29:42 2014 -0800
+@@ -479,8 +479,12 @@
+ #
+ # In some environments, certain algorithms or key lengths may be undesirable
+ # when using SSL/TLS.  This section describes the mechanism for disabling
+-# algorithms during SSL/TLS security parameters negotiation, including cipher
+-# suites selection, peer authentication and key exchange mechanisms.
++# algorithms during SSL/TLS security parameters negotiation, including
++# protocol version negotiation, cipher suites selection, peer authentication
++# and key exchange mechanisms.
++#
++# Disabled algorithms will not be negotiated for SSL/TLS connections, even
++# if they are enabled explicitly in an application.
+ #
+ # For PKI-based peer authentication and key exchange mechanisms, this list
+ # of disabled algorithms will also be checked during certification path
+@@ -495,4 +499,5 @@
+ # It is not guaranteed to be examined and used by other implementations.
+ #
+ # Example:
+-#   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
++#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
++jdk.tls.disabledAlgorithms=SSLv3
+--- ./jdk/src/share/lib/security/java.security-macosx	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/lib/security/java.security-macosx	Mon Dec 08 12:29:42 2014 -0800
+@@ -482,8 +482,12 @@
+ #
+ # In some environments, certain algorithms or key lengths may be undesirable
+ # when using SSL/TLS.  This section describes the mechanism for disabling
+-# algorithms during SSL/TLS security parameters negotiation, including cipher
+-# suites selection, peer authentication and key exchange mechanisms.
++# algorithms during SSL/TLS security parameters negotiation, including
++# protocol version negotiation, cipher suites selection, peer authentication
++# and key exchange mechanisms.
++#
++# Disabled algorithms will not be negotiated for SSL/TLS connections, even
++# if they are enabled explicitly in an application.
+ #
+ # For PKI-based peer authentication and key exchange mechanisms, this list
+ # of disabled algorithms will also be checked during certification path
+@@ -498,4 +502,5 @@
+ # It is not guaranteed to be examined and used by other implementations.
+ #
+ # Example:
+-#   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
++#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
++jdk.tls.disabledAlgorithms=SSLv3
+--- ./jdk/src/share/lib/security/java.security-solaris	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/lib/security/java.security-solaris	Mon Dec 08 12:29:42 2014 -0800
+@@ -481,8 +481,12 @@
+ #
+ # In some environments, certain algorithms or key lengths may be undesirable
+ # when using SSL/TLS.  This section describes the mechanism for disabling
+-# algorithms during SSL/TLS security parameters negotiation, including cipher
+-# suites selection, peer authentication and key exchange mechanisms.
++# algorithms during SSL/TLS security parameters negotiation, including
++# protocol version negotiation, cipher suites selection, peer authentication
++# and key exchange mechanisms.
++#
++# Disabled algorithms will not be negotiated for SSL/TLS connections, even
++# if they are enabled explicitly in an application.
+ #
+ # For PKI-based peer authentication and key exchange mechanisms, this list
+ # of disabled algorithms will also be checked during certification path
+@@ -497,4 +501,5 @@
+ # It is not guaranteed to be examined and used by other implementations.
+ #
+ # Example:
+-#   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
++#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
++jdk.tls.disabledAlgorithms=SSLv3
+--- ./jdk/src/share/lib/security/java.security-windows	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/lib/security/java.security-windows	Mon Dec 08 12:29:42 2014 -0800
+@@ -482,8 +482,12 @@
+ #
+ # In some environments, certain algorithms or key lengths may be undesirable
+ # when using SSL/TLS.  This section describes the mechanism for disabling
+-# algorithms during SSL/TLS security parameters negotiation, including cipher
+-# suites selection, peer authentication and key exchange mechanisms.
++# algorithms during SSL/TLS security parameters negotiation, including
++# protocol version negotiation, cipher suites selection, peer authentication
++# and key exchange mechanisms.
++#
++# Disabled algorithms will not be negotiated for SSL/TLS connections, even
++# if they are enabled explicitly in an application.
+ #
+ # For PKI-based peer authentication and key exchange mechanisms, this list
+ # of disabled algorithms will also be checked during certification path
+@@ -498,4 +502,5 @@
+ # It is not guaranteed to be examined and used by other implementations.
+ #
+ # Example:
+-#   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
++#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
++jdk.tls.disabledAlgorithms=SSLv3
+--- ./jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp	Mon Dec 08 12:29:42 2014 -0800
+@@ -583,6 +583,8 @@
+                 LEReferenceTo
+                      chainSubClassRuleTable(chainSubClassSetTable, success, chainSubClassRuleTableOffset);
+                 le_uint16 backtrackGlyphCount = SWAPW(chainSubClassRuleTable->backtrackGlyphCount);
++                LEReferenceToArrayOf   backtrackClassArray(base, success, chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount);
++                if( LE_FAILURE(success) ) { return 0; }
+                 le_uint16 inputGlyphCount = SWAPW(chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount]) - 1;
+                 LEReferenceToArrayOf   inputClassArray(base, success, &chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount + 1],inputGlyphCount+2); // +2 for the lookaheadGlyphCount count
+                 le_uint16 lookaheadGlyphCount = SWAPW(inputClassArray.getObject(inputGlyphCount, success));
+@@ -599,8 +601,6 @@
+                 }
+ 
+                 tempIterator.prev();
+-                LEReferenceToArrayOf   backtrackClassArray(base, success, chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount);
+-                if( LE_FAILURE(success) ) { return 0; }
+                 if (! matchGlyphClasses(backtrackClassArray, backtrackGlyphCount,
+                                         &tempIterator, backtrackClassDefinitionTable, success, TRUE)) {
+                     continue;
+--- ./jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp	Mon Dec 08 12:29:42 2014 -0800
+@@ -45,6 +45,9 @@
+     le_int32  coverageIndex = getGlyphCoverage(base, glyphID, success);
+     le_uint16 eeCount       = SWAPW(entryExitCount);
+ 
++    LEReferenceToArrayOf
++        entryExitRecordsArrayRef(base, success, entryExitRecords, coverageIndex);
++
+     if (coverageIndex < 0 || coverageIndex >= eeCount || LE_FAILURE(success)) {
+         glyphIterator->setCursiveGlyph();
+         return 0;
+--- ./jdk/src/share/native/sun/font/layout/Features.cpp	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/Features.cpp	Mon Dec 08 12:29:42 2014 -0800
+@@ -40,6 +40,9 @@
+ 
+ LEReferenceTo FeatureListTable::getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const
+ {
++    LEReferenceToArrayOf
++        featureRecordArrayRef(base, success, featureRecordArray, featureIndex);
++
+   if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) {
+     return LEReferenceTo();
+   }
+--- ./jdk/src/share/native/sun/font/layout/LETableReference.h	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/LETableReference.h	Mon Dec 08 12:29:42 2014 -0800
+@@ -470,7 +470,12 @@
+ #endif
+ 
+   const T& getObject(le_uint32 i, LEErrorCode &success) const {
+-    return *getAlias(i,success);
++      const T *ret = getAlias(i, success);
++      if (LE_FAILURE(success) || ret==NULL) {
++          return *(new T(0));
++      } else {
++          return *ret;
++     }
+   }
+ 
+   /**
+--- ./jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp	Mon Dec 08 12:29:42 2014 -0800
+@@ -64,6 +64,9 @@
+             LEReferenceTo   ligTable(ligSetTable, success, ligTableOffset);
+             if(LE_FAILURE(success)) { return 0; }
+             le_uint16 compCount = SWAPW(ligTable->compCount) - 1;
++            LEReferenceToArrayOf
++                componentArrayRef(base, success, ligTable->componentArray, compCount);
++            if (LE_FAILURE(success)) { return 0; }
+             le_int32 startPosition = glyphIterator->getCurrStreamPosition();
+             TTGlyphID ligGlyph = SWAPW(ligTable->ligGlyph);
+             le_uint16 comp;
+--- ./jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp	Mon Dec 08 12:29:42 2014 -0800
+@@ -61,6 +61,8 @@
+ 
+     le_int32 coverageIndex = getGlyphCoverage(base, glyph, success);
+     le_uint16 seqCount = SWAPW(sequenceCount);
++    LEReferenceToArrayOf
++        sequenceTableOffsetArrayRef(base, success, sequenceTableOffsetArray, seqCount);
+ 
+     if (LE_FAILURE(success)) {
+         return 0;
+--- ./jdk/src/solaris/native/java/net/NetworkInterface.c	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/NetworkInterface.c	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -570,9 +570,14 @@
+     jboolean isCopy;
+     int ret = -1;
+     int sock;
+-    const char* name_utf;
++    const char* name_utf = NULL;
+ 
+-    name_utf = (*env)->GetStringUTFChars(env, name, &isCopy);
++    if (name != NULL) {
++        name_utf = (*env)->GetStringUTFChars(env, name, &isCopy);
++    } else {
++        JNU_ThrowNullPointerException(env, "network interface name is NULL");
++        return ret;
++    }
+     if (name_utf == NULL) {
+        if (!(*env)->ExceptionCheck(env))
+            JNU_ThrowOutOfMemoryError(env, NULL);
+@@ -600,7 +605,12 @@
+     const char* name_utf;
+     int flags = 0;
+ 
+-    name_utf = (*env)->GetStringUTFChars(env, name, &isCopy);
++    if (name != NULL) {
++        name_utf = (*env)->GetStringUTFChars(env, name, &isCopy);
++    } else {
++        JNU_ThrowNullPointerException(env, "network interface name is NULL");
++        return -1;
++    }
+     if (name_utf == NULL) {
+        if (!(*env)->ExceptionCheck(env))
+            JNU_ThrowOutOfMemoryError(env, NULL);
+@@ -1474,7 +1484,12 @@
+     struct ifreq if2;
+ 
+     memset((char *) &if2, 0, sizeof(if2));
+-    strcpy(if2.ifr_name, ifname);
++    if (ifname != NULL) {
++        strcpy(if2.ifr_name, ifname);
++    } else {
++        JNU_ThrowNullPointerException(env, "network interface name is NULL");
++        return -1;
++    }
+ 
+     if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) {
+         NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "IOCTL SIOCGIFMTU failed");
+--- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -1474,10 +1474,12 @@
+         static jmethodID ni_ctrID;
+         static jfieldID ni_indexID;
+         static jfieldID ni_addrsID;
++        static jfieldID ni_nameID;
+ 
+         jobjectArray addrArray;
+         jobject addr;
+         jobject ni;
++        jobject ni_name;
+ 
+         struct in_addr in;
+         struct in_addr *inP = ∈
+@@ -1527,6 +1529,8 @@
+             ni_addrsID = (*env)->GetFieldID(env, c, "addrs",
+                                             "[Ljava/net/InetAddress;");
+             CHECK_NULL_RETURN(ni_addrsID, NULL);
++            ni_nameID = (*env)->GetFieldID(env, c,"name", "Ljava/lang/String;");
++            CHECK_NULL_RETURN(ni_nameID, NULL);
+             ni_class = (*env)->NewGlobalRef(env, c);
+             CHECK_NULL_RETURN(ni_class, NULL);
+         }
+@@ -1548,6 +1552,10 @@
+         CHECK_NULL_RETURN(addrArray, NULL);
+         (*env)->SetObjectArrayElement(env, addrArray, 0, addr);
+         (*env)->SetObjectField(env, ni, ni_addrsID, addrArray);
++        ni_name = (*env)->NewStringUTF(env, "");
++        if (ni_name != NULL) {
++            (*env)->SetObjectField(env, ni, ni_nameID, ni_name);
++        }
+         return ni;
+     }
+ 
+@@ -1564,14 +1572,16 @@
+         static jfieldID ni_indexID;
+         static jfieldID ni_addrsID;
+         static jclass ia_class;
++        static jfieldID ni_nameID;
+         static jmethodID ia_anyLocalAddressID;
+ 
+-        int index;
++        int index = 0;
+         int len = sizeof(index);
+ 
+         jobjectArray addrArray;
+         jobject addr;
+         jobject ni;
++        jobject ni_name;
+ 
+         if (JVM_GetSockOpt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF,
+                            (char*)&index, &len) < 0) {
+@@ -1600,6 +1610,8 @@
+                                                              "anyLocalAddress",
+                                                              "()Ljava/net/InetAddress;");
+             CHECK_NULL_RETURN(ia_anyLocalAddressID, NULL);
++            ni_nameID = (*env)->GetFieldID(env, c,"name", "Ljava/lang/String;");
++            CHECK_NULL_RETURN(ni_nameID, NULL);
+             ni_class = (*env)->NewGlobalRef(env, c);
+             CHECK_NULL_RETURN(ni_class, NULL);
+         }
+@@ -1660,6 +1672,10 @@
+         CHECK_NULL_RETURN(addrArray, NULL);
+         (*env)->SetObjectArrayElement(env, addrArray, 0, addr);
+         (*env)->SetObjectField(env, ni, ni_addrsID, addrArray);
++        ni_name = (*env)->NewStringUTF(env, "");
++        if (ni_name != NULL) {
++            (*env)->SetObjectField(env, ni, ni_nameID, ni_name);
++        }
+         return ni;
+     }
+ #endif
+--- ./jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -36,6 +36,7 @@
+ import java.util.*;
+ import java.util.List;
+ import java.util.concurrent.*;
++import java.util.stream.Stream;
+ 
+ import static sun.awt.shell.Win32ShellFolder2.*;
+ import sun.awt.OSInfo;
+@@ -251,7 +252,7 @@
+             if (file == null) {
+                 file = getDesktop();
+             }
+-            return file;
++            return checkFile(file);
+         } else if (key.equals("roots")) {
+             // Should be "History" and "Desktop" ?
+             if (roots == null) {
+@@ -262,11 +263,11 @@
+                     roots = (File[])super.get(key);
+                 }
+             }
+-            return roots;
++            return checkFiles(roots);
+         } else if (key.equals("fileChooserComboBoxFolders")) {
+             Win32ShellFolder2 desktop = getDesktop();
+ 
+-            if (desktop != null) {
++            if (desktop != null && checkFile(desktop) != null) {
+                 ArrayList folders = new ArrayList();
+                 Win32ShellFolder2 drives = getDrives();
+ 
+@@ -277,7 +278,7 @@
+ 
+                 folders.add(desktop);
+                 // Add all second level folders
+-                File[] secondLevelFolders = desktop.listFiles();
++                File[] secondLevelFolders = checkFiles(desktop.listFiles());
+                 Arrays.sort(secondLevelFolders);
+                 for (File secondLevelFolder : secondLevelFolders) {
+                     Win32ShellFolder2 folder = (Win32ShellFolder2) secondLevelFolder;
+@@ -285,7 +286,7 @@
+                         folders.add(folder);
+                         // Add third level for "My Computer"
+                         if (folder.equals(drives)) {
+-                            File[] thirdLevelFolders = folder.listFiles();
++                            File[] thirdLevelFolders = checkFiles(folder.listFiles());
+                             if (thirdLevelFolders != null && thirdLevelFolders.length > 0) {
+                                 List thirdLevelFoldersList = Arrays.asList(thirdLevelFolders);
+ 
+@@ -295,7 +296,7 @@
+                         }
+                     }
+                 }
+-                return folders.toArray(new File[folders.size()]);
++                return checkFiles(folders);
+             } else {
+                 return super.get(key);
+             }
+@@ -332,7 +333,7 @@
+                     }
+                 }
+             }
+-            return folders.toArray(new File[folders.size()]);
++            return checkFiles(folders);
+         } else if (key.startsWith("fileChooserIcon ")) {
+             String name = key.substring(key.indexOf(" ") + 1);
+ 
+@@ -378,6 +379,41 @@
+         return null;
+     }
+ 
++    private File checkFile(File file) {
++        SecurityManager sm = System.getSecurityManager();
++        return (sm == null || file == null) ? file : checkFile(file, sm);
++    }
++
++    private File checkFile(File file, SecurityManager sm) {
++        try {
++            sm.checkRead(file.getPath());
++            return file;
++        } catch (SecurityException se) {
++            return null;
++        }
++    }
++
++    private File[] checkFiles(File[] files) {
++        SecurityManager sm = System.getSecurityManager();
++        if (sm == null || files == null || files.length == 0) {
++            return files;
++        }
++        return checkFiles(Arrays.stream(files), sm);
++    }
++
++    private File[] checkFiles(List files) {
++        SecurityManager sm = System.getSecurityManager();
++        if (sm == null || files.isEmpty()) {
++            return files.toArray(new File[files.size()]);
++        }
++        return checkFiles(files.stream(), sm);
++    }
++
++    private File[] checkFiles(Stream filesStream, SecurityManager sm) {
++        return filesStream.filter((file) -> checkFile(file, sm) != null)
++                .toArray(File[]::new);
++    }
++
+     /**
+      * Does dir represent a "computer" such as a node on the network, or
+      * "My Computer" on the desktop.
+--- ./jdk/src/windows/native/sun/windows/awt_Component.cpp	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/windows/native/sun/windows/awt_Component.cpp	Mon Dec 08 12:29:42 2014 -0800
+@@ -492,7 +492,12 @@
+      * member is referred in the GetClassName method of AwtLabel class.
+      * So m_peerObject member must be set here.
+      */
+-    m_peerObject = env->NewGlobalRef(peer);
++    if (m_peerObject == NULL) {
++        m_peerObject = env->NewGlobalRef(peer);
++    } else {
++        assert(env->IsSameObject(m_peerObject, peer));
++    }
++
+     RegisterClass();
+ 
+     jobject target = env->GetObjectField(peer, AwtObject::targetID);
+@@ -3960,7 +3965,6 @@
+         DASSERT(stringCls);
+         CHECK_NULL(stringCls);
+         clauseReading = env->NewObjectArray(cClause, stringCls, NULL);
+-        env->DeleteLocalRef(stringCls);
+         DASSERT(clauseReading);
+         CHECK_NULL(clauseReading);
+         for (int i=0; iSetObjectArrayElement(clauseReading, i, rgClauseReading[i]);
+--- ./jdk/test/ProblemList.txt	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/ProblemList.txt	Mon Dec 08 12:29:42 2014 -0800
+@@ -272,4 +272,7 @@
+ # Filed 6772009
+ java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java generic-all
+ 
++# 8051641
++sun/util/calendar/zi/TestZoneInfo310.java                        generic-all
++
+ ############################################################################
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/java/awt/List/ListGarbageCollectionTest/AwtListGarbageCollectionTest.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 8040076
++ * @summary AwtList not garbage collected
++ * @run main/othervm -Xmx100m AwtListGarbageCollectionTest
++ */
++
++import java.awt.*;
++import java.awt.event.WindowAdapter;
++import java.awt.event.WindowEvent;
++import java.lang.ref.WeakReference;
++
++public class AwtListGarbageCollectionTest {
++    public static void main(String[] args) {
++        Frame frame = new Frame("List leak test");
++        try {
++            test(frame);
++        } finally {
++            frame.dispose();
++        }
++    }
++
++    private static void test(Frame frame) {
++        WeakReference weakListRef = null;
++        try {
++            frame.setSize(300, 200);
++            frame.setVisible(true);
++
++            List strongListRef = new List();
++            frame.add(strongListRef);
++            strongListRef.setMultipleMode(true);
++            frame.remove(strongListRef);
++            weakListRef = new WeakReference(strongListRef);
++            strongListRef = null;
++
++            //make out of memory to force gc
++            String veryLongString = new String(new char[100]);
++            while (true) {
++                veryLongString += veryLongString;
++            }
++        } catch (OutOfMemoryError e) {
++            if (weakListRef == null) {
++                throw new RuntimeException("Weak list ref wasn't created");
++            } else if (weakListRef.get() != null) {
++                throw new RuntimeException("List wasn't garbage collected");
++            }
++        }
++    }
++}
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/java/awt/im/8041990/bug8041990.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,104 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++
++/*
++  @test
++  @bug 8041990
++  @summary Language specific keys does not work in applets when opened outside the browser
++  @author Petr Pchelko
++*/
++
++import sun.awt.SunToolkit;
++
++import javax.swing.*;
++import java.awt.*;
++import java.awt.event.InputMethodEvent;
++import java.awt.font.TextHitInfo;
++import java.text.AttributedString;
++import java.util.concurrent.CountDownLatch;
++import java.util.concurrent.atomic.AtomicReference;
++
++public class bug8041990 {
++    private static JFrame frame;
++    private static JComponent component;
++
++    public static void main(String[] args) throws Exception {
++        ThreadGroup stubTG = new ThreadGroup(getRootThreadGroup(), "Stub Thread Group");
++        ThreadGroup swingTG = new ThreadGroup(getRootThreadGroup(), "SwingTG");
++        try {
++            Thread stubThread = new Thread(stubTG, SunToolkit::createNewAppContext);
++            stubThread.start();
++            stubThread.join();
++
++            CountDownLatch startSwingLatch = new CountDownLatch(1);
++            new Thread(swingTG, () -> {
++                SunToolkit.createNewAppContext();
++                SwingUtilities.invokeLater(() -> {
++                    frame = new JFrame();
++                    component = new JLabel("Test Text");
++                    frame.add(component);
++                    frame.setBounds(100, 100, 100, 100);
++                    frame.setVisible(true);
++                    startSwingLatch.countDown();
++                });
++            }).start();
++            startSwingLatch.await();
++
++            AtomicReference caughtException = new AtomicReference<>();
++            Thread checkThread = new Thread(getRootThreadGroup(), () -> {
++                try {
++                    // If the bug is present this will throw exception
++                    new InputMethodEvent(component,
++                            InputMethodEvent.CARET_POSITION_CHANGED,
++                            TextHitInfo.leading(0),
++                            TextHitInfo.trailing(0));
++                } catch (Exception e) {
++                    caughtException.set(e);
++                }
++            });
++            checkThread.start();
++            checkThread.join();
++
++            if (caughtException.get() != null) {
++                throw new RuntimeException("Failed. Caught exception!", caughtException.get());
++            }
++        } finally {
++            new Thread(swingTG, () -> SwingUtilities.invokeLater(() -> {
++                if (frame != null) {
++                    frame.dispose();
++                }
++            })).start();
++        }
++    }
++
++    private static ThreadGroup getRootThreadGroup() {
++        ThreadGroup currentTG = Thread.currentThread().getThreadGroup();
++        ThreadGroup parentTG = currentTG.getParent();
++        while (parentTG != null) {
++            currentTG = parentTG;
++            parentTG = currentTG.getParent();
++        }
++        return currentTG;
++    }
++}
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/java/io/ByteArrayOutputStream/MaxCapacity.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,65 @@
++/*
++ * Copyright (c) 2014 Google Inc. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @ignore This test has huge memory requirements
++ * @run main/timeout=1800/othervm -Xmx8g MaxCapacity
++ * @bug 8055949
++ * @summary Check that we can write (almost) Integer.MAX_VALUE bytes
++ *          to a ByteArrayOutputStream.
++ * @author Martin Buchholz
++ */
++import java.io.ByteArrayOutputStream;
++
++public class MaxCapacity {
++    public static void main(String[] args) {
++        long maxHeap = Runtime.getRuntime().maxMemory();
++        if (maxHeap < 3L * Integer.MAX_VALUE) {
++            System.out.printf("Skipping test; max memory %sM too small%n",
++                              maxHeap/(1024*1024));
++            return;
++        }
++        ByteArrayOutputStream baos = new ByteArrayOutputStream();
++        for (long n = 0; ; n++) {
++            try {
++                baos.write((byte)'x');
++            } catch (Throwable t) {
++                // check data integrity while we're here
++                byte[] bytes = baos.toByteArray();
++                if (bytes.length != n)
++                    throw new AssertionError("wrong length");
++                if (bytes[0] != 'x' ||
++                    bytes[bytes.length - 1] != 'x')
++                    throw new AssertionError("wrong contents");
++
++                long gap = Integer.MAX_VALUE - n;
++                System.out.printf("gap=%dM %d%n", gap/(1024*1024), gap);
++                if (gap > 1024)
++                    throw t;
++                // t.printStackTrace();
++                break;
++            }
++        }
++    }
++}
+--- ./jdk/test/java/time/test/java/time/format/TestZoneTextPrinterParser.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/java/time/test/java/time/format/TestZoneTextPrinterParser.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -138,7 +138,7 @@
+             {"Asia/Taipei",      "China Standard Time",   preferred, Locale.ENGLISH, TextStyle.FULL},
+             {"America/Chicago",  "CST",                   none,      Locale.ENGLISH, TextStyle.SHORT},
+             {"Asia/Taipei",      "CST",                   preferred, Locale.ENGLISH, TextStyle.SHORT},
+-            {"Australia/South",  "CST",                   preferred_s, Locale.ENGLISH, TextStyle.SHORT},
++            {"Australia/South",  "ACST",                  preferred_s, Locale.ENGLISH, TextStyle.SHORT},
+             {"America/Chicago",  "CDT",                   none,        Locale.ENGLISH, TextStyle.SHORT},
+             {"Asia/Shanghai",    "CDT",                   preferred_s, Locale.ENGLISH, TextStyle.SHORT},
+        };
+--- ./jdk/test/java/util/Currency/tablea1.txt	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/java/util/Currency/tablea1.txt	Mon Dec 08 12:29:42 2014 -0800
+@@ -1,12 +1,12 @@
+ #
+ #
+-# Amendments up until ISO 4217 AMENDMENT NUMBER 156
+-#   (As of 23 July 2013)
++# Amendments up until ISO 4217 AMENDMENT NUMBER 159
++#   (As of 15 August 2014)
+ #
+ 
+ # Version
+ FILEVERSION=1
+-DATAVERSION=156
++DATAVERSION=159
+ 
+ # ISO 4217 currency data
+ AF	AFN	971	2
+@@ -142,7 +142,7 @@
+ LR	LRD	430	2
+ LY	LYD	434	3
+ LI	CHF	756	2
+-LT	LTL	440	2
++LT	LTL	440	2	2014-12-31-22-00-00	EUR	978	2
+ LU	EUR	978	2
+ MO	MOP	446	2
+ MK	MKD	807	2
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/swing/JComponent/8043610/bug8043610.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,100 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++
++/*
++  @test
++  @bug 8043610
++  @summary Tests that JComponent invalidate, revalidate and repaint methods could
++           be called from any thread
++  @author Petr Pchelko
++*/
++
++import sun.awt.SunToolkit;
++
++import javax.swing.*;
++import java.awt.*;
++import java.util.concurrent.CountDownLatch;
++import java.util.concurrent.atomic.AtomicReference;
++
++public class bug8043610 {
++    private static volatile JFrame frame;
++    private static volatile JComponent component;
++
++    public static void main(String[] args) throws Exception {
++        ThreadGroup stubTG = new ThreadGroup(getRootThreadGroup(), "Stub Thread Group");
++        ThreadGroup swingTG = new ThreadGroup(getRootThreadGroup(), "SwingTG");
++        try {
++            Thread stubThread = new Thread(stubTG, SunToolkit::createNewAppContext);
++            stubThread.start();
++            stubThread.join();
++
++            CountDownLatch startSwingLatch = new CountDownLatch(1);
++            new Thread(swingTG, () -> {
++                SunToolkit.createNewAppContext();
++                SwingUtilities.invokeLater(() -> {
++                    frame = new JFrame();
++                    component = new JLabel("Test Text");
++                    frame.add(component);
++                    frame.setBounds(100, 100, 100, 100);
++                    frame.setVisible(true);
++                    startSwingLatch.countDown();
++                });
++            }).start();
++            startSwingLatch.await();
++
++            AtomicReference caughtException = new AtomicReference<>();
++            Thread checkThread = new Thread(getRootThreadGroup(), () -> {
++                try {
++                    component.invalidate();
++                    component.revalidate();
++                    component.repaint(new Rectangle(0, 0, 0, 0));
++                } catch (Exception e) {
++                    caughtException.set(e);
++                }
++            });
++            checkThread.start();
++            checkThread.join();
++
++            if (caughtException.get() != null) {
++                throw new RuntimeException("Failed. Caught exception!", caughtException.get());
++            }
++        } finally {
++            new Thread(swingTG, () -> SwingUtilities.invokeLater(() -> {
++                if (frame != null) {
++                    frame.dispose();
++                }
++            })).start();
++        }
++    }
++
++    private static ThreadGroup getRootThreadGroup() {
++        ThreadGroup currentTG = Thread.currentThread().getThreadGroup();
++        ThreadGroup parentTG = currentTG.getParent();
++        while (parentTG != null) {
++            currentTG = parentTG;
++            parentTG = currentTG.getParent();
++        }
++        return currentTG;
++    }
++}
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/swing/JFileChooser/8062561/bug8062561.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,210 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.awt.Robot;
++import java.awt.event.KeyEvent;
++import java.io.File;
++import java.io.IOException;
++import java.io.InputStream;
++import java.io.PrintWriter;
++import java.util.concurrent.TimeUnit;
++import javax.swing.JFileChooser;
++import javax.swing.SwingUtilities;
++import javax.swing.filechooser.FileSystemView;
++import sun.awt.OSInfo;
++
++/**
++ * @test
++ * @bug 8062561
++ * @summary File system view returns null default directory
++ * @run main/othervm bug8062561 GENERATE_POLICY
++ * @run main/othervm/policy=security.policy bug8062561 CHECK_DEFAULT_DIR run
++ */
++public class bug8062561 {
++
++    private static final String POLICY_FILE = "security2.policy";
++    private static volatile boolean fileChooserIsShown = false;
++
++    public static void main(String[] args) throws Exception {
++
++        String test = args[0];
++
++        switch (test) {
++            case "GENERATE_POLICY":
++                generatePolicyFile();
++                break;
++            case "CHECK_DEFAULT_DIR":
++                checkDefaultDirectory();
++                break;
++            case "CHECK_FILE_CHOOSER":
++                checkFileChooser();
++                break;
++            default:
++                throw new RuntimeException("Wrong argument!");
++        }
++    }
++
++    private static void checkDefaultDirectory() {
++        if (System.getSecurityManager() == null) {
++            throw new RuntimeException("Security manager is not set!");
++        }
++
++        File defaultDirectory = FileSystemView.getFileSystemView().
++                getDefaultDirectory();
++        if (defaultDirectory != null) {
++            throw new RuntimeException("File system default directory is null!");
++        }
++    }
++    private static volatile JFileChooser fileChooser;
++
++    private static void checkFileChooser() throws Exception {
++        if (System.getSecurityManager() == null) {
++            throw new RuntimeException("Security manager is not set!");
++        }
++
++        Robot robot = new Robot();
++        robot.setAutoDelay(50);
++
++        SwingUtilities.invokeLater(new Runnable() {
++
++            public void run() {
++                fileChooser = new JFileChooser();
++                fileChooser.showOpenDialog(null);
++                fileChooserIsShown = true;
++                System.out.println("Start file chooser: " + fileChooserIsShown);
++            }
++        });
++
++        long time = System.currentTimeMillis();
++        while (fileChooser == null) {
++            if (System.currentTimeMillis() - time >= 10000) {
++                throw new RuntimeException("FileChoser is not shown!");
++            }
++            Thread.sleep(500);
++        }
++
++        Thread.sleep(500);
++        robot.keyPress(KeyEvent.VK_ESCAPE);
++        robot.keyRelease(KeyEvent.VK_ESCAPE);
++        System.exit(0);
++    }
++
++    private static void generatePolicyFile() throws Exception {
++        if (System.getSecurityManager() != null) {
++            throw new RuntimeException("Security manager should be null!");
++        }
++
++        if (!OSInfo.getOSType().equals(OSInfo.OSType.WINDOWS)) {
++            return;
++        }
++
++        File defaultDirectory = FileSystemView.getFileSystemView().
++                getDefaultDirectory();
++
++        if (defaultDirectory == null) {
++            throw new RuntimeException("Default directory is null!");
++        }
++
++        File policyFile = new File(POLICY_FILE);
++        if (!policyFile.exists()) {
++            policyFile.createNewFile();
++        }
++
++        try (PrintWriter writer = new PrintWriter(policyFile, "UTF-8")) {
++            writer.println("grant {");
++            String documents = defaultDirectory.getCanonicalPath();
++            documents = documents.replace('\\', '/');
++            // Documents permission
++            writer.print("  permission java.io.FilePermission");
++            writer.print(" \"" + documents + "\",");
++            writer.println(" \"read\";");
++            // Desktop permission
++            writer.print("  permission java.io.FilePermission");
++            writer.print(" \"" + documents.replace("Documents", "Desktop") + "\",");
++            writer.println(" \"read\";");
++            // robot permission // "java.awt.AWTPermission" "createRobot"
++            writer.print("  permission java.awt.AWTPermission");
++            writer.println(" \"createRobot\";");
++            writer.println("};");
++        }
++
++        performTest();
++    }
++
++    private static void performTest() throws Exception {
++        String javaPath = System.getProperty("java.home", "");
++        String command = javaPath + File.separator + "bin" + File.separator + "java"
++                + "  -Djava.security.manager -Djava.security.policy=" + POLICY_FILE
++                + " bug8062561 CHECK_FILE_CHOOSER";
++        System.out.println(command);
++        boolean processExit = false;
++
++        Process process = Runtime.getRuntime().exec(command);
++
++        try {
++            processExit = process.waitFor(20, TimeUnit.SECONDS);
++        } catch (IllegalThreadStateException e) {
++            throw new RuntimeException(e);
++        }
++        System.out.println("[RESULT] : "
++                + "The sub process has cleanly exited : PASS");
++
++        InputStream errorStream = process.getErrorStream();
++        System.out.println("========= Child process stderr ========");
++        boolean exception = dumpStream(errorStream);
++        if (exception) {
++            throw new RuntimeException("[RESULT] :"
++                    + " Exception in child process : FAIL");
++        }
++        System.out.println("=======================================");
++
++        InputStream processInputStream = process.getInputStream();
++        System.out.println("========= Child process output ========");
++        dumpStream(processInputStream);
++        System.out.println("=======================================");
++
++        if (!processExit) {
++            process.destroy();
++            throw new RuntimeException("[RESULT] : "
++                    + "The sub process has not exited : FAIL");
++        }
++    }
++
++    public static boolean dumpStream(InputStream in) throws IOException {
++        String tempString;
++        int count = in.available();
++        boolean exception = false;
++        while (count > 0) {
++            byte[] b = new byte[count];
++            in.read(b);
++            tempString = new String(b);
++            if (!exception) {
++                exception = tempString.indexOf("Exception") != -1;
++            }
++            System.out.println(tempString);
++            count = in.available();
++        }
++
++        return exception;
++    }
++}
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/swing/JFileChooser/8062561/security.policy	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,4 @@
++grant {
++
++    permission java.util.PropertyPermission  "user.home", "read";
++};
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/swing/JFileChooser/8062561/security2.policy	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,1 @@
++// Autogenerated file
+\ No newline at end of file
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/test/javax/xml/bind/marshal/8036981/Good.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -0,0 +1,94 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++package testjaxbcontext;
++
++import org.w3c.dom.Element;
++import javax.xml.bind.annotation.XmlAccessType;
++import javax.xml.bind.annotation.XmlAccessorType;
++import javax.xml.bind.annotation.XmlAnyElement;
++import javax.xml.bind.annotation.XmlType;
++import java.util.ArrayList;
++import java.util.List;
++
++/**
++ * 

++ * Java class for Good complex type. ++ * ++ *

++ * The following schema fragment specifies the expected content contained within ++ * this class. ++ * ++ *

++ * <complexType name="Good">
++ *   <complexContent>
++ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
++ *       <sequence>
++ *         <any processContents='skip' maxOccurs="70"/>
++ *       </sequence>
++ *     </restriction>
++ *   </complexContent>
++ * </complexType>
++ * 
++ * ++ * ++ */ ++@XmlAccessorType(XmlAccessType.FIELD) ++@XmlType(name = "Good", propOrder = { ++ "any" ++}) ++public class Good { ++ ++ @XmlAnyElement ++ protected List any; ++ ++ /** ++ * Gets the value of the any property. ++ * ++ *

++ * This accessor method returns a reference to the live list, not a ++ * snapshot. Therefore any modification you make to the returned list will ++ * be present inside the JAXB object. This is why there is not a ++ * set method for the any property. ++ * ++ *

++ * For example, to add a new item, do as follows: ++ *

++     *    getAny().add(newItem);
++     * 
++ * ++ * ++ *

++ * Objects of the following type(s) are allowed in the list ++ * {@link org.w3c.dom.Element } ++ * ++ * ++ */ ++ public List getAny() { ++ if (any == null) { ++ any = new ArrayList(); ++ } ++ return this.any; ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/marshal/8036981/Main.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,104 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package testjaxbcontext; ++ ++import javax.xml.bind.annotation.*; ++ ++/** ++ *

++ * Java class for main complex type. ++ * ++ *

++ * The following schema fragment specifies the expected content contained within ++ * this class. ++ * ++ *

++ * <complexType name="main">
++ *   <complexContent>
++ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
++ *       <sequence>
++ *         <element name="Root" type="{}Root"/>
++ *         <element name="Good" type="{}Good"/>
++ *       </sequence>
++ *     </restriction>
++ *   </complexContent>
++ * </complexType>
++ * 
++ * ++ * ++ */ ++@XmlAccessorType(XmlAccessType.FIELD) ++@XmlType(name = "main", propOrder = { ++ "root", ++ "good" ++}) ++@XmlRootElement ++public class Main { ++ ++ @XmlElement(name = "Root", required = true) ++ protected Root root; ++ @XmlElement(name = "Good", required = true) ++ protected Good good; ++ ++ /** ++ * Gets the value of the root property. ++ * ++ * @return possible object is {@link Root } ++ * ++ */ ++ public Root getRoot() { ++ return root; ++ } ++ ++ /** ++ * Sets the value of the root property. ++ * ++ * @param value allowed object is {@link Root } ++ * ++ */ ++ public void setRoot(Root value) { ++ this.root = value; ++ } ++ ++ /** ++ * Gets the value of the good property. ++ * ++ * @return possible object is {@link Good } ++ * ++ */ ++ public Good getGood() { ++ return good; ++ } ++ ++ /** ++ * Sets the value of the good property. ++ * ++ * @param value allowed object is {@link Good } ++ * ++ */ ++ public void setGood(Good value) { ++ this.good = value; ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/marshal/8036981/ObjectFactory.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,74 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package testjaxbcontext; ++ ++import javax.xml.bind.annotation.XmlRegistry; ++ ++/** ++ * This object contains factory methods for each Java content interface and Java ++ * element interface generated in the generated package. ++ *

++ * An ObjectFactory allows you to programatically construct new instances of the ++ * Java representation for XML content. The Java representation of XML content ++ * can consist of schema derived interfaces and classes representing the binding ++ * of schema type definitions, element declarations and model groups. Factory ++ * methods for each of these are provided in this class. ++ * ++ */ ++@XmlRegistry ++public class ObjectFactory { ++ ++ /** ++ * Create a new ObjectFactory that can be used to create new instances of ++ * schema derived classes for package: generated ++ * ++ */ ++ public ObjectFactory() { ++ } ++ ++ /** ++ * Create an instance of {@link Root } ++ * ++ */ ++ public Root createRoot() { ++ return new Root(); ++ } ++ ++ /** ++ * Create an instance of {@link Good } ++ * ++ */ ++ public Good createGood() { ++ return new Good(); ++ } ++ ++ /** ++ * Create an instance of {@link Main } ++ * ++ */ ++ public Main createMain() { ++ return new Main(); ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/marshal/8036981/Root.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,91 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package testjaxbcontext; ++ ++import javax.xml.bind.annotation.*; ++import java.util.ArrayList; ++import java.util.List; ++ ++/** ++ *

++ * Java class for Root complex type. ++ * ++ *

++ * The following schema fragment specifies the expected content contained within ++ * this class. ++ * ++ *

++ * <complexType name="Root">
++ *   <complexContent>
++ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
++ *       <sequence>
++ *         <any processContents='skip' maxOccurs="70"/>
++ *       </sequence>
++ *     </restriction>
++ *   </complexContent>
++ * </complexType>
++ * 
++ * ++ * ++ */ ++@XmlAccessorType(XmlAccessType.FIELD) ++@XmlType(name = "Root", propOrder = { ++ "content" ++}) ++public class Root { ++ ++ @XmlMixed ++ @XmlAnyElement ++ protected List content; ++ ++ /** ++ * Gets the value of the content property. ++ * ++ *

++ * This accessor method returns a reference to the live list, not a ++ * snapshot. Therefore any modification you make to the returned list will ++ * be present inside the JAXB object. This is why there is not a ++ * set method for the content property. ++ * ++ *

++ * For example, to add a new item, do as follows: ++ *

++     *    getContent().add(newItem);
++     * 
++ * ++ * ++ *

++ * Objects of the following type(s) are allowed in the list {@link org.w3c.dom.Element } ++ * {@link String } ++ * ++ * ++ */ ++ public List getContent() { ++ if (content == null) { ++ content = new ArrayList(); ++ } ++ return this.content; ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/marshal/8036981/Test.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,67 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/* ++ * @test Test.java ++ * @bug 8036981 ++ * @summary JAXB not preserving formatting during unmarshalling/marshalling ++ * @compile Good.java Main.java ObjectFactory.java Root.java ++ * @run main/othervm Test ++ */ ++ ++import javax.xml.bind.JAXBContext; ++import javax.xml.bind.Marshaller; ++import javax.xml.bind.Unmarshaller; ++import java.io.File; ++import java.io.StringWriter; ++ ++/** ++ * Test for marshalling and unmarshalling mixed and unmixed content ++ */ ++public class Test { ++ ++ private static final String EXPECTED = "
\n" + ++ " \n" + ++ " \n" + ++ " \n" + ++ " \n" + ++ " \n" + ++ " \n" + ++ " \n" + ++ " \n" + ++ "
"; ++ ++ public static void main(String[] args) throws Exception { ++ JAXBContext jc = JAXBContext.newInstance("testjaxbcontext"); ++ Unmarshaller u = jc.createUnmarshaller(); ++ Object result = u.unmarshal(new File(System.getProperty("test.src", ".") + "/test.xml")); ++ StringWriter sw = new StringWriter(); ++ Marshaller m = jc.createMarshaller(); ++ m.marshal(result, sw); ++ System.out.println("Expected:" + EXPECTED); ++ System.out.println("Observed:" + sw.toString()); ++ if (!EXPECTED.equals(sw.toString())) { ++ throw new Exception("Unmarshal/Marshal generates different content"); ++ } ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/marshal/8036981/test.xml Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,19 @@ ++ ++
++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/xjc/8029837/PreParseGrammarTest.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,58 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/* ++ * @test ++ * @bug 8029837 ++ * @summary Test simulates the partial call to xjc ant task that fails with ++ * NullPointer exception ++ * @run main/othervm PreParseGrammarTest ++ */ ++ ++import com.sun.org.apache.xerces.internal.parsers.XMLGrammarPreparser; ++import com.sun.org.apache.xerces.internal.xni.XNIException; ++import com.sun.org.apache.xerces.internal.xni.grammars.Grammar; ++import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarDescription; ++import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource; ++import java.io.BufferedInputStream; ++import java.io.File; ++import java.io.FileInputStream; ++import java.io.FileNotFoundException; ++import java.io.IOException; ++import java.io.InputStream; ++ ++public class PreParseGrammarTest { ++ ++ public static void main(String[] args) throws FileNotFoundException, XNIException, IOException { ++ File xsdf = new File(System.getProperty("test.src", ".") + "/test.xsd"); ++ InputStream is = new BufferedInputStream(new FileInputStream(xsdf)); ++ XMLInputSource xis = new XMLInputSource(null, null, null, is, null); ++ XMLGrammarPreparser gp = new XMLGrammarPreparser(); ++ gp.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null); ++ //The NullPointerException is observed on next call during ant task ++ // execution ++ Grammar res = gp.preparseGrammar(XMLGrammarDescription.XML_SCHEMA, xis); ++ System.out.println("Grammar preparsed successfully:" + res); ++ return; ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/bind/xjc/8029837/test.xsd Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,4 @@ ++ ++ ++ ++ +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/jaxp/testng/TEST.properties Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,3 @@ ++# This file identifies root(s) of the test-ng hierarchy. ++ ++TestNG.dirs = . +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/jaxp/testng/parse/XMLEntityScannerLoad.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,75 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package parse; ++ ++import java.io.ByteArrayInputStream; ++import java.io.IOException; ++import javax.xml.parsers.DocumentBuilderFactory; ++import javax.xml.parsers.ParserConfigurationException; ++ ++import static org.testng.Assert.assertEquals; ++import org.testng.annotations.DataProvider; ++import org.testng.annotations.Test; ++import org.w3c.dom.Document; ++import org.xml.sax.SAXException; ++ ++/** ++ * JDK-8059327: XML parser returns corrupt attribute value ++ * https://bugs.openjdk.java.net/browse/JDK-8059327 ++ * ++ * Also: ++ * JDK-8061550: XMLEntityScanner can corrupt corrupt content during parsing ++ * https://bugs.openjdk.java.net/browse/JDK-8061550 ++ * ++ * @Summary: verify that the character cache in XMLEntityScanner is reset properly ++ */ ++ ++public class XMLEntityScannerLoad { ++ ++ @Test(dataProvider = "xmls") ++ public void test(String xml) throws SAXException, IOException, ParserConfigurationException { ++ Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ChunkInputStream(xml)); ++ String value = d.getDocumentElement().getAttribute("a1"); ++ assertEquals(value, "w"); ++ } ++ ++ static class ChunkInputStream extends ByteArrayInputStream { ++ ChunkInputStream(String xml) { ++ super(xml.getBytes()); ++ } ++ ++ @Override ++ public synchronized int read(byte[] b, int off, int len) { ++ return super.read(b, off, 7); ++ } ++ } ++ ++ @DataProvider(name = "xmls") ++ private Object[][] xmls() { ++ return new Object[][] { ++ {""}, ++ {""} ++ }; ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/ws/xsanymixed/CopyingResponse.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,35 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++ ++import org.somewhere.ws.EchoRequest; ++import org.somewhere.ws.EchoResponse; ++ ++public class CopyingResponse extends EchoResponse { ++ ++ public CopyingResponse() {} ++ ++ public CopyingResponse(EchoRequest request) { ++ content = request.getContent(); ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/ws/xsanymixed/ServiceImpl.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,51 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++import org.somewhere.ws.EchoRequest; ++import org.somewhere.ws.EchoResponse; ++import org.somewhere.ws.TestPort; ++ ++import javax.jws.WebService; ++import javax.xml.namespace.QName; ++ ++ ++/** ++ * Simple Webservice implementation just copying xml part as is ++ * from incoming request into outgoing response ++ */ ++@WebService( ++ endpointInterface = "org.somewhere.ws.TestPort", ++ targetNamespace = "http://ws.somewhere.org/", ++ serviceName = "TestService", ++ portName = "TestPort") ++public class ServiceImpl implements TestPort { ++ ++ public static final QName PORT_NAME = new QName("http://ws.somewhere.org/", "TestPort"); ++ public static final QName SERVICE_NAME = new QName("http://ws.somewhere.org/", "TestService"); ++ ++ @Override ++ public EchoResponse echo(EchoRequest request) { ++ return new CopyingResponse(request); ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/ws/xsanymixed/Test.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,197 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++/* ++ * @test ++ * @bug 8036981 8038966 8051441 ++ * @summary the content of xs:any content:mixed should remain as is, ++ * no white space changes and no changes to namespace prefixes ++ * @run shell compile-wsdl.sh ++ * @run main/othervm Test ++ */ ++ ++import com.sun.net.httpserver.HttpServer; ++ ++import javax.xml.transform.Source; ++import javax.xml.transform.Transformer; ++import javax.xml.transform.TransformerException; ++import javax.xml.transform.TransformerFactory; ++import javax.xml.transform.stream.StreamResult; ++import javax.xml.transform.stream.StreamSource; ++import javax.xml.ws.Dispatch; ++import javax.xml.ws.Endpoint; ++import javax.xml.ws.Service; ++import java.io.ByteArrayOutputStream; ++import java.io.IOException; ++import java.io.StringReader; ++import java.net.InetSocketAddress; ++import java.net.URL; ++import java.nio.file.FileVisitResult; ++import java.nio.file.Files; ++import java.nio.file.Path; ++import java.nio.file.Paths; ++import java.nio.file.SimpleFileVisitor; ++import java.nio.file.attribute.BasicFileAttributes; ++ ++import static java.nio.file.FileVisitResult.CONTINUE; ++ ++public class Test { ++ ++ private static HttpServer httpServer; ++ private static Endpoint endpoint; ++ private static final String NL = System.getProperty("line.separator"); ++ ++ private static final String XS_ANY_MIXED_PART = ++ "" + NL + ++ " " + NL + NL + ++ "" + NL + NL + ++ " any" + NL + ++ " white" + NL + ++ " space" + NL + NL + ++ " ... and" + NL + NL + ++ " NO namespace prefixes!!!" + NL + NL + ++ " " + NL + NL + ++ " " + NL + ++ "" + NL + ++ ""; ++ ++ private static final String XML_REQUEST = "" + ++ "" + ++ "" + NL + ++ XS_ANY_MIXED_PART + NL + ++ "" + ++ ""; ++ ++ private static String deployWebservice() throws IOException { ++ // Manually create HttpServer here using ephemeral address for port ++ // so as to not end up with attempt to bind to an in-use port ++ httpServer = HttpServer.create(new InetSocketAddress(0), 0); ++ httpServer.start(); ++ endpoint = Endpoint.create(new ServiceImpl()); ++ endpoint.publish(httpServer.createContext("/wservice")); ++ ++ String wsdlAddress = "http://localhost:" + httpServer.getAddress().getPort() + "/wservice?wsdl"; ++ log("address = " + wsdlAddress); ++ return wsdlAddress; ++ } ++ ++ private static void stopWebservice() { ++ if (endpoint != null && endpoint.isPublished()) { ++ endpoint.stop(); ++ } ++ if (httpServer != null) { ++ httpServer.stop(0); ++ } ++ } ++ ++ public static void main(String[] args) throws IOException, TransformerException { ++ ++ try { ++ String address = deployWebservice(); ++ Service service = Service.create(new URL(address), ServiceImpl.SERVICE_NAME); ++ ++ Dispatch d = service.createDispatch(ServiceImpl.PORT_NAME, Source.class, Service.Mode.MESSAGE); ++ Source response = d.invoke(new StreamSource(new StringReader(XML_REQUEST))); ++ ++ String resultXml = toString(response); ++ ++ log("= request ======== \n"); ++ log(XML_REQUEST); ++ log("= result ========= \n"); ++ log(resultXml); ++ log("\n=================="); ++ ++ boolean xsAnyMixedPartSame = resultXml.contains(XS_ANY_MIXED_PART); ++ log("resultXml.contains(XS_ANY_PART) = " + xsAnyMixedPartSame); ++ if (!xsAnyMixedPartSame) { ++ fail("The xs:any content=mixed part is supposed to be same in request and response."); ++ throw new RuntimeException(); ++ } ++ ++ log("TEST PASSED"); ++ } finally { ++ stopWebservice(); ++ ++ // if you need to debug or explore wsdl generation result ++ // comment this line out: ++ deleteGeneratedFiles(); ++ } ++ } ++ ++ private static String toString(Source response) throws TransformerException, IOException { ++ ByteArrayOutputStream bos = new ByteArrayOutputStream(); ++ TransformerFactory transformerFactory = TransformerFactory.newInstance(); ++ Transformer transformer = transformerFactory.newTransformer(); ++ transformer.transform(response, new StreamResult(bos)); ++ bos.close(); ++ return new String(bos.toByteArray()); ++ } ++ ++ private static void fail(String message) { ++ log("TEST FAILED."); ++ throw new RuntimeException(message); ++ } ++ ++ private static void log(String msg) { ++ System.out.println(msg); ++ } ++ ++ private static void deleteGeneratedFiles() { ++ Path p = Paths.get("..", "classes", "javax", "xml", "ws", "xsanymixed", "org"); ++ System.out.println("performing cleanup, deleting wsdl compilation result: " + p.toFile().getAbsolutePath()); ++ if (Files.exists(p)) { ++ try { ++ Files.walkFileTree(p, new SimpleFileVisitor() { ++ @Override ++ public FileVisitResult visitFile( ++ Path file, ++ BasicFileAttributes attrs) throws IOException { ++ ++ System.out.println("deleting file [" + file.toFile().getAbsoluteFile() + "]"); ++ Files.delete(file); ++ return CONTINUE; ++ } ++ ++ @Override ++ public FileVisitResult postVisitDirectory( ++ Path dir, ++ IOException exc) throws IOException { ++ ++ System.out.println("deleting dir [" + dir.toFile().getAbsoluteFile() + "]"); ++ if (exc == null) { ++ Files.delete(dir); ++ return CONTINUE; ++ } else { ++ throw exc; ++ } ++ } ++ }); ++ } catch (IOException ioe) { ++ ioe.printStackTrace(); ++ } ++ } ++ } ++ ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/ws/xsanymixed/compile-wsdl.sh Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,36 @@ ++#! /bin/sh ++ ++# ++# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++# ++# This code is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License version 2 only, as ++# published by the Free Software Foundation. ++# ++# This code is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++# version 2 for more details (a copy is included in the LICENSE file that ++# accompanied this code). ++# ++# You should have received a copy of the GNU General Public License version ++# 2 along with this work; if not, write to the Free Software Foundation, ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++# ++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++# or visit www.oracle.com if you need additional information or have any ++# questions. ++# ++ ++# ++ ++if [ "x$TESTJAVA" = x ]; then ++ TESTJAVA=$1; shift ++ TESTCLASSES=. ++fi ++ ++echo "compiling [test-service.wsdl] wsdl ..." ++$TESTJAVA/bin/wsimport -keep -d ${TESTCLASSES} ${TESTSRC}/service.wsdl ++ ++echo "WSDL compiled. Main test class Test.java can be compiled now." +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/javax/xml/ws/xsanymixed/service.wsdl Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,87 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ ./jdk/test/sun/java2d/OpenGL/DrawHugeImageTest.java Mon Dec 08 12:29:42 2014 -0800 +@@ -0,0 +1,108 @@ ++/* ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++/* ++ * @test ++ * @bug 8040617 ++ * @summary Test verifies that an attempt to get an accelerated copy of ++ * a huge buffered image does not result in an OOME. ++ * ++ * @run main DrawHugeImageTest ++ */ ++ ++import java.awt.Color; ++import java.awt.Graphics2D; ++import java.awt.GraphicsConfiguration; ++import java.awt.GraphicsEnvironment; ++import java.awt.image.BufferedImage; ++import java.awt.image.VolatileImage; ++ ++public class DrawHugeImageTest { ++ // we have to render the BI source several times in order ++ // to get an accelerated copy to be used. ++ static { ++ System.setProperty("sun.java2d.accthreshold", "1"); ++ } ++ private static final int max_rendering_count = 5; ++ ++ private static final Color srcColor = Color.red; ++ private static final Color dstColor = Color.blue; ++ ++ public static void main(String[] args) { ++ BufferedImage src = createSrc(); ++ ++ VolatileImage dst = createDst(); ++ System.out.println("Dst: " + dst); ++ boolean status; ++ int count = max_rendering_count; ++ ++ do { ++ System.out.println("render image: " + (max_rendering_count - count)); ++ status = render(src, dst); ++ ++ } while (status && count-- > 0); ++ ++ if (!status || count > 0) { ++ throw new RuntimeException("Test failed: " + count); ++ } ++ } ++ ++ private static boolean render(BufferedImage src, VolatileImage dst) { ++ int cnt = 5; ++ do { ++ Graphics2D g = dst.createGraphics(); ++ g.setColor(dstColor); ++ g.fillRect(0, 0, dst.getWidth(), dst.getHeight()); ++ g.drawImage(src, 0, 0, null); ++ g.dispose(); ++ } while (dst.contentsLost() && (--cnt > 0)); ++ ++ if (cnt == 0) { ++ System.err.println("Test failed: unable to render to volatile destination"); ++ return false; ++ } ++ ++ BufferedImage s = dst.getSnapshot(); ++ ++ return s.getRGB(1,1) == srcColor.getRGB(); ++ } ++ ++ private static BufferedImage createSrc() { ++ final int w = 20000; ++ final int h = 5; ++ ++ BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR); ++ Graphics2D g = img.createGraphics(); ++ g.setColor(srcColor); ++ g.fillRect(0, 0, w, h); ++ g.dispose(); ++ ++ return img; ++ } ++ ++ private static VolatileImage createDst() { ++ GraphicsConfiguration gc = ++ GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); ++ ++ return gc.createCompatibleVolatileImage(200, 200); ++ } ++} +--- ./jdk/test/sun/security/ec/TestEC.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ec/TestEC.java Mon Dec 08 12:29:42 2014 -0800 +@@ -68,6 +68,10 @@ + } + + public static void main0(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + Provider p = Security.getProvider("SunEC"); + + if (p == null) { +--- ./jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Mon Dec 08 12:29:42 2014 -0800 +@@ -43,6 +43,10 @@ + private static String[] cmdArgs; + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + cmdArgs = args; + main(new ClientJSSEServerJSSE()); + } +--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ProtocolVersion/HttpsProtocols.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ProtocolVersion/HttpsProtocols.java Mon Dec 08 12:29:42 2014 -0800 +@@ -32,6 +32,7 @@ + import java.io.*; + import java.net.*; + import javax.net.ssl.*; ++import java.security.Security; + + public class HttpsProtocols implements HostnameVerifier { + +@@ -177,6 +178,10 @@ + volatile Exception clientException = null; + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + String keyFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + keyStoreFile; +--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/CustomizedDefaultProtocols.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/CustomizedDefaultProtocols.java Mon Dec 08 12:29:42 2014 -0800 +@@ -35,6 +35,7 @@ + import javax.net.*; + import javax.net.ssl.*; + import java.util.Arrays; ++import java.security.Security; + + public class CustomizedDefaultProtocols { + static enum ContextVersion { +@@ -93,6 +94,10 @@ + } + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + boolean failed = false; + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); +--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/DefaultEnabledProtocols.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/DefaultEnabledProtocols.java Mon Dec 08 12:29:42 2014 -0800 +@@ -34,6 +34,7 @@ + import javax.net.*; + import javax.net.ssl.*; + import java.util.Arrays; ++import java.security.Security; + + public class DefaultEnabledProtocols { + static enum ContextVersion { +@@ -92,6 +93,10 @@ + } + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + boolean failed = false; + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); +--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/NoOldVersionContext.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/NoOldVersionContext.java Mon Dec 08 12:29:42 2014 -0800 +@@ -35,6 +35,7 @@ + import javax.net.*; + import javax.net.ssl.*; + import java.util.Arrays; ++import java.security.Security; + + public class NoOldVersionContext { + static enum ContextVersion { +@@ -93,6 +94,10 @@ + } + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + boolean failed = false; + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); +--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/DelegatedTaskWrongException.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/DelegatedTaskWrongException.java Mon Dec 08 12:29:42 2014 -0800 +@@ -115,6 +115,9 @@ + } + + public static void main(String args[]) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); + + DelegatedTaskWrongException test; + +--- ./jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/testEnabledProtocols.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/testEnabledProtocols.java Mon Dec 08 12:29:42 2014 -0800 +@@ -21,6 +21,11 @@ + * questions. + */ + ++// ++// SunJSSE does not support dynamic system properties, no way to re-use ++// system properties in samevm/agentvm mode. ++// ++ + /* + * @test + * @bug 4416068 4478803 4479736 +@@ -31,9 +36,6 @@ + * 4701722 protocol mismatch exceptions should be consistent between + * SSLv3 and TLSv1 + * @run main/othervm testEnabledProtocols +- * +- * SunJSSE does not support dynamic system properties, no way to re-use +- * system properties in samevm/agentvm mode. + * @author Ram Marti + */ + +@@ -120,6 +122,10 @@ + volatile Exception clientException = null; + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + String keyFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + keyStoreFile; +--- ./jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLEngineExplorer.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLEngineExplorer.java Mon Dec 08 12:29:42 2014 -0800 +@@ -44,6 +44,7 @@ + import java.net.*; + import java.util.*; + import java.nio.channels.*; ++import java.security.Security; + + public class SSLEngineExplorer extends SSLEngineService { + +@@ -231,6 +232,10 @@ + volatile int serverPort = 0; + + public static void main(String args[]) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + if (debug) + System.setProperty("javax.net.debug", "all"); + +--- ./jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLSocketExplorer.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLSocketExplorer.java Mon Dec 08 12:29:42 2014 -0800 +@@ -45,6 +45,7 @@ + import java.util.*; + import java.net.*; + import javax.net.ssl.*; ++import java.security.Security; + + public class SSLSocketExplorer { + +@@ -224,6 +225,10 @@ + volatile Exception clientException = null; + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + String keyFilename = + System.getProperty("test.src", ".") + "/" + pathToStores + + "/" + keyStoreFile; +--- ./jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Mon Dec 08 12:29:42 2014 -0800 +@@ -29,9 +29,15 @@ + * @run main/othervm/timeout=300 ClientJSSEServerJSSE + */ + ++import java.security.Security; ++ + public class ClientJSSEServerJSSE { + + public static void main(String[] args) throws Exception { ++ // reset the security property to make sure that the algorithms ++ // and keys used in this test are not disabled. ++ Security.setProperty("jdk.tls.disabledAlgorithms", ""); ++ + CipherTest.main(new JSSEFactory(), args); + } + +--- ./jdk/test/sun/text/resources/LocaleData Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/text/resources/LocaleData Mon Dec 08 12:29:42 2014 -0800 +@@ -7699,3 +7699,6 @@ + # bug 8037343 + FormatData/es_DO/DatePatterns/2=dd/MM/yyyy + FormatData/es_DO/DatePatterns/3=dd/MM/yy ++ ++# bug 8055222 ++CurrencyNames/lt_LT/EUR=\u20AC +--- ./jdk/test/sun/text/resources/LocaleDataTest.java Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/text/resources/LocaleDataTest.java Mon Dec 08 12:29:42 2014 -0800 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -36,7 +36,7 @@ + * 6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495 + * 7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509 + * 7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695 7090826 +- * 8017142 8037343 ++ * 8017142 8037343 8055222 + * @summary Verify locale data + * + */ +--- ./jdk/test/sun/util/calendar/zi/tzdata/VERSION Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/util/calendar/zi/tzdata/VERSION Mon Dec 08 12:29:42 2014 -0800 +@@ -1,24 +1,24 @@ + # + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +-# ++# + # This code is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License version 2 only, as + # published by the Free Software Foundation. Oracle designates this + # particular file as subject to the "Classpath" exception as provided + # by Oracle in the LICENSE file that accompanied this code. +-# ++# + # This code is distributed in the hope that it will be useful, but WITHOUT + # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + # version 2 for more details (a copy is included in the LICENSE file that + # accompanied this code). +-# ++# + # You should have received a copy of the GNU General Public License version + # 2 along with this work; if not, write to the Free Software Foundation, + # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +-# ++# + # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + # or visit www.oracle.com if you need additional information or have any + # questions. + # +-tzdata2014c ++tzdata2014j +--- ./jdk/test/sun/util/calendar/zi/tzdata/africa Tue Sep 09 12:00:58 2014 -0700 ++++ ./jdk/test/sun/util/calendar/zi/tzdata/africa Mon Dec 08 12:29:42 2014 -0800 +@@ -21,36 +21,35 @@ + # or visit www.oracle.com if you need additional information or have any + # questions. + # +-#
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2013-02-21):
++# From Paul Eggert (2014-10-31):
+ #
+-# A good source for time zone historical data outside the U.S. is
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Another source occasionally used is Edward W. Whitman, World Time Differences,
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
+ # For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
+ #
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+@@ -58,13 +57,13 @@
+ # Previous editions of this database used WAT, CAT, SAT, and EAT
+ # for +0:00 through +3:00, respectively,
+ # but Mark R V Murray reports that
+-# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
+-# `CAT' is commonly used for +2:00 in countries north of South Africa, and
+-# `WAT' is probably the best name for +1:00, as the common phrase for
+-# the area that includes Nigeria is ``West Africa''.
+-# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
++# 'SAST' is the official abbreviation for +2:00 in the country of South Africa,
++# 'CAT' is commonly used for +2:00 in countries north of South Africa, and
++# 'WAT' is probably the best name for +1:00, as the common phrase for
++# the area that includes Nigeria is "West Africa".
++# He has heard of "Western Sahara Time" for +0:00 but can find no reference.
+ #
+-# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
++# To make things confusing, 'WAT' seems to have been used for -1:00 long ago;
+ # I'd guess that this was because people needed _some_ name for -1:00,
+ # and at the time, far west Africa was the only major land area in -1:00.
+ # This usage is now obsolete, as the last use of -1:00 on the African
+@@ -77,7 +76,7 @@
+ #	 2:00	SAST	South Africa Standard Time
+ # and Murray suggests the following abbreviation:
+ #	 1:00	WAT	West Africa Time
+-# I realize that this leads to `WAT' being used for both -1:00 and 1:00
++# I realize that this leads to 'WAT' being used for both -1:00 and 1:00
+ # for times before 1976, but this is the best I can think of
+ # until we get more information.
+ #
+@@ -88,7 +87,6 @@
+ #	 3:00	CAST	Central Africa Summer Time (no longer used)
+ #	 3:00	SAST	South Africa Summer Time (no longer used)
+ #	 3:00	EAT	East Africa Time
+-#	 4:00	EAST	East Africa Summer Time (no longer used)
+ 
+ # Algeria
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -117,9 +115,9 @@
+ # Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+ # more precise 0:09:21.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15 0:01
+-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+-			0:00	Algeria	WE%sT	1940 Feb 25 2:00
++Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15  0:01
++			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
++			0:00	Algeria	WE%sT	1940 Feb 25  2:00
+ 			1:00	Algeria	CE%sT	1946 Oct  7
+ 			0:00	-	WET	1956 Jan 29
+ 			1:00	-	CET	1963 Apr 14
+@@ -129,92 +127,71 @@
+ 			1:00	-	CET
+ 
+ # Angola
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Luanda	0:52:56	-	LMT	1892
+-			0:52:04	-	AOT	1911 May 26 # Angola Time
+-			1:00	-	WAT
+-
+ # Benin
+-# Whitman says they switched to 1:00 in 1946, not 1934;
+-# go with Shanks & Pottenger.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Porto-Novo	0:10:28	-	LMT	1912
+-			0:00	-	GMT	1934 Feb 26
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Botswana
+-# From Paul Eggert (2013-02-21):
+-# Milne says they were regulated by the Cape Town Signal in 1899;
+-# assume they switched to 2:00 when Cape Town did.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Gaborone	1:43:40 -	LMT	1885
+-			1:30	-	SAST	1903 Mar
+-			2:00	-	CAT	1943 Sep 19 2:00
+-			2:00	1:00	CAST	1944 Mar 19 2:00
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # Burkina Faso
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Ouagadougou	-0:06:04 -	LMT	1912
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Burundi
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Bujumbura	1:57:28	-	LMT	1890
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # Cameroon
+-# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Douala	0:38:48	-	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Cape Verde
++#
++# Shanks gives 1907 for the transition to CVT.
++# Perhaps the 1911-05-26 Portuguese decree
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# merely made it official?
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907			# Praia
++Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907        # Praia
+ 			-2:00	-	CVT	1942 Sep
+ 			-2:00	1:00	CVST	1945 Oct 15
+-			-2:00	-	CVT	1975 Nov 25 2:00
++			-2:00	-	CVT	1975 Nov 25  2:00
+ 			-1:00	-	CVT
+ 
+ # Central African Republic
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Bangui	1:14:20	-	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Chad
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Ndjamena	1:00:12 -	LMT	1912
++Zone	Africa/Ndjamena	1:00:12 -	LMT	1912        # N'Djamena
+ 			1:00	-	WAT	1979 Oct 14
+ 			1:00	1:00	WAST	1980 Mar  8
+ 			1:00	-	WAT
+ 
+ # Comoros
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Comoro	2:53:04 -	LMT	1911 Jul   # Moroni, Gran Comoro
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+-# Democratic Republic of Congo
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov 9
+-			1:00	-	WAT
+-Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
+-			2:00	-	CAT
++# Democratic Republic of the Congo
++# See Africa/Lagos for the western part and Africa/Maputo for the eastern.
+ 
+ # Republic of the Congo
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Brazzaville	1:01:08 -	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+-# Cote D'Ivoire
++# Côte d'Ivoire / Ivory Coast
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
+ 			 0:00	-	GMT
++Link Africa/Abidjan Africa/Bamako	# Mali
++Link Africa/Abidjan Africa/Banjul	# Gambia
++Link Africa/Abidjan Africa/Conakry	# Guinea
++Link Africa/Abidjan Africa/Dakar	# Senegal
++Link Africa/Abidjan Africa/Freetown	# Sierra Leone
++Link Africa/Abidjan Africa/Lome		# Togo
++Link Africa/Abidjan Africa/Nouakchott	# Mauritania
++Link Africa/Abidjan Africa/Ouagadougou	# Burkina Faso
++Link Africa/Abidjan Africa/Sao_Tome	# São Tomé and Príncipe
++Link Africa/Abidjan Atlantic/St_Helena	# St Helena
+ 
+ # Djibouti
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Djibouti	2:52:36 -	LMT	1911 Jul
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ ###############################################################################
+ 
+@@ -254,30 +231,26 @@
+ # Egyptians would approve the cancellation."
+ #
+ # Egypt to cancel daylight saving time
+-# 
+ # http://www.almasryalyoum.com/en/node/407168
+-# 
+ # or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
+-# 
+ Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
+-Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
++Rule	Egypt	1995	2005	-	Sep	lastThu	24:00	0	-
+ # From Steffen Thorsen (2006-09-19):
+ # The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
+ # Egypt will turn back clocks by one hour at the midnight of Thursday
+ # after observing the daylight saving time since May.
+ # http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
+-Rule	Egypt	2006	only	-	Sep	21	23:00s	0	-
++Rule	Egypt	2006	only	-	Sep	21	24:00	0	-
+ # From Dirk Losch (2007-08-14):
+ # I received a mail from an airline which says that the daylight
+ # saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+-# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
++# From Jesper Nørgaard Welen (2007-08-15): [The following agree:]
+ # http://www.nentjes.info/Bill/bill5.htm
+ # http://www.timeanddate.com/worldclock/city.html?n=53
+ # From Steffen Thorsen (2007-09-04): The official information...:
+ # http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+-Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s	0	-
++Rule	Egypt	2007	only	-	Sep	Thu>=1	24:00	0	-
+ # From Abdelrahman Hassan (2007-09-06):
+ # Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
+ # than the year of the Gregorian calendar, Ramadan shifts earlier each
+@@ -311,15 +284,9 @@
+ #
+ # timeanddate[2] and another site I've found[3] also support that.
+ #
+-# [1] 
+-# https://bugzilla.redhat.com/show_bug.cgi?id=492263
+-# 
+-# [2] 
+-# http://www.timeanddate.com/worldclock/clockchange.html?n=53
+-# 
+-# [3] 
+-# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+-# 
++# [1] https://bugzilla.redhat.com/show_bug.cgi?id=492263
++# [2] http://www.timeanddate.com/worldclock/clockchange.html?n=53
++# [3] http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+ 
+ # From Arthur David Olson (2009-04-20):
+ # In 2009 (and for the next several years), Ramadan ends before the fourth
+@@ -329,14 +296,10 @@
+ # From Steffen Thorsen (2009-08-11):
+ # We have been able to confirm the August change with the Egyptian Cabinet
+ # Information and Decision Support Center:
+-# 
+ # http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
+-# 
+ #
+ # The Middle East News Agency
+-# 
+ # http://www.mena.org.eg/index.aspx
+-# 
+ # also reports "Egypt starts winter time on August 21"
+ # today in article numbered "71, 11/08/2009 12:25 GMT."
+ # Only the title above is available without a subscription to their service,
+@@ -344,67 +307,93 @@
+ # (at least today).
+ 
+ # From Alexander Krivenyshev (2010-07-20):
+-# According to News from Egypt -  Al-Masry Al-Youm Egypt's cabinet has
++# According to News from Egypt - Al-Masry Al-Youm Egypt's cabinet has
+ # decided that Daylight Saving Time will not be used in Egypt during
+ # Ramadan.
+ #
+ # Arabic translation:
+-# "Clocks to go back during Ramadan--and then forward again"
+-# 
++# "Clocks to go back during Ramadan - and then forward again"
+ # http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
+-# 
+ 
+ # From Ahmad El-Dardiry (2014-05-07):
+ # Egypt is to change back to Daylight system on May 15
+ # http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
+ 
+-# From Gunther Vermier (2015-05-13):
++# From Gunther Vermier (2014-05-13):
+ # our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
+ 
+-# From Paul Eggert (2014-05-13):
++# From Imed Chihi (2014-06-04):
++# We have finally "located" a precise official reference about the DST changes
++# in Egypt.  The Ministers Cabinet decision is explained at
++# http://www.cabinet.gov.eg/Media/CabinetMeetingsDetails.aspx?id=347 ...
++# [T]his (Arabic) site is not accessible outside Egypt, but the page ...
++# translates into: "With regard to daylight saving time, it is scheduled to
++# take effect at exactly twelve o'clock this evening, Thursday, 15 MAY 2014,
++# to be suspended by twelve o'clock on the evening of Thursday, 26 JUN 2014,
++# and re-established again at the end of the month of Ramadan, at twelve
++# o'clock on the evening of Thursday, 31 JUL 2014."  This statement has been
++# reproduced by other (more accessible) sites[, e.g.,]...
++# http://elgornal.net/news/news.aspx?id=4699258
++
++# From Paul Eggert (2014-06-04):
+ # Sarah El Deeb and Lee Keath of AP report that the Egyptian government says
+ # the change is because of blackouts in Cairo, even though Ahram Online (cited
+-# above) says DST had no affect on electricity consumption.  The AP story says
+-# DST will not be observed during Ramadan.  There is no information about when
+-# DST will end.  See:
++# above) says DST had no affect on electricity consumption.  There is
++# no information about when DST will end this fall.  See:
+ # http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
+ #
+-# For now, guess that later transitions will use 2010's rules, and that
+-# Egypt will agree with Morocco (see below) about the date Ramadan starts and
+-# ends, though (unlike Morocco) it will switch at 00:00 standard time.  In
+-# Egypt the spring-forward transitions are removed for 2020-2022, when the
+-# guessed spring-forward date falls during the estimated Ramadan, and all
+-# transitions removed for 2023-2038, where the estimated Ramadan falls entirely
+-# outside the guessed daylight-saving time.  Ramadan intrudes on the guessed
+-# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff.
+-
+-Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
+-Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
+-Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
+-Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
+-Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
++# For now, guess that later spring and fall transitions will use
++# 2010's rules, and guess that Egypt will switch to standard time at
++# 24:00 the last Thursday before Ramadan, and back to DST at 00:00 the
++# first Friday after Ramadan.  To implement this,
++# transition dates for 2015 through 2037 were determined by running
++# the following program under GNU Emacs 24.3, with the results integrated
++# by hand into the table below.  Ramadan again intrudes on the guessed
++# DST starting in 2038, but that's beyond our somewhat-arbitrary cutoff.
++# (let ((islamic-year 1436))
++#   (while (< islamic-year 1460)
++#     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
++#           (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
++#           (friday 5))
++#       (while (/= friday (mod a 7))
++#         (setq a (1- a)))
++#       (while (/= friday (mod b 7))
++#         (setq b (1+ b)))
++#       (setq a (1- a))
++#       (setq b (1- b))
++#       (setq a (calendar-gregorian-from-absolute a))
++#       (setq b (calendar-gregorian-from-absolute b))
++#       (insert
++#        (format
++#         (concat "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t0\t-\n"
++#                 "Rule\tEgypt\t%d\tonly\t-\t%s\t%2d\t24:00\t1:00\tS\n")
++#         (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
++#         (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
++#     (setq islamic-year (+ 1 islamic-year))))
++Rule	Egypt	2008	only	-	Aug	lastThu	24:00	0	-
++Rule	Egypt	2009	only	-	Aug	20	24:00	0	-
++Rule	Egypt	2010	only	-	Aug	10	24:00	0	-
++Rule	Egypt	2010	only	-	Sep	 9	24:00	1:00	S
++Rule	Egypt	2010	only	-	Sep	lastThu	24:00	0	-
+ Rule	Egypt	2014	only	-	May	15	24:00	1:00	S
+-Rule	Egypt	2014	only	-	Jun	29	 0:00s	0	-
+-Rule	Egypt	2014	only	-	Jul	29	 0:00s	1:00	S
+-Rule	Egypt	2014	max	-	Sep	lastThu	23:00s	0	-
++Rule	Egypt	2014	only	-	Jun	26	24:00	0	-
++Rule	Egypt	2014	only	-	Jul	31	24:00	1:00	S
++Rule	Egypt	2014	max	-	Sep	lastThu	24:00	0	-
+ Rule	Egypt	2015	2019	-	Apr	lastFri	 0:00s	1:00	S
+-Rule	Egypt	2015	only	-	Jun	18	 0:00s	0	-
+-Rule	Egypt	2015	only	-	Jul	18	 0:00s	1:00	S
+-Rule	Egypt	2016	only	-	Jun	 7	 0:00s	0	-
+-Rule	Egypt	2016	only	-	Jul	 7	 0:00s	1:00	S
+-Rule	Egypt	2017	only	-	May	27	 0:00s	0	-
+-Rule	Egypt	2017	only	-	Jun	26	 0:00s	1:00	S
+-Rule	Egypt	2018	only	-	May	16	 0:00s	0	-
+-Rule	Egypt	2018	only	-	Jun	15	 0:00s	1:00	S
+-Rule	Egypt	2019	only	-	May	 6	 0:00s	0	-
+-Rule	Egypt	2019	only	-	Jun	 5	 0:00s	1:00	S
+-Rule	Egypt	2020	only	-	May	24	 0:00s	1:00	S
+-Rule	Egypt	2021	only	-	May	13	 0:00s	1:00	S
+-Rule	Egypt	2022	only	-	May	 3	 0:00s	1:00	S
++Rule	Egypt	2015	only	-	Jun	11	24:00	0	-
++Rule	Egypt	2015	only	-	Jul	23	24:00	1:00	S
++Rule	Egypt	2016	only	-	Jun	 2	24:00	0	-
++Rule	Egypt	2016	only	-	Jul	 7	24:00	1:00	S
++Rule	Egypt	2017	only	-	May	25	24:00	0	-
++Rule	Egypt	2017	only	-	Jun	29	24:00	1:00	S
++Rule	Egypt	2018	only	-	May	10	24:00	0	-
++Rule	Egypt	2018	only	-	Jun	14	24:00	1:00	S
++Rule	Egypt	2019	only	-	May	 2	24:00	0	-
++Rule	Egypt	2019	only	-	Jun	 6	24:00	1:00	S
++Rule	Egypt	2020	only	-	May	28	24:00	1:00	S
++Rule	Egypt	2021	only	-	May	13	24:00	1:00	S
++Rule	Egypt	2022	only	-	May	 5	24:00	1:00	S
+ Rule	Egypt	2023	max	-	Apr	lastFri	 0:00s	1:00	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -412,60 +401,44 @@
+ 			2:00	Egypt	EE%sT
+ 
+ # Equatorial Guinea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Malabo	0:35:08 -	LMT	1912
+-			0:00	-	GMT	1963 Dec 15
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Eritrea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Asmara	2:35:32 -	LMT	1870
+-			2:35:32	-	AMT	1890	      # Asmara Mean Time
+-			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
+-			3:00	-	EAT
+-
+ # Ethiopia
+-# From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
+-# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
+-# We'll guess that 38E50 is for Adis Dera.
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Addis_Ababa	2:34:48 -	LMT	1870
+-			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Gabon
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Libreville	0:37:48 -	LMT	1912
+-			1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Gambia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Banjul	-1:06:36 -	LMT	1912
+-			-1:06:36 -	BMT	1935	# Banjul Mean Time
+-			-1:00	-	WAT	1964
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Ghana
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-# Whitman says DST was observed from 1931 to ``the present'';
+-# go with Shanks & Pottenger.
+-Rule	Ghana	1936	1942	-	Sep	 1	0:00	0:20	GHST
+-Rule	Ghana	1936	1942	-	Dec	31	0:00	0	GMT
++# Whitman says DST was observed from 1931 to "the present";
++# Shanks & Pottenger say 1936 to 1942;
++# and September 1 to January 1 is given by:
++# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book,
++# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii.
++# For lack of better info, assume DST was observed from 1920 to 1942.
++Rule	Ghana	1920	1942	-	Sep	 1	0:00	0:20	GHST
++Rule	Ghana	1920	1942	-	Dec	31	0:00	0	GMT
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Accra	-0:00:52 -	LMT	1918
+ 			 0:00	Ghana	%s
+ 
+ # Guinea
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Conakry	-0:54:52 -	LMT	1912
+-			 0:00	-	GMT	1934 Feb 26
+-			-1:00	-	WAT	1960
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Guinea-Bissau
++#
++# Shanks gives 1911-05-26 for the transition to WAT,
++# evidently confusing the date of the Portuguese decree
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# with the date that it took effect, namely 1912-01-01.
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
++Zone	Africa/Bissau	-1:02:20 -	LMT	1912 Jan  1
+ 			-1:00	-	WAT	1975
+ 			 0:00	-	GMT
+ 
+@@ -476,13 +449,18 @@
+ 			2:30	-	BEAT	1940
+ 			2:45	-	BEAUT	1960
+ 			3:00	-	EAT
++Link Africa/Nairobi Africa/Addis_Ababa	 # Ethiopia
++Link Africa/Nairobi Africa/Asmara	 # Eritrea
++Link Africa/Nairobi Africa/Dar_es_Salaam # Tanzania
++Link Africa/Nairobi Africa/Djibouti
++Link Africa/Nairobi Africa/Kampala	 # Uganda
++Link Africa/Nairobi Africa/Mogadishu	 # Somalia
++Link Africa/Nairobi Indian/Antananarivo	 # Madagascar
++Link Africa/Nairobi Indian/Comoro
++Link Africa/Nairobi Indian/Mayotte
+ 
+ # Lesotho
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
+-			2:00	-	SAST	1943 Sep 19 2:00
+-			2:00	1:00	SAST	1944 Mar 19 2:00
+-			2:00	-	SAST
++# See Africa/Johannesburg.
+ 
+ # Liberia
+ # From Paul Eggert (2006-03-22):
+@@ -549,38 +527,22 @@
+ 			2:00	-	EET	1982
+ 			1:00	Libya	CE%sT	1990 May  4
+ # The 1996 and 1997 entries are from Shanks & Pottenger;
+-# the IATA SSIM data contain some obvious errors.
++# the IATA SSIM data entries contain some obvious errors.
+ 			2:00	-	EET	1996 Sep 30
+ 			1:00	Libya	CE%sT	1997 Oct  4
+-			2:00	-	EET	2012 Nov 10 2:00
+-			1:00	Libya	CE%sT	2013 Oct 25 2:00
++			2:00	-	EET	2012 Nov 10  2:00
++			1:00	Libya	CE%sT	2013 Oct 25  2:00
+ 			2:00	-	EET
+ 
+ # Madagascar
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Indian/Antananarivo 3:10:04 -	LMT	1911 Jul
+-			3:00	-	EAT	1954 Feb 27 23:00s
+-			3:00	1:00	EAST	1954 May 29 23:00s
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Malawi
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # Mali
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Bamako	-0:32:00 -	LMT	1912
+-			 0:00	-	GMT	1934 Feb 26
+-			-1:00	-	WAT	1960 Jun 20
+-			 0:00	-	GMT
+-
+ # Mauritania
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
+-			 0:00	-	GMT	1934 Feb 26
+-			-1:00	-	WAT	1960 Nov 28
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Mauritius
+ 
+@@ -604,9 +566,7 @@
+ 
+ # From Steffen Thorsen (2008-07-10):
+ # According to
+-# 
+ # http://www.lexpress.mu/display_article.php?news_id=111216
+-# 
+ # (in French), Mauritius will start and end their DST a few days earlier
+ # than previously announced (2008-11-01 to 2009-03-31).  The new start
+ # date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
+@@ -621,22 +581,17 @@
+ 
+ # From Alex Krivenyshev (2008-07-11):
+ # Seems that English language article "The revival of daylight saving
+-# time:  Energy conservation?"-# No. 16578 (07/11/2008) was originally
++# time: Energy conservation?"-# No. 16578 (07/11/2008) was originally
+ # published on Monday, June 30, 2008...
+ #
+ # I guess that article in French "Le gouvernement avance l'introduction
+-# de l'heure d'ete" stating that DST in Mauritius starting on October 26
+-# and ending on March 27, 2009 is the most recent one.
+-# ...
+-# 
++# de l'heure d'été" stating that DST in Mauritius starting on October 26
++# and ending on March 27, 2009 is the most recent one....
+ # http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html
+-# 
+ 
+ # From Riad M. Hossen Ally (2008-08-03):
+ # The Government of Mauritius weblink
+-# 
+ # http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
+-# 
+ # Cabinet Decision of July 18th, 2008 states as follows:
+ #
+ # 4. ...Cabinet has agreed to the introduction into the National Assembly
+@@ -646,33 +601,25 @@
+ # States of America. It will start at two o'clock in the morning on the
+ # last Sunday of October and will end at two o'clock in the morning on
+ # the last Sunday of March the following year. The summer time for the
+-# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
++# year 2008-2009 will, therefore, be effective as from 26 October 2008
+ # and end on 29 March 2009.
+ 
+ # From Ed Maste (2008-10-07):
+ # THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
+ # beginning / ending of summer time is 2 o'clock standard time in the
+ # morning of the last Sunday of October / last Sunday of March.
+-# 
+ # http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf
+-# 
+ 
+ # From Steffen Thorsen (2009-06-05):
+ # According to several sources, Mauritius will not continue to observe
+ # DST the coming summer...
+ #
+ # Some sources, in French:
+-# 
+ # http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB
+-# 
+-# 
+ # http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-
+-# 
+ #
+ # Our wrap-up:
+-# 
+ # http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html
+-# 
+ 
+ # From Arthur David Olson (2009-07-11):
+ # The "mauritius-dst-will-not-repeat" wrapup includes this:
+@@ -685,18 +632,16 @@
+ Rule Mauritius	2008	only	-	Oct	lastSun	2:00	1:00	S
+ Rule Mauritius	2009	only	-	Mar	lastSun	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Indian/Mauritius	3:50:00 -	LMT	1907		# Port Louis
++Zone Indian/Mauritius	3:50:00 -	LMT	1907 # Port Louis
+ 			4:00 Mauritius	MU%sT	# Mauritius Time
+ # Agalega Is, Rodriguez
+ # no information; probably like Indian/Mauritius
+ 
+ # Mayotte
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Morocco
+-# See the `europe' file for Spanish Morocco (Africa/Ceuta).
++# See the 'europe' file for Spanish Morocco (Africa/Ceuta).
+ 
+ # From Alex Krivenyshev (2008-05-09):
+ # Here is an article that Morocco plan to introduce Daylight Saving Time between
+@@ -704,60 +649,44 @@
+ #
+ # "... Morocco is to save energy by adjusting its clock during summer so it will
+ # be one hour ahead of GMT between 1 June and 27 September, according to
+-# Communication Minister and Gov ernment Spokesman, Khalid Naciri...."
++# Communication Minister and Government Spokesman, Khalid Naciri...."
+ #
+-# 
+ # http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
+-# 
+-# OR
+-# 
+ # http://en.afrik.com/news11892.html
+-# 
+ 
+ # From Alex Krivenyshev (2008-05-09):
+-# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:
+-# 
++# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe
++# Presse:
+ # http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
+-# 
+ #
+ # Morocco shifts to daylight time on June 1st through September 27, Govt.
+ # spokesman.
+ 
+ # From Patrice Scattolin (2008-05-09):
+ # According to this article:
+-# 
+ # http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
+-# 
+-# (and republished here:
+-# 
+-# http://www.actu.ma/heure-dete-comment_i127896_0.html
+-# 
+-# )
+-# the changes occurs at midnight:
++# (and republished here: )
++# the changes occur at midnight:
+ #
+-# saturday night may 31st at midnight (which in french is to be
+-# intrepreted as the night between saturday and sunday)
+-# sunday night the 28th  at midnight
++# Saturday night May 31st at midnight (which in French is to be
++# interpreted as the night between Saturday and Sunday)
++# Sunday night the 28th at midnight
+ #
+-# Seeing that the 28th is monday, I am guessing that she intends to say
+-# the midnight of the 28th which is the midnight between sunday and
+-# monday, which jives with other sources that say that it's inclusive
+-# june1st to sept 27th.
++# Seeing that the 28th is Monday, I am guessing that she intends to say
++# the midnight of the 28th which is the midnight between Sunday and
++# Monday, which jives with other sources that say that it's inclusive
++# June 1st to Sept 27th.
+ #
+ # The decision was taken by decree *2-08-224 *but I can't find the decree
+ # published on the web.
+ #
+ # It's also confirmed here:
+-# 
+ # http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
+-# 
+-# on a government portal as being  between june 1st and sept 27th (not yet
+-# posted in english).
++# on a government portal as being between June 1st and Sept 27th (not yet
++# posted in English).
+ #
+-# The following google query will generate many relevant hits:
+-# 
++# The following Google query will generate many relevant hits:
+ # http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
+-# 
+ 
+ # From Steffen Thorsen (2008-08-27):
+ # Morocco will change the clocks back on the midnight between August 31
+@@ -765,47 +694,32 @@
+ # of September:
+ #
+ # One article about it (in French):
+-# 
+ # http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
+-# 
+ #
+ # We have some further details posted here:
+-# 
+ # http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
+-# 
+ 
+ # From Steffen Thorsen (2009-03-17):
+ # Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according
+ # to many sources, such as
+-# 
+ # http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html
+-# 
+-# 
+ # http://www.medi1sat.ma/fr/depeche.aspx?idp=2312
+-# 
+ # (French)
+ #
+ # Our summary:
+-# 
+ # http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-03-17):
+ # Here is a link to official document from Royaume du Maroc Premier Ministre,
+-# Ministere de la Modernisation des Secteurs Publics
++# Ministère de la Modernisation des Secteurs Publics
+ #
+ # Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 june 1967)
+ # concerning the amendment of the legal time, the Ministry of Modernization of
+ # Public Sectors announced that the official time in the Kingdom will be
+ # advanced 60 minutes from Sunday 31 May 2009 at midnight.
+ #
+-# 
+ # http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf
+-# 
+-#
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_morocco03.html
+-# 
+ 
+ # From Steffen Thorsen (2010-04-13):
+ # Several news media in Morocco report that the Ministry of Modernization
+@@ -813,51 +727,33 @@
+ # 2010-05-02 to 2010-08-08.
+ #
+ # Example:
+-# 
+ # http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html
+-# 
+ # (French)
+ # Our page:
+-# 
+ # http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html
+-# 
+ 
+ # From Dan Abitol (2011-03-30):
+ # ...Rules for Africa/Casablanca are the following (24h format)
+-# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00
+-# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00
++# The 3rd April 2011 at 00:00:00, [it] will be 3rd April 01:00:00
++# The 31st July 2011 at 00:59:59, [it] will be 31st July 00:00:00
+ # ...Official links of change in morocco
+ # The change was broadcast on the FM Radio
+ # I ve called ANRT (telecom regulations in Morocco) at
+ # +212.537.71.84.00
+-# 
+ # http://www.anrt.net.ma/fr/
+-# 
+ # They said that
+-# 
+ # http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
+-# 
+ # is the official publication to look at.
+ # They said that the decision was already taken.
+ #
+ # More articles in the press
+-# 
+-# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev
+-# 
+-# e.html
+-# 
++# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-leve.html
+ # http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
+-# 
+-# 
+ # http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim
+-# anche-prochain-5538.html
+-# 
+ 
+ # From Petr Machata (2011-03-30):
+ # They have it written in English here:
+-# 
+ # http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
+-# 
+ #
+ # It says there that "Morocco will resume its standard time on July 31,
+ # 2011 at midnight." Now they don't say whether they mean midnight of
+@@ -865,20 +761,16 @@
+ # also been like that in the past.
+ 
+ # From Alexander Krivenyshev (2012-03-09):
+-# According to Infomédiaire web site from Morocco (infomediaire.ma),
+-# on March 9, 2012, (in French) Heure légale:
+-# Le Maroc adopte officiellement l'heure d'été
+-# 
++# According to Infomédiaire web site from Morocco (infomediaire.ma),
++# on March 9, 2012, (in French) Heure légale:
++# Le Maroc adopte officiellement l'heure d'été
+ # http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
+-# 
+ # Governing Council adopted draft decree, that Morocco DST starts on
+ # the last Sunday of March (March 25, 2012) and ends on
+ # last Sunday of September (September 30, 2012)
+ # except the month of Ramadan.
+ # or (brief)
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_morocco06.html
+-# 
+ 
+ # From Arthur David Olson (2012-03-10):
+ # The infomediaire.ma source indicates that the system is to be in
+@@ -889,17 +781,13 @@
+ 
+ # From Christophe Tropamer (2012-03-16):
+ # Seen Morocco change again:
+-# 
+ # http://www.le2uminutes.com/actualite.php
+-# 
+-# "...à partir du dernier dimance d'avril et non fins mars,
+-# comme annoncé précédemment."
++# "...à partir du dernier dimanche d'avril et non fins mars,
++# comme annoncé précédemment."
+ 
+ # From Milamber Space Network (2012-07-17):
+ # The official return to GMT is announced by the Moroccan government:
+-# 
+ # http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
+-# 
+ #
+ # Google translation, lightly edited:
+ # Back to the standard time of the Kingdom (GMT)
+@@ -917,7 +805,7 @@
+ # announced a bit in advance.  On 2012-07-11 the Moroccan government
+ # announced that year's Ramadan daylight-saving transitions would be
+ # 2012-07-20 and 2012-08-20; see
+-# .
++# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288
+ 
+ # From Andrew Paprocki (2013-07-02):
+ # Morocco announced that the year's Ramadan daylight-savings
+@@ -937,39 +825,36 @@
+ # From Sebastien Willemijns (2014-03-18):
+ # http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp
+ 
+-# From Paul Eggert (2014-03-19):
+-# To estimate what the Moroccan government will do in future years,
+-# transition dates for 2014 through 2038 were determined by running
+-# the following program under GNU Emacs 24.3:
+-#
+-# (let ((islamic-year 1435))
+-#   (while (< islamic-year 1461)
+-#     (let ((a
+-#	     (calendar-gregorian-from-absolute
+-#	      (calendar-islamic-to-absolute (list 9 1 islamic-year))))
+-#	    (b
+-#	     (calendar-gregorian-from-absolute
+-#	      (calendar-islamic-to-absolute (list 10 1 islamic-year)))))
+-#	(insert
+-#	 (format
+-#	  (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 3:00\t0\t-\n"
+-#		  "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 2:00\t1:00\tS\n")
+-#	  (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
+-#	  (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
++# From Milamber Space Network (2014-06-05):
++# The Moroccan government has recently announced that the country will return
++# to standard time at 03:00 on Saturday, June 28, 2014 local time....  DST
++# will resume again at 02:00 on Saturday, August 2, 2014....
++# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
++
++# From Paul Eggert (2014-06-05):
++# For now, guess that later spring and fall transitions will use 2014's rules,
++# and guess that Morocco will switch to standard time at 03:00 the last
++# Saturday before Ramadan, and back to DST at 02:00 the first Saturday after
++# Ramadan.  To implement this, transition dates for 2015 through 2037 were
++# determined by running the following program under GNU Emacs 24.3, with the
++# results integrated by hand into the table below.
++# (let ((islamic-year 1436))
++#   (while (< islamic-year 1460)
++#     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
++#           (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
++#           (saturday 6))
++#       (while (/= saturday (mod (setq a (1- a)) 7)))
++#       (while (/= saturday (mod b 7))
++#         (setq b (1+ b)))
++#       (setq a (calendar-gregorian-from-absolute a))
++#       (setq b (calendar-gregorian-from-absolute b))
++#       (insert
++#        (format
++#         (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t0\t-\n"
++#                 "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t1:00\tS\n")
++#         (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
++#         (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+ #     (setq islamic-year (+ 1 islamic-year))))
+-#
+-# with spring-forward transitions removed for 2023-2025, when the
+-# normal spring-forward date falls during the estimated Ramadan; with
+-# all transitions removed for 2026-2035, where the estimated Ramadan
+-# falls entirely outside daylight-saving time; and with fall-back
+-# transitions removed for 2036-2037, where the normal fall-back
+-# date falls during the estimated Ramadan.  Normally, the table would
+-# stop after 2037 because 32-bit time_t values roll around early in 2038,
+-# but that would imply a prediction of perpetual DST after March 2038
+-# due to the year-2037 glitches.  So, this table instead stops after
+-# 2038, the first non-glitchy year after the 32-bit rollover.
+-# An advantage of stopping after 2038 is that it lets zic guess
+-# TZ='WET0WEST,M3.5.0,M10.5.0/3' for time stamps far in the future.
+ 
+ # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ 
+@@ -991,46 +876,44 @@
+ Rule	Morocco	2008	only	-	Jun	 1	 0:00	1:00	S
+ Rule	Morocco	2008	only	-	Sep	 1	 0:00	0	-
+ Rule	Morocco	2009	only	-	Jun	 1	 0:00	1:00	S
+-Rule	Morocco	2009	only	-	Aug	 21	 0:00	0	-
++Rule	Morocco	2009	only	-	Aug	21	 0:00	0	-
+ Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
+ Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
+ Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
+-Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+-Rule	Morocco	2012	2013	-	Apr	 lastSun 2:00	1:00	S
+-Rule	Morocco	2012	only	-	Sep	 30	 3:00	0	-
+-Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
+-Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
+-Rule	Morocco	2013	only	-	Jul	  7	 3:00	0	-
+-Rule	Morocco	2013	only	-	Aug	 10	 2:00	1:00	S
+-Rule	Morocco	2013	2035	-	Oct	 lastSun 3:00	0	-
+-Rule	Morocco	2014	2022	-	Mar	 lastSun 2:00	1:00	S
+-Rule	Morocco	2014	only	-	Jun	 29	 3:00	0	-
+-Rule	Morocco	2014	only	-	Jul	 29	 2:00	1:00	S
+-Rule	Morocco	2015	only	-	Jun	 18	 3:00	0	-
+-Rule	Morocco	2015	only	-	Jul	 18	 2:00	1:00	S
+-Rule	Morocco	2016	only	-	Jun	  7	 3:00	0	-
+-Rule	Morocco	2016	only	-	Jul	  7	 2:00	1:00	S
+-Rule	Morocco	2017	only	-	May	 27	 3:00	0	-
+-Rule	Morocco	2017	only	-	Jun	 26	 2:00	1:00	S
+-Rule	Morocco	2018	only	-	May	 16	 3:00	0	-
+-Rule	Morocco	2018	only	-	Jun	 15	 2:00	1:00	S
+-Rule	Morocco	2019	only	-	May	  6	 3:00	0	-
+-Rule	Morocco	2019	only	-	Jun	  5	 2:00	1:00	S
+-Rule	Morocco	2020	only	-	Apr	 24	 3:00	0	-
+-Rule	Morocco	2020	only	-	May	 24	 2:00	1:00	S
+-Rule	Morocco	2021	only	-	Apr	 13	 3:00	0	-
+-Rule	Morocco	2021	only	-	May	 13	 2:00	1:00	S
+-Rule	Morocco	2022	only	-	Apr	  3	 3:00	0	-
+-Rule	Morocco	2022	only	-	May	  3	 2:00	1:00	S
+-Rule	Morocco	2023	only	-	Apr	 22	 2:00	1:00	S
+-Rule	Morocco	2024	only	-	Apr	 10	 2:00	1:00	S
+-Rule	Morocco	2025	only	-	Mar	 31	 2:00	1:00	S
+-Rule	Morocco	2026	max	-	Mar	 lastSun 2:00	1:00	S
+-Rule	Morocco	2036	only	-	Oct	 21	 3:00	0	-
+-Rule	Morocco	2037	only	-	Oct	 11	 3:00	0	-
+-Rule	Morocco	2038	only	-	Sep	 30	 3:00	0	-
+-Rule	Morocco	2038	only	-	Oct	 30	 2:00	1:00	S
+-Rule	Morocco	2038	max	-	Oct	 lastSun 3:00	0	-
++Rule	Morocco	2011	only	-	Jul	31	 0	0	-
++Rule	Morocco	2012	2013	-	Apr	lastSun	 2:00	1:00	S
++Rule	Morocco	2012	only	-	Sep	30	 3:00	0	-
++Rule	Morocco	2012	only	-	Jul	20	 3:00	0	-
++Rule	Morocco	2012	only	-	Aug	20	 2:00	1:00	S
++Rule	Morocco	2013	only	-	Jul	 7	 3:00	0	-
++Rule	Morocco	2013	only	-	Aug	10	 2:00	1:00	S
++Rule	Morocco	2013	max	-	Oct	lastSun	 3:00	0	-
++Rule	Morocco	2014	2022	-	Mar	lastSun	 2:00	1:00	S
++Rule	Morocco	2014	only	-	Jun	28	 3:00	0	-
++Rule	Morocco	2014	only	-	Aug	 2	 2:00	1:00	S
++Rule	Morocco	2015	only	-	Jun	13	 3:00	0	-
++Rule	Morocco	2015	only	-	Jul	18	 2:00	1:00	S
++Rule	Morocco	2016	only	-	Jun	 4	 3:00	0	-
++Rule	Morocco	2016	only	-	Jul	 9	 2:00	1:00	S
++Rule	Morocco	2017	only	-	May	20	 3:00	0	-
++Rule	Morocco	2017	only	-	Jul	 1	 2:00	1:00	S
++Rule	Morocco	2018	only	-	May	12	 3:00	0	-
++Rule	Morocco	2018	only	-	Jun	16	 2:00	1:00	S
++Rule	Morocco	2019	only	-	May	 4	 3:00	0	-
++Rule	Morocco	2019	only	-	Jun	 8	 2:00	1:00	S
++Rule	Morocco	2020	only	-	Apr	18	 3:00	0	-
++Rule	Morocco	2020	only	-	May	30	 2:00	1:00	S
++Rule	Morocco	2021	only	-	Apr	10	 3:00	0	-
++Rule	Morocco	2021	only	-	May	15	 2:00	1:00	S
++Rule	Morocco	2022	only	-	Apr	 2	 3:00	0	-
++Rule	Morocco	2022	only	-	May	 7	 2:00	1:00	S
++Rule	Morocco	2023	only	-	Apr	22	 2:00	1:00	S
++Rule	Morocco	2024	only	-	Apr	13	 2:00	1:00	S
++Rule	Morocco	2025	only	-	Apr	 5	 2:00	1:00	S
++Rule	Morocco	2026	max	-	Mar	lastSun	 2:00	1:00	S
++Rule	Morocco	2035	only	-	Oct	27	 3:00	0	-
++Rule	Morocco	2036	only	-	Oct	18	 3:00	0	-
++Rule	Morocco	2037	only	-	Oct	10	 3:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+@@ -1049,21 +932,34 @@
+ # Assume that this has been true since Western Sahara switched to GMT,
+ # since most of it was then controlled by Morocco.
+ 
+-Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
++Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan # El Aaiún
+ 			-1:00	-	WAT	1976 Apr 14
+ 			 0:00	Morocco	WE%sT
+ 
+ # Mozambique
++#
++# Shanks gives 1903-03-01 for the transition to CAT.
++# Perhaps the 1911-05-26 Portuguese decree
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# merely made it official?
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
+ 			2:00	-	CAT
++Link Africa/Maputo Africa/Blantyre	# Malawi
++Link Africa/Maputo Africa/Bujumbura	# Burundi
++Link Africa/Maputo Africa/Gaborone	# Botswana
++Link Africa/Maputo Africa/Harare	# Zimbabwe
++Link Africa/Maputo Africa/Kigali	# Rwanda
++Link Africa/Maputo Africa/Lubumbashi	# E Dem. Rep. of Congo
++Link Africa/Maputo Africa/Lusaka	# Zambia
+ 
+ # Namibia
+ # The 1994-04-03 transition is from Shanks & Pottenger.
+ # Shanks & Pottenger report no DST after 1998-04; go with IATA.
+ 
+-# From Petronella Sibeene (2007-03-30) in
+-# :
++# From Petronella Sibeene (2007-03-30):
++# http://allafrica.com/stories/200703300178.html
+ # While the entire country changes its time, Katima Mulilo and other
+ # settlements in Caprivi unofficially will not because the sun there
+ # rises and sets earlier compared to other regions.  Chief of
+@@ -1080,34 +976,41 @@
+ Rule	Namibia	1995	max	-	Apr	Sun>=1	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
+-			1:30	-	SWAT	1903 Mar	# SW Africa Time
+-			2:00	-	SAST	1942 Sep 20 2:00
+-			2:00	1:00	SAST	1943 Mar 21 2:00
++			1:30	-	SWAT	1903 Mar    # SW Africa Time
++			2:00	-	SAST	1942 Sep 20  2:00
++			2:00	1:00	SAST	1943 Mar 21  2:00
+ 			2:00	-	SAST	1990 Mar 21 # independence
+ 			2:00	-	CAT	1994 Apr  3
+ 			1:00	Namibia	WA%sT
+ 
+ # Niger
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Niamey	 0:08:28 -	LMT	1912
+-			-1:00	-	WAT	1934 Feb 26
+-			 0:00	-	GMT	1960
+-			 1:00	-	WAT
++# See Africa/Lagos.
+ 
+ # Nigeria
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
+ 			1:00	-	WAT
++Link Africa/Lagos Africa/Bangui	     # Central African Republic
++Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
++Link Africa/Lagos Africa/Douala	     # Cameroon
++Link Africa/Lagos Africa/Kinshasa    # Dem. Rep. of the Congo (west)
++Link Africa/Lagos Africa/Libreville  # Gabon
++Link Africa/Lagos Africa/Luanda	     # Angola
++Link Africa/Lagos Africa/Malabo	     # Equatorial Guinea
++Link Africa/Lagos Africa/Niamey	     # Niger
++Link Africa/Lagos Africa/Porto-Novo  # Benin
+ 
+-# Reunion
++# Réunion
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun	# Saint-Denis
+-			4:00	-	RET	# Reunion Time
++Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun # Saint-Denis
++			4:00	-	RET	# Réunion Time
+ #
+-# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
++# Crozet Islands also observes Réunion time; see the 'antarctica' file.
++#
++# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
+ # The following information about them is taken from
+-# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
+-# no longer available as of 1999-08-17).
++# Îles Éparses (, 1997-07-22,
++# in French; no longer available as of 1999-08-17).
+ # We have no info about their time zone histories.
+ #
+ # Bassas da India - uninhabited
+@@ -1117,37 +1020,24 @@
+ # Tromelin - inhabited until at least 1958
+ 
+ # Rwanda
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
+-			2:00	-	CAT
++# See Africa/Maputo.
+ 
+ # St Helena
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/St_Helena	-0:22:48 -	LMT	1890		# Jamestown
+-			-0:22:48 -	JMT	1951	# Jamestown Mean Time
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ # The other parts of the St Helena territory are similar:
+ #	Tristan da Cunha: on GMT, say Whitman and the CIA
+-#	Ascension: on GMT, says usno1995 and the CIA
++#	Ascension: on GMT, say the USNO (1995-12-21) and the CIA
+ #	Gough (scientific station since 1955; sealers wintered previously):
+ #		on GMT, says the CIA
+-#	Inaccessible, Nightingale: no information, but probably GMT
++#	Inaccessible, Nightingale: uninhabited
+ 
+-# Sao Tome and Principe
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Sao_Tome	 0:26:56 -	LMT	1884
+-			-0:36:32 -	LMT	1912	# Lisbon Mean Time
+-			 0:00	-	GMT
+-
++# São Tomé and Príncipe
+ # Senegal
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Dakar	-1:09:44 -	LMT	1912
+-			-1:00	-	WAT	1941 Jun
+-			 0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Seychelles
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun	# Victoria
++Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun # Victoria
+ 			4:00	-	SCT	# Seychelles Time
+ # From Paul Eggert (2001-05-30):
+ # Aldabra, Farquhar, and Desroches, originally dependencies of the
+@@ -1157,24 +1047,10 @@
+ # Possibly the islands were uninhabited.
+ 
+ # Sierra Leone
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
+-Rule	SL	1935	1942	-	Jun	 1	0:00	0:40	SLST
+-Rule	SL	1935	1942	-	Oct	 1	0:00	0	WAT
+-Rule	SL	1957	1962	-	Jun	 1	0:00	1:00	SLST
+-Rule	SL	1957	1962	-	Sep	 1	0:00	0	GMT
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Freetown	-0:53:00 -	LMT	1882
+-			-0:53:00 -	FMT	1913 Jun # Freetown Mean Time
+-			-1:00	SL	%s	1957
+-			 0:00	SL	%s
++# See Africa/Abidjan.
+ 
+ # Somalia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Mogadishu	3:01:28 -	LMT	1893 Nov
+-			3:00	-	EAT	1931
+-			2:30	-	BEAT	1957
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # South Africa
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1184,15 +1060,18 @@
+ Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
+ 			1:30	-	SAST	1903 Mar
+ 			2:00	SA	SAST
++Link Africa/Johannesburg Africa/Maseru	   # Lesotho
++Link Africa/Johannesburg Africa/Mbabane    # Swaziland
++#
+ # Marion and Prince Edward Is
+ # scientific station since 1947
+ # no information
+ 
+ # Sudan
+ #
+-# From 
+-# Sudan News Agency (2000-01-13)
+-# , also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
++# From 
++# Sudan News Agency (2000-01-13),
++# also reported by Michaël De Beukelaer-Dossche via Steffen Thorsen:
+ # Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
+ # Saturday....  This was announced Thursday by Caretaker State Minister for
+ # Manpower Abdul-Rahman Nur-Eddin.
+@@ -1211,26 +1090,18 @@
+ Link Africa/Khartoum Africa/Juba
+ 
+ # Swaziland
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
+-			2:00	-	SAST
++# See Africa/Johannesburg.
+ 
+ # Tanzania
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
+-			3:00	-	EAT	1948
+-			2:45	-	BEAUT	1961
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Togo
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Lome	0:04:52 -	LMT	1893
+-			0:00	-	GMT
++# See Africa/Abidjan.
+ 
+ # Tunisia
+ 
+ # From Gwillim Law (2005-04-30):
+-# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
++# My correspondent, Risto Nykänen, has alerted me to another adoption of DST,
+ # this time in Tunisia.  According to Yahoo France News
+ # , in a story attributed to AP
+ # and dated 2005-04-26, "Tunisia has decided to advance its official time by
+@@ -1239,8 +1110,8 @@
+ # Saturday."  (My translation)
+ #
+ # From Oscar van Vlijmen (2005-05-02):
+-# LaPresse, the first national daily newspaper ...
+-# 
++# La Presse, the first national daily newspaper ...
++# http://www.lapresse.tn/archives/archives280405/actualites/lheure.html
+ # ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
+ # 1h standard time.
+ #
+@@ -1253,18 +1124,12 @@
+ # From Steffen Thorsen (2009-03-16):
+ # According to several news sources, Tunisia will not observe DST this year.
+ # (Arabic)
+-# 
+ # http://www.elbashayer.com/?page=viewn&nid=42546
+-# 
+-# 
+ # http://www.babnet.net/kiwidetail-15295.asp
+-# 
+ #
+ # We have also confirmed this with the US embassy in Tunisia.
+ # We have a wrap-up about this on the following page:
+-# 
+ # http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-03-17):
+ # Here is a link to Tunis Afrique Presse News Agency
+@@ -1272,20 +1137,17 @@
+ # Standard time to be kept the whole year long (tap.info.tn):
+ #
+ # (in English)
+-# 
+ # http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157
+-# 
+ #
+ # (in Arabic)
+-# 
+ # http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1
+-# 
+ 
+-# From Arthur David Olson (2009--3-18):
+-# The Tunis Afrique Presse News Agency notice contains this: "This measure is due to the fact
+-# that the fasting month of ramadan coincides with the period concerned by summer time.
+-# Therefore, the standard time will be kept unchanged the whole year long."
+-# So foregoing DST seems to be an exception (albeit one that may be repeated in the  future).
++# From Arthur David Olson (2009-03-18):
++# The Tunis Afrique Presse News Agency notice contains this: "This measure is
++# due to the fact that the fasting month of Ramadan coincides with the period
++# concerned by summer time.  Therefore, the standard time will be kept
++# unchanged the whole year long."  So foregoing DST seems to be an exception
++# (albeit one that may be repeated in the future).
+ 
+ # From Alexander Krivenyshev (2010-03-27):
+ # According to some news reports Tunis confirmed not to use DST in 2010
+@@ -1297,12 +1159,8 @@
+ # coincided with the month of Ramadan..."
+ #
+ # (in Arabic)
+-# 
+ # http://www.moheet.com/show_news.aspx?nid=358861&pg=1
+-# 
+ # http://www.almadenahnews.com/newss/news.php?c=118&id=38036
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1337,23 +1195,12 @@
+ # Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
+-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
++			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
+ 			1:00	Tunisia	CE%sT
+ 
+ # Uganda
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
+-			3:00	-	EAT	1930
+-			2:30	-	BEAT	1948
+-			2:45	-	BEAUT	1957
+-			3:00	-	EAT
++# See Africa/Nairobi.
+ 
+ # Zambia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
+-			2:00	-	CAT
+-
+ # Zimbabwe
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
+-			2:00	-	CAT
++# See Africa/Maputo.
+--- ./jdk/test/sun/util/calendar/zi/tzdata/antarctica	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/antarctica	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,19 +21,16 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+ # From Paul Eggert (1999-11-15):
+ # To keep things manageable, we list only locations occupied year-round; see
+-# 
+ # COMNAP - Stations and Bases
+-# 
++# http://www.comnap.aq/comnap/comnap.nsf/P/Stations/
+ # and
+-# 
+ # Summary of the Peri-Antarctic Islands (1998-07-23)
+-# 
++# http://www.spri.cam.ac.uk/bob/periant.htm
+ # for information.
+ # Unless otherwise specified, we have no time zone information.
+ #
+@@ -78,19 +75,19 @@
+ 
+ # Argentina - year-round bases
+ # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+-# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
+-# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
+-# Marambio, Seymour I, -6414-05637, since 1969-10-29
++# Carlini, Potter Cove, King George Island, -6414-0602320, since 1982-01
++# Esperanza, Hope Bay, -6323-05659, since 1952-12-17
++# Marambio, -6414-05637, since 1969-10-29
+ # Orcadas, Laurie I, -6016-04444, since 1904-02-22
+-# San Martin, Debenham I, -6807-06708, since 1951-03-21
++# San Martín, Barry I, -6808-06706, since 1951-03-21
+ #	(except 1960-03 / 1976-03-21)
+ 
+ # Australia - territories
+ # Heard Island, McDonald Islands (uninhabited)
+ #	previously sealers and scientific personnel wintered
+-#	
+ #	Margaret Turner reports
+-#	 (1999-09-30) that they're UTC+5, with no DST;
++#	http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html
++#	(1999-09-30) that they're UTC+5, with no DST;
+ #	presumably this is when they have visitors.
+ #
+ # year-round bases
+@@ -107,14 +104,10 @@
+ # The changes occurred on 2009-10-18 at 02:00 (local times).
+ #
+ # Government source: (Australian Antarctic Division)
+-# 
+ # http://www.aad.gov.au/default.asp?casid=37079
+-# 
+ #
+ # We have more background information here:
+-# 
+ # http://www.timeanddate.com/news/time/antarctica-new-times.html
+-# 
+ 
+ # From Steffen Thorsen (2010-03-10):
+ # We got these changes from the Australian Antarctic Division: ...
+@@ -129,50 +122,49 @@
+ # - Mawson station stays on UTC+5.
+ #
+ # Background:
+-# 
+ # http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
+-# 
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Casey	0	-	zzz	1969
+-			8:00	-	WST	2009 Oct 18 2:00
+-						# Western (Aus) Standard Time
+-			11:00	-	CAST	2010 Mar 5 2:00
+-						# Casey Time
+-			8:00	-	WST	2011 Oct 28 2:00
++			8:00	-	AWST	2009 Oct 18  2:00
++						# Australian Western Std Time
++			11:00	-	CAST	2010 Mar  5  2:00  # Casey Time
++			8:00	-	AWST	2011 Oct 28  2:00
+ 			11:00	-	CAST	2012 Feb 21 17:00u
+-			8:00	-	WST
++			8:00	-	AWST
+ Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
+-			7:00	-	DAVT	1964 Nov # Davis Time
++			7:00	-	DAVT	1964 Nov    # Davis Time
+ 			0	-	zzz	1969 Feb
+-			7:00	-	DAVT	2009 Oct 18 2:00
++			7:00	-	DAVT	2009 Oct 18  2:00
+ 			5:00	-	DAVT	2010 Mar 10 20:00u
+-			7:00	-	DAVT	2011 Oct 28 2:00
++			7:00	-	DAVT	2011 Oct 28  2:00
+ 			5:00	-	DAVT	2012 Feb 21 20:00u
+ 			7:00	-	DAVT
+ Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
+-			6:00	-	MAWT	2009 Oct 18 2:00
+-						# Mawson Time
++			6:00	-	MAWT	2009 Oct 18  2:00 # Mawson Time
+ 			5:00	-	MAWT
+ # References:
+-# 
+ # Casey Weather (1998-02-26)
+-# 
+-# 
++# http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html
+ # Davis Station, Antarctica (1998-02-26)
+-# 
+-# 
++# http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html
+ # Mawson Station, Antarctica (1998-02-25)
+-# 
++# http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html
++
++# Belgium - year-round base
++# Princess Elisabeth, Queen Maud Land, -713412+0231200, since 2007
+ 
+ # Brazil - year-round base
+-# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
++# Ferraz, King George Island, -6205+05824, since 1983/4
++
++# Bulgaria - year-round base
++# St. Kliment Ohridski, Livingston Island, -623829-0602153, since 1988
+ 
+ # Chile - year-round bases and towns
+ # Escudero, South Shetland Is, -621157-0585735, since 1994
+-# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
+-# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
+-# Capitan Arturo Prat, -6230-05941
++# Frei Montalva, King George Island, -6214-05848, since 1969-03-07
++# O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
++# Prat, -6230-05941
+ # Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
+ # These locations have always used Santiago time; use TZ='America/Santiago'.
+ 
+@@ -180,31 +172,35 @@
+ # Great Wall, King George Island, -6213-05858, since 1985-02-20
+ # Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
+ 
+-# France - year-round bases
++# France - year-round bases (also see "France & Italy")
+ #
+ # From Antoine Leca (1997-01-20):
+-# Time data are from Nicole Pailleau at the IFRTP
++# Time data entries are from Nicole Pailleau at the IFRTP
+ # (French Institute for Polar Research and Technology).
+-# She confirms that French Southern Territories and Terre Adelie bases
+-# don't observe daylight saving time, even if Terre Adelie supplies came
++# She confirms that French Southern Territories and Terre Adélie bases
++# don't observe daylight saving time, even if Terre Adélie supplies came
+ # from Tasmania.
+ #
+ # French Southern Territories with year-round inhabitants
+ #
+-# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
+-# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
+-# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
++# Alfred Faure, Possession Island, Crozet Islands, -462551+0515152, since 1964;
++#	sealing & whaling stations operated variously 1802/1911+;
++#	see Indian/Reunion.
++#
++# Martin-de-Viviès, Amsterdam Island, -374105+0773155, since 1950
++# Port-aux-Français, Kerguelen Islands, -492110+0701303, since 1951;
+ #	whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
+ #
+ # St Paul Island - near Amsterdam, uninhabited
+ #	fishing stations operated variously 1819/1931
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Indian/Kerguelen	0	-	zzz	1950	# Port-aux-Francais
++Zone Indian/Kerguelen	0	-	zzz	1950 # Port-aux-Français
+ 			5:00	-	TFT	# ISO code TF Time
+ #
+ # year-round base in the main continent
+-# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
++# Dumont d'Urville, Île des Pétrels, -6640+14001, since 1956-11
++#  (2005-12-05)
+ #
+ # Another base at Port-Martin, 50km east, began operation in 1947.
+ # It was destroyed by fire on 1952-01-14.
+@@ -214,20 +210,22 @@
+ 			10:00	-	PMT	1952 Jan 14 # Port-Martin Time
+ 			0	-	zzz	1956 Nov
+ 			10:00	-	DDUT	# Dumont-d'Urville Time
+-# Reference:
+-# 
+-# Dumont d'Urville Station (2005-12-05)
+-# 
++
++# France & Italy - year-round base
++# Concordia, -750600+1232000, since 2005
+ 
+ # Germany - year-round base
+-# Georg von Neumayer, -7039-00815
++# Neumayer III, -704080-0081602, since 2009
+ 
+-# India - year-round base
+-# Dakshin Gangotri, -7005+01200
++# India - year-round bases
++# Bharati, -692428+0761114, since 2012
++# Maitri, -704558+0114356, since 1989
++
++# Italy - year-round base (also see "France & Italy")
++# Zuchelli, Terra Nova Bay, -744140+1640647, since 1986
+ 
+ # Japan - year-round bases
+-# Dome Fuji, -7719+03942
+-# Syowa, -690022+0393524
++# Syowa (also known as Showa), -690022+0393524, since 1957
+ #
+ # From Hideyuki Suzuki (1999-02-06):
+ # In all Japanese stations, +0300 is used as the standard time.
+@@ -239,11 +237,11 @@
+ Zone Antarctica/Syowa	0	-	zzz	1957 Jan 29
+ 			3:00	-	SYOT	# Syowa Time
+ # See:
+-# 
+ # NIPR Antarctic Research Activities (1999-08-17)
+-# 
++# http://www.nipr.ac.jp/english/ara01.html
+ 
+ # S Korea - year-round base
++# Jang Bogo, Terra Nova Bay, -743700+1641205 since 2014
+ # King Sejong, King George Island, -6213-05847, since 1988
+ 
+ # New Zealand - claims
+@@ -287,11 +285,14 @@
+ Rule	Troll	2004	max	-	Oct	lastSun	1:00u	0:00	UTC
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Antarctica/Troll	0	-	zzz	2005 Feb 12
+-     			0:00	Troll	%s
++			0:00	Troll	%s
+ 
+ # Poland - year-round base
+ # Arctowski, King George Island, -620945-0582745, since 1977
+ 
++# Romania - year-bound base
++# Law-Racoviță, Larsemann Hills, -692319+0762251, since 1986
++
+ # Russia - year-round bases
+ # Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
+ # Mirny, Davis coast, -6633+09301, since 1956-02
+@@ -301,8 +302,8 @@
+ #	year-round from 1960/61 to 1992
+ 
+ # Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
+-# 
+-# From Craig Mundell (1994-12-15):
++# From Craig Mundell (1994-12-15):
++# http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP
+ # Vostok, which is one of the Russian stations, is set on the same
+ # time as Moscow, Russia.
+ #
+@@ -317,7 +318,7 @@
+ #
+ # From Paul Eggert (2001-05-04):
+ # This seems to be hopelessly confusing, so I asked Lee Hotz about it
+-# in person.  He said that some Antartic locations set their local
++# in person.  He said that some Antarctic locations set their local
+ # time so that noon is the warmest part of the day, and that this
+ # changes during the year and does not necessarily correspond to mean
+ # solar noon.  So the Vostok time might have been whatever the clocks
+@@ -329,9 +330,12 @@
+ 
+ # S Africa - year-round bases
+ # Marion Island, -4653+03752
+-# Sanae, -7141-00250
++# SANAE IV, Vesleskarvet, Queen Maud Land, -714022-0025026, since 1997
+ 
+-# UK
++# Ukraine - year-round base
++# Vernadsky (formerly Faraday), Galindez Island, -651445-0641526, since 1954
++
++# United Kingdom
+ #
+ # British Antarctic Territories (BAT) claims
+ # South Orkney Islands
+@@ -387,7 +391,7 @@
+ # but that he found it more convenient to keep GMT+12
+ # as supplies for the station were coming from McMurdo Sound,
+ # which was on GMT+12 because New Zealand was on GMT+12 all year
+-# at that time (1957).  (Source: Siple's book 90 degrees SOUTH.)
++# at that time (1957).  (Source: Siple's book 90 Degrees South.)
+ #
+ # From Susan Smith
+ # http://www.cybertours.com/whs/pole10.html
+--- ./jdk/test/sun/util/calendar/zi/tzdata/asia	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/asia	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,41 +21,44 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2013-08-11):
++# From Paul Eggert (2014-10-31):
+ #
+-# A good source for time zone historical data outside the U.S. is
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Another source occasionally used is Edward W. Whitman, World Time Differences,
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
+ # For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
++#
++# For Russian data circa 1919, a source is:
++# Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
++# (See the 'europe' file for a fuller citation.)
+ #
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+-# I invented the abbreviations marked `*' in the following table;
++# I invented the abbreviations marked '*' in the following table;
+ # the rest are from earlier versions of this file, or from other sources.
+ # Corrections are welcome!
+ #	     std  dst
+@@ -66,17 +69,19 @@
+ #	3:30 IRST IRDT	Iran
+ #	4:00 GST	Gulf*
+ #	5:30 IST	India
+-#	7:00 ICT	Indochina*
++#	7:00 ICT	Indochina, most times and locations*
+ #	7:00 WIB	west Indonesia (Waktu Indonesia Barat)
+ #	8:00 WITA	central Indonesia (Waktu Indonesia Tengah)
+ #	8:00 CST	China
+-#	9:00 CJT	Central Japanese Time (1896/1937)*
++#	8:00 IDT	Indochina, 1943-45, 1947-55, 1960-75 (some locations)*
++#	8:00 JWST	Western Standard Time (Japan, 1896/1937)*
++#	9:00 JCST	Central Standard Time (Japan, 1896/1937)
+ #	9:00 WIT	east Indonesia (Waktu Indonesia Timur)
+ #	9:00 JST  JDT	Japan
+ #	9:00 KST  KDT	Korea
+-#	9:30 CST	(Australian) Central Standard Time
++#	9:30 ACST	Australian Central Standard Time
+ #
+-# See the `europe' file for Russia and Turkey in Asia.
++# See the 'europe' file for Russia and Turkey in Asia.
+ 
+ # From Guy Harris:
+ # Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
+@@ -86,7 +91,7 @@
+ 
+ ###############################################################################
+ 
+-# These rules are stolen from the `europe' file.
++# These rules are stolen from the 'europe' file.
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	EUAsia	1981	max	-	Mar	lastSun	 1:00u	1:00	S
+ Rule	EUAsia	1979	1995	-	Sep	lastSun	 1:00u	0	-
+@@ -138,11 +143,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
+ 			3:00	-	YERT	1957 Mar    # Yerevan Time
+-			4:00 RussiaAsia YER%sT	1991 Mar 31 2:00s
++			4:00 RussiaAsia YER%sT	1991 Mar 31  2:00s
+ 			3:00	1:00	YERST	1991 Sep 23 # independence
+-			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
++			3:00 RussiaAsia	AM%sT	1995 Sep 24  2:00s
+ 			4:00	-	AMT	1997
+-			4:00 RussiaAsia	AM%sT	2012 Mar 25 2:00s
++			4:00 RussiaAsia	AM%sT	2012 Mar 25  2:00s
+ 			4:00	-	AMT
+ 
+ # Azerbaijan
+@@ -155,16 +160,16 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
+ 			3:00	-	BAKT	1957 Mar    # Baku Time
+-			4:00 RussiaAsia BAK%sT	1991 Mar 31 2:00s
++			4:00 RussiaAsia BAK%sT	1991 Mar 31  2:00s
+ 			3:00	1:00	BAKST	1991 Aug 30 # independence
+ 			3:00 RussiaAsia	AZ%sT	1992 Sep lastSat 23:00
+-			4:00	-	AZT	1996 # Azerbaijan time
++			4:00	-	AZT	1996     # Azerbaijan Time
+ 			4:00	EUAsia	AZ%sT	1997
+ 			4:00	Azer	AZ%sT
+ 
+ # Bahrain
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
++Zone	Asia/Bahrain	3:22:20 -	LMT	1920     # Manamah
+ 			4:00	-	GST	1972 Jun
+ 			3:00	-	AST
+ 
+@@ -174,13 +179,8 @@
+ # Daylight Saving Time from June 16 to Sept 30
+ #
+ # Bangladesh to introduce daylight saving time likely from June 16
+-# 
+ # http://www.asiantribune.com/?q=node/17288
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html
+-# 
+ #
+ # "... Bangladesh government has decided to switch daylight saving time from
+ # June
+@@ -195,17 +195,11 @@
+ # the 19th and 20th, and they have not set the end date yet.
+ #
+ # Some sources:
+-# 
+ # http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601
+-# 
+-# 
+ # http://bdnews24.com/details.php?id=85889&cid=2
+-# 
+ #
+ # Our wrap-up:
+-# 
+ # http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html
+-# 
+ 
+ # From A. N. M. Kamrus Saadat (2009-06-15):
+ # Finally we've got the official mail regarding DST start time where DST start
+@@ -220,13 +214,8 @@
+ #
+ # Following report by same newspaper-"The Daily Star Friday":
+ # "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
+-# 
+ # http://www.thedailystar.net/newDesign/news-details.php?nid=107021
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
+-# 
+ 
+ # From Steffen Thorsen (2009-10-13):
+ # IANS (Indo-Asian News Service) now reports:
+@@ -235,22 +224,15 @@
+ # "continue for an indefinite period."
+ #
+ # One of many places where it is published:
+-# 
+ # http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-12-24):
+ # According to Bangladesh newspaper "The Daily Star,"
+ # Bangladesh will change its clock back to Standard Time on Dec 31, 2009.
+ #
+ # Clock goes back 1-hr on Dec 31 night.
+-# 
+ # http://www.thedailystar.net/newDesign/news-details.php?nid=119228
+-# 
+-# and
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html
+-# 
+ #
+ # "...The government yesterday decided to put the clock back by one hour
+ # on December 31 midnight and the new time will continue until March 31,
+@@ -260,17 +242,12 @@
+ # From Alexander Krivenyshev (2010-03-22):
+ # According to Bangladesh newspaper "The Daily Star,"
+ # Cabinet cancels Daylight Saving Time
+-# 
+ # http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
+-# 
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	S
+-Rule	Dhaka	2009	only	-	Dec	31	23:59	0	-
++Rule	Dhaka	2009	only	-	Dec	31	24:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dhaka	6:01:40 -	LMT	1890
+@@ -301,7 +278,7 @@
+ 
+ # Brunei
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar   # Bandar Seri Begawan
++Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar # Bandar Seri Begawan
+ 			7:30	-	BNT	1933
+ 			8:00	-	BNT
+ 
+@@ -310,19 +287,15 @@
+ # Milne says 6:24:40 was the meridian of the time ball observatory at Rangoon.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
+-			6:24:40	-	RMT	1920	   # Rangoon Mean Time?
+-			6:30	-	BURT	1942 May   # Burma Time
+-			9:00	-	JST	1945 May 3
+-			6:30	-	MMT		   # Myanmar Time
++Zone	Asia/Rangoon	6:24:40 -	LMT	1880        # or Yangon
++			6:24:40	-	RMT	1920        # Rangoon Mean Time?
++			6:30	-	BURT	1942 May    # Burma Time
++			9:00	-	JST	1945 May  3
++			6:30	-	MMT	# Myanmar Time
+ 
+ # Cambodia
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Phnom_Penh	6:59:40 -	LMT	1906 Jun  9
+-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+-			7:00	-	ICT	1912 May
+-			8:00	-	ICT	1931 May
+-			7:00	-	ICT
++# See Asia/Bangkok.
++
+ 
+ # China
+ 
+@@ -332,12 +305,12 @@
+ # From Bob Devine (1988-01-28):
+ # No they don't.  See TIME mag, 1986-02-17 p.52.  Even though
+ # China is across 4 physical time zones, before Feb 1, 1986 only the
+-# Peking (Bejing) time zone was recognized.  Since that date, China
+-# has two of 'em -- Peking's and Urumqi (named after the capital of
++# Peking (Beijing) time zone was recognized.  Since that date, China
++# has two of 'em - Peking's and Ürümqi (named after the capital of
+ # the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.
+ #
+ # . . .I just deleted the DST table and this editor makes it too
+-# painful to suck in another copy..  So, here is what I have for
++# painful to suck in another copy.  So, here is what I have for
+ # DST start/end dates for Peking's time zone (info from AP):
+ #
+ #     1986 May 4 - Sept 14
+@@ -347,15 +320,16 @@
+ # CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
+ # CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
+ 
+-# From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger write that China (except for Hong Kong and Macau)
+-# has had a single time zone since 1980 May 1, observing summer DST
+-# from 1986 through 1991; this contradicts Devine's
+-# note about Time magazine, though apparently _something_ happened in 1986.
+-# Go with Shanks & Pottenger for now.  I made up names for the other
+-# pre-1980 time zones.
++# From Paul Eggert (2008-02-11):
++# Jim Mann, "A clumsy embrace for another western custom: China on daylight
++# time - sort of", Los Angeles Times, 1986-05-05 ... [says] that China began
++# observing daylight saving time in 1986.
+ 
+-# From Shanks & Pottenger:
++# From Paul Eggert (2014-06-30):
++# Shanks & Pottenger have China switching to a single time zone in 1980, but
++# this doesn't seem to be correct.  They also write that China observed summer
++# DST from 1986 through 1991, which seems to match the above commentary, so
++# go with them for DST rules as follows:
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Shang	1940	only	-	Jun	 3	0:00	1:00	D
+ Rule	Shang	1940	1941	-	Oct	 1	0:00	0	S
+@@ -369,7 +343,7 @@
+ # historic timezones from some Taiwan websites.  And yes, there are official
+ # Chinese names for these locales (before 1949).
+ #
+-# From Jesper Norgaard Welen (2006-07-14):
++# From Jesper Nørgaard Welen (2006-07-14):
+ # I have investigated the timezones around 1970 on the
+ # http://www.astro.com/atlas site [with provinces and county
+ # boundaries summarized below]....  A few other exceptions were two
+@@ -380,65 +354,97 @@
+ # (could be true), for the moment I am assuming that those two
+ # counties are mistakes in the astro.com data.
+ 
+-# From Paul Eggert (2008-02-11):
+-# I just now checked Google News for western news sources that talk
+-# about China's single time zone, and couldn't find anything before 1986
+-# talking about China being in one time zone.  (That article was: Jim
+-# Mann, "A clumsy embrace for another western custom: China on daylight
+-# time--sort of", Los Angeles Times, 1986-05-05.  By the way, this
+-# article confirms the tz database's data claiming that China began
+-# observing daylight saving time in 1986.
++# From Paul Eggert (2014-06-30):
++# Alois Treindl kindly sent me translations of the following two sources:
+ #
+-# From Thomas S. Mullaney (2008-02-11):
+-# I think you're combining two subjects that need to treated
+-# separately: daylight savings (which, you're correct, wasn't
+-# implemented until the 1980s) and the unified time zone centered near
+-# Beijing (which was implemented in 1949). Briefly, there was also a
+-# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
+-# ceased, and the second eventually recognized (again, in the 1980s).
++# (1)
++# Guo Qingsheng (National Time-Service Center, CAS, Xi'an 710600, China)
++# Beijing Time at the Beginning of the PRC
++# China Historical Materials of Science and Technology
++# (Zhongguo ke ji shi liao, 中国科技史料), Vol. 24, No. 1 (2003)
++# It gives evidence that at the beginning of the PRC, Beijing time was
++# officially apparent solar time!  However, Guo also says that the
++# evidence is dubious, as the relevant institute of astronomy had not
++# been taken over by the PRC yet.  It's plausible that apparent solar
++# time was announced but never implemented, and that people continued
++# to use UT+8.  As the Shanghai radio station (and I presume the
++# observatory) was still under control of French missionaries, it
++# could well have ignored any such mandate.
+ #
+-# From Paul Eggert (2008-06-30):
+-# There seems to be a good chance China switched to a single time zone in 1949
+-# rather than in 1980 as Shanks & Pottenger have it, but we don't have a
+-# reliable documentary source saying so yet, so for now we still go with
+-# Shanks & Pottenger.
+-
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
++# (2)
++# Guo Qing-sheng (Shaanxi Astronomical Observatory, CAS, Xi'an 710600, China)
++# A Study on the Standard Time Changes for the Past 100 Years in China
++# [undated and unknown publication location]
++# It says several things:
++#   * The Qing dynasty used local apparent solar time throughout China.
++#   * The Republic of China instituted Beijing mean solar time effective
++#     the official calendar book of 1914.
++#   * The French Concession in Shanghai set up signal stations in
++#     French docks in the 1890s, controlled by Xujiahui (Zikawei)
++#     Observatory and set to local mean time.
++#   * "From the end of the 19th century" it changed to UT+8.
++#   * Chinese Customs (by then reduced to a tool of foreign powers)
++#     eventually standardized on this time for all ports, and it
++#     became used by railways as well.
++#   * In 1918 the Central Observatory proposed dividing China into
++#     five time zones (see below for details).  This caught on
++#     at first only in coastal areas observing UT+8.
++#   * During WWII all of China was in theory was at UT+7.  In practice
++#     this was ignored in the west, and I presume was ignored in
++#     Japanese-occupied territory.
++#   * Japanese-occupied Manchuria was at UT+9, i.e., Japan time.
++#   * The five-zone plan was resurrected after WWII and officially put into
++#     place (with some modifications) in March 1948.  It's not clear
++#     how well it was observed in areas under Nationalist control.
++#   * The People's Liberation Army used UT+8 during the civil war.
++#
++# An AP article "Shanghai Internat'l Area Little Changed" in the
++# Lewiston (ME) Daily Sun (1939-05-29), p 17, said "Even the time is
++# different - the occupied districts going by Tokyo time, an hour
++# ahead of that prevailing in the rest of Shanghai."  Guess that the
++# Xujiahui Observatory was under French control and stuck with UT+8.
++#
++# In earlier versions of this file, China had many separate Zone entries, but
++# this was based on what were apparently incorrect data in Shanks & Pottenger.
++# This has now been simplified to the two entries Asia/Shanghai and
++# Asia/Urumqi, with the others being links for backward compatibility.
++# Proposed in 1918 and theoretically in effect until 1949 (although in practice
++# mainly observed in coastal areas), the five zones were:
++#
++# Changbai Time ("Long-white Time", Long-white = Heilongjiang area) UT+8.5
++# Asia/Harbin (currently a link to Asia/Shanghai)
+ # Heilongjiang (except Mohe county), Jilin
+-Zone	Asia/Harbin	8:26:44	-	LMT	1928 # or Haerbin
+-			8:30	-	CHAT	1932 Mar # Changbai Time
+-			8:00	-	CST	1940
+-			9:00	-	CHAT	1966 May
+-			8:30	-	CHAT	1980 May
+-			8:00	PRC	C%sT
+-# Zhongyuan Time ("Central plain Time")
++#
++# Zhongyuan Time ("Central plain Time") UT+8
++# Asia/Shanghai
+ # most of China
+-# Milne gives 8:05:56.7; round to nearest.
+-Zone	Asia/Shanghai	8:05:57	-	LMT	1928
+-			8:00	Shang	C%sT	1949
+-			8:00	PRC	C%sT
+-# Long-shu Time (probably due to Long and Shu being two names of that area)
++# This currently represents most other zones as well,
++# as apparently these regions have been the same since 1970.
++# Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest.
++# Guo says Shanghai switched to UT+8 "from the end of the 19th century".
++#
++# Long-shu Time (probably due to Long and Shu being two names of that area) UT+7
++# Asia/Chongqing (currently a link to Asia/Shanghai)
+ # Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
+ # most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
+ # counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
+ # Yangchun, Yangjiang, Yu'nan, and Yunfu.
+-Zone	Asia/Chongqing	7:06:20	-	LMT	1928 # or Chungking
+-			7:00	-	LONT	1980 May # Long-shu Time
+-			8:00	PRC	C%sT
+-# Xin-zang Time ("Xinjiang-Tibet Time")
++#
++# Xin-zang Time ("Xinjiang-Tibet Time") UT+6
++# Asia/Urumqi
++# This currently represents Kunlun Time as well,
++# as apparently the two regions have been the same since 1970.
+ # The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
+ # the Guangdong counties  Xuwen, Haikang, Suixi, Lianjiang,
+ # Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
+ # east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
+-# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
++# east Xinjiang, including Ürümqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
+ # Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
+ # Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
+ # Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
+-Zone	Asia/Urumqi	5:50:20	-	LMT	1928 # or Urumchi
+-			6:00	-	URUT	1980 May # Urumqi Time
+-			8:00	PRC	C%sT
+-# Kunlun Time
++#
++# Kunlun Time UT+5.5
++# Asia/Kashgar (currently a link to Asia/Urumqi)
+ # West Tibet, including Pulan, Aheqi, Shufu, Shule;
+ # West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
+ # Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
+@@ -455,9 +461,9 @@
+ # population of Xinjiang, typically use "Xinjiang time" which is two
+ # hours behind Beijing time, or UTC +0600. The government of the Xinjiang
+ # Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as
+-# local governments such as the Urumqi city government use both times in
++# local governments such as the Ürümqi city government use both times in
+ # publications, referring to what is popularly called Xinjiang time as
+-# "Urumqi time." When Uyghurs make an appointment in the Uyghur language
++# "Ürümqi time." When Uyghurs make an appointment in the Uyghur language
+ # they almost invariably use Xinjiang time.
+ #
+ # (Their ethnic Han compatriots would typically have no clue of its
+@@ -469,21 +475,6 @@
+ # the province not having dual times but four times in use at the same
+ # time. Some areas remained on standard Xinjiang time or Beijing time and
+ # others moving their clocks ahead.)
+-#
+-# ...an example of an official website using of Urumqi time.
+-#
+-# The first few lines of the Google translation of
+-# 
+-# http://www.fjysgl.gov.cn/show.aspx?id=2379&cid=39
+-# 
+-# (retrieved 2009-10-13)
+-# > Urumqi fire seven people are missing the alleged losses of at least
+-# > 500 million yuan
+-# >
+-# > (Reporter Dong Liu) the day before 20:20 or so (Urumqi Time 18:20),
+-# > Urumqi City Department of International Plaza Luther Qiantang River
+-# > burst fire. As of yesterday, 18:30, Urumqi City Fire officers and men
+-# > have worked continuously for 22 hours...
+ 
+ # From Luther Ma (2009-11-19):
+ # With the risk of being redundant to previous answers these are the most common
+@@ -494,7 +485,7 @@
+ # 3. Urumqi...
+ # 4. Kashgar...
+ # ...
+-# 5. It seems that Uyghurs in Urumqi has been using Xinjiang since at least the
++# 5. It seems that Uyghurs in Ürümqi has been using Xinjiang since at least the
+ # 1960's. I know of one Han, now over 50, who grew up in the surrounding
+ # countryside and used Xinjiang time as a child.
+ #
+@@ -506,10 +497,55 @@
+ # Autonomous Region under the PRC. (Before that Uyghurs, of course, would also
+ # not be using Beijing time, but some local time.)
+ 
+-Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
+-			5:30	-	KAST	1940	 # Kashgar Time
+-			5:00	-	KAST	1980 May
++# From David Cochrane (2014-03-26):
++# Just a confirmation that Ürümqi time was implemented in Ürümqi on 1 Feb 1986:
++# http://content.time.com/time/magazine/article/0,9171,960684,00.html
++
++# From Luther Ma (2014-04-22):
++# I have interviewed numerous people of various nationalities and from
++# different localities in Xinjiang and can confirm the information in Guo's
++# report regarding Xinjiang, as well as the Time article reference by David
++# Cochrane.  Whether officially recognized or not (and both are officially
++# recognized), two separate times have been in use in Xinjiang since at least
++# the Cultural Revolution: Xinjiang Time (XJT), aka Ürümqi Time or local time;
++# and Beijing Time.  There is no confusion in Xinjiang as to which name refers
++# to which time. Both are widely used in the province, although in some
++# population groups might be use one to the exclusion of the other.  The only
++# problem is that computers and smart phones list Ürümqi (or Kashgar) as
++# having the same time as Beijing.
++
++# From Paul Eggert (2014-06-30):
++# In the early days of the PRC, Tibet was given its own time zone (UT+6) but
++# this was withdrawn in 1959 and never reinstated; see Tubten Khétsun,
++# Memories of life in Lhasa under Chinese Rule, Columbia U Press, ISBN
++# 978-0231142861 (2008), translator's introduction by Matthew Akester, p x.
++# As this is before our 1970 cutoff, Tibet doesn't need a separate zone.
++#
++# Xinjiang Time is well-documented as being officially recognized.  E.g., see
++# "The Working-Calendar for The Xinjiang Uygur Autonomous Region Government"
++#  (2014-04-22).
++# Unfortunately, we have no good records of time in Xinjiang before 1986.
++# During the 20th century parts of Xinjiang were ruled by the Qing dynasty,
++# the Republic of China, various warlords, the First and Second East Turkestan
++# Republics, the Soviet Union, the Kuomintang, and the People's Republic of
++# China, and tracking down all these organizations' timekeeping rules would be
++# quite a trick.  Approximate this lost history by a transition from LMT to
++# XJT at the start of 1928, the year of accession of the warlord Jin Shuren,
++# which happens to be the date given by Shanks & Pottenger (no doubt as a
++# guess) as the transition from LMT.  Ignore the usage of UT+8 before
++# 1986-02-01 under the theory that the transition date to UT+8 is unknown and
++# that the sort of users who prefer Asia/Urumqi now typically ignored the
++# UT+8 mandate back then.
++
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++# Beijing time, used throughout China; represented by Shanghai.
++Zone	Asia/Shanghai	8:05:43	-	LMT	1901
++			8:00	Shang	C%sT	1949
+ 			8:00	PRC	C%sT
++# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
++# / Wulumuqi.  (Please use Asia/Shanghai if you prefer Beijing time.)
++Zone	Asia/Urumqi	5:50:20	-	LMT	1928
++			6:00	-	XJT
+ 
+ 
+ # Hong Kong (Xianggang)
+@@ -524,15 +560,11 @@
+ # and incorrect rules. Although the exact switch over time is missing, I
+ # think 3:30 is correct. The official DST record for Hong Kong can be
+ # obtained from
+-# 
+ # http://www.hko.gov.hk/gts/time/Summertime.htm
+-# .
+ 
+ # From Arthur David Olson (2009-10-28):
+ # Here are the dates given at
+-# 
+ # http://www.hko.gov.hk/gts/time/Summertime.htm
+-# 
+ # as of 2009-10-28:
+ # Year        Period
+ # 1941        1 Apr to 30 Sep
+@@ -612,35 +644,113 @@
+ 
+ # Taiwan
+ 
+-# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
+-# was still controlled by Japan.  This is hard to believe, but we don't
+-# have any other information.
+-
+ # From smallufo (2010-04-03):
+-# According to Taiwan's CWB,
+-# 
++# According to Taiwan's CWB [Central Weather Bureau],
+ # http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm
+-# 
+ # Taipei has DST in 1979 between July 1st and Sep 30.
+ 
+-# From Arthur David Olson (2010-04-07):
+-# Here's Google's translation of the table at the bottom of the "summert.htm" page:
+-# Decade 	                                                    Name                      Start and end date
+-# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30
+-# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31
+-# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31
+-# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30
+-# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30
+-# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30
+-# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
+-# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30
+-# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time
+-# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30
+-# Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time
++# From Yu-Cheng Chuang (2013-07-12):
++# On Dec 28, 1895, the Meiji Emperor announced Ordinance No. 167 of
++# Meiji Year 28 "The clause about standard time", mentioned that
++# Taiwan and Penghu Islands, as well as Yaeyama and Miyako Islands
++# (both in Okinawa) adopt the Western Standard Time which is based on
++# 120E. The adoption began from Jan 1, 1896. The original text can be
++# found on Wikisource:
++# http://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
++# ... This could be the first adoption of time zone in Taiwan, because
++# during the Qing Dynasty, it seems that there was no time zone
++# declared officially.
++#
++# Later, in the beginning of World War II, on Sep 25, 1937, the Showa
++# Emperor announced Ordinance No. 529 of Showa Year 12 "The clause of
++# revision in the ordinance No. 167 of Meiji year 28 about standard
++# time", in which abolished the adoption of Western Standard Time in
++# western islands (listed above), which means the whole Japan
++# territory, including later occupations, adopt Japan Central Time
++# (UTC+9). The adoption began on Oct 1, 1937. The original text can
++# be found on Wikisource:
++# http://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
++#
++# That is, the time zone of Taipei switched to UTC+9 on Oct 1, 1937.
++
++# From Yu-Cheng Chuang (2014-07-02):
++# I've found more evidence about when the time zone was switched from UTC+9
++# back to UTC+8 after WW2.  I believe it was on Sep 21, 1945.  In a document
++# during Japanese era [1] in which the officer told the staff to change time
++# zone back to Western Standard Time (UTC+8) on Sep 21.  And in another
++# history page of National Cheng Kung University [2], on Sep 21 there is a
++# note "from today, switch back to Western Standard Time".  From these two
++# materials, I believe that the time zone change happened on Sep 21.  And
++# today I have found another monthly journal called "The Astronomical Herald"
++# from The Astronomical Society of Japan [3] in which it mentioned the fact
++# that:
++#
++# 1. Standard Time of the Country (Japan) was adopted on Jan 1, 1888, using
++# the time at 135E (GMT+9)
++#
++# 2. Standard Time of the Country was renamed to Central Standard Time, on Jan
++# 1, 1898, and on the same day, the new territories Taiwan and Penghu islands,
++# as well as Yaeyama and Miyako islands, adopted a new time zone called
++# Western Standard Time, which is in GMT+8.
++#
++# 3. Western Standard Time was deprecated on Sep 30, 1937. From then all the
++# territories of Japan adopted the same time zone, which is Central Standard
++# Time.
++#
++# [1] Academica Historica, Taiwan:
++# http://163.29.208.22:8080/govsaleShowImage/connect_img.php?s=00101738900090036&e=00101738900090037
++# [2] Nat'l Cheng Kung University 70th Anniversary Special Site:
++# http://www.ncku.edu.tw/~ncku70/menu/001/01_01.htm
++# [3] Yukio Niimi, The Standard Time in Japan (1997), p.475:
++# http://www.asj.or.jp/geppou/archive_open/1997/pdf/19971001c.pdf
++
++# Yu-Cheng Chuang (2014-07-03):
++# I finally have found the real official gazette about changing back to
++# Western Standard Time on Sep 21 in Taiwan.  It's Taiwan Governor-General
++# Bulletin No. 386 in Showa 20 years (1945), published on Sep 19, 1945. [1] ...
++# [It] abolishes Bulletin No. 207 in Showa 12 years (1937), which is a local
++# bulletin in Taiwan for that Ordinance No. 529. It also mentioned that 1am on
++# Sep 21, 1945 will be 12am on Sep 21.  I think this bulletin is much more
++# official than the one I mentioned in my first mail, because it's from the
++# top-level government in Taiwan. If you're going to quote any resource, this
++# would be a good one.
++# [1] Taiwan Governor-General Gazette, No. 1018, Sep 19, 1945:
++# http://db2.th.gov.tw/db2/view/viewImg.php?imgcode=0072031018a&num=19&bgn=019&end=019&otherImg=&type=gener
++
++# From Yu-Cheng Chuang (2014-07-02):
++# In 1946, DST in Taiwan was from May 15 and ended on Sep 30. The info from
++# Central Weather Bureau website was not correct.
++#
++# Original Bulletin:
++# http://subtpg.tpg.gov.tw/og/image2.asp?f=03502F0AKM1AF
++# http://subtpg.tpg.gov.tw/og/image2.asp?f=0350300AKM1B0 (cont.)
++#
++# In 1947, DST in Taiwan was expanded to Oct 31. There is a backup of that
++# telegram announcement from Taiwan Province Government:
++#
++# http://subtpg.tpg.gov.tw/og/image2.asp?f=0360310AKZ431
++#
++# Here is a brief translation:
++#
++#   The Summer Time this year is adopted from midnight Apr 15 until Sep 20
++#   midnight. To save (energy?) consumption, we're expanding Summer Time
++#   adoption till Oct 31 midnight.
++#
++# The Central Weather Bureau website didn't mention that, however it can
++# be found from historical government announcement database.
++
++# From Paul Eggert (2014-07-03):
++# As per Yu-Cheng Chuang, say that Taiwan was at UT+9 from 1937-10-01
++# until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
++# Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Taiwan	1945	1951	-	May	1	0:00	1:00	D
+-Rule	Taiwan	1945	1951	-	Oct	1	0:00	0	S
++Rule	Taiwan	1946	only	-	May	15	0:00	1:00	D
++Rule	Taiwan	1946	only	-	Oct	1	0:00	0	S
++Rule	Taiwan	1947	only	-	Apr	15	0:00	1:00	D
++Rule	Taiwan	1947	only	-	Nov	1	0:00	0	S
++Rule	Taiwan	1948	1951	-	May	1	0:00	1:00	D
++Rule	Taiwan	1948	1951	-	Oct	1	0:00	0	S
+ Rule	Taiwan	1952	only	-	Mar	1	0:00	1:00	D
+ Rule	Taiwan	1952	1954	-	Nov	1	0:00	0	S
+ Rule	Taiwan	1953	1959	-	Apr	1	0:00	1:00	D
+@@ -648,11 +758,14 @@
+ Rule	Taiwan	1960	1961	-	Jun	1	0:00	1:00	D
+ Rule	Taiwan	1974	1975	-	Apr	1	0:00	1:00	D
+ Rule	Taiwan	1974	1975	-	Oct	1	0:00	0	S
+-Rule	Taiwan	1979	only	-	Jun	30	0:00	1:00	D
+-Rule	Taiwan	1979	only	-	Sep	30	0:00	0	S
++Rule	Taiwan	1979	only	-	Jul	1	0:00	1:00	D
++Rule	Taiwan	1979	only	-	Oct	1	0:00	0	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Taipei	8:06:00 -	LMT	1896 # or Taibei or T'ai-pei
++# Taipei or Taibei or T'ai-pei
++Zone	Asia/Taipei	8:06:00 -	LMT	1896 Jan  1
++			8:00	-	JWST	1937 Oct  1
++			9:00	-	JST	1945 Sep 21  1:00
+ 			8:00	Taiwan	C%sT
+ 
+ # Macau (Macao, Aomen)
+@@ -672,7 +785,7 @@
+ Rule	Macau	1978	1980	-	Apr	Sun>=15	0:00	1:00	S
+ Rule	Macau	1978	1980	-	Oct	Sun>=15	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Macau	7:34:20 -	LMT	1912
++Zone	Asia/Macau	7:34:20 -	LMT	1912 Jan  1
+ 			8:00	Macau	MO%sT	1999 Dec 20 # return to China
+ 			8:00	PRC	C%sT
+ 
+@@ -721,7 +834,7 @@
+ # republic has changed its time zone back to that of Moscow.  As a result it
+ # is now just four hours ahead of Greenwich Mean Time, rather than five hours
+ # ahead.  The switch was decreed by the pro-Western president of Georgia,
+-# Mikhail Saakashvili, who said the change was partly prompted by the process
++# Mikheil Saakashvili, who said the change was partly prompted by the process
+ # of integration into Europe.
+ 
+ # From Teimuraz Abashidze (2005-11-07):
+@@ -734,29 +847,31 @@
+ # I don't know what can be done, especially knowing that some years ago our
+ # DST rules where changed THREE TIMES during one month.
+ 
++# Milne 1899 says Tbilisi (Tiflis) time was 2:59:05.7.
++# Byalokoz 1919 says Georgia was 2:59:11.
++# Go with Byalokoz.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Tbilisi	2:59:16 -	LMT	1880
+-			2:59:16	-	TBMT	1924 May  2 # Tbilisi Mean Time
++Zone	Asia/Tbilisi	2:59:11 -	LMT	1880
++			2:59:11	-	TBMT	1924 May  2 # Tbilisi Mean Time
+ 			3:00	-	TBIT	1957 Mar    # Tbilisi Time
+-			4:00 RussiaAsia TBI%sT	1991 Mar 31 2:00s
++			4:00 RussiaAsia TBI%sT	1991 Mar 31  2:00s
+ 			3:00	1:00	TBIST	1991 Apr  9 # independence
+-			3:00 RussiaAsia GE%sT	1992 # Georgia Time
++			3:00 RussiaAsia GE%sT	1992        # Georgia Time
+ 			3:00 E-EurAsia	GE%sT	1994 Sep lastSun
+ 			4:00 E-EurAsia	GE%sT	1996 Oct lastSun
+ 			4:00	1:00	GEST	1997 Mar lastSun
+ 			4:00 E-EurAsia	GE%sT	2004 Jun 27
+-			3:00 RussiaAsia	GE%sT	2005 Mar lastSun 2:00
++			3:00 RussiaAsia	GE%sT	2005 Mar lastSun  2:00
+ 			4:00	-	GET
+ 
+ # East Timor
+ 
+ # See Indonesia for the 1945 transition.
+ 
+-# From Joao Carrascalao, brother of the former governor of East Timor, in
+-# 
++# From João Carrascalão, brother of the former governor of East Timor, in
+ # East Timor may be late for its millennium
+-#  (1999-12-26/31):
++#  (1999-12-26/31):
+ # Portugal tried to change the time forward in 1974 because the sun
+ # rises too early but the suggestion raised a lot of problems with the
+ # Timorese and I still don't think it would work today because it
+@@ -766,25 +881,25 @@
+ # We don't have any record of the above attempt.
+ # Most likely our records are incomplete, but we have no better data.
+ 
+-# 
+ # From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
+-# (2000-08-16):
++# http://www.hri.org/news/world/undh/2000/00-08-16.undh.html
++# (2000-08-16):
+ # The Cabinet of the East Timor Transition Administration decided
+ # today to advance East Timor's time by one hour.  The time change,
+ # which will be permanent, with no seasonal adjustment, will happen at
+ # midnight on Saturday, September 16.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Dili	8:22:20 -	LMT	1912
++Zone	Asia/Dili	8:22:20 -	LMT	1912 Jan  1
+ 			8:00	-	TLT	1942 Feb 21 23:00 # E Timor Time
+ 			9:00	-	JST	1945 Sep 23
+ 			9:00	-	TLT	1976 May  3
+-			8:00	-	WITA	2000 Sep 17 00:00
++			8:00	-	WITA	2000 Sep 17  0:00
+ 			9:00	-	TLT
+ 
+ # India
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Kolkata	5:53:28 -	LMT	1880	# Kolkata
++Zone	Asia/Kolkata	5:53:28 -	LMT	1880        # Kolkata
+ 			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
+ 			6:30	-	BURT	1942 May 15 # Burma Time
+ 			5:30	-	IST	1942 Sep
+@@ -797,8 +912,12 @@
+ 
+ # Indonesia
+ #
++# From Paul Eggert (2014-09-06):
++# The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia
++# civil time was 7:07:12.5; round to even for Jakarta.
++#
+ # From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
+-# 
++# http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime
+ # says that Indonesia's time zones changed on 1988-01-01.  Looking at some
+ # time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
+ # and Kalimantan Tengah) switching from UTC+8 to UTC+7.
+@@ -810,7 +929,7 @@
+ # other formal surrender ceremonies were September 9, 11, and 13, plus
+ # September 12 for the regional surrender to Mountbatten in Singapore.
+ # These would be the earliest possible times for a change.
+-# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
++# Régimes horaires pour le monde entier, by Henri Le Corre, (Éditions
+ # Traditionnelles, 1987, Paris) says that Java and Madura switched
+ # from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
+ # (Hollandia).  For now, assume all Indonesian locations other than Jayapura
+@@ -835,7 +954,7 @@
+ # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+ # but this must be a typo.
+ 			7:07:12	-	BMT	1923 Dec 31 23:47:12 # Batavia
+-			7:20	-	JAVT	1932 Nov	 # Java Time
++			7:20	-	JAVT	1932 Nov    # Java Time
+ 			7:30	-	WIB	1942 Mar 23
+ 			9:00	-	JST	1945 Sep 23
+ 			7:30	-	WIB	1948 May
+@@ -861,7 +980,7 @@
+ # Maluku Islands, West Papua, Papua
+ Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
+ 			9:00	-	WIT	1944 Sep  1
+-			9:30	-	CST	1964
++			9:30	-	ACST	1964
+ 			9:00	-	WIT
+ 
+ # Iran
+@@ -927,7 +1046,7 @@
+ # Several of my users have reported that Iran will not observe DST anymore:
+ # http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
+ #
+-# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
++# From Reuters (2007-09-16), with a heads-up from Jesper Nørgaard Welen:
+ # ... the Guardian Council ... approved a law on Sunday to re-introduce
+ # daylight saving time ...
+ # http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
+@@ -993,7 +1112,7 @@
+ Rule	Iran	2036	2037	-	Sep	21	0:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tehran	3:25:44	-	LMT	1916
+-			3:25:44	-	TMT	1946	# Tehran Mean Time
++			3:25:44	-	TMT	1946     # Tehran Mean Time
+ 			3:30	-	IRST	1977 Nov
+ 			4:00	Iran	IR%sT	1979
+ 			3:30	Iran	IR%sT
+@@ -1018,17 +1137,11 @@
+ # From Steffen Thorsen (2008-03-10):
+ # The cabinet in Iraq abolished DST last week, according to the following
+ # news sources (in Arabic):
+-# 
+ # http://www.aljeeran.net/wesima_articles/news-20080305-98602.html
+-# 
+-# 
+ # http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10
+-# 
+ #
+ # We have published a short article in English about the change:
+-# 
+ # http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
+-# 
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Iraq	1982	only	-	May	1	0:00	1:00	D
+@@ -1037,14 +1150,14 @@
+ Rule	Iraq	1984	1985	-	Apr	1	0:00	1:00	D
+ Rule	Iraq	1985	1990	-	Sep	lastSun	1:00s	0	S
+ Rule	Iraq	1986	1990	-	Mar	lastSun	1:00s	1:00	D
+-# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
++# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo.
+ # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
+ #
+ Rule	Iraq	1991	2007	-	Apr	 1	3:00s	1:00	D
+ Rule	Iraq	1991	2007	-	Oct	 1	3:00s	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Baghdad	2:57:40	-	LMT	1890
+-			2:57:36	-	BMT	1918	    # Baghdad Mean Time?
++			2:57:36	-	BMT	1918     # Baghdad Mean Time?
+ 			3:00	-	AST	1982 May
+ 			3:00	Iraq	A%sT
+ 
+@@ -1272,7 +1385,7 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Jerusalem	2:20:54 -	LMT	1880
+-			2:20:40	-	JMT	1918	# Jerusalem Mean Time?
++			2:20:40	-	JMT	1918 # Jerusalem Mean Time?
+ 			2:00	Zion	I%sT
+ 
+ 
+@@ -1281,15 +1394,15 @@
+ 
+ # Japan
+ 
+-# `9:00' and `JST' is from Guy Harris.
++# '9:00' and 'JST' is from Guy Harris.
+ 
+ # From Paul Eggert (1995-03-06):
+ # Today's _Asahi Evening News_ (page 4) reports that Japan had
+-# daylight saving between 1948 and 1951, but ``the system was discontinued
+-# because the public believed it would lead to longer working hours.''
++# daylight saving between 1948 and 1951, but "the system was discontinued
++# because the public believed it would lead to longer working hours."
+ 
+-# From Mayumi Negishi in the 2005-08-10 Japan Times
+-# :
++# From Mayumi Negishi in the 2005-08-10 Japan Times:
++# http://www.japantimes.co.jp/cgi-bin/getarticle.pl5?nn20050810f2.htm
+ # Occupation authorities imposed daylight-saving time on Japan on
+ # [1948-05-01]....  But lack of prior debate and the execution of
+ # daylight-saving time just three days after the bill was passed generated
+@@ -1313,7 +1426,8 @@
+ 
+ # From Hideyuki Suzuki (1998-11-09):
+ # 'Tokyo' usually stands for the former location of Tokyo Astronomical
+-# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
++# Observatory: 139 degrees 44' 40.90" E (9h 18m 58.727s),
++# 35 degrees 39' 16.0" N.
+ # This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
+ # edited by National Astronomical Observatory of Japan....
+ # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
+@@ -1321,10 +1435,10 @@
+ 
+ # From Hideyuki Suzuki (1998-11-16):
+ # The ordinance No. 51 (1886) established "standard time" in Japan,
+-# which stands for the time on E 135 degree.
++# which stands for the time on 135 degrees E.
+ # In the ordinance No. 167 (1895), "standard time" was renamed to "central
+ # standard time".  And the same ordinance also established "western standard
+-# time", which stands for the time on E 120 degree....  But "western standard
++# time", which stands for the time on 120 degrees E....  But "western standard
+ # time" was abolished in the ordinance No. 529 (1937).  In the ordinance No.
+ # 167, there is no mention regarding for what place western standard time is
+ # standard....
+@@ -1332,27 +1446,33 @@
+ # I wrote "ordinance" above, but I don't know how to translate.
+ # In Japanese it's "chokurei", which means ordinance from emperor.
+ 
+-# Shanks & Pottenger claim JST in use since 1896, and that a few
+-# places (e.g. Ishigaki) use +0800; go with Suzuki.  Guess that all
+-# ordinances took effect on Jan 1.
++# From Yu-Cheng Chuang (2013-07-12):
++# ...the Meiji Emperor announced Ordinance No. 167 of Meiji Year 28 "The clause
++# about standard time" ... The adoption began from Jan 1, 1896.
++# http://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
++#
++# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
++# means the whole Japan territory, including later occupations, adopt Japan
++# Central Time (UTC+9). The adoption began on Oct 1, 1937.
++# http://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
+-			9:00	-	JST	1896
+-			9:00	-	CJT	1938
++			9:00	-	JST	1896 Jan  1
++			9:00	-	JCST	1937 Oct  1
+ 			9:00	Japan	J%sT
+ # Since 1938, all Japanese possessions have been like Asia/Tokyo.
+ 
+ # Jordan
+ #
+-# From 
+-# Jordan Week (1999-07-01)  via Steffen Thorsen (1999-09-09):
++# From 
++# Jordan Week (1999-07-01) via Steffen Thorsen (1999-09-09):
+ # Clocks in Jordan were forwarded one hour on Wednesday at midnight,
+ # in accordance with the government's decision to implement summer time
+ # all year round.
+ #
+-# From 
+-# Jordan Week (1999-09-30)  via Steffen Thorsen (1999-11-09):
++# From 
++# Jordan Week (1999-09-30) via Steffen Thorsen (1999-11-09):
+ # Winter time starts today Thursday, 30 September. Clocks will be turned back
+ # by one hour.  This is the latest government decision and it's final!
+ # The decision was taken because of the increase in working hours in
+@@ -1372,9 +1492,7 @@
+ 
+ # From Steffen Thorsen (2009-04-02):
+ # This single one might be good enough, (2009-03-24, Arabic):
+-# 
+ # http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279
+-# 
+ #
+ # Google's translation:
+ #
+@@ -1465,9 +1583,8 @@
+ # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+ # - Oral switched from +5:00 to +4:00 in spring 1989.
+ 
+-# 
+-# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
+-# 
++# From Kazakhstan Embassy's News Bulletin #11
++#  (2005-03-21):
+ # The Government of Kazakhstan passed a resolution March 15 abolishing
+ # daylight saving time citing lack of economic benefits and health
+ # complications coupled with a decrease in productivity.
+@@ -1500,10 +1617,10 @@
+ 			6:00	-	KIZT	1982 Apr  1
+ 			5:00 RussiaAsia	KIZ%sT	1991
+ 			5:00	-	KIZT	1991 Dec 16 # independence
+-			5:00	-	QYZT	1992 Jan 19 2:00
++			5:00	-	QYZT	1992 Jan 19  2:00
+ 			6:00 RussiaAsia	QYZ%sT	2005 Mar 15
+ 			6:00	-	QYZT
+-# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
++# Aqtobe (aka Aktobe, formerly Aktyubinsk)
+ Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
+ 			4:00	-	AKTT	1930 Jun 21 # Aktyubinsk Time
+ 			5:00	-	AKTT	1981 Apr  1
+@@ -1523,7 +1640,7 @@
+ 			6:00	-	SHET	1982 Apr  1
+ 			5:00 RussiaAsia	SHE%sT	1991
+ 			5:00	-	SHET	1991 Dec 16 # independence
+-			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun 2:00 # Aqtau Time
++			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun  2:00 # Aqtau Time
+ 			4:00 RussiaAsia	AQT%sT	2005 Mar 15
+ 			5:00	-	AQTT
+ # West Kazakhstan
+@@ -1532,7 +1649,7 @@
+ 			5:00	-	URAT	1981 Apr  1
+ 			5:00	1:00	URAST	1981 Oct  1
+ 			6:00	-	URAT	1982 Apr  1
+-			5:00 RussiaAsia	URA%sT	1989 Mar 26 2:00
++			5:00 RussiaAsia	URA%sT	1989 Mar 26  2:00
+ 			4:00 RussiaAsia	URA%sT	1991
+ 			4:00	-	URAT	1991 Dec 16 # independence
+ 			4:00 RussiaAsia	ORA%sT	2005 Mar 15 # Oral Time
+@@ -1543,7 +1660,7 @@
+ 
+ # From Paul Eggert (2005-08-15):
+ # According to an article dated today in the Kyrgyzstan Development Gateway
+-# 
++# http://eng.gateway.kg/cgi-bin/page.pl?id=1&story_name=doc9979.shtml
+ # Kyrgyzstan is canceling the daylight saving time system.  I take the article
+ # to mean that they will leave their clocks at 6 hours ahead of UTC.
+ # From Malik Abdugaliev (2005-09-21):
+@@ -1558,68 +1675,92 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
+ 			5:00	-	FRUT	1930 Jun 21 # Frunze Time
+-			6:00 RussiaAsia FRU%sT	1991 Mar 31 2:00s
+-			5:00	1:00	FRUST	1991 Aug 31 2:00 # independence
+-			5:00	Kyrgyz	KG%sT	2005 Aug 12    # Kyrgyzstan Time
++			6:00 RussiaAsia FRU%sT	1991 Mar 31  2:00s
++			5:00	1:00	FRUST	1991 Aug 31  2:00 # independence
++			5:00	Kyrgyz	KG%sT	2005 Aug 12 # Kyrgyzstan Time
+ 			6:00	-	KGT
+ 
+ ###############################################################################
+ 
+ # Korea (North and South)
+ 
+-# From Annie I. Bang (2006-07-10) in
+-# :
+-# The Ministry of Commerce, Industry and Energy has already
+-# commissioned a research project [to reintroduce DST] and has said
+-# the system may begin as early as 2008....  Korea ran a daylight
+-# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
++# From Annie I. Bang (2006-07-10):
++# http://www.koreaherald.com/view.php?ud=200607100012
++# Korea ran a daylight saving program from 1949-61 but stopped it
++# during the 1950-53 Korean War.  The system was temporarily enforced
++# between 1987 and 1988 ...
+ 
+-# From Shanks & Pottenger:
++# From Sanghyuk Jung (2014-10-29):
++# http://mm.icann.org/pipermail/tz/2014-October/021830.html
++# According to the Korean Wikipedia
++# http://ko.wikipedia.org/wiki/한국_표준시
++# [oldid=12896437 2014-09-04 08:03 UTC]
++# DST in Republic of Korea was as follows....  And I checked old
++# newspapers in Korean, all articles correspond with data in Wikipedia.
++# For example, the article in 1948 (Korean Language) proved that DST
++# started at June 1 in that year.  For another example, the article in
++# 1988 said that DST started at 2:00 AM in that year.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	ROK	1960	only	-	May	15	0:00	1:00	D
+-Rule	ROK	1960	only	-	Sep	13	0:00	0	S
+-Rule	ROK	1987	1988	-	May	Sun>=8	0:00	1:00	D
+-Rule	ROK	1987	1988	-	Oct	Sun>=8	0:00	0	S
++Rule	ROK	1948	only	-	Jun	 1	0:00	1:00	D
++Rule	ROK	1948	only	-	Sep	13	0:00	0	S
++Rule	ROK	1949	only	-	Apr	 3	0:00	1:00	D
++Rule	ROK	1949	1951	-	Sep	Sun>=8	0:00	0	S
++Rule	ROK	1950	only	-	Apr	 1	0:00	1:00	D
++Rule	ROK	1951	only	-	May	 6	0:00	1:00	D
++Rule	ROK	1955	only	-	May	 5	0:00	1:00	D
++Rule	ROK	1955	only	-	Sep	 9	0:00	0	S
++Rule	ROK	1956	only	-	May	20	0:00	1:00	D
++Rule	ROK	1956	only	-	Sep	30	0:00	0	S
++Rule	ROK	1957	1960	-	May	Sun>=1	0:00	1:00	D
++Rule	ROK	1957	1960	-	Sep	Sun>=18	0:00	0	S
++Rule	ROK	1987	1988	-	May	Sun>=8	2:00	1:00	D
++Rule	ROK	1987	1988	-	Oct	Sun>=8	3:00	0	S
++
++# From Paul Eggert (2014-10-30):
++# The Korean Wikipedia entry gives the following sources for UT offsets:
++#
++# 1908: Official Journal Article No. 3994 (Edict No. 5)
++# 1912: Governor-General of Korea Official Gazette Issue No. 367
++#       (Announcement No. 338)
++# 1954: Presidential Decree No. 876 (1954-03-17)
++# 1961: Law No. 676 (1961-08-07)
++# 1987: Law No. 3919 (1986-12-31)
++#
++# The Wikipedia entry also has confusing information about a change
++# to UT+9 in April 1910, but then what would be the point of the later change
++# to UT+9 on 1912-01-01?  Omit the 1910 change for now.
++#
++# I guessed that time zone abbreviations through 1945 followed the same
++# rules as discussed under Taiwan, with nominal switches from JST to KST
++# when the respective cities were taken over by the Allies after WWII.
++#
++# For Pyongyang we have no information; guess no changes since World War II.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Seoul	8:27:52	-	LMT	1890
+-			8:30	-	KST	1904 Dec
+-			9:00	-	KST	1928
+-			8:30	-	KST	1932
++Zone	Asia/Seoul	8:27:52	-	LMT	1908 Apr  1
++			8:30	-	KST	1912 Jan  1
++			9:00	-	JCST	1937 Oct  1
++			9:00	-	JST	1945 Sep  8
+ 			9:00	-	KST	1954 Mar 21
+-			8:00	ROK	K%sT	1961 Aug 10
+-			8:30	-	KST	1968 Oct
++			8:30	ROK	K%sT	1961 Aug 10
+ 			9:00	ROK	K%sT
+-Zone	Asia/Pyongyang	8:23:00 -	LMT	1890
+-			8:30	-	KST	1904 Dec
+-			9:00	-	KST	1928
+-			8:30	-	KST	1932
+-			9:00	-	KST	1954 Mar 21
+-			8:00	-	KST	1961 Aug 10
++Zone	Asia/Pyongyang	8:23:00 -	LMT	1908 Apr  1
++			8:30	-	KST	1912 Jan  1
++			9:00	-	JCST	1937 Oct  1
++			9:00	-	JST	1945 Aug 24
+ 			9:00	-	KST
+ 
+ ###############################################################################
+ 
+ # Kuwait
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# From the Arab Times (2007-03-14):
+-# The Civil Service Commission (CSC) has approved a proposal forwarded
+-# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
+-# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
+-# .
+-# From Paul Eggert (2007-03-29):
+-# We don't know the details, or whether the approval means it'll happen,
+-# so for now we assume no DST.
+ Zone	Asia/Kuwait	3:11:56 -	LMT	1950
+ 			3:00	-	AST
+ 
+ # Laos
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Vientiane	6:50:24 -	LMT	1906 Jun  9 # or Viangchan
+-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+-			7:00	-	ICT	1912 May
+-			8:00	-	ICT	1931 May
+-			7:00	-	ICT
++# See Asia/Bangkok.
++
+ 
+ # Lebanon
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1657,8 +1798,8 @@
+ Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
+ #
+ # peninsular Malaysia
+-# The data here are taken from Mok Ly Yng (2003-10-30)
+-# .
++# taken from Mok Ly Yng (2003-10-30)
++# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Kuala_Lumpur	6:46:46 -	LMT	1901 Jan  1
+ 			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+@@ -1670,12 +1811,12 @@
+ 			7:30	-	MALT	1982 Jan  1
+ 			8:00	-	MYT	# Malaysia Time
+ # Sabah & Sarawak
+-# From Paul Eggert (2006-03-22):
+-# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
+-# transition dates are from Mok Ly Yng.
++# From Paul Eggert (2014-08-12):
++# The data entries here are mostly from Shanks & Pottenger, but the 1942, 1945
++# and 1982 transition dates are from Mok Ly Yng.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
+-			7:30	-	BORT	1933	# Borneo Time
++			7:30	-	BORT	1933        # Borneo Time
+ 			8:00	NBorneo	BOR%sT	1942 Feb 16
+ 			9:00	-	JST	1945 Sep 12
+ 			8:00	-	BORT	1982 Jan  1
+@@ -1683,22 +1824,21 @@
+ 
+ # Maldives
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Indian/Maldives	4:54:00 -	LMT	1880	# Male
+-			4:54:00	-	MMT	1960	# Male Mean Time
+-			5:00	-	MVT		# Maldives Time
++Zone	Indian/Maldives	4:54:00 -	LMT	1880 # Male
++			4:54:00	-	MMT	1960 # Male Mean Time
++			5:00	-	MVT	# Maldives Time
+ 
+ # Mongolia
+ 
+ # Shanks & Pottenger say that Mongolia has three time zones, but
+-# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
+-# both say that it has just one.
++# The USNO (1995-12-21) and the CIA map Standard Time Zones of the World
++# (2005-03) both say that it has just one.
+ 
+ # From Oscar van Vlijmen (1999-12-11):
+-# 
+ # General Information Mongolia
+-#  (1999-09)
++#  (1999-09)
+ # "Time: Mongolia has two time zones. Three westernmost provinces of
+-# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
++# Bayan-Ölgii, Uvs, and Hovd are one hour earlier than the capital city, and
+ # the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
+ # eight hours."
+ 
+@@ -1709,7 +1849,7 @@
+ # of implementation may have been different....
+ # Some maps in the past have indicated that there was an additional time
+ # zone in the eastern part of Mongolia, including the provinces of Dornod,
+-# Suhbaatar, and possibly Khentij.
++# Sükhbaatar, and possibly Khentii.
+ 
+ # From Paul Eggert (1999-12-15):
+ # Naming and spelling is tricky in Mongolia.
+@@ -1723,10 +1863,10 @@
+ # (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
+ # there are three time zones.
+ #
+-# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
+-# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
+-#	Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
+-# Provinces [at 9:00]: Dornod, Sukhbaatar
++# Provinces [at 7:00]: Bayan-Ölgii, Uvs, Khovd, Zavkhan, Govi-Altai
++# Provinces [at 8:00]: Khövsgöl, Bulgan, Arkhangai, Khentii, Töv,
++#	Bayankhongor, Övörkhangai, Dundgovi, Dornogovi, Ömnögovi
++# Provinces [at 9:00]: Dornod, Sükhbaatar
+ #
+ # [The province of Selenge is omitted from the above lists.]
+ 
+@@ -1743,16 +1883,16 @@
+ # We have wildly conflicting information about Mongolia's time zones.
+ # Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
+ # there is only one time zone and that DST is observed, citing Microsoft
+-# Windows XP as the source.  Risto Nykanen (2005-05-16) reports that
++# Windows XP as the source.  Risto Nykänen (2005-05-16) reports that
+ # travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
+ # Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
+ # Washington, DC says there are two time zones, with DST observed.
+ # He also found
+-# 
++# http://ubpost.mongolnews.mn/index.php?subaction=showcomments&id=1111634894&archive=&start_from=&ucat=1&
+ # which also says that there is DST, and which has a comment by "Toddius"
+ # (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
+ # The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
+-# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
++# and some Eastern provinces are +9 GMT but Sükhbaatar Aimag is SUHK +8.5 GMT.
+ # The SUKH timezone is new this year, it is one of the few things the
+ # parliament passed during the tumultuous winter session."
+ # For now, let's ignore this information, until we have more confirmation.
+@@ -1768,29 +1908,23 @@
+ # +08:00 instead. Different sources appear to disagree with the tz
+ # database on this, e.g.:
+ #
+-# 
+ # http://www.timeanddate.com/worldclock/city.html?n=1026
+-# 
+-# 
+ # http://www.worldtimeserver.com/current_time_in_MN.aspx
+-# 
+ #
+ # both say GMT+08:00.
+ 
+ # From Steffen Thorsen (2008-03-31):
+ # eznis airways, which operates several domestic flights, has a flight
+ # schedule here:
+-# 
+ # http://www.eznis.com/Container.jsp?id=112
+-# 
+ # (click the English flag for English)
+ #
+-# There it appears that flights between Choibalsan and Ulaanbatar arrive
++# There it appears that flights between Choibalsan and Ulaanbaatar arrive
+ # about 1:35 - 1:50 hours later in local clock time, no matter the
+-# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern
+-# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are
++# direction, while Ulaanbaatar-Khovd takes 2 hours in the Eastern
++# direction and 3:35 back, which indicates that Ulaanbaatar and Khovd are
+ # in different time zones (like we know about), while Choibalsan and
+-# Ulaanbatar are in the same time zone (correction needed).
++# Ulaanbaatar are in the same time zone (correction needed).
+ 
+ # From Arthur David Olson (2008-05-19):
+ # Assume that Choibalsan is indeed offset by 8:00.
+@@ -1806,7 +1940,7 @@
+ # (1996-09) says 1996-10-25.  Go with Shanks & Pottenger through 1998.
+ #
+ # Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
+-# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
++# in Choibalsan (more precisely, in Dornod and Sükhbaatar) took place
+ # at 02:00 standard time, not at 00:00 local time as in the rest of
+ # the country.  That would be odd, and possibly is a result of their
+ # correction of 02:00 (in the previous edition) not being done correctly
+@@ -1822,13 +1956,13 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+ Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
+-			6:00	-	HOVT	1978	# Hovd Time
++			6:00	-	HOVT	1978     # Hovd Time
+ 			7:00	Mongol	HOV%sT
+ # Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
+ Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
+-			7:00	-	ULAT	1978	# Ulaanbaatar Time
++			7:00	-	ULAT	1978     # Ulaanbaatar Time
+ 			8:00	Mongol	ULA%sT
+-# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
++# Choibalsan, a.k.a. Bajan Tümen, Bajan Tumen, Chojbalsan,
+ # Choybalsan, Sanbejse, Tchoibalsan
+ Zone	Asia/Choibalsan	7:38:00 -	LMT	1905 Aug
+ 			7:00	-	ULAT	1978
+@@ -1860,7 +1994,7 @@
+ # 00:01 was to make it clear which day it was on.
+ 
+ # From Paul Eggert (2002-03-15):
+-# Jesper Norgaard found this URL:
++# Jesper Nørgaard found this URL:
+ # http://www.pak.gov.pk/public/news/app/app06_dec.htm
+ # (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
+ # advance the clocks by one hour on the night between the first
+@@ -1892,43 +2026,30 @@
+ # Here is an article that Pakistan plan to introduce Daylight Saving Time
+ # on June 1, 2008 for 3 months.
+ #
+-# "... The federal cabinet on Wednesday announced a new conservation plan to help
+-# reduce load shedding by approving the closure of commercial centres at 9pm and
+-# moving clocks forward by one hour for the next three months.
+-# ...."
++# "... The federal cabinet on Wednesday announced a new conservation plan to
++# help reduce load shedding by approving the closure of commercial centres at
++# 9pm and moving clocks forward by one hour for the next three months. ...."
+ #
+-# 
+ # http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
+-# 
+-# OR
+-# 
+ # http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4
+-# 
+ 
+ # From Arthur David Olson (2008-05-19):
+ # XXX--midnight transitions is a guess; 2008 only is a guess.
+ 
+ # From Alexander Krivenyshev (2008-08-28):
+ # Pakistan government has decided to keep the watches one-hour advanced
+-# for another 2 months--plan to return to Standard Time on October 31
++# for another 2 months - plan to return to Standard Time on October 31
+ # instead of August 31.
+ #
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
+-# 
+-# OR
+-# 
+ # http://dailymailnews.com/200808/28/news/dmbrn03.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-04-08):
+ # Based on previous media reports that "... proposed plan to
+ # advance clocks by one hour from May 1 will cause disturbance
+ # to the working schedules rather than bringing discipline in
+ # official working."
+-# 
+ # http://www.thenews.com.pk/daily_detail.asp?id=171280
+-# 
+ #
+ # recent news that instead of May 2009 - Pakistan plan to
+ # introduce DST from April 15, 2009
+@@ -1936,15 +2057,8 @@
+ # FYI: Associated Press Of Pakistan
+ # April 08, 2009
+ # Cabinet okays proposal to advance clocks by one hour from April 15
+-# 
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1
+-# 
+-#
+-# or
+-#
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html
+-# 
+ #
+ # ....
+ # The Federal Cabinet on Wednesday approved the proposal to
+@@ -1957,34 +2071,20 @@
+ # clocks backward by one hour from October 1. A formal announcement to
+ # this effect will be made after the Prime Minister grants approval in
+ # this regard."
+-# 
+ # http://www.thenews.com.pk/updates.asp?id=87168
+-# 
+ 
+ # From Alexander Krivenyshev (2009-09-28):
+ # According to Associated Press Of Pakistan, it is confirmed that
+-# Pakistan clocks across the country would be turned back by an hour from October
+-# 1, 2009.
++# Pakistan clocks across the country would be turned back by an hour from
++# October 1, 2009.
+ #
+ # "Clocks to go back one hour from 1 Oct"
+-# 
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
+-# 
+-
++#
+ # From Steffen Thorsen (2009-09-29):
+-# Alexander Krivenyshev wrote:
+-# > According to Associated Press Of Pakistan, it is confirmed that
+-# > Pakistan clocks across the country would be turned back by an hour from October
+-# > 1, 2009.
+-#
+ # Now they seem to have changed their mind, November 1 is the new date:
+-# 
+ # http://www.thenews.com.pk/top_story_detail.asp?Id=24742
+-# 
+ # "The country's clocks will be reversed by one hour on November 1.
+ # Officials of Federal Ministry for Interior told this to Geo News on
+ # Monday."
+@@ -1996,11 +2096,9 @@
+ #
+ # We have confirmed this year's end date with both with the Ministry of
+ # Water and Power and the Pakistan Electric Power Company:
+-# 
+ # http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
+-# 
+ 
+-# From Christoph Goehre (2009-10-01):
++# From Christoph Göhre (2009-10-01):
+ # [T]he German Consulate General in Karachi reported me today that Pakistan
+ # will go back to standard time on 1st of November.
+ 
+@@ -2016,22 +2114,17 @@
+ # Now, it seems that the decision to not observe DST in final:
+ #
+ # "Govt Withdraws Plan To Advance Clocks"
+-# 
+ # http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041
+-# 
+ #
+ # "People laud PM's announcement to end DST"
+-# 
+ # http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
+-# 
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule Pakistan	2002	only	-	Apr	Sun>=2	0:01	1:00	S
+ Rule Pakistan	2002	only	-	Oct	Sun>=2	0:01	0	-
+ Rule Pakistan	2008	only	-	Jun	1	0:00	1:00	S
+-Rule Pakistan	2008	only	-	Nov	1	0:00	0	-
++Rule Pakistan	2008	2009	-	Nov	1	0:00	0	-
+ Rule Pakistan	2009	only	-	Apr	15	0:00	1:00	S
+-Rule Pakistan	2009	only	-	Nov	1	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Karachi	4:28:12 -	LMT	1907
+@@ -2105,10 +2198,9 @@
+ # the PA has decided to implement DST in April.
+ 
+ # From Paul Eggert (1999-09-20):
+-# Daoud Kuttab writes in
+-# 
+-# Holiday havoc
+-#  (Jerusalem Post, 1999-04-22) that
++# Daoud Kuttab writes in Holiday havoc
++# http://www.jpost.com/com/Archive/22.Apr.1999/Opinion/Article-2.html
++# (Jerusalem Post, 1999-04-22) that
+ # the Palestinian National Authority changed to DST on 1999-04-15.
+ # I vaguely recall that they switch back in October (sorry, forgot the source).
+ # For now, let's assume that the spring switch was at 24:00,
+@@ -2121,7 +2213,7 @@
+ # A user from Gaza reported that Gaza made the change early because of
+ # the Ramadan.  Next year Ramadan will be even earlier, so I think
+ # there is a good chance next year's end date will be around two weeks
+-# earlier--the same goes for Jordan.
++# earlier - the same goes for Jordan.
+ 
+ # From Steffen Thorsen (2006-08-17):
+ # I was informed by a user in Bethlehem that in Bethlehem it started the
+@@ -2140,7 +2232,7 @@
+ # I guess it is likely that next year's date will be moved as well,
+ # because of the Ramadan.
+ 
+-# From Jesper Norgaard Welen (2007-09-18):
++# From Jesper Nørgaard Welen (2007-09-18):
+ # According to Steffen Thorsen's web site the Gaza Strip and the rest of the
+ # Palestinian territories left DST early on 13.th. of September at 2:00.
+ 
+@@ -2157,16 +2249,9 @@
+ # Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
+ # the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
+ #
+-# 
+ # http://www.guardian.co.uk/world/feedarticle/7759001
+-# 
+-# 
+ # http://www.abcnews.go.com/International/wireStory?id=5676087
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-03-26):
+ # According to the Palestine News Network (arabic.pnn.ps), Palestinian
+@@ -2174,24 +2259,17 @@
+ # 26 and continue until the night of 27 September 2009.
+ #
+ # (in Arabic)
+-# 
+ # http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850
+-# 
+ #
+-# or
+ # (English translation)
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_westbank01.html
+-# 
+ 
+ # From Steffen Thorsen (2009-08-31):
+ # Palestine's Council of Ministers announced that they will revert back to
+ # winter time on Friday, 2009-09-04.
+ #
+ # One news source:
+-# 
+ # http://www.safa.ps/ara/?action=showdetail&seid=4158
+-# 
+ # (Palestinian press agency, Arabic),
+ # Google translate: "Decided that the Palestinian government in Ramallah
+ # headed by Salam Fayyad, the start of work in time for the winter of
+@@ -2200,9 +2278,7 @@
+ #
+ # We are not sure if Gaza will do the same, last year they had a different
+ # end date, we will keep this page updated:
+-# 
+ # http://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html
+-# 
+ 
+ # From Alexander Krivenyshev (2009-09-02):
+ # Seems that Gaza Strip will go back to Winter Time same date as West Bank.
+@@ -2212,51 +2288,35 @@
+ #
+ # "Winter time unite the West Bank and Gaza"
+ # (from Palestinian National Authority):
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html
+-# 
+ 
+ # From Alexander Krivenyshev (2010-03-19):
+ # According to Voice of Palestine DST will last for 191 days, from March
+ # 26, 2010 till "the last Sunday before the tenth day of Tishri
+ # (October), each year" (October 03, 2010?)
+ #
+-# 
+ # http://palvoice.org/forums/showthread.php?t=245697
+-# 
+ # (in Arabic)
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_westbank03.html
+-# 
+ 
+ # From Steffen Thorsen (2010-03-24):
+ # ...Ma'an News Agency reports that Hamas cabinet has decided it will
+ # start one day later, at 12:01am. Not sure if they really mean 12:01am or
+ # noon though:
+ #
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
+-# 
+ # (Ma'an News Agency)
+ # "At 12:01am Friday, clocks in Israel and the West Bank will change to
+ # 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
+ 
+ # From Steffen Thorsen (2010-08-11):
+ # According to several sources, including
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
+-# 
+ # the clocks were set back one hour at 2010-08-11 00:00:00 local time in
+ # Gaza and the West Bank.
+ # Some more background info:
+-# 
+ # http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
+-# 
+ 
+ # From Steffen Thorsen (2011-08-26):
+ # Gaza and the West Bank did go back to standard time in the beginning of
+@@ -2264,13 +2324,9 @@
+ # 00:00 (so two periods of DST in 2011). The pause was because of
+ # Ramadan.
+ #
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
+-# 
+ # Additional info:
+-# 
+ # http://www.timeanddate.com/news/time/palestine-dst-2011.html
+-# 
+ 
+ # From Alexander Krivenyshev (2011-08-27):
+ # According to the article in The Jerusalem Post:
+@@ -2280,14 +2336,9 @@
+ # The Hamas government said on Saturday that it won't observe summertime after
+ # the Muslim feast of Id al-Fitr, which begins on Tuesday..."
+ # ...
+-# 
+ # http://www.jpost.com/MiddleEast/Article.aspx?id=235650
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
+-# 
+-# The rules for Egypt are stolen from the `africa' file.
++# The rules for Egypt are stolen from the 'africa' file.
+ 
+ # From Steffen Thorsen (2011-09-30):
+ # West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
+@@ -2295,26 +2346,18 @@
+ # So West Bank and Gaza now have the same time again.
+ #
+ # Many sources, including:
+-# 
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
+-# 
+ 
+ # From Steffen Thorsen (2012-03-26):
+ # Palestinian news sources tell that both Gaza and West Bank will start DST
+ # on Friday (Thursday midnight, 2012-03-29 24:00).
+ # Some of many sources in Arabic:
+-# 
+ # http://www.samanews.com/index.php?act=Show&id=122638
+-# 
+ #
+-# 
+ # http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html
+-# 
+ #
+ # Our brief summary:
+-# 
+ # http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
+-# 
+ 
+ # From Steffen Thorsen (2013-03-26):
+ # The following news sources tells that Palestine will "start daylight saving
+@@ -2374,10 +2417,10 @@
+ 			2:00 EgyptAsia	EE%sT	1967 Jun  5
+ 			2:00	Zion	I%sT	1996
+ 			2:00	Jordan	EE%sT	1999
+-			2:00 Palestine	EE%sT	2008 Aug 29 0:00
++			2:00 Palestine	EE%sT	2008 Aug 29  0:00
+ 			2:00	-	EET	2008 Sep
+ 			2:00 Palestine	EE%sT	2010
+-			2:00	-	EET	2010 Mar 27 0:01
++			2:00	-	EET	2010 Mar 27  0:01
+ 			2:00 Palestine	EE%sT	2011 Aug  1
+ 			2:00	-	EET	2012
+ 			2:00 Palestine	EE%sT
+@@ -2393,25 +2436,27 @@
+ # no information
+ 
+ # Philippines
+-# On 1844-08-16, Narciso Claveria, governor-general of the
++# On 1844-08-16, Narciso Clavería, governor-general of the
+ # Philippines, issued a proclamation announcing that 1844-12-30 was to
+-# be immediately followed by 1845-01-01.  Robert H. van Gent has a
+-# transcript of the decree in .
+-# The rest of the data are from Shanks & Pottenger.
++# be immediately followed by 1845-01-01; see R.H. van Gent's
++# History of the International Date Line
++# http://www.staff.science.uu.nl/~gent0113/idl/idl_philippines.htm
++# The rest of the data entries are from Shanks & Pottenger.
+ 
+-# From Paul Eggert (2006-04-25):
+-# Tomorrow's Manila Standard reports that the Philippines Department of
+-# Trade and Industry is considering adopting DST this June when the
+-# rainy season begins.  See
+-# .
+-# For now, we'll ignore this, since it's not definite and we lack details.
+-#
+-# From Jesper Norgaard Welen (2006-04-26):
++# From Jesper Nørgaard Welen (2006-04-26):
+ # ... claims that Philippines had DST last time in 1990:
+ # http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
+ # [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
+ # but no details]
+ 
++# From Paul Eggert (2014-08-14):
++# The following source says DST may be instituted November-January and again
++# March-June, but this is not definite.  It also says DST was last proclaimed
++# during the Ramos administration (1992-1998); but again, no details.
++# Carcamo D. PNoy urged to declare use of daylight saving time.
++# Philippine Star 2014-08-05
++# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Phil	1936	only	-	Nov	1	0:00	1:00	S
+ Rule	Phil	1937	only	-	Feb	1	0:00	0	-
+@@ -2428,18 +2473,39 @@
+ 
+ # Qatar
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Qatar	3:26:08 -	LMT	1920	# Al Dawhah / Doha
++Zone	Asia/Qatar	3:26:08 -	LMT	1920     # Al Dawhah / Doha
+ 			4:00	-	GST	1972 Jun
+ 			3:00	-	AST
+ 
+ # Saudi Arabia
++#
++# From Paul Eggert (2014-07-15):
++# Time in Saudi Arabia and other countries in the Arabian peninsula was not
++# standardized until relatively recently; we don't know when, and possibly it
++# has never been made official.  Richard P Hunt, in "Islam city yielding to
++# modern times", New York Times (1961-04-09), p 20, wrote that only airlines
++# observed standard time, and that people in Jeddah mostly observed quasi-solar
++# time, doing so by setting their watches at sunrise to 6 o'clock (or to 12
++# o'clock for "Arab" time).
++#
++# The TZ database cannot represent quasi-solar time; airline time is the best
++# we can do.  The 1946 foreign air news digest of the U.S. Civil Aeronautics
++# Board (OCLC 42299995) reported that the "... Arabian Government, inaugurated
++# a weekly Dhahran-Cairo service, via the Saudi Arabian cities of Riyadh and
++# Jidda, on March 14, 1947".  Shanks & Pottenger guessed 1950; go with the
++# earlier date.
++#
++# Shanks & Pottenger also state that until 1968-05-01 Saudi Arabia had two
++# time zones; the other zone, at UTC+4, was in the far eastern part of
++# the country.  Ignore this, as it's before our 1970 cutoff.
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Riyadh	3:06:52 -	LMT	1950
++Zone	Asia/Riyadh	3:06:52 -	LMT	1947 Mar 14
+ 			3:00	-	AST
+ 
+ # Singapore
+-# The data here are taken from Mok Ly Yng (2003-10-30)
+-# .
++# taken from Mok Ly Yng (2003-10-30)
++# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
+ 			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
+@@ -2465,26 +2531,24 @@
+ 
+ # From Paul Eggert (1996-09-03):
+ # "Sri Lanka advances clock by an hour to avoid blackout"
+-# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
++# (, 1996-05-24,
+ # no longer available as of 1999-08-17)
+-# reported ``the country's standard time will be put forward by one hour at
+-# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
++# reported "the country's standard time will be put forward by one hour at
++# midnight Friday (1830 GMT) 'in the light of the present power crisis'."
+ #
+ # From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
+-# by Shamindra in
+-# 
+-# Daily News - Hot News Section (1996-10-26)
+-# :
++# by Shamindra in Daily News - Hot News Section
++#  (1996-10-26):
+ # With effect from 12.30 a.m. on 26th October 1996
+ # Sri Lanka will be six (06) hours ahead of GMT.
+ 
+-# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
++# From Jesper Nørgaard Welen (2006-04-14), quoting Sri Lanka News Online
+ #  (2006-04-13):
+ # 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
+ # at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
+ 
+ # From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
+-# 
++# http://today.reuters.co.uk/news/newsArticle.aspx?type=scienceNews&storyID=2006-04-12T172228Z_01_COL295762_RTRIDST_0_SCIENCE-SRILANKA-TIME-DC.XML
+ # [The Tamil Tigers] never accepted the original 1996 time change and simply
+ # kept their clocks set five and a half hours ahead of Greenwich Mean
+ # Time (GMT), in line with neighbor India.
+@@ -2498,7 +2562,7 @@
+ # twice in 1996 and probably SL Government or its standardization
+ # agencies never declared an abbreviation as a national standard.
+ #
+-# I recollect before the recent change the government annoucemments
++# I recollect before the recent change the government announcements
+ # mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
+ # Time and no mention was made about the abbreviation.
+ #
+@@ -2508,7 +2572,7 @@
+ # item....
+ #
+ # Within Sri Lanka I think LKT is well known among computer users and
+-# adminsitrators.  In my opinion SLT may not be a good choice because the
++# administrators.  In my opinion SLT may not be a good choice because the
+ # nation's largest telcom / internet operator Sri Lanka Telcom is well
+ # known by that abbreviation - simply as SLT (there IP domains are
+ # slt.lk and sltnet.lk).
+@@ -2523,13 +2587,13 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Colombo	5:19:24 -	LMT	1880
+-			5:19:32	-	MMT	1906	# Moratuwa Mean Time
++			5:19:32	-	MMT	1906        # Moratuwa Mean Time
+ 			5:30	-	IST	1942 Jan  5
+ 			5:30	0:30	IHST	1942 Sep
+-			5:30	1:00	IST	1945 Oct 16 2:00
+-			5:30	-	IST	1996 May 25 0:00
+-			6:30	-	LKT	1996 Oct 26 0:30
+-			6:00	-	LKT	2006 Apr 15 0:30
++			5:30	1:00	IST	1945 Oct 16  2:00
++			5:30	-	IST	1996 May 25  0:00
++			6:30	-	LKT	1996 Oct 26  0:30
++			6:00	-	LKT	2006 Apr 15  0:30
+ 			5:30	-	IST
+ 
+ # Syria
+@@ -2580,7 +2644,7 @@
+ # Today the AP reported "Syria will switch to summertime at midnight Thursday."
+ # http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
+ Rule	Syria	2007	only	-	Mar	lastFri	0:00	1:00	S
+-# From Jesper Norgard (2007-10-27):
++# From Jesper Nørgaard (2007-10-27):
+ # The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
+ # not take place 1st November at 0:00 o'clock but 1st November at 24:00 or
+ # rather Midnight between Thursday and Friday. This does make more sense than
+@@ -2589,7 +2653,7 @@
+ # it is implemented at midnight of the last workday before weekend...
+ #
+ # From Steffen Thorsen (2007-10-27):
+-# Jesper Norgaard Welen wrote:
++# Jesper Nørgaard Welen wrote:
+ #
+ # > "Winter local time in Syria will be observed at midnight of Thursday 1
+ # > November 2007, and the clock will be put back 1 hour."
+@@ -2605,8 +2669,7 @@
+ 
+ # From Stephen Colebourne (2008-03-17):
+ # For everyone's info, I saw an IATA time zone change for [Syria] for
+-# this month (March 2008) in the last day or so...This is the data IATA
+-# are now using:
++# this month (March 2008) in the last day or so....
+ # Country     Time Standard   --- DST Start ---   --- DST End ---  DST
+ # Name        Zone Variation   Time    Date        Time    Date
+ # Variation
+@@ -2618,16 +2681,15 @@
+ # From Arthur David Olson (2008-03-17):
+ # Here's a link to English-language coverage by the Syrian Arab News
+ # Agency (SANA)...
+-# 
+ # http://www.sana.sy/eng/21/2008/03/11/165173.htm
+-# ...which reads (in part) "The Cabinet approved the suggestion of the
++# ...which reads (in part) "The Cabinet approved the suggestion of the
+ # Ministry of Electricity to begin daylight savings time on Friday April
+ # 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd."
+ # Since Syria is two hours east of UTC, the 2200 and 2100 transition times
+ # shown above match up with midnight in Syria.
+ 
+ # From Arthur David Olson (2008-03-18):
+-# My buest guess at a Syrian rule is "the Friday nearest April 1";
++# My best guess at a Syrian rule is "the Friday nearest April 1";
+ # coding that involves either using a "Mar Fri>=29" construct that old time zone
+ # compilers can't handle  or having multiple Rules (a la Israel).
+ # For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.
+@@ -2640,37 +2702,27 @@
+ # winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
+ # clocks back 60 minutes).
+ #
+-# 
+ # http://sana.sy/ara/2/2008/10/07/195459.htm
+-# 
+ 
+ # From Steffen Thorsen (2009-03-19):
+ # Syria will start DST on 2009-03-27 00:00 this year according to many sources,
+ # two examples:
+ #
+-# 
+ # http://www.sana.sy/eng/21/2009/03/17/217563.htm
+-# 
+ # (English, Syrian Arab News # Agency)
+-# 
+ # http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209
+-# 
+ # (Arabic, gov-site)
+ #
+ # We have not found any sources saying anything about when DST ends this year.
+ #
+ # Our summary
+-# 
+ # http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html
+-# 
+ 
+ # From Steffen Thorsen (2009-10-27):
+ # The Syrian Arab News Network on 2009-09-29 reported that Syria will
+ # revert back to winter (standard) time on midnight between Thursday
+ # 2009-10-29 and Friday 2009-10-30:
+-# 
+ # http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
+-# 
+ 
+ # From Arthur David Olson (2009-10-28):
+ # We'll see if future DST switching times turn out to be end of the last
+@@ -2681,23 +2733,17 @@
+ # The "Syrian News Station" reported on 2010-03-16 that the Council of
+ # Ministers has decided that Syria will start DST on midnight Thursday
+ # 2010-04-01: (midnight between Thursday and Friday):
+-# 
+ # http://sns.sy/sns/?path=news/read/11421 (Arabic)
+-# 
+ 
+ # From Steffen Thorsen (2012-03-26):
+ # Today, Syria's government announced that they will start DST early on Friday
+ # (00:00). This is a bit earlier than the past two years.
+ #
+ # From Syrian Arab News Agency, in Arabic:
+-# 
+ # http://www.sana.sy/ara/2/2012/03/26/408215.htm
+-# 
+ #
+ # Our brief summary:
+-# 
+ # http://www.timeanddate.com/news/time/syria-dst-2012.html
+-# 
+ 
+ # From Arthur David Olson (2012-03-27):
+ # Assume last Friday in March going forward XXX.
+@@ -2710,7 +2756,7 @@
+ Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Damascus	2:25:12 -	LMT	1920	# Dimashq
++Zone	Asia/Damascus	2:25:12 -	LMT	1920 # Dimashq
+ 			2:00	Syria	EE%sT
+ 
+ # Tajikistan
+@@ -2718,24 +2764,26 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
+ 			5:00	-	DUST	1930 Jun 21 # Dushanbe Time
+-			6:00 RussiaAsia DUS%sT	1991 Mar 31 2:00s
+-			5:00	1:00	DUSST	1991 Sep  9 2:00s
+-			5:00	-	TJT		    # Tajikistan Time
++			6:00 RussiaAsia DUS%sT	1991 Mar 31  2:00s
++			5:00	1:00	DUSST	1991 Sep  9  2:00s
++			5:00	-	TJT	# Tajikistan Time
+ 
+ # Thailand
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Bangkok	6:42:04	-	LMT	1880
+ 			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
+ 			7:00	-	ICT
++Link Asia/Bangkok Asia/Phnom_Penh	# Cambodia
++Link Asia/Bangkok Asia/Vientiane	# Laos
+ 
+ # Turkmenistan
+ # From Shanks & Pottenger.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
+ 			4:00	-	ASHT	1930 Jun 21 # Ashkhabad Time
+-			5:00 RussiaAsia	ASH%sT	1991 Mar 31 2:00
++			5:00 RussiaAsia	ASH%sT	1991 Mar 31  2:00
+ 			4:00 RussiaAsia	ASH%sT	1991 Oct 27 # independence
+-			4:00 RussiaAsia	TM%sT	1992 Jan 19 2:00
++			4:00 RussiaAsia	TM%sT	1992 Jan 19  2:00
+ 			5:00	-	TMT
+ 
+ # United Arab Emirates
+@@ -2744,8 +2792,9 @@
+ 			4:00	-	GST
+ 
+ # Uzbekistan
++# Byalokoz 1919 says Uzbekistan was 4:27:53.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Samarkand	4:27:12 -	LMT	1924 May  2
++Zone	Asia/Samarkand	4:27:53 -	LMT	1924 May  2
+ 			4:00	-	SAMT	1930 Jun 21 # Samarkand Time
+ 			5:00	-	SAMT	1981 Apr  1
+ 			5:00	1:00	SAMST	1981 Oct  1
+@@ -2753,31 +2802,75 @@
+ 			5:00 RussiaAsia	SAM%sT	1991 Sep  1 # independence
+ 			5:00 RussiaAsia	UZ%sT	1992
+ 			5:00	-	UZT
+-Zone	Asia/Tashkent	4:37:12 -	LMT	1924 May  2
++# Milne says Tashkent was 4:37:10.8; round to nearest.
++Zone	Asia/Tashkent	4:37:11 -	LMT	1924 May  2
+ 			5:00	-	TAST	1930 Jun 21 # Tashkent Time
+-			6:00 RussiaAsia	TAS%sT	1991 Mar 31 2:00
++			6:00 RussiaAsia	TAS%sT	1991 Mar 31  2:00
+ 			5:00 RussiaAsia	TAS%sT	1991 Sep  1 # independence
+ 			5:00 RussiaAsia	UZ%sT	1992
+ 			5:00	-	UZT
+ 
+ # Vietnam
+ 
+-# From Paul Eggert (2013-02-21):
++# From Paul Eggert (2014-10-04):
+ # Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
+ # used in Lower Laos, Cambodia, and Annam.  But this is quite a ways
+ # from Saigon's location.  For now, ignore this and stick with Shanks
+-# and Pottenger.
++# and Pottenger for LMT before 1906.
+ 
+ # From Arthur David Olson (2008-03-18):
+-# The English-language name of Vietnam's most populous city is "Ho Chi Min City";
+-# we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
++# The English-language name of Vietnam's most populous city is "Ho Chi Minh
++# City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
+ 
+-# From Shanks & Pottenger:
++# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân:
++# Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)"
++# (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50,
++# is quoted verbatim in:
++# http://www.thoigian.com.vn/?mPage=P80D01
++# is translated by Brian Inglis in:
++# http://mm.icann.org/pipermail/tz/2014-October/021654.html
++# and is the basis for the information below.
++#
++# The 1906 transition was effective July 1 and standardized Indochina to
++# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris.
++# It's unclear whether this meant legal Paris Mean Time (00:09:21) or
++# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333...
++# and the latter 07:06:29.333... so either way it rounds to 07:06:30,
++# which is used below even though the modern-day Phù Liễn Observatory
++# is closer to 07:06:31.  Abbreviate Phù Liễn Mean Time as PLMT.
++#
++# The following transitions occurred in Indochina in general (before 1954)
++# and in South Vietnam in particular (after 1954):
++# To 07:00 on 1911-05-01.
++# To 08:00 on 1942-12-31 at 23:00.
++# To 09:00 in 1945-03-14 at 23:00.
++# To 07:00 on 1945-09-02 in Vietnam.
++# To 08:00 on 1947-04-01 in French-controlled Indochina.
++# To 07:00 on 1955-07-01 in South Vietnam.
++# To 08:00 on 1959-12-31 at 23:00 in South Vietnam.
++# To 07:00 on 1975-06-13 in South Vietnam.
++#
++# Trần cites the following sources; it's unclear which supplied the info above.
++#
++# Hoàng Xuân Hãn: "Lịch và lịch Việt Nam". Tập san Khoa học Xã hội,
++# No. 9, Paris, February 1982.
++#
++# Lê Thành Lân: "Lịch và niên biểu lịch sử hai mươi thế kỷ (0001-2010)",
++# NXB Thống kê, Hanoi, 2000.
++#
++# Lê Thành Lân: "Lịch hai thế kỷ (1802-2010) và các lịch vĩnh cửu",
++# NXB Thuận Hoá, Huế, 1995.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jun  9
+-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
+-			7:00	-	ICT	1912 May
+-			8:00	-	ICT	1931 May
++Zone Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jul  1
++			7:06:30	-	PLMT	1911 May  1
++			7:00	-	ICT	1942 Dec 31 23:00
++			8:00	-	IDT	1945 Mar 14 23:00
++			9:00	-	JST	1945 Sep  2
++			7:00	-	ICT	1947 Apr  1
++			8:00	-	IDT	1955 Jul  1
++			7:00	-	ICT	1959 Dec 31 23:00
++			8:00	-	IDT	1975 Jun 13
+ 			7:00	-	ICT
+ 
+ # Yemen
+--- ./jdk/test/sun/util/calendar/zi/tzdata/australasia	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/australasia	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -36,13 +35,13 @@
+ # Please see the notes below for the controversy about "EST" versus "AEST" etc.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	-
+-Rule	Aus	1917	only	-	Mar	25	2:00	0	-
+-Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	-
+-Rule	Aus	1942	only	-	Mar	29	2:00	0	-
+-Rule	Aus	1942	only	-	Sep	27	2:00	1:00	-
+-Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	-
+-Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	-
++Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	D
++Rule	Aus	1917	only	-	Mar	25	2:00	0	S
++Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	D
++Rule	Aus	1942	only	-	Mar	29	2:00	0	S
++Rule	Aus	1942	only	-	Sep	27	2:00	1:00	D
++Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	S
++Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	D
+ # Go with Whitman and the Australian National Standards Commission, which
+ # says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that
+ # 1944/1945 was just like 1943/1944.
+@@ -50,26 +49,26 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # Northern Territory
+ Zone Australia/Darwin	 8:43:20 -	LMT	1895 Feb
+-			 9:00	-	CST	1899 May
+-			 9:30	Aus	CST
++			 9:00	-	ACST	1899 May
++			 9:30	Aus	AC%sT
+ # Western Australia
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AW	1991	only	-	Nov	17	2:00s	1:00	-
+-Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	-
+-Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	-
+-Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	-
++Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	D
++Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	S
++Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	D
++Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	S
++Rule	AW	1991	only	-	Nov	17	2:00s	1:00	D
++Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	S
++Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	D
++Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	S
++Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	D
+ Zone Australia/Perth	 7:43:24 -	LMT	1895 Dec
+-			 8:00	Aus	WST	1943 Jul
+-			 8:00	AW	WST
++			 8:00	Aus	AW%sT	1943 Jul
++			 8:00	AW	AW%sT
+ Zone Australia/Eucla	 8:35:28 -	LMT	1895 Dec
+-			 8:45	Aus	CWST	1943 Jul
+-			 8:45	AW	CWST
++			 8:45	Aus	ACW%sT	1943 Jul
++			 8:45	AW	ACW%sT
+ 
+ # Queensland
+ #
+@@ -85,150 +84,150 @@
+ # so use Lindeman.
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	-
+-Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	-
+-Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	-
+-Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	-
++Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	D
++Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	S
++Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	D
++Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	S
++Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	D
++Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	S
+ Zone Australia/Brisbane	10:12:08 -	LMT	1895
+-			10:00	Aus	EST	1971
+-			10:00	AQ	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AQ	AE%sT
+ Zone Australia/Lindeman  9:55:56 -	LMT	1895
+-			10:00	Aus	EST	1971
+-			10:00	AQ	EST	1992 Jul
+-			10:00	Holiday	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AQ	AE%sT	1992 Jul
++			10:00	Holiday	AE%sT
+ 
+ # South Australia
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AS	1986	only	-	Oct	19	2:00s	1:00	-
+-Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AS	1972	only	-	Feb	27	2:00s	0	-
+-Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AS	1991	only	-	Mar	3	2:00s	0	-
+-Rule	AS	1992	only	-	Mar	22	2:00s	0	-
+-Rule	AS	1993	only	-	Mar	7	2:00s	0	-
+-Rule	AS	1994	only	-	Mar	20	2:00s	0	-
+-Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AS	2006	only	-	Apr	2	2:00s	0	-
+-Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
++Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AS	1986	only	-	Oct	19	2:00s	1:00	D
++Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	D
++Rule	AS	1972	only	-	Feb	27	2:00s	0	S
++Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	S
++Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	S
++Rule	AS	1991	only	-	Mar	3	2:00s	0	S
++Rule	AS	1992	only	-	Mar	22	2:00s	0	S
++Rule	AS	1993	only	-	Mar	7	2:00s	0	S
++Rule	AS	1994	only	-	Mar	20	2:00s	0	S
++Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AS	2006	only	-	Apr	2	2:00s	0	S
++Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	S
++Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Adelaide	9:14:20 -	LMT	1895 Feb
+-			9:00	-	CST	1899 May
+-			9:30	Aus	CST	1971
+-			9:30	AS	CST
++			9:00	-	ACST	1899 May
++			9:30	Aus	AC%sT	1971
++			9:30	AS	AC%sT
+ 
+ # Tasmania
+ #
+ # From Paul Eggert (2005-08-16):
+-# 
++# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
+ # says King Island didn't observe DST from WWII until late 1971.
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
+-Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	-
+-Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	-
+-Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
+-Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
+-Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
+-Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	-
+-Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
+-Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	-
++Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	D
++Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	S
++Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	S
++Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	S
++Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	S
++Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	S
++Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	S
++Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	D
++Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	S
++Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	D
++Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	D
++Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	D
++Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	D
++Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	D
++Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Hobart	9:49:16	-	LMT	1895 Sep
+-			10:00	-	EST	1916 Oct 1 2:00
+-			10:00	1:00	EST	1917 Feb
+-			10:00	Aus	EST	1967
+-			10:00	AT	EST
++			10:00	-	AEST	1916 Oct  1  2:00
++			10:00	1:00	AEDT	1917 Feb
++			10:00	Aus	AE%sT	1967
++			10:00	AT	AE%sT
+ Zone Australia/Currie	9:35:28	-	LMT	1895 Sep
+-			10:00	-	EST	1916 Oct 1 2:00
+-			10:00	1:00	EST	1917 Feb
+-			10:00	Aus	EST	1971 Jul
+-			10:00	AT	EST
++			10:00	-	AEST	1916 Oct  1  2:00
++			10:00	1:00	AEDT	1917 Feb
++			10:00	Aus	AE%sT	1971 Jul
++			10:00	AT	AE%sT
+ 
+ # Victoria
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	-
+-Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	-
+-Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	-
+-Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
++Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	S
++Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	S
++Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	S
++Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	D
++Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	D
++Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	S
++Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	D
++Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	D
++Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	S
++Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Melbourne 9:39:52 -	LMT	1895 Feb
+-			10:00	Aus	EST	1971
+-			10:00	AV	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AV	AE%sT
+ 
+ # New South Wales
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AN	1972	only	-	Feb	27	2:00s	0	-
+-Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AN	1986	only	-	Oct	19	2:00s	1:00	-
+-Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	-
+-Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	-
+-Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	-
+-Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	-
+-Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
++Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	D
++Rule	AN	1972	only	-	Feb	27	2:00s	0	S
++Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	S
++Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	S
++Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	S
++Rule	AN	1986	only	-	Oct	19	2:00s	1:00	D
++Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	D
++Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	S
++Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	S
++Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	D
++Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	D
++Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	S
++Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	S
++Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	S
++Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Australia/Sydney	10:04:52 -	LMT	1895 Feb
+-			10:00	Aus	EST	1971
+-			10:00	AN	EST
++			10:00	Aus	AE%sT	1971
++			10:00	AN	AE%sT
+ Zone Australia/Broken_Hill 9:25:48 -	LMT	1895 Feb
+-			10:00	-	EST	1896 Aug 23
+-			9:00	-	CST	1899 May
+-			9:30	Aus	CST	1971
+-			9:30	AN	CST	2000
+-			9:30	AS	CST
++			10:00	-	AEST	1896 Aug 23
++			9:00	-	ACST	1899 May
++			9:30	Aus	AC%sT	1971
++			9:30	AN	AC%sT	2000
++			9:30	AS	AC%sT
+ 
+ # Lord Howe Island
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	-
+-Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	-
+-Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	-
+-Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	-
+-Rule	LH	1986	only	-	Oct	19	2:00	0:30	-
+-Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	-
+-Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	-
+-Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	-
+-Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	-
+-Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	-
+-Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	-
+-Rule	LH	2007	only	-	Mar	lastSun	2:00	0	-
+-Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	-
+-Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	-
++Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	D
++Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	S
++Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	D
++Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	S
++Rule	LH	1986	only	-	Oct	19	2:00	0:30	D
++Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	D
++Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	S
++Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	S
++Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	D
++Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	D
++Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	S
++Rule	LH	2007	only	-	Mar	lastSun	2:00	0	S
++Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	S
++Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	D
+ Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
+-			10:00	-	EST	1981 Mar
+-			10:30	LH	LHST
++			10:00	-	AEST	1981 Mar
++			10:30	LH	LH%sT
+ 
+ # Australian miscellany
+ #
+@@ -244,8 +243,8 @@
+ # Permanent occupation (scientific station) 1911-1915 and since 25 March 1948;
+ # sealing and penguin oil station operated Nov 1899 to Apr 1919.  See the
+ # Tasmania Parks & Wildlife Service history of sealing at Macquarie Island
+-# 
+-# .
++# http://www.parks.tas.gov.au/index.aspx?base=1828
++# http://www.parks.tas.gov.au/index.aspx?base=1831
+ # Guess that it was like Australia/Hobart while inhabited before 2010.
+ #
+ # From Steffen Thorsen (2010-03-10):
+@@ -256,16 +255,16 @@
+ #
+ # From Arthur David Olson (2013-05-23):
+ # The 1919 transition is overspecified below so pre-2013 zics
+-# will produce a binary file with an EST-type as the first 32-bit type;
++# will produce a binary file with an [A]EST-type as the first 32-bit type;
+ # this is required for correct handling of times before 1916 by
+ # pre-2013 versions of localtime.
+ Zone Antarctica/Macquarie 0	-	zzz	1899 Nov
+-			10:00	-	EST	1916 Oct 1 2:00
+-			10:00	1:00	EST	1917 Feb
+-			10:00	Aus	EST	1919 Apr 1 0:00s
++			10:00	-	AEST	1916 Oct  1  2:00
++			10:00	1:00	AEDT	1917 Feb
++			10:00	Aus	AE%sT	1919 Apr  1  0:00s
+ 			0	-	zzz	1948 Mar 25
+-			10:00	Aus	EST	1967
+-			10:00	AT	EST	2010 Apr 4 3:00
++			10:00	Aus	AE%sT	1967
++			10:00	AT	AE%sT	2010 Apr  4  3:00
+ 			11:00	-	MIST	# Macquarie I Standard Time
+ 
+ # Christmas
+@@ -273,24 +272,14 @@
+ Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
+ 			7:00	-	CXT	# Christmas Island Time
+ 
+-# Cook Is
+-# From Shanks & Pottenger:
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
+-Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
+-Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
+-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901		# Avarua
+-			-10:30	-	CKT	1978 Nov 12	# Cook Is Time
+-			-10:00	Cook	CK%sT
+-
+-# Cocos
++# Cocos (Keeling) Is
+ # These islands were ruled by the Ross family from about 1830 to 1978.
+ # We don't know when standard time was introduced; for now, we guess 1900.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Indian/Cocos	6:27:40	-	LMT	1900
+ 			6:30	-	CCT	# Cocos Islands Time
+ 
++
+ # Fiji
+ 
+ # Milne gives 11:55:44 for Suva.
+@@ -300,20 +289,13 @@
+ # from November 29th 2009  to April 25th 2010.
+ #
+ # "Daylight savings to commence this month"
+-# 
+ # http://www.radiofiji.com.fj/fullstory.php?id=23719
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_fiji01.html
+-# 
+ 
+ # From Steffen Thorsen (2009-11-10):
+ # The Fiji Government has posted some more details about the approved
+ # amendments:
+-# 
+ # http://www.fiji.gov.fj/publish/page_16198.shtml
+-# 
+ 
+ # From Steffen Thorsen (2010-03-03):
+ # The Cabinet in Fiji has decided to end DST about a month early, on
+@@ -322,35 +304,24 @@
+ # 2011 (last Sunday a good guess?).
+ #
+ # Official source:
+-# 
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166
+-# 
+ #
+ # A bit more background info here:
+-# 
+ # http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html
+-# 
+ 
+ # From Alexander Krivenyshev (2010-10-24):
+ # According to Radio Fiji and Fiji Times online, Fiji will end DST 3
+ # weeks earlier than expected - on March 6, 2011, not March 27, 2011...
+ # Here is confirmation from Government of the Republic of the Fiji Islands,
+ # Ministry of Information (fiji.gov.fj) web site:
+-# 
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
+-# 
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
+-# 
+ 
+ # From Steffen Thorsen (2011-10-03):
+ # Now the dates have been confirmed, and at least our start date
+ # assumption was correct (end date was one week wrong).
+ #
+-# 
+-# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+-# 
++# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+ # which says
+ # Members of the public are reminded to change their time to one hour in
+ # advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
+@@ -360,9 +331,7 @@
+ # Another change to the Fiji DST end date. In the TZ database the end date for
+ # Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.
+ #
+-# 
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155
+-# 
+ # states:
+ #
+ # The end of daylight saving scheduled initially for the 26th of February 2012
+@@ -385,31 +354,38 @@
+ # Fiji will end DST on 2014-01-19 02:00:
+ # http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
+ 
+-# From Paul Eggert (2014-01-10):
+-# For now, guess that Fiji springs forward the Sunday before the fourth
+-# Monday in October, and springs back the penultimate Sunday in January.
+-# This is ad hoc, but matches recent practice.
++# From Ken Rylander (2014-10-20):
++# DST will start Nov. 2 this year.
++# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-NOVEMBER-2ND.aspx
++
++# From Paul Eggert (2014-10-20):
++# For now, guess DST from 02:00 the first Sunday in November to
++# 03:00 the first Sunday on or after January 18.  Although ad hoc, it
++# matches this year's plan and seems more likely to match future
++# practice than guessing no DST.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+ Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+ Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
+ Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+-Rule	Fiji	2010	max	-	Oct	Sun>=21	2:00	1:00	S
++Rule	Fiji	2010	2013	-	Oct	Sun>=21	2:00	1:00	S
+ Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+ Rule	Fiji	2012	2013	-	Jan	Sun>=18	3:00	0	-
+-Rule	Fiji	2014	max	-	Jan	Sun>=18	2:00	0	-
++Rule	Fiji	2014	only	-	Jan	Sun>=18	2:00	0	-
++Rule	Fiji	2014	max	-	Nov	Sun>=1	2:00	1:00	S
++Rule	Fiji	2015	max	-	Jan	Sun>=18	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26	# Suva
++Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26 # Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+ 
+ # French Polynesia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct	# Rikitea
++Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct # Rikitea
+ 			 -9:00	-	GAMT	# Gambier Time
+ Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
+ 			 -9:30	-	MART	# Marquesas Time
+-Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct	# Papeete
++Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct # Papeete
+ 			-10:00	-	TAHT	# Tahiti Time
+ # Clipperton (near North America) is administered from French Polynesia;
+ # it is uninhabited.
+@@ -417,14 +393,14 @@
+ # Guam
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Guam	-14:21:00 -	LMT	1844 Dec 31
+-			 9:39:00 -	LMT	1901		# Agana
+-			10:00	-	GST	2000 Dec 23	# Guam
++			 9:39:00 -	LMT	1901        # Agana
++			10:00	-	GST	2000 Dec 23 # Guam
+ 			10:00	-	ChST	# Chamorro Standard Time
+ 
+ # Kiribati
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Tarawa	 11:32:04 -	LMT	1901		# Bairiki
+-			 12:00	-	GILT		 # Gilbert Is Time
++Zone Pacific/Tarawa	 11:32:04 -	LMT	1901 # Bairiki
++			 12:00	-	GILT	# Gilbert Is Time
+ Zone Pacific/Enderbury	-11:24:20 -	LMT	1901
+ 			-12:00	-	PHOT	1979 Oct # Phoenix Is Time
+ 			-11:00	-	PHOT	1995
+@@ -438,7 +414,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Saipan	-14:17:00 -	LMT	1844 Dec 31
+ 			 9:43:00 -	LMT	1901
+-			 9:00	-	MPT	1969 Oct # N Mariana Is Time
++			 9:00	-	MPT	1969 Oct    # N Mariana Is Time
+ 			10:00	-	MPT	2000 Dec 23
+ 			10:00	-	ChST	# Chamorro Standard Time
+ 
+@@ -449,24 +425,24 @@
+ 			12:00	-	MHT
+ Zone Pacific/Kwajalein	11:09:20 -	LMT	1901
+ 			11:00	-	MHT	1969 Oct
+-			-12:00	-	KWAT	1993 Aug 20	# Kwajalein Time
++			-12:00	-	KWAT	1993 Aug 20 # Kwajalein Time
+ 			12:00	-	MHT
+ 
+ # Micronesia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Chuuk	10:07:08 -	LMT	1901
+-			10:00	-	CHUT			# Chuuk Time
+-Zone Pacific/Pohnpei	10:32:52 -	LMT	1901		# Kolonia
+-			11:00	-	PONT			# Pohnpei Time
++			10:00	-	CHUT	# Chuuk Time
++Zone Pacific/Pohnpei	10:32:52 -	LMT	1901 # Kolonia
++			11:00	-	PONT	# Pohnpei Time
+ Zone Pacific/Kosrae	10:51:56 -	LMT	1901
+-			11:00	-	KOST	1969 Oct	# Kosrae Time
++			11:00	-	KOST	1969 Oct # Kosrae Time
+ 			12:00	-	KOST	1999
+ 			11:00	-	KOST
+ 
+ # Nauru
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15	# Uaobe
+-			11:30	-	NRT	1942 Mar 15	# Nauru Time
++Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15 # Uaobe
++			11:30	-	NRT	1942 Mar 15 # Nauru Time
+ 			9:00	-	JST	1944 Aug 15
+ 			11:30	-	NRT	1979 May
+ 			12:00	-	NRT
+@@ -479,7 +455,7 @@
+ # Shanks & Pottenger say the following was at 2:00; go with IATA.
+ Rule	NC	1997	only	-	Mar	 2	2:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13
++Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13 # Nouméa
+ 			11:00	NC	NC%sT
+ 
+ 
+@@ -496,7 +472,8 @@
+ Rule	NZ	1934	1940	-	Sep	lastSun	2:00	0:30	S
+ Rule	NZ	1946	only	-	Jan	 1	0:00	0	S
+ # Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
+-# convenient notation for this so we must duplicate the Rule lines.
++# convenient single notation for the date and time of this transition
++# so we must duplicate the Rule lines.
+ Rule	NZ	1974	only	-	Nov	Sun>=1	2:00s	1:00	D
+ Rule	Chatham	1974	only	-	Nov	Sun>=1	2:45s	1:00	D
+ Rule	NZ	1975	only	-	Feb	lastSun	2:00s	0	S
+@@ -519,13 +496,14 @@
+ Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
+ 			11:30	NZ	NZ%sT	1946 Jan  1
+ 			12:00	NZ	NZ%sT
+-Zone Pacific/Chatham	12:13:48 -	LMT	1957 Jan  1
++Zone Pacific/Chatham	12:13:48 -	LMT	1868 Nov  2
++			12:15	-	CHAST	1946 Jan  1
+ 			12:45	Chatham	CHA%sT
+ 
+ Link Pacific/Auckland Antarctica/McMurdo
+ 
+ # Auckland Is
+-# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
++# uninhabited; Māori and Moriori, colonial settlers, pastoralists, sealers,
+ # and scientific personnel have wintered
+ 
+ # Campbell I
+@@ -534,48 +512,82 @@
+ # previously whalers, sealers, pastoralists, and scientific personnel wintered
+ # was probably like Pacific/Auckland
+ 
++# Cook Is
++# From Shanks & Pottenger:
++# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
++Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
++Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901        # Avarua
++			-10:30	-	CKT	1978 Nov 12 # Cook Is Time
++			-10:00	Cook	CK%sT
++
+ ###############################################################################
+ 
+ 
+ # Niue
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Niue	-11:19:40 -	LMT	1901		# Alofi
+-			-11:20	-	NUT	1951	# Niue Time
+-			-11:30	-	NUT	1978 Oct 1
++Zone	Pacific/Niue	-11:19:40 -	LMT	1901        # Alofi
++			-11:20	-	NUT	1951        # Niue Time
++			-11:30	-	NUT	1978 Oct  1
+ 			-11:00	-	NUT
+ 
+ # Norfolk
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Norfolk	11:11:52 -	LMT	1901		# Kingston
+-			11:12	-	NMT	1951	# Norfolk Mean Time
+-			11:30	-	NFT		# Norfolk Time
++Zone	Pacific/Norfolk	11:11:52 -	LMT	1901 # Kingston
++			11:12	-	NMT	1951 # Norfolk Mean Time
++			11:30	-	NFT	# Norfolk Time
+ 
+ # Palau (Belau)
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Palau	8:57:56 -	LMT	1901		# Koror
++Zone Pacific/Palau	8:57:56 -	LMT	1901 # Koror
+ 			9:00	-	PWT	# Palau Time
+ 
+ # Papua New Guinea
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Port_Moresby 9:48:40 -	LMT	1880
+-			9:48:32	-	PMMT	1895	# Port Moresby Mean Time
+-			10:00	-	PGT		# Papua New Guinea Time
++			9:48:32	-	PMMT	1895 # Port Moresby Mean Time
++			10:00	-	PGT	# Papua New Guinea Time
++#
++# From Paul Eggert (2014-10-13):
++# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
++# the most people even though it was devastated in the Bougainville Civil War.
++#
++# Although Shanks gives 1942-03-15 / 1943-11-01 for JST, these dates
++# are apparently rough guesswork from the starts of military campaigns.
++# The World War II entries below are instead based on Arawa-Kieta.
++# The Japanese occupied Kieta in July 1942,
++# according to the Pacific War Online Encyclopedia
++# http://pwencycl.kgbudge.com/B/o/Bougainville.htm
++# and seem to have controlled it until their 1945-08-21 surrender.
++#
++# The Autonomous Region of Bougainville plans to switch from UTC+10 to UTC+11
++# on 2014-12-28 at 02:00.  They call UTC+11 "Bougainville Standard Time";
++# abbreviate this as BST.  See:
++# http://www.bougainville24.com/bougainville-issues/bougainville-gets-own-timezone/
++#
++Zone Pacific/Bougainville 10:22:16 -	LMT	1880
++			 9:48:32 -	PMMT	1895
++			10:00	-	PGT	1942 Jul
++			 9:00	-	JST	1945 Aug 21
++			10:00	-	PGT	2014 Dec 28  2:00
++			11:00	-	BST
+ 
+ # Pitcairn
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901		# Adamstown
+-			-8:30	-	PNT	1998 Apr 27 00:00
++Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901        # Adamstown
++			-8:30	-	PNT	1998 Apr 27  0:00
+ 			-8:00	-	PST	# Pitcairn Standard Time
+ 
+ # American Samoa
+ Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
+ 			-11:22:48 -	LMT	1911
+-			-11:30	-	SAMT	1950		# Samoa Time
+-			-11:00	-	NST	1967 Apr	# N=Nome
+-			-11:00	-	BST	1983 Nov 30	# B=Bering
+-			-11:00	-	SST			# S=Samoa
++			-11:00	-	NST	1967 Apr    # N=Nome
++			-11:00	-	BST	1983 Nov 30 # B=Bering
++			-11:00	-	SST	            # S=Samoa
+ 
+-# Samoa
++# Samoa (formerly and also known as Western Samoa)
+ 
+ # From Steffen Thorsen (2009-10-16):
+ # We have been in contact with the government of Samoa again, and received
+@@ -586,141 +598,80 @@
+ # Sunday of April 2011."
+ #
+ # Background info:
+-# 
+ # http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
+-# 
+ #
+ # Samoa's Daylight Saving Time Act 2009 is available here, but does not
+ # contain any dates:
+-# 
+ # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
+-# 
+ 
+ # From Laupue Raymond Hughes (2010-10-07):
+ # Please see
+-# 
+ # http://www.mcil.gov.ws
+-# ,
+ # the Ministry of Commerce, Industry and Labour (sideframe) "Last Sunday
+ # September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight
+ # to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
+ # backwards from 1:00am to 12:00am"
+ 
+ # From Laupue Raymond Hughes (2011-03-07):
+-# I believe this will be posted shortly on the website
+-# 
+-# www.mcil.gov.ws
+-# 
++# [http://www.mcil.gov.ws/ftcd/daylight_saving_2011.pdf]
+ #
+-# PUBLIC NOTICE ON DAYLIGHT SAVING TIME
+-#
+-# Pursuant to the Daylight Saving Act 2009 and Cabinets decision,
+-# businesses and the general public are hereby advised that daylight
+-# saving time is on the first Saturday of April 2011 (02/04/11).
+-#
+-# The public is therefore advised that when the standard time strikes
+-# the hour of four oclock (4.00am or 0400 Hours) on the 2nd April 2011,
+-# then all instruments used to measure standard time are to be
+-# adjusted/changed to three oclock (3:00am or 0300Hrs).
+-#
+-# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
+-# INDUSTRY AND LABOUR 28th February 2011
++# ... when the standard time strikes the hour of four o'clock (4.00am
++# or 0400 Hours) on the 2nd April 2011, then all instruments used to
++# measure standard time are to be adjusted/changed to three o'clock
++# (3:00am or 0300Hrs).
+ 
+-# From David Zuelke (2011-05-09):
++# From David Zülke (2011-05-09):
+ # Subject: Samoa to move timezone from east to west of international date line
+ #
+-# 
+ # http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
+-# 
+ 
+-# From Mark Sim-Smith (2011-08-17):
+-# I have been in contact with Leilani Tuala Warren from the Samoa Law
+-# Reform Commission, and she has sent me a copy of the Bill that she
+-# confirmed has been passed...Most of the sections are about maps rather
+-# than the time zone change, but I'll paste the relevant bits below. But
+-# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
+-# changes from UTC-11 to UTC+13:
+-#
+-# International Date Line Bill 2011
+-#
+-# AN ACT to provide for the change to standard time in Samoa and to make
+-# consequential amendments to the position of the International Date
+-# Line, and for related purposes.
+-#
+-# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
+-# assembled as follows:
+-#
+-# 1. Short title and commencement-(1) This Act may be cited as the
+-# International Date Line Act 2011. (2) Except for section 5(3) this Act
+-# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
+-# Section 5(3) commences on the date of assent by the Head of State.
+-#
+-# [snip]
+-#
+-# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
+-# other statute of Samoa which refers to 'Samoa standard time' means the
+-# time 13 hours in advance of Co-ordinated Universal Time.
+-#
+-# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
+-# standard time shall be set at 13 hours in advance of Co-ordinated
+-# Universal Time for the whole of Samoa. (2) All references to Samoa's
+-# time zone and to Samoa standard time in Samoa in all legislation and
+-# instruments after the commencement of this Act shall be references to
+-# Samoa standard time as provided for in this Act. (3) Nothing in this
+-# Act affects the provisions of the Daylight Saving Act 2009, except that
+-# it defines Samoa standard time....
++# From Paul Eggert (2014-06-27):
++# The International Date Line Act 2011
++# http://www.parliament.gov.ws/images/ACTS/International_Date_Line_Act__2011_-_Eng.pdf
++# changed Samoa from UTC-11 to UTC+13, effective "12 o'clock midnight, on
++# Thursday 29th December 2011".  The International Date Line was adjusted
++# accordingly.
+ 
+ # From Laupue Raymond Hughes (2011-09-02):
+-# 
+ # http://www.mcil.gov.ws/mcil_publications.html
+-# 
+ #
+ # here is the official website publication for Samoa DST and dateline change
+ #
+ # DST
+-# Year	End	Time	Start	Time
+-# 2011	- - -	- - -	24 September	3:00am to 4:00am
+-# 2012	01 April	4:00am to 3:00am	- - -	- - -
++# Year  End      Time              Start        Time
++# 2011  - - -    - - -             24 September 3:00am to 4:00am
++# 2012  01 April 4:00am to 3:00am  - - -        - - -
+ #
+ # Dateline Change skip Friday 30th Dec 2011
+ # Thursday 29th December 2011	23:59:59 Hours
+ # Saturday 31st December 2011	00:00:00 Hours
+ #
+-# Clarification by Tim Parenti (2012-01-03):
+-# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
+-# seasons, there is not yet any indication that this trend will continue on
+-# a regular basis. For now, we have explicitly listed the transitions below.
+-#
+-# From Nicky (2012-09-10):
++# From Nicholas Pereira (2012-09-10):
+ # Daylight Saving Time commences on Sunday 30th September 2012 and
+-# ends on Sunday 7th of April 2013.
+-#
+-# Please find link below for more information.
++# ends on Sunday 7th of April 2013....
+ # http://www.mcil.gov.ws/mcil_publications.html
+ #
+-# That publication also includes dates for Summer of 2013/4 as well
+-# which give the impression of a pattern in selecting dates for the
+-# future, so for now, we will guess this will continue.
++# From Paul Eggert (2014-07-08):
++# That web page currently lists transitions for 2012/3 and 2013/4.
++# Assume the pattern instituted in 2012 will continue indefinitely.
+ 
+-# Western Samoa
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	WS	2010	only	-	Sep	lastSun	0:00	1	D
++Rule	WS	2011	only	-	Apr	Sat>=1	4:00	0	S
++Rule	WS	2011	only	-	Sep	lastSat	3:00	1	D
++Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	S
+ Rule	WS	2012	max	-	Sep	lastSun	3:00	1	D
+-Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+-			-11:30	-	SAMT	1950		# Samoa Time
+-			-11:00	-	WST	2010 Sep 26
+-			-11:00	1:00	WSDT	2011 Apr 2 4:00
+-			-11:00	-	WST	2011 Sep 24 3:00
+-			-11:00	1:00	WSDT	2011 Dec 30
+-			 13:00	1:00	WSDT	2012 Apr Sun>=1 4:00
++			-11:30	-	WSST	1950
++			-11:00	WS	S%sT	2011 Dec 29 24:00 # S=Samoa
+ 			 13:00	WS	WS%sT
+ 
+ # Solomon Is
+ # excludes Bougainville, for which see Papua New Guinea
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct	# Honiara
++Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct # Honiara
+ 			11:00	-	SBT	# Solomon Is Time
+ 
+ # Tokelau Is
+@@ -744,7 +695,7 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
+-			-11:00	-	TKT 2011 Dec 30	# Tokelau Time
++			-11:00	-	TKT	2011 Dec 30 # Tokelau Time
+ 			13:00	-	TKT
+ 
+ # Tonga
+@@ -804,8 +755,8 @@
+ # time from Operation Newsreel (Hardtack I/Teak shot, 1958-08-01) to the last
+ # Operation Fishbowl shot (Tightrope, 1962-11-04).... [See] Herman Hoerlin,
+ # "The United States High-Altitude Test Experience: A Review Emphasizing the
+-# Impact on the Environment", Los Alamos LA-6405, Oct 1976
+-# .
++# Impact on the Environment", Los Alamos LA-6405, Oct 1976.
++# http://www.fas.org/sgp/othergov/doe/lanl/docs1/00322994.pdf
+ # See the table on page 4 where he lists GMT and local times for the tests; a
+ # footnote for the JI tests reads that local time is "JI time = Hawaii Time
+ # Minus One Hour".
+@@ -820,7 +771,7 @@
+ # From Mark Brader (2005-01-23):
+ # [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+ # published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+-# reproduced a Pan American Airways timeables from 1936, for their weekly
++# reproduced a Pan American Airways timetable from 1936, for their weekly
+ # "Orient Express" flights between San Francisco and Manila, and connecting
+ # flights to Chicago and the US East Coast.  As it uses some time zone
+ # designations that I've never seen before:....
+@@ -830,9 +781,9 @@
+ Zone Pacific/Midway	-11:49:28 -	LMT	1901
+ 			-11:00	-	NST	1956 Jun  3
+ 			-11:00	1:00	NDT	1956 Sep  2
+-			-11:00	-	NST	1967 Apr	# N=Nome
+-			-11:00	-	BST	1983 Nov 30	# B=Bering
+-			-11:00	-	SST			# S=Samoa
++			-11:00	-	NST	1967 Apr    # N=Nome
++			-11:00	-	BST	1983 Nov 30 # B=Bering
++			-11:00	-	SST	            # S=Samoa
+ 
+ # Palmyra
+ # uninhabited since World War II; was probably like Pacific/Kiritimati
+@@ -852,7 +803,7 @@
+ Rule	Vanuatu	1992	1993	-	Jan	Sun>=23	0:00	0	-
+ Rule	Vanuatu	1992	only	-	Oct	Sun>=23	0:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13		# Vila
++Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13 # Vila
+ 			11:00	Vanuatu	VU%sT	# Vanuatu Time
+ 
+ # Wallis and Futuna
+@@ -864,188 +815,213 @@
+ 
+ # NOTES
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2013-02-21):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Another source occasionally used is Edward W. Whitman, World Time Differences,
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
+ # For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
+ #
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+-# I invented the abbreviations marked `*' in the following table;
++# I invented the abbreviations marked '*' in the following table;
+ # the rest are from earlier versions of this file, or from other sources.
+ # Corrections are welcome!
+-#		std dst
+-#		LMT	Local Mean Time
+-#	  8:00	WST WST	Western Australia
+-#	  8:45	CWST CWST Central Western Australia*
+-#	  9:00	JST	Japan
+-#	  9:30	CST CST	Central Australia
+-#	 10:00	EST EST	Eastern Australia
+-#	 10:00	ChST	Chamorro
+-#	 10:30	LHST LHST Lord Howe*
+-#	 11:30	NZMT NZST New Zealand through 1945
+-#	 12:00	NZST NZDT New Zealand 1946-present
+-#	 12:45	CHAST CHADT Chatham*
+-#	-11:00	SST	Samoa
+-#	-10:00	HST	Hawaii
+-#	- 8:00	PST	Pitcairn*
++#		std	dst
++#		LMT		Local Mean Time
++#	  8:00	AWST	AWDT	Western Australia
++#	  8:45	ACWST	ACWDT	Central Western Australia*
++#	  9:00	JST		Japan
++#	  9:30	ACST	ACDT	Central Australia
++#	 10:00	AEST	AEDT	Eastern Australia
++#	 10:00	ChST		Chamorro
++#	 10:30	LHST	LHDT	Lord Howe*
++#	 11:00	BST		Bougainville*
++#	 11:30	NZMT	NZST	New Zealand through 1945
++#	 12:00	NZST	NZDT	New Zealand 1946-present
++#	 12:15	CHAST		Chatham through 1945*
++#	 12:45	CHAST	CHADT	Chatham 1946-present*
++#	 13:00	WSST	WSDT	(western) Samoa 2011-present*
++#	-11:30	WSST		Western Samoa through 1950*
++#	-11:00	SST		Samoa
++#	-10:00	HST		Hawaii
++#	- 8:00	PST		Pitcairn*
+ #
+-# See the `northamerica' file for Hawaii.
+-# See the `southamerica' file for Easter I and the Galapagos Is.
++# See the 'northamerica' file for Hawaii.
++# See the 'southamerica' file for Easter I and the Galápagos Is.
+ 
+ ###############################################################################
+ 
+ # Australia
+ 
++# From Paul Eggert (2014-06-30):
++# Daylight saving time has long been controversial in Australia, pitting
++# region against region, rural against urban, and local against global.
++# For example, in her review of Graeme Davison's _The Unforgiving
++# Minute: how Australians learned to tell the time_ (1993), Perth native
++# Phillipa J Martyr wrote, "The section entitled 'Saving Daylight' was
++# very informative, but was (as can, sadly, only be expected from a
++# Melbourne-based study) replete with the usual chuckleheaded
++# Queenslanders and straw-chewing yokels from the West prattling fables
++# about fading curtains and crazed farm animals."
++# Electronic Journal of Australian and New Zealand History (1997-03-03)
++# http://www.jcu.edu.au/aff/history/reviews/davison.htm
++
+ # From Paul Eggert (2005-12-08):
+-# 
+ # Implementation Dates of Daylight Saving Time within Australia
+-#  summarizes daylight saving issues in Australia.
++# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
++# summarizes daylight saving issues in Australia.
+ 
+ # From Arthur David Olson (2005-12-12):
+-# 
+ # Lawlink NSW:Daylight Saving in New South Wales
+-#  covers New South Wales in particular.
++# http://www.lawlink.nsw.gov.au/lawlink/Corporate/ll_agdinfo.nsf/pages/community_relations_daylight_saving
++# covers New South Wales in particular.
+ 
+ # From John Mackin (1991-03-06):
+-# We in Australia have _never_ referred to DST as `daylight' time.
+-# It is called `summer' time.  Now by a happy coincidence, `summer'
+-# and `standard' happen to start with the same letter; hence, the
++# We in Australia have _never_ referred to DST as 'daylight' time.
++# It is called 'summer' time.  Now by a happy coincidence, 'summer'
++# and 'standard' happen to start with the same letter; hence, the
+ # abbreviation does _not_ change...
+ # The legislation does not actually define abbreviations, at least
+ # in this State, but the abbreviation is just commonly taken to be the
+ # initials of the phrase, and the legislation here uniformly uses
+-# the phrase `summer time' and does not use the phrase `daylight
++# the phrase 'summer time' and does not use the phrase 'daylight
+ # time'.
+ # Announcers on the Commonwealth radio network, the ABC (for Australian
+-# Broadcasting Commission), use the phrases `Eastern Standard Time'
+-# or `Eastern Summer Time'.  (Note, though, that as I say in the
++# Broadcasting Commission), use the phrases 'Eastern Standard Time'
++# or 'Eastern Summer Time'.  (Note, though, that as I say in the
+ # current australasia file, there is really no such thing.)  Announcers
+ # on its overseas service, Radio Australia, use the same phrases
+-# prefixed by the word `Australian' when referring to local times;
++# prefixed by the word 'Australian' when referring to local times;
+ # time announcements on that service, naturally enough, are made in UTC.
+ 
+-# From Arthur David Olson (1992-03-08):
+-# Given the above, what's chosen for year-round use is:
+-#	CST	for any place operating at a GMTOFF of 9:30
+-#	WST	for any place operating at a GMTOFF of 8:00
+-#	EST	for any place operating at a GMTOFF of 10:00
+-
+-# From Chuck Soper (2006-06-01):
+-# I recently found this Australian government web page on time zones:
+-# 
+-# And this government web page lists time zone names and abbreviations:
+-# 
+-
+-# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
+-# versus "AEST" etc.:
++# From Paul Eggert (2014-06-30):
+ #
+-# I see the following points of dispute:
++# Inspired by Mackin's remarks quoted above, earlier versions of this
++# file used "EST" for both Eastern Standard Time and Eastern Summer
++# Time in Australia, and similarly for "CST", "CWST", and "WST".
++# However, these abbreviations were confusing and were not common
++# practice among Australians, and there were justifiable complaints
++# about them, so I attempted to survey current Australian usage.
++# For the tz database, the full English phrase is not that important;
++# what matters is the abbreviation.  It's difficult to survey the web
++# directly for abbreviation usage, as there are so many false hits for
++# strings like "EST" and "EDT", so I looked for pages that defined an
++# abbreviation for eastern or central DST in Australia, and got the
++# following numbers of unique hits for the listed Google queries:
+ #
+-# * How important are unique time zone abbreviations?
++#   10 "Eastern Daylight Time AEST" site:au [some are false hits]
++#   10 "Eastern Summer Time AEST" site:au
++#   10 "Summer Time AEDT" site:au
++#   13 "EDST Eastern Daylight Saving Time" site:au
++#   18 "Summer Time ESST" site:au
++#   28 "Eastern Daylight Saving Time EDST" site:au
++#   39 "EDT Eastern Daylight Time" site:au [some are false hits]
++#   53 "Eastern Daylight Time EDT" site:au [some are false hits]
++#   54 "AEDT Australian Eastern Daylight Time" site:au
++#  182 "Eastern Daylight Time AEDT" site:au
+ #
+-#   Here I tend to agree with the point (most recently made by Chris
+-#   Newman) that unique abbreviations should not be essential for proper
+-#   operation of software.  We have other instances of ambiguity
+-#   (e.g. "IST" denoting both "Israel Standard Time" and "Indian
+-#   Standard Time"), and they are not likely to go away any time soon.
+-#   In the old days, some software mistakenly relied on unique
+-#   abbreviations, but this is becoming less true with time, and I don't
+-#   think it's that important to cater to such software these days.
++#   17 "Central Daylight Time CDT" site:au [some are false hits]
++#   46 "Central Daylight Time ACDT" site:au
+ #
+-#   On the other hand, there is another motivation for unambiguous
+-#   abbreviations: it cuts down on human confusion.  This is
+-#   particularly true for Australia, where "EST" can mean one thing for
+-#   time T and a different thing for time T plus 1 second.
++# I tried several other variants (e.g., "Eastern Summer Time EST") but
++# they all returned fewer than 10 unique hits.  I also looked for pages
++# mentioning both "western standard time" and an abbreviation, since
++# there is no WST in the US to generate false hits, and found:
+ #
+-# * Does the relevant legislation indicate which abbreviations should be used?
++#  156 "western standard time" AWST site:au
++#  226 "western standard time" WST site:au
+ #
+-#   Here I tend to think that things are a mess, just as they are in
+-#   many other countries.  We Americans are currently disagreeing about
+-#   which abbreviation to use for the newly legislated Chamorro Standard
+-#   Time, for example.
++# I then surveyed the top ten newspapers in Australia by circulation as
++# listed in Wikipedia, using Google queries like "AEDT site:heraldsun.com.au"
++# and obtaining estimated counts from the initial page of search results.
++# All ten papers greatly preferred "AEDT" to "EDT".  The papers
++# surveyed were the Herald Sun, The Daily Telegraph, The Courier-Mail,
++# The Sydney Morning Herald, The West Australian, The Age, The Advertiser,
++# The Australian, The Financial Review, and The Herald (Newcastle).
+ #
+-#   Personally, I would prefer to use common practice; I would like to
+-#   refer to legislation only for examples of common practice, or as a
+-#   tiebreaker.
++# I also searched for historical usage, to see whether abbreviations
++# like "AEDT" are new.  A Trove search 
++# found only one newspaper (The Canberra Times) with a house style
++# dating back to the 1970s, I expect because other newspapers weren't
++# fully indexed.  The Canberra Times strongly preferred abbreviations
++# like "AEDT".  The first occurrence of "AEDT" was a World Weather
++# column (1971-11-17, page 24), and of "ACDT" was a Scoreboard column
++# (1993-01-24, p 16).  The style was the typical usage but was not
++# strictly enforced; for example, "Welcome to the twilight zones ..."
++# (1994-10-29, p 1) uses the abbreviations AEST/AEDT, CST/CDT, and
++# WST, and goes on to say, "The confusion and frustration some feel
++# about the lack of uniformity among Australia's six states and two
++# territories has prompted one group to form its very own political
++# party -- the Sydney-based Daylight Saving Extension Party."
+ #
+-# * Do Australians more often use "Eastern Daylight Time" or "Eastern
+-#   Summer Time"?  Do they typically prefix the time zone names with
+-#   the word "Australian"?
++# I also surveyed federal government sources.  They did not agree:
+ #
+-#   My own impression is that both "Daylight Time" and "Summer Time" are
+-#   common and are widely understood, but that "Summer Time" is more
+-#   popular; and that the leading "A" is also common but is omitted more
+-#   often than not.  I just used AltaVista advanced search and got the
+-#   following count of page hits:
++#   The Australian Government (2014-03-26)
++#   http://australia.gov.au/about-australia/our-country/time
++#   (This document was produced by the Department of Finance.)
++#   AEST ACST AWST AEDT ACDT
+ #
+-#     1,103 "Eastern Summer Time" AND domain:au
+-#       971 "Australian Eastern Summer Time" AND domain:au
+-#       613 "Eastern Daylight Time" AND domain:au
+-#       127 "Australian Eastern Daylight Time" AND domain:au
++#   Bureau of Meteorology (2012-11-08)
++#   http://www.bom.gov.au/climate/averages/tables/daysavtm.shtml
++#   EST CST WST EDT CDT
+ #
+-#   Here "Summer" seems quite a bit more popular than "Daylight",
+-#   particularly when we know the time zone is Australian and not US,
+-#   say.  The "Australian" prefix seems to be popular for Eastern Summer
+-#   Time, but unpopular for Eastern Daylight Time.
++#   Civil Aviation Safety Authority (undated)
++#   http://services.casa.gov.au/outnback/inc/pages/episode3/episode-3_time_zones.shtml
++#   EST CST WST (no abbreviations given for DST)
+ #
+-#   For abbreviations, tools like AltaVista are less useful because of
+-#   ambiguity.  Many hits are not really time zones, unfortunately, and
+-#   many hits denote US time zones and not Australian ones.  But here
+-#   are the hit counts anyway:
++#   Geoscience Australia (2011-11-24)
++#   http://www.ga.gov.au/geodesy/astro/sunrise.jsp
++#   AEST ACST AWST AEDT ACDT
+ #
+-#     161,304 "EST" and domain:au
+-#      25,156 "EDT" and domain:au
+-#      18,263 "AEST" and domain:au
+-#      10,416 "AEDT" and domain:au
++#   Parliamentary Library (2008-11-10)
++#   http://www.aph.gov.au/binaries/library/pubs/rp/2008-09/09rp14.pdf
++#   EST CST WST preferred for standard time; AEST AEDT ACST ACDT also used
+ #
+-#      14,538 "CST" and domain:au
+-#       5,728 "CDT" and domain:au
+-#         176 "ACST" and domain:au
+-#          29 "ACDT" and domain:au
++#   The Transport Safety Bureau has an extensive series of accident reports,
++#   and investigators seem to use whatever abbreviation they like.
++#   Googling site:atsb.gov.au found the following number of unique hits:
++#   311 "ESuT", 195 "EDT", 26 "AEDT", 83 "CSuT", 46 "CDT".
++#   "_SuT" tended to appear in older reports, and "A_DT" tended to
++#   appear in reports of events with international implications.
+ #
+-#       7,539 "WST" and domain:au
+-#          68 "AWST" and domain:au
+-#
+-#   This data suggest that Australians tend to omit the "A" prefix in
+-#   practice.  The situation for "ST" versus "DT" is less clear, given
+-#   the ambiguities involved.
+-#
+-# * How do Australians feel about the abbreviations in the tz database?
+-#
+-#   If you just count Australians on this list, I count 2 in favor and 3
+-#   against.  One of the "against" votes (David Keegel) counseled delay,
+-#   saying that both AEST/AEDT and EST/EST are widely used and
+-#   understood in Australia.
++# From the above it appears that there is a working consensus in
++# Australia to use trailing "DT" for daylight saving time; although
++# some sources use trailing "SST" or "ST" or "SuT" they are by far in
++# the minority.  The case for leading "A" is weaker, but since it
++# seems to be preferred in the overall web and is preferred in all
++# the leading newspaper websites and in many government departments,
++# it has a stronger case than omitting the leading "A".  The current
++# version of the database therefore uses abbreviations like "AEST" and
++# "AEDT" for Australian time zones.
+ 
+ # From Paul Eggert (1995-12-19):
+ # Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+ # Mark Prior writes that his newspaper
+ # reports that NSW's fall 1995 change will occur at 2:00,
+ # but Robert Elz says it's been 3:00 in Victoria since 1970
+-# and perhaps the newspaper's `2:00' is referring to standard time.
++# and perhaps the newspaper's '2:00' is referring to standard time.
+ # For now we'll continue to assume 2:00s for changes since 1960.
+ 
+ # From Eric Ulevik (1998-01-05):
+@@ -1055,17 +1031,14 @@
+ # relevant entries in this database.
+ #
+ # NSW (including LHI and Broken Hill):
+-# 
+ # Standard Time Act 1987 (updated 1995-04-04)
+-# 
++# http://www.austlii.edu.au/au/legis/nsw/consol_act/sta1987137/index.html
+ # ACT
+-# 
+ # Standard Time and Summer Time Act 1972
+-# 
++# http://www.austlii.edu.au/au/legis/act/consol_act/stasta1972279/index.html
+ # SA
+-# 
+ # Standard Time Act, 1898
+-# 
++# http://www.austlii.edu.au/au/legis/sa/consol_act/sta1898137/index.html
+ 
+ # From David Grosz (2005-06-13):
+ # It was announced last week that Daylight Saving would be extended by
+@@ -1083,7 +1056,7 @@
+ # Victoria: I wasn't able to find anything separate, but the other articles
+ # allude to it.
+ # But not Queensland
+-# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
++# http://www.news.com.au/story/0,10117,15564030-1248,00.html
+ 
+ # Northern Territory
+ 
+@@ -1130,9 +1103,9 @@
+ # The 1992 ending date used in the rules is a best guess;
+ # it matches what was used in the past.
+ 
+-# 
+ # The Australian Bureau of Meteorology FAQ
+-#  (1999-09-27) writes that Giles Meteorological Station uses
++# http://www.bom.gov.au/faq/faqgen.htm
++# (1999-09-27) writes that Giles Meteorological Station uses
+ # South Australian time even though it's located in Western Australia.
+ 
+ # Queensland
+@@ -1173,9 +1146,9 @@
+ # The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
+ 
+ # From Christopher Hunt (2006-11-21), after an advance warning
+-# from Jesper Norgaard Welen (2006-11-01):
++# from Jesper Nørgaard Welen (2006-11-01):
+ # WA are trialing DST for three years.
+-# 
++# http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf
+ 
+ # From Rives McDow (2002-04-09):
+ # The most interesting region I have found consists of three towns on the
+@@ -1189,7 +1162,7 @@
+ # From Paul Eggert (2002-04-09):
+ # This is confirmed by the section entitled
+ # "What's the deal with time zones???" in
+-# .
++# http://www.earthsci.unimelb.edu.au/~awatkins/null.html
+ #
+ # From Alex Livingston (2006-12-07):
+ # ... it was just on four years ago that I drove along the Eyre Highway,
+@@ -1337,7 +1310,7 @@
+ # Based on law library research by John Mackin,
+ # who notes:
+ #	In Australia, time is not legislated federally, but rather by the
+-#	individual states.  Thus, while such terms as ``Eastern Standard Time''
++#	individual states.  Thus, while such terms as "Eastern Standard Time"
+ #	[I mean, of course, Australian EST, not any other kind] are in common
+ #	use, _they have NO REAL MEANING_, as they are not defined in the
+ #	legislation.  This is very important to understand.
+@@ -1345,48 +1318,42 @@
+ 
+ # From Eric Ulevik (1999-05-26):
+ # DST will start in NSW on the last Sunday of August, rather than the usual
+-# October in 2000.  [See: Matthew Moore,
+-# 
+-# Two months more daylight saving
+-# 
+-# Sydney Morning Herald (1999-05-26).]
++# October in 2000.  See: Matthew Moore,
++# Two months more daylight saving, Sydney Morning Herald (1999-05-26).
++# http://www.smh.com.au/news/9905/26/pageone/pageone4.html
+ 
+ # From Paul Eggert (1999-09-27):
+ # See the following official NSW source:
+-# 
+ # Daylight Saving in New South Wales.
+-# 
++# http://dir.gis.nsw.gov.au/cgi-bin/genobject/document/other/daylightsaving/tigGmZ
+ #
+ # Narrabri Shire (NSW) council has announced it will ignore the extension of
+ # daylight saving next year.  See:
+-# 
+ # Narrabri Council to ignore daylight saving
+-#  (1999-07-22).  For now, we'll wait to see if this really happens.
++# http://abc.net.au/news/regionals/neweng/monthly/regeng-22jul1999-1.htm
++# (1999-07-22).  For now, we'll wait to see if this really happens.
+ #
+ # Victoria will following NSW.  See:
+-# 
+-# Vic to extend daylight saving
+-#  (1999-07-28).
++# Vic to extend daylight saving (1999-07-28)
++# http://abc.net.au/local/news/olympics/1999/07/item19990728112314_1.htm
+ #
+ # However, South Australia rejected the DST request.  See:
+-# 
+-# South Australia rejects Olympics daylight savings request
+-#  (1999-07-19).
++# South Australia rejects Olympics daylight savings request (1999-07-19)
++# http://abc.net.au/news/olympics/1999/07/item19990719151754_1.htm
+ #
+ # Queensland also will not observe DST for the Olympics.  See:
+-# 
+ # Qld says no to daylight savings for Olympics
+-#  (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
+-# ``Look you've got to remember in my family when this came up last time
++# http://abc.net.au/news/olympics/1999/06/item19990601114608_1.htm
++# (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
++# "Look you've got to remember in my family when this came up last time
+ # I voted for it, my wife voted against it and she said to me it's all very
+ # well for you, you don't have to worry about getting the children out of
+ # bed, getting them to school, getting them to sleep at night.
+-# I've been through all this argument domestically...my wife rules.''
++# I've been through all this argument domestically...my wife rules."
+ #
+ # Broken Hill will stick with South Australian time in 2000.  See:
+-# 
+-# Broken Hill to be behind the times
+-#  (1999-07-21).
++# Broken Hill to be behind the times (1999-07-21)
++# http://abc.net.au/news/regionals/brokenh/monthly/regbrok-21jul1999-6.htm
+ 
+ # IATA SSIM (1998-09) says that the spring 2000 change for Australian
+ # Capital Territory, New South Wales except Lord Howe Island and Broken
+@@ -1402,7 +1369,7 @@
+ # Yancowinna
+ 
+ # From John Mackin (1989-01-04):
+-# `Broken Hill' means the County of Yancowinna.
++# 'Broken Hill' means the County of Yancowinna.
+ 
+ # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+ # # YANCOWINNA..  [ Confirmation courtesy of Broken Hill Postmaster ]
+@@ -1459,9 +1426,7 @@
+ # summer (southern hemisphere).
+ #
+ # From
+-# 
+ # http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
+-# 
+ # The extended daylight saving period that South Australia has been trialling
+ # for over the last year is now set to be ongoing.
+ # Daylight saving will continue to start on the first Sunday in October each
+@@ -1471,9 +1436,7 @@
+ # the ACT for all 52 weeks of the year...
+ #
+ # We have a wrap-up here:
+-# 
+ # http://www.timeanddate.com/news/time/south-australia-extends-dst.html
+-# 
+ ###############################################################################
+ 
+ # New Zealand
+@@ -1482,7 +1445,7 @@
+ # the 1989/90 year was a trial of an extended "daylight saving" period.
+ # This trial was deemed successful and the extended period adopted for
+ # subsequent years (with the addition of a further week at the start).
+-# source -- phone call to Ministry of Internal Affairs Head Office.
++# source - phone call to Ministry of Internal Affairs Head Office.
+ 
+ # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+ # # The Country of New Zealand   (Australia's east island -) Gee they hate that!
+@@ -1524,6 +1487,19 @@
+ # that DST will begin on 2007-09-30 2008-04-06.
+ # http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
+ 
++# From Paul Eggert (2014-07-14):
++# Chatham Island time was formally standardized on 1957-01-01 by
++# New Zealand's Standard Time Amendment Act 1956 (1956-10-26).
++# http://www.austlii.edu.au/nz/legis/hist_act/staa19561956n100244.pdf
++# According to Google Books snippet view, a speaker in the New Zealand
++# parliamentary debates in 1956 said "Clause 78 makes provision for standard
++# time in the Chatham Islands.  The time there is 45 minutes in advance of New
++# Zealand time.  I understand that is the time they keep locally, anyhow."
++# For now, assume this practice goes back to the introduction of standard time
++# in New Zealand, as this would make Chatham Islands time almost exactly match
++# LMT back when New Zealand was at UTC+11:30; also, assume Chatham Islands did
++# not observe New Zealand's prewar DST.
++
+ ###############################################################################
+ 
+ 
+@@ -1543,7 +1519,7 @@
+ 
+ # From the BBC World Service in
+ # http://news.bbc.co.uk/2/hi/asia-pacific/205226.stm (1998-10-31 16:03 UTC):
+-# The Fijiian government says the main reasons for the time change is to
++# The Fijian government says the main reasons for the time change is to
+ # improve productivity and reduce road accidents.... [T]he move is also
+ # intended to boost Fiji's ability to attract tourists to witness the dawning
+ # of the new millennium.
+@@ -1551,16 +1527,12 @@
+ # http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
+ # reports that Fiji has discontinued DST.
+ 
+-# Johnston
+-
+-# Johnston data is from usno1995.
+-
+ 
+ # Kiribati
+ 
+ # From Paul Eggert (1996-01-22):
+ # Today's _Wall Street Journal_ (page 1) reports that Kiribati
+-# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
++# "declared it the same day [throughout] the country as of Jan. 1, 1995"
+ # as part of the competition to be first into the 21st century.
+ 
+ 
+@@ -1575,8 +1547,8 @@
+ 
+ # N Mariana Is, Guam
+ 
+-# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
+-# Philippines and the Ladrones from America,'' and implies that the Ladrones
++# Howse writes (p 153) "The Spaniards, on the other hand, reached the
++# Philippines and the Ladrones from America," and implies that the Ladrones
+ # (now called the Marianas) kept American date for quite some time.
+ # For now, we assume the Ladrones switched at the same time as the Philippines;
+ # see Asia/Manila.
+@@ -1590,17 +1562,16 @@
+ # Micronesia
+ 
+ # Alan Eugene Davis writes (1996-03-16),
+-# ``I am certain, having lived there for the past decade, that "Truk"
+-# (now properly known as Chuuk) ... is in the time zone GMT+10.''
++# "I am certain, having lived there for the past decade, that 'Truk'
++# (now properly known as Chuuk) ... is in the time zone GMT+10."
+ #
+ # Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
+ # on 1978-10-01; ignore this for now.
+ 
+ # From Paul Eggert (1999-10-29):
+ # The Federated States of Micronesia Visitors Board writes in
+-# 
+-# The Federated States of Micronesia - Visitor Information
+-#  (1999-01-26)
++# The Federated States of Micronesia - Visitor Information (1999-01-26)
++# http://www.fsmgov.org/info/clocks.html
+ # that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
+ # We don't know when Kosrae switched from UTC+12; assume January 1 for now.
+ 
+@@ -1646,27 +1617,34 @@
+ # Sacramento but it was changed a couple of years ago.
+ 
+ 
+-# Samoa
++# (Western) Samoa and American Samoa
+ 
+ # Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
+ # that in 1879 the King of Samoa decided to change
+-# ``the date in his kingdom from the Antipodean to the American system,
+-# ordaining -- by a masterpiece of diplomatic flattery -- that
+-# the Fourth of July should be celebrated twice in that year.''
++# "the date in his kingdom from the Antipodean to the American system,
++# ordaining - by a masterpiece of diplomatic flattery - that
++# the Fourth of July should be celebrated twice in that year."
+ 
++# Although Shanks & Pottenger says they both switched to UTC-11:30
++# in 1911, and to UTC-11 in 1950. many earlier sources give UTC-11
++# for American Samoa, e.g., the US National Bureau of Standards
++# circular "Standard Time Throughout the World", 1932.
++# Assume American Samoa switched to UTC-11 in 1911, not 1950,
++# and that after 1950 they agreed until (western) Samoa skipped a
++# day in 2011.  Assume also that the Samoas follow the US and New
++# Zealand's "ST"/"DT" style of daylight-saving abbreviations.
+ 
+ # Tonga
+ 
+ # From Paul Eggert (1996-01-22):
+-# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
+-# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
++# Today's _Wall Street Journal_ (p 1) reports that "Tonga has been plotting
++# to sneak ahead of [New Zealanders] by introducing daylight-saving time."
+ # Since Kiribati has moved the Date Line it's not clear what Tonga will do.
+ 
+ # Don Mundell writes in the 1997-02-20 Tonga Chronicle
+-# 
+-# How Tonga became `The Land where Time Begins'
+-# :
+-
++# How Tonga became 'The Land where Time Begins':
++# http://www.tongatapu.net.to/tonga/homeland/timebegins.htm
++#
+ # Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
+ # 12 hours and 20 minutes ahead of GMT.  When New Zealand adjusted its
+ # standard time in 1940s, Tonga had the choice of subtracting from its
+@@ -1674,8 +1652,8 @@
+ # advancing its time to maintain the differential of 13 degrees
+ # (approximately 50 minutes ahead of New Zealand time).
+ #
+-# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
+-# Tungi, preferred to ensure Tonga's title as the land where time
++# Because His Majesty King Tāufaʻāhau Tupou IV, then Crown Prince
++# Tungī, preferred to ensure Tonga's title as the land where time
+ # begins, the Legislative Assembly approved the latter change.
+ #
+ # But some of the older, more conservative members from the outer
+@@ -1701,9 +1679,7 @@
+ # * Tonga will introduce DST in November
+ #
+ # I was given this link by John Letts:
+-# 
+ # http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
+-# 
+ #
+ # I have not been able to find exact dates for the transition in November
+ # yet. By reading this article it seems like Fiji will be 14 hours ahead
+@@ -1711,9 +1687,7 @@
+ # (12 + 1 hour DST).
+ 
+ # From Arthur David Olson (1999-09-20):
+-# According to 
+-# http://www.tongaonline.com/news/sept1799.html
+-# :
++# According to :
+ # "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
+ # and annually thereafter from the first Saturday in October through the
+ # third Saturday of April.  Under the system approved by Privy Council on
+@@ -1731,7 +1705,7 @@
+ # instead of the original reported date April 16. Unfortunately, the article
+ # is no longer available on the site, and I did not make a copy of the
+ # text, and I have forgotten to report it here.
+-# (Original URL was: http://www.tongaonline.com/news/march162000.htm )
++# (Original URL was )
+ 
+ # From Rives McDow (2000-12-01):
+ # Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.
+@@ -1751,7 +1725,7 @@
+ # From Vernice Anderson, Personal Secretary to Philip Jessup,
+ # US Ambassador At Large (oral history interview, 1971-02-02):
+ #
+-# Saturday, the 14th [of October, 1950] -- ...  The time was all the
++# Saturday, the 14th [of October, 1950] - ...  The time was all the
+ # more confusing at that point, because we had crossed the
+ # International Date Line, thus getting two Sundays.  Furthermore, we
+ # discovered that Wake Island had two hours of daylight saving time
+@@ -1796,7 +1770,7 @@
+ # on the high seas.  Whenever a ship was within the territorial waters of any
+ # nation it would use that nation's standard time.  The captain was permitted
+ # to change his ship's clocks at a time of his choice following his ship's
+-# entry into another zone time--he often chose midnight.  These zones were
++# entry into another zone time - he often chose midnight.  These zones were
+ # adopted by all major fleets between 1920 and 1925 but not by many
+ # independent merchant ships until World War II.
+ 
+@@ -1804,6 +1778,6 @@
+ # (2005-03-20):
+ #
+ # The American Practical Navigator (2002)
+-# 
++# http://pollux.nss.nima.mil/pubs/pubs_j_apn_sections.html?rid=187
+ # talks only about the 180-degree meridian with respect to ships in
+ # international waters; it ignores the international date line.
+--- ./jdk/test/sun/util/calendar/zi/tzdata/backward	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/backward	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,15 +21,15 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+ # This file provides links between current names for time zones
+ # and their old names.  Many names changed in late 1993.
+ 
++# Link	TARGET			LINK-NAME
+ Link	Africa/Asmara		Africa/Asmera
+-Link	Africa/Bamako		Africa/Timbuktu
++Link	Africa/Abidjan		Africa/Timbuktu
+ Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
+ Link	America/Adak		America/Atka
+ Link	America/Argentina/Buenos_Aires	America/Buenos_Aires
+@@ -50,8 +50,11 @@
+ Link	Pacific/Auckland	Antarctica/South_Pole
+ Link	Asia/Ashgabat		Asia/Ashkhabad
+ Link	Asia/Kolkata		Asia/Calcutta
+-Link	Asia/Chongqing		Asia/Chungking
++Link	Asia/Shanghai		Asia/Chongqing
++Link	Asia/Shanghai		Asia/Chungking
+ Link	Asia/Dhaka		Asia/Dacca
++Link	Asia/Shanghai		Asia/Harbin
++Link	Asia/Urumqi		Asia/Kashgar
+ Link	Asia/Kathmandu		Asia/Katmandu
+ Link	Asia/Macau		Asia/Macao
+ Link	Asia/Ho_Chi_Minh	Asia/Saigon
+--- ./jdk/test/sun/util/calendar/zi/tzdata/etcetera	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/etcetera	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -37,7 +36,7 @@
+ Zone	Etc/UCT		0	-	UCT
+ 
+ # The following link uses older naming conventions,
+-# but it belongs here, not in the file `backward',
++# but it belongs here, not in the file 'backward',
+ # as functions like gmtime load the "GMT" file to handle leap seconds properly.
+ # We want this to work even on installations that omit the other older names.
+ Link	Etc/GMT				GMT
+--- ./jdk/test/sun/util/calendar/zi/tzdata/europe	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/europe	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,24 +21,30 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2006-03-22):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
++#
++# A reliable and entertaining source about time zones is
++# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+ # Except where otherwise noted, Shanks & Pottenger is the source for
+ # entries through 1991, and IATA SSIM is the source for entries afterwards.
+@@ -49,9 +55,9 @@
+ #	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+ #	which I found in the UCLA library.
+ #
+-#	
+ #	William Willett, The Waste of Daylight, 19th edition
+-#	 (1914-03)
++#	
++#	[PDF] (1914-03)
+ #
+ #	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+ #	.  He writes:
+@@ -59,10 +65,20 @@
+ #	may be sent to Mr. John Milne, Royal Geographical Society,
+ #	Savile Row, London."  Nowadays please email them to tz@iana.org.
+ #
+-#	Brazil's Departamento Servico da Hora (DSH),
+-#	
++#	Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
++#	This Russian-language source was consulted by Vladimir Karpinsky; see
++#	http://mm.icann.org/pipermail/tz/2014-August/021320.html
++#	The full Russian citation is:
++#	Бялокоз, Евгений Людвигович. Новый счет времени в течении суток
++#	введенный декретом Совета народных комиссаров для всей России с 1-го
++#	июля 1919 г. / Изд. 2-е Междуведомственной комиссии. - Петроград:
++#	Десятая гос. тип., 1919.
++#	http://resolver.gpntb.ru/purl?docushare/dsweb/Get/Resource-2011/Byalokoz__E.L.__Novyy__schet__vremeni__v__techenie__sutok__izd__2(1).pdf
++#
++#	Brazil's Divisão Serviço da Hora (DSHO),
+ #	History of Summer Time
+-#	 (1998-09-21, in Portuguese)
++#	
++#	(1998-09-21, in Portuguese)
+ 
+ #
+ # I invented the abbreviations marked '*' in the following table;
+@@ -78,13 +94,12 @@
+ #        0:00       WET WEST WEMT Western Europe
+ #        0:19:32.13 AMT NST       Amsterdam, Netherlands Summer (1835-1937)*
+ #        0:20       NET NEST      Netherlands (1937-1940)*
++#        1:00       BST           British Standard (1968-1971)
+ #        1:00       CET CEST CEMT Central Europe
+ #        1:00:14    SET           Swedish (1879-1899)*
+ #        2:00       EET EEST      Eastern Europe
+-#        3:00       MSK MSD       Moscow
+-#
+-# A reliable and entertaining source about time zones, especially in Britain,
+-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
++#        3:00       FET           Further-eastern Europe (2011-2014)*
++#        3:00       MSK MSD  MSM* Moscow
+ 
+ # From Peter Ilieve (1994-12-04),
+ # The original six [EU members]: Belgium, France, (West) Germany, Italy,
+@@ -128,7 +143,7 @@
+ # along the towpath within a few yards of it.'
+ #
+ # I have a one inch to one mile map of London and my estimate of the stone's
+-# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
++# position is 51 degrees 28' 30" N, 0 degrees 18' 45" W. The longitude should
+ # be within about +-2". The Ordnance Survey grid reference is TQ172761.
+ #
+ # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
+@@ -160,8 +175,22 @@
+ # transition date for London, namely 1847-12-01.  We don't know as much
+ # about Dublin, so we use 1880-08-02, the legal transition time.
+ 
+-# From Paul Eggert (2003-09-27):
+-# Summer Time was first seriously proposed by William Willett (1857-1915),
++# From Paul Eggert (2014-07-19):
++# The ancients had no need for daylight saving, as they kept time
++# informally or via hours whose length depended on the time of year.
++# Daylight saving time in its modern sense was invented by the
++# New Zealand entomologist George Vernon Hudson (1867-1946),
++# whose day job as a postal clerk led him to value
++# after-hours daylight in which to pursue his research.
++# In 1895 he presented a paper to the Wellington Philosophical Society
++# that proposed a two-hour daylight-saving shift.  See:
++# Hudson GV. On seasonal time-adjustment in countries south of lat. 30 deg.
++# Transactions and Proceedings of the New Zealand Institute. 1895;28:734
++# http://rsnz.natlib.govt.nz/volume/rsnz_28/rsnz_28_00_006110.html
++# Although some interest was expressed in New Zealand, his proposal
++# did not find its way into law and eventually it was almost forgotten.
++#
++# In England, DST was independently reinvented by William Willett (1857-1915),
+ # a London builder and member of the Royal Astronomical Society
+ # who circulated a pamphlet "The Waste of Daylight" (1907)
+ # that proposed advancing clocks 20 minutes on each of four Sundays in April,
+@@ -174,7 +203,7 @@
+ # A monument to Willett was unveiled on 1927-05-21, in an open space in
+ # a 45-acre wood near Chislehurst, Kent that was purchased by popular
+ # subscription and open to the public.  On the south face of the monolith,
+-# designed by G. W. Miller, is the...William Willett Memorial Sundial,
++# designed by G. W. Miller, is the William Willett Memorial Sundial,
+ # which is permanently set to Summer Time.
+ 
+ # From Winston Churchill (1934-04-28):
+@@ -183,9 +212,9 @@
+ # between 160 and 170 hours more daylight leisure, to a war which
+ # plunged Europe into darkness for four years, and shook the
+ # foundations of civilization throughout the world.
+-#	-- 
+-#	"A Silent Toast to William Willett", Pictorial Weekly
+-#	
++#	-- "A Silent Toast to William Willett", Pictorial Weekly;
++#	republished in Finest Hour (Spring 2002) 1(114):26
++#	http://www.winstonchurchill.org/images/finesthour/Vol.01%20No.114.pdf
+ 
+ # From Paul Eggert (1996-09-03):
+ # The OED Supplement says that the English originally said "Daylight Saving"
+@@ -194,7 +223,6 @@
+ # proponents (who eventually won the argument) are quoted as using "Summer".
+ 
+ # From Arthur David Olson (1989-01-19):
+-#
+ # A source at the British Information Office in New York avers that it's
+ # known as "British" Summer Time in all parts of the United Kingdom.
+ 
+@@ -221,8 +249,8 @@
+ # official designation; the reply of the 21st was that there wasn't
+ # but he couldn't think of anything better than the "Double British
+ # Summer Time" that the BBC had been using informally.
+-# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
+-# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
++# http://www.polyomino.org.uk/british-time/bbc-19410418.png
++# http://www.polyomino.org.uk/british-time/ho-19410421.png
+ 
+ # From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
+ # [N]o official designation has as far as I know been adopted for the time
+@@ -239,23 +267,14 @@
+ # the history of summer time legislation in the United Kingdom.
+ # Since 1998 Joseph S. Myers has been updating
+ # and extending this list, which can be found in
+-# http://student.cusu.cam.ac.uk/~jsm28/british-time/
+-# 
+-# History of legal time in Britain
+-# 
+-# Rob Crowther (2012-01-04) reports that that URL no longer
+-# exists, and the article can now be found at:
+-# 
+ # http://www.polyomino.org.uk/british-time/
+-# 
+ 
+ # From Joseph S. Myers (1998-01-06):
+ #
+ # The legal time in the UK outside of summer time is definitely GMT, not UTC;
+ # see Lord Tanlaw's speech
+-# 
+-# (Lords Hansard 11 June 1997 columns 964 to 976)
+-# .
++# http://www.publications.parliament.uk/pa/ld199798/ldhansrd/vo970611/text/70611-10.htm#70611-10_head0
++# (Lords Hansard 11 June 1997 columns 964 to 976).
+ 
+ # From Paul Eggert (2006-03-22):
+ #
+@@ -294,9 +313,17 @@
+ #   "Timeball on the ballast office is down.  Dunsink time."
+ #   -- James Joyce, Ulysses
+ 
++# "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time
++# was among various actions undertaken by the 'English' government that
++# would 'put the whole country into the SF (Sinn Féin) camp'.  She claimed
++# Irish 'public feeling (was) outraged by forcing of English time on us'."
++# -- Parsons M. Dublin lost its time zone - and 25 minutes - after 1916 Rising.
++# Irish Times 2014-10-27.
++# http://www.irishtimes.com/news/politics/dublin-lost-its-time-zone-and-25-minutes-after-1916-rising-1.1977411
++
+ # From Joseph S. Myers (2005-01-26):
+-# Irish laws are available online at www.irishstatutebook.ie.  These include
+-# various relating to legal time, for example:
++# Irish laws are available online at .
++# These include various relating to legal time, for example:
+ #
+ # ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
+ #
+@@ -458,25 +485,27 @@
+ # Use Europe/London for Jersey, Guernsey, and the Isle of Man.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1 0:00s
++Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1  0:00s
+ 			 0:00	GB-Eire	%s	1968 Oct 27
+-			 1:00	-	BST	1971 Oct 31 2:00u
++			 1:00	-	BST	1971 Oct 31  2:00u
+ 			 0:00	GB-Eire	%s	1996
+ 			 0:00	EU	GMT/BST
+ Link	Europe/London	Europe/Jersey
+ Link	Europe/London	Europe/Guernsey
+ Link	Europe/London	Europe/Isle_of_Man
++
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
+-			-0:25:21 -	DMT	1916 May 21 2:00
+-			-0:25:21 1:00	IST	1916 Oct  1 2:00s
++			-0:25:21 -	DMT	1916 May 21  2:00
++			-0:25:21 1:00	IST	1916 Oct  1  2:00s
+ 			 0:00	GB-Eire	%s	1921 Dec  6 # independence
+-			 0:00	GB-Eire	GMT/IST	1940 Feb 25 2:00
+-			 0:00	1:00	IST	1946 Oct  6 2:00
+-			 0:00	-	GMT	1947 Mar 16 2:00
+-			 0:00	1:00	IST	1947 Nov  2 2:00
+-			 0:00	-	GMT	1948 Apr 18 2:00
++			 0:00	GB-Eire	GMT/IST	1940 Feb 25  2:00
++			 0:00	1:00	IST	1946 Oct  6  2:00
++			 0:00	-	GMT	1947 Mar 16  2:00
++			 0:00	1:00	IST	1947 Nov  2  2:00
++			 0:00	-	GMT	1948 Apr 18  2:00
+ 			 0:00	GB-Eire	GMT/IST	1968 Oct 27
+-			 1:00	-	IST	1971 Oct 31 2:00u
++			 1:00	-	IST	1971 Oct 31  2:00u
+ 			 0:00	GB-Eire	GMT/IST	1996
+ 			 0:00	EU	GMT/IST
+ 
+@@ -495,10 +524,9 @@
+ Rule	EU	1981	max	-	Mar	lastSun	 1:00u	1:00	S
+ Rule	EU	1996	max	-	Oct	lastSun	 1:00u	0	-
+ # The most recent directive covers the years starting in 2002.  See:
+-# 
+ # Directive 2000/84/EC of the European Parliament and of the Council
+ # of 19 January 2001 on summer-time arrangements.
+-# 
++# http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32000L0084:EN:NOT
+ 
+ # W-Eur differs from EU only in that W-Eur uses standard time.
+ Rule	W-Eur	1977	1980	-	Apr	Sun>=1	 1:00s	1:00	S
+@@ -521,18 +549,18 @@
+ Rule	C-Eur	1944	1945	-	Apr	Mon>=1	 2:00s	1:00	S
+ # Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
+ Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
+-# From Jesper Norgaard Welen (2008-07-13):
++# From Jesper Nørgaard Welen (2008-07-13):
+ #
+ # I found what is probably a typo of 2:00 which should perhaps be 2:00s
+ # in the C-Eur rule from tz database version 2008d (this part was
+-# corrected in version 2008d). The circumstancial evidence is simply the
++# corrected in version 2008d). The circumstantial evidence is simply the
+ # tz database itself, as seen below:
+ #
+ # Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15  0:01
+ #    0:00 France WE%sT 1945 Sep 16  3:00
+ #
+ # Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+-#    0:00 France WE%sT 1945 Sep 16 3:00
++#    0:00 France WE%sT 1945 Sep 16  3:00
+ #
+ # Zone Europe/Belgrade 1:22:00 - LMT 1884
+ #    1:00 1:00 CEST 1945 Sep 16  2:00s
+@@ -576,16 +604,16 @@
+ Rule	E-Eur	1996	max	-	Oct	lastSun	 0:00	0	-
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST	# Moscow Summer Time
+-Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT	# Moscow Mean Time
+-Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST	# Moscow Double Summer Time
++Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST  # Moscow Summer Time
++Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT  # Moscow Mean Time
++Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST # Moscow Double Summer Time
+ Rule	Russia	1918	only	-	Sep	16	 1:00	1:00	MST
+ Rule	Russia	1919	only	-	May	31	23:00	2:00	MDST
+-Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	S
+-Rule	Russia	1919	only	-	Aug	16	 0:00	0	-
+-Rule	Russia	1921	only	-	Feb	14	23:00	1:00	S
+-Rule	Russia	1921	only	-	Mar	20	23:00	2:00	M # Midsummer
+-Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	S
++Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	MSD
++Rule	Russia	1919	only	-	Aug	16	 0:00	0	MSK
++Rule	Russia	1921	only	-	Feb	14	23:00	1:00	MSD
++Rule	Russia	1921	only	-	Mar	20	23:00	2:00	MSM  # Midsummer
++Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	MSD
+ Rule	Russia	1921	only	-	Oct	 1	 0:00	0	-
+ # Act No.925 of the Council of Ministers of the USSR (1980-10-24):
+ Rule	Russia	1981	1984	-	Apr	 1	 0:00	1:00	S
+@@ -600,6 +628,7 @@
+ Rule	Russia	1993	2010	-	Mar	lastSun	 2:00s	1:00	S
+ Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+ Rule	Russia	1996	2010	-	Oct	lastSun	 2:00s	0	-
++# As described below, Russia's 2014 change affects Zone data, not Rule data.
+ 
+ # From Alexander Krivenyshev (2011-06-14):
+ # According to Kremlin press service, Russian President Dmitry Medvedev
+@@ -607,14 +636,10 @@
+ # According to the law Russia is abolishing daylight saving time.
+ #
+ # Medvedev signed a law "On the Calculation of Time" (in russian):
+-# 
+ # http://bmockbe.ru/events/?ID=7583
+-# 
+ #
+ # Medvedev signed a law on the calculation of the time (in russian):
+-# 
+ # http://www.regnum.ru/news/polit/1413906.html
+-# 
+ 
+ # From Arthur David Olson (2011-06-15):
+ # Take "abolishing daylight saving time" to mean that time is now considered
+@@ -634,10 +659,10 @@
+ # From Markus Kuhn (1996-07-12):
+ # The official German names ... are
+ #
+-#	Mitteleuropaeische Zeit (MEZ)         = UTC+01:00
+-#	Mitteleuropaeische Sommerzeit (MESZ)  = UTC+02:00
++#	Mitteleuropäische Zeit (MEZ)         = UTC+01:00
++#	Mitteleuropäische Sommerzeit (MESZ)  = UTC+02:00
+ #
+-# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
++# as defined in the German Time Act (Gesetz über die Zeitbestimmung (ZeitG),
+ # 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
+ # I wrote ... to the German Federal Physical-Technical Institution
+ #
+@@ -692,7 +717,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Andorra	0:06:04 -	LMT	1901
+ 			0:00	-	WET	1946 Sep 30
+-			1:00	-	CET	1985 Mar 31 2:00
++			1:00	-	CET	1985 Mar 31  2:00
+ 			1:00	EU	CE%sT
+ 
+ # Austria
+@@ -718,9 +743,9 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Vienna	1:05:21 -	LMT	1893 Apr
+ 			1:00	C-Eur	CE%sT	1920
+-			1:00	Austria	CE%sT	1940 Apr  1 2:00s
+-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
+-			1:00	1:00	CEST	1945 Apr 12 2:00s
++			1:00	Austria	CE%sT	1940 Apr  1  2:00s
++			1:00	C-Eur	CE%sT	1945 Apr  2  2:00s
++			1:00	1:00	CEST	1945 Apr 12  2:00s
+ 			1:00	-	CET	1946
+ 			1:00	Austria	CE%sT	1981
+ 			1:00	EU	CE%sT
+@@ -731,38 +756,37 @@
+ # GMT+3 without DST (was GMT+2 with DST).
+ #
+ # Sources (Russian language):
+-# 1.
+-# 
+ # http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
+-# 
+-# 2.
+-# 
+ # http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
+-# 
+-# 3.
+-# 
+ # http://news.tut.by/society/250578.html
+-# 
++#
++# From Alexander Bokovoy (2014-10-09):
++# Belarussian government decided against changing to winter time....
++# http://eng.belta.by/all_news/society/Belarus-decides-against-adjusting-time-in-Russias-wake_i_76335.html
++# From Paul Eggert (2014-10-08):
++# Hence Belarus can share time zone abbreviations with Moscow again.
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Minsk	1:50:16 -	LMT	1880
+-			1:50	-	MMT	1924 May 2 # Minsk Mean Time
++			1:50	-	MMT	1924 May  2 # Minsk Mean Time
+ 			2:00	-	EET	1930 Jun 21
+ 			3:00	-	MSK	1941 Jun 28
+ 			1:00	C-Eur	CE%sT	1944 Jul  3
+ 			3:00	Russia	MSK/MSD	1990
+-			3:00	-	MSK	1991 Mar 31 2:00s
+-			2:00	1:00	EEST	1991 Sep 29 2:00s
+-			2:00	-	EET	1992 Mar 29 0:00s
+-			2:00	1:00	EEST	1992 Sep 27 0:00s
+-			2:00	Russia	EE%sT	2011 Mar 27 2:00s
+-			3:00	-	FET # Further-eastern European Time
++			3:00	-	MSK	1991 Mar 31  2:00s
++			2:00	1:00	EEST	1991 Sep 29  2:00s
++			2:00	-	EET	1992 Mar 29  0:00s
++			2:00	1:00	EEST	1992 Sep 27  0:00s
++			2:00	Russia	EE%sT	2011 Mar 27  2:00s
++			3:00	-	FET	2014 Oct 26  1:00s
++			3:00	-	MSK
+ 
+ # Belgium
+ #
+ # From Paul Eggert (1997-07-02):
+ # Entries from 1918 through 1991 are taken from:
+ #	Annuaire de L'Observatoire Royal de Belgique,
+-#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
++#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe année, 1991
+ #	(Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
+ #	pp 8-9.
+ # LMT before 1892 was 0:17:30, according to the official journal of Belgium:
+@@ -812,7 +836,7 @@
+ Rule	Belgium	1946	only	-	Oct	 7	 2:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Brussels	0:17:30 -	LMT	1880
+-			0:17:30	-	BMT	1892 May  1 12:00 # Brussels MT
++			0:17:30	-	BMT	1892 May  1 12:00  # Brussels MT
+ 			0:00	-	WET	1914 Nov  8
+ 			1:00	-	CET	1916 May  1  0:00
+ 			1:00	C-Eur	CE%sT	1918 Nov 11 11:00u
+@@ -828,8 +852,8 @@
+ #
+ # From Plamen Simenov via Steffen Thorsen (1999-09-09):
+ # A document of Government of Bulgaria (No.94/1997) says:
+-# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
+-# EETDST --> EET is in 04:00 Local time in last Sunday of October
++# EET -> EETDST is in 03:00 Local time in last Sunday of March ...
++# EETDST -> EET is in 04:00 Local time in last Sunday of October
+ #
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Bulg	1979	only	-	Mar	31	23:00	1:00	S
+@@ -842,7 +866,7 @@
+ 			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
+ 			2:00	-	EET	1942 Nov  2  3:00
+ 			1:00	C-Eur	CE%sT	1945
+-			1:00	-	CET	1945 Apr 2 3:00
++			1:00	-	CET	1945 Apr  2  3:00
+ 			2:00	-	EET	1979 Mar 31 23:00
+ 			2:00	Bulg	EE%sT	1982 Sep 26  2:00
+ 			2:00	C-Eur	EE%sT	1991
+@@ -866,15 +890,15 @@
+ Rule	Czech	1949	only	-	Apr	 9	2:00s	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Prague	0:57:44 -	LMT	1850
+-			0:57:44	-	PMT	1891 Oct     # Prague Mean Time
+-			1:00	C-Eur	CE%sT	1944 Sep 17 2:00s
++			0:57:44	-	PMT	1891 Oct    # Prague Mean Time
++			1:00	C-Eur	CE%sT	1944 Sep 17  2:00s
+ 			1:00	Czech	CE%sT	1979
+ 			1:00	EU	CE%sT
+ # Use Europe/Prague also for Slovakia.
+ 
+ # Denmark, Faroe Islands, and Greenland
+ 
+-# From Jesper Norgaard Welen (2005-04-26):
++# From Jesper Nørgaard Welen (2005-04-26):
+ # http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
+ # [introducing standard time] was in effect from 1894-01-01....
+ # The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
+@@ -884,7 +908,7 @@
+ # http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
+ #
+ # This provoked a new law from 1974 to make possible summer time changes
+-# in subsequenet decrees with the law
++# in subsequent decrees with the law
+ # http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
+ #
+ # It seems however that no decree was set forward until 1980.  I have
+@@ -899,7 +923,7 @@
+ # was suspended on that night):
+ # http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
+ 
+-# From Jesper Norgaard Welen (2005-06-11):
++# From Jesper Nørgaard Welen (2005-06-11):
+ # The Herning Folkeblad (1980-09-26) reported that the night between
+ # Saturday and Sunday the clock is set back from three to two.
+ 
+@@ -923,11 +947,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Copenhagen	 0:50:20 -	LMT	1890
+ 			 0:50:20 -	CMT	1894 Jan  1 # Copenhagen MT
+-			 1:00	Denmark	CE%sT	1942 Nov  2 2:00s
+-			 1:00	C-Eur	CE%sT	1945 Apr  2 2:00
++			 1:00	Denmark	CE%sT	1942 Nov  2  2:00s
++			 1:00	C-Eur	CE%sT	1945 Apr  2  2:00
+ 			 1:00	Denmark	CE%sT	1980
+ 			 1:00	EU	CE%sT
+-Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11	# Torshavn
++Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11 # Tórshavn
+ 			 0:00	-	WET	1981
+ 			 0:00	EU	WE%sT
+ #
+@@ -939,11 +963,11 @@
+ # From Paul Eggert (2006-03-22):
+ # Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
+ # and left the EU on 1985-02-01.  It therefore should have been using EU
+-# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthab
++# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthåb
+ # used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
+ # rules since at least 1991.  Assume EU rules since 1980.
+ 
+-# From Gwillin Law (2001-06-06), citing
++# From Gwillim Law (2001-06-06), citing
+ #  (2001-03-15),
+ # and with translations corrected by Steffen Thorsen:
+ #
+@@ -978,16 +1002,16 @@
+ # DPC research station at Zackenberg.
+ #
+ # Scoresbysund and two small villages nearby keep time UTC-1 and use
+-# the same daylight savings time period as in West Greenland (Godthab).
++# the same daylight savings time period as in West Greenland (Godthåb).
+ #
+-# The rest of Greenland, including Godthab (this area, although it
++# The rest of Greenland, including Godthåb (this area, although it
+ # includes central Greenland, is known as west Greenland), keeps time
+ # UTC-3, with daylight savings methods according to European rules.
+ #
+ # It is common procedure to use UTC 0 in the wilderness of East and
+ # North Greenland, because it is mainly Icelandic aircraft operators
+ # maintaining traffic in these areas.  However, the official status of
+-# this area is that it sticks with Godthab time.  This area might be
++# this area is that it sticks with Godthåb time.  This area might be
+ # considered a dual time zone in some respects because of this.
+ 
+ # From Rives McDow (2001-11-19):
+@@ -996,8 +1020,8 @@
+ 
+ # From Paul Eggert (2006-03-22):
+ # From 1997 on the CIA map shows Danmarkshavn on GMT;
+-# the 1995 map as like Godthab.
+-# For lack of better info, assume they were like Godthab before 1996.
++# the 1995 map as like Godthåb.
++# For lack of better info, assume they were like Godthåb before 1996.
+ # startkart.no says Thule does not observe DST, but this is clearly an error,
+ # so go with Shanks & Pottenger for Thule transitions until this year.
+ # For 2007 on assume Thule will stay in sync with US DST rules.
+@@ -1012,15 +1036,15 @@
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Danmarkshavn -1:14:40 -	LMT	1916 Jul 28
+-			-3:00	-	WGT	1980 Apr  6 2:00
++			-3:00	-	WGT	1980 Apr  6  2:00
+ 			-3:00	EU	WG%sT	1996
+ 			0:00	-	GMT
+ Zone America/Scoresbysund -1:27:52 -	LMT	1916 Jul 28 # Ittoqqortoormiit
+-			-2:00	-	CGT	1980 Apr  6 2:00
++			-2:00	-	CGT	1980 Apr  6  2:00
+ 			-2:00	C-Eur	CG%sT	1981 Mar 29
+ 			-1:00	EU	EG%sT
+ Zone America/Godthab	-3:26:56 -	LMT	1916 Jul 28 # Nuuk
+-			-3:00	-	WGT	1980 Apr  6 2:00
++			-3:00	-	WGT	1980 Apr  6  2:00
+ 			-3:00	EU	WG%sT
+ Zone America/Thule	-4:35:08 -	LMT	1916 Jul 28 # Pituffik air base
+ 			-4:00	Thule	A%sT
+@@ -1042,17 +1066,16 @@
+ # summer time next spring."
+ 
+ # From Peter Ilieve (1998-11-04), heavily edited:
+-# 
+ # The 1998-09-22 Estonian time law
+-# 
++# http://trip.rk.ee/cgi-bin/thw?${BASE}=akt&${OOHTML}=rtd&TA=1998&TO=1&AN=1390
+ # refers to the Eighth Directive and cites the association agreement between
+-# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
++# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22-27, 120).
+ #
+ # I also asked [my relative] whether they use any standard abbreviation
+ # for their standard and summer times. He says no, they use "suveaeg"
+ # (summer time) and "talveaeg" (winter time).
+ 
+-# From The Baltic Times (1999-09-09)
++# From The Baltic Times  (1999-09-09)
+ # via Steffen Thorsen:
+ # This year will mark the last time Estonia shifts to summer time,
+ # a council of the ruling coalition announced Sept. 6....
+@@ -1070,19 +1093,19 @@
+ # The Estonian government has changed once again timezone politics.
+ # Now we are using again EU rules.
+ #
+-# From Urmet Jaanes (2002-03-28):
++# From Urmet Jänes (2002-03-28):
+ # The legislative reference is Government decree No. 84 on 2002-02-21.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Tallinn	1:39:00	-	LMT	1880
+-			1:39:00	-	TMT	1918 Feb # Tallinn Mean Time
++			1:39:00	-	TMT	1918 Feb    # Tallinn Mean Time
+ 			1:00	C-Eur	CE%sT	1919 Jul
+ 			1:39:00	-	TMT	1921 May
+ 			2:00	-	EET	1940 Aug  6
+ 			3:00	-	MSK	1941 Sep 15
+ 			1:00	C-Eur	CE%sT	1944 Sep 22
+-			3:00	Russia	MSK/MSD	1989 Mar 26 2:00s
+-			2:00	1:00	EEST	1989 Sep 24 2:00s
++			3:00	Russia	MSK/MSD	1989 Mar 26  2:00s
++			2:00	1:00	EEST	1989 Sep 24  2:00s
+ 			2:00	C-Eur	EE%sT	1998 Sep 22
+ 			2:00	EU	EE%sT	1999 Nov  1
+ 			2:00	-	EET	2002 Feb 21
+@@ -1104,35 +1127,45 @@
+ # This is documented in Heikki Oja: Aikakirja 2007, published by The Almanac
+ # Office of University of Helsinki, ISBN 952-10-3221-9, available online (in
+ # Finnish) at
+-#
+-# 
+ # http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf
+-# 
+ #
+ # Page 105 (56 in PDF version) has a handy table of all past daylight savings
+ # transitions. It is easy enough to interpret without Finnish skills.
+ #
+ # This is also confirmed by Finnish Broadcasting Company's archive at:
+-#
+-# 
+ # http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401
+-# 
+ #
+ # The news clip from 1981 says that "the time between 2 and 3 o'clock does not
+ # exist tonight."
+ 
++# From Konstantin Hyppönen (2014-06-13):
++# [Heikki Oja's book Aikakirja 2013]
++# http://almanakka.helsinki.fi/images/aikakirja/Aikakirja2013kokonaan.pdf
++# pages 104-105, including a scan from a newspaper published on Apr 2 1942
++# say that ... [o]n Apr 2 1942, 24 o'clock (which means Apr 3 1942,
++# 00:00), clocks were moved one hour forward. The newspaper
++# mentions "on the night from Thursday to Friday"....
++# On Oct 4 1942, clocks were moved at 1:00 one hour backwards.
++#
++# From Paul Eggert (2014-06-14):
++# Go with Oja over Shanks.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Finland	1942	only	-	Apr	3	0:00	1:00	S
+-Rule	Finland	1942	only	-	Oct	3	0:00	0	-
++Rule	Finland	1942	only	-	Apr	2	24:00	1:00	S
++Rule	Finland	1942	only	-	Oct	4	1:00	0	-
+ Rule	Finland	1981	1982	-	Mar	lastSun	2:00	1:00	S
+ Rule	Finland	1981	1982	-	Sep	lastSun	3:00	0	-
++
++# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document);
++# round to nearest.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Helsinki	1:39:52 -	LMT	1878 May 31
+-			1:39:52	-	HMT	1921 May    # Helsinki Mean Time
++Zone	Europe/Helsinki	1:39:49 -	LMT	1878 May 31
++			1:39:49	-	HMT	1921 May    # Helsinki Mean Time
+ 			2:00	Finland	EE%sT	1983
+ 			2:00	EU	EE%sT
+ 
+-# Aaland Is
++# Åland Is
+ Link	Europe/Helsinki	Europe/Mariehamn
+ 
+ 
+@@ -1140,14 +1173,14 @@
+ 
+ # From Ciro Discepolo (2000-12-20):
+ #
+-# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
++# Henri Le Corre, Régimes horaires pour le monde entier, Éditions
+ # Traditionnelles - Paris 2 books, 1993
+ #
+-# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
++# Gabriel, Traité de l'heure dans le monde, Guy Trédaniel,
+ # Paris, 1991
+ #
+-# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
+-# Guy tredaniel, Paris 1987
++# Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
++# Guy Trédaniel, Paris 1987
+ 
+ 
+ #
+@@ -1188,16 +1221,16 @@
+ Rule	France	1940	only	-	Feb	25	 2:00	1:00	S
+ # The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
+ # write that they were used in Monaco and in many French locations.
+-# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
+-# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
+-# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
++# Le Corre writes that the upper limit of the free zone was Arnéguy, Orthez,
++# Mont-de-Marsan, Bazas, Langon, Lamothe-Montravel, Marœuil, La
++# Rochefoucauld, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
+ # Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
+-# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
++# Paray-le-Monial, Montceau-les-Mines, Chalon-sur-Saône, Arbois,
+ # Dole, Morez, St-Claude, and Collonges (Haute-Savoie).
+ Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
+ # Shanks & Pottenger say this transition occurred at Oct 6 1:00,
+ # but go with Denis Excoffier (1997-12-12),
+-# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
++# who quotes the Ephémérides astronomiques for 1998 from Bureau des Longitudes
+ # as saying 5/10/41 22hUT.
+ Rule	France	1941	only	-	Oct	 6	 0:00	1:00	S
+ Rule	France	1942	only	-	Mar	 9	 0:00	2:00	M
+@@ -1218,7 +1251,7 @@
+ # on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
+-			0:09:21	-	PMT	1911 Mar 11  0:01  # Paris MT
++			0:09:21	-	PMT	1911 Mar 11  0:01 # Paris MT
+ # Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+ 			0:00	France	WE%sT	1940 Jun 14 23:00
+ # Le Corre says Paris stuck with occupied-France time after the liberation;
+@@ -1235,15 +1268,13 @@
+ # Bundesanstalt contains DST information back to 1916.
+ # [See tz-link.htm for the URL.]
+ 
+-# From Joerg Schilling (2002-10-23):
++# From Jörg Schilling (2002-10-23):
+ # In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
+-# 
+-# General [Nikolai] Bersarin.
++# http://www.dhm.de/lemo/html/biografien/BersarinNikolai/
++# General [Nikolai] Bersarin.
+ 
+ # From Paul Eggert (2003-03-08):
+-# 
+ # http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf
+-# 
+ # says that Bersarin issued an order to use Moscow time on May 20.
+ # However, Moscow did not observe daylight saving in 1945, so
+ # this was equivalent to CEMT (GMT+3), not GMT+4.
+@@ -1268,23 +1299,23 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
+-			1:00	C-Eur	CE%sT	1945 May 24 2:00
++			1:00	C-Eur	CE%sT	1945 May 24  2:00
+ 			1:00 SovietZone	CE%sT	1946
+ 			1:00	Germany	CE%sT	1980
+ 			1:00	EU	CE%sT
+ 
+ # From Tobias Conradi (2011-09-12):
+-# Busingen , surrounded by the Swiss canton
++# Büsingen , surrounded by the Swiss canton
+ # Schaffhausen, did not start observing DST in 1980 as the rest of DE
+ # (West Germany at that time) and DD (East Germany at that time) did.
+ # DD merged into DE, the area is currently covered by code DE in ISO 3166-1,
+ # which in turn is covered by the zone Europe/Berlin.
+ #
+-# Source for the time in Busingen 1980:
++# Source for the time in Büsingen 1980:
+ # http://www.srf.ch/player/video?id=c012c029-03b7-4c2b-9164-aa5902cd58d3
+ 
+ # From Arthur David Olson (2012-03-03):
+-# Busingen and Zurich have shared clocks since 1970.
++# Büsingen and Zurich have shared clocks since 1970.
+ 
+ Link	Europe/Zurich	Europe/Busingen
+ 
+@@ -1295,8 +1326,8 @@
+ 
+ # Gibraltar
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2 0:00s
+-			0:00	GB-Eire	%s	1957 Apr 14 2:00
++Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2  0:00s
++			0:00	GB-Eire	%s	1957 Apr 14  2:00
+ 			1:00	-	CET	1982
+ 			1:00	EU	CE%sT
+ 
+@@ -1327,7 +1358,7 @@
+ Rule	Greece	1980	only	-	Sep	28	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Athens	1:34:52 -	LMT	1895 Sep 14
+-			1:34:52	-	AMT	1916 Jul 28 0:01     # Athens MT
++			1:34:52	-	AMT	1916 Jul 28  0:01 # Athens MT
+ 			2:00	Greece	EE%sT	1941 Apr 30
+ 			1:00	Greece	CE%sT	1944 Apr  4
+ 			2:00	Greece	EE%sT	1981
+@@ -1336,15 +1367,20 @@
+ 			2:00	EU	EE%sT
+ 
+ # Hungary
++# From Paul Eggert (2014-07-15):
++# Dates for 1916-1945 are taken from:
++# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
++# National Archives of Hungary (2012-10-29).
++# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
++# This source does not always give times, which are taken from Shanks
++# & Pottenger (which disagree about the dates).
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Hungary	1918	only	-	Apr	 1	 3:00	1:00	S
+-Rule	Hungary	1918	only	-	Sep	29	 3:00	0	-
++Rule	Hungary	1918	only	-	Sep	16	 3:00	0	-
+ Rule	Hungary	1919	only	-	Apr	15	 3:00	1:00	S
+-Rule	Hungary	1919	only	-	Sep	15	 3:00	0	-
+-Rule	Hungary	1920	only	-	Apr	 5	 3:00	1:00	S
+-Rule	Hungary	1920	only	-	Sep	30	 3:00	0	-
++Rule	Hungary	1919	only	-	Nov	24	 3:00	0	-
+ Rule	Hungary	1945	only	-	May	 1	23:00	1:00	S
+-Rule	Hungary	1945	only	-	Nov	 3	 0:00	0	-
++Rule	Hungary	1945	only	-	Nov	 1	 0:00	0	-
+ Rule	Hungary	1946	only	-	Mar	31	 2:00s	1:00	S
+ Rule	Hungary	1946	1949	-	Oct	Sun>=1	 2:00s	0	-
+ Rule	Hungary	1947	1949	-	Apr	Sun>=4	 2:00s	1:00	S
+@@ -1360,7 +1396,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
+ 			1:00	C-Eur	CE%sT	1918
+-			1:00	Hungary	CE%sT	1941 Apr  6  2:00
++			1:00	Hungary	CE%sT	1941 Apr  8
+ 			1:00	C-Eur	CE%sT	1945
+ 			1:00	Hungary	CE%sT	1980 Sep 28  2:00s
+ 			1:00	EU	CE%sT
+@@ -1423,7 +1459,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
+ 			-1:27:48 -	RMT	1908 # Reykjavik Mean Time?
+-			-1:00	Iceland	IS%sT	1968 Apr 7 1:00s
++			-1:00	Iceland	IS%sT	1968 Apr  7  1:00s
+ 			 0:00	-	GMT
+ 
+ # Italy
+@@ -1438,9 +1474,8 @@
+ # From Paul Eggert (2006-03-22):
+ # For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
+ # F. Pollastri
+-# 
+ # Day-light Saving Time in Italy (2006-02-03)
+-# 
++# http://toi.iriti.cnr.it/uk/ienitlt.html
+ # ('FP' below), taken from an Italian National Electrotechnical Institute
+ # publication. When the three sources disagree, guess who's right, as follows:
+ #
+@@ -1500,8 +1535,8 @@
+ Rule	Italy	1979	only	-	Sep	30	0:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Rome	0:49:56 -	LMT	1866 Sep 22
+-			0:49:56	-	RMT	1893 Nov  1 0:00s # Rome Mean
+-			1:00	Italy	CE%sT	1942 Nov  2 2:00s
++			0:49:56	-	RMT	1893 Nov  1  0:00s # Rome Mean
++			1:00	Italy	CE%sT	1942 Nov  2  2:00s
+ 			1:00	C-Eur	CE%sT	1944 Jul
+ 			1:00	Italy	CE%sT	1980
+ 			1:00	EU	CE%sT
+@@ -1548,18 +1583,18 @@
+ 
+ # From Andrei Ivanov (2000-03-06):
+ # This year Latvia will not switch to Daylight Savings Time (as specified in
+-# 
+ # The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
+-# 29-Feb-2000 (#79), in Latvian for subscribers only).
++# 29-Feb-2000 (#79) ,
++# in Latvian for subscribers only).
+ 
+-# 
+-# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
+-# 
++# From RFE/RL Newsline
++# http://www.rferl.org/newsline/2001/01/3-CEE/cee-030101.html
++# (2001-01-03), noted after a heads-up by Rives McDow:
+ # The Latvian government on 2 January decided that the country will
+ # institute daylight-saving time this spring, LETA reported.
+ # Last February the three Baltic states decided not to turn back their
+ # clocks one hour in the spring....
+-# Minister of Economy Aigars Kalvitis noted that Latvia had too few
++# Minister of Economy Aigars Kalvītis noted that Latvia had too few
+ # daylight hours and thus decided to comply with a draft European
+ # Commission directive that provides for instituting daylight-saving
+ # time in EU countries between 2002 and 2006. The Latvian government
+@@ -1569,18 +1604,23 @@
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Latvia	1989	1996	-	Mar	lastSun	 2:00s	1:00	S
+ Rule	Latvia	1989	1996	-	Sep	lastSun	 2:00s	0	-
++
++# Milne 1899 says Riga was 1:36:28 (Polytechnique House time).
++# Byalokoz 1919 says Latvia was 1:36:34.
++# Go with Byalokoz.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Riga	1:36:24	-	LMT	1880
+-			1:36:24	-	RMT	1918 Apr 15 2:00 #Riga Mean Time
+-			1:36:24	1:00	LST	1918 Sep 16 3:00 #Latvian Summer
+-			1:36:24	-	RMT	1919 Apr  1 2:00
+-			1:36:24	1:00	LST	1919 May 22 3:00
+-			1:36:24	-	RMT	1926 May 11
++Zone	Europe/Riga	1:36:34	-	LMT	1880
++			1:36:34	-	RMT	1918 Apr 15  2:00 # Riga MT
++			1:36:34	1:00	LST	1918 Sep 16  3:00 # Latvian ST
++			1:36:34	-	RMT	1919 Apr  1  2:00
++			1:36:34	1:00	LST	1919 May 22  3:00
++			1:36:34	-	RMT	1926 May 11
+ 			2:00	-	EET	1940 Aug  5
+ 			3:00	-	MSK	1941 Jul
+ 			1:00	C-Eur	CE%sT	1944 Oct 13
+-			3:00	Russia	MSK/MSD	1989 Mar lastSun 2:00s
+-			2:00	1:00	EEST	1989 Sep lastSun 2:00s
++			3:00	Russia	MSK/MSD	1989 Mar lastSun  2:00s
++			2:00	1:00	EEST	1989 Sep lastSun  2:00s
+ 			2:00	Latvia	EE%sT	1997 Jan 21
+ 			2:00	EU	EE%sT	2000 Feb 29
+ 			2:00	-	EET	2001 Jan  2
+@@ -1614,7 +1654,7 @@
+ # I would like to inform that in this year Lithuanian time zone
+ # (Europe/Vilnius) was changed.
+ 
+-# From ELTA No. 972 (2582) (1999-09-29),
++# From ELTA No. 972 (2582) (1999-09-29) ,
+ # via Steffen Thorsen:
+ # Lithuania has shifted back to the second time zone (GMT plus two hours)
+ # to be valid here starting from October 31,
+@@ -1623,9 +1663,9 @@
+ # motion to give up shifting to summer time in spring, as it was
+ # already done by Estonia.
+ 
+-# From the 
+-# Fact File, Lithuanian State Department of Tourism
+-#  (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
++# From the Fact File, Lithuanian State Department of Tourism
++#  (2000-03-27):
++# Local time is GMT+2 hours ..., no daylight saving.
+ 
+ # From a user via Klaus Marten (2003-02-07):
+ # As a candidate for membership of the European Union, Lithuania will
+@@ -1638,18 +1678,18 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Vilnius	1:41:16	-	LMT	1880
+-			1:24:00	-	WMT	1917	    # Warsaw Mean Time
++			1:24:00	-	WMT	1917        # Warsaw Mean Time
+ 			1:35:36	-	KMT	1919 Oct 10 # Kaunas Mean Time
+ 			1:00	-	CET	1920 Jul 12
+ 			2:00	-	EET	1920 Oct  9
+ 			1:00	-	CET	1940 Aug  3
+ 			3:00	-	MSK	1941 Jun 24
+ 			1:00	C-Eur	CE%sT	1944 Aug
+-			3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			2:00	1:00	EEST	1991 Sep 29 2:00s
++			3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			2:00	1:00	EEST	1991 Sep 29  2:00s
+ 			2:00	C-Eur	EE%sT	1998
+-			2:00	-	EET	1998 Mar 29 1:00u
+-			1:00	EU	CE%sT	1999 Oct 31 1:00u
++			2:00	-	EET	1998 Mar 29  1:00u
++			1:00	EU	CE%sT	1999 Oct 31  1:00u
+ 			2:00	-	EET	2003 Jan  1
+ 			2:00	EU	EE%sT
+ 
+@@ -1683,9 +1723,9 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
+ 			1:00	Lux	CE%sT	1918 Nov 25
+-			0:00	Lux	WE%sT	1929 Oct  6 2:00s
+-			0:00	Belgium	WE%sT	1940 May 14 3:00
+-			1:00	C-Eur	WE%sT	1944 Sep 18 3:00
++			0:00	Lux	WE%sT	1929 Oct  6  2:00s
++			0:00	Belgium	WE%sT	1940 May 14  3:00
++			1:00	C-Eur	WE%sT	1944 Sep 18  3:00
+ 			1:00	Belgium	CE%sT	1977
+ 			1:00	EU	CE%sT
+ 
+@@ -1702,9 +1742,9 @@
+ Rule	Malta	1975	1980	-	Sep	Sun>=15	2:00	0	-
+ Rule	Malta	1980	only	-	Mar	31	2:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2 0:00s # Valletta
+-			1:00	Italy	CE%sT	1942 Nov  2 2:00s
+-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
++Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2  0:00s # Valletta
++			1:00	Italy	CE%sT	1942 Nov  2  2:00s
++			1:00	C-Eur	CE%sT	1945 Apr  2  2:00s
+ 			1:00	Italy	CE%sT	1973 Mar 31
+ 			1:00	Malta	CE%sT	1981
+ 			1:00	EU	CE%sT
+@@ -1719,7 +1759,7 @@
+ # In early 1992 there was large-scale interethnic violence in the area
+ # and it's possible that some Russophones continued to observe Moscow time.
+ # But [two people] separately reported via
+-# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
++# Jesper Nørgaard that as of 2001-01-24 Tiraspol was like Chisinau.
+ # The Tiraspol entry has therefore been removed for now.
+ #
+ # From Alexander Krivenyshev (2011-10-17):
+@@ -1728,13 +1768,8 @@
+ # to the Winter Time).
+ #
+ # News (in Russian):
+-# 
+ # http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html
+-# 
+-#
+-# 
+ # http://www.allmoldova.com/moldova-news/1249064116.html
+-# 
+ #
+ # The substance of this change (reinstatement of the Tiraspol entry)
+ # is from a patch from Petr Machata (2011-10-17)
+@@ -1752,9 +1787,7 @@
+ # Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
+ # Tiraspol will go back to winter time on October 30, 2011.
+ # News from Moldova (in russian):
+-# 
+ # http://ru.publika.md/link_317061.html
+-# 
+ 
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -1777,8 +1810,8 @@
+ # more precise 0:09:21.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
+-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
+-			0:00	France	WE%sT	1945 Sep 16 3:00
++			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
++			0:00	France	WE%sT	1945 Sep 16  3:00
+ 			1:00	France	CE%sT	1977
+ 			1:00	EU	CE%sT
+ 
+@@ -1822,8 +1855,8 @@
+ # was not until 1866 when they were all required by law to observe
+ # Amsterdam mean time.
+ 
+-# The data before 1945 are taken from
+-# .
++# The data entries before 1945 are taken from
++# http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Neth	1916	only	-	May	 1	0:00	1:00	NST	# Netherlands Summer Time
+@@ -1854,8 +1887,8 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Amsterdam	0:19:32 -	LMT	1835
+ 			0:19:32	Neth	%s	1937 Jul  1
+-			0:20	Neth	NE%sT	1940 May 16 0:00 # Dutch Time
+-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00
++			0:20	Neth	NE%sT	1940 May 16  0:00 # Dutch Time
++			1:00	C-Eur	CE%sT	1945 Apr  2  2:00
+ 			1:00	Neth	CE%sT	1977
+ 			1:00	EU	CE%sT
+ 
+@@ -1885,14 +1918,14 @@
+ # time they were declared as parts of Norway.  Svalbard was declared
+ # as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
+ # Mayen by law of 1930-02-27 no 2, section 2. (From
+-# http://www.lovdata.no/all/nl-19250717-011.html and
+-# http://www.lovdata.no/all/nl-19300227-002.html).  The law/regulation
++#  and
++# ).  The law/regulation
+ # for normal/standard time in Norway is from 1894-06-29 no 1 (came
+ # into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
+ # part of this law since 1925/1930. (From
+-# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
++# ) I have not been
+ # able to find if Jan Mayen used a different time zone (e.g. -0100)
+-# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
++# before 1930. Jan Mayen has only been "inhabited" since 1921 by
+ # Norwegian meteorologists and maybe used the same time as Norway ever
+ # since 1921.  Svalbard (Arctic/Longyearbyen) has been inhabited since
+ # before 1895, and therefore probably changed the local time somewhere
+@@ -1907,7 +1940,7 @@
+ #  says that the meteorologists
+ # burned down their station in 1940 and left the island, but returned in
+ # 1941 with a small Norwegian garrison and continued operations despite
+-# frequent air ttacks from Germans.  In 1943 the Americans established a
++# frequent air attacks from Germans.  In 1943 the Americans established a
+ # radiolocating station on the island, called "Atlantic City".  Possibly
+ # the UT offset changed during the war, but I think it unlikely that
+ # Jan Mayen used German daylight-saving rules.
+@@ -1918,7 +1951,7 @@
+ #  says that the Germans were
+ # expelled on 1942-05-14.  However, small parties of Germans did return,
+ # and according to Wilhelm Dege's book "War North of 80" (1954)
+-# 
++# http://www.ucalgary.ca/UofC/departments/UP/1-55238/1-55238-110-2.html
+ # the German armed forces at the Svalbard weather station code-named
+ # Haudegen did not surrender to the Allies until September 1945.
+ #
+@@ -1927,6 +1960,10 @@
+ Link	Europe/Oslo	Arctic/Longyearbyen
+ 
+ # Poland
++
++# The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
++#  pp 1-2.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Poland	1918	1919	-	Sep	16	2:00s	0	-
+ Rule	Poland	1919	only	-	Apr	15	2:00s	1:00	S
+@@ -1937,9 +1974,9 @@
+ Rule	Poland	1945	only	-	Apr	29	0:00	1:00	S
+ Rule	Poland	1945	only	-	Nov	 1	0:00	0	-
+ # For 1946 on the source is Kazimierz Borkowski,
+-# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
+-# 
+-# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
++# Toruń Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
++# http://www.astro.uni.torun.pl/~kb/Artykuly/U-PA/Czas2.htm#tth_tAb1
++# Thanks to Przemysław Augustyniak (2005-05-28) for this reference.
+ # He also gives these further references:
+ # Mon Pol nr 13, poz 162 (1995) 
+ # Druk nr 2180 (2003) 
+@@ -1959,10 +1996,10 @@
+ Rule	Poland	1962	1964	-	Sep	lastSun	1:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Warsaw	1:24:00 -	LMT	1880
+-			1:24:00	-	WMT	1915 Aug  5   # Warsaw Mean Time
+-			1:00	C-Eur	CE%sT	1918 Sep 16 3:00
++			1:24:00	-	WMT	1915 Aug  5 # Warsaw Mean Time
++			1:00	C-Eur	CE%sT	1918 Sep 16  3:00
+ 			2:00	Poland	EE%sT	1922 Jun
+-			1:00	Poland	CE%sT	1940 Jun 23 2:00
++			1:00	Poland	CE%sT	1940 Jun 23  2:00
+ 			1:00	C-Eur	CE%sT	1944 Oct
+ 			1:00	Poland	CE%sT	1977
+ 			1:00	W-Eur	CE%sT	1988
+@@ -1970,6 +2007,14 @@
+ 
+ # Portugal
+ #
++# From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne:
++# According to a Portuguese decree (1911-05-26)
++# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
++# Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00.
++# Round the old offset to -0:36:45.  This agrees with Willett but disagrees
++# with Shanks, who says the transition occurred on 1911-05-24 at 00:00 for
++# Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira.
++#
+ # From Rui Pedro Salgueiro (1992-11-12):
+ # Portugal has recently (September, 27) changed timezone
+ # (from WET to MET or CET) to harmonize with EEC.
+@@ -2049,35 +2094,34 @@
+ Rule	Port	1980	only	-	Mar	lastSun	 0:00s	1:00	S
+ Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
+ Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
+-# Willett says 1912-01-01.  Go with Willett.
+-Zone	Europe/Lisbon	-0:36:32 -	LMT	1884
+-			-0:36:32 -	LMT	1912 Jan  1  # Lisbon Mean Time
+-			 0:00	Port	WE%sT	1966 Apr  3 2:00
+-			 1:00	-	CET	1976 Sep 26 1:00
+-			 0:00	Port	WE%sT	1983 Sep 25 1:00s
+-			 0:00	W-Eur	WE%sT	1992 Sep 27 1:00s
+-			 1:00	EU	CE%sT	1996 Mar 31 1:00u
++Zone	Europe/Lisbon	-0:36:45 -	LMT	1884
++			-0:36:45 -	LMT	1912 Jan  1 # Lisbon Mean Time
++			 0:00	Port	WE%sT	1966 Apr  3  2:00
++			 1:00	-	CET	1976 Sep 26  1:00
++			 0:00	Port	WE%sT	1983 Sep 25  1:00s
++			 0:00	W-Eur	WE%sT	1992 Sep 27  1:00s
++			 1:00	EU	CE%sT	1996 Mar 31  1:00u
+ 			 0:00	EU	WE%sT
+-Zone Atlantic/Azores	-1:42:40 -	LMT	1884		# Ponta Delgada
+-			-1:54:32 -	HMT	1911 May 24  # Horta Mean Time
+-			-2:00	Port	AZO%sT	1966 Apr  3 2:00 # Azores Time
+-			-1:00	Port	AZO%sT	1983 Sep 25 1:00s
+-			-1:00	W-Eur	AZO%sT	1992 Sep 27 1:00s
+-			 0:00	EU	WE%sT	1993 Mar 28 1:00u
++Zone Atlantic/Azores	-1:42:40 -	LMT	1884        # Ponta Delgada
++			-1:54:32 -	HMT	1912 Jan  1 # Horta Mean Time
++			-2:00	Port	AZO%sT	1966 Apr  3  2:00  # Azores Time
++			-1:00	Port	AZO%sT	1983 Sep 25  1:00s
++			-1:00	W-Eur	AZO%sT	1992 Sep 27  1:00s
++			 0:00	EU	WE%sT	1993 Mar 28  1:00u
+ 			-1:00	EU	AZO%sT
+-Zone Atlantic/Madeira	-1:07:36 -	LMT	1884		# Funchal
+-			-1:07:36 -	FMT	1911 May 24  # Funchal Mean Time
+-			-1:00	Port	MAD%sT	1966 Apr  3 2:00 # Madeira Time
+-			 0:00	Port	WE%sT	1983 Sep 25 1:00s
++Zone Atlantic/Madeira	-1:07:36 -	LMT	1884        # Funchal
++			-1:07:36 -	FMT	1912 Jan  1 # Funchal Mean Time
++			-1:00	Port	MAD%sT	1966 Apr  3  2:00 # Madeira Time
++			 0:00	Port	WE%sT	1983 Sep 25  1:00s
+ 			 0:00	EU	WE%sT
+ 
+ # Romania
+ #
+ # From Paul Eggert (1999-10-07):
+-# 
+-# Nine O'clock (1998-10-23) reports that the switch occurred at
++# Nine O'clock 
++# (1998-10-23) reports that the switch occurred at
+ # 04:00 local time in fall 1998.  For lack of better info,
+ # assume that Romania and Moldova switched to EU rules in 1997,
+ # the same year as Bulgaria.
+@@ -2094,32 +2138,28 @@
+ Rule	Romania	1991	1993	-	Sep	lastSun	 0:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
+-			1:44:24	-	BMT	1931 Jul 24	# Bucharest MT
+-			2:00	Romania	EE%sT	1981 Mar 29 2:00s
++			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
++			2:00	Romania	EE%sT	1981 Mar 29  2:00s
+ 			2:00	C-Eur	EE%sT	1991
+ 			2:00	Romania	EE%sT	1994
+ 			2:00	E-Eur	EE%sT	1997
+ 			2:00	EU	EE%sT
+ 
++
+ # Russia
+ 
+ # From Alexander Krivenyshev (2011-09-15):
+ # Based on last Russian Government Decree # 725 on August 31, 2011
+ # (Government document
+-# 
+ # http://www.government.ru/gov/results/16355/print/
+-# 
+ # in Russian)
+ # there are few corrections have to be made for some Russian time zones...
+ # All updated Russian Time Zones were placed in table and translated to English
+ # by WorldTimeZone.com at the link below:
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_russia36.htm
+-# 
+ 
+ # From Sanjeev Gupta (2011-09-27):
+ # Scans of [Decree #23 of January 8, 1992] are available at:
+-# 
+ # http://government.consultant.ru/page.aspx?1223966
+ # They are in Cyrillic letters (presumably Russian).
+ 
+@@ -2128,16 +2168,12 @@
+ # changed in September 2011:
+ #
+ # One source is
+-# < a href="http://government.ru/gov/results/16355/>
+ # http://government.ru/gov/results/16355/
+-# 
+ # which, according to translate.google.com, begins "Decree of August 31,
+ # 2011 No 725" and contains no other dates or "effective date" information.
+ #
+ # Another source is
+-# 
+ # http://www.rg.ru/2011/09/06/chas-zona-dok.html
+-# 
+ # which, according to translate.google.com, begins "Resolution of the
+ # Government of the Russian Federation on August 31, 2011 N 725" and also
+ # contains "Date first official publication: September 6, 2011 Posted on:
+@@ -2145,28 +2181,45 @@
+ # does not contain any "effective date" information.
+ #
+ # Another source is
+-# 
+ # http://en.wikipedia.org/wiki/Oymyakonsky_District#cite_note-RuTime-7
+-# 
+ # which, in note 8, contains "Resolution #725 of August 31, 2011...
+ # Effective as of after 7 days following the day of the official publication"
+ # but which does not contain any reference to September 6, 2011.
+ #
+ # The Wikipedia article refers to
+-# 
+ # http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=118896
+-# 
+ # which seems to copy the text of the government.ru page.
+ #
+ # Tobias Conradi combines Wikipedia's
+ # "as of after 7 days following the day of the official publication"
+-# with www.rg.ru's "Date of first official publication: September 6, 2011" to get
+-# September 13, 2011 as the cutover date (unusually, a Tuesday, as Tobias Conradi notes).
++# with www.rg.ru's "Date of first official publication: September 6, 2011" to
++# get September 13, 2011 as the cutover date (unusually, a Tuesday, as Tobias
++# Conradi notes).
+ #
+ # None of the sources indicates a time of day for changing clocks.
+ #
+ # Go with 2011-09-13 0:00s.
+ 
++# From Alexander Krivenyshev (2014-07-01):
++# According to the Russian news (ITAR-TASS News Agency)
++# http://en.itar-tass.com/russia/738562
++# the State Duma has approved ... the draft bill on returning to
++# winter time standard and return Russia 11 time zones.  The new
++# regulations will come into effect on October 26, 2014 at 02:00 ...
++# http://asozd2.duma.gov.ru/main.nsf/%28Spravka%29?OpenAgent&RN=431985-6&02
++# Here is a link where we put together table (based on approved Bill N
++# 431985-6) with proposed 11 Russian time zones and corresponding
++# areas/cities/administrative centers in the Russian Federation (in English):
++# http://www.worldtimezone.com/dst_news/dst_news_russia65.html
++#
++# From Alexander Krivenyshev (2014-07-22):
++# Putin signed the Federal Law 431985-6 ... (in Russian)
++# http://itar-tass.com/obschestvo/1333711
++# http://www.pravo.gov.ru:8080/page.aspx?111660
++# http://www.kremlin.ru/acts/46279
++# From October 26, 2014 the new Russian time zone map will looks like this:
++# http://www.worldtimezone.com/dst_news/dst_news_russia-map-2014-07.html
++
+ # From Paul Eggert (2006-03-22):
+ # Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
+ # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
+@@ -2193,9 +2246,9 @@
+ #
+ # For Grozny, Chechnya, we have the following story from
+ # John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
+-# News--often false--is spread by word of mouth.  A rumor that it was
++# News - often false - is spread by word of mouth.  A rumor that it was
+ # time to move the clocks back put this whole city out of sync with
+-# the rest of Russia for two weeks--even soldiers stationed here began
++# the rest of Russia for two weeks - even soldiers stationed here began
+ # enforcing curfew at the wrong time.
+ #
+ # From Gwillim Law (2001-06-05):
+@@ -2206,107 +2259,265 @@
+ # since September 1997....  Although the Kuril Islands are
+ # administratively part of Sakhalin oblast', they appear to have
+ # remained on UTC+11 along with Magadan.
+-#
++
++# From Tim Parenti (2014-07-06):
++# The comments detailing the coverage of each Russian zone are meant to assist
++# with maintenance only and represent our best guesses as to which regions
++# are covered by each zone.  They are not meant to be taken as an authoritative
++# listing.  The region codes listed come from
++# http://en.wikipedia.org/w/?title=Federal_subjects_of_Russia&oldid=611810498
++# and are used for convenience only; no guarantees are made regarding their
++# future stability.  ISO 3166-2:RU codes are also listed for first-level
++# divisions where available.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-#
+-# Kaliningradskaya oblast'.
++
++
++# From Tim Parenti (2014-07-03):
++# Europe/Kaliningrad covers...
++# 39	RU-KGD	Kaliningrad Oblast
++
+ Zone Europe/Kaliningrad	 1:22:00 -	LMT	1893 Apr
+ 			 1:00	C-Eur	CE%sT	1945
+ 			 2:00	Poland	CE%sT	1946
+-			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
+-			 3:00	-	FET # Further-eastern European Time
++			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			 2:00	Russia	EE%sT	2011 Mar 27  2:00s
++			 3:00	-	FET	2014 Oct 26  2:00s
++			 2:00	-	EET
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Europe/Moscow covers...
++# 01	RU-AD	Adygea, Republic of
++# 05	RU-DA	Dagestan, Republic of
++# 06	RU-IN	Ingushetia, Republic of
++# 07	RU-KB	Kabardino-Balkar Republic
++# 08	RU-KL	Kalmykia, Republic of
++# 09	RU-KC	Karachay-Cherkess Republic
++# 10	RU-KR	Karelia, Republic of
++# 11	RU-KO	Komi Republic
++# 12	RU-ME	Mari El Republic
++# 13	RU-MO	Mordovia, Republic of
++# 15	RU-SE	North Ossetia-Alania, Republic of
++# 16	RU-TA	Tatarstan, Republic of
++# 20	RU-CE	Chechen Republic
++# 21	RU-CU	Chuvash Republic
++# 23	RU-KDA	Krasnodar Krai
++# 26	RU-STA	Stavropol Krai
++# 29	RU-ARK	Arkhangelsk Oblast
++# 31	RU-BEL	Belgorod Oblast
++# 32	RU-BRY	Bryansk Oblast
++# 33	RU-VLA	Vladimir Oblast
++# 35	RU-VLG	Vologda Oblast
++# 36	RU-VOR	Voronezh Oblast
++# 37	RU-IVA	Ivanovo Oblast
++# 40	RU-KLU	Kaluga Oblast
++# 44	RU-KOS	Kostroma Oblast
++# 46	RU-KRS	Kursk Oblast
++# 47	RU-LEN	Leningrad Oblast
++# 48	RU-LIP	Lipetsk Oblast
++# 50	RU-MOS	Moscow Oblast
++# 51	RU-MUR	Murmansk Oblast
++# 52	RU-NIZ	Nizhny Novgorod Oblast
++# 53	RU-NGR	Novgorod Oblast
++# 57	RU-ORL	Oryol Oblast
++# 58	RU-PNZ	Penza Oblast
++# 60	RU-PSK	Pskov Oblast
++# 61	RU-ROS	Rostov Oblast
++# 62	RU-RYA	Ryazan Oblast
++# 67	RU-SMO	Smolensk Oblast
++# 68	RU-TAM	Tambov Oblast
++# 69	RU-TVE	Tver Oblast
++# 71	RU-TUL	Tula Oblast
++# 73	RU-ULY	Ulyanovsk Oblast
++# 76	RU-YAR	Yaroslavl Oblast
++# 77	RU-MOW	Moscow
++# 78	RU-SPE	Saint Petersburg
++# 83	RU-NEN	Nenets Autonomous Okrug
++
++# From Vladimir Karpinsky (2014-07-08):
++# LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow
++# Observatory (coordinates: 55 deg. 45'29.70", 37 deg. 34'05.30")....
++# LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard.
++# (The info is from the book by Byalokoz ... p. 18.)
++# The time in St. Petersburg as capital of Russia was defined by
++# Pulkov observatory, near St. Petersburg.  In 1916 LMT Moscow
++# was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory
++# coordinates: 59 deg. 46'18.70", 30 deg. 19'40.70") so 30 deg. 19'40.70" >
++# 2h01m18.7s = 2:01:19.  LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 =
++# 2:31:19 ...
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Adygeya, Arkhangel'skaya oblast',
+-# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
+-# Vologodskaya oblast', Voronezhskaya oblast',
+-# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
+-# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
+-# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
+-# Respublika Kareliya, Respublika Komi,
+-# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
+-# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
+-# Respublika Mordoviya, Moskva, Moskovskaya oblast',
+-# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
+-# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
+-# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
+-# Ryazanskaya oblast', Sankt-Peterburg,
+-# Respublika Severnaya Osetiya, Smolenskaya oblast',
+-# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
+-# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
+-# Chechenskaya Respublika, Chuvashskaya oblast',
+-# Yaroslavskaya oblast'
+-Zone Europe/Moscow	 2:30:20 -	LMT	1880
+-			 2:30	-	MMT	1916 Jul  3 # Moscow Mean Time
+-			 2:30:48 Russia	%s	1919 Jul  1 2:00
++# From Paul Eggert (2014-07-08):
++# Milne does not list Moscow, but suggests that its time might be listed in
++# Résumés mensuels et annuels des observations météorologiques (1895).
++# Presumably this is OCLC 85825704, a journal published with parallel text in
++# Russian and French.  This source has not been located; go with Karpinsky.
++
++Zone Europe/Moscow	 2:30:17 -	LMT	1880
++			 2:30:17 -	MMT	1916 Jul  3 # Moscow Mean Time
++			 2:31:19 Russia	%s	1919 Jul  1  2:00
++			 3:00	Russia	%s	1921 Oct
+ 			 3:00	Russia	MSK/MSD	1922 Oct
+ 			 2:00	-	EET	1930 Jun 21
+-			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
+-			 3:00	Russia	MSK/MSD	2011 Mar 27 2:00s
+-			 4:00	-	MSK
++			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			 2:00	Russia	EE%sT	1992 Jan 19  2:00s
++			 3:00	Russia	MSK/MSD	2011 Mar 27  2:00s
++			 4:00	-	MSK	2014 Oct 26  2:00s
++			 3:00	-	MSK
++
++
++# From Tim Parenti (2014-07-03):
++# Europe/Simferopol covers...
++# **	****	Crimea, Republic of
++# **	****	Sevastopol
++
++Zone Europe/Simferopol	 2:16:24 -	LMT	1880
++			 2:16	-	SMT	1924 May  2 # Simferopol Mean T
++			 2:00	-	EET	1930 Jun 21
++			 3:00	-	MSK	1941 Nov
++			 1:00	C-Eur	CE%sT	1944 Apr 13
++			 3:00	Russia	MSK/MSD	1990
++			 3:00	-	MSK	1990 Jul  1  2:00
++			 2:00	-	EET	1992
++# Central Crimea used Moscow time 1994/1997.
+ #
+-# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
+-# Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
+-# but Wikipedia (2006-05-09) says +0300.  Perhaps it switched after the
+-# others?  But we have no data.
++# From Paul Eggert (2006-03-22):
++# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
++# from Kiev to Moscow time sometime after the January 1994 elections.
++# Shanks (1999) says "date of change uncertain", but implies that it happened
++# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
++# 1994-09-25 03:00, but that can't be right.  For now, guess it
++# changed in May.
++			 2:00	E-Eur	EE%sT	1994 May
++# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
++			 3:00	E-Eur	MSK/MSD	1996 Mar 31  3:00s
++			 3:00	1:00	MSD	1996 Oct 27  3:00s
++# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
++# Assume it happened in March by not changing the clocks.
++			 3:00	Russia	MSK/MSD	1997
++			 3:00	-	MSK	1997 Mar lastSun  1:00u
++# From Alexander Krivenyshev (2014-03-17):
++# time change at 2:00 (2am) on March 30, 2014
++# http://vz.ru/news/2014/3/17/677464.html
++# From Paul Eggert (2014-03-30):
++# Simferopol and Sevastopol reportedly changed their central town clocks
++# late the previous day, but this appears to have been ceremonial
++# and the discrepancies are small enough to not worry about.
++			 2:00	EU	EE%sT	2014 Mar 30  2:00
++			 4:00	-	MSK	2014 Oct 26  2:00s
++			 3:00	-	MSK
++
++
++# From Tim Parenti (2014-07-03):
++# Europe/Volgograd covers...
++# 30	RU-AST	Astrakhan Oblast
++# 34	RU-VGG	Volgograd Oblast
++# 43	RU-KIR	Kirov Oblast
++# 64	RU-SAR	Saratov Oblast
++
++# From Paul Eggert (2006-05-09):
++# Shanks & Pottenger say Kirov is still at +0400 but Wikipedia says +0300.
++# Perhaps it switched after the others?  But we have no data.
++
+ Zone Europe/Volgograd	 2:57:40 -	LMT	1920 Jan  3
+ 			 3:00	-	TSAT	1925 Apr  6 # Tsaritsyn Time
+ 			 3:00	-	STAT	1930 Jun 21 # Stalingrad Time
+ 			 4:00	-	STAT	1961 Nov 11
+-			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
+-			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
+-			 4:00	-	VOLT	1992 Mar 29 2:00s
+-			 3:00	Russia	VOL%sT	2011 Mar 27 2:00s
+-			 4:00	-	VOLT
+-#
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Samarskaya oblast', Udmyrtskaya respublika
+-Zone Europe/Samara	 3:20:36 -	LMT	1919 Jul  1 2:00
++			 4:00	Russia	VOL%sT	1989 Mar 26  2:00s # Volgograd T
++			 3:00	Russia	VOL%sT	1991 Mar 31  2:00s
++			 4:00	-	VOLT	1992 Mar 29  2:00s
++			 3:00	Russia	MSK	2011 Mar 27  2:00s
++			 4:00	-	MSK	2014 Oct 26  2:00s
++			 3:00	-	MSK
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Europe/Samara covers...
++# 18	RU-UD	Udmurt Republic
++# 63	RU-SAM	Samara Oblast
++
++# Byalokoz 1919 says Samara was 3:20:20.
++
++Zone Europe/Samara	 3:20:20 -	LMT	1919 Jul  1  2:00
+ 			 3:00	-	SAMT	1930 Jun 21
+ 			 4:00	-	SAMT	1935 Jan 27
+-			 4:00	Russia	KUY%sT	1989 Mar 26 2:00s # Kuybyshev
+-			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
+-			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
+-			 3:00	-	KUYT	1991 Oct 20 3:00
+-			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
+-			 3:00	Russia	SAM%sT	2011 Mar 27 2:00s
++			 4:00	Russia	KUY%sT	1989 Mar 26  2:00s # Kuybyshev
++			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
++			 2:00	Russia	EE%sT	1991 Sep 29  2:00s
++			 3:00	-	KUYT	1991 Oct 20  3:00
++			 4:00	Russia	SAM%sT	2010 Mar 28  2:00s # Samara Time
++			 3:00	Russia	SAM%sT	2011 Mar 27  2:00s
+ 			 4:00	-	SAMT
+ 
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Yekaterinburg covers...
++# 02	RU-BA	Bashkortostan, Republic of
++# 90	RU-PER	Perm Krai
++# 45	RU-KGN	Kurgan Oblast
++# 56	RU-ORE	Orenburg Oblast
++# 66	RU-SVE	Sverdlovsk Oblast
++# 72	RU-TYU	Tyumen Oblast
++# 74	RU-CHE	Chelyabinsk Oblast
++# 86	RU-KHM	Khanty-Mansi Autonomous Okrug - Yugra
++# 89	RU-YAN	Yamalo-Nenets Autonomous Okrug
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
+-# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
+-# Sverdlovskaya oblast', Tyumenskaya oblast',
+-# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
+-# Yamalo-Nenetskij avtonomnyj okrug.
+-Zone Asia/Yekaterinburg	 4:02:24 -	LMT	1919 Jul 15 4:00
++# Note: Effective 2005-12-01, (59) Perm Oblast and (81) Komi-Permyak
++# Autonomous Okrug merged to form (90, RU-PER) Perm Krai.
++
++# Milne says Yekaterinburg was 4:02:32.9; round to nearest.
++# Byalokoz 1919 says its provincial time was based on Perm, at 3:45:05.
++# Assume it switched on 1916-07-03, the time of the new standard.
++# The 1919 and 1930 transitions are from Shanks.
++
++Zone Asia/Yekaterinburg	 4:02:33 -	LMT	1916 Jul  3
++			 3:45:05 -	PMT	1919 Jul 15  4:00
+ 			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
+-			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
+-			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
+-			 5:00	Russia	YEK%sT	2011 Mar 27 2:00s
+-			 6:00	-	YEKT	# Yekaterinburg Time
+-#
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
+-Zone Asia/Omsk		 4:53:36 -	LMT	1919 Nov 14
+-			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
+-			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
+-			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
+-			 6:00	Russia	OMS%sT	2011 Mar 27 2:00s
+-			 7:00	-	OMST
+-#
++			 5:00	Russia	SVE%sT	1991 Mar 31  2:00s
++			 4:00	Russia	SVE%sT	1992 Jan 19  2:00s
++			 5:00	Russia	YEK%sT	2011 Mar 27  2:00s
++			 6:00	-	YEKT	2014 Oct 26  2:00s
++			 5:00	-	YEKT
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Omsk covers...
++# 04	RU-AL	Altai Republic
++# 22	RU-ALT	Altai Krai
++# 55	RU-OMS	Omsk Oblast
++
++# Byalokoz 1919 says Omsk was 4:53:30.
++
++Zone Asia/Omsk		 4:53:30 -	LMT	1919 Nov 14
++			 5:00	-	OMST	1930 Jun 21 # Omsk Time
++			 6:00	Russia	OMS%sT	1991 Mar 31  2:00s
++			 5:00	Russia	OMS%sT	1992 Jan 19  2:00s
++			 6:00	Russia	OMS%sT	2011 Mar 27  2:00s
++			 7:00	-	OMST	2014 Oct 26  2:00s
++			 6:00	-	OMST
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Novosibirsk covers...
++# 54	RU-NVS	Novosibirsk Oblast
++# 70	RU-TOM	Tomsk Oblast
++
+ # From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
+ # not clear when it switched from +7 to +6.
+-# Novosibirskaya oblast', Tomskaya oblast'.
+-Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14 6:00
++
++Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14  6:00
+ 			 6:00	-	NOVT	1930 Jun 21 # Novosibirsk Time
+-			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
+-			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
++			 7:00	Russia	NOV%sT	1991 Mar 31  2:00s
++			 6:00	Russia	NOV%sT	1992 Jan 19  2:00s
+ 			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
+-			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+-			 7:00	-	NOVT
++			 6:00	Russia	NOV%sT	2011 Mar 27  2:00s
++			 7:00	-	NOVT	2014 Oct 26  2:00s
++			 6:00	-	NOVT
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Novokuznetsk covers...
++# 42	RU-KEM	Kemerovo Oblast
+ 
+ # From Alexander Krivenyshev (2009-10-13):
+ # Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
+@@ -2319,14 +2530,10 @@
+ # time zone." ("Russia Zone 5" or old "USSR Zone 5" is GMT +0600)
+ #
+ # Russian Government web site (Russian language)
+-# 
+ # http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2009/09/14/991633.htm
+-# 
+ # or Russian-English translation by WorldTimeZone.com with reference
+ # map to local region and new Russia Time Zone map after March 28, 2010
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_russia03.html
+-# 
+ #
+ # Thus, when Russia will switch to DST on the night of March 28, 2010
+ # Kemerovo region (Kemerovo oblast') will not change the clock.
+@@ -2334,152 +2541,319 @@
+ # As a result, Kemerovo oblast' will be in the same time zone as
+ # Novosibirsk, Omsk, Tomsk, Barnaul and Altai Republic.
+ 
+-Zone Asia/Novokuznetsk	 5:48:48 -	NMT	1920 Jan  6
++# From Tim Parenti (2014-07-02), per Alexander Krivenyshev (2014-07-02):
++# The Kemerovo region will remain at UTC+7 through the 2014-10-26 change, thus
++# realigning itself with KRAT.
++
++Zone Asia/Novokuznetsk	 5:48:48 -	LMT	1924 May  1
+ 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+-			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+-			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+-			 7:00	Russia	KRA%sT	2010 Mar 28 2:00s
+-			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+-			 7:00	-	NOVT # Novosibirsk/Novokuznetsk Time
++			 7:00	Russia	KRA%sT	1991 Mar 31  2:00s
++			 6:00	Russia	KRA%sT	1992 Jan 19  2:00s
++			 7:00	Russia	KRA%sT	2010 Mar 28  2:00s
++			 6:00	Russia	NOV%sT	2011 Mar 27  2:00s # Novosibirsk
++			 7:00	-	NOVT	2014 Oct 26  2:00s
++			 7:00	-	KRAT	# Krasnoyarsk Time
+ 
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Krasnoyarsk covers...
++# 17	RU-TY	Tuva Republic
++# 19	RU-KK	Khakassia, Republic of
++# 24	RU-KYA	Krasnoyarsk Krai
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Krasnoyarskij kraj,
+-# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
+-# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
+-Zone Asia/Krasnoyarsk	 6:11:20 -	LMT	1920 Jan  6
++# Note: Effective 2007-01-01, (88) Evenk Autonomous Okrug and (84) Taymyr
++# Autonomous Okrug were merged into (24, RU-KYA) Krasnoyarsk Krai.
++
++# Byalokoz 1919 says Krasnoyarsk was 6:11:26.
++
++Zone Asia/Krasnoyarsk	 6:11:26 -	LMT	1920 Jan  6
+ 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+-			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+-			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+-			 7:00	Russia	KRA%sT	2011 Mar 27 2:00s
+-			 8:00	-	KRAT
++			 7:00	Russia	KRA%sT	1991 Mar 31  2:00s
++			 6:00	Russia	KRA%sT	1992 Jan 19  2:00s
++			 7:00	Russia	KRA%sT	2011 Mar 27  2:00s
++			 8:00	-	KRAT	2014 Oct 26  2:00s
++			 7:00	-	KRAT
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Irkutsk covers...
++# 03	RU-BU	Buryatia, Republic of
++# 38	RU-IRK	Irkutsk Oblast
+ #
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Respublika Buryatiya, Irkutskaya oblast',
+-# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
+-Zone Asia/Irkutsk	 6:57:20 -	LMT	1880
+-			 6:57:20 -	IMT	1920 Jan 25 # Irkutsk Mean Time
++# Note: Effective 2008-01-01, (85) Ust-Orda Buryat Autonomous Okrug was
++# merged into (38, RU-IRK) Irkutsk Oblast.
++
++# Milne 1899 says Irkutsk was 6:57:15.
++# Byalokoz 1919 says Irkutsk was 6:57:05.
++# Go with Byalokoz.
++
++Zone Asia/Irkutsk	 6:57:05 -	LMT	1880
++			 6:57:05 -	IMT	1920 Jan 25 # Irkutsk Mean Time
+ 			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
+-			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
+-			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
+-			 8:00	Russia	IRK%sT	2011 Mar 27 2:00s
+-			 9:00	-	IRKT
++			 8:00	Russia	IRK%sT	1991 Mar 31  2:00s
++			 7:00	Russia	IRK%sT	1992 Jan 19  2:00s
++			 8:00	Russia	IRK%sT	2011 Mar 27  2:00s
++			 9:00	-	IRKT	2014 Oct 26  2:00s
++			 8:00	-	IRKT
++
++
++# From Tim Parenti (2014-07-06):
++# Asia/Chita covers...
++# 92	RU-ZAB	Zabaykalsky Krai
+ #
+-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+-# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
+-# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
++# Note: Effective 2008-03-01, (75) Chita Oblast and (80) Agin-Buryat
++# Autonomous Okrug merged to form (92, RU-ZAB) Zabaykalsky Krai.
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# ...some regions of [Russia] were merged with others since 2005...
+-# Some names were changed, no big deal, except for one instance: a new name.
+-# YAK/YAKST: UTC+9 Zabajkal'skij kraj.
++Zone Asia/Chita	 7:33:52 -	LMT	1919 Dec 15
++			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
++			 9:00	Russia	YAK%sT	1991 Mar 31  2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19  2:00s
++			 9:00	Russia	YAK%sT	2011 Mar 27  2:00s
++			10:00	-	YAKT	2014 Oct 26  2:00s
++			 8:00	-	IRKT
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
+-# Verkhnevilyujskij, Vilyujskij, Gornyj,
+-# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
+-# Namskij, Nyurbinskij, Olenyokskij, Olyokminskij,
+-# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
+-# Churapchinskij, Eveno-Bytantajskij Natsional'nij.
+ 
+-Zone Asia/Yakutsk	 8:38:40 -	LMT	1919 Dec 15
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
++# Asia/Yakutsk covers...
++# 28	RU-AMU	Amur Oblast
++#
++# ...and parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-02	****	Aldansky District
++# 14-04	****	Amginsky District
++# 14-05	****	Anabarsky District
++# 14-06	****	Bulunsky District
++# 14-07	****	Verkhnevilyuysky District
++# 14-10	****	Vilyuysky District
++# 14-11	****	Gorny District
++# 14-12	****	Zhigansky District
++# 14-13	****	Kobyaysky District
++# 14-14	****	Lensky District
++# 14-15	****	Megino-Kangalassky District
++# 14-16	****	Mirninsky District
++# 14-18	****	Namsky District
++# 14-19	****	Neryungrinsky District
++# 14-21	****	Nyurbinsky District
++# 14-23	****	Olenyoksky District
++# 14-24	****	Olyokminsky District
++# 14-26	****	Suntarsky District
++# 14-27	****	Tattinsky District
++# 14-29	****	Ust-Aldansky District
++# 14-32	****	Khangalassky District
++# 14-33	****	Churapchinsky District
++# 14-34	****	Eveno-Bytantaysky National District
++
++# From Tim Parenti (2014-07-03):
++# Our commentary seems to have lost mention of (14-19) Neryungrinsky District.
++# Since the surrounding districts of Sakha are all YAKT, assume this is, too.
++# Also assume its history has been the same as the rest of Asia/Yakutsk.
++
++# Byalokoz 1919 says Yakutsk was 8:38:58.
++
++Zone Asia/Yakutsk	 8:38:58 -	LMT	1919 Dec 15
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+-			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+-			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
+-			 9:00	Russia	YAK%sT	2011 Mar 27 2:00s
+-			 10:00	-	YAKT
++			 9:00	Russia	YAK%sT	1991 Mar 31  2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19  2:00s
++			 9:00	Russia	YAK%sT	2011 Mar 27  2:00s
++			10:00	-	YAKT	2014 Oct 26  2:00s
++			 9:00	-	YAKT
++
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
++# Asia/Vladivostok covers...
++# 25	RU-PRI	Primorsky Krai
++# 27	RU-KHA	Khabarovsk Krai
++# 79	RU-YEV	Jewish Autonomous Oblast
+ #
+-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+-# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
+-# [parts of] Respublika Sakha (Yakutiya).
++# ...and parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-09	****	Verkhoyansky District
++# 14-31	****	Ust-Yansky District
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Bulunskij, Verkhoyanskij, ... Ust'-Yanskij.
+-Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
++# Milne 1899 says Vladivostok was 8:47:33.5.
++# Byalokoz 1919 says Vladivostok was 8:47:31.
++# Go with Byalokoz.
++
++Zone Asia/Vladivostok	 8:47:31 -	LMT	1922 Nov 15
+ 			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
+-			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
+-			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
+-			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+-			11:00	-	VLAT
++			10:00	Russia	VLA%sT	1991 Mar 31  2:00s
++			 9:00	Russia	VLA%sT	1992 Jan 19  2:00s
++			10:00	Russia	VLA%sT	2011 Mar 27  2:00s
++			11:00	-	VLAT	2014 Oct 26  2:00s
++			10:00	-	VLAT
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Khandyga covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-28	****	Tomponsky District
++# 14-30	****	Ust-Maysky District
+ 
+ # From Arthur David Olson (2012-05-09):
+ # Tomponskij and Ust'-Majskij switched from Vladivostok time to Yakutsk time
+ # in 2011.
+-#
++
+ # From Paul Eggert (2012-11-25):
+ # Shanks and Pottenger (2003) has Khandyga on Yakutsk time.
+ # Make a wild guess that it switched to Vladivostok time in 2004.
+ # This transition is no doubt wrong, but we have no better info.
+-#
++
+ Zone Asia/Khandyga	 9:02:13 -	LMT	1919 Dec 15
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+-			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+-			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
++			 9:00	Russia	YAK%sT	1991 Mar 31  2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19  2:00s
+ 			 9:00	Russia	YAK%sT	2004
+-			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+-			11:00	-	VLAT	2011 Sep 13 0:00s # Decree 725?
+-			10:00	-	YAKT
++			10:00	Russia	VLA%sT	2011 Mar 27  2:00s
++			11:00	-	VLAT	2011 Sep 13  0:00s # Decree 725?
++			10:00	-	YAKT	2014 Oct 26  2:00s
++			 9:00	-	YAKT
+ 
+-#
+-# Sakhalinskaya oblast'.
+-# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
++
++# From Tim Parenti (2014-07-03):
++# Asia/Sakhalin covers...
++# 65	RU-SAK	Sakhalin Oblast
++# ...with the exception of:
++# 65-11	****	Severo-Kurilsky District (North Kuril Islands)
++
++# The Zone name should be Asia/Yuzhno-Sakhalinsk, but that's too long.
+ Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
+-			 9:00	-	CJT	1938
++			 9:00	-	JCST	1937 Oct  1
+ 			 9:00	-	JST	1945 Aug 25
+-			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
+-			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
+-			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
+-			10:00	Russia	SAK%sT	2011 Mar 27 2:00s
+-			11:00	-	SAKT
+-#
+-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+-# Magadanskaya oblast', Respublika Sakha (Yakutiya).
+-# Probably also: Kuril Islands.
++			11:00	Russia	SAK%sT	1991 Mar 31  2:00s # Sakhalin T
++			10:00	Russia	SAK%sT	1992 Jan 19  2:00s
++			11:00	Russia	SAK%sT	1997 Mar lastSun  2:00s
++			10:00	Russia	SAK%sT	2011 Mar 27  2:00s
++			11:00	-	SAKT	2014 Oct 26  2:00s
++			10:00	-	SAKT
+ 
+-# From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,
+-# Nizhnekolymskij, ... Srednekolymskij.
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29):
++# Asia/Magadan covers...
++# 49	RU-MAG	Magadan Oblast
++
++# From Tim Parenti (2014-07-06), per Alexander Krivenyshev (2014-07-02):
++# Magadan Oblast is moving from UTC+12 to UTC+10 on 2014-10-26; however,
++# several districts of Sakha Republic as well as Severo-Kurilsky District of
++# the Sakhalin Oblast (also known as the North Kuril Islands), represented
++# until now by Asia/Magadan, will instead move to UTC+11.  These regions will
++# need their own zone.
++
+ Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
+ 			10:00	-	MAGT	1930 Jun 21 # Magadan Time
+-			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+-			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+-			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+-			12:00	-	MAGT
++			11:00	Russia	MAG%sT	1991 Mar 31  2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19  2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27  2:00s
++			12:00	-	MAGT	2014 Oct 26  2:00s
++			10:00	-	MAGT
++
++
++# From Tim Parenti (2014-07-06):
++# Asia/Srednekolymsk covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-01	****	Abyysky District
++# 14-03	****	Allaikhovsky District
++# 14-08	****	Verkhnekolymsky District
++# 14-17	****	Momsky District
++# 14-20	****	Nizhnekolymsky District
++# 14-25	****	Srednekolymsky District
++#
++# ...and parts of (65, RU-SAK) Sakhalin Oblast:
++# 65-11	****	Severo-Kurilsky District (North Kuril Islands)
++
++# From Tim Parenti (2014-07-02):
++# Oymyakonsky District of Sakha Republic (represented by Ust-Nera), along with
++# most of Sakhalin Oblast (represented by Sakhalin) will be moving to UTC+10 on
++# 2014-10-26 to stay aligned with VLAT/SAKT; however, Severo-Kurilsky District
++# of the Sakhalin Oblast (also known as the North Kuril Islands, represented by
++# Severo-Kurilsk) will remain on UTC+11.
++
++# From Tim Parenti (2014-07-06):
++# Assume North Kuril Islands have history like Magadan before 2011-03-27.
++# There is a decent chance this is wrong, in which case a new zone
++# Asia/Severo-Kurilsk would become necessary.
++#
++# Srednekolymsk and Zyryanka are the most populous places amongst these
++# districts, but have very similar populations.  In fact, Wikipedia currently
++# lists them both as having 3528 people, exactly 1668 males and 1860 females
++# each!  (Yikes!)
++# http://en.wikipedia.org/w/?title=Srednekolymsky_District&oldid=603435276
++# http://en.wikipedia.org/w/?title=Verkhnekolymsky_District&oldid=594378493
++# Assume this is a mistake, albeit an amusing one.
++#
++# Looking at censuses, the populations of the two municipalities seem to have
++# fluctuated recently.  Zyryanka was more populous than Srednekolymsk in the
++# 1989 and 2002 censuses, but Srednekolymsk was more populous in the most
++# recent (2010) census, 3525 to 3170.  (See pages 195 and 197 of
++# http://www.gks.ru/free_doc/new_site/perepis2010/croc/Documents/Vol1/pub-01-05.pdf
++# in Russian.)  In addition, Srednekolymsk appears to be a much older
++# settlement and the population of Zyryanka seems to be declining.
++# Go with Srednekolymsk.
++#
++# Since Magadan Oblast moves to UTC+10 on 2014-10-26, we cannot keep using MAGT
++# as the abbreviation.  Use SRET instead.
++
++Zone Asia/Srednekolymsk	10:14:52 -	LMT	1924 May  2
++			10:00	-	MAGT	1930 Jun 21 # Magadan Time
++			11:00	Russia	MAG%sT	1991 Mar 31  2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19  2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27  2:00s
++			12:00	-	MAGT	2014 Oct 26  2:00s
++			11:00	-	SRET	# Srednekolymsk Time
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Ust-Nera covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
++# 14-22	****	Oymyakonsky District
+ 
+ # From Arthur David Olson (2012-05-09):
+-# Ojmyakonskij and the Kuril Islands switched from
++# Ojmyakonskij [and the Kuril Islands] switched from
+ # Magadan time to Vladivostok time in 2011.
++#
++# From Tim Parenti (2014-07-06), per Alexander Krivenyshev (2014-07-02):
++# It's unlikely that any of the Kuril Islands were involved in such a switch,
++# as the South and Middle Kurils have been on UTC+11 (SAKT) with the rest of
++# Sakhalin Oblast since at least 2011-09, and the North Kurils have been on
++# UTC+12 since at least then, too.
++
+ Zone Asia/Ust-Nera	 9:32:54 -	LMT	1919 Dec 15
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+ 			 9:00	Russia	YAKT	1981 Apr  1
+-			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+-			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+-			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+-			12:00	-	MAGT	2011 Sep 13 0:00s # Decree 725?
+-			11:00	-	VLAT
++			11:00	Russia	MAG%sT	1991 Mar 31  2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19  2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27  2:00s
++			12:00	-	MAGT	2011 Sep 13  0:00s # Decree 725?
++			11:00	-	VLAT	2014 Oct 26  2:00s
++			10:00	-	VLAT
+ 
+-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+-# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
++
++# From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25):
++# Asia/Kamchatka covers...
++# 91	RU-KAM	Kamchatka Krai
+ #
+-# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
++# Note: Effective 2007-07-01, (41) Kamchatka Oblast and (82) Koryak
++# Autonomous Okrug merged to form (91, RU-KAM) Kamchatka Krai.
++
++# The Zone name should be Asia/Petropavlovsk-Kamchatski or perhaps
++# Asia/Petropavlovsk-Kamchatsky, but these are too long.
+ Zone Asia/Kamchatka	10:34:36 -	LMT	1922 Nov 10
+ 			11:00	-	PETT	1930 Jun 21 # P-K Time
+-			12:00	Russia	PET%sT	1991 Mar 31 2:00s
+-			11:00	Russia	PET%sT	1992 Jan 19 2:00s
+-			12:00	Russia	PET%sT	2010 Mar 28 2:00s
+-			11:00	Russia	PET%sT	2011 Mar 27 2:00s
++			12:00	Russia	PET%sT	1991 Mar 31  2:00s
++			11:00	Russia	PET%sT	1992 Jan 19  2:00s
++			12:00	Russia	PET%sT	2010 Mar 28  2:00s
++			11:00	Russia	PET%sT	2011 Mar 27  2:00s
+ 			12:00	-	PETT
+-#
+-# Chukotskij avtonomnyj okrug
++
++
++# From Tim Parenti (2014-07-03):
++# Asia/Anadyr covers...
++# 87	RU-CHU	Chukotka Autonomous Okrug
++
+ Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
+ 			12:00	-	ANAT	1930 Jun 21 # Anadyr Time
+-			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
+-			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
+-			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
+-			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
+-			11:00	Russia	ANA%sT	2011 Mar 27 2:00s
++			13:00	Russia	ANA%sT	1982 Apr  1  0:00s
++			12:00	Russia	ANA%sT	1991 Mar 31  2:00s
++			11:00	Russia	ANA%sT	1992 Jan 19  2:00s
++			12:00	Russia	ANA%sT	2010 Mar 28  2:00s
++			11:00	Russia	ANA%sT	2011 Mar 27  2:00s
+ 			12:00	-	ANAT
+ 
++
+ # San Marino
+ # See Europe/Rome.
+ 
+@@ -2488,11 +2862,11 @@
+ Zone	Europe/Belgrade	1:22:00	-	LMT	1884
+ 			1:00	-	CET	1941 Apr 18 23:00
+ 			1:00	C-Eur	CE%sT	1945
+-			1:00	-	CET	1945 May 8 2:00s
++			1:00	-	CET	1945 May  8  2:00s
+ 			1:00	1:00	CEST	1945 Sep 16  2:00s
+-# Metod Kozelj reports that the legal date of
++# Metod Koželj reports that the legal date of
+ # transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
+-# Shanks & Pottenger don't give as much detail, so go with Kozelj.
++# Shanks & Pottenger don't give as much detail, so go with Koželj.
+ 			1:00	-	CET	1982 Nov 27
+ 			1:00	EU	CE%sT
+ Link Europe/Belgrade Europe/Ljubljana	# Slovenia
+@@ -2568,13 +2942,13 @@
+ 			 0:00	1:00	WEST	1918 Oct  7 23:00
+ 			 0:00	-	WET	1924
+ 			 0:00	Spain	WE%sT	1929
+-			 0:00 SpainAfrica WE%sT 1984 Mar 16
++			 0:00 SpainAfrica WE%sT	1984 Mar 16
+ 			 1:00	-	CET	1986
+ 			 1:00	EU	CE%sT
+ Zone	Atlantic/Canary	-1:01:36 -	LMT	1922 Mar # Las Palmas de Gran C.
+-			-1:00	-	CANT	1946 Sep 30 1:00 # Canaries Time
+-			 0:00	-	WET	1980 Apr  6 0:00s
+-			 0:00	1:00	WEST	1980 Sep 28 0:00s
++			-1:00	-	CANT	1946 Sep 30  1:00 # Canaries T
++			 0:00	-	WET	1980 Apr  6  0:00s
++			 0:00	1:00	WEST	1980 Sep 28  0:00s
+ 			 0:00	EU	WE%sT
+ # IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
+ # Ignore this for now, as the Canaries are part of the EU.
+@@ -2583,7 +2957,7 @@
+ 
+ # From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
+ #
+-# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
++# The law "Svensk författningssamling 1878, no 14" about standard time in 1879:
+ # From the beginning of 1879 (that is 01-01 00:00) the time for all
+ # places in the country is "the mean solar time for the meridian at
+ # three degrees, or twelve minutes of time, to the west of the
+@@ -2594,7 +2968,7 @@
+ # national standard time as 01:00:14 ahead of GMT....
+ #
+ # About the beginning of CET in Sweden. The lawtext ("Svensk
+-# forfattningssamling 1899, no 44") states, that "from the beginning
++# författningssamling 1899, no 44") states, that "from the beginning
+ # of 1900... ... the same as the mean solar time for the meridian at
+ # the distance of one hour of time from the meridian of the English
+ # observatory at Greenwich, or at 12 minutes 14 seconds to the west
+@@ -2602,7 +2976,7 @@
+ # 1899-06-16.  In short: At 1900-01-01 00:00:00 the new standard time
+ # in Sweden is 01:00:00 ahead of GMT.
+ #
+-# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
++# 1916: The lawtext ("Svensk författningssamling 1916, no 124") states
+ # that "1916-05-15 is considered to begin one hour earlier". It is
+ # pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
+ # Further the law says, that "1916-09-30 is considered to end one hour later".
+@@ -2612,7 +2986,7 @@
+ # not available on the site (to my knowledge they are only available
+ # in Swedish):  (type
+ # "sommartid" without the quotes in the field "Fritext" and then click
+-# the Sok-button).
++# the Sök-button).
+ #
+ # (2001-05-13):
+ #
+@@ -2627,9 +3001,9 @@
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
+-			1:00:14	-	SET	1900 Jan  1	# Swedish Time
++			1:00:14	-	SET	1900 Jan  1 # Swedish Time
+ 			1:00	-	CET	1916 May 14 23:00
+-			1:00	1:00	CEST	1916 Oct  1 01:00
++			1:00	1:00	CEST	1916 Oct  1  1:00
+ 			1:00	-	CET	1980
+ 			1:00	EU	CE%sT
+ 
+@@ -2637,7 +3011,7 @@
+ # From Howse:
+ # By the end of the 18th century clocks and watches became commonplace
+ # and their performance improved enormously.  Communities began to keep
+-# mean time in preference to apparent time -- Geneva from 1780 ....
++# mean time in preference to apparent time - Geneva from 1780 ....
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ # From Whitman (who writes "Midnight?"):
+ # Rule	Swiss	1940	only	-	Nov	 2	0:00	1:00	S
+@@ -2653,7 +3027,7 @@
+ # to be wrong. This is now verified.
+ #
+ # I have found copies of the original ruling by the Swiss Federal
+-# government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss
++# government, in 'Eidgenössische Gesetzessammlung 1941 and 1942' (Swiss
+ # federal law collection)...
+ #
+ # DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am
+@@ -2672,7 +3046,7 @@
+ # night as an absolute novelty, because this was the first time that such
+ # a thing had happened in Switzerland.
+ #
+-# I have also checked 1916, because one book source (Gabriel, Traite de
++# I have also checked 1916, because one book source (Gabriel, Traité de
+ # l'heure dans le monde) claims that Switzerland had DST in 1916. This is
+ # false, no official document could be found. Probably Gabriel got misled
+ # by references to Germany, which introduced DST in 1916 for the first time.
+@@ -2686,19 +3060,19 @@
+ # One further detail for Switzerland, which is probably out of scope for
+ # most users of tzdata: The [Europe/Zurich zone] ...
+ # describes all of Switzerland correctly, with the exception of
+-# the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not
++# the Canton de Genève (Geneva, Genf). Between 1848 and 1894 Geneva did not
+ # follow Bern Mean Time but kept its own local mean time.
+ # To represent this, an extra zone would be needed.
+ #
+ # From Alois Treindl (2013-09-11):
+ # The Federal regulations say
+ # http://www.admin.ch/opc/de/classified-compilation/20071096/index.html
+-# ... the meridian for Bern mean time ... is 7 degrees 26'22.50".
++# ... the meridian for Bern mean time ... is 7 degrees 26' 22.50".
+ # Expressed in time, it is 0h29m45.5s.
+ 
+ # From Pierre-Yves Berger (2013-09-11):
+-# the "Circulaire du conseil federal" (December 11 1893)
+-#  ...
++# the "Circulaire du conseil fédéral" (December 11 1893)
++# http://www.amtsdruckschriften.bar.admin.ch/viewOrigDoc.do?id=10071353
+ # clearly states that the [1894-06-01] change should be done at midnight
+ # but if no one is present after 11 at night, could be postponed until one
+ # hour before the beginning of service.
+@@ -2709,14 +3083,14 @@
+ # We can find no reliable source for Shanks's assertion that all of Switzerland
+ # except Geneva switched to Bern Mean Time at 00:00 on 1848-09-12.  This book:
+ #
+-#	Jakob Messerli. Gleichmassig, punktlich, schnell: Zeiteinteilung und
++#	Jakob Messerli. Gleichmässig, pünktlich, schnell. Zeiteinteilung und
+ #	Zeitgebrauch in der Schweiz im 19. Jahrhundert. Chronos, Zurich 1995,
+ #	ISBN 3-905311-68-2, OCLC 717570797.
+ #
+ # suggests that the transition was more gradual, and that the Swiss did not
+ # agree about civil time during the transition.  The timekeeping it gives the
+ # most detail for is postal and telegraph time: here, federal legislation (the
+-# "Bundesgesetz uber die Erstellung von elektrischen Telegraphen") passed on
++# "Bundesgesetz über die Erstellung von elektrischen Telegraphen") passed on
+ # 1851-11-23, and an official implementation notice was published 1853-07-16
+ # (Bundesblatt 1853, Bd. II, S. 859).  On p 72 Messerli writes that in
+ # practice since July 1853 Bernese time was used in "all postal and telegraph
+@@ -2730,7 +3104,7 @@
+ Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Zurich	0:34:08 -	LMT	1853 Jul 16 # See above comment.
+-			0:29:46	-	BMT	1894 Jun # Bern Mean Time
++			0:29:46	-	BMT	1894 Jun    # Bern Mean Time
+ 			1:00	Swiss	CE%sT	1981
+ 			1:00	EU	CE%sT
+ 
+@@ -2738,7 +3112,7 @@
+ 
+ # From Amar Devegowda (2007-01-03):
+ # The time zone rules for Istanbul, Turkey have not been changed for years now.
+-# ... The latest rules are available at -
++# ... The latest rules are available at:
+ # http://www.timeanddate.com/worldclock/timezone.html?n=107
+ # From Steffen Thorsen (2007-01-03):
+ # I have been able to find press records back to 1996 which all say that
+@@ -2763,8 +3137,7 @@
+ # (on a non-government server though) describing dates between 2002 and 2006:
+ # http://www.alomaliye.com/bkk_2002_3769.htm
+ 
+-# From Gökdeniz Karadağ (2011-03-10):
+-#
++# From Gökdeniz Karadağ (2011-03-10):
+ # According to the articles linked below, Turkey will change into summer
+ # time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
+ # This change is due to a nationwide exam on 27th.
+@@ -2777,9 +3150,16 @@
+ # Turkish Local election....
+ # http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik
+ # ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m.
+-# From Paul Eggert (2014-02-17):
+-# Here is an English-language source:
+-# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31
++# From Randal L. Schwartz (2014-04-15):
++# Having landed on a flight from the states to Istanbul (via AMS) on March 31,
++# I can tell you that NOBODY (even the airlines) respected this timezone DST
++# change delay.  Maybe the word just didn't get out in time.
++# From Paul Eggert (2014-06-15):
++# The press reported massive confusion, as election officials obeyed the rule
++# change but cell phones (and airline baggage systems) did not.  See:
++# Kostidis M. Eventful elections in Turkey. Balkan News Agency
++# http://www.balkaneu.com/eventful-elections-turkey/ 2014-03-30.
++# I guess the best we can do is document the official time.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Turkey	1916	only	-	May	 1	0:00	1:00	S
+@@ -2846,10 +3226,10 @@
+ 			2:00	Turkey	EE%sT	1978 Oct 15
+ 			3:00	Turkey	TR%sT	1985 Apr 20 # Turkey Time
+ 			2:00	Turkey	EE%sT	2007
+-			2:00	EU	EE%sT	2011 Mar 27 1:00u
+-			2:00	-	EET	2011 Mar 28 1:00u
+-			2:00	EU	EE%sT	2014 Mar 30 1:00u
+-			2:00	-	EET	2014 Mar 31 1:00u
++			2:00	EU	EE%sT	2011 Mar 27  1:00u
++			2:00	-	EET	2011 Mar 28  1:00u
++			2:00	EU	EE%sT	2014 Mar 30  1:00u
++			2:00	-	EET	2014 Mar 31  1:00u
+ 			2:00	EU	EE%sT
+ Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
+ 
+@@ -2870,7 +3250,7 @@
+ # Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got
+ # approval from 266 deputies.
+ #
+-# Ukraine abolishes transter back to the winter time (in Russian)
++# Ukraine abolishes transfer back to the winter time (in Russian)
+ # http://news.mail.ru/politics/6861560/
+ #
+ # The Ukrainians will no longer change the clock (in Russian)
+@@ -2931,12 +3311,12 @@
+ 			2:00	-	EET	1930 Jun 21
+ 			3:00	-	MSK	1941 Sep 20
+ 			1:00	C-Eur	CE%sT	1943 Nov  6
+-			3:00	Russia	MSK/MSD	1990 Jul  1 2:00
+-			2:00	1:00	EEST	1991 Sep 29 3:00
++			3:00	Russia	MSK/MSD	1990 Jul  1  2:00
++			2:00	1:00	EEST	1991 Sep 29  3:00
+ 			2:00	E-Eur	EE%sT	1995
+ 			2:00	EU	EE%sT
+ # Ruthenia used CET 1990/1991.
+-# "Uzhhorod" is the transliteration of the Ukrainian name, but
++# "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
+ # "Uzhgorod" is more common in English.
+ Zone Europe/Uzhgorod	1:29:12 -	LMT	1890 Oct
+ 			1:00	-	CET	1940
+@@ -2944,8 +3324,8 @@
+ 			1:00	1:00	CEST	1944 Oct 26
+ 			1:00	-	CET	1945 Jun 29
+ 			3:00	Russia	MSK/MSD	1990
+-			3:00	-	MSK	1990 Jul  1 2:00
+-			1:00	-	CET	1991 Mar 31 3:00
++			3:00	-	MSK	1990 Jul  1  2:00
++			1:00	-	CET	1991 Mar 31  3:00
+ 			2:00	-	EET	1992
+ 			2:00	E-Eur	EE%sT	1995
+ 			2:00	EU	EE%sT
+@@ -2959,42 +3339,9 @@
+ 			2:00	-	EET	1930 Jun 21
+ 			3:00	-	MSK	1941 Aug 25
+ 			1:00	C-Eur	CE%sT	1943 Oct 25
+-			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
++			3:00	Russia	MSK/MSD	1991 Mar 31  2:00
+ 			2:00	E-Eur	EE%sT	1995
+ 			2:00	EU	EE%sT
+-# Central Crimea used Moscow time 1994/1997.
+-Zone Europe/Simferopol	2:16:24 -	LMT	1880
+-			2:16	-	SMT	1924 May  2 # Simferopol Mean T
+-			2:00	-	EET	1930 Jun 21
+-			3:00	-	MSK	1941 Nov
+-			1:00	C-Eur	CE%sT	1944 Apr 13
+-			3:00	Russia	MSK/MSD	1990
+-			3:00	-	MSK	1990 Jul  1 2:00
+-			2:00	-	EET	1992
+-# From Paul Eggert (2006-03-22):
+-# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
+-# from Kiev to Moscow time sometime after the January 1994 elections.
+-# Shanks (1999) says "date of change uncertain", but implies that it happened
+-# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
+-# 1994-09-25 03:00, but that can't be right.  For now, guess it
+-# changed in May.
+-			2:00	E-Eur	EE%sT	1994 May
+-# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
+-			3:00	E-Eur	MSK/MSD	1996 Mar 31 3:00s
+-			3:00	1:00	MSD	1996 Oct 27 3:00s
+-# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
+-# Assume it happened in March by not changing the clocks.
+-			3:00	Russia	MSK/MSD	1997
+-			3:00	-	MSK	1997 Mar lastSun 1:00u
+-# From Alexander Krivenyshev (2014-03-17):
+-# time change at 2:00 (2am) on March 30, 2014
+-# http://vz.ru/news/2014/3/17/677464.html
+-# From Paul Eggert (2014-03-30):
+-# Simferopol and Sevastopol reportedly changed their central town clocks
+-# late the previous day, but this appears to have been ceremonial
+-# and the discrepancies are small enough to not worry about.
+-			2:00	EU	EE%sT	2014 Mar 30 2:00
+-			4:00	-	MSK
+ 
+ # Vatican City
+ # See Europe/Rome.
+@@ -3018,7 +3365,7 @@
+ # ...
+ #
+ # ...the European time rules are...standardized since 1981, when
+-# most European coun[tr]ies started DST.  Before that year, only
++# most European countries started DST.  Before that year, only
+ # a few countries (UK, France, Italy) had DST, each according
+ # to own national rules.  In 1981, however, DST started on
+ # 'Apr firstSun', and not on 'Mar lastSun' as in the following
+@@ -3026,7 +3373,7 @@
+ # But also since 1981 there are some more national exceptions
+ # than listed in 'europe': Switzerland, for example, joined DST
+ # one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
+-# lastSun' in 1981---I don't know how they handle now.
++# lastSun' in 1981 - I don't know how they handle now.
+ #
+ # Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
+ # Soviet Union (as far as I know).
+--- ./jdk/test/sun/util/calendar/zi/tzdata/factory	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/factory	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- ./jdk/test/sun/util/calendar/zi/tzdata/iso3166.tab	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/iso3166.tab	Mon Dec 08 12:29:42 2014 -0800
+@@ -26,21 +26,21 @@
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
+-# From Paul Eggert (2013-05-27):
++# From Paul Eggert (2014-07-18):
++# This file contains a table of two-letter country codes.  Columns are
++# separated by a single tab.  Lines beginning with '#' are comments.
++# Although all text currently uses ASCII encoding, this is planned to
++# change to UTF-8 soon.  The columns of the table are as follows:
+ #
+-# This file contains a table with the following columns:
+ # 1.  ISO 3166-1 alpha-2 country code, current as of
+-#     ISO 3166-1 Newsletter VI-15 (2013-05-10).  See: Updates on ISO 3166
++#     ISO 3166-1 Newsletter VI-16 (2013-07-11).  See: Updates on ISO 3166
+ #   http://www.iso.org/iso/home/standards/country_codes/updates_on_iso_3166.htm
+ # 2.  The usual English name for the coded region,
+ #     chosen so that alphabetic sorting of subsets produces helpful lists.
+ #     This is not the same as the English name in the ISO 3166 tables.
+ #
+-# Columns are separated by a single tab.
+ # The table is sorted by country code.
+ #
+-# Lines beginning with `#' are comments.
+-#
+ # This table is intended as an aid for users, to help them select time
+ # zone data appropriate for their practical needs.  It is not intended
+ # to take or endorse any position on legal or territorial claims.
+--- ./jdk/test/sun/util/calendar/zi/tzdata/leapseconds	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/leapseconds	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,7 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# Allowance for leapseconds added to each timezone file.
++# Allowance for leap seconds added to each time zone file.
+ 
+ # This file is in the public domain.
+ 
+@@ -31,10 +31,10 @@
+ # you should be able to pick up leap-seconds.list from a secondary NIST server.
+ # For more about leap-seconds.list, please see
+ # The NTP Timescale and Leap Seconds
+-# .
++# http://www.eecis.udel.edu/~mills/leap.html
+ 
+-# The International Earth Rotation Service periodically uses leap seconds
+-# to keep UTC to within 0.9 s of UT1
++# The International Earth Rotation and Reference Systems Service
++# periodically uses leap seconds to keep UTC to within 0.9 s of UT1
+ # (which measures the true angular orientation of the earth in space); see
+ # Terry J Quinn, The BIPM and the accurate measure of time,
+ # Proc IEEE 79, 7 (July 1991), 894-905 .
+--- ./jdk/test/sun/util/calendar/zi/tzdata/northamerica	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/northamerica	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,15 +21,15 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+ # also includes Central America and the Caribbean
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+ # From Paul Eggert (1999-03-22):
+ # A reliable and entertaining source about time zones is
+@@ -78,13 +78,13 @@
+ #	to push people into bed earlier, and get them up earlier, to make
+ #	them healthy, wealthy and wise in spite of themselves.
+ #
+-#	-- Robertson Davies, The diary of Samuel Marchbanks,
++#	 -- Robertson Davies, The diary of Samuel Marchbanks,
+ #	   Clarke, Irwin (1947), XIX, Sunday
+ #
+ # For more about the first ten years of DST in the United States, see
+-# Robert Garland's 
+-# Ten years of daylight saving from the Pittsburgh standpoint
+-# (Carnegie Library of Pittsburgh, 1927).
++# Robert Garland, Ten years of daylight saving from the Pittsburgh standpoint
++# (Carnegie Library of Pittsburgh, 1927).
++# http://www.clpgh.org/exhibit/dst.html
+ #
+ # Shanks says that DST was called "War Time" in the US in 1918 and 1919.
+ # However, DST was imposed by the Standard Time Act of 1918, which
+@@ -103,11 +103,11 @@
+ # From Arthur David Olson (2000-09-25):
+ # Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
+ # In the introduction, Oboler spoke of "Eastern Peace Time."
+-# An AltaVista search turned up
+-# :
++# An AltaVista search turned up:
++# http://rowayton.org/rhs/hstaug45.html
+ # "When the time is announced over the radio now, it is 'Eastern Peace
+ # Time' instead of the old familiar 'Eastern War Time.'  Peace is wonderful."
+-#  (August 1945) by way of confirmation.
++# (August 1945) by way of confirmation.
+ 
+ # From Joseph Gallant citing
+ # George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
+@@ -205,7 +205,7 @@
+ # USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
+ # USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
+ # USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
+-# USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
++# USA    "           9 H  BEHIND UTC    APR 3 - OCT 30
+ # USA  HAWAII       10 H  BEHIND UTC
+ # USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
+ 
+@@ -258,19 +258,19 @@
+ # The following was signed into law on 2005-08-08.
+ #
+ # H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
+-#   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
++#   (a) Amendment.--Section 3(a) of the Uniform Time Act of 1966 (15
+ #   U.S.C. 260a(a)) is amended--
+-#     (1) by striking 'first Sunday of April' and inserting 'second
+-#     Sunday of March'; and
+-#     (2) by striking 'last Sunday of October' and inserting 'first
++#     (1) by striking "first Sunday of April" and inserting "second
++#     Sunday of March"; and
++#     (2) by striking "last Sunday of October" and inserting "first
+ #     Sunday of November'.
+-#   (b) Effective Date- Subsection (a) shall take effect 1 year after the
++#   (b) Effective Date.--Subsection (a) shall take effect 1 year after the
+ #   date of enactment of this Act or March 1, 2007, whichever is later.
+-#   (c) Report to Congress- Not later than 9 months after the effective
++#   (c) Report to Congress.--Not later than 9 months after the effective
+ #   date stated in subsection (b), the Secretary shall report to Congress
+ #   on the impact of this section on energy consumption in the United
+ #   States.
+-#   (d) Right to Revert- Congress retains the right to revert the
++#   (d) Right to Revert.--Congress retains the right to revert the
+ #   Daylight Saving Time back to the 2005 time schedules once the
+ #   Department study is complete.
+ 
+@@ -292,7 +292,7 @@
+ 
+ # From Paul Eggert (2005-08-26):
+ # According to today's Huntsville Times
+-# 
++# http://www.al.com/news/huntsvilletimes/index.ssf?/base/news/1125047783228320.xml&coll=1
+ # a few towns on Alabama's "eastern border with Georgia, such as Phenix City
+ # in Russell County, Lanett in Chambers County and some towns in Lee County,
+ # set their watches and clocks on Eastern time."  It quotes H.H. "Bubba"
+@@ -300,6 +300,12 @@
+ # time zone, but we do go by the Eastern time zone because so many people work
+ # in Columbus."
+ 
++# From Paul Eggert (2014-09-06):
++# Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208
++# says that New York City Hall time was 3 minutes 58.4 seconds fast of
++# Eastern time (i.e., -4:56:01.6) just before the 1883 switch.  Round to the
++# nearest second.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
+ Rule	NYC	1920	only	-	Mar	lastSun	2:00	1:00	D
+ Rule	NYC	1920	only	-	Oct	lastSun	2:00	0	S
+@@ -347,15 +353,15 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Chicago	-5:50:36 -	LMT	1883 Nov 18 12:09:24
+ 			-6:00	US	C%sT	1920
+-			-6:00	Chicago	C%sT	1936 Mar  1 2:00
+-			-5:00	-	EST	1936 Nov 15 2:00
++			-6:00	Chicago	C%sT	1936 Mar  1  2:00
++			-5:00	-	EST	1936 Nov 15  2:00
+ 			-6:00	Chicago	C%sT	1942
+ 			-6:00	US	C%sT	1946
+ 			-6:00	Chicago	C%sT	1967
+ 			-6:00	US	C%sT
+ # Oliver County, ND switched from mountain to central time on 1992-10-25.
+ Zone America/North_Dakota/Center -6:45:12 - LMT	1883 Nov 18 12:14:48
+-			-7:00	US	M%sT	1992 Oct 25 02:00
++			-7:00	US	M%sT	1992 Oct 25  2:00
+ 			-6:00	US	C%sT
+ # Morton County, ND, switched from mountain to central time on
+ # 2003-10-26, except for the area around Mandan which was already central time.
+@@ -364,29 +370,26 @@
+ # Jones, Mellette, and Todd Counties in South Dakota;
+ # but in practice these other counties were already observing central time.
+ # See .
+-Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
+-			-7:00	US	M%sT	2003 Oct 26 02:00
++Zone America/North_Dakota/New_Salem -6:45:39 - LMT	1883 Nov 18 12:14:21
++			-7:00	US	M%sT	2003 Oct 26  2:00
+ 			-6:00	US	C%sT
+ 
+ # From Josh Findley (2011-01-21):
+ # ...it appears that Mercer County, North Dakota, changed from the
+ # mountain time zone to the central time zone at the last transition from
+ # daylight-saving to standard time (on Nov. 7, 2010):
+-# 
+ # http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm
+-# 
+-# 
+ # http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html
+-# 
+ 
+ # From Andy Lipscomb (2011-01-24):
+ # ...according to the Census Bureau, the largest city is Beulah (although
+ # it's commonly referred to as Beulah-Hazen, with Hazen being the next
+ # largest city in Mercer County).  Google Maps places Beulah's city hall
+-# at 4715'51" north, 10146'40" west, which yields an offset of 6h47'07".
++# at 47 degrees 15' 51" N, 101 degrees 46' 40" W, which yields an offset
++# of 6h47'07".
+ 
+-Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
+-			-7:00	US	M%sT	2010 Nov  7 2:00
++Zone America/North_Dakota/Beulah -6:47:07 - LMT	1883 Nov 18 12:12:53
++			-7:00	US	M%sT	2010 Nov  7  2:00
+ 			-6:00	US	C%sT
+ 
+ # US mountain time, represented by Denver
+@@ -448,15 +451,18 @@
+ # was destroyed in 1805 by a Yakutat-kon war party.)  However, there
+ # were nearby inhabitants in some cases and for our purposes perhaps
+ # it's best to simply use the official transition.
++
++# From Paul Eggert (2014-07-18):
++# One opinion of the early-1980s turmoil in Alaska over time zones and
++# daylight saving time appeared as graffiti on a Juneau airport wall:
++# "Welcome to Juneau.  Please turn your watch back to the 19th century."
++# See: Turner W. Alaska's four time zones now two. NY Times 1983-11-01.
++# http://www.nytimes.com/1983/11/01/us/alaska-s-four-time-zones-now-two.html
+ #
+-
+-# From Steve Ferguson (2011-01-31):
+-# The author lives in Alaska and many of the references listed are only
+-# available to Alaskan residents.
+-#
+-# 
+-# http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98
+-# 
++# Steve Ferguson (2011-01-31) referred to the following source:
++# Norris F. Keeping time in Alaska: national directives, local response.
++# Alaska History 2001;16(1-2).
++# http://alaskahistoricalsociety.org/discover-alaska/glimpses-of-the-past/keeping-time-in-alaska/
+ 
+ # From Arthur David Olson (2011-02-01):
+ # Here's database-relevant material from the 2001 "Alaska History" article:
+@@ -482,12 +488,10 @@
+ # From Arthur David Olson (2011-02-09):
+ # I just spoke by phone with a staff member at the Metlakatla Indian
+ # Community office (using contact information available at
+-# 
+ # http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla
+-# ).
+ # It's shortly after 1:00 here on the east coast of the United States;
+ # the staffer said it was shortly after 10:00 there. When I asked whether
+-# that meant they were on Pacific time, they said no--they were on their
++# that meant they were on Pacific time, they said no - they were on their
+ # own time. I asked about daylight saving; they said it wasn't used. I
+ # did not inquire about practices in the past.
+ 
+@@ -501,9 +505,9 @@
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+-			 -8:00	US	P%sT	1980 Apr 27 2:00
+-			 -9:00	US	Y%sT	1980 Oct 26 2:00
+-			 -8:00	US	P%sT	1983 Oct 30 2:00
++			 -8:00	US	P%sT	1980 Apr 27  2:00
++			 -9:00	US	Y%sT	1980 Oct 26  2:00
++			 -8:00	US	P%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Sitka	 14:58:47 -	LMT	1867 Oct 18
+@@ -511,7 +515,7 @@
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+-			 -8:00	US	P%sT	1983 Oct 30 2:00
++			 -8:00	US	P%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Metlakatla	 15:13:42 -	LMT	1867 Oct 18
+@@ -519,8 +523,8 @@
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+-			 -8:00	US	P%sT	1983 Oct 30 2:00
+-			 -8:00	-	MeST
++			 -8:00	US	P%sT	1983 Oct 30  2:00
++			 -8:00	-	PST
+ Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
+ 			 -9:18:55 -	LMT	1900 Aug 20 12:00
+ 			 -9:00	-	YST	1942
+@@ -535,7 +539,7 @@
+ 			-10:00	US	CAT/CAPT 1946 # Peace
+ 			-10:00	-	CAT	1967 Apr
+ 			-10:00	-	AHST	1969
+-			-10:00	US	AH%sT	1983 Oct 30 2:00
++			-10:00	US	AH%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Nome	 12:58:21 -	LMT	1867 Oct 18
+@@ -544,7 +548,7 @@
+ 			-11:00	US	N%sT	1946
+ 			-11:00	-	NST	1967 Apr
+ 			-11:00	-	BST	1969
+-			-11:00	US	B%sT	1983 Oct 30 2:00
++			-11:00	US	B%sT	1983 Oct 30  2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+ Zone America/Adak	 12:13:21 -	LMT	1867 Oct 18
+@@ -553,7 +557,7 @@
+ 			-11:00	US	N%sT	1946
+ 			-11:00	-	NST	1967 Apr
+ 			-11:00	-	BST	1969
+-			-11:00	US	B%sT	1983 Oct 30 2:00
++			-11:00	US	B%sT	1983 Oct 30  2:00
+ 			-10:00	US	AH%sT	1983 Nov 30
+ 			-10:00	US	HA%sT
+ # The following switches don't quite make our 1970 cutoff.
+@@ -571,7 +575,7 @@
+ #  Minutes of the Unalaska City Council Meeting, January 10, 1967:
+ #  "Except for St. Paul and Akutan, Unalaska is the only important
+ #  location not on Alaska Standard Time.  The following resolution was
+-#  made by William Robinson and seconded by Henry Swanson:  Be it
++#  made by William Robinson and seconded by Henry Swanson: Be it
+ #  resolved that the City of Unalaska hereby goes to Alaska Standard
+ #  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
+ #  January 14, Alaska Standard Time.)  This resolution was passed with
+@@ -583,9 +587,7 @@
+ # "Hawaiian Time" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225
+ # of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,
+ # the article is available at
+-# 
+ # http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf
+-# 
+ # and indicates that standard time was adopted effective noon, January
+ # 13, 1896 (page 218), that in "1933, the Legislature decreed daylight
+ # saving for the period between the last Sunday of each April and the
+@@ -606,7 +608,7 @@
+ # year, the standard time of this Territory shall be advanced one
+ # hour...This Act shall take effect upon its approval. Approved this 26th
+ # day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of
+-# Hawaii." Page 172:  "Act 163...Act 90 of the Session Laws of 1933 is
++# Hawaii." Page 172: "Act 163...Act 90 of the Session Laws of 1933 is
+ # hereby repealed...This Act shall take effect upon its approval, upon
+ # which date the standard time of this Territory shall be restored to
+ # that existing immediately prior to the taking effect of said Act 90.
+@@ -616,14 +618,14 @@
+ # Note that 1933-05-21 was a Sunday.
+ # We're left to guess the time of day when Act 163 was approved; guess noon.
+ 
+-Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
+-			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
+-			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
+-			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
+-			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Cox+2
+-			-10:30	-	HST	1947 Jun  8 2:00 #Schmitt&Cox+2
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
++Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00
++			-10:30	-	HST	1933 Apr 30  2:00
++			-10:30	1:00	HDT	1933 May 21 12:00
++			-10:30	-	HST	1942 Feb  9  2:00
++			-10:30	1:00	HDT	1945 Sep 30  2:00
++			-10:30	-	HST	1947 Jun  8  2:00
+ 			-10:00	-	HST
+-
+ Link Pacific/Honolulu Pacific/Johnston
+ 
+ # Now we turn to US areas that have diverged from the consensus since 1970.
+@@ -633,9 +635,9 @@
+ # From Paul Eggert (2002-10-20):
+ #
+ # The information in the rest of this paragraph is derived from the
+-# 
+-# Daylight Saving Time web page (2002-01-23) maintained by the
+-# Arizona State Library, Archives and Public Records.
++# Daylight Saving Time web page
++#  (2002-01-23)
++# maintained by the Arizona State Library, Archives and Public Records.
+ # Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
+ # time, but by federal law railroads, airlines, bus lines, military
+ # personnel, and some engaged in interstate commerce continued to
+@@ -649,10 +651,11 @@
+ # Shanks says the 1944 experiment came to an end on 1944-03-17.
+ # Go with the Arizona State Library instead.
+ 
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
+-			-7:00	US	M%sT	1944 Jan  1 00:01
+-			-7:00	-	MST	1944 Apr  1 00:01
+-			-7:00	US	M%sT	1944 Oct  1 00:01
++			-7:00	US	M%sT	1944 Jan  1  0:01
++			-7:00	-	MST	1944 Apr  1  0:01
++			-7:00	US	M%sT	1944 Oct  1  0:01
+ 			-7:00	-	MST	1967
+ 			-7:00	US	M%sT	1968 Mar 21
+ 			-7:00	-	MST
+@@ -676,24 +679,22 @@
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
+-			-8:00	US	P%sT	1923 May 13 2:00
++			-8:00	US	P%sT	1923 May 13  2:00
+ 			-7:00	US	M%sT	1974
+-			-7:00	-	MST	1974 Feb  3 2:00
++			-7:00	-	MST	1974 Feb  3  2:00
+ 			-7:00	US	M%sT
+ 
+ # Indiana
+ #
+ # For a map of Indiana's time zone regions, see:
+-# 
+-# What time is it in Indiana?
+-#  (2006-03-01)
++# http://en.wikipedia.org/wiki/Time_in_Indiana
+ #
+ # From Paul Eggert (2007-08-17):
+ # Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
+ # with the following exceptions:
+ #
+ # - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+-#   Vandenburgh, and Warrick counties have been like America/Chicago.
++#   Vanderburgh, and Warrick counties have been like America/Chicago.
+ #
+ # - Dearborn and Ohio counties have been like America/New_York.
+ #
+@@ -712,22 +713,16 @@
+ # that they would be ambiguous if we left them at the 'America' level.
+ # So we reluctantly put them all in a subdirectory 'America/Indiana'.
+ 
+-# From Paul Eggert (2005-08-16):
+-# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
+-
+-# From Nathan Stratton Treadway (2006-03-30):
+-# http://www.dot.gov/affairs/dot0406.htm [3705 B]
+-# From Deborah Goldsmith (2006-01-18):
+-# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
+-# From Paul Eggert (2006-01-20):
+-# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
++# From Paul Eggert (2014-06-26):
++# https://www.federalregister.gov/articles/2006/01/20/06-563/standard-time-zone-boundary-in-the-state-of-indiana
++# says "DOT is relocating the time zone boundary in Indiana to move Starke,
+ # Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
+ # Eastern Time Zone to the Central Time Zone.... The effective date of
+-# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
++# this rule is 2 a.m. EST Sunday, April 2, 2006, which is the
+ # changeover date from standard time to Daylight Saving Time."
+-# Strictly speaking, this means the affected counties will change their
+-# clocks twice that night, but this obviously is in error.  The intent
+-# is that 01:59:59 EST be followed by 02:00:00 CDT.
++# Strictly speaking, this meant the affected counties changed their
++# clocks twice that night, but this obviously was in error.  The intent
++# was that 01:59:59 EST be followed by 02:00:00 CDT.
+ 
+ # From Gwillim Law (2007-02-10):
+ # The Associated Press has been reporting that Pulaski County, Indiana is
+@@ -739,13 +734,13 @@
+ Rule Indianapolis 1941	1954	-	Sep	lastSun	2:00	0	S
+ Rule Indianapolis 1946	1954	-	Apr	lastSun	2:00	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
++Zone America/Indiana/Indianapolis -5:44:38 - LMT	1883 Nov 18 12:15:22
+ 			-6:00	US	C%sT	1920
+ 			-6:00 Indianapolis C%sT	1942
+ 			-6:00	US	C%sT	1946
+-			-6:00 Indianapolis C%sT	1955 Apr 24 2:00
+-			-5:00	-	EST	1957 Sep 29 2:00
+-			-6:00	-	CST	1958 Apr 27 2:00
++			-6:00 Indianapolis C%sT	1955 Apr 24  2:00
++			-5:00	-	EST	1957 Sep 29  2:00
++			-6:00	-	CST	1958 Apr 27  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+ 			-5:00	-	EST	2006
+@@ -761,10 +756,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Marengo -5:45:23 -	LMT	1883 Nov 18 12:14:37
+ 			-6:00	US	C%sT	1951
+-			-6:00	Marengo	C%sT	1961 Apr 30 2:00
++			-6:00	Marengo	C%sT	1961 Apr 30  2:00
+ 			-5:00	-	EST	1969
+-			-5:00	US	E%sT	1974 Jan  6 2:00
+-			-6:00	1:00	CDT	1974 Oct 27 2:00
++			-5:00	US	E%sT	1974 Jan  6  2:00
++			-6:00	1:00	CDT	1974 Oct 27  2:00
+ 			-5:00	US	E%sT	1976
+ 			-5:00	-	EST	2006
+ 			-5:00	US	E%sT
+@@ -785,11 +780,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Vincennes -5:50:07 - LMT	1883 Nov 18 12:09:53
+ 			-6:00	US	C%sT	1946
+-			-6:00 Vincennes	C%sT	1964 Apr 26 2:00
++			-6:00 Vincennes	C%sT	1964 Apr 26  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+-			-5:00	-	EST	2006 Apr  2 2:00
+-			-6:00	US	C%sT	2007 Nov  4 2:00
++			-5:00	-	EST	2006 Apr  2  2:00
++			-6:00	US	C%sT	2007 Nov  4  2:00
+ 			-5:00	US	E%sT
+ #
+ # Perry County, Indiana, switched from eastern to central time in April 2006.
+@@ -806,10 +801,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Tell_City -5:47:03 - LMT	1883 Nov 18 12:12:57
+ 			-6:00	US	C%sT	1946
+-			-6:00 Perry	C%sT	1964 Apr 26 2:00
++			-6:00 Perry	C%sT	1964 Apr 26  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+-			-5:00	-	EST	2006 Apr  2 2:00
++			-5:00	-	EST	2006 Apr  2  2:00
+ 			-6:00	US	C%sT
+ #
+ # Pike County, Indiana moved from central to eastern time in 1977,
+@@ -822,11 +817,11 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Petersburg -5:49:07 - LMT	1883 Nov 18 12:10:53
+ 			-6:00	US	C%sT	1955
+-			-6:00	Pike	C%sT	1965 Apr 25 2:00
+-			-5:00	-	EST	1966 Oct 30 2:00
+-			-6:00	US	C%sT	1977 Oct 30 2:00
+-			-5:00	-	EST	2006 Apr  2 2:00
+-			-6:00	US	C%sT	2007 Nov  4 2:00
++			-6:00	Pike	C%sT	1965 Apr 25  2:00
++			-5:00	-	EST	1966 Oct 30  2:00
++			-6:00	US	C%sT	1977 Oct 30  2:00
++			-5:00	-	EST	2006 Apr  2  2:00
++			-6:00	US	C%sT	2007 Nov  4  2:00
+ 			-5:00	US	E%sT
+ #
+ # Starke County, Indiana moved from central to eastern time in 1991,
+@@ -844,10 +839,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Knox -5:46:30 -	LMT	1883 Nov 18 12:13:30
+ 			-6:00	US	C%sT	1947
+-			-6:00	Starke	C%sT	1962 Apr 29 2:00
+-			-5:00	-	EST	1963 Oct 27 2:00
+-			-6:00	US	C%sT	1991 Oct 27 2:00
+-			-5:00	-	EST	2006 Apr  2 2:00
++			-6:00	Starke	C%sT	1962 Apr 29  2:00
++			-5:00	-	EST	1963 Oct 27  2:00
++			-6:00	US	C%sT	1991 Oct 27  2:00
++			-5:00	-	EST	2006 Apr  2  2:00
+ 			-6:00	US	C%sT
+ #
+ # Pulaski County, Indiana, switched from eastern to central time in
+@@ -860,17 +855,17 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Winamac -5:46:25 - LMT	1883 Nov 18 12:13:35
+ 			-6:00	US	C%sT	1946
+-			-6:00	Pulaski	C%sT	1961 Apr 30 2:00
++			-6:00	Pulaski	C%sT	1961 Apr 30  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1971
+-			-5:00	-	EST	2006 Apr  2 2:00
+-			-6:00	US	C%sT	2007 Mar 11 2:00
++			-5:00	-	EST	2006 Apr  2  2:00
++			-6:00	US	C%sT	2007 Mar 11  2:00
+ 			-5:00	US	E%sT
+ #
+ # Switzerland County, Indiana, did not observe DST from 1973 through 2005.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Indiana/Vevay -5:40:16 -	LMT	1883 Nov 18 12:19:44
+-			-6:00	US	C%sT	1954 Apr 25 2:00
++			-6:00	US	C%sT	1954 Apr 25  2:00
+ 			-5:00	-	EST	1969
+ 			-5:00	US	E%sT	1973
+ 			-5:00	-	EST	2006
+@@ -891,18 +886,17 @@
+ 			-6:00	US	C%sT	1921
+ 			-6:00 Louisville C%sT	1942
+ 			-6:00	US	C%sT	1946
+-			-6:00 Louisville C%sT	1961 Jul 23 2:00
++			-6:00 Louisville C%sT	1961 Jul 23  2:00
+ 			-5:00	-	EST	1968
+-			-5:00	US	E%sT	1974 Jan  6 2:00
+-			-6:00	1:00	CDT	1974 Oct 27 2:00
++			-5:00	US	E%sT	1974 Jan  6  2:00
++			-6:00	1:00	CDT	1974 Oct 27  2:00
+ 			-5:00	US	E%sT
+ #
+ # Wayne County, Kentucky
+ #
+-# From
+-# 
+-# Lake Cumberland LIFE
+-#  (1999-01-29) via WKYM-101.7:
++# From Lake Cumberland LIFE
++# http://www.lake-cumberland.com/life/archive/news990129time.shtml
++# (1999-01-29) via WKYM-101.7:
+ # Clinton County has joined Wayne County in asking the DoT to change from
+ # the Central to the Eastern time zone....  The Wayne County government made
+ # the same request in December.  And while Russell County officials have not
+@@ -919,9 +913,8 @@
+ #
+ # From Paul Eggert (2001-07-16):
+ # The final rule was published in the
+-# 
+-# Federal Register 65, 160 (2000-08-17), page 50154-50158.
+-# 
++# Federal Register 65, 160 (2000-08-17), pp 50154-50158.
++# http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22
+ #
+ Zone America/Kentucky/Monticello -5:39:24 - LMT	1883 Nov 18 12:20:36
+ 			-6:00	US	C%sT	1946
+@@ -946,9 +939,8 @@
+ # See America/North_Dakota/Center for the Oliver County, ND change.
+ # West Wendover, NV officially switched from Pacific to mountain time on
+ # 1999-10-31.  See the
+-# 
+-# Federal Register 64, 203 (1999-10-21), page 56705-56707.
+-# 
++# Federal Register 64, 203 (1999-10-21), pp 56705-56707.
++# http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=1999_register&docid=fr21oc99-15
+ # However, the Federal Register says that West Wendover already operated
+ # on mountain time, and the rule merely made this official;
+ # hence a separate tz entry is not needed.
+@@ -986,12 +978,12 @@
+ Rule	Detroit	1967	only	-	Oct	lastSun	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Detroit	-5:32:11 -	LMT	1905
+-			-6:00	-	CST	1915 May 15 2:00
++			-6:00	-	CST	1915 May 15  2:00
+ 			-5:00	-	EST	1942
+ 			-5:00	US	E%sT	1946
+ 			-5:00	Detroit	E%sT	1973
+ 			-5:00	US	E%sT	1975
+-			-5:00	-	EST	1975 Apr 27 2:00
++			-5:00	-	EST	1975 Apr 27  2:00
+ 			-5:00	US	E%sT
+ #
+ # Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+@@ -1004,8 +996,8 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
+ 			-6:00	US	C%sT	1946
+-			-6:00 Menominee	C%sT	1969 Apr 27 2:00
+-			-5:00	-	EST	1973 Apr 29 2:00
++			-6:00 Menominee	C%sT	1969 Apr 27  2:00
++			-5:00	-	EST	1973 Apr 29  2:00
+ 			-6:00	US	C%sT
+ 
+ # Navassa
+@@ -1022,19 +1014,19 @@
+ ################################################################################
+ 
+ 
+-# From Paul Eggert (2006-03-22):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
+-#
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+ # Other sources occasionally used include:
+ #
+@@ -1042,9 +1034,9 @@
+ #	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+ #	which I found in the UCLA library.
+ #
+-#	
+ #	William Willett, The Waste of Daylight, 19th edition
+-#	 (1914-03)
++#	
++#	[PDF] (1914-03)
+ #
+ #	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+ #	.
+@@ -1053,11 +1045,11 @@
+ 
+ # Canada
+ 
+-# From Alain LaBont (1994-11-14):
++# From Alain LaBonté (1994-11-14):
+ # I post here the time zone abbreviations standardized in Canada
+ # for both English and French in the CAN/CSA-Z234.4-89 standard....
+ #
+-#	UTC	Standard time	Daylight savings time
++#	UTC	Standard time	Daylight saving time
+ #	offset	French	English	French	English
+ #	-2:30	-	-	HAT	NDT
+ #	-3	-	-	HAA	ADT
+@@ -1070,7 +1062,7 @@
+ #	-9	HNY	YST	-	-
+ #
+ #	HN: Heure Normale	ST: Standard Time
+-#	HA: Heure Avance	DT: Daylight saving Time
++#	HA: Heure Avancée	DT: Daylight saving Time
+ #
+ #	A: de l'Atlantique	Atlantic
+ #	C: du Centre		Central
+@@ -1085,7 +1077,7 @@
+ # From Paul Eggert (1994-11-22):
+ # Alas, this sort of thing must be handled by localization software.
+ 
+-# Unless otherwise specified, the data for Canada are all from Shanks
++# Unless otherwise specified, the data entries for Canada are all from Shanks
+ # & Pottenger.
+ 
+ # From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
+@@ -1132,17 +1124,16 @@
+ # An amendment to the Interpretation Act was registered on February 19/2007....
+ # http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
+ 
+-# From Paul Eggert (2006-04-25):
++# From Paul Eggert (2014-10-18):
+ # H. David Matthews and Mary Vincent's map
+-# 
+ # "It's about TIME", _Canadian Geographic_ (September-October 1998)
+-#  contains detailed boundaries for regions observing nonstandard
++# http://www.canadiangeographic.ca/Magazine/SO98/alacarte.asp
++# contains detailed boundaries for regions observing nonstandard
+ # time and daylight saving time arrangements in Canada circa 1998.
+ #
+-# INMS, the Institute for National Measurement Standards in Ottawa, has 
+-# information about standard and daylight saving time zones in Canada.
+-#  (updated periodically).
++# National Research Council Canada maintains info about time zones and DST.
++# http://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html
++# http://www.nrc-cnrc.gc.ca/eng/services/time/faq/index.html#Q5
+ # Its unofficial information is often taken from Matthews and Vincent.
+ 
+ # From Paul Eggert (2006-06-27):
+@@ -1151,9 +1142,7 @@
+ 
+ # From Chris Walton (2011-12-01)
+ # In the first of Tammy Hardwick's articles
+-# 
+ # http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+-# 
+ # she quotes the Friday November 1/1918 edition of the Creston Review.
+ # The quote includes these two statements:
+ # 'Sunday the CPR went back to the old system of time...'
+@@ -1221,9 +1210,7 @@
+ # Time to Standard Time and from Standard Time to Daylight Savings Time
+ # now occurs at 2:00AM.
+ # ...
+-# 
+ # http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm
+-# 
+ # ...
+ # MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery
+ # Office of the Chief Information Officer
+@@ -1259,7 +1246,7 @@
+ 			-3:30	-	NST	1936
+ 			-3:30	StJohns	N%sT	1942 May 11
+ 			-3:30	Canada	N%sT	1946
+-			-3:30	StJohns	N%sT	1966 Mar 15 2:00
++			-3:30	StJohns	N%sT	1966 Mar 15  2:00
+ 			-4:00	StJohns	A%sT	2011 Nov
+ 			-4:00	Canada	A%sT
+ 
+@@ -1320,7 +1307,7 @@
+ Zone America/Halifax	-4:14:24 -	LMT	1902 Jun 15
+ 			-4:00	Halifax	A%sT	1918
+ 			-4:00	Canada	A%sT	1919
+-			-4:00	Halifax	A%sT	1942 Feb  9 2:00s
++			-4:00	Halifax	A%sT	1942 Feb  9  2:00s
+ 			-4:00	Canada	A%sT	1946
+ 			-4:00	Halifax	A%sT	1974
+ 			-4:00	Canada	A%sT
+@@ -1379,7 +1366,7 @@
+ # meridian is supposed to observe AST, but residents as far east as
+ # Natashquan use EST/EDT, and residents east of Natashquan use AST.
+ # The Quebec department of justice writes in
+-# "The situation in Minganie and Basse-Cote-Nord"
++# "The situation in Minganie and Basse-Côte-Nord"
+ # http://www.justice.gouv.qc.ca/english/publications/generale/temps-minganie-a.htm
+ # that the coastal strip from just east of Natashquan to Blanc-Sablon
+ # observes Atlantic standard time all year round.
+@@ -1387,7 +1374,6 @@
+ # says this common practice was codified into law as of 2007.
+ # For lack of better info, guess this practice began around 1970, contra to
+ # Shanks & Pottenger who have this region observing AST/ADT.
+-# for post-1970 data America/Puerto_Rico.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
+@@ -1401,18 +1387,10 @@
+ Rule	Mont	1924	only	-	May	17	2:00	1:00	D
+ Rule	Mont	1924	1926	-	Sep	lastSun	2:30	0	S
+ Rule	Mont	1925	1926	-	May	Sun>=1	2:00	1:00	D
+-# The 1927-to-1937 rules can be expressed more simply as
+-# Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
+-# Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
+-# The rules below avoid use of 24:00
+-# (which pre-1998 versions of zic cannot handle).
+-Rule	Mont	1927	only	-	May	1	0:00	1:00	D
+-Rule	Mont	1927	1932	-	Sep	lastSun	0:00	0	S
+-Rule	Mont	1928	1931	-	Apr	lastSun	0:00	1:00	D
+-Rule	Mont	1932	only	-	May	1	0:00	1:00	D
+-Rule	Mont	1933	1940	-	Apr	lastSun	0:00	1:00	D
+-Rule	Mont	1933	only	-	Oct	1	0:00	0	S
+-Rule	Mont	1934	1939	-	Sep	lastSun	0:00	0	S
++Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
++Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
++Rule	Mont	1938	1940	-	Apr	lastSun	0:00	1:00	D
++Rule	Mont	1938	1939	-	Sep	lastSun	0:00	0	S
+ Rule	Mont	1946	1973	-	Apr	lastSun	2:00	1:00	D
+ Rule	Mont	1945	1948	-	Sep	lastSun	2:00	0	S
+ Rule	Mont	1949	1950	-	Oct	lastSun	2:00	0	S
+@@ -1426,7 +1404,7 @@
+ Zone America/Montreal	-4:54:16 -	LMT	1884
+ 			-5:00	Mont	E%sT	1918
+ 			-5:00	Canada	E%sT	1919
+-			-5:00	Mont	E%sT	1942 Feb  9 2:00s
++			-5:00	Mont	E%sT	1942 Feb  9  2:00s
+ 			-5:00	Canada	E%sT	1946
+ 			-5:00	Mont	E%sT	1974
+ 			-5:00	Canada	E%sT
+@@ -1448,7 +1426,7 @@
+ # have already done so.  In Orillia DST was to run until Saturday,
+ # 1912-08-31 (no time mentioned), but it was met with considerable
+ # hostility from certain segments of the public, and was revoked after
+-# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
++# only two weeks - I copied it as Saturday, 1912-07-07, 22:00, but
+ # presumably that should be -07-06.  (1912-06-19, -07-12; also letters
+ # earlier in June).
+ #
+@@ -1458,10 +1436,8 @@
+ # Mark Brader writes that an article in the 1997-10-14 Toronto Star
+ # says that Atikokan, Ontario currently does not observe DST,
+ # but will vote on 11-10 whether to use EST/EDT.
+-# He also writes that the
+-# 
+-# Ontario Time Act (1990, Chapter T.9)
+-# 
++# He also writes that the Ontario Time Act (1990, Chapter T.9)
++# http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html
+ # says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
+ # Officially Atikokan is therefore on CST/CDT, and most likely this report
+ # concerns a non-official time observed as a matter of local practice.
+@@ -1540,9 +1516,7 @@
+ # The Journal of The Royal Astronomical Society of Canada,
+ # volume 26, number 2 (February 1932) and, as of 2010-07-17,
+ # was available at
+-# 
+ # http://adsabs.harvard.edu/full/1932JRASC..26...49S
+-# 
+ #
+ # It includes the text below (starting on page 57):
+ #
+@@ -1553,26 +1527,26 @@
+ # ing in 1930. The information for the province of Quebec is definite,
+ # for the other provinces only approximate:
+ #
+-# 	Province	Daylight saving time used
++#	Province	Daylight saving time used
+ # Prince Edward Island	Not used.
+ # Nova Scotia		In Halifax only.
+ # New Brunswick		In St. John only.
+ # Quebec		In the following places:
+-# 			Montreal	Lachine
+-# 			Quebec		Mont-Royal
+-# 			Levis		Iberville
+-# 			St. Lambert	Cap de la Madeleine
+-# 			Verdun		Loretteville
+-# 			Westmount	Richmond
+-# 			Outremont	St. Jerome
+-# 			Longueuil	Greenfield Park
+-# 			Arvida		Waterloo
+-# 			Chambly-Canton	Beaulieu
+-# 			Melbourne	La Tuque
+-# 			St. Theophile	Buckingham
++#			Montreal	Lachine
++#			Quebec		Mont-Royal
++#			Lévis		Iberville
++#			St. Lambert	Cap de la Madelèine
++#			Verdun		Loretteville
++#			Westmount	Richmond
++#			Outremont	St. Jérôme
++#			Longueuil	Greenfield Park
++#			Arvida		Waterloo
++#			Chambly-Canton	Beaulieu
++#			Melbourne	La Tuque
++#			St. Théophile	Buckingham
+ # Ontario		Used generally in the cities and towns along
+-# 			the southerly part of the province. Not
+-# 			used in the northwesterlhy part.
++#			the southerly part of the province. Not
++#			used in the northwesterly part.
+ # Manitoba		Not used.
+ # Saskatchewan		In Regina only.
+ # Alberta		Not used.
+@@ -1641,7 +1615,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Toronto	-5:17:32 -	LMT	1895
+ 			-5:00	Canada	E%sT	1919
+-			-5:00	Toronto	E%sT	1942 Feb  9 2:00s
++			-5:00	Toronto	E%sT	1942 Feb  9  2:00s
+ 			-5:00	Canada	E%sT	1946
+ 			-5:00	Toronto	E%sT	1974
+ 			-5:00	Canada	E%sT
+@@ -1654,16 +1628,16 @@
+ 			-5:00	Canada	E%sT
+ Zone America/Nipigon	-5:53:04 -	LMT	1895
+ 			-5:00	Canada	E%sT	1940 Sep 29
+-			-5:00	1:00	EDT	1942 Feb  9 2:00s
++			-5:00	1:00	EDT	1942 Feb  9  2:00s
+ 			-5:00	Canada	E%sT
+ Zone America/Rainy_River -6:18:16 -	LMT	1895
+ 			-6:00	Canada	C%sT	1940 Sep 29
+-			-6:00	1:00	CDT	1942 Feb  9 2:00s
++			-6:00	1:00	CDT	1942 Feb  9  2:00s
+ 			-6:00	Canada	C%sT
+ Zone America/Atikokan	-6:06:28 -	LMT	1895
+ 			-6:00	Canada	C%sT	1940 Sep 29
+-			-6:00	1:00	CDT	1942 Feb  9 2:00s
+-			-6:00	Canada	C%sT	1945 Sep 30 2:00
++			-6:00	1:00	CDT	1942 Feb  9  2:00s
++			-6:00	Canada	C%sT	1945 Sep 30  2:00
+ 			-5:00	-	EST
+ 
+ 
+@@ -1676,7 +1650,7 @@
+ # the first Sunday of April of each year and two o'clock Central
+ # Standard Time in the morning of the last Sunday of October next
+ # following, one hour in advance of Central Standard Time."...
+-# I believe that the English legislation [of the old time act] had =
++# I believe that the English legislation [of the old time act] had
+ # been assented to (March 22, 1967)....
+ # Also, as far as I can tell, there was no order-in-council varying
+ # the time of Daylight Saving Time for 2005 and so the provisions of
+@@ -1799,12 +1773,12 @@
+ Rule	Swift	1960	1961	-	Sep	lastSun	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Regina	-6:58:36 -	LMT	1905 Sep
+-			-7:00	Regina	M%sT	1960 Apr lastSun 2:00
++			-7:00	Regina	M%sT	1960 Apr lastSun  2:00
+ 			-6:00	-	CST
+ Zone America/Swift_Current -7:11:20 -	LMT	1905 Sep
+-			-7:00	Canada	M%sT	1946 Apr lastSun 2:00
++			-7:00	Canada	M%sT	1946 Apr lastSun  2:00
+ 			-7:00	Regina	M%sT	1950
+-			-7:00	Swift	M%sT	1972 Apr lastSun 2:00
++			-7:00	Swift	M%sT	1972 Apr lastSun  2:00
+ 			-6:00	-	CST
+ 
+ 
+@@ -1854,9 +1828,7 @@
+ # Earlier this year I stumbled across a detailed article about the time
+ # keeping history of Creston; it was written by Tammy Hardwick who is the
+ # manager of the Creston & District Museum. The article was written in May 2009.
+-# 
+ # http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+-# 
+ # According to the article, Creston has not changed its clocks since June 1918.
+ # i.e. Creston has been stuck on UTC-7 for 93 years.
+ # Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
+@@ -1864,18 +1836,16 @@
+ # Unfortunately the exact date for the time change in June 1918 remains
+ # unknown and will be difficult to ascertain.  I e-mailed Tammy a few months
+ # ago to ask if Sunday June 2 was a reasonable guess.  She said it was just
+-# as plausible as any other date (in June).  She also said that after writing the
+-# article she had discovered another time change in 1916; this is the subject
+-# of another article which she wrote in October 2010.
+-# 
++# as plausible as any other date (in June).  She also said that after writing
++# the article she had discovered another time change in 1916; this is the
++# subject of another article which she wrote in October 2010.
+ # http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
+-# 
+ 
+ # Here is a summary of the three clock change events in Creston's history:
+ # 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
+ # Exact date unknown
+ # 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
+-# Exact date in October unknown;  Sunday October 1 is a reasonable guess.
++# Exact date in October unknown; Sunday October 1 is a reasonable guess.
+ # 3. June 1918: switch to Pacific Daylight Time (GMT-7)
+ # Exact date in June unknown; Sunday June 2 is a reasonable guess.
+ # note#1:
+@@ -1888,9 +1858,7 @@
+ # There is no guarantee that Creston will remain on Mountain Standard Time
+ # (UTC-7) forever.
+ # The subject was debated at least once this year by the town Council.
+-# 
+ # http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
+-# 
+ 
+ # During a period WWII, summer time (Daylight saying) was mandatory in Canada.
+ # In Creston, that was handled by shifting the area to PST (-8:00) then applying
+@@ -1917,7 +1885,7 @@
+ 			-8:00	Canada	P%sT
+ Zone America/Dawson_Creek -8:00:56 -	LMT	1884
+ 			-8:00	Canada	P%sT	1947
+-			-8:00	Vanc	P%sT	1972 Aug 30 2:00
++			-8:00	Vanc	P%sT	1972 Aug 30  2:00
+ 			-7:00	-	MST
+ Zone America/Creston	-7:46:04 -	LMT	1884
+ 			-7:00	-	MST	1916 Oct 1
+@@ -1944,18 +1912,17 @@
+ 
+ # From Rives McDow (1999-09-04):
+ # Nunavut ... moved ... to incorporate the whole territory into one time zone.
+-# 
+ # Nunavut moves to single time zone Oct. 31
+-# 
++# http://www.nunatsiaq.com/nunavut/nvt90903_13.html
+ #
+ # From Antoine Leca (1999-09-06):
+ # We then need to create a new timezone for the Kitikmeot region of Nunavut
+ # to differentiate it from the Yellowknife region.
+ 
+ # From Paul Eggert (1999-09-20):
+-# 
+ # Basic Facts: The New Territory
+-#  (1999) reports that Pangnirtung operates on eastern time,
++# http://www.nunavut.com/basicfacts/english/basicfacts_1territory.html
++# (1999) reports that Pangnirtung operates on eastern time,
+ # and that Coral Harbour does not observe DST.  We don't know when
+ # Pangnirtung switched to eastern time; we'll guess 1995.
+ 
+@@ -1983,8 +1950,8 @@
+ # the current state of affairs.
+ 
+ # From Michaela Rodrigue, writing in the
+-# 
+-# Nunatsiaq News (1999-11-19):
++# Nunatsiaq News (1999-11-19):
++# http://www.nunatsiaq.com/archives/nunavut991130/nvt91119_17.html
+ # Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
+ # central - or Nunavut time - for government offices, and eastern time
+ # for municipal offices and schools....  Igloolik [was similar but then]
+@@ -2002,10 +1969,8 @@
+ # Central Time and Southampton Island [in the Central zone] is not
+ # required to use daylight savings.
+ 
+-# From
+-# 
+-# Nunavut now has two time zones
+-#  (2000-11-10):
++# From 
++# Nunavut now has two time zones (2000-11-10):
+ # The Nunavut government would allow its employees in Kugluktuk and
+ # Cambridge Bay to operate on central time year-round, putting them
+ # one hour behind the rest of Nunavut for six months during the winter.
+@@ -2033,10 +1998,7 @@
+ # [Also see  (2001-03-09).]
+ 
+ # From Gwillim Law (2005-05-21):
+-# According to maps at
+-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
+-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
+-# (both dated 2003), and
++# According to ...
+ # http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
+ # (from a 1998 Canadian Geographic article), the de facto and de jure time
+ # for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
+@@ -2045,9 +2007,11 @@
+ # predates the creation of Nunavut, it probably goes back many years....
+ # The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
+ #
+-# From Paul Eggert (2005-07-26):
++# From Paul Eggert (2014-10-17):
+ # For lack of better information, assume that Southampton Island observed
+-# daylight saving only during wartime.
++# daylight saving only during wartime.  Gwillim Law's email also
++# mentioned maps now maintained by National Research Council Canada;
++# see above for an up-to-date link.
+ 
+ # From Chris Walton (2007-03-01):
+ # ... the community of Resolute (located on Cornwallis Island in
+@@ -2096,9 +2060,7 @@
+ # used to be the mayor of Resolute Bay and he apparently owns half the
+ # businesses including "South Camp Inn." This website has some info on
+ # Aziz:
+-# 
+ # http://www.uphere.ca/node/493
+-# 
+ #
+ # I sent Aziz an e-mail asking when Resolute Bay had stopped using
+ # Eastern Standard Time.
+@@ -2136,47 +2098,47 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # aka Panniqtuuq
+ Zone America/Pangnirtung 0	-	zzz	1921 # trading post est.
+-			-4:00	NT_YK	A%sT	1995 Apr Sun>=1 2:00
+-			-5:00	Canada	E%sT	1999 Oct 31 2:00
+-			-6:00	Canada	C%sT	2000 Oct 29 2:00
++			-4:00	NT_YK	A%sT	1995 Apr Sun>=1  2:00
++			-5:00	Canada	E%sT	1999 Oct 31  2:00
++			-6:00	Canada	C%sT	2000 Oct 29  2:00
+ 			-5:00	Canada	E%sT
+ # formerly Frobisher Bay
+ Zone America/Iqaluit	0	-	zzz	1942 Aug # Frobisher Bay est.
+-			-5:00	NT_YK	E%sT	1999 Oct 31 2:00
+-			-6:00	Canada	C%sT	2000 Oct 29 2:00
++			-5:00	NT_YK	E%sT	1999 Oct 31  2:00
++			-6:00	Canada	C%sT	2000 Oct 29  2:00
+ 			-5:00	Canada	E%sT
+ # aka Qausuittuq
+ Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
+-			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+-			-5:00	-	EST	2001 Apr  1 3:00
+-			-6:00	Canada	C%sT	2006 Oct 29 2:00
+-			-5:00	-	EST	2007 Mar 11 3:00
++			-6:00	NT_YK	C%sT	2000 Oct 29  2:00
++			-5:00	-	EST	2001 Apr  1  3:00
++			-6:00	Canada	C%sT	2006 Oct 29  2:00
++			-5:00	-	EST	2007 Mar 11  3:00
+ 			-6:00	Canada	C%sT
+ # aka Kangiqiniq
+ Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
+-			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+-			-5:00	-	EST	2001 Apr  1 3:00
++			-6:00	NT_YK	C%sT	2000 Oct 29  2:00
++			-5:00	-	EST	2001 Apr  1  3:00
+ 			-6:00	Canada	C%sT
+ # aka Iqaluktuuttiaq
+ Zone America/Cambridge_Bay 0	-	zzz	1920 # trading post est.?
+-			-7:00	NT_YK	M%sT	1999 Oct 31 2:00
+-			-6:00	Canada	C%sT	2000 Oct 29 2:00
+-			-5:00	-	EST	2000 Nov  5 0:00
+-			-6:00	-	CST	2001 Apr  1 3:00
++			-7:00	NT_YK	M%sT	1999 Oct 31  2:00
++			-6:00	Canada	C%sT	2000 Oct 29  2:00
++			-5:00	-	EST	2000 Nov  5  0:00
++			-6:00	-	CST	2001 Apr  1  3:00
+ 			-7:00	Canada	M%sT
+ Zone America/Yellowknife 0	-	zzz	1935 # Yellowknife founded?
+ 			-7:00	NT_YK	M%sT	1980
+ 			-7:00	Canada	M%sT
+ Zone America/Inuvik	0	-	zzz	1953 # Inuvik founded
+-			-8:00	NT_YK	P%sT	1979 Apr lastSun 2:00
++			-8:00	NT_YK	P%sT	1979 Apr lastSun  2:00
+ 			-7:00	NT_YK	M%sT	1980
+ 			-7:00	Canada	M%sT
+ Zone America/Whitehorse	-9:00:12 -	LMT	1900 Aug 20
+-			-9:00	NT_YK	Y%sT	1966 Jul 1 2:00
++			-9:00	NT_YK	Y%sT	1966 Jul  1  2:00
+ 			-8:00	NT_YK	P%sT	1980
+ 			-8:00	Canada	P%sT
+ Zone America/Dawson	-9:17:40 -	LMT	1900 Aug 20
+-			-9:00	NT_YK	Y%sT	1973 Oct 28 0:00
++			-9:00	NT_YK	Y%sT	1973 Oct 28  0:00
+ 			-8:00	NT_YK	P%sT	1980
+ 			-8:00	Canada	P%sT
+ 
+@@ -2188,9 +2150,8 @@
+ # From Paul Eggert (2001-03-05):
+ # The Investigation and Analysis Service of the
+ # Mexican Library of Congress (MLoC) has published a
+-# 
+ # history of Mexican local time (in Spanish)
+-# .
++# http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/
+ #
+ # Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
+ # (In all cases we go with the MLoC.)
+@@ -2235,9 +2196,8 @@
+ # -------------- End Forwarded Message --------------
+ # From Paul Eggert (1996-06-12):
+ # For an English translation of the decree, see
+-# 
+ # "Diario Oficial: Time Zone Changeover" (1996-01-04).
+-# 
++# http://mexico-travel.com/extra/timezone_eng.html
+ 
+ # From Rives McDow (1998-10-08):
+ # The State of Quintana Roo has reverted back to central STD and DST times
+@@ -2249,7 +2209,7 @@
+ # savings time so as to stay on the same time zone as the southern part of
+ # Arizona year round.
+ 
+-# From Jesper Norgaard, translating
++# From Jesper Nørgaard, translating
+ #  (2001-01-17):
+ # In Oaxaca, the 55.000 teachers from the Section 22 of the National
+ # Syndicate of Education Workers, refuse to apply daylight saving each
+@@ -2262,7 +2222,7 @@
+ # January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
+ # that Summer Time will be reduced from seven to five months, starting
+ # this year....
+-# 
++# http://www.publico.com.mx/scripts/texto3.asp?action=pagina&pag=21&pos=p&secc=naci&date=01/17/2001
+ # [translated], says "summer time will ... take effect on the first Sunday
+ # in May, and end on the last Sunday of September.
+ 
+@@ -2270,23 +2230,22 @@
+ # The 2001-01-24 traditional Washington Post contained the page one
+ # story "Timely Issue Divides Mexicans."...
+ # http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
+-# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
++# ... Mexico City Mayor López Obrador "...is threatening to keep
+ # Mexico City and its 20 million residents on a different time than
+-# the rest of the country..." In particular, Lopez Obrador would abolish
++# the rest of the country..." In particular, López Obrador would abolish
+ # observation of Daylight Saving Time.
+ 
+-# 
+ # Official statute published by the Energy Department
+-#  (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
+-# and Sonora with no DST.  This was reported by Jesper Norgaard (2001-02-03).
++# http://www.conae.gob.mx/ahorro/decretohorver2001.html#decre
++# (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
++# and Sonora with no DST.  This was reported by Jesper Nørgaard (2001-02-03).
+ 
+ # From Paul Eggert (2001-03-03):
+ #
+-# 
++# http://www.latimes.com/news/nation/20010303/t000018766.html
+ # James F. Smith writes in today's LA Times
+-# 
+ # * Sonora will continue to observe standard time.
+-# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
++# * Last week Mexico City's mayor Andrés Manuel López Obrador decreed that
+ #   the Federal District will not adopt DST.
+ # * 4 of 16 district leaders announced they'll ignore the decree.
+ # * The decree does not affect federal-controlled facilities including
+@@ -2294,7 +2253,7 @@
+ #
+ # For now we'll assume that the Federal District will bow to federal rules.
+ 
+-# From Jesper Norgaard (2001-04-01):
++# From Jesper Nørgaard (2001-04-01):
+ # I found some references to the Mexican application of daylight
+ # saving, which modifies what I had already sent you, stating earlier
+ # that a number of northern Mexican states would go on daylight
+@@ -2303,7 +2262,7 @@
+ # saving all year) will follow the original decree of president
+ # Vicente Fox, starting daylight saving May 6, 2001 and ending
+ # September 30, 2001.
+-# References: "Diario de Monterrey" 
++# References: "Diario de Monterrey" 
+ # Palabra  (2001-03-31)
+ 
+ # From Reuters (2001-09-04):
+@@ -2315,7 +2274,7 @@
+ # standard time. "This is so residents of the Federal District are not
+ # subject to unexpected time changes," a statement from the court said.
+ 
+-# From Jesper Norgaard Welen (2002-03-12):
++# From Jesper Nørgaard Welen (2002-03-12):
+ # ... consulting my local grocery store(!) and my coworkers, they all insisted
+ # that a new decision had been made to reinstate US style DST in Mexico....
+ # http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
+@@ -2329,48 +2288,36 @@
+ # > the United States.
+ # Now this has passed both the Congress and the Senate, so starting from
+ # 2010, some border regions will be the same:
+-# 
+ # http://www.signonsandiego.com/news/2009/dec/28/clocks-will-match-both-sides-border/
+-# 
+-# 
+ # http://www.elmananarey.com/diario/noticia/nacional/noticias/empatan_horario_de_frontera_con_eu/621939
+-# 
+ # (Spanish)
+ #
+ # Could not find the new law text, but the proposed law text changes are here:
+-# 
+ # http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/20091210-V.pdf
+-# 
+ # (Gaceta Parlamentaria)
+ #
+ # There is also a list of the votes here:
+-# 
+ # http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/V2-101209.html
+-# 
+ #
+ # Our page:
+-# 
+ # http://www.timeanddate.com/news/time/north-mexico-dst-change.html
+-# 
+ 
+ # From Arthur David Olson (2010-01-20):
+ # The page
+-# 
+ # http://dof.gob.mx/nota_detalle.php?codigo=5127480&fecha=06/01/2010
+-# 
+ # includes this text:
+ # En los municipios fronterizos de Tijuana y Mexicali en Baja California;
+-# Juárez y Ojinaga en Chihuahua; Acuña y Piedras Negras en Coahuila;
+-# Anáhuac en Nuevo León; y Nuevo Laredo, Reynosa y Matamoros en
+-# Tamaulipas, la aplicación de este horario estacional surtirá efecto
+-# desde las dos horas del segundo domingo de marzo y concluirá a las dos
++# Juárez y Ojinaga en Chihuahua; Acuña y Piedras Negras en Coahuila;
++# Anáhuac en Nuevo León; y Nuevo Laredo, Reynosa y Matamoros en
++# Tamaulipas, la aplicación de este horario estacional surtirá efecto
++# desde las dos horas del segundo domingo de marzo y concluirá a las dos
+ # horas del primer domingo de noviembre.
+ # En los municipios fronterizos que se encuentren ubicados en la franja
+-# fronteriza norte en el territorio comprendido entre la línea
+-# internacional y la línea paralela ubicada a una distancia de veinte
+-# kilómetros, así como la Ciudad de Ensenada, Baja California, hacia el
+-# interior del país, la aplicación de este horario estacional surtirá
+-# efecto desde las dos horas del segundo domingo de marzo y concluirá a
++# fronteriza norte en el territorio comprendido entre la línea
++# internacional y la línea paralela ubicada a una distancia de veinte
++# kilómetros, así como la Ciudad de Ensenada, Baja California, hacia el
++# interior del país, la aplicación de este horario estacional surtirá
++# efecto desde las dos horas del segundo domingo de marzo y concluirá a
+ # las dos horas del primer domingo de noviembre.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -2389,39 +2336,39 @@
+ Rule	Mexico	2002	max	-	Apr	Sun>=1	2:00	1:00	D
+ Rule	Mexico	2002	max	-	Oct	lastSun	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-# Quintana Roo
++# Quintana Roo; represented by Cancún
+ Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
+ 			-6:00	-	CST	1981 Dec 23
+ 			-5:00	Mexico	E%sT	1998 Aug  2  2:00
+ 			-6:00	Mexico	C%sT
+-# Campeche, Yucatan
++# Campeche, Yucatán; represented by Mérida
+ Zone America/Merida	-5:58:28 -	LMT	1922 Jan  1  0:01:32
+ 			-6:00	-	CST	1981 Dec 23
+ 			-5:00	-	EST	1982 Dec  2
+ 			-6:00	Mexico	C%sT
+-# Coahuila, Durango, Nuevo Leon, Tamaulipas (near US border)
++# Coahuila, Durango, Nuevo León, Tamaulipas (near US border)
+ Zone America/Matamoros	-6:40:00 -	LMT	1921 Dec 31 23:20:00
+ 			-6:00	-	CST	1988
+ 			-6:00	US	C%sT	1989
+ 			-6:00	Mexico	C%sT	2010
+ 			-6:00	US	C%sT
+-# Coahuila, Durango, Nuevo Leon, Tamaulipas (away from US border)
++# Coahuila, Durango, Nuevo León, Tamaulipas (away from US border)
+ Zone America/Monterrey	-6:41:16 -	LMT	1921 Dec 31 23:18:44
+ 			-6:00	-	CST	1988
+ 			-6:00	US	C%sT	1989
+ 			-6:00	Mexico	C%sT
+ # Central Mexico
+-Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1 0:23:24
++Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1  0:23:24
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+ 			-7:00	-	MST	1931 May  1 23:00
+ 			-6:00	-	CST	1931 Oct
+ 			-7:00	-	MST	1932 Apr  1
+-			-6:00	Mexico	C%sT	2001 Sep 30 02:00
++			-6:00	Mexico	C%sT	2001 Sep 30  2:00
+ 			-6:00	-	CST	2002 Feb 20
+ 			-6:00	Mexico	C%sT
+ # Chihuahua (near US border)
+-Zone America/Ojinaga	-6:57:40 -	LMT	1922 Jan 1 0:02:20
++Zone America/Ojinaga	-6:57:40 -	LMT	1922 Jan  1  0:02:20
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+ 			-7:00	-	MST	1931 May  1 23:00
+@@ -2429,7 +2376,7 @@
+ 			-7:00	-	MST	1932 Apr  1
+ 			-6:00	-	CST	1996
+ 			-6:00	Mexico	C%sT	1998
+-			-6:00	-	CST	1998 Apr Sun>=1 3:00
++			-6:00	-	CST	1998 Apr Sun>=1  3:00
+ 			-7:00	Mexico	M%sT	2010
+ 			-7:00	US	M%sT
+ # Chihuahua (away from US border)
+@@ -2441,7 +2388,7 @@
+ 			-7:00	-	MST	1932 Apr  1
+ 			-6:00	-	CST	1996
+ 			-6:00	Mexico	C%sT	1998
+-			-6:00	-	CST	1998 Apr Sun>=1 3:00
++			-6:00	-	CST	1998 Apr Sun>=1  3:00
+ 			-7:00	Mexico	M%sT
+ # Sonora
+ Zone America/Hermosillo	-7:23:52 -	LMT	1921 Dec 31 23:36:08
+@@ -2457,42 +2404,33 @@
+ 			-7:00	-	MST
+ 
+ # From Alexander Krivenyshev (2010-04-21):
+-# According to news, Bahía de Banderas (Mexican state of Nayarit)
++# According to news, Bahía de Banderas (Mexican state of Nayarit)
+ # changed time zone UTC-7 to new time zone UTC-6 on April 4, 2010 (to
+ # share the same time zone as nearby city Puerto Vallarta, Jalisco).
+ #
+ # (Spanish)
+-# Bahía de Banderas homologa su horario al del centro del
+-# país, a partir de este domingo
+-# 
++# Bahía de Banderas homologa su horario al del centro del
++# país, a partir de este domingo
+ # http://www.nayarit.gob.mx/notes.asp?id=20748
+-# 
+ #
+-# Bahía de Banderas homologa su horario con el del Centro del
+-# País
+-# 
+-# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50"
+-# 
++# Bahía de Banderas homologa su horario con el del Centro del
++# País
++# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50
+ #
+ # (English)
+-# Puerto Vallarta and Bahía de Banderas: One Time Zone
+-# 
++# Puerto Vallarta and Bahía de Banderas: One Time Zone
+ # http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml
+-# 
+-#
+-# or
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_mexico08.html
+-# 
+ #
+ # "Mexico's Senate approved the amendments to the Mexican Schedule System that
+-# will allow Bahía de Banderas and Puerto Vallarta to share the same time
++# will allow Bahía de Banderas and Puerto Vallarta to share the same time
+ # zone ..."
+ # Baja California Sur, Nayarit, Sinaloa
+ 
+ # From Arthur David Olson (2010-05-01):
+ # Use "Bahia_Banderas" to keep the name to fourteen characters.
+ 
++# Mazatlán
+ Zone America/Mazatlan	-7:05:40 -	LMT	1921 Dec 31 23:54:20
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+@@ -2504,6 +2442,7 @@
+ 			-8:00	-	PST	1970
+ 			-7:00	Mexico	M%sT
+ 
++# Bahía de Banderas
+ Zone America/Bahia_Banderas	-7:01:00 -	LMT	1921 Dec 31 23:59:00
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+@@ -2513,7 +2452,7 @@
+ 			-6:00	-	CST	1942 Apr 24
+ 			-7:00	-	MST	1949 Jan 14
+ 			-8:00	-	PST	1970
+-			-7:00	Mexico	M%sT	2010 Apr 4 2:00
++			-7:00	Mexico	M%sT	2010 Apr  4  2:00
+ 			-6:00	Mexico	C%sT
+ 
+ # Baja California (near US border)
+@@ -2560,7 +2499,7 @@
+ # America/Tijuana only in that it did not observe DST from 1976
+ # through 1995.  This was as per Shanks (1999).  But Shanks & Pottenger say
+ # Ensenada did not observe DST from 1948 through 1975.  Guy Harris reports
+-# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
++# that the 1987 OAG says "Only Ensenada, Mexicali, San Felipe and
+ # Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
+ # DST-observance was a town-by-town matter back then.  This concerns
+ # data after 1970 so most likely there should be at least one Zone
+@@ -2573,7 +2512,7 @@
+ ###############################################################################
+ 
+ # Anguilla
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Antigua and Barbuda
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -2609,8 +2548,8 @@
+ Rule	Barb	1979	only	-	Sep	30	2:00	0	S
+ Rule	Barb	1980	only	-	Sep	25	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Barbados	-3:58:29 -	LMT	1924		# Bridgetown
+-			-3:58:29 -	BMT	1932	  # Bridgetown Mean Time
++Zone America/Barbados	-3:58:29 -	LMT	1924 # Bridgetown
++			-3:58:29 -	BMT	1932 # Bridgetown Mean Time
+ 			-4:00	Barb	A%sT
+ 
+ # Belize
+@@ -2640,20 +2579,20 @@
+ # http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1 2:00    # Hamilton
+-			-4:00	-	AST	1974 Apr 28 2:00
++Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1  2:00 # Hamilton
++			-4:00	-	AST	1974 Apr 28  2:00
+ 			-4:00	Canada	A%sT	1976
+ 			-4:00	US	A%sT
+ 
+ # Cayman Is
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
+-			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
++Zone	America/Cayman	-5:25:32 -	LMT	1890     # Georgetown
++			-5:07:11 -	KMT	1912 Feb # Kingston Mean Time
+ 			-5:00	-	EST
+ 
+ # Costa Rica
+ 
+-# Milne gives -5:36:13.3 as San Jose mean time; round to nearest.
++# Milne gives -5:36:13.3 as San José mean time; round to nearest.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
+@@ -2663,10 +2602,10 @@
+ # go with Shanks & Pottenger.
+ Rule	CR	1991	only	-	Jul	 1	0:00	0	S
+ Rule	CR	1992	only	-	Mar	15	0:00	0	S
+-# There are too many San Joses elsewhere, so we'll use 'Costa Rica'.
++# There are too many San Josés elsewhere, so we'll use 'Costa Rica'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Costa_Rica	-5:36:13 -	LMT	1890		# San Jose
+-			-5:36:13 -	SJMT	1921 Jan 15 # San Jose Mean Time
++Zone America/Costa_Rica	-5:36:13 -	LMT	1890        # San José
++			-5:36:13 -	SJMT	1921 Jan 15 # San José Mean Time
+ 			-6:00	CR	C%sT
+ # Coco
+ # no information; probably like America/Costa_Rica
+@@ -2685,8 +2624,8 @@
+ # During the game, play-by-play announcer Jim Hunter noted that
+ # "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
+ # Time today."  (The "two hour" remark referred to losing one hour of
+-# sleep on 1999-03-28--when the announcers were in Cuba as it switched
+-# to DST--and one more hour on 1999-04-04--when the announcers will have
++# sleep on 1999-03-28 - when the announcers were in Cuba as it switched
++# to DST - and one more hour on 1999-04-04 - when the announcers will have
+ # returned to Baltimore, which switches on that date.)
+ 
+ # From Steffen Thorsen (2013-11-11):
+@@ -2708,16 +2647,16 @@
+ # adjustment in Cuba.  We will stay in daylight saving time:
+ # http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
+ 
+-# From Jesper Norgaard Welen (2006-10-21):
++# From Jesper Nørgaard Welen (2006-10-21):
+ # An article in GRANMA INTERNACIONAL claims that Cuba will end
+ # the 3 years of permanent DST next weekend, see
+ # http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
+ # "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
+-# watches should be set back one hour -- going back to 00:00 hours -- returning
++# watches should be set back one hour - going back to 00:00 hours - returning
+ # to the normal schedule....
+ 
+ # From Paul Eggert (2007-03-02):
+-# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
++# , dated yesterday,
+ # says Cuban clocks will advance at midnight on March 10.
+ # For lack of better information, assume Cuba will use US rules,
+ # except that it switches at midnight standard time as usual.
+@@ -2731,10 +2670,10 @@
+ # http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
+ # http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
+ #
+-# From Alex Kryvenishev (2007-10-25):
++# From Alex Krivenyshev (2007-10-25):
+ # Here is also article from Granma (Cuba):
+ #
+-# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
++# Regirá el Horario Normal desde el próximo domingo 28 de octubre
+ # http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
+ #
+ # http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
+@@ -2742,23 +2681,18 @@
+ # From Arthur David Olson (2008-03-09):
+ # I'm in Maryland which is now observing United States Eastern Daylight
+ # Time. At 9:44 local time I used RealPlayer to listen to
+-# 
+ # http://media.enet.cu/radioreloj
+-# , a Cuban information station, and heard
++# a Cuban information station, and heard
+ # the time announced as "ocho cuarenta y cuatro" ("eight forty-four"),
+ # indicating that Cuba is still on standard time.
+ 
+ # From Steffen Thorsen (2008-03-12):
+ # It seems that Cuba will start DST on Sunday, 2007-03-16...
+ # It was announced yesterday, according to this source (in Spanish):
+-# 
+ # http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm
+-# 
+ #
+ # Some more background information is posted here:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html
+-# 
+ #
+ # The article also says that Cuba has been observing DST since 1963,
+ # while Shanks (and tzdata) has 1965 as the first date (except in the
+@@ -2768,18 +2702,14 @@
+ # change some historic records as well.
+ #
+ # One example:
+-# 
+ # http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm
+-# 
+ 
+-# From Jesper Norgaard Welen (2008-03-13):
++# From Jesper Nørgaard Welen (2008-03-13):
+ # The Cuban time change has just been confirmed on the most authoritative
+ # web site, the Granma.  Please check out
+-# 
+ # http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html
+-# 
+ #
+-# Basically as expected after Steffen Thorsens information, the change
++# Basically as expected after Steffen Thorsen's information, the change
+ # will take place midnight between Saturday and Sunday.
+ 
+ # From Arthur David Olson (2008-03-12):
+@@ -2790,18 +2720,14 @@
+ # midnight between Saturday, March 07, 2009 and Sunday, March 08, 2009-
+ # not on midnight March 14 / March 15 as previously thought.
+ #
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_cuba05.html
+ # (in Spanish)
+-# 
+ 
+ # From Arthur David Olson (2009-03-09)
+ # I listened over the Internet to
+-# 
+ # http://media.enet.cu/readioreloj
+-# 
+ # this morning; when it was 10:05 a. m. here in Bethesda, Maryland the
+-# the time was announced as "diez cinco"--the same time as here, indicating
++# the time was announced as "diez cinco" - the same time as here, indicating
+ # that has indeed switched to DST. Assume second Sunday from 2009 forward.
+ 
+ # From Steffen Thorsen (2011-03-08):
+@@ -2810,42 +2736,30 @@
+ # changed at all).
+ #
+ # Source:
+-# 
+ # http://granma.co.cu/2011/03/08/nacional/artic01.html
+-# 
+ #
+ # Our info:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
+-# 
+ #
+ # From Steffen Thorsen (2011-10-30)
+ # Cuba will end DST two weeks later this year. Instead of going back
+ # tonight, it has been delayed to 2011-11-13 at 01:00.
+ #
+ # One source (Spanish)
+-# 
+ # http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html
+-# 
+ #
+ # Our page:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
+-# 
+ #
+ # From Steffen Thorsen (2012-03-01)
+ # According to Radio Reloj, Cuba will start DST on Midnight between March
+ # 31 and April 1.
+ #
+ # Radio Reloj has the following info (Spanish):
+-# 
+ # http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
+-# 
+ #
+ # Our info on it:
+-# 
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
+-# 
+ 
+ # From Steffen Thorsen (2012-11-03):
+ # Radio Reloj and many other sources report that Cuba is changing back
+@@ -2901,7 +2815,7 @@
+ 			-5:00	Cuba	C%sT
+ 
+ # Dominica
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Dominican Republic
+ 
+@@ -2934,8 +2848,8 @@
+ Zone America/Santo_Domingo -4:39:36 -	LMT	1890
+ 			-4:40	-	SDMT	1933 Apr  1 12:00 # S. Dom. MT
+ 			-5:00	DR	E%sT	1974 Oct 27
+-			-4:00	-	AST	2000 Oct 29 02:00
+-			-5:00	US	E%sT	2000 Dec  3 01:00
++			-4:00	-	AST	2000 Oct 29  2:00
++			-5:00	US	E%sT	2000 Dec  3  1:00
+ 			-4:00	-	AST
+ 
+ # El Salvador
+@@ -2946,20 +2860,20 @@
+ # There are too many San Salvadors elsewhere, so use America/El_Salvador
+ # instead of America/San_Salvador.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
++Zone America/El_Salvador -5:56:48 -	LMT	1921 # San Salvador
+ 			-6:00	Salv	C%sT
+ 
+ # Grenada
+ # Guadeloupe
+-# St Barthelemy
++# St Barthélemy
+ # St Martin (French part)
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Guatemala
+ #
+ # From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
+ # Diario Co Latino, at
+-# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
++# ,
+ # says in an article dated 2006-04-19 that the Guatemalan government had
+ # decided on that date to advance official time by 60 minutes, to lessen the
+ # impact of the elevated cost of oil....  Daylight saving time will last from
+@@ -2967,7 +2881,7 @@
+ # From Paul Eggert (2006-06-22):
+ # The Ministry of Energy and Mines, press release CP-15/2006
+ # (2006-04-19), says DST ends at 24:00.  See
+-# .
++# http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Guat	1973	only	-	Nov	25	0:00	1:00	D
+@@ -2984,11 +2898,10 @@
+ 
+ # Haiti
+ # From Gwillim Law (2005-04-15):
+-# Risto O. Nykanen wrote me that Haiti is now on DST.
+-# I searched for confirmation, and I found a
+-#  press release
++# Risto O. Nykänen wrote me that Haiti is now on DST.
++# I searched for confirmation, and I found a press release
+ # on the Web page of the Haitian Consulate in Chicago (2005-03-31),
+-# .  Translated from French, it says:
++# .  Translated from French, it says:
+ #
+ #  "The Prime Minister's Communication Office notifies the public in general
+ #   and the press in particular that, following a decision of the Interior
+@@ -3065,14 +2978,14 @@
+ #  that Manuel Zelaya, the president
+ # of Honduras, refused to back down on this.
+ 
+-# From Jesper Norgaard Welen (2006-08-08):
++# From Jesper Nørgaard Welen (2006-08-08):
+ # It seems that Honduras has returned from DST to standard time this Monday at
+ # 00:00 hours (prolonging Sunday to 25 hours duration).
+ # http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
+ 
+ # From Paul Eggert (2006-08-08):
+-# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
+-# .
++# Also see Diario El Heraldo, The country returns to standard time (2006-08-08).
++# http://www.elheraldo.hn/nota.php?nid=54941&sec=12
+ # It mentions executive decree 18-2006.
+ 
+ # From Steffen Thorsen (2006-08-17):
+@@ -3099,23 +3012,34 @@
+ # Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an
+ # unspecified official document, and says "This time is used throughout the
+ # island".  Go with Milne.  Round to the nearest second as required by zic.
++#
++# Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but
++# Lance Neita writes that Prime Minister Michael Manley decreed it January 5.
++# Assume Neita meant Jan 6 02:00, the same as the US.  Neita also writes that
++# Manley's supporters associated this act with Manley's nickname "Joshua"
++# (recall that in the Bible the sun stood still at Joshua's request),
++# and with the Rod of Correction which Manley said he had received from
++# Haile Selassie, Emperor of Ethiopia.  See:
++# Neita L. The politician in all of us. Jamaica Observer 2014-09-20
++# http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647
++#
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Jamaica	-5:07:11 -	LMT	1890		# Kingston
++Zone	America/Jamaica	-5:07:11 -	LMT	1890        # Kingston
+ 			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
+-			-5:00	-	EST	1974 Apr 28 2:00
++			-5:00	-	EST	1974
+ 			-5:00	US	E%sT	1984
+ 			-5:00	-	EST
+ 
+ # Martinique
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Martinique	-4:04:20 -      LMT	1890		# Fort-de-France
+-			-4:04:20 -	FFMT	1911 May     # Fort-de-France MT
++Zone America/Martinique	-4:04:20 -      LMT	1890        # Fort-de-France
++			-4:04:20 -	FFMT	1911 May    # Fort-de-France MT
+ 			-4:00	-	AST	1980 Apr  6
+ 			-4:00	1:00	ADT	1980 Sep 28
+ 			-4:00	-	AST
+ 
+ # Montserrat
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Nicaragua
+ #
+@@ -3138,27 +3062,27 @@
+ # From Gwillim Law (2005-04-21):
+ # The Associated Press story on the time change, which can be found at
+ # http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
+-# and elsewhere, says (fifth paragraph, translated from Spanish):  "The last
++# and elsewhere, says (fifth paragraph, translated from Spanish): "The last
+ # time that a change of clocks was applied to save energy was in the year 2000
+-# during the Arnoldo Aleman administration."...
++# during the Arnoldo Alemán administration."...
+ # The northamerica file says that Nicaragua has been on UTC-6 continuously
+ # since December 1998.  I wasn't able to find any details of Nicaraguan time
+ # changes in 2000.  Perhaps a note could be added to the northamerica file, to
+ # the effect that we have indirect evidence that DST was observed in 2000.
+ #
+-# From Jesper Norgaard Welen (2005-11-02):
++# From Jesper Nørgaard Welen (2005-11-02):
+ # Nicaragua left DST the 2005-10-02 at 00:00 (local time).
+ # http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
+ # (2005-09-26)
+ #
+-# From Jesper Norgaard Welen (2006-05-05):
++# From Jesper Nørgaard Welen (2006-05-05):
+ # http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
+ # (my informal translation)
+-# By order of the president of the republic, Enrique Bolanos, Nicaragua
++# By order of the president of the republic, Enrique Bolaños, Nicaragua
+ # advanced by sixty minutes their official time, yesterday at 2 in the
+-# morning, and will stay that way until 30.th. of september.
++# morning, and will stay that way until 30th of September.
+ #
+-# From Jesper Norgaard Welen (2006-09-30):
++# From Jesper Nørgaard Welen (2006-09-30):
+ # http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
+ # My informal translation runs:
+ # The natural sun time is restored in all the national territory, in that the
+@@ -3176,7 +3100,7 @@
+ 			-5:45:12 -	MMT	1934 Jun 23 # Managua Mean Time?
+ 			-6:00	-	CST	1973 May
+ 			-5:00	-	EST	1975 Feb 16
+-			-6:00	Nic	C%sT	1992 Jan  1 4:00
++			-6:00	Nic	C%sT	1992 Jan  1  4:00
+ 			-5:00	-	EST	1992 Sep 24
+ 			-6:00	-	CST	1993
+ 			-5:00	-	EST	1997
+@@ -3185,36 +3109,36 @@
+ # Panama
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Panama	-5:18:08 -	LMT	1890
+-			-5:19:36 -	CMT	1908 Apr 22   # Colon Mean Time
++			-5:19:36 -	CMT	1908 Apr 22 # Colón Mean Time
+ 			-5:00	-	EST
+ 
+ # Puerto Rico
+ # There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
++Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00 # San Juan
+ 			-4:00	-	AST	1942 May  3
+ 			-4:00	US	A%sT	1946
+ 			-4:00	-	AST
+ 
+ # St Kitts-Nevis
+ # St Lucia
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # St Pierre and Miquelon
+ # There are too many St Pierres elsewhere, so we'll use 'Miquelon'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
++Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15 # St Pierre
+ 			-4:00	-	AST	1980 May
+ 			-3:00	-	PMST	1987 # Pierre & Miquelon Time
+ 			-3:00	Canada	PM%sT
+ 
+ # St Vincent and the Grenadines
+-# See 'southamerica'.
++# See America/Port_of_Spain.
+ 
+ # Turks and Caicos
+ #
+ # From Chris Dunn in
+-# 
++# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415007
+ # (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
+ # daylight saving dates for time changes have been adjusted to match
+ # the recent U.S. change of dates.
+@@ -3227,21 +3151,27 @@
+ # Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
+ # indicating that the normal ET rules are followed.
+ #
+-# From Paul Eggert (2006-05-01):
+-# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
+-# says they switch at midnight.  Go with Shanks & Pottenger.
++# From Paul Eggert (2014-08-19):
++# The 2014-08-13 Cabinet meeting decided to stay on UTC-4 year-round.  See:
++# http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm
++# Model this as a switch from EST/EDT to AST ...
++# From Chris Walton (2014-11-04):
++# ... the TCI government appears to have delayed the switch to
++# "permanent daylight saving time" by one year....
++# http://tcweeklynews.com/time-change-to-go-ahead-this-november-p5437-127.htm
+ #
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	TC	1979	1986	-	Apr	lastSun	2:00	1:00	D
+-Rule	TC	1979	2006	-	Oct	lastSun	2:00	0	S
+-Rule	TC	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
+-Rule	TC	2007	max	-	Mar	Sun>=8	2:00	1:00	D
+-Rule	TC	2007	max	-	Nov	Sun>=1	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Grand_Turk	-4:44:32 -	LMT	1890
+-			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
+-			-5:00	TC	E%sT
++			-5:07:11 -	KMT	1912 Feb # Kingston Mean Time
++			-5:00	-	EST	1979
++			-5:00	US	E%sT	2015 Nov Sun>=1 2:00
++			-4:00	-	AST
+ 
+ # British Virgin Is
+ # Virgin Is
+-# See 'southamerica'.
++# See America/Port_of_Spain.
++
++
++# Local Variables:
++# coding: utf-8
++# End:
+--- ./jdk/test/sun/util/calendar/zi/tzdata/pacificnew	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/pacificnew	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- ./jdk/test/sun/util/calendar/zi/tzdata/southamerica	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/southamerica	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,31 +21,31 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+-# This data is by no means authoritative; if you think you know better,
++# This file is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@iana.org for general use in the future).
++# tz@iana.org for general use in the future).  For more, please see
++# the file CONTRIBUTING in the tz distribution.
+ 
+-# From Paul Eggert (2006-03-22):
+-# A good source for time zone historical data outside the U.S. is
++# From Paul Eggert (2014-10-31):
++#
++# Unless otherwise specified, the source for data through 1990 is:
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
+-#
+-# For data circa 1899, a common source is:
+-# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+-# .
++# Unfortunately this book contains many errors and cites no sources.
+ #
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+ # published semiannually.  Law sent in several helpful summaries
+-# of the IATA's data after 1990.
++# of the IATA's data after 1990.  Except where otherwise noted,
++# IATA SSIM is the source for entries after 1990.
+ #
+-# Except where otherwise noted, Shanks & Pottenger is the source for
+-# entries through 1990, and IATA SSIM is the source for entries afterwards.
++# For data circa 1899, a common source is:
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
++# http://www.jstor.org/stable/1774359
+ #
+ # Earlier editions of these tables used the North American style (e.g. ARST and
+ # ARDT for Argentine Standard and Daylight Time), but the following quote
+@@ -53,24 +53,24 @@
+ #	I suggest the use of _Summer time_ instead of the more cumbersome
+ #	_daylight-saving time_.  _Summer time_ seems to be in general use
+ #	in Europe and South America.
+-#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
++#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
+ #	H L Mencken, _The American Language: Supplement I_ (1960), p 466
+ #
+ # Earlier editions of these tables also used the North American style
+ # for time zones in Brazil, but this was incorrect, as Brazilians say
+-# "summer time".  Reinaldo Goulart, a Sao Paulo businessman active in
++# "summer time".  Reinaldo Goulart, a São Paulo businessman active in
+ # the railroad sector, writes (1999-07-06):
+ #	The subject of time zones is currently a matter of discussion/debate in
+-#	Brazil.  Let's say that "the Brasilia time" is considered the
+-#	"official time" because Brasilia is the capital city.
+-#	The other three time zones are called "Brasilia time "minus one" or
++#	Brazil.  Let's say that "the Brasília time" is considered the
++#	"official time" because Brasília is the capital city.
++#	The other three time zones are called "Brasília time "minus one" or
+ #	"plus one" or "plus two".  As far as I know there is no such
+ #	name/designation as "Eastern Time" or "Central Time".
+ # So I invented the following (English-language) abbreviations for now.
+ # Corrections are welcome!
+ #		std	dst
+ #	-2:00	FNT	FNST	Fernando de Noronha
+-#	-3:00	BRT	BRST	Brasilia
++#	-3:00	BRT	BRST	Brasília
+ #	-4:00	AMT	AMST	Amazon
+ #	-5:00	ACT	ACST	Acre
+ 
+@@ -84,7 +84,7 @@
+ # Argentina: first Sunday in October to first Sunday in April since 1976.
+ # Double Summer time from 1969 to 1974.  Switches at midnight.
+ 
+-# From U. S. Naval Observatory (1988-01-199):
++# From U. S. Naval Observatory (1988-01-19):
+ # ARGENTINA           3 H BEHIND   UTC
+ 
+ # From Hernan G. Otero (1995-06-26):
+@@ -118,7 +118,7 @@
+ # From Hernan G. Otero (1995-06-26):
+ # These corrections were contributed by InterSoft Argentina S.A.,
+ # obtaining the data from the:
+-# Talleres de Hidrografia Naval Argentina
++# Talleres de Hidrografía Naval Argentina
+ # (Argentine Naval Hydrography Institute)
+ Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
+ Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	S
+@@ -140,13 +140,13 @@
+ Rule	Arg	2000	only	-	Mar	3	0:00	0	-
+ #
+ # From Peter Gradelski via Steffen Thorsen (2000-03-01):
+-# We just checked with our Sao Paulo office and they say the government of
++# We just checked with our São Paulo office and they say the government of
+ # Argentina decided not to become one of the countries that go on or off DST.
+ # So Buenos Aires should be -3 hours from GMT at all times.
+ #
+-# From Fabian L. Arce Jofre (2000-04-04):
++# From Fabián L. Arce Jofré (2000-04-04):
+ # The law that claimed DST for Argentina was derogated by President Fernando
+-# de la Rua on March 2, 2000, because it would make people spend more energy
++# de la Rúa on March 2, 2000, because it would make people spend more energy
+ # in the winter time, rather than less.  The change took effect on March 3.
+ #
+ # From Mariano Absatz (2001-06-06):
+@@ -179,15 +179,13 @@
+ # that Argentina will use DST next year as well, from October to
+ # March, although exact rules are not given.
+ #
+-# From Jesper Norgaard Welen (2007-12-26)
++# From Jesper Nørgaard Welen (2007-12-26)
+ # The last hurdle of Argentina DST is over, the proposal was approved in
+-# the lower chamber too (Deputados) with a vote 192 for and 2 against.
++# the lower chamber too (Diputados) with a vote 192 for and 2 against.
+ # By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
+ # the original scanned proposal, where the dates and the zero hours are
+ # clear and unambiguous...This is the article about final approval:
+-# 
+ # http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
+-# 
+ #
+ # From Paul Eggert (2007-12-22):
+ # For dates after mid-2008, the following rules are my guesses and
+@@ -197,13 +195,8 @@
+ # As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
+ # Argentina will start DST on Sunday October 19, 2008.
+ #
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
+-# 
+-# OR
+-# 
+ # http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
+-# 
+ 
+ # From Rodrigo Severo (2008-10-06):
+ # Here is some info available at a Gentoo bug related to TZ on Argentina's DST:
+@@ -212,48 +205,39 @@
+ # Hi, there is a problem with timezone-data-2008e and maybe with
+ # timezone-data-2008f
+ # Argentinian law [Number] 25.155 is no longer valid.
+-# 
+ # http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
+-# 
+ # The new one is law [Number] 26.350
+-# 
+ # http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
+-# 
+ # So there is no summer time in Argentina for now.
+ 
+ # From Mariano Absatz (2008-10-20):
+-# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina
+-# From 2008-10-19 until 2009-03-15
+-# 
++# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST
++# in Argentina from 2008-10-19 until 2009-03-15.
+ # http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
+-# 
+ #
+-# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:
+-# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz
+-# and Tierra del Fuego
+-# 
++
++# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer
++# 2008/2009: Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La
++# Pampa, Neuquén, Rio Negro, Chubut, Santa Cruz and Tierra del Fuego
+ # http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
+-# 
+ #
+-# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying
+-# it will not apply DST either (even when it was not included in Decree 1705/2008)
+-# 
++# Press release 235 dated Saturday October 18th, from the Government of the
++# Province of Jujuy saying it will not apply DST either (even when it was not
++# included in Decree 1705/2008).
+ # http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
+-# 
+ 
+ # From fullinet (2009-10-18):
+ # As announced in
+-# 
+ # http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
+-# 
+-# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
++# (an official .gob.ar) under title: "Sin Cambio de Hora"
++# (English: "No hour change").
+ #
+-# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
+-# oficial, decision que estaba en estudio para su implementacion el
+-# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
+-# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
+-# la modificacion del huso horario, ya que 2009 nos encuentra con
+-# crecimiento en la produccion y distribucion energetica."
++# "Por el momento, el Gobierno Nacional resolvió no modificar la hora
++# oficial, decisión que estaba en estudio para su implementación el
++# domingo 18 de octubre. Desde el Ministerio de Planificación se anunció
++# que la Argentina hoy, en estas condiciones meteorológicas, no necesita
++# la modificación del huso horario, ya que 2009 nos encuentra con
++# crecimiento en la producción y distribución energética."
+ 
+ Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
+ Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
+@@ -267,10 +251,10 @@
+ # It's Law No. 7,210.  This change is due to a public power emergency, so for
+ # now we'll assume it's for this year only.
+ #
+-# From Paul Eggert (2006-03-22):
+-# 
+-# Hora de verano para la Republica Argentina (2003-06-08)
+-#  says that standard time in Argentina from 1894-10-31
++# From Paul Eggert (2014-08-09):
++# Hora de verano para la República Argentina
++# http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html
++# says that standard time in Argentina from 1894-10-31
+ # to 1920-05-01 was -4:16:48.25.  Go with this more-precise value
+ # over Shanks & Pottenger.
+ #
+@@ -285,10 +269,10 @@
+ # time in October 17th.
+ #
+ # Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
+-# Tierra del Fuego, Tucuman.
++# Tierra del Fuego, Tucumán.
+ #
+ # From Mariano Absatz (2004-06-14):
+-# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
++# ... this weekend, the Province of Tucumán decided it'd go back to UTC-03:00
+ # yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
+ # annoyance with the change is much higher than the power savings obtained....
+ #
+@@ -323,49 +307,38 @@
+ # Here are articles that Argentina Province San Luis is planning to end DST
+ # as earlier as upcoming Monday January 21, 2008 or February 2008:
+ #
+-# Provincia argentina retrasa reloj y marca diferencia con resto del pais
++# Provincia argentina retrasa reloj y marca diferencia con resto del país
+ # (Argentine Province delayed clock and mark difference with the rest of the
+ # country)
+-# 
+ # http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
+-# 
+ #
+ # Es inminente que en San Luis atrasen una hora los relojes
+ # (It is imminent in San Luis clocks one hour delay)
+-# 
+-# http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414
+-# 
+-#
+-# 
++# http://www.lagaceta.com.ar/nota/253414/Economia/Es-inminente-que-en-San-Luis-atrasen-una-hora-los-relojes.html
+ # http://www.worldtimezone.net/dst_news/dst_news_argentina02.html
+-# 
+ 
+-# From Jesper Norgaard Welen (2008-01-18):
++# From Jesper Nørgaard Welen (2008-01-18):
+ # The page of the San Luis provincial government
+-# 
+ # http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
+-# 
+ # confirms what Alex Krivenyshev has earlier sent to the tz
+ # emailing list about that San Luis plans to return to standard
+ # time much earlier than the rest of the country. It also
+ # confirms that upon request the provinces San Juan and Mendoza
+ # refused to follow San Luis in this change.
+ #
+-# The change is supposed to take place Monday the 21.st at 0:00
++# The change is supposed to take place Monday the 21st at 0:00
+ # hours. As far as I understand it if this goes ahead, we need
+ # a new timezone for San Luis (although there are also documented
+ # independent changes in the southamerica file of San Luis in
+ # 1990 and 1991 which has not been confirmed).
+ 
+-# From Jesper Norgaard Welen (2008-01-25):
++# From Jesper Nørgaard Welen (2008-01-25):
+ # Unfortunately the below page has become defunct, about the San Luis
+ # time change. Perhaps because it now is part of a group of pages "Most
+ # important pages of 2008."
+ #
+ # You can use
+-# 
+ # http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
+-# 
+ # instead it seems. Or use "Buscador" from the main page of the San Luis
+ # government, and fill in "huso" and click OK, and you will get 3 pages
+ # from which the first one is identical to the above.
+@@ -385,9 +358,9 @@
+ # back in 2004, when these provinces changed to UTC-4 for a few days, I
+ # mailed them personally and never got an answer).
+ 
+-# From Paul Eggert (2008-06-30):
+-# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
+-# from the IATA otherwise.  As noted below, Shanks & Pottenger say that
++# From Paul Eggert (2014-08-12):
++# Unless otherwise specified, data entries are from Shanks & Pottenger through
++# 1992, from the IATA otherwise.  As noted below, Shanks & Pottenger say that
+ # America/Cordoba split into 6 subregions during 1991/1992, one of which
+ # was America/San_Luis, but we haven't verified this yet so for now we'll
+ # keep America/Cordoba a single region rather than splitting it into the
+@@ -399,14 +372,9 @@
+ # to utc-04:00 until the second Saturday in October...
+ #
+ # The press release is at
+-# 
+ # http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
+-# 
+-# (I couldn't find the decree, but
+-# 
+-# www.sanluis.gov.ar
+-# 
+-# is the official page for the Province Government).
++# (I couldn't find the decree, but www.sanluis.gov.ar
++# is the official page for the Province Government.)
+ #
+ # There's also a note in only one of the major national papers ...
+ # http://www.lanacion.com.ar/nota.asp?nota_id=1107912
+@@ -423,9 +391,7 @@
+ # ...the Province of San Luis is a case in itself.
+ #
+ # The Law at
+-# 
+ # is ambiguous because establishes a calendar from the 2nd Sunday in
+ # October at 0:00 thru the 2nd Saturday in March at 24:00 and the
+ # complement of that starting on the 2nd Sunday of March at 0:00 and
+@@ -454,19 +420,15 @@
+ # ...
+ 
+ # From Alexander Krivenyshev (2010-04-09):
+-# According to news reports from El Diario de la Republica Province San
++# According to news reports from El Diario de la República Province San
+ # Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time
+-# after April 11, 2010--will continue to have same time as rest of
++# after April 11, 2010 - will continue to have same time as rest of
+ # Argentina (UTC-3) (no DST).
+ #
+-# Confirmaron la prórroga del huso horario de verano (Spanish)
+-# 
++# Confirmaron la prórroga del huso horario de verano (Spanish)
+ # http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9
+-# 
+ # or (some English translation):
+-# 
+ # http://www.worldtimezone.com/dst_news/dst_news_argentina08.html
+-# 
+ 
+ # From Mariano Absatz (2010-04-12):
+ # yes...I can confirm this...and given that San Luis keeps calling
+@@ -478,7 +440,7 @@
+ # Perhaps San Luis operates on the legal fiction that it is at UTC-4
+ # with perpetual summer time, but ordinary usage typically seems to
+ # just say it's at UTC-3; see, for example,
+-# .
++# http://es.wikipedia.org/wiki/Hora_oficial_argentina
+ # We've documented similar situations as being plain changes to
+ # standard time, so let's do that here too.  This does not change UTC
+ # offsets, only tm_isdst and the time zone abbreviations.  One minor
+@@ -486,20 +448,20 @@
+ # setting for time stamps past 2038.
+ 
+ # From Paul Eggert (2013-02-21):
+-# Milne says Cordoba time was -4:16:48.2.  Round to the nearest second.
++# Milne says Córdoba time was -4:16:48.2.  Round to the nearest second.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ #
+ # Buenos Aires (BA), Capital Federal (CF),
+-Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
+-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
++Zone America/Argentina/Buenos_Aires -3:53:48 - LMT	1894 Oct 31
++			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+ 			-4:00	Arg	AR%sT	2000 Mar  3
+ 			-3:00	Arg	AR%sT
+ #
+-# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),
++# Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN),
+ # Chaco (CC), Formosa (FM), Santiago del Estero (SE)
+ #
+ # Shanks & Pottenger also make the following claims, which we haven't verified:
+@@ -519,7 +481,7 @@
+ 			-4:00	Arg	AR%sT	2000 Mar  3
+ 			-3:00	Arg	AR%sT
+ #
+-# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
++# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
+ Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
+ 			-4:16:48 -	CMT	1920 May
+ 			-4:00	-	ART	1930 Dec
+@@ -531,7 +493,7 @@
+ 			-3:00	Arg	AR%sT	2008 Oct 18
+ 			-3:00	-	ART
+ #
+-# Tucuman (TM)
++# Tucumán (TM)
+ Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
+ 			-4:16:48 -	CMT	1920 May
+ 			-4:00	-	ART	1930 Dec
+@@ -642,8 +604,8 @@
+ 			-3:00	-	ART
+ #
+ # Santa Cruz (SC)
+-Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
+-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
++Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT	1894 Oct 31
++			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+@@ -653,9 +615,9 @@
+ 			-3:00	Arg	AR%sT	2008 Oct 18
+ 			-3:00	-	ART
+ #
+-# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
+-Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
+-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
++# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
++Zone America/Argentina/Ushuaia -4:33:12 - LMT	1894 Oct 31
++			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
+ 			-4:00	-	ART	1930 Dec
+ 			-4:00	Arg	AR%sT	1969 Oct  5
+ 			-3:00	Arg	AR%sT	1999 Oct  3
+@@ -686,13 +648,13 @@
+ 
+ # From IATA SSIM (1996-02):
+ # _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
+-# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
+-# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
++# Santa Catarina (SC), Paraná (PR), São Paulo (SP), Rio de Janeiro (RJ),
++# Espírito Santo (ES), Minas Gerais (MG), Bahia (BA), Goiás (GO),
+ # Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
+ # [The last three states are new to this issue of the IATA SSIM.]
+ 
+ # From Gwillim Law (1996-10-07):
+-# Geography, history (Tocantins was part of Goias until 1989), and other
++# Geography, history (Tocantins was part of Goiás until 1989), and other
+ # sources of time zone information lead me to believe that AL, SE, and TO were
+ # always in BR1, and so the only change was whether or not they observed DST....
+ # The earliest issue of the SSIM I have is 2/91.  Each issue from then until
+@@ -706,16 +668,14 @@
+ # However, some conclusions can be drawn from another IATA manual: the Airline
+ # Coding Directory, which lists close to 400 airports in Brazil.  For each
+ # airport it gives a time zone which is coded to the SSIM.  From that
+-# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
+-# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
+-# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
++# information, I'm led to conclude that the states of Amapá (AP), Ceará (CE),
++# Maranhão (MA), Paraíba (PR), Pernambuco (PE), Piauí (PI), and Rio Grande do
++# Norte (RN), and the eastern part of Pará (PA) are all in BR1 without DST.
+ 
+ # From Marcos Tadeu (1998-09-27):
+-# 
+-# Brazilian official page
+-# 
++# Brazilian official page 
+ 
+-# From Jesper Norgaard (2000-11-03):
++# From Jesper Nørgaard (2000-11-03):
+ # [For an official list of which regions in Brazil use which time zones, see:]
+ # http://pcdsh01.on.br/Fusbr.htm
+ # http://pcdsh01.on.br/Fusbrhv.htm
+@@ -748,13 +708,13 @@
+ 
+ # From Paul Schulze (2008-06-24):
+ # ...by law number 11.662 of April 24, 2008 (published in the "Diario
+-# Oficial da Uniao"...) in Brazil there are changes in the timezones,
++# Oficial da União"...) in Brazil there are changes in the timezones,
+ # effective today (00:00am at June 24, 2008) as follows:
+ #
+-# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the
++# a) The timezone UTC+5 is extinguished, with all the Acre state and the
+ # part of the Amazonas state that had this timezone now being put to the
+ # timezone UTC+4
+-# b) The whole Para state now is put at timezone UTC+3, instead of just
++# b) The whole Pará state now is put at timezone UTC+3, instead of just
+ # part of it, as was before.
+ #
+ # This change follows a proposal of senator Tiao Viana of Acre state, that
+@@ -767,13 +727,11 @@
+ 
+ # From Rodrigo Severo (2008-06-24):
+ # Just correcting the URL:
+-# 
+ # https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
+-# 
+ #
+ # As a result of the above Decree I believe the America/Rio_Branco
+ # timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
+-# be created to represent the...west side of the Para State. I
++# be created to represent the...west side of the Pará State. I
+ # suggest this new timezone be called Santarem as the most
+ # important/populated city in the affected area.
+ #
+@@ -782,19 +740,16 @@
+ 
+ # From Alex Krivenyshev (2008-06-24):
+ # This is a quick reference page for New and Old Brazil Time Zones map.
+-# 
+ # http://www.worldtimezone.com/brazil-time-new-old.php
+-# 
+ #
+-# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05
+-# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western
+-# part of Par state is moving to one timezone UTC- 03 (from UTC -04).
++# - 4 time zones replaced by 3 time zones - eliminating time zone UTC-05
++# (state Acre and the part of the Amazonas will be UTC/GMT-04) - western
++# part of Par state is moving to one timezone UTC-03 (from UTC-04).
+ 
+ # From Paul Eggert (2002-10-10):
+ # The official decrees referenced below are mostly taken from
+-# 
+-# Decretos sobre o Horario de Verao no Brasil
+-# .
++# Decretos sobre o Horário de Verão no Brasil.
++# http://pcdsh01.on.br/DecHV.html
+ 
+ # From Steffen Thorsen (2008-08-29):
+ # As announced by the government and many newspapers in Brazil late
+@@ -806,25 +761,17 @@
+ # It has not yet been posted to http://pcdsh01.on.br/DecHV.html
+ #
+ # An official page about it:
+-# 
+ # http://www.mme.gov.br/site/news/detail.do?newsId=16722
+-# 
+ # Note that this link does not always work directly, but must be accessed
+ # by going to
+-# 
+ # http://www.mme.gov.br/first
+-# 
+ #
+ # One example link that works directly:
+-# 
+ # http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
+ # (Portuguese)
+-# 
+ #
+ # We have a written a short article about it as well:
+-# 
+ # http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
+-# 
+ #
+ # From Alexander Krivenyshev (2011-10-04):
+ # State Bahia will return to Daylight savings time this year after 8 years off.
+@@ -832,17 +779,12 @@
+ # television station in Salvador.
+ 
+ # In Portuguese:
+-# 
+ # http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
+-#  and
+-# 
+ # http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html
+-# 
+ 
+ # From Guilherme Bernardes Rodrigues (2011-10-07):
+ # There is news in the media, however there is still no decree about it.
+-# I just send a e-mail to Zulmira Brandao at
+-# http://pcdsh01.on.br/ the
++# I just send a e-mail to Zulmira Brandao at http://pcdsh01.on.br/ the
+ # official agency about time in Brazil, and she confirmed that the old rule is
+ # still in force.
+ 
+@@ -854,9 +796,7 @@
+ #
+ # DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011
+ # Link :
+-# 
+ # http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
+-# 
+ 
+ # From Kelley Cook (2012-10-16):
+ # The governor of state of Bahia in Brazil announced on Thursday that
+@@ -884,42 +824,42 @@
+ # For now, assume western Amazonas will change as well.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-# Decree 20,466 (1931-10-01)
+-# Decree 21,896 (1932-01-10)
++# Decree 20,466  (1931-10-01)
++# Decree 21,896  (1932-01-10)
+ Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	S
+ Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
+ Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
+-# Decree 23,195 (1933-10-10)
++# Decree 23,195  (1933-10-10)
+ # revoked DST.
+-# Decree 27,496 (1949-11-24)
+-# Decree 27,998 (1950-04-13)
++# Decree 27,496  (1949-11-24)
++# Decree 27,998  (1950-04-13)
+ Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	S
+ Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
+ Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
+-# Decree 32,308 (1953-02-24)
++# Decree 32,308  (1953-02-24)
+ Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
+-# Decree 34,724 (1953-11-30)
++# Decree 34,724  (1953-11-30)
+ # revoked DST.
+-# Decree 52,700 (1963-10-18)
++# Decree 52,700  (1963-10-18)
+ # established DST from 1963-10-23 00:00 to 1964-02-29 00:00
+ # in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
+-# Decree 53,071 (1963-12-03)
++# Decree 53,071  (1963-12-03)
+ # extended the above decree to all of the national territory on 12-09.
+ Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	S
+-# Decree 53,604 (1964-02-25)
++# Decree 53,604  (1964-02-25)
+ # extended summer time by one day to 1964-03-01 00:00 (start of school).
+ Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
+-# Decree 55,639 (1965-01-27)
++# Decree 55,639  (1965-01-27)
+ Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
+ Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
+-# Decree 57,303 (1965-11-22)
++# Decree 57,303  (1965-11-22)
+ Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
+-# Decree 57,843 (1966-02-18)
++# Decree 57,843  (1966-02-18)
+ Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
+ Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
+-# Decree 63,429 (1968-10-15)
++# Decree 63,429  (1968-10-15)
+ # revoked DST.
+-# Decree 91,698 (1985-09-27)
++# Decree 91,698  (1985-09-27)
+ Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	S
+ # Decree 92,310 (1986-01-21)
+ # Decree 92,463 (1986-03-13)
+@@ -927,42 +867,42 @@
+ # Decree 93,316 (1986-10-01)
+ Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	S
+ Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
+-# Decree 94,922 (1987-09-22)
++# Decree 94,922  (1987-09-22)
+ Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
+ Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
+-# Decree 96,676 (1988-09-12)
++# Decree 96,676  (1988-09-12)
+ # except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
+ Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	S
+ Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
+-# Decree 98,077 (1989-08-21)
++# Decree 98,077  (1989-08-21)
+ # with the same exceptions
+ Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	S
+ Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
+-# Decree 99,530 (1990-09-17)
++# Decree 99,530  (1990-09-17)
+ # adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
+ # Decree 99,629 (1990-10-19) adds BA, MT.
+ Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	S
+ Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
+-# Unnumbered decree (1991-09-25)
++# Unnumbered decree  (1991-09-25)
+ # adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
+ Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	S
+ Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
+-# Unnumbered decree (1992-10-16)
++# Unnumbered decree  (1992-10-16)
+ # adopted by same states.
+ Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	S
+ Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
+-# Decree 942 (1993-09-28)
++# Decree 942  (1993-09-28)
+ # adopted by same states, plus AM.
+-# Decree 1,252 (1994-09-22;
++# Decree 1,252  (1994-09-22;
+ # web page corrected 2004-01-07) adopted by same states, minus AM.
+-# Decree 1,636 (1995-09-14)
++# Decree 1,636  (1995-09-14)
+ # adopted by same states, plus MT and TO.
+-# Decree 1,674 (1995-10-13)
++# Decree 1,674  (1995-10-13)
+ # adds AL, SE.
+ Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	S
+ Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
+ Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
+-# Decree 2,000 (1996-09-04)
++# Decree 2,000  (1996-09-04)
+ # adopted by same states, minus AL, SE.
+ Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	S
+ Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
+@@ -975,53 +915,51 @@
+ #
+ # Decree 2,317 (1997-09-04), adopted by same states.
+ Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	S
+-# Decree 2,495
++# Decree 2,495 
+ # (1998-02-10)
+ Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
+-# Decree 2,780 (1998-09-11)
++# Decree 2,780  (1998-09-11)
+ # adopted by the same states as before.
+ Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	S
+ Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
+-# Decree 3,150
++# Decree 3,150 
+ # (1999-08-23) adopted by same states.
+-# Decree 3,188 (1999-09-30)
++# Decree 3,188  (1999-09-30)
+ # adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
+ Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	S
+ Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
+-# Decree 3,592 (2000-09-06)
++# Decree 3,592  (2000-09-06)
+ # adopted by the same states as before.
+-# Decree 3,630 (2000-10-13)
++# Decree 3,630  (2000-10-13)
+ # repeals DST in PE and RR, effective 2000-10-15 00:00.
+-# Decree 3,632 (2000-10-17)
++# Decree 3,632  (2000-10-17)
+ # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
+-# Decree 3,916
++# Decree 3,916 
+ # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
+ Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
+ Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
+ # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
+-# 4,399
++# 4,399 
+ Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
+ # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
+-# 4,844
++# 4,844 
+ Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
+ # Decree 5,223 (2004-10-01) reestablishes DST in MT.
+-# 5,223
++# 5,223 
+ Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
+-# Decree 5,539 (2005-09-19),
++# Decree 5,539  (2005-09-19),
+ # adopted by the same states as before.
+ Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
+-# Decree 5,920 (2006-10-03),
++# Decree 5,920  (2006-10-03),
+ # adopted by the same states as before.
+ Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
+ Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
+-# Decree 6,212 (2007-09-26),
++# Decree 6,212  (2007-09-26),
+ # adopted by the same states as before.
+ Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
+ # From Frederico A. C. Neves (2008-09-10):
+ # According to this decree
+-# 
+ # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
+-# 
+ # [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
+ # 3rd Feb Sunday. There is an exception on the return date when this is
+ # the Carnival Sunday then the return date will be the next Sunday...
+@@ -1056,29 +994,29 @@
+ 			-2:00	Brazil	FN%sT	2002 Oct  1
+ 			-2:00	-	FNT
+ # Other Atlantic islands have no permanent settlement.
+-# These include Trindade and Martin Vaz (administratively part of ES),
+-# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
++# These include Trindade and Martim Vaz (administratively part of ES),
++# Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE).
+ # Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
+ # it also included the Penedos.
+ #
+-# Amapa (AP), east Para (PA)
+-# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
+-# The division between east and west Para is the river Xingu.
++# Amapá (AP), east Pará (PA)
++# East Pará includes Belém, Marabá, Serra Norte, and São Félix do Xingu.
++# The division between east and west Pará is the river Xingu.
+ # In the north a very small part from the river Javary (now Jari I guess,
+-# the border with Amapa) to the Amazon, then to the Xingu.
++# the border with Amapá) to the Amazon, then to the Xingu.
+ Zone America/Belem	-3:13:56 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	1988 Sep 12
+ 			-3:00	-	BRT
+ #
+-# west Para (PA)
+-# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
++# west Pará (PA)
++# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
+ Zone America/Santarem	-3:38:48 -	LMT	1914
+ 			-4:00	Brazil	AM%sT	1988 Sep 12
+-			-4:00	-	AMT	2008 Jun 24 00:00
++			-4:00	-	AMT	2008 Jun 24  0:00
+ 			-3:00	-	BRT
+ #
+-# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
+-# Paraiba (PB)
++# Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN),
++# Paraíba (PB)
+ Zone America/Fortaleza	-2:34:00 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	1990 Sep 17
+ 			-3:00	-	BRT	1999 Sep 30
+@@ -1125,11 +1063,11 @@
+ 			-3:00	Brazil	BR%sT	2012 Oct 21
+ 			-3:00	-	BRT
+ #
+-# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+-# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
++# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
++# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
+ # Santa Catarina (SC), Rio Grande do Sul (RS)
+ Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
+-			-3:00	Brazil	BR%sT	1963 Oct 23 00:00
++			-3:00	Brazil	BR%sT	1963 Oct 23  0:00
+ 			-3:00	1:00	BRST	1964
+ 			-3:00	Brazil	BR%sT
+ #
+@@ -1143,7 +1081,7 @@
+ 			-4:00	-	AMT	2004 Oct  1
+ 			-4:00	Brazil	AM%sT
+ #
+-# Rondonia (RO)
++# Rondônia (RO)
+ Zone America/Porto_Velho -4:15:36 -	LMT	1914
+ 			-4:00	Brazil	AM%sT	1988 Sep 12
+ 			-4:00	-	AMT
+@@ -1155,7 +1093,7 @@
+ 			-4:00	Brazil	AM%sT	2000 Oct 15
+ 			-4:00	-	AMT
+ #
+-# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
++# east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto
+ # The great circle line from Tabatinga to Porto Acre divides
+ # east from west Amazonas.
+ Zone America/Manaus	-4:00:04 -	LMT	1914
+@@ -1165,19 +1103,19 @@
+ 			-4:00	-	AMT
+ #
+ # west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
+-#	Eirunepe, Envira, Ipixuna
++#	Eirunepé, Envira, Ipixuna
+ Zone America/Eirunepe	-4:39:28 -	LMT	1914
+ 			-5:00	Brazil	AC%sT	1988 Sep 12
+ 			-5:00	-	ACT	1993 Sep 28
+ 			-5:00	Brazil	AC%sT	1994 Sep 22
+-			-5:00	-	ACT	2008 Jun 24 00:00
++			-5:00	-	ACT	2008 Jun 24  0:00
+ 			-4:00	-	AMT	2013 Nov 10
+ 			-5:00	-	ACT
+ #
+ # Acre (AC)
+ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
+ 			-5:00	Brazil	AC%sT	1988 Sep 12
+-			-5:00	-	ACT	2008 Jun 24 00:00
++			-5:00	-	ACT	2008 Jun 24  0:00
+ 			-4:00	-	AMT	2013 Nov 10
+ 			-5:00	-	ACT
+ 
+@@ -1198,66 +1136,54 @@
+ # From Oscar van Vlijmen (2006-10-08):
+ # http://www.horaoficial.cl/cambio.htm
+ 
+-# From Jesper Norgaard Welen (2006-10-08):
++# From Jesper Nørgaard Welen (2006-10-08):
+ # I think that there are some obvious mistakes in the suggested link
+ # from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+ # ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+ # (they should have been 1990-09-15 and 1990-09-16 respectively), but
+ # anyhow it clears up some doubts too.
+ 
+-# From Paul Eggert (2006-12-27):
+-# The following data for Chile and America/Santiago are from
++# From Paul Eggert (2014-08-12):
++# The following data entries for Chile and America/Santiago are from
+ #  (2006-09-20), transcribed by
+-# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
++# Jesper Nørgaard Welen.  The data entries for Pacific/Easter are from Shanks
+ # & Pottenger, except with DST transitions after 1932 cloned from
+-# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
++# America/Santiago.  The pre-1980 Pacific/Easter data entries are dubious,
+ # but we have no other source.
+ 
+-# From German Poo-Caaman~o (2008-03-03):
++# From Germán Poo-Caamaño (2008-03-03):
+ # Due to drought, Chile extends Daylight Time in three weeks.  This
+ # is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+ # and Saturday 3/29 at 22:00 for Pacific/Easter)
+ # The Supreme Decree is located at
+-# 
+ # http://www.shoa.cl/servicios/supremo316.pdf
+-# 
+ # and the instructions for 2008 are located in:
+-# 
+ # http://www.horaoficial.cl/cambio.htm
+-# .
+ 
+-# From Jose Miguel Garrido (2008-03-05):
++# From José Miguel Garrido (2008-03-05):
+ # ...
+ # You could see the announces of the change on
+-# 
+ # http://www.shoa.cl/noticias/2008/04hora/hora.htm
+-# .
+ 
+ # From Angel Chiang (2010-03-04):
+ # Subject: DST in Chile exceptionally extended to 3 April due to earthquake
+-# 
+ # http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
+-# 
+ # (in Spanish, last paragraph).
+ #
+ # This is breaking news. There should be more information available later.
+ 
+-# From Arthur Daivd Olson (2010-03-06):
++# From Arthur David Olson (2010-03-06):
+ # Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+ 
+-# From Glenn Eychaner (2011-03-02): [geychaner@mac.com]
++# From Glenn Eychaner (2011-03-02):
+ # It appears that the Chilean government has decided to postpone the
+ # change from summer time to winter time again, by three weeks to April
+ # 2nd:
+-# 
+ # http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
+-# 
+ #
+ # This is not yet reflected in the official "cambio de hora" site, but
+ # probably will be soon:
+-# 
+ # http://www.horaoficial.cl/cambio.htm
+-# 
+ 
+ # From Arthur David Olson (2011-03-02):
+ # The emol.com article mentions a water shortage as the cause of the
+@@ -1265,9 +1191,7 @@
+ 
+ # From Glenn Eychaner (2011-03-28):
+ # The article:
+-# 
+ # http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
+-# 
+ #
+ # In English:
+ # Chile's clocks will go back an hour this year on the 7th of May instead
+@@ -1298,7 +1222,7 @@
+ # start date is 2013-09-08 00:00....
+ # http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm
+ 
+-# From Jose Miguel Garrido (2014-02-19):
++# From José Miguel Garrido (2014-02-19):
+ # Today appeared in the Diario Oficial a decree amending the time change
+ # dates to 2014.
+ # DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
+@@ -1352,7 +1276,7 @@
+ # (1996-09) says 1998-03-08.  Ignore these.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Santiago	-4:42:46 -	LMT	1890
+-			-4:42:46 -	SMT	1910 	    # Santiago Mean Time
++			-4:42:46 -	SMT	1910        # Santiago Mean Time
+ 			-5:00	-	CLT	1916 Jul  1 # Chile Time
+ 			-4:42:46 -	SMT	1918 Sep  1 # Santiago Mean Time
+ 			-4:00	-	CLT	1919 Jul  1 # Chile Time
+@@ -1361,16 +1285,16 @@
+ 			-4:00	Chile	CL%sT
+ Zone Pacific/Easter	-7:17:44 -	LMT	1890
+ 			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
+-			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter I Time
++			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter Time
+ 			-6:00	Chile	EAS%sT
+ #
+-# Sala y Gomez Island is like Pacific/Easter.
+-# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
+-# San Felix, and Antarctic bases, are like America/Santiago.
++# Salas y Gómez Island is uninhabited.
++# Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
++# and Antarctic bases, are like America/Santiago.
+ 
+ # Colombia
+ 
+-# Milne gives 4:56:16.4 for Bogota time in 1899; round to nearest.  He writes,
++# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest.  He writes,
+ # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1378,37 +1302,37 @@
+ Rule	CO	1993	only	-	Apr	 4	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
+-			-4:56:16 -	BMT	1914 Nov 23 # Bogota Mean Time
++			-4:56:16 -	BMT	1914 Nov 23 # Bogotá Mean Time
+ 			-5:00	CO	CO%sT	# Colombia Time
+ # Malpelo, Providencia, San Andres
+ # no information; probably like America/Bogota
+ 
+-# Curacao
++# Curaçao
+ 
+-# Milne gives 4:35:46.9 for Curacao mean time; round to nearest.
++# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
+ #
+ # From Paul Eggert (2006-03-22):
+ # Shanks & Pottenger say that The Bottom and Philipsburg have been at
+ # -4:00 since standard time was introduced on 1912-03-02; and that
+ # Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
+ # 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
+-# Saba Island has been like Curacao.
++# Saba Island has been like Curaçao.
+ # This all predates our 1970 cutoff, though.
+ #
+-# By July 2007 Curacao and St Maarten are planned to become
++# By July 2007 Curaçao and St Maarten are planned to become
+ # associated states within the Netherlands, much like Aruba;
+ # Bonaire, Saba and St Eustatius would become directly part of the
+ # Netherlands as Kingdom Islands.  This won't affect their time zones
+ # though, as far as we know.
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12	# Willemstad
++Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12 # Willemstad
+ 			-4:30	-	ANT	1965 # Netherlands Antilles Time
+ 			-4:00	-	AST
+ 
+ # From Arthur David Olson (2011-06-15):
+ # use links for places with new iso3166 codes.
+-# The name "Lower Prince's Quarter" is both longer than fourteen charaters
++# The name "Lower Prince's Quarter" is both longer than fourteen characters
+ # and contains an apostrophe; use "Lower_Princes" below.
+ 
+ Link	America/Curacao	America/Lower_Princes	# Sint Maarten
+@@ -1416,7 +1340,7 @@
+ 
+ # Ecuador
+ #
+-# Milne says the Sentral and South American Telegraph Company used -5:24:15.
++# Milne says the Central and South American Telegraph Company used -5:24:15.
+ #
+ # From Paul Eggert (2007-03-04):
+ # Apparently Ecuador had a failed experiment with DST in 1992.
+@@ -1427,10 +1351,10 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Guayaquil	-5:19:20 -	LMT	1890
+ 			-5:14:00 -	QMT	1931 # Quito Mean Time
+-			-5:00	-	ECT	     # Ecuador Time
++			-5:00	-	ECT	# Ecuador Time
+ Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
+ 			-5:00	-	ECT	1986
+-			-6:00	-	GALT	     # Galapagos Time
++			-6:00	-	GALT	# Galápagos Time
+ 
+ # Falklands
+ 
+@@ -1439,7 +1363,7 @@
+ # the IATA gives 1996-09-08.  Go with Shanks & Pottenger.
+ 
+ # From Falkland Islands Government Office, London (2001-01-22)
+-# via Jesper Norgaard:
++# via Jesper Nørgaard:
+ # ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
+ # April 2001 and advance one hour to summer time at 2 am on Sunday 2
+ # September.  It is anticipated that the clocks will revert back at 2
+@@ -1488,9 +1412,7 @@
+ # daylight saving time.
+ #
+ # One source:
+-# 
+ # http://www.falklandnews.com/public/story.cfm?get=5914&source=3
+-# 
+ #
+ # We have gotten this confirmed by a clerk of the legislative assembly:
+ # Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
+@@ -1531,10 +1453,10 @@
+ Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
+-			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
+-			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
++			-3:51:24 -	SMT	1912 Mar 12 # Stanley Mean Time
++			-4:00	Falk	FK%sT	1983 May    # Falkland Is Time
+ 			-3:00	Falk	FK%sT	1985 Sep 15
+-			-4:00	Falk	FK%sT	2010 Sep 5 02:00
++			-4:00	Falk	FK%sT	2010 Sep  5  2:00
+ 			-3:00	-	FKST
+ 
+ # French Guiana
+@@ -1545,7 +1467,7 @@
+ 
+ # Guyana
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
++Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar    # Georgetown
+ 			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
+ 			-3:45	-	GYT	1975 Jul 31 # Guyana Time
+ 			-3:00	-	GYT	1991
+@@ -1555,8 +1477,8 @@
+ # Paraguay
+ #
+ # From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
+-# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
++# Shanks & Pottenger say that spring transitions are 01:00 -> 02:00,
++# and autumn transitions are 00:00 -> 23:00.  Go with pre-1999
+ # editions of Shanks, and with the IATA, who say transitions occur at 00:00.
+ #
+ # From Waldemar Villamayor-Venialbo (2013-09-20):
+@@ -1582,9 +1504,8 @@
+ # (10-01).
+ #
+ # Translated by Gwillim Law (2001-02-27) from
+-# 
+-# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
+-# :
++# Noticias, a daily paper in Asunción, Paraguay (2000-10-01):
++# http://www.diarionoticias.com.py/011000/nacional/naciona1.htm
+ # Starting at 0:00 today, the clock will be set forward 60 minutes, in
+ # fulfillment of Decree No. 7,273 of the Executive Power....  The time change
+ # system has been operating for several years.  Formerly there was a separate
+@@ -1605,21 +1526,18 @@
+ Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
+ Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
+ #
+-# From Jesper Norgaard Welen (2005-01-02):
++# From Jesper Nørgaard Welen (2005-01-02):
+ # There are several sources that claim that Paraguay made
+ # a timezone rule change in autumn 2004.
+ # From Steffen Thorsen (2005-01-05):
+ # Decree 1,867 (2004-03-05)
+-# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
+-# 
++# From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13)
++# http://www.presidencia.gov.py/decretos/D1867.pdf
+ Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	S
+ Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
+-# From Carlos Raul Perasso (2010-02-18):
+-# By decree number 3958 issued yesterday (
+-# 
++# From Carlos Raúl Perasso (2010-02-18):
++# By decree number 3958 issued yesterday
+ # http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
+-# 
+-# )
+ # Paraguay changes its DST schedule, postponing the March rule to April and
+ # modifying the October date. The decree reads:
+ # ...
+@@ -1635,25 +1553,25 @@
+ # Paraguay will end DST on 2013-03-24 00:00....
+ # http://www.ande.gov.py/interna.php?id=1075
+ #
+-# From Carlos Raul Perasso (2013-03-15):
++# From Carlos Raúl Perasso (2013-03-15):
+ # The change in Paraguay is now final.  Decree number 10780
+ # http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
+-# From Carlos Raul Perasso (2014-02-28):
++# From Carlos Raúl Perasso (2014-02-28):
+ # Decree 1264 can be found at:
+ # http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
+ Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Asuncion	-3:50:40 -	LMT	1890
+-			-3:50:40 -	AMT	1931 Oct 10 # Asuncion Mean Time
+-			-4:00	-	PYT	1972 Oct # Paraguay Time
++			-3:50:40 -	AMT	1931 Oct 10 # Asunción Mean Time
++			-4:00	-	PYT	1972 Oct    # Paraguay Time
+ 			-3:00	-	PYT	1974 Apr
+ 			-4:00	Para	PY%sT
+ 
+ # Peru
+ #
+-# 
+-# From Evelyn C. Leeper via Mark Brader (2003-10-26):
++# From Evelyn C. Leeper via Mark Brader (2003-10-26)
++# :
+ # When we were in Peru in 1985-1986, they apparently switched over
+ # sometime between December 29 and January 3 while we were on the Amazon.
+ #
+@@ -1679,7 +1597,7 @@
+ 
+ # South Georgia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890		# Grytviken
++Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890 # Grytviken
+ 			-2:00	-	GST	# South Georgia Time
+ 
+ # South Sandwich Is
+@@ -1689,9 +1607,9 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Paramaribo	-3:40:40 -	LMT	1911
+ 			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
+-			-3:40:36 -	PMT	1945 Oct # The capital moved?
++			-3:40:36 -	PMT	1945 Oct    # The capital moved?
+ 			-3:30	-	NEGT	1975 Nov 20 # Dutch Guiana Time
+-			-3:30	-	SRT	1984 Oct # Suriname Time
++			-3:30	-	SRT	1984 Oct    # Suriname Time
+ 			-3:00	-	SRT
+ 
+ # Trinidad and Tobago
+@@ -1706,7 +1624,7 @@
+ Link America/Port_of_Spain America/Guadeloupe
+ Link America/Port_of_Spain America/Marigot	# St Martin (French part)
+ Link America/Port_of_Spain America/Montserrat
+-Link America/Port_of_Spain America/St_Barthelemy
++Link America/Port_of_Spain America/St_Barthelemy # St Barthélemy
+ Link America/Port_of_Spain America/St_Kitts	# St Kitts & Nevis
+ Link America/Port_of_Spain America/St_Lucia
+ Link America/Port_of_Spain America/St_Thomas	# Virgin Islands (US)
+@@ -1765,7 +1683,7 @@
+ Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
+ Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
+ # From Eduardo Cota (2004-09-20):
+-# The uruguayan government has decreed a change in the local time....
++# The Uruguayan government has decreed a change in the local time....
+ # http://www.presidencia.gub.uy/decretos/2004091502.htm
+ Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
+ # From Steffen Thorsen (2005-03-11):
+@@ -1779,14 +1697,14 @@
+ # 02:00 local time, official time in Uruguay will be at GMT -2.
+ Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
+ Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
+-# From Jesper Norgaard Welen (2006-09-06):
++# From Jesper Nørgaard Welen (2006-09-06):
+ # http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
+ Rule	Uruguay	2006	max	-	Oct	Sun>=1	 2:00	1:00	S
+ Rule	Uruguay	2007	max	-	Mar	Sun>=8	 2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
+-			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
+-			-3:30	Uruguay	UY%sT	1942 Dec 14	# Uruguay Time
++			-3:44:44 -	MMT	1920 May  1 # Montevideo MT
++			-3:30	Uruguay	UY%sT	1942 Dec 14 # Uruguay Time
+ 			-3:00	Uruguay	UY%sT
+ 
+ # Venezuela
+@@ -1794,14 +1712,14 @@
+ # From John Stainforth (2007-11-28):
+ # ... the change for Venezuela originally expected for 2007-12-31 has
+ # been brought forward to 2007-12-09.  The official announcement was
+-# published today in the "Gaceta Oficial de la Republica Bolivariana
+-# de Venezuela, numero 38.819" (official document for all laws or
++# published today in the "Gaceta Oficial de la República Bolivariana
++# de Venezuela, número 38.819" (official document for all laws or
+ # resolution publication)
+ # http://www.globovision.com/news.php?nid=72208
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Caracas	-4:27:44 -	LMT	1890
+ 			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
+-			-4:30	-	VET	1965	     # Venezuela Time
+-			-4:00	-	VET	2007 Dec  9 03:00
++			-4:30	-	VET	1965        # Venezuela Time
++			-4:00	-	VET	2007 Dec  9  3:00
+ 			-4:30	-	VET
+--- ./jdk/test/sun/util/calendar/zi/tzdata/systemv	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/systemv	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,7 +21,6 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# 
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- ./jdk/test/sun/util/calendar/zi/tzdata/zone.tab	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/calendar/zi/tzdata/zone.tab	Mon Dec 08 12:29:42 2014 -0800
+@@ -21,39 +21,27 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# TZ zone descriptions
++# tz zone descriptions (deprecated version)
+ #
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
+-# From Paul Eggert (2013-08-14):
++# From Paul Eggert (2014-07-31):
++# This file is intended as a backward-compatibility aid for older programs.
++# New programs should use zone1970.tab.  This file is like zone1970.tab (see
++# zone1970.tab's comments), but with the following additional restrictions:
+ #
+-# This file contains a table where each row stands for an area that is
+-# the intersection of a region identified by a country code and of a
+-# zone where civil clocks have agreed since 1970.  The columns of the
+-# table are as follows:
++# 1.  This file contains only ASCII characters.
++# 2.  The first data column contains exactly one country code.
+ #
+-# 1.  ISO 3166 2-character country code.  See the file 'iso3166.tab'.
+-# 2.  Latitude and longitude of the area's principal location
+-#     in ISO 6709 sign-degrees-minutes-seconds format,
+-#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
+-#     first latitude (+ is north), then longitude (+ is east).
+-# 3.  Zone name used in value of TZ environment variable.
+-#     Please see the 'Theory' file for how zone names are chosen.
+-#     If multiple zones overlap a country, each has a row in the
+-#     table, with column 1 being duplicated.
+-# 4.  Comments; present if and only if the country has multiple rows.
+-#
+-# Columns are separated by a single tab.
+-# The table is sorted first by country, then an order within the country that
+-# (1) makes some geographical sense, and
+-# (2) puts the most populous areas first, where that does not contradict (1).
+-#
+-# Lines beginning with '#' are comments.
++# Because of (2), each row stands for an area that is the intersection
++# of a region identified by a country code and of a zone where civil
++# clocks have agreed since 1970; this is a narrower definition than
++# that of zone1970.tab.
+ #
+ # This table is intended as an aid for users, to help them select time
+-# zone data appropriate for their practical needs.  It is not intended
+-# to take or endorse any position on legal or territorial claims.
++# zone data entries appropriate for their practical needs.  It is not
++# intended to take or endorse any position on legal or territorial claims.
+ #
+ #country-
+ #code	coordinates	TZ			comments
+@@ -72,7 +60,7 @@
+ AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
+ AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
+ AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
+-AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
++AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Adelie Land
+ AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
+ AQ	-720041+0023206	Antarctica/Troll	Troll Station, Queen Maud Land
+ AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
+@@ -151,7 +139,7 @@
+ CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
+ CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
+ CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
+-CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut
++CA	+744144-0944945	America/Resolute	Central Time - Resolute, Nunavut
+ CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
+ CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
+ CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
+@@ -176,13 +164,10 @@
+ CI	+0519-00402	Africa/Abidjan
+ CK	-2114-15946	Pacific/Rarotonga
+ CL	-3327-07040	America/Santiago	most locations
+-CL	-2709-10926	Pacific/Easter	Easter Island & Sala y Gomez
++CL	-2709-10926	Pacific/Easter	Easter Island
+ CM	+0403+00942	Africa/Douala
+-CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.
+-CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin
+-CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
+-CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang
+-CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang
++CN	+3114+12128	Asia/Shanghai	Beijing Time
++CN	+4348+08735	Asia/Urumqi	Xinjiang Time
+ CO	+0436-07405	America/Bogota
+ CR	+0956-08405	America/Costa_Rica
+ CU	+2308-08222	America/Havana
+@@ -345,7 +330,8 @@
+ PF	-1732-14934	Pacific/Tahiti	Society Islands
+ PF	-0900-13930	Pacific/Marquesas	Marquesas Islands
+ PF	-2308-13457	Pacific/Gambier	Gambier Islands
+-PG	-0930+14710	Pacific/Port_Moresby
++PG	-0930+14710	Pacific/Port_Moresby	most locations
++PG	-0613+15534	Pacific/Bougainville	Bougainville
+ PH	+1435+12100	Asia/Manila
+ PK	+2452+06703	Asia/Karachi
+ PL	+5215+02100	Europe/Warsaw
+@@ -364,24 +350,26 @@
+ RO	+4426+02606	Europe/Bucharest
+ RS	+4450+02030	Europe/Belgrade
+ RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
+-RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
++RU	+554521+0373704	Europe/Moscow	Moscow+00 - west Russia
++RU	+4457+03406	Europe/Simferopol	Moscow+00 - Crimea
+ RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
+-RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia
+-RU	+4457+03406	Europe/Simferopol	Moscow+00 - Crimea
++RU	+5312+05009	Europe/Samara	Moscow+00 (Moscow+01 after 2014-10-26) - Samara, Udmurtia
+ RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
+ RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
+ RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
+-RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk
++RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 (Moscow+04 after 2014-10-26) - Kemerovo
+ RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
+ RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
++RU	+5203+11328	Asia/Chita	Moscow+06 (Moscow+05 after 2014-10-26) - Zabaykalsky
+ RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
+ RU	+623923+1353314	Asia/Khandyga	Moscow+06 - Tomponsky, Ust-Maysky
+ RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
+ RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
+ RU	+643337+1431336	Asia/Ust-Nera	Moscow+07 - Oymyakonsky
+-RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
+-RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+-RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
++RU	+5934+15048	Asia/Magadan	Moscow+08 (Moscow+07 after 2014-10-26) - Magadan
++RU	+6728+15343	Asia/Srednekolymsk	Moscow+08 - E Sakha, N Kuril Is
++RU	+5301+15839	Asia/Kamchatka	Moscow+08 (Moscow+09 after 2014-10-26) - Kamchatka
++RU	+6445+17729	Asia/Anadyr	Moscow+08 (Moscow+09 after 2014-10-26) - Bering Sea
+ RW	-0157+03004	Africa/Kigali
+ SA	+2438+04643	Asia/Riyadh
+ SB	-0932+16012	Pacific/Guadalcanal
+@@ -448,13 +436,13 @@
+ US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
+ US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona (except Navajo)
+ US	+340308-1181434	America/Los_Angeles	Pacific Time
++US	+550737-1313435	America/Metlakatla	Pacific Standard Time - Annette Island, Alaska
+ US	+611305-1495401	America/Anchorage	Alaska Time
+ US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
+ US	+571035-1351807	America/Sitka	Alaska Time - southeast Alaska panhandle
+ US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
+ US	+643004-1652423	America/Nome	Alaska Time - west Alaska
+ US	+515248-1763929	America/Adak	Aleutian Islands
+-US	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island
+ US	+211825-1575130	Pacific/Honolulu	Hawaii
+ UY	-3453-05611	America/Montevideo
+ UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
+--- ./jdk/test/sun/util/resources/TimeZone/Bug6317929.java	Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/test/sun/util/resources/TimeZone/Bug6317929.java	Mon Dec 08 12:29:42 2014 -0800
+@@ -122,11 +122,11 @@
+         TimeZone Currie = TimeZone.getTimeZone("Australia/Currie");
+         tzLocale = locales2Test[0];
+         if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals
+-           ("Eastern Standard Time (New South Wales)"))
++           ("Australian Eastern Standard Time (New South Wales)"))
+             throw new RuntimeException("\n" + tzLocale + ": LONG, " +
+                                        "non-daylight saving name for " +
+                                        "Australia/Currie should be " +
+-                                       "\"Eastern Standard Time " +
++                                       "\"Australian Eastern Standard Time " +
+                                        "(New South Wales)\"");
+         tzLocale = locales2Test[1];
+         if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals
+--- ./langtools/.hgtags	Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/.hgtags	Mon Dec 08 12:30:44 2014 -0800
+@@ -312,6 +312,8 @@
+ 9239118487dfb47ee850d2cc9b10a0a2e510da3c jdk8u20-b24
+ 9239118487dfb47ee850d2cc9b10a0a2e510da3c jdk8u20-b25
+ 5e6d409a72327a31b8a8f9aa0b32ef213c8b629c jdk8u20-b26
++7302299fa9c4fa48af02b6477ff3ccbb01f2d4ea jdk8u20-b31
++2f9120236904ce5bd8ebfde755c1b2edcc4dfdd6 jdk8u20-b32
+ f491f1581f196950c2cb858508dd06601968c417 jdk8u25-b00
+ 5bc865e0a2e3c59c1c8bc41e731509e1737ddea1 jdk8u25-b01
+ 4dec0c684a9ead80ea2bca6b042682367c1abf90 jdk8u25-b02
+@@ -329,3 +331,19 @@
+ a340d68b020585cad7aa6e38d1aafb19ad0e4e07 jdk8u25-b14
+ 6e0c19cd42d7c4d307bea26840ee831cbd14e2fc jdk8u25-b15
+ 7fa6fa7cc204de988e224c6f8f75e62128fa84cd jdk8u25-b16
++53ca196be1ae098466976c017b166d4ce180c36f jdk8u25-b17
++a4f0c6dd8f97d4dd89baf09463c748abea9b3ed7 jdk8u25-b18
++c4de614efd7affc001715aa5a7040620924ac44a jdk8u25-b31
++c4bd223559aad3d152968a09d56241175d82c561 jdk8u31-b00
++6b5e2c190f3023162a33b798e57a0d78e027c843 jdk8u31-b01
++8b4ea00b438d7f99ecd6a8345cb018d8a0379620 jdk8u31-b02
++6ce4f2acf83e17d084b9b9bce2ef98438e984064 jdk8u31-b03
++c271515197807db2f0496945241f0b09885af99b jdk8u31-b04
++2deb2110e81fc38f5b45842fd478aae168d2d27a jdk8u31-b05
++fe1980c653be1fa9fb50353c5a5305855dcd7bd4 jdk8u31-b06
++03b8ef4cf0c00aa040db27c7d8e68fa8b6133afd jdk8u31-b07
++05824e9d8171e3d50fd5d1a495169cb38b64cf08 jdk8u31-b08
++26c46688ce4a0909f65dc341df4315bf34a92202 jdk8u31-b09
++99c3209f228e1f9aa874b6bd0908fd5d9ebf7078 jdk8u31-b10
++e72be544fa9e247fba3c6bb61e291d80e127a461 jdk8u31-b11
++c956b12b30ee21a4fc5df1871fa3b01e84310ebe jdk8u31-b12
+--- ./langtools/src/share/classes/com/sun/tools/javac/jvm/Gen.java	Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/src/share/classes/com/sun/tools/javac/jvm/Gen.java	Mon Dec 08 12:30:44 2014 -0800
+@@ -1194,7 +1194,7 @@
+                              boolean testFirst) {
+             Env loopEnv = env.dup(loop, new GenContext());
+             int startpc = code.entryPoint();
+-            if (testFirst) {
++            if (testFirst) { //while or for loop
+                 CondItem c;
+                 if (cond != null) {
+                     code.statBegin(cond.pos);
+@@ -1240,6 +1240,9 @@
+                 code.resolve(c.falseJumps);
+             }
+             code.resolve(loopEnv.info.exit);
++            if (loopEnv.info.exit != null) {
++                loopEnv.info.exit.state.defined.excludeFrom(code.nextreg);
++            }
+         }
+ 
+         private enum LoopLocalVarRangeEndingPoint {
+--- ./langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Mon Dec 08 12:30:44 2014 -0800
+@@ -1534,7 +1534,7 @@
+ compiler.warn.override.unchecked.thrown={0}\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306F{1}\u3092\u30B9\u30ED\u30FC\u3057\u307E\u305B\u3093
+ 
+ # 0: symbol
+-compiler.warn.override.equals.but.not.hashcode=\u30AF\u30E9\u30B9{0}\u306F\u7B49\u53F7\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u304C\u3001\u3053\u306E\u30AF\u30E9\u30B9\u3082\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u3082hashCode\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u305B\u3093
++compiler.warn.override.equals.but.not.hashcode=\u30AF\u30E9\u30B9{0}\u306Fequals\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u304C\u3001\u3053\u306E\u30AF\u30E9\u30B9\u3082\u3001\u307E\u305F\u3001\u3044\u304B\u306A\u308B\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u3082\u3001hashCode\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u305B\u3093
+ 
+ ## The following are all possible strings for the first argument ({0}) of the
+ ## above strings.
+--- ./langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Mon Dec 08 12:30:44 2014 -0800
+@@ -1534,7 +1534,7 @@
+ compiler.warn.override.unchecked.thrown={0}\n\u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u672A\u629B\u51FA{1}
+ 
+ # 0: symbol
+-compiler.warn.override.equals.but.not.hashcode=\u7C7B{0}\u8986\u76D6\u4E86\u7B49\u53F7, \u4F46\u8BE5\u7C7B\u6216\u4EFB\u4F55\u8D85\u7C7B\u90FD\u672A\u8986\u76D6 hashCode \u65B9\u6CD5
++compiler.warn.override.equals.but.not.hashcode=\u7C7B{0}\u8986\u76D6\u4E86 equals, \u4F46\u8BE5\u7C7B\u6216\u4EFB\u4F55\u8D85\u7C7B\u90FD\u672A\u8986\u76D6 hashCode \u65B9\u6CD5
+ 
+ ## The following are all possible strings for the first argument ({0}) of the
+ ## above strings.
+--- ./langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Mon Dec 08 12:30:44 2014 -0800
+@@ -37,7 +37,7 @@
+ javac.opt.Xbootclasspath.p=\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306B\u4ED8\u52A0\u3059\u308B
+ javac.opt.Xbootclasspath.a=\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306B\u8FFD\u52A0\u3059\u308B
+ javac.opt.endorseddirs=\u63A8\u5968\u898F\u683C\u30D1\u30B9\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B
+-javac.opt.extdirs=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F\u62E1\u5F35\u6A5F\u80FD\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B
++javac.opt.extdirs=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u62E1\u5F35\u6A5F\u80FD\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B
+ javac.opt.processorpath=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B
+ javac.opt.processor=\u5B9F\u884C\u3059\u308B\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u691C\u51FA\u51E6\u7406\u3092\u30D0\u30A4\u30D1\u30B9
+ javac.opt.parameters=\u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u30EA\u30D5\u30EC\u30AF\u30B7\u30E7\u30F3\u7528\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u751F\u6210\u3057\u307E\u3059
+--- ./langtools/src/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties	Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/src/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties	Mon Dec 08 12:30:44 2014 -0800
+@@ -17,7 +17,7 @@
+ 
+ main.opt.e=\  -e    -regex         \u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u306E\u4F9D\u5B58\u6027\u3092\u691C\u51FA\u3057\u307E\u3059\n                                     (-p\u3068-e\u306F\u6392\u4ED6\u7684)
+ 
+-main.opt.include=\  -include                    \u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u30AF\u30E9\u30B9\u306B\u5206\u6790\u3092\u5236\u9650\u3057\u307E\u3059\n                                     \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u5206\u6790\u5BFE\u8C61\u30AF\u30E9\u30B9\u306E\n                                     \u30EA\u30B9\u30C8\u304C\u30D5\u30A3\u30EB\u30BF\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\u30D1\u30BF\u30FC\u30F3\u3092\u4F9D\u5B58\u6027\u306B\n                                     \u9069\u7528\u3059\u308B-p\u304A\u3088\u3073-e\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059
++main.opt.include=\  -include                    \u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u30AF\u30E9\u30B9\u306B\u5206\u6790\u3092\u5236\u9650\u3057\u307E\u3059\n                                     \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u5206\u6790\u5BFE\u8C61\u30AF\u30E9\u30B9\u306E\n                                     \u30EA\u30B9\u30C8\u304C\u30D5\u30A3\u30EB\u30BF\u3055\u308C\u307E\u3059\u3002\u30D1\u30BF\u30FC\u30F3\u3092\u4F9D\u5B58\u6027\u306B\n                                     \u9069\u7528\u3059\u308B-p\u304A\u3088\u3073-e\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059
+ 
+ main.opt.P=\  -P           -profile              \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3001\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A\u3057\u307E\u3059
+ 
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./langtools/test/tools/javac/T8049305/WrongStackframeGenerationTest1.java	Mon Dec 08 12:30:44 2014 -0800
+@@ -0,0 +1,47 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8049305
++ * @summary Verification error due to a bad stackmap frame generated by javac
++ */
++
++public class WrongStackframeGenerationTest1 {
++    public static void main(String[] args) {}
++
++    static void foo(){
++        while (true) {
++            int i = 0;
++            break;
++        }
++        switch (1) {
++            case 1:
++                int j = 0;
++            case 2:
++                bar();
++        }
++    }
++
++    static void bar() {}
++}
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ ./langtools/test/tools/javac/T8049305/WrongStackframeGenerationTest2.java	Mon Dec 08 12:30:44 2014 -0800
+@@ -0,0 +1,50 @@
++/*
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8049305
++ * @summary Verification error due to a bad stackmap frame generated by javac
++ */
++
++public class WrongStackframeGenerationTest2 {
++    public static void main(String[] args) {}
++
++    static void foo() {
++        int len;
++        for (;;) {
++            try {
++                len = 1;
++                break;
++            } catch (Exception e) {
++            }
++        }
++
++        try {
++           if (len == -1) {
++               len = 0;
++           }
++        } finally {
++        }
++    }
++}
+--- ./nashorn/.hgtags	Mon Sep 08 12:38:15 2014 -0700
++++ ./nashorn/.hgtags	Mon Dec 08 12:30:54 2014 -0800
+@@ -300,6 +300,8 @@
+ d3da140e179343011017669a6dbfcc52b0e56f52 jdk8u20-b24
+ d3da140e179343011017669a6dbfcc52b0e56f52 jdk8u20-b25
+ a23ac9db4227d78b3389e01fa94a8cb695a8fb0a jdk8u20-b26
++aa30541c5f0db0d03ae6625268642ac71f59c4e6 jdk8u20-b31
++bc4b5edeb8268a75718e65a84864f09c95b3032c jdk8u20-b32
+ 7001e9f95b443a75e432205a29974c05b88e0fdc jdk8u25-b00
+ a9f77bd14874d5f8fdf935704dd54a0451f2bc69 jdk8u25-b01
+ 895e47783e2ee6823496a5ae84039a4f50311c7d jdk8u25-b02
+@@ -317,3 +319,19 @@
+ 6a93467eaa36f732b84ecd463e046c4066fef40c jdk8u25-b14
+ 71e8403a2f8279315419adf5f4e9d6b232b6835c jdk8u25-b15
+ 1500138ce513600457be6bfa10979ecce6515aa6 jdk8u25-b16
++4b9cc65dd24d398c4f921c0beccfb8caeaaaf584 jdk8u25-b17
++cdbf34dbef404b47805c8c85b11c65c2afaa6674 jdk8u25-b18
++4f9e65387c21831d0ea5726641a302c2ce73a4cc jdk8u25-b31
++9b692a6e5f22228f822973d35610d37cb9dd9693 jdk8u31-b00
++6bf53bb6c969678488b1c073d56dd55df1a0ea17 jdk8u31-b01
++809bf97d7e70dcb3873fcbc10f12f62580b1c11d jdk8u31-b02
++3505d266634ded89bf9617ff6b385ab8a52f78cf jdk8u31-b03
++96acff2ad9e19aa80c4f7ed60d87a422bca1ea91 jdk8u31-b04
++5fc3f210872d365c57ed4e8dba3926d9ed5c7e45 jdk8u31-b05
++99a3333f7f8489bb3c80f0c0643ae19e549a0941 jdk8u31-b06
++5ed4fa732b26b6d8e37dfc5bbd00047c5352719b jdk8u31-b07
++b17ecf341ee544cc5507b9b586c14a13c3adc058 jdk8u31-b08
++762eaacc45cec3f7d593bedd08fb8de478d4415b jdk8u31-b09
++c68ba913a0eeea6eb94d9568e9985505ec3408a3 jdk8u31-b10
++599bd596fa549d882aa8fc5104c322a75a3af728 jdk8u31-b11
++f36c71a03e4ed467f630cc46d076a5bb4c58b6d5 jdk8u31-b12
diff --git a/java/openjdk8/files/patch-bsd b/java/openjdk8/files/patch-bsd
index 2982ee0c218a..5f8f9ad8027b 100644
--- a/java/openjdk8/files/patch-bsd
+++ b/java/openjdk8/files/patch-bsd
@@ -1,12 +1,5 @@
---- ./.hgtags	Wed Sep 17 11:23:18 2014 -0700
-+++ ./.hgtags	Wed Nov 05 15:01:08 2014 -0800
-@@ -331,3 +331,4 @@
- 4429ea47ee6eca6b8a1dbda1950566ee821ba19d jdk8u25-b14
- 09eaef69f384ecf8ec0342b87a8b150740941140 jdk8u25-b15
- f0a48c214c46b7351ff8e6d6b6dc533463a4be21 jdk8u25-b16
-+d117f01bfb4f34668ac216c9837e88acead14dce jdk8u25-b17
---- ./common/autoconf/build-performance.m4	Wed Sep 17 11:23:18 2014 -0700
-+++ ./common/autoconf/build-performance.m4	Wed Nov 05 15:01:08 2014 -0800
+--- ./common/autoconf/build-performance.m4	Tue Dec 02 11:10:25 2014 -0800
++++ ./common/autoconf/build-performance.m4	Sun Feb 01 21:04:41 2015 -0800
 @@ -41,6 +41,10 @@
      # Looks like a MacOSX system
      NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk  '{print [$]5}'`
@@ -30,9 +23,9 @@
    elif test "x$OPENJDK_BUILD_OS" = xwindows; then
      # Windows, but without cygwin
      MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
---- ./common/autoconf/generated-configure.sh	Wed Sep 17 11:23:18 2014 -0700
-+++ ./common/autoconf/generated-configure.sh	Wed Nov 05 15:01:08 2014 -0800
-@@ -1045,6 +1045,7 @@
+--- ./common/autoconf/generated-configure.sh	Tue Dec 02 11:10:25 2014 -0800
++++ ./common/autoconf/generated-configure.sh	Sun Feb 01 21:04:41 2015 -0800
+@@ -1046,6 +1046,7 @@
  with_extra_cflags
  with_extra_cxxflags
  with_extra_ldflags
@@ -40,7 +33,7 @@
  enable_debug_symbols
  enable_zip_debug_info
  enable_macosx_runtime_support
-@@ -1814,6 +1815,8 @@
+@@ -1816,6 +1817,8 @@
    --with-extra-cflags     extra flags to be used when compiling jdk c-files
    --with-extra-cxxflags   extra flags to be used when compiling jdk c++-files
    --with-extra-ldflags    extra flags to be used when linking jdk
@@ -49,7 +42,7 @@
    --with-x                use the X Window System
    --with-cups             specify prefix directory for the cups package
                            (expecting the headers under PATH/include)
-@@ -6800,7 +6803,7 @@
+@@ -6802,7 +6805,7 @@
  
    # First argument is the cpu name from the trip/quad
    case "$build_cpu" in
@@ -58,7 +51,7 @@
        VAR_CPU=x86_64
        VAR_CPU_ARCH=x86
        VAR_CPU_BITS=64
-@@ -6931,7 +6934,7 @@
+@@ -6933,7 +6936,7 @@
  
    # First argument is the cpu name from the trip/quad
    case "$host_cpu" in
@@ -67,7 +60,7 @@
        VAR_CPU=x86_64
        VAR_CPU_ARCH=x86
        VAR_CPU_BITS=64
-@@ -20136,7 +20139,7 @@
+@@ -20150,7 +20153,7 @@
    else
      COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
      # Check that this is likely to be GCC.
@@ -76,7 +69,7 @@
      if test $? -ne 0; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
  $as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
-@@ -21737,7 +21740,7 @@
+@@ -21751,7 +21754,7 @@
    else
      COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
      # Check that this is likely to be GCC.
@@ -85,7 +78,7 @@
      if test $? -ne 0; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
  $as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
-@@ -27701,7 +27704,7 @@
+@@ -27715,7 +27718,7 @@
  
    # objcopy is used for moving debug symbols to separate files when
    # full debug symbols are enabled.
@@ -94,7 +87,7 @@
      if test -n "$ac_tool_prefix"; then
    for ac_prog in gobjcopy objcopy
    do
-@@ -29367,8 +29370,10 @@
+@@ -29381,8 +29384,10 @@
        SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/$1'
        SET_SHARED_LIBRARY_MAPFILE=''
        SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
@@ -106,7 +99,7 @@
      fi
    else
      if test "x$OPENJDK_TARGET_OS" = xsolaris; then
-@@ -29794,22 +29799,37 @@
+@@ -29808,22 +29813,37 @@
    CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
  
    # The package path is used only on macosx?
@@ -157,7 +150,7 @@
    fi
    if test "x$OPENJDK_TARGET_OS" = xlinux; then
      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
-@@ -30308,11 +30328,11 @@
+@@ -30322,11 +30342,11 @@
    fi
  
    if test "x$OPENJDK_TARGET_OS" = xbsd; then
@@ -174,7 +167,7 @@
    fi
  
    if test "x$OPENJDK" = "xfalse"; then
-@@ -34581,7 +34601,7 @@
+@@ -34595,7 +34615,7 @@
  
    ###############################################################################
    #
@@ -183,7 +176,7 @@
    #
  
  # Check whether --with-alsa was given.
-@@ -34629,6 +34649,11 @@
+@@ -34643,6 +34663,11 @@
        ALSA_LIBS="-L${with_alsa_lib} -lasound"
        ALSA_FOUND=yes
      fi
@@ -195,7 +188,7 @@
      if test "x$ALSA_FOUND" = xno; then
  
  
-@@ -35619,6 +35644,11 @@
+@@ -35633,6 +35658,11 @@
      LIBCXX="-lstdc++"
    fi
  
@@ -207,7 +200,7 @@
  
  
  
-@@ -35692,6 +35722,10 @@
+@@ -35706,6 +35736,10 @@
      # Looks like a MacOSX system
      NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk  '{print $5}'`
      FOUND_CORES=yes
@@ -218,7 +211,7 @@
    elif test "x$OPENJDK_BUILD_OS" = xaix ; then
      NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'`
      FOUND_CORES=yes
-@@ -35747,6 +35781,11 @@
+@@ -35761,6 +35795,11 @@
      MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk  '{print $2}'`
      MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
      FOUND_MEM=yes
@@ -230,8 +223,8 @@
    elif test "x$OPENJDK_BUILD_OS" = xwindows; then
      # Windows, but without cygwin
      MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
---- ./common/autoconf/libraries.m4	Wed Sep 17 11:23:18 2014 -0700
-+++ ./common/autoconf/libraries.m4	Wed Nov 05 15:01:08 2014 -0800
+--- ./common/autoconf/libraries.m4	Tue Dec 02 11:10:25 2014 -0800
++++ ./common/autoconf/libraries.m4	Sun Feb 01 21:04:41 2015 -0800
 @@ -71,9 +71,9 @@
    fi
  
@@ -265,8 +258,8 @@
 +
    AC_SUBST(LIBCXX)
  ])
---- ./common/autoconf/platform.m4	Wed Sep 17 11:23:18 2014 -0700
-+++ ./common/autoconf/platform.m4	Wed Nov 05 15:01:08 2014 -0800
+--- ./common/autoconf/platform.m4	Tue Dec 02 11:10:25 2014 -0800
++++ ./common/autoconf/platform.m4	Sun Feb 01 21:04:41 2015 -0800
 @@ -30,7 +30,7 @@
  [
    # First argument is the cpu name from the trip/quad
@@ -287,8 +280,8 @@
      OPENJDK_TARGET_CPU_OSARCH="i386"
    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
      # On all platforms except macosx, we replace x86_64 with amd64.
---- ./common/autoconf/spec.gmk.in	Wed Sep 17 11:23:18 2014 -0700
-+++ ./common/autoconf/spec.gmk.in	Wed Nov 05 15:01:08 2014 -0800
+--- ./common/autoconf/spec.gmk.in	Tue Dec 02 11:10:25 2014 -0800
++++ ./common/autoconf/spec.gmk.in	Sun Feb 01 21:04:41 2015 -0800
 @@ -276,7 +276,7 @@
  ALSA_LIBS:=@ALSA_LIBS@
  ALSA_CFLAGS:=@ALSA_CFLAGS@
@@ -298,8 +291,8 @@
  
  # Source file for cacerts
  CACERTS_FILE=@CACERTS_FILE@
---- ./common/autoconf/toolchain.m4	Wed Sep 17 11:23:18 2014 -0700
-+++ ./common/autoconf/toolchain.m4	Wed Nov 05 15:01:08 2014 -0800
+--- ./common/autoconf/toolchain.m4	Tue Dec 02 11:10:25 2014 -0800
++++ ./common/autoconf/toolchain.m4	Sun Feb 01 21:04:41 2015 -0800
 @@ -72,7 +72,7 @@
    else
      COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
@@ -376,16 +369,16 @@
    fi
    if test "x$OPENJDK_TARGET_OS" = xlinux; then
      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
---- ./configure	Wed Sep 17 11:23:18 2014 -0700
-+++ ./configure	Wed Nov 05 15:01:08 2014 -0800
+--- ./configure	Tue Dec 02 11:10:25 2014 -0800
++++ ./configure	Sun Feb 01 21:04:41 2015 -0800
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
  #
  # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
---- ./make/Main.gmk	Wed Sep 17 11:23:18 2014 -0700
-+++ ./make/Main.gmk	Wed Nov 05 15:01:08 2014 -0800
+--- ./make/Main.gmk	Tue Dec 02 11:10:25 2014 -0800
++++ ./make/Main.gmk	Sun Feb 01 21:04:41 2015 -0800
 @@ -58,7 +58,11 @@
  
  # Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
@@ -398,8 +391,8 @@
  
  ### Main targets
  
---- ./make/common/MakeBase.gmk	Wed Sep 17 11:23:18 2014 -0700
-+++ ./make/common/MakeBase.gmk	Wed Nov 05 15:01:08 2014 -0800
+--- ./make/common/MakeBase.gmk	Tue Dec 02 11:10:25 2014 -0800
++++ ./make/common/MakeBase.gmk	Sun Feb 01 21:04:41 2015 -0800
 @@ -338,7 +338,7 @@
      # (and causing a crash on Cygwin).
      # Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris.
@@ -420,8 +413,8 @@
  endef
  
  # Make directory without forking mkdir if not needed
---- ./make/common/NativeCompilation.gmk	Wed Sep 17 11:23:18 2014 -0700
-+++ ./make/common/NativeCompilation.gmk	Wed Nov 05 15:01:08 2014 -0800
+--- ./make/common/NativeCompilation.gmk	Tue Dec 02 11:10:25 2014 -0800
++++ ./make/common/NativeCompilation.gmk	Sun Feb 01 21:04:41 2015 -0800
 @@ -151,9 +151,9 @@
    #   CC the compiler to use, default is $(CC)
    #   LDEXE the linker to use for linking executables, default is $(LDEXE)
@@ -435,22 +428,8 @@
  
    ifneq (,$$($1_BIN))
      $$(error BIN has been replaced with OBJECT_DIR)
---- ./corba/.hgtags	Mon Sep 08 12:34:37 2014 -0700
-+++ ./corba/.hgtags	Wed Sep 17 11:55:37 2014 -0700
-@@ -329,3 +329,4 @@
- 7e9a2027d0214019d66325fa7ca59cf8281fb43e jdk8u25-b14
- 5b2cb4935667cd02d7974b3b6fb6bf4092b5acae jdk8u25-b15
- 28d7f90e04e46ce8c633a2fbf0157d9e77db17c3 jdk8u25-b16
-+f46df0af2ca8c7d896de375c8edac8ce09318318 jdk8u25-b17
---- ./hotspot/.hgtags	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/.hgtags	Wed Nov 05 15:01:44 2014 -0800
-@@ -518,3 +518,4 @@
- c77d5db189422e2eef0443ee212644e497113b18 jdk8u25-b14
- e62c06b887310b5bd23be9b817a9a6f0daf0d0e1 jdk8u25-b15
- 6467bdd4d22d8b140844dc847c43b9ba7cb0bbd1 jdk8u25-b16
-+28b50d07f6f8c5a567b6a25e95a423948114a004 jdk8u25-b17
---- ./hotspot/make/bsd/makefiles/adjust-mflags.sh	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/adjust-mflags.sh	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/adjust-mflags.sh	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/adjust-mflags.sh	Sun Feb 01 21:04:50 2015 -0800
 @@ -64,7 +64,6 @@
  	echo "$MFLAGS" \
  	| sed '
@@ -459,8 +438,8 @@
  		s/ -j[0-9][0-9]*/ -j/
  		s/ -j\([^ 	]\)/ -j -\1/
  		s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
---- ./hotspot/make/bsd/makefiles/build_vm_def.sh	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/build_vm_def.sh	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/build_vm_def.sh	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/build_vm_def.sh	Sun Feb 01 21:04:50 2015 -0800
 @@ -1,12 +1,28 @@
  #!/bin/sh
  
@@ -496,8 +475,8 @@
 +        if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";"
 +    }' | sort -u ;;
 +esac
---- ./hotspot/make/bsd/makefiles/debug.make	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/debug.make	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/debug.make	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/debug.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -35,7 +35,10 @@
  # to inhibit the effect of the previous line on CFLAGS.
  
@@ -510,8 +489,8 @@
  
  VERSION = debug
  SYSDEFS += -DASSERT
---- ./hotspot/make/bsd/makefiles/fastdebug.make	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/fastdebug.make	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/fastdebug.make	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/fastdebug.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -56,7 +56,10 @@
  # to inhibit the effect of the previous line on CFLAGS.
  
@@ -524,8 +503,8 @@
  
  VERSION = fastdebug
  SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
---- ./hotspot/make/bsd/makefiles/gcc.make	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/gcc.make	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/gcc.make	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/gcc.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -168,6 +168,9 @@
    CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
  endif
@@ -568,7 +547,7 @@
      WARNING_FLAGS += -Wconversion
    endif
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/make/bsd/makefiles/launcher.make	Wed Nov 05 15:01:44 2014 -0800
++++ ./hotspot/make/bsd/makefiles/launcher.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -0,0 +1,117 @@
 +#
 +# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -687,8 +666,8 @@
 +	$(QUIETLY) sed -e 's/@@LIBARCH@@/$(LIBARCH)/g' $< > $@
 +	$(QUIETLY) chmod +x $@
 +
---- ./hotspot/make/bsd/makefiles/mapfile-vers-debug	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/mapfile-vers-debug	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug	Sun Feb 01 21:04:50 2015 -0800
 @@ -21,243 +21,251 @@
  # questions.
  #
@@ -1170,7 +1149,7 @@
 +                *;
 +};
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx	Wed Nov 05 15:01:44 2014 -0800
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx	Sun Feb 01 21:04:50 2015 -0800
 @@ -0,0 +1,263 @@
 +#
 +# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -1435,8 +1414,8 @@
 +
 +                # INSERT VTABLE SYMBOLS HERE
 +
---- ./hotspot/make/bsd/makefiles/mapfile-vers-product	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/mapfile-vers-product	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product	Sun Feb 01 21:04:50 2015 -0800
 @@ -21,238 +21,246 @@
  # questions.
  #
@@ -1909,7 +1888,7 @@
 +                *;
 +};
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx	Wed Nov 05 15:01:44 2014 -0800
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx	Sun Feb 01 21:04:50 2015 -0800
 @@ -0,0 +1,258 @@
 +#
 +# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -2169,8 +2148,8 @@
 +
 +                # INSERT VTABLE SYMBOLS HERE
 +
---- ./hotspot/make/bsd/makefiles/optimized.make	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/optimized.make	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/optimized.make	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/optimized.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -38,6 +38,9 @@
  # to inhibit the effect of the previous line on CFLAGS.
  
@@ -2182,8 +2161,8 @@
 +MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX)
  
  VERSION = optimized
---- ./hotspot/make/bsd/makefiles/product.make	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/product.make	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/product.make	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/product.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -38,7 +38,10 @@
  # to inhibit the effect of the previous line on CFLAGS.
  
@@ -2196,8 +2175,8 @@
  
  SYSDEFS += -DPRODUCT
  VERSION = optimized
---- ./hotspot/make/bsd/makefiles/rules.make	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/make/bsd/makefiles/rules.make	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/make/bsd/makefiles/rules.make	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/make/bsd/makefiles/rules.make	Sun Feb 01 21:04:50 2015 -0800
 @@ -34,7 +34,7 @@
  CC_COMPILE       = $(CC) $(CXXFLAGS) $(CFLAGS)
  CXX_COMPILE      = $(CXX) $(CXXFLAGS) $(CFLAGS)
@@ -2207,8 +2186,8 @@
  
  COMPILE.CC       = $(CC_COMPILE) -c
  GENASM.CC        = $(CC_COMPILE) -S
---- ./hotspot/src/cpu/x86/vm/jni_x86.h	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/cpu/x86/vm/jni_x86.h	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/cpu/x86/vm/jni_x86.h	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/cpu/x86/vm/jni_x86.h	Sun Feb 01 21:04:50 2015 -0800
 @@ -34,7 +34,7 @@
  #ifndef __has_attribute
    #define __has_attribute(x) 0
@@ -2218,8 +2197,8 @@
    #define JNIEXPORT     __attribute__((visibility("default")))
    #define JNIIMPORT     __attribute__((visibility("default")))
  #else
---- ./hotspot/src/cpu/x86/vm/x86_32.ad	2014-11-11 15:50:09.000000000 -0500
-+++ ./hotspot/src/cpu/x86/vm/x86_32.ad	2014-11-11 16:05:43.000000000 -0500
+--- ./hotspot/src/cpu/x86/vm/x86_32.ad	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/cpu/x86/vm/x86_32.ad	Sun Feb 01 21:04:50 2015 -0800
 @@ -1210,6 +1210,7 @@
  
  
@@ -2229,7 +2208,7 @@
  
  #ifndef PRODUCT
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp	Wed Nov 05 15:01:44 2014 -0800
++++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -0,0 +1,47 @@
 +/*
 + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -2278,8 +2257,8 @@
 +  return false;
 +}
 +#endif
---- ./hotspot/src/os/bsd/vm/jsig.c	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/os/bsd/vm/jsig.c	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/os/bsd/vm/jsig.c	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/os/bsd/vm/jsig.c	Sun Feb 01 21:04:50 2015 -0800
 @@ -140,9 +140,8 @@
  }
  
@@ -2292,8 +2271,8 @@
  
  static int call_os_sigaction(int sig, const struct sigaction  *act,
                               struct sigaction *oact) {
---- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -50,6 +50,7 @@
      case INTERRUPT_SIGNAL:
      case SIGFPE:
@@ -2403,8 +2382,8 @@
 +  jio_snprintf(buf, len, "SIG%s", signame);
 +  return true;
  }
---- ./hotspot/src/os/bsd/vm/jvm_bsd.h	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/os/bsd/vm/jvm_bsd.h	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/os/bsd/vm/jvm_bsd.h	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/os/bsd/vm/jvm_bsd.h	Sun Feb 01 21:04:50 2015 -0800
 @@ -112,20 +112,6 @@
  #define SHUTDOWN2_SIGNAL SIGINT
  #define SHUTDOWN3_SIGNAL SIGTERM
@@ -2426,8 +2405,8 @@
  #endif /* JVM_MD_H */
  
  #endif // OS_BSD_VM_JVM_BSD_H
---- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -30,7 +30,7 @@
  
  void OSThread::pd_initialize() {
@@ -2437,8 +2416,8 @@
    _thread_id        = 0;
  #else
    _thread_id        = NULL;
---- ./hotspot/src/os/bsd/vm/os_bsd.cpp	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/os/bsd/vm/os_bsd.cpp	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/os/bsd/vm/os_bsd.cpp	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/os/bsd/vm/os_bsd.cpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -102,6 +102,16 @@
  # include 
  # include 
@@ -2760,8 +2739,8 @@
      {
          int flags = ::fcntl(fd, F_GETFD);
          if (flags != -1)
---- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -44,7 +44,7 @@
      jio_snprintf(p, buflen - len,
                 "\n\n"
@@ -2780,19 +2759,8 @@
                     os::current_process_id(), os::current_process_id());
  
        os::fork_and_exec(buf);
---- ./hotspot/src/share/vm/classfile/javaClasses.cpp	2014-11-19 14:08:52.000000000 -0500
-+++ ./hotspot/src/share/vm/classfile/javaClasses.cpp	2014-11-19 14:10:18.000000000 -0500
-@@ -1242,7 +1242,7 @@
- // Helper backtrace functions to store bci|version together.
- static inline int merge_bci_and_version(int bci, int version) {
-   // only store u2 for version, checking for overflow.
--  if (version > USHRT_MAX || version < 0) version = MAX_VERSION;
-+  if (version > (int)USHRT_MAX || version < 0) version = MAX_VERSION;
-   assert((jushort)bci == bci, "bci should be short");
-   return build_int_from_shorts(version, bci);
- }
---- ./hotspot/src/share/vm/opto/node.cpp	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/share/vm/opto/node.cpp	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/share/vm/opto/node.cpp	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/share/vm/opto/node.cpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -286,6 +286,10 @@
  #ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
  #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
@@ -2815,8 +2783,8 @@
  
  //------------------------------clone------------------------------------------
  // Clone a Node.
---- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	Sun Feb 01 21:04:50 2015 -0800
 @@ -261,7 +261,7 @@
  #endif
  
@@ -2826,29 +2794,8 @@
  #define CAN_USE_NAN_DEFINE 1
  #endif
  
---- ./jaxp/.hgtags	Mon Sep 08 12:36:00 2014 -0700
-+++ ./jaxp/.hgtags	Wed Sep 17 11:56:44 2014 -0700
-@@ -331,3 +331,4 @@
- 90f3b8b970a8bb3173083111248372afdc61652d jdk8u25-b14
- f5ac2e242bb95be0a3deddf37362178202086137 jdk8u25-b15
- df68b132a471ed1e825a79bd1d8acb47d2bcc04f jdk8u25-b16
-+7a721e57b38ff6c1d34af0b86f6482540a815d90 jdk8u25-b17
---- ./jaxws/.hgtags	Mon Sep 08 12:36:09 2014 -0700
-+++ ./jaxws/.hgtags	Wed Sep 17 11:56:51 2014 -0700
-@@ -329,3 +329,4 @@
- 392a9579cc95d27806c1dde16eee776524a49761 jdk8u25-b14
- d3a96bbb88521188a3af1a34dd9523f13afa521d jdk8u25-b15
- 4570a7d00aa9bd3df028f52d6f9d8c434163b689 jdk8u25-b16
-+d47a47f961ee423ce03623098f62d79254c6f328 jdk8u25-b17
---- ./jdk/.hgtags	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/.hgtags	Wed Nov 05 12:14:24 2014 -0800
-@@ -332,3 +332,4 @@
- 0000000000000000000000000000000000000000 jdk8u25-b16
- 0000000000000000000000000000000000000000 jdk8u25-b16
- d067890f970f3a712f870f6311d20f3359b6eaf0 jdk8u25-b16
-+67b22a82345bfa1ae1492679bdf3c4d54f4eacde jdk8u25-b17
---- ./jdk/make/CompileDemos.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/CompileDemos.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/CompileDemos.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/CompileDemos.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -323,7 +323,7 @@
  $(eval $(call SetupJVMTIDemo,hprof, java_crw_demo, \
      -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \
@@ -2858,8 +2805,8 @@
  
  $(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo))
  $(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo))
---- ./jdk/make/CompileJavaClasses.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/CompileJavaClasses.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/CompileJavaClasses.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/CompileJavaClasses.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -125,23 +125,32 @@
        sun/nio/fs/LinuxFileStore.java \
        sun/nio/fs/LinuxFileSystem.java \
@@ -2960,8 +2907,8 @@
          $(CLOSED_SRC_DIRS), \
      INCLUDES := $(SECURITY_PKGS), \
      EXCLUDES := $(EXCLUDES), \
---- ./jdk/make/CompileLaunchers.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/CompileLaunchers.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/CompileLaunchers.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/CompileLaunchers.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -49,7 +49,7 @@
    ORIGIN_ROOT := /..
  endif
@@ -3060,8 +3007,8 @@
    BUILD_JSPAWNHELPER := 1
  endif
  
---- ./jdk/make/CopyFiles.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/CopyFiles.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/CopyFiles.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/CopyFiles.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -29,6 +29,8 @@
  
  ifeq ($(OPENJDK_TARGET_OS), windows)
@@ -3104,8 +3051,8 @@
              endif
            endif
          endif
---- ./jdk/make/Images.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/Images.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/Images.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/Images.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -234,11 +234,11 @@
  endif
  
@@ -3176,7 +3123,7 @@
  
  ################################################################################
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/data/classlist/classlist.bsd	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/make/data/classlist/classlist.bsd	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,2803 @@
 +com/sun/java/swing/SwingUtilities3
 +com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
@@ -5981,8 +5928,8 @@
 +sun/util/resources/en/TimeZoneNames_en
 +sun/util/spi/CalendarProvider
 +# ca392e7ee7285d72
---- ./jdk/make/gendata/GendataFontConfig.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/gendata/GendataFontConfig.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/gendata/GendataFontConfig.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/gendata/GendataFontConfig.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -73,6 +73,13 @@
    GENDATA_FONT_CONFIG_SRC_PREFIX := aix.
  endif
@@ -5997,8 +5944,8 @@
  ###
  
  $(GENDATA_FONT_CONFIG_DST)/%.src: \
---- ./jdk/make/gensrc/GensrcMisc.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/gensrc/GensrcMisc.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/gensrc/GensrcMisc.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/gensrc/GensrcMisc.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -64,9 +64,6 @@
  
  ifeq ($(OPENJDK_TARGET_OS_API), posix)
@@ -6009,8 +5956,8 @@
    # UNIXProcess.java is different for solaris and linux. We need to copy
    # the correct UNIXProcess.java over to $(JDK_OUTPUTDIR)/gensrc/java/lang/.
  
---- ./jdk/make/lib/Awt2dLibraries.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/lib/Awt2dLibraries.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/lib/Awt2dLibraries.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/lib/Awt2dLibraries.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -309,7 +309,7 @@
      debug_trace.c \
      debug_util.c
@@ -6115,8 +6062,8 @@
    else	# .. all other Unixes can use X_LIBS
      LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
    endif
---- ./jdk/make/lib/CoreLibraries.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/lib/CoreLibraries.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/lib/CoreLibraries.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/lib/CoreLibraries.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -82,7 +82,7 @@
  endif
  
@@ -6189,8 +6136,8 @@
      LDFLAGS_macosx := -liconv, \
      LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \
      LDFLAGS_SUFFIX_solaris := -lc, \
---- ./jdk/make/lib/NetworkingLibraries.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/lib/NetworkingLibraries.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/lib/NetworkingLibraries.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/lib/NetworkingLibraries.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -42,7 +42,7 @@
    LIBNET_EXCLUDE_FILES += linux_close.c
  endif
@@ -6208,8 +6155,8 @@
      LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
          delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
          -DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \
---- ./jdk/make/lib/NioLibraries.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/lib/NioLibraries.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/lib/NioLibraries.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/lib/NioLibraries.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -77,9 +77,28 @@
        UnixNativeDispatcher.c
  endif
@@ -6256,8 +6203,8 @@
          LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \
          OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsctp, \
          DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
---- ./jdk/make/lib/ServiceabilityLibraries.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/lib/ServiceabilityLibraries.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/lib/ServiceabilityLibraries.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/lib/ServiceabilityLibraries.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -30,7 +30,7 @@
  ifneq ($(OPENJDK_TARGET_OS), linux)
    LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c
@@ -6335,8 +6282,8 @@
    ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
      LIBHPROF_OPTIMIZATION := LOW
    endif
---- ./jdk/make/lib/SoundLibraries.gmk	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/lib/SoundLibraries.gmk	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/lib/SoundLibraries.gmk	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/lib/SoundLibraries.gmk	Sun Feb 01 21:05:04 2015 -0800
 @@ -75,6 +75,11 @@
    LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX
  endif # OPENJDK_TARGET_OS aix
@@ -6366,8 +6313,8 @@
        LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \
        OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjsoundalsa, \
        DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
---- ./jdk/make/mapfiles/launchers/mapfile-x86	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/mapfiles/launchers/mapfile-x86	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/mapfiles/launchers/mapfile-x86	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/mapfiles/launchers/mapfile-x86	Sun Feb 01 21:05:04 2015 -0800
 @@ -33,6 +33,7 @@
  		environ;	# Public symbols and required by Java run time
  		_environ;
@@ -6376,8 +6323,8 @@
  		___Argv;	# The following are private, but as they are
  		_start;		# exported from ctr1/crtn, the clever hacker
  		_init;		# might know about them.  However note, that
---- ./jdk/make/mapfiles/launchers/mapfile-x86_64	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/mapfiles/launchers/mapfile-x86_64	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/mapfiles/launchers/mapfile-x86_64	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/mapfiles/launchers/mapfile-x86_64	Sun Feb 01 21:05:04 2015 -0800
 @@ -33,6 +33,7 @@
  		environ;	# Public symbols and required by Java run time
  		_environ;
@@ -6387,7 +6334,7 @@
  	local:
  		*;
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/mapfiles/libattach/mapfile-bsd	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/make/mapfiles/libattach/mapfile-bsd	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,42 @@
 +#
 +# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -6432,7 +6379,7 @@
 +		*;
 +};
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/mapfiles/libnio/mapfile-bsd	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/make/mapfiles/libnio/mapfile-bsd	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,195 @@
 +#
 +# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -6629,8 +6576,8 @@
 +	local:
 +		*;
 +};
---- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200	Sun Feb 01 21:05:04 2015 -0800
 @@ -26,6 +26,9 @@
  # Define library interface.
  
@@ -6642,7 +6589,7 @@
  	    *;
  };
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/netbeans/common/bsd-sources.ent	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/make/netbeans/common/bsd-sources.ent	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,45 @@
 +
 +
@@ -6690,7 +6637,7 @@
 +    ${root}/src/bsd/classes
 +
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/make/netbeans/common/bsd-view.ent	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/make/netbeans/common/bsd-view.ent	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,39 @@
 +
 +
@@ -6731,8 +6678,8 @@
 +    ${includes}
 +    ${excludes}
 +
---- ./jdk/make/netbeans/common/java-data-native.ent	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/netbeans/common/java-data-native.ent	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/netbeans/common/java-data-native.ent	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/netbeans/common/java-data-native.ent	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,6 +34,7 @@
  
      
@@ -6741,8 +6688,8 @@
          ${root}/src/macosx/classes
          ${root}/src/solaris/classes
          ${root}/src/windows/classes
---- ./jdk/make/netbeans/common/make.xml	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/netbeans/common/make.xml	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/netbeans/common/make.xml	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/netbeans/common/make.xml	Sun Feb 01 21:05:04 2015 -0800
 @@ -32,16 +32,21 @@
  -->
  
@@ -6777,8 +6724,8 @@
      
              
              
---- ./jdk/make/netbeans/j2se/nbproject/project.xml	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/netbeans/j2se/nbproject/project.xml	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/netbeans/j2se/nbproject/project.xml	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/netbeans/j2se/nbproject/project.xml	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,6 +34,7 @@
  
@@ -6811,8 +6758,8 @@
                      &macosx-view;
                      &unix-view;
                      &windows-view;
---- ./jdk/make/netbeans/world/nbproject/project.xml	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/make/netbeans/world/nbproject/project.xml	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/make/netbeans/world/nbproject/project.xml	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/make/netbeans/world/nbproject/project.xml	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,12 +34,14 @@
  
@@ -6845,7 +6792,7 @@
                      &unix-view;
                      &windows-view;
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,97 @@
 +/*
 + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -6945,7 +6892,7 @@
 +    }
 +}
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,48 @@
 +/*
 + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -6996,7 +6943,7 @@
 +
 +}
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,213 @@
 +/*
 + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7212,7 +7159,7 @@
 +    private static native void interrupt(int fd);
 +}
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,249 @@
 +/*
 + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7464,7 +7411,7 @@
 +    }
 +}
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,44 @@
 +/*
 + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -7510,8 +7457,8 @@
 +        return new KQueueSelectorImpl(this);
 +    }
 +}
---- ./jdk/src/bsd/doc/man/javah.1	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/bsd/doc/man/javah.1	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/bsd/doc/man/javah.1	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/bsd/doc/man/javah.1	Sun Feb 01 21:05:04 2015 -0800
 @@ -110,7 +110,7 @@
  
  \&.:\fIyour-path\fR
@@ -7521,8 +7468,8 @@
  
  \fIWindows\fR:
  
---- ./jdk/src/bsd/doc/man/rmic.1	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/bsd/doc/man/rmic.1	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/bsd/doc/man/rmic.1	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/bsd/doc/man/rmic.1	Sun Feb 01 21:05:04 2015 -0800
 @@ -93,7 +93,7 @@
  .TP
  -classpath path
@@ -7541,8 +7488,8 @@
  .SH SEE\ ALSO    
  .TP 0.2i    
  \(bu
---- ./jdk/src/bsd/doc/man/rmid.1	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/bsd/doc/man/rmid.1	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/bsd/doc/man/rmid.1	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/bsd/doc/man/rmid.1	Sun Feb 01 21:05:04 2015 -0800
 @@ -301,7 +301,7 @@
  .SH ENVIRONMENT\ VARIABLES    
  .TP     
@@ -7553,7 +7500,7 @@
  .TP 0.2i    
  \(bu
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,171 @@
 +/*
 + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -7726,7 +7673,7 @@
 +    }
 +}
 +
---- ./jdk/src/macosx/classes/java/net/DefaultInterface.java	Tue Sep 09 12:00:58 2014 -0700
+--- ./jdk/src/macosx/classes/java/net/DefaultInterface.java	Mon Dec 08 08:53:26 2014 -0800
 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
 @@ -1,97 +0,0 @@
 -/*
@@ -7826,7 +7773,7 @@
 -        return (ppp != null) ? ppp : loopback;
 -    }
 -}
---- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java	Tue Sep 09 12:00:58 2014 -0700
+--- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java	Mon Dec 08 08:53:26 2014 -0800
 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
 @@ -1,48 +0,0 @@
 -/*
@@ -7877,7 +7824,7 @@
 -    }
 -
 -}
---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java	Tue Sep 09 12:00:58 2014 -0700
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java	Mon Dec 08 08:53:26 2014 -0800
 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
 @@ -1,213 +0,0 @@
 -/*
@@ -8093,7 +8040,7 @@
 -                               long timeout);
 -    private static native void interrupt(int fd);
 -}
---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java	Tue Sep 09 12:00:58 2014 -0700
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java	Mon Dec 08 08:53:26 2014 -0800
 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
 @@ -1,249 +0,0 @@
 -/*
@@ -8345,7 +8292,7 @@
 -        return this;
 -    }
 -}
---- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java	Tue Sep 09 12:00:58 2014 -0700
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java	Mon Dec 08 08:53:26 2014 -0800
 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
 @@ -1,44 +0,0 @@
 -/*
@@ -8392,7 +8339,7 @@
 -        return new KQueueSelectorImpl(this);
 -    }
 -}
---- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c	Tue Sep 09 12:00:58 2014 -0700
+--- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c	Mon Dec 08 08:53:26 2014 -0800
 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
 @@ -1,171 +0,0 @@
 -/*
@@ -8566,8 +8513,8 @@
 -    }
 -}
 -
---- ./jdk/src/share/bin/jli_util.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/bin/jli_util.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/bin/jli_util.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/bin/jli_util.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -82,7 +82,7 @@
  #define _LARGFILE64_SOURCE
  #define JLI_Lseek                       lseek64
@@ -8577,8 +8524,8 @@
  #define JLI_Lseek                       lseek
  #endif
  #ifdef _AIX
---- ./jdk/src/share/classes/sun/awt/FontConfiguration.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/awt/FontConfiguration.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -1146,7 +1146,7 @@
       */
      HashMap existsMap;
@@ -8588,8 +8535,8 @@
              return false;
          } else if (existsMap == null) {
             existsMap = new HashMap();
---- ./jdk/src/share/classes/sun/awt/OSInfo.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/awt/OSInfo.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/awt/OSInfo.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/awt/OSInfo.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -39,6 +39,7 @@
          WINDOWS,
          LINUX,
@@ -8609,8 +8556,8 @@
              if (osName.contains("OS X")) {
                  return MACOSX;
              }
---- ./jdk/src/share/classes/sun/font/FontUtilities.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/font/FontUtilities.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/font/FontUtilities.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/font/FontUtilities.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -48,6 +48,8 @@
  
      public static boolean isLinux;
@@ -8629,8 +8576,8 @@
                  isMacOSX = osName.contains("OS X"); // TODO: MacOSX
  
                  String t2kStr = System.getProperty("sun.java2d.font.scaler");
---- ./jdk/src/share/classes/sun/font/SunFontManager.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/font/SunFontManager.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/font/SunFontManager.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/font/SunFontManager.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -418,7 +418,7 @@
                           * registerFonts method as on-screen these JRE fonts
                           * always go through the T2K rasteriser.
@@ -8640,8 +8587,8 @@
                              /* Linux font configuration uses these fonts */
                              registerFontDir(jreFontDirName);
                          }
---- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -1298,7 +1298,7 @@
          String osName = AccessController.doPrivileged(
              new GetPropertyAction("os.name"));
@@ -8651,8 +8598,8 @@
              charset("x-COMPOUND_TEXT", "COMPOUND_TEXT",
                      new String[] {
                          "COMPOUND_TEXT",        // JDK historical
---- ./jdk/src/share/classes/sun/print/PSPrinterJob.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/print/PSPrinterJob.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -1587,7 +1587,7 @@
          }
  
@@ -8662,8 +8609,8 @@
              execCmd = new String[ncomps];
              execCmd[n++] = "/usr/bin/lpr";
              if ((pFlags & PRINTER) != 0) {
---- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -48,6 +48,7 @@
                      public Boolean run() {
                              String osname = System.getProperty("os.name");
@@ -8672,8 +8619,8 @@
                                  osname.contains("OS X") ||
                                  osname.startsWith("Linux")) {
                                  return new Boolean(System.getProperty
---- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -90,6 +90,12 @@
                                      "libgssapi_krb5.so",
                                      "libgssapi_krb5.so.2",
@@ -8687,8 +8634,8 @@
                              } else if (osname.contains("OS X")) {
                                  gssLibs = new String[]{
                                      "libgssapi_krb5.dylib",
---- ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -403,7 +403,8 @@
              long uid = 0;
  
@@ -8699,8 +8646,8 @@
                  try {
                      Class c = Class.forName
                          ("com.sun.security.auth.module.UnixSystem");
---- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,4 +31,5 @@
  #[windows]sun.tools.attach.WindowsAttachProvider
  #[linux]sun.tools.attach.LinuxAttachProvider
@@ -8708,7 +8655,7 @@
 +#[bsd]sun.tools.attach.BsdAttachProvider
  #[aix]sun.tools.attach.AixAttachProvider
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/share/lib/security/java.security-bsd	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/share/lib/security/java.security-bsd	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,498 @@
 +#
 +# This is the "master security properties file".
@@ -9208,8 +9155,8 @@
 +#
 +# Example:
 +#   jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
---- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp	Sun Feb 01 21:05:04 2015 -0800
 @@ -62,7 +62,7 @@
  
  #endif // End of ZLIB
@@ -9219,8 +9166,8 @@
  #define SWAP_BYTES(a) \
      ((((a) << 8) & 0xff00) | 0x00ff) & (((a) >> 8) | 0xff00)
  #else
---- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -121,7 +121,7 @@
  }
  
@@ -9248,8 +9195,8 @@
  #define MAP_NATIVE2LE16(a) (a)
  #define MAP_NATIVE2BE16(a) MAP_SWAP16_impl(a)
  #define MAP_NATIVE2LE32(a) (a)
---- ./jdk/src/share/native/com/sun/media/sound/Utilities.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/com/sun/media/sound/Utilities.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -28,7 +28,7 @@
  
  
@@ -9259,8 +9206,8 @@
      return 0;
  #else
      return 1;
---- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -40,7 +40,7 @@
  #endif
  #endif
@@ -9270,8 +9217,8 @@
  #define __HI(x) *(1+(int*)&x)
  #define __LO(x) *(int*)&x
  #define __HIp(x) *(1+(int*)x)
---- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -623,7 +623,7 @@
      switch(type) {
          case java_awt_image_BufferedImage_TYPE_INT_ARGB:
@@ -9299,8 +9246,8 @@
              colorOrder[0] = 2;
              colorOrder[1] = 1;
              colorOrder[2] = 0;
---- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -1176,7 +1176,7 @@
  
  #define NLUT 8
@@ -9310,8 +9257,8 @@
  #define INDEXES    { 3, 2, 1, 0, 7, 6, 5, 4 }
  #else
  #define INDEXES    { 0, 1, 2, 3, 4, 5, 6, 7 }
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -86,7 +86,7 @@
  #endif /* MLIB_USE_FTOI_CLAMPING */
  
@@ -9351,8 +9298,8 @@
  
  #endif /* _NO_LONGLONG */
  
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -126,7 +126,7 @@
  #define D2I(x) CLAMP_S32((x) SAT_OFF)
  
@@ -9392,8 +9339,8 @@
  #endif /* _NO_LONGLONG */
  
  /***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -94,7 +94,7 @@
  #define D2I(x) CLAMP_S32((x) SAT_OFF)
  
@@ -9433,8 +9380,8 @@
  #endif /* _NO_LONGLONG */
  
  /***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -126,7 +126,7 @@
  #define D2I(x) CLAMP_S32((x) SAT_OFF)
  
@@ -9474,8 +9421,8 @@
  #endif /* _NO_LONGLONG */
  
  /***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -95,7 +95,7 @@
  #define D2I(x) CLAMP_S32((x) SAT_OFF)
  
@@ -9515,8 +9462,8 @@
  #endif /* _NO_LONGLONG */
  
  /***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -126,7 +126,7 @@
  #define D2I(x) CLAMP_S32((x) SAT_OFF)
  
@@ -9556,8 +9503,8 @@
  #endif /* _NO_LONGLONG */
  
  /***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -94,7 +94,7 @@
  #define D2I(x) CLAMP_S32((x) SAT_OFF)
  
@@ -9597,8 +9544,8 @@
  #endif /* _NO_LONGLONG */
  
  /***************************************************************/
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -95,7 +95,7 @@
      dst = dp[0];
      if (ld_offset + size < 32) {
@@ -9818,8 +9765,8 @@
    }
  
  #else  /* _LONGLONG */
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -168,7 +168,7 @@
  }
  
@@ -10100,8 +10047,8 @@
        dp[12] = t0;
        dp[13] = t1;
        dp[14] = t2;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -88,7 +88,7 @@
  } d64_2_f32;
  
@@ -10253,8 +10200,8 @@
  
    ((mlib_u32*)lh)[0] = l;  ((mlib_u32*)lh)[1] = l;
    ((mlib_u32*)lh)[2] = l;  ((mlib_u32*)lh)[3] = h;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -30,7 +30,7 @@
  typedef union {
    mlib_d64 db;
@@ -10264,8 +10211,8 @@
      mlib_s32 int1, int0;
  #else
      mlib_s32 int0, int1;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -275,11 +275,11 @@
        for (i = 0; j <= (b_size - 4); j += 4, i++) {
          src0 = src1;
@@ -10364,8 +10311,8 @@
          s0 = s1;
          dp += SIZE;
          sp += SIZE;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -120,7 +120,7 @@
    }                                                               \
  }
@@ -11598,8 +11545,8 @@
        dp[12] = t0;
        dp[13] = t1;
        dp[14] = t2;
---- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -27,9 +27,6 @@
  #ifndef MLIB_IMAGE_H
  #define MLIB_IMAGE_H
@@ -11610,8 +11557,8 @@
  #include 
  #include 
  #include 
---- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -29,7 +29,7 @@
  #ifdef MACOSX
  #include 
@@ -11631,8 +11578,8 @@
  #else
    return (void *) memalign(8, size);
  #endif /* _MSC_VER */
---- ./jdk/src/share/native/sun/font/layout/LEStandalone.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/font/layout/LEStandalone.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -136,7 +136,7 @@
  #define U_CAPI extern "C"
  
@@ -11642,8 +11589,8 @@
          #define U_IS_BIG_ENDIAN 0
      #endif
  #endif
---- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -182,7 +182,7 @@
          return 0L;
      }
@@ -11653,8 +11600,8 @@
      /* Reversing data packed into int for LE archs */
      if (isInIntPacked) {
          inFormatter ^= DOSWAP_SH(1);
---- ./jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -202,7 +202,7 @@
  // Try to detect big endian platforms. This list can be endless, so only some checks are performed over here.
  // you can pass this toggle to the compiler by using -DCMS_USE_BIG_ENDIAN or something similar
@@ -11664,8 +11611,8 @@
  #   define CMS_USE_BIG_ENDIAN      1
  #endif
  
---- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -27,6 +27,7 @@
  #include 
  #include "management.h"
@@ -11674,8 +11621,8 @@
  
  JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled
  (JNIEnv *env, jobject dummy, jboolean enabled) {
---- ./jdk/src/solaris/back/util_md.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/back/util_md.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/back/util_md.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/back/util_md.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -51,7 +51,7 @@
  
  /* On little endian machines, convert java big endian numbers. */
@@ -11685,8 +11632,8 @@
  
  #define HOST_TO_JAVA_CHAR(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
  #define HOST_TO_JAVA_SHORT(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
---- ./jdk/src/solaris/bin/ergo_i586.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/bin/ergo_i586.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/bin/ergo_i586.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/bin/ergo_i586.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -106,7 +106,7 @@
  
  #endif /* __solaris__ */
@@ -11705,8 +11652,8 @@
  
  /*
   * Routines shared by solaris-i586 and linux-i586.
---- ./jdk/src/solaris/bin/java_md_solinux.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/bin/java_md_solinux.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/bin/java_md_solinux.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/bin/java_md_solinux.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -306,9 +306,9 @@
      if (llp == NULL && dmllp == NULL) {
          return JNI_FALSE;
@@ -11793,8 +11740,8 @@
  }
  
  int
---- ./jdk/src/solaris/bin/java_md_solinux.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/bin/java_md_solinux.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/bin/java_md_solinux.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/bin/java_md_solinux.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -26,17 +26,26 @@
  #ifndef JAVA_MD_SOLINUX_H
  #define JAVA_MD_SOLINUX_H
@@ -11835,8 +11782,8 @@
  #else /* !__solaris__, i.e. Linux, AIX,.. */
  static const char *system_dir   = "/usr/java";
  static const char *user_dir     = "/java";
---- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	Sun Feb 01 21:05:04 2015 -0800
 @@ -94,8 +94,9 @@
          {
              public LaunchMechanism run() {
@@ -11849,7 +11796,7 @@
                      "jdk.lang.Process.launchMechanism", "posix_spawn");
  
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.macosx	Wed Nov 05 12:14:24 2014 -0800
++++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.macosx	Sun Feb 01 21:05:04 2015 -0800
 @@ -0,0 +1,408 @@
 +/*
 + * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -12259,8 +12206,8 @@
 +        }
 +    }
 +}
---- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -213,7 +213,7 @@
          if (fontID != null) {
              fileName = (String)fontNameMap.get(fontID);
@@ -12288,8 +12235,8 @@
               (!mFontConfig.foundOsSpecificFile() ||
                !mFontConfig.fontFilesArePresent()) ||
               (FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) {
---- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties	Sun Feb 01 21:05:04 2015 -0800
 @@ -26,134 +26,134 @@
  
  # Version
@@ -12552,8 +12499,8 @@
 +filename.NanumGothic_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothicBold.ttf
 +filename.NanumMyeongjo=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjo.ttf
 +filename.NanumMyeongjo_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjoBold.ttf
---- ./jdk/src/solaris/classes/sun/net/PortConfig.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/net/PortConfig.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/net/PortConfig.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/net/PortConfig.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -52,7 +52,7 @@
                      } else if (os.startsWith("SunOS")) {
                          defaultLower = 32768;
@@ -12563,8 +12510,8 @@
                          defaultLower = 49152;
                          defaultUpper = 65535;
                      } else if (os.startsWith("AIX")) {
---- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -66,7 +66,7 @@
              return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider");
          if (osname.equals("Linux"))
@@ -12574,8 +12521,8 @@
              return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider");
          if (osname.equals("AIX"))
              return createProvider("sun.nio.ch.AixAsynchronousChannelProvider");
---- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -25,10 +25,14 @@
  
  package sun.nio.fs;
@@ -12609,8 +12556,8 @@
 +                     new MagicFileTypeDetector());
 +    }
  }
---- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -61,6 +61,8 @@
              return createProvider("sun.nio.fs.SolarisFileSystemProvider");
          if (osname.equals("Linux"))
@@ -12620,8 +12567,8 @@
          if (osname.contains("OS X"))
              return createProvider("sun.nio.fs.MacOSXFileSystemProvider");
          if (osname.equals("AIX"))
---- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -161,6 +161,7 @@
  
      static boolean isBSD() {
@@ -12645,8 +12592,8 @@
          "/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
      };
  
---- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -266,7 +266,7 @@
              try {
                  b = s.getBytes("UTF-8");
@@ -12656,8 +12603,8 @@
              }
              BsdVirtualMachine.write(fd, b, 0, b.length);
          }
---- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -140,7 +140,7 @@
                                        (float) ((int) sr->samp_rates[s]),
                                        DAUDIO_PCM, /* encoding - let's only do PCM */
@@ -12667,8 +12614,8 @@
                                        FALSE /* little endian */
  #else
                                        (bits[b] > 8)?TRUE:FALSE  /* big endian */
---- ./jdk/src/solaris/native/common/jni_util_md.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/common/jni_util_md.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/common/jni_util_md.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/common/jni_util_md.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -28,6 +28,7 @@
  #include "jni.h"
  #include "jni_util.h"
@@ -12677,8 +12624,8 @@
  
  jstring nativeNewStringPlatform(JNIEnv *env, const char *str) {
      return NULL;
---- ./jdk/src/solaris/native/java/lang/java_props_md.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/lang/java_props_md.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/lang/java_props_md.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/lang/java_props_md.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -151,7 +151,7 @@
      lc = setlocale(cat, NULL);
  #endif
@@ -12713,8 +12660,8 @@
  
      /* user properties */
      {
---- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -36,20 +36,13 @@
  #include 
  #include 
@@ -13033,8 +12980,8 @@
  #define SET_NONBLOCKING(fd) {           \
          int flags = fcntl(fd, F_GETFL); \
          flags |= O_NONBLOCK;            \
---- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -33,7 +33,7 @@
  #include 
  #include 
@@ -13065,8 +13012,8 @@
      /*
       * If we're looking up the local machine, attempt to get the address
       * from getifaddrs. This ensures we get an IPv6 address for the local
---- ./jdk/src/solaris/native/java/net/NetworkInterface.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/net/NetworkInterface.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/net/NetworkInterface.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/net/NetworkInterface.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -67,14 +67,18 @@
  #include 
  #include 
@@ -13088,9 +13035,9 @@
  
  #include "jvm.h"
  #include "jni_util.h"
---- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Wed Nov 05 12:14:24 2014 -0800
-@@ -2184,7 +2184,7 @@
+--- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Sun Feb 01 21:05:04 2015 -0800
+@@ -2200,7 +2200,7 @@
                  }
              }
  #endif
@@ -13099,8 +13046,8 @@
              if (family == AF_INET6 && index == 0) {
                  index = getDefaultScopeID(env);
              }
---- ./jdk/src/solaris/native/java/net/net_util_md.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/net/net_util_md.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/net/net_util_md.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/net/net_util_md.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -87,7 +87,7 @@
  
  void setDefaultScopeID(JNIEnv *env, struct sockaddr *him)
@@ -13110,8 +13057,8 @@
      static jclass ni_class = NULL;
      static jfieldID ni_defaultIndexID;
      if (ni_class == NULL) {
---- ./jdk/src/solaris/native/java/net/net_util_md.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/net/net_util_md.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/net/net_util_md.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/net/net_util_md.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,7 +47,7 @@
     close subroutine does not return until the select call returns.
     ...
@@ -13121,8 +13068,8 @@
  extern int NET_Timeout(int s, long timeout);
  extern int NET_Read(int s, void* buf, size_t len);
  extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
---- ./jdk/src/solaris/native/java/util/TimeZone_md.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/java/util/TimeZone_md.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/java/util/TimeZone_md.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/java/util/TimeZone_md.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -52,7 +52,11 @@
  #if defined(__linux__) || defined(_ALLBSD_SOURCE)
  
@@ -13207,8 +13154,8 @@
  }
  #endif
 -
---- ./jdk/src/solaris/native/sun/awt/awt_Font.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/awt/awt_Font.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/awt/awt_Font.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/awt/awt_Font.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -255,7 +255,7 @@
              if (strcmp(style, "regular") == 0) {
                  altstyle = "roman";
@@ -13218,8 +13165,8 @@
              if (!strcmp(family, "lucidasans")) {
                  family = "lucida";
              }
---- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -120,7 +120,7 @@
   */
  
@@ -13304,8 +13251,8 @@
  #endif /* HEADLESS */
      return point;
  }
---- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -52,7 +52,7 @@
                                  XIMPreeditDrawCallbackStruct *);
  static void PreeditCaretCallback(XIC, XPointer,
@@ -13525,8 +13472,8 @@
      AWT_LOCK();
      adjustStatusWindow(window);
      AWT_UNLOCK();
---- ./jdk/src/solaris/native/sun/awt/awt_Robot.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/awt/awt_Robot.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -45,7 +45,7 @@
  #include "wsutils.h"
  #include "list.h"
@@ -13536,8 +13483,8 @@
  #include 
  #endif
  
---- ./jdk/src/solaris/native/sun/awt/extutil.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/awt/extutil.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/awt/extutil.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/awt/extutil.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -58,7 +58,7 @@
   */
  /* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
@@ -13553,8 +13500,8 @@
  
 -#endif /* __linux__ || MACOSX */
 +#endif /* __linux__ || _ALLBSD_SOURCE */
---- ./jdk/src/solaris/native/sun/awt/fontpath.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/awt/fontpath.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/awt/fontpath.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/awt/fontpath.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -23,9 +23,9 @@
   * questions.
   */
@@ -13643,8 +13590,8 @@
                  && (strcmp((char*)fontformat, "Type 1") != 0)
  #endif
               ) {
---- ./jdk/src/solaris/native/sun/java2d/j2d_md.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/java2d/j2d_md.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -28,11 +28,11 @@
  #include 
  
@@ -13660,8 +13607,8 @@
  
  typedef unsigned char   jubyte;
  typedef unsigned short  jushort;
---- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -63,9 +63,6 @@
   *    MLIB_EDGE_SRC_PADDED
   */
@@ -13766,8 +13713,8 @@
          LOGIC(da[0], dtmp, dtmp1, |);
        }
        else {                                               /* aligned */
---- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -804,7 +804,7 @@
  static int initialized;
  static int usevis = JNI_TRUE;
@@ -13777,8 +13724,8 @@
  #   define ULTRA_CHIP   "sparc64"
  #else
  #   define ULTRA_CHIP   "sun4u"
---- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -56,6 +56,9 @@
  #include 
  #include 
@@ -13933,8 +13880,8 @@
          return -1;
      }
  
---- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h	Sun Feb 01 21:05:04 2015 -0800
 @@ -67,7 +67,7 @@
  
  
@@ -13983,8 +13930,8 @@
  jboolean loadSocketExtensionFuncs(JNIEnv* env);
  
  #endif /* !SUN_NIO_CH_SCTP_H */
---- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -58,6 +58,7 @@
   */
  jboolean loadSocketExtensionFuncs
@@ -14001,8 +13948,8 @@
  
      funcsLoaded = JNI_TRUE;
      return JNI_TRUE;
---- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,6 +31,12 @@
  #include 
  #include 
@@ -14025,8 +13972,8 @@
          if (magic_handle == NULL) {
              return JNI_FALSE;
          }
---- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -37,7 +37,9 @@
  #include 
  #include 
@@ -14037,8 +13984,8 @@
  #include 
  #include 
  
---- ./jdk/src/solaris/native/sun/xawt/XWindow.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/solaris/native/sun/xawt/XWindow.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/solaris/native/sun/xawt/XWindow.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/solaris/native/sun/xawt/XWindow.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -886,7 +886,7 @@
  {
      KeySym originalKeysym = *keysym;
@@ -14048,8 +13995,8 @@
      /* The following code on Linux will cause the keypad keys
       * not to echo on JTextField when the NumLock is on. The
       * keysyms will be 0, because the last parameter 2 is not defined.
---- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp	Sun Feb 01 21:05:04 2015 -0800
 @@ -308,7 +308,7 @@
                                        DAUDIO_PCM,
                                        (bitsArray[bitIndex]==8)?FALSE:TRUE,  /* signed */
@@ -14068,27 +14015,3 @@
          isBigEndian
  #else
          !isBigEndian
---- ./jdk/src/windows/native/sun/windows/awt_Component.cpp	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/src/windows/native/sun/windows/awt_Component.cpp	Wed Nov 05 12:14:24 2014 -0800
-@@ -3960,7 +3960,6 @@
-         DASSERT(stringCls);
-         CHECK_NULL(stringCls);
-         clauseReading = env->NewObjectArray(cClause, stringCls, NULL);
--        env->DeleteLocalRef(stringCls);
-         DASSERT(clauseReading);
-         CHECK_NULL(clauseReading);
-         for (int i=0; iSetObjectArrayElement(clauseReading, i, rgClauseReading[i]);
---- ./langtools/.hgtags	Mon Sep 08 12:38:00 2014 -0700
-+++ ./langtools/.hgtags	Wed Nov 05 12:14:12 2014 -0800
-@@ -329,3 +329,4 @@
- a340d68b020585cad7aa6e38d1aafb19ad0e4e07 jdk8u25-b14
- 6e0c19cd42d7c4d307bea26840ee831cbd14e2fc jdk8u25-b15
- 7fa6fa7cc204de988e224c6f8f75e62128fa84cd jdk8u25-b16
-+53ca196be1ae098466976c017b166d4ce180c36f jdk8u25-b17
---- ./nashorn/.hgtags	Mon Sep 08 12:38:15 2014 -0700
-+++ ./nashorn/.hgtags	Wed Nov 05 12:14:13 2014 -0800
-@@ -317,3 +317,4 @@
- 6a93467eaa36f732b84ecd463e046c4066fef40c jdk8u25-b14
- 71e8403a2f8279315419adf5f4e9d6b232b6835c jdk8u25-b15
- 1500138ce513600457be6bfa10979ecce6515aa6 jdk8u25-b16
-+4b9cc65dd24d398c4f921c0beccfb8caeaaaf584 jdk8u25-b17
diff --git a/java/openjdk8/files/patch-bsd-test b/java/openjdk8/files/patch-bsd-test
index 3e2c3aa1d0eb..afd2c3f26238 100644
--- a/java/openjdk8/files/patch-bsd-test
+++ b/java/openjdk8/files/patch-bsd-test
@@ -1,5 +1,5 @@
---- ./hotspot/test/compiler/5091921/Test7005594.sh	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/test/compiler/5091921/Test7005594.sh	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/test/compiler/5091921/Test7005594.sh	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/test/compiler/5091921/Test7005594.sh	Sun Feb 01 21:04:50 2015 -0800
 @@ -60,6 +60,15 @@
    # Windows/MKS
    MEM=`"$ROOTDIR/mksnt/sysinf" memory -v | grep "Total Physical Memory: " | sed 's/Total Physical Memory: *//g'`
@@ -16,8 +16,8 @@
  else
    echo "Unable to determine amount of physical memory on the machine"
  fi
---- ./hotspot/test/compiler/6894807/Test6894807.sh	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/test/compiler/6894807/Test6894807.sh	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/test/compiler/6894807/Test6894807.sh	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/test/compiler/6894807/Test6894807.sh	Sun Feb 01 21:04:50 2015 -0800
 @@ -21,7 +21,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -27,8 +27,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./hotspot/test/runtime/7110720/Test7110720.sh	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/test/runtime/7110720/Test7110720.sh	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/test/runtime/7110720/Test7110720.sh	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/test/runtime/7110720/Test7110720.sh	Sun Feb 01 21:04:50 2015 -0800
 @@ -28,7 +28,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -38,8 +38,21 @@
      FS="/"
      RM=/bin/rm
      CP=/bin/cp
---- ./hotspot/test/test_env.sh	Mon Sep 08 12:35:01 2014 -0700
-+++ ./hotspot/test/test_env.sh	Wed Nov 05 15:01:44 2014 -0800
+--- ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java	Sun Feb 01 21:04:50 2015 -0800
+@@ -37,8 +37,8 @@
+     public static void main(String args[]) throws Throwable {
+ 
+         System.out.println("Regression test for bugs 7051189 and 8023393");
+-        if (!Platform.isSolaris() && !Platform.isLinux() && !Platform.isOSX()) {
+-            System.out.println("Test only applicable on Solaris, Linux, and Mac OSX, skipping");
++        if (!Platform.isSolaris() && !Platform.isLinux() && !Platform.isOSX() && !Platform.isBSD()) {
++            System.out.println("Test only applicable on Solaris, Linux, BSD, and Mac OSX, skipping");
+             return;
+         }
+ 
+--- ./hotspot/test/test_env.sh	Tue Dec 02 11:10:51 2014 -0800
++++ ./hotspot/test/test_env.sh	Sun Feb 01 21:04:50 2015 -0800
 @@ -53,7 +53,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -49,8 +62,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/corba/5036554/TestCorbaBug.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -48,7 +48,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -60,8 +73,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/com/sun/corba/cachedSocket/7056731.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/corba/cachedSocket/7056731.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/corba/cachedSocket/7056731.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/corba/cachedSocket/7056731.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,7 +31,7 @@
  
  OS=`uname -s`
@@ -71,8 +84,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/jdi/ImmutableResourceTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -56,7 +56,7 @@
  
  OS=`uname -s`
@@ -82,8 +95,8 @@
        PATHSEP=":"
        ;;
  
---- ./jdk/test/com/sun/jdi/JITDebug.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/jdi/JITDebug.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/jdi/JITDebug.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/jdi/JITDebug.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -63,7 +63,7 @@
  OS=`uname -s`
  export TRANSPORT_METHOD
@@ -93,8 +106,8 @@
        PATHSEP=":"
        TRANSPORT_METHOD=dt_socket
        ;;
---- ./jdk/test/com/sun/jdi/PrivateTransportTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/jdi/PrivateTransportTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/jdi/PrivateTransportTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/jdi/PrivateTransportTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -106,7 +106,7 @@
      xx=`find ${jreloc}/lib -name libdt_socket.so`
      libloc=`dirname ${xx}`
@@ -104,8 +117,8 @@
      libloc=${jreloc}/lib
      ;;
    Windows*)
---- ./jdk/test/com/sun/jdi/ShellScaffold.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/jdi/ShellScaffold.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/jdi/ShellScaffold.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/jdi/ShellScaffold.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -295,7 +295,7 @@
           psCmd=ps
           jstack=jstack.exe
@@ -115,8 +128,8 @@
           transport=dt_socket
           address=
           devnull=/dev/null
---- ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -45,7 +45,7 @@
  
  OS=`uname -s`
@@ -126,8 +139,8 @@
      PS=":"
      ;;
    Windows* | CYGWIN*)
---- ./jdk/test/java/awt/JAWT/JAWT.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/awt/JAWT/JAWT.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/awt/JAWT/JAWT.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/awt/JAWT/JAWT.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -62,6 +62,23 @@
  	MAKE="make"
  	LD_LIBRARY_PATH="."
@@ -161,8 +174,8 @@
      exit 0;
      ;;
    * )
---- ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -86,6 +86,14 @@
        TMP="/tmp"
        ;;
@@ -178,8 +191,8 @@
     Windows* )
        VAR="A different value for Win32"
        DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
---- ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -59,7 +59,7 @@
  # Checking for proper OS
  OS=`uname -s`
@@ -189,8 +202,8 @@
        FILESEP="/"
        ;;
      
---- ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -119,6 +119,14 @@
        TMP="/tmp"
        ;;
@@ -206,8 +219,8 @@
     Windows* )
        VAR="A different value for Win32"
        DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
---- ./jdk/test/java/io/File/GetXSpace.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/io/File/GetXSpace.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/io/File/GetXSpace.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/io/File/GetXSpace.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -51,7 +51,7 @@
      private static final String dfFormat;
      static {
@@ -217,8 +230,8 @@
              // FileSystem Total Used Available Use% MountedOn
              dfFormat = "([^\\s]+)\\s+(\\d+)\\s+\\d+\\s+(\\d+)\\s+\\d+%\\s+([^\\s]+)";
          } else if (name.startsWith("Windows")) {
---- ./jdk/test/java/io/File/GetXSpace.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/io/File/GetXSpace.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/io/File/GetXSpace.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/io/File/GetXSpace.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -26,7 +26,7 @@
  # set platform-dependent variable
  OS=`uname -s`
@@ -228,8 +241,8 @@
    Windows_98 )    return    ;;
    Windows* )      SID=`sid`; TMP="c:/temp"  ;;
    * )
---- ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -45,7 +45,7 @@
  # Need to determine the classpath separator and filepath separator based on the
  # operating system.
@@ -239,8 +252,8 @@
    PS=":"  ;;
  Windows* | CYGWIN* )
    PS=";"  ;;
---- ./jdk/test/java/io/Serializable/serialver/classpath/run.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/io/Serializable/serialver/classpath/run.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/io/Serializable/serialver/classpath/run.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/io/Serializable/serialver/classpath/run.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,7 +47,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -250,8 +263,8 @@
      PS=":"    ;;
    Windows* | CYGWIN* )
      PS=";"    ;;
---- ./jdk/test/java/io/Serializable/serialver/nested/run.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/io/Serializable/serialver/nested/run.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/io/Serializable/serialver/nested/run.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/io/Serializable/serialver/nested/run.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,7 +47,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -261,8 +274,19 @@
      PS=":"    ;;
    Windows* | CYGWIN* )
      PS=";"    ;;
---- ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/ClassLoader/Assert.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/ClassLoader/Assert.sh	Sun Feb 01 21:05:04 2015 -0800
+@@ -25,7 +25,7 @@
+ 
+ OS=`uname -s`
+ case "$OS" in
+-  SunOS | Linux | Darwin )
++  SunOS | Linux | Darwin | *BSD )
+     FS="/"
+     CHMOD="${FS}bin${FS}chmod"
+     ;;
+--- ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -55,7 +55,7 @@
    Linux )
      FS="/"
@@ -272,8 +296,8 @@
      FS="/"
      ;;
    AIX )
---- ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -60,7 +60,7 @@
    Linux )
      FS="/"
@@ -283,8 +307,8 @@
      FS="/"
      ;;
    AIX )
---- ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/ProcessBuilder/DestroyTest.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -148,6 +148,9 @@
          } else if (osName.startsWith("Linux") == true) {
              return new UnixTest(
@@ -295,8 +319,8 @@
          } else if (osName.startsWith("Mac OS")) {
              return new MacTest(
                  File.createTempFile("ProcessTrap-", ".sh",null));
---- ./jdk/test/java/lang/ProcessBuilder/Zombies.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/ProcessBuilder/Zombies.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/ProcessBuilder/Zombies.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/ProcessBuilder/Zombies.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,7 +34,7 @@
  
      static final String os = System.getProperty("os.name");
@@ -306,8 +330,8 @@
          "/usr/bin/true" : "/bin/true";
  
      public static void main(String[] args) throws Throwable {
---- ./jdk/test/java/lang/StringCoding/CheckEncodings.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/StringCoding/CheckEncodings.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/StringCoding/CheckEncodings.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/StringCoding/CheckEncodings.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -30,7 +30,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -317,8 +341,8 @@
    Windows* | CYGWIN* )
      echo "Passed"; exit 0 ;;
    * ) echo "Unrecognized system!" ;  exit 1 ;;
---- ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -48,7 +48,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -328,8 +352,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/java/lang/instrument/MakeJAR2.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/instrument/MakeJAR2.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/instrument/MakeJAR2.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/instrument/MakeJAR2.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -55,7 +55,7 @@
  
  OS=`uname -s`
@@ -339,8 +363,8 @@
        PATHSEP=":"
        ;;
  
---- ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -43,7 +43,7 @@
      PS=":"
      FS="/"
@@ -350,8 +374,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -79,8 +79,10 @@
          System.out.println("Test passed.");
      }
@@ -373,8 +397,8 @@
                  ? output.split(" ")
                  : output.split(",");
          double expected = Double.parseDouble(lavg[0]);
---- ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -61,7 +61,7 @@
  while true; do
    echo "Run $i: TestSystemLoadAvg"
@@ -384,8 +408,8 @@
           runOne GetSystemLoadAverage
           ;;
        * )
---- ./jdk/test/java/net/Authenticator/B4933582.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/Authenticator/B4933582.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/Authenticator/B4933582.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/Authenticator/B4933582.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -26,7 +26,7 @@
  
  OS=`uname -s`
@@ -395,8 +419,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/net/DatagramSocket/Send12k.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/DatagramSocket/Send12k.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/DatagramSocket/Send12k.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/DatagramSocket/Send12k.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -36,9 +36,10 @@
  
      public static void main(String args[]) throws Exception {
@@ -410,8 +434,8 @@
               SEND_SIZE = 16 * 576;
           } else {
               SEND_SIZE = 16 * 1024;
---- ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/DatagramSocket/SendDatagramToBadAddress.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -45,6 +45,8 @@
              return (true);
          if (p.getProperty ("os.name").equals ("Linux"))
@@ -421,8 +445,8 @@
          if (p.getProperty ("os.name").startsWith ("Mac OS"))
              return (true);
          // Check for specific Solaris version from here
---- ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -27,11 +27,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -436,8 +460,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/net/Socket/OldSocketImpl.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/Socket/OldSocketImpl.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/Socket/OldSocketImpl.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/Socket/OldSocketImpl.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -28,7 +28,7 @@
  
  OS=`uname -s`
@@ -447,8 +471,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/net/URL/B5086147.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/URL/B5086147.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/URL/B5086147.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/URL/B5086147.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -26,7 +26,7 @@
  
  OS=`uname -s`
@@ -458,8 +482,8 @@
      exit 0
      ;;
    CYGWIN* )
---- ./jdk/test/java/net/URLClassLoader/B5077773.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/URLClassLoader/B5077773.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/URLClassLoader/B5077773.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/URLClassLoader/B5077773.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,11 +34,7 @@
  
  OS=`uname -s`
@@ -473,8 +497,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/URLClassLoader/sealing/checksealed.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -27,11 +27,7 @@
  
  OS=`uname -s`
@@ -488,8 +512,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/net/URLConnection/6212146/test.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/net/URLConnection/6212146/test.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/net/URLConnection/6212146/test.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/net/URLConnection/6212146/test.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -33,11 +33,7 @@
  
  OS=`uname -s`
@@ -503,8 +527,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/nio/channels/FileChannel/Transfer.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/nio/channels/FileChannel/Transfer.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/nio/channels/FileChannel/Transfer.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/nio/channels/FileChannel/Transfer.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -228,7 +228,7 @@
          // Windows and Linux can't handle the really large file sizes for a
          // truncate or a positional write required by the test for 4563125
@@ -514,8 +538,8 @@
              return;
          File source = File.createTempFile("blah", null);
          source.deleteOnExit();
---- ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.c	Sun Feb 01 21:05:04 2015 -0800
 @@ -17,6 +17,12 @@
  
  #include "Launcher.h"
@@ -538,8 +562,8 @@
          _exit(-1);
      }
  
---- ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,7 +34,7 @@
  
  OS=`uname -s`
@@ -549,8 +573,8 @@
    # Skip locale test for Windows
    Windows* | CYGWIN* )
      echo "Passed"; exit 0 ;;
---- ./jdk/test/java/nio/charset/spi/basic.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/nio/charset/spi/basic.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/nio/charset/spi/basic.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/nio/charset/spi/basic.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -48,7 +48,7 @@
  
  DIR=`pwd`
@@ -560,8 +584,8 @@
    Windows* )      CPS=';' ;;
    CYGWIN*  )
      DIR=`/usr/bin/cygpath -a -s -m $DIR`
---- ./jdk/test/java/nio/file/FileSystem/Basic.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/nio/file/FileSystem/Basic.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/nio/file/FileSystem/Basic.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/nio/file/FileSystem/Basic.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -76,7 +76,7 @@
              checkSupported(fs, "posix", "unix", "owner", "acl", "user");
          if (os.equals("Linux"))
@@ -571,8 +595,8 @@
              checkSupported(fs, "posix", "unix", "owner");
          if (os.equals("Windows"))
              checkSupported(fs, "owner", "dos", "acl", "user");
---- ./jdk/test/java/nio/file/Files/CopyAndMove.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/nio/file/Files/CopyAndMove.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/nio/file/Files/CopyAndMove.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/nio/file/Files/CopyAndMove.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -651,7 +651,7 @@
  
                  // check POSIX attributes are copied
@@ -591,8 +615,8 @@
          boolean isDirectory = isDirectory(file, NOFOLLOW_LINKS);
  
          if (isUnix) {
---- ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -33,7 +33,7 @@
  
  OS=`uname -s`
@@ -602,8 +626,8 @@
      PS=":"
      ;;
    Windows* | CYGWIN* )
---- ./jdk/test/java/rmi/registry/readTest/readTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/rmi/registry/readTest/readTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/rmi/registry/readTest/readTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/rmi/registry/readTest/readTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -34,7 +34,7 @@
  REGARGS=""
  
@@ -613,8 +637,8 @@
      PS=":"
      FS="/"
      CHMOD="${FS}bin${FS}chmod"
---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -58,7 +58,7 @@
      PATHSEP=":"
      FILESEP="/"
@@ -624,8 +648,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -42,7 +42,7 @@
      PATHSEP=":"
      FILESEP="/"
@@ -635,8 +659,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -66,7 +66,7 @@
      PATHSEP=";"
      FILESEP="/"
@@ -646,8 +670,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/security/Security/signedfirst/Dyn.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/security/Security/signedfirst/Dyn.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/security/Security/signedfirst/Dyn.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/security/Security/signedfirst/Dyn.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -58,7 +58,7 @@
      PATHSEP=":"
      FILESEP="/"
@@ -657,8 +681,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/security/Security/signedfirst/Static.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/security/Security/signedfirst/Static.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/security/Security/signedfirst/Static.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/security/Security/signedfirst/Static.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -58,7 +58,7 @@
      PATHSEP=":"
      FILESEP="/"
@@ -668,8 +692,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/util/Currency/PropertiesTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/util/Currency/PropertiesTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/util/Currency/PropertiesTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/util/Currency/PropertiesTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -52,7 +52,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -679,8 +703,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/util/PluggableLocale/ExecTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/util/PluggableLocale/ExecTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/util/PluggableLocale/ExecTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/util/PluggableLocale/ExecTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -62,7 +62,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -690,8 +714,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/util/ResourceBundle/Bug6299235Test.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,7 +31,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -701,8 +725,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/java/util/ServiceLoader/basic.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/util/ServiceLoader/basic.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/util/ServiceLoader/basic.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/util/ServiceLoader/basic.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -43,9 +43,7 @@
  
  OS=`uname -s`
@@ -714,8 +738,8 @@
        SEP=':' ;;
      * )
        SEP='\;' ;;
---- ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/java/util/prefs/CheckUserPrefsStorage.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,7 +31,7 @@
  
  OS=`uname -s`
@@ -725,8 +749,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -56,7 +56,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -736,8 +760,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -89,7 +89,7 @@
        FILESEP="/"
        ;;
@@ -747,8 +771,8 @@
        VAR="A different value for Linux"
        DEFAULT_JDK=/none
        #DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386
---- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -90,7 +90,7 @@
        FILESEP="/"
        ;;
@@ -758,8 +782,8 @@
        VAR="A different value for Linux"
        DEFAULT_JDK=/none
        #DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386
---- ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -108,6 +108,14 @@
        TMP="/tmp"
        ;;
@@ -775,8 +799,8 @@
     Windows* )
        VAR="A different value for Win32"
        DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
---- ./jdk/test/javax/script/CommonSetup.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/javax/script/CommonSetup.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/javax/script/CommonSetup.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/javax/script/CommonSetup.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -36,7 +36,7 @@
  
  OS=`uname -s`
@@ -786,8 +810,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/javax/security/auth/Subject/doAs/Test.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/javax/security/auth/Subject/doAs/Test.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/javax/security/auth/Subject/doAs/Test.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/javax/security/auth/Subject/doAs/Test.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -43,7 +43,7 @@
      FS="/"
      RM="/bin/rm -f"
@@ -797,8 +821,8 @@
      PS=":"
      FS="/"
      RM="/bin/rm -f"
---- ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/lib/security/java.policy/Ext_AllPolicy.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -53,7 +53,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -808,8 +832,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -53,8 +53,13 @@
          return isOs("linux");
      }
@@ -825,8 +849,21 @@
      }
  
      public static String getOsName() {
---- ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/awt/dnd/8024061/bug8024061.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/awt/dnd/8024061/bug8024061.java	Sun Feb 01 21:05:04 2015 -0800
+@@ -107,8 +107,8 @@
+ 
+     public static void main(String[] args) throws AWTException, InvocationTargetException, InterruptedException {
+         OSType type = OSInfo.getOSType();
+-        if (type != OSType.LINUX && type != OSType.SOLARIS) {
+-            System.out.println("This test is for Linux and Solaris only... " +
++        if (type != OSType.LINUX && type != OSType.SOLARIS && type != OSType.BSD) {
++            System.out.println("This test is for BSD, Linux and Solaris only... " +
+                                "skipping!");
+             return;
+         }
+--- ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -42,7 +42,7 @@
  fi
  
@@ -836,8 +873,8 @@
      PATHSEP=":"
      FILESEP="/"
      DFILESEP=$FILESEP
---- ./jdk/test/sun/net/ftp/MarkResetTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/net/ftp/MarkResetTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/net/ftp/MarkResetTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/net/ftp/MarkResetTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -28,7 +28,7 @@
  
  OS=`uname -s`
@@ -847,8 +884,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/net/www/http/HttpClient/RetryPost.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -28,7 +28,7 @@
  
  OS=`uname -s`
@@ -858,8 +895,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/net/www/protocol/jar/B5105410.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/net/www/protocol/jar/B5105410.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/net/www/protocol/jar/B5105410.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/net/www/protocol/jar/B5105410.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,7 +31,7 @@
  
  OS=`uname -s`
@@ -869,8 +906,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/net/www/protocol/jar/jarbug/run.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -31,7 +31,7 @@
  
  OS=`uname -s`
@@ -880,8 +917,8 @@
      PS=":"
      FS="/"
      CHMOD="${FS}bin${FS}chmod"
---- ./jdk/test/sun/nio/ch/SelProvider.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/nio/ch/SelProvider.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/nio/ch/SelProvider.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/nio/ch/SelProvider.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -39,7 +39,7 @@
                  expected = "sun.nio.ch.DevPollSelectorProvider";
              } else if ("Linux".equals(osname)) {
@@ -891,8 +928,8 @@
                  expected = "sun.nio.ch.KQueueSelectorProvider";
              } else {
                  return;
---- ./jdk/test/sun/security/krb5/runNameEquals.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/krb5/runNameEquals.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/krb5/runNameEquals.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/krb5/runNameEquals.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -52,7 +52,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -902,8 +939,8 @@
      PATHSEP=":"
      FILESEP="/"
      NATIVE=true
---- ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/mscapi/ShortRSAKey1024.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -49,7 +49,7 @@
  
  OS=`uname -s`
@@ -913,8 +950,8 @@
      FS="/"
      ;;
    Windows_* )
---- ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -66,7 +66,7 @@
      CP="${FS}bin${FS}cp"
      CHMOD="${FS}bin${FS}chmod"
@@ -924,8 +961,8 @@
      FS="/"
      PS=":"
      CP="${FS}bin${FS}cp"
---- ./jdk/test/sun/security/pkcs11/Provider/Login.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/pkcs11/Provider/Login.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/pkcs11/Provider/Login.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/pkcs11/Provider/Login.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -67,7 +67,7 @@
      CP="${FS}bin${FS}cp"
      CHMOD="${FS}bin${FS}chmod"
@@ -935,8 +972,8 @@
      FS="/"
      PS=":"
      CP="${FS}bin${FS}cp"
---- ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/provider/KeyStore/DKSTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -50,7 +50,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -946,8 +983,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/provider/PolicyFile/GrantAllPermToExtWhenNoPolicy.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -52,7 +52,7 @@
      PATHSEP=":"
      FILESEP="/"
@@ -957,8 +994,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -59,7 +59,7 @@
      PS=":"
      FS="/"
@@ -968,8 +1005,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -33,7 +33,7 @@
  
  OS=`uname -s`
@@ -979,8 +1016,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  
  OS=`uname -s`
@@ -990,8 +1027,8 @@
          FILESEP="/"
          PATHSEP=":"
          ;;
---- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -32,7 +32,7 @@
  HOSTNAME=`uname -n`
  OS=`uname -s`
@@ -1001,8 +1038,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -32,7 +32,7 @@
  HOSTNAME=`uname -n`
  OS=`uname -s`
@@ -1012,8 +1049,8 @@
      PS=":"
      FS="/"
      ;;
---- ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/jarsigner/AlgOptions.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1023,8 +1060,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/jarsigner/PercentSign.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1034,8 +1071,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/jarsigner/diffend.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/jarsigner/diffend.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/jarsigner/diffend.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/jarsigner/diffend.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,6 +47,13 @@
      FS="/"
      CP="${FS}bin${FS}cp -f"
@@ -1050,8 +1087,8 @@
    CYGWIN* )
      NULL=/dev/null
      PS=";"
---- ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/jarsigner/emptymanifest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -39,6 +39,11 @@
    Windows_* )
      FS="\\"
@@ -1064,8 +1101,8 @@
    * )
      FS="/"
      ;;
---- ./jdk/test/sun/security/tools/jarsigner/oldsig.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/jarsigner/oldsig.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/jarsigner/oldsig.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/jarsigner/oldsig.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -42,7 +42,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1075,8 +1112,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/AltProviderPath.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1086,8 +1123,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -55,7 +55,7 @@
      PATHSEP=":"
      FILESEP="/"
@@ -1097,8 +1134,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/NoExtNPE.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -48,7 +48,7 @@
    Linux )
      FILESEP="/"
@@ -1108,8 +1145,8 @@
      FILESEP="/"
      ;;
    AIX )
---- ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/SecretKeyKS.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -45,7 +45,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1119,8 +1156,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/StandardAlgName.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1130,8 +1167,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1141,8 +1178,8 @@
      PATHSEP=":"
      FILESEP="/"
      ;;
---- ./jdk/test/sun/security/tools/keytool/i18n.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/i18n.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/i18n.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/i18n.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1152,8 +1189,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/keytool/printssl.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/printssl.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/printssl.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/printssl.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -40,7 +40,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1163,8 +1200,8 @@
      FS="/"
      ;;
    CYGWIN* )
---- ./jdk/test/sun/security/tools/keytool/resource.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/resource.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/resource.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/resource.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -43,7 +43,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1174,8 +1211,8 @@
      NULL=/dev/null
      FS="/"
      ;;
---- ./jdk/test/sun/security/tools/keytool/standard.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/keytool/standard.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/keytool/standard.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/keytool/standard.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -45,7 +45,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1185,8 +1222,8 @@
      FS="/"
      ;;
    Windows_* )
---- ./jdk/test/sun/security/tools/policytool/Alias.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/Alias.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/Alias.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/Alias.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,7 +47,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1196,8 +1233,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/policytool/ChangeUI.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/ChangeUI.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/ChangeUI.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/ChangeUI.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1207,8 +1244,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/OpenPolicy.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1218,8 +1255,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/policytool/SaveAs.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/SaveAs.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/SaveAs.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/SaveAs.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,7 +47,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1229,8 +1266,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/UpdatePermissions.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,7 +47,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1240,8 +1277,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/policytool/UsePolicy.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/UsePolicy.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/UsePolicy.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/UsePolicy.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -46,7 +46,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1251,8 +1288,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/security/tools/policytool/i18n.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/security/tools/policytool/i18n.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/security/tools/policytool/i18n.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/security/tools/policytool/i18n.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -49,7 +49,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1262,8 +1299,8 @@
      NULL=/dev/null
      PS=":"
      FS="/"
---- ./jdk/test/sun/tools/common/CommonSetup.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/tools/common/CommonSetup.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/tools/common/CommonSetup.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/tools/common/CommonSetup.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -47,6 +47,7 @@
  #   isLinux   - true if OS is Linux
  #   isSolaris - true if OS is Solaris
@@ -1291,8 +1328,8 @@
    Darwin )
      OS="Mac OS X"
      isMacos=true
---- ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/tools/jconsole/ResourceCheckTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -54,7 +54,7 @@
  
  OS=`uname -s`
@@ -1302,8 +1339,8 @@
        PATHSEP=":"
        ;;
  
---- ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh	Sun Feb 01 21:05:04 2015 -0800
 @@ -56,7 +56,7 @@
  
  OS=`uname -s`
@@ -1313,8 +1350,8 @@
        PATHSEP=":"
        ;;
  
---- ./jdk/test/tools/launcher/ExecutionEnvironment.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/tools/launcher/ExecutionEnvironment.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/tools/launcher/ExecutionEnvironment.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/tools/launcher/ExecutionEnvironment.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -194,7 +194,7 @@
  
          Map env = new HashMap<>();
@@ -1324,8 +1361,8 @@
              for (String x : LD_PATH_STRINGS) {
                  String pairs[] = x.split("=");
                  env.put(pairs[0], pairs[1]);
---- ./jdk/test/tools/launcher/RunpathTest.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/tools/launcher/RunpathTest.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/tools/launcher/RunpathTest.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/tools/launcher/RunpathTest.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -69,7 +69,7 @@
      }
  
@@ -1335,8 +1372,8 @@
              RunpathTest rp = new RunpathTest();
              rp.testRpath();
          }
---- ./jdk/test/tools/launcher/Test7029048.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/tools/launcher/Test7029048.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/tools/launcher/Test7029048.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/tools/launcher/Test7029048.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -223,7 +223,7 @@
          } else if (isSolaris && passes < 9) {
              throw new Exception("Test7029048: FAIL: " +
@@ -1346,8 +1383,8 @@
               throw new Exception("Test7029048: FAIL: " +
                      "all tests did not run, expected " + 6 + " got " + passes);
          } else {
---- ./jdk/test/tools/launcher/TestHelper.java	Tue Sep 09 12:00:58 2014 -0700
-+++ ./jdk/test/tools/launcher/TestHelper.java	Wed Nov 05 12:14:24 2014 -0800
+--- ./jdk/test/tools/launcher/TestHelper.java	Mon Dec 08 08:53:26 2014 -0800
++++ ./jdk/test/tools/launcher/TestHelper.java	Sun Feb 01 21:05:04 2015 -0800
 @@ -94,6 +94,8 @@
              System.getProperty("os.name", "unknown").startsWith("Linux");
      static final boolean isAIX =
@@ -1357,8 +1394,8 @@
      static final String LIBJVM = isWindows
                          ? "jvm.dll"
                          : "libjvm" + (isMacOSX ? ".dylib" : ".so");
---- ./langtools/test/Makefile	Mon Sep 08 12:38:00 2014 -0700
-+++ ./langtools/test/Makefile	Wed Nov 05 12:14:12 2014 -0800
+--- ./langtools/test/Makefile	Tue Dec 02 11:13:06 2014 -0800
++++ ./langtools/test/Makefile	Sun Feb 01 21:04:46 2015 -0800
 @@ -36,6 +36,14 @@
      ARCH=i586
    endif
@@ -1374,8 +1411,8 @@
  ifeq ($(OSNAME), Darwin)
    PLATFORM = bsd
    JT_PLATFORM = linux
---- ./langtools/test/tools/javah/ReadOldClass.sh	Mon Sep 08 12:38:00 2014 -0700
-+++ ./langtools/test/tools/javah/ReadOldClass.sh	Wed Nov 05 12:14:12 2014 -0800
+--- ./langtools/test/tools/javah/ReadOldClass.sh	Tue Dec 02 11:13:06 2014 -0800
++++ ./langtools/test/tools/javah/ReadOldClass.sh	Sun Feb 01 21:04:46 2015 -0800
 @@ -43,7 +43,7 @@
  # set platform-dependent variables
  OS=`uname -s`
@@ -1385,8 +1422,8 @@
      PS=":"
      FS="/"
      ;;
---- ./nashorn/test/script/jfx.js	Mon Sep 08 12:38:15 2014 -0700
-+++ ./nashorn/test/script/jfx.js	Wed Nov 05 12:14:13 2014 -0800
+--- ./nashorn/test/script/jfx.js	Tue Dec 02 11:13:14 2014 -0800
++++ ./nashorn/test/script/jfx.js	Sun Feb 01 21:04:47 2015 -0800
 @@ -93,6 +93,8 @@
          f2 = new File(sb.append(fsep + "linux.png").toString());
      } else if (OSInfo.getOSType() == OSType.MACOSX) {
-- 
cgit v1.2.3