--- a/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -243,3 +243,4 @@
87b743b2263cc53955266411b7797b365a0fb050 jdk8-b119
a1ee9743f4ee165eae59389a020f2552f895dac8 jdk8-b120
13b877757b0b1c0d5813298df85364f41d7ba6fe jdk9-b00
+f130ca87de6637acae7d99fcd7a8573eea1cbaed jdk9-b01
--- a/.hgtags-top-repo Thu Jan 23 10:35:38 2014 -0800
+++ b/.hgtags-top-repo Tue Jan 28 11:21:43 2014 -0800
@@ -243,3 +243,4 @@
9e90215673be68a3e77a9e444e4232076373734d jdk8-b119
cd3825b2983045784d6fc6d1729c799b08215752 jdk8-b120
1e1f86d5d4e22c15a9bf9f1581acddb8c59abae2 jdk9-b00
+50669e45cec4491de0d921d3118a3fe2e767020a jdk9-b01
--- a/common/autoconf/boot-jdk.m4 Thu Jan 23 10:35:38 2014 -0800
+++ b/common/autoconf/boot-jdk.m4 Tue Jan 28 11:21:43 2014 -0800
@@ -324,8 +324,6 @@
fi
# When is adding -client something that speeds up the JVM?
# ADD_JVM_ARG_IF_OK([-client],boot_jdk_jvmargs,[$JAVA])
- ADD_JVM_ARG_IF_OK([-XX:PermSize=32m],boot_jdk_jvmargs,[$JAVA])
- ADD_JVM_ARG_IF_OK([-XX:MaxPermSize=160m],boot_jdk_jvmargs,[$JAVA])
ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],boot_jdk_jvmargs,[$JAVA])
# Disable special log output when a debug build is used as Boot JDK...
ADD_JVM_ARG_IF_OK([-XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput],boot_jdk_jvmargs,[$JAVA])
--- a/common/autoconf/generated-configure.sh Thu Jan 23 10:35:38 2014 -0800
+++ b/common/autoconf/generated-configure.sh Tue Jan 28 11:21:43 2014 -0800
@@ -3865,7 +3865,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1389186094
+DATE_WHEN_GENERATED=1389815815
###############################################################################
#
@@ -11156,6 +11156,12 @@
as_fn_error $? "Update version must have a value" "$LINENO" 5
elif test "x$with_update_version" != x; then
JDK_UPDATE_VERSION="$with_update_version"
+ # On macosx 10.7, it's not possible to set --with-update-version=0X due
+ # to a bug in expr (which reduces it to just X). To work around this, we
+ # always add a 0 to one digit update versions.
+ if test "${#JDK_UPDATE_VERSION}" = "1"; then
+ JDK_UPDATE_VERSION="0${JDK_UPDATE_VERSION}"
+ fi
fi
@@ -16068,36 +16074,6 @@
# When is adding -client something that speeds up the JVM?
# ADD_JVM_ARG_IF_OK([-client],boot_jdk_jvmargs,[$JAVA])
- $ECHO "Check if jvm arg is ok: -XX:PermSize=32m" >&5
- $ECHO "Command: $JAVA -XX:PermSize=32m -version" >&5
- OUTPUT=`$JAVA -XX:PermSize=32m -version 2>&1`
- FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
- FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:PermSize=32m"
- JVM_ARG_OK=true
- else
- $ECHO "Arg failed:" >&5
- $ECHO "$OUTPUT" >&5
- JVM_ARG_OK=false
- fi
-
-
- $ECHO "Check if jvm arg is ok: -XX:MaxPermSize=160m" >&5
- $ECHO "Command: $JAVA -XX:MaxPermSize=160m -version" >&5
- OUTPUT=`$JAVA -XX:MaxPermSize=160m -version 2>&1`
- FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
- FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:MaxPermSize=160m"
- JVM_ARG_OK=true
- else
- $ECHO "Arg failed:" >&5
- $ECHO "$OUTPUT" >&5
- JVM_ARG_OK=false
- fi
-
-
$ECHO "Check if jvm arg is ok: -XX:ThreadStackSize=$STACK_SIZE" >&5
$ECHO "Command: $JAVA -XX:ThreadStackSize=$STACK_SIZE -version" >&5
OUTPUT=`$JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1`
@@ -20011,8 +19987,8 @@
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, keeping CC" >&5
$as_echo "no, keeping CC" >&6; }
- CC="$TEST_COMPILER"
- fi
+ fi
+
COMPILER=$CC
COMPILER_NAME=$COMPILER_NAME
@@ -21590,8 +21566,8 @@
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, keeping CXX" >&5
$as_echo "no, keeping CXX" >&6; }
- CXX="$TEST_COMPILER"
- fi
+ fi
+
COMPILER=$CXX
COMPILER_NAME=$COMPILER_NAME
--- a/common/autoconf/jdk-options.m4 Thu Jan 23 10:35:38 2014 -0800
+++ b/common/autoconf/jdk-options.m4 Tue Jan 28 11:21:43 2014 -0800
@@ -105,7 +105,7 @@
fi
# Replace the commas with AND for use in the build directory name.
- ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/'`
+ ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/g'`
COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/'`
if test "x$COUNT_VARIANTS" != "x,1"; then
BUILDING_MULTIPLE_JVM_VARIANTS=yes
@@ -423,6 +423,12 @@
AC_MSG_ERROR([Update version must have a value])
elif test "x$with_update_version" != x; then
JDK_UPDATE_VERSION="$with_update_version"
+ # On macosx 10.7, it's not possible to set --with-update-version=0X due
+ # to a bug in expr (which reduces it to just X). To work around this, we
+ # always add a 0 to one digit update versions.
+ if test "${#JDK_UPDATE_VERSION}" = "1"; then
+ JDK_UPDATE_VERSION="0${JDK_UPDATE_VERSION}"
+ fi
fi
AC_ARG_WITH(user-release-suffix, [AS_HELP_STRING([--with-user-release-suffix],
--- a/common/autoconf/toolchain.m4 Thu Jan 23 10:35:38 2014 -0800
+++ b/common/autoconf/toolchain.m4 Tue Jan 28 11:21:43 2014 -0800
@@ -166,8 +166,8 @@
$1="$PROPER_COMPILER_$1"
else
AC_MSG_RESULT([no, keeping $1])
- $1="$TEST_COMPILER"
fi
+
TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME])
])
--- a/corba/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -243,3 +243,4 @@
379fc7609beb7a3d85ebc0cc21a8a51c60d3c7d3 jdk8-b119
53fd772d28c8a9f0f43adfc06f75f6b3cfa93cb5 jdk8-b120
a7d3638deb2f4e33217b1ecf889479e90f9e5b50 jdk9-b00
+79a8136b18c1c6848f500088f5a4b39f262f082d jdk9-b01
--- a/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -82,11 +82,18 @@
super((ORB)orb);
}
- public org.omg.CORBA.portable.InputStream create_input_stream()
- {
- return new AnyInputStream(
- (com.sun.corba.se.impl.encoding.EncapsInputStream)
- super.create_input_stream());
+ public org.omg.CORBA.portable.InputStream create_input_stream() {
+ final org.omg.CORBA.portable.InputStream is = super
+ .create_input_stream();
+ AnyInputStream aIS = AccessController
+ .doPrivileged(new PrivilegedAction<AnyInputStream>() {
+ @Override
+ public AnyInputStream run() {
+ return new AnyInputStream(
+ (com.sun.corba.se.impl.encoding.EncapsInputStream) is);
+ }
+ });
+ return aIS;
}
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsInputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsInputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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,11 +36,10 @@
import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.corba.se.spi.orb.ORB;
-
import com.sun.corba.se.spi.logging.CORBALogDomains;
-
import com.sun.corba.se.impl.logging.ORBUtilSystemException;
+import sun.corba.EncapsInputStreamFactory;
/**
* Encapsulations are supposed to explicitly define their
* code sets and GIOP version. The original resolution to issue 2784
@@ -148,7 +147,7 @@
}
public CDRInputStream dup() {
- return new EncapsInputStream(this);
+ return EncapsInputStreamFactory.newEncapsInputStream(this);
}
protected CodeSetConversion.BTCConverter createCharBTCConverter() {
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsOutputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsOutputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
@@ -39,6 +39,8 @@
import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.corba.se.impl.orbutil.ORBConstants;
+import sun.corba.EncapsInputStreamFactory;
+
/**
* Encapsulations are supposed to explicitly define their
* code sets and GIOP version. The original resolution to issue 2784
@@ -107,11 +109,11 @@
public org.omg.CORBA.portable.InputStream create_input_stream() {
freeInternalCaches();
- return new EncapsInputStream(orb(),
- getByteBuffer(),
- getSize(),
- isLittleEndian(),
- getGIOPVersion());
+ return EncapsInputStreamFactory.newEncapsInputStream(orb(),
+ getByteBuffer(),
+ getSize(),
+ isLittleEndian(),
+ getGIOPVersion());
}
protected CodeSetConversion.CTBConverter createCharCTBConverter() {
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeInputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeInputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
@@ -64,6 +64,8 @@
import com.sun.corba.se.impl.encoding.CDROutputStream;
import com.sun.corba.se.impl.encoding.MarshalInputStream;
+import sun.corba.EncapsInputStreamFactory;
+
public class TypeCodeInputStream extends EncapsInputStream implements TypeCodeReader
{
private Map typeMap = null;
@@ -157,11 +159,13 @@
// create an encapsulation using the marshal buffer
if (is instanceof CDRInputStream) {
- encap = new TypeCodeInputStream((ORB)_orb, encapBuffer, encapBuffer.length,
- ((CDRInputStream)is).isLittleEndian(),
- ((CDRInputStream)is).getGIOPVersion());
+ encap = EncapsInputStreamFactory.newTypeCodeInputStream((ORB) _orb,
+ encapBuffer, encapBuffer.length,
+ ((CDRInputStream) is).isLittleEndian(),
+ ((CDRInputStream) is).getGIOPVersion());
} else {
- encap = new TypeCodeInputStream((ORB)_orb, encapBuffer, encapBuffer.length);
+ encap = EncapsInputStreamFactory.newTypeCodeInputStream((ORB) _orb,
+ encapBuffer, encapBuffer.length);
}
encap.setEnclosingInputStream(is);
encap.makeEncapsulation();
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -61,6 +61,8 @@
import java.math.BigInteger;
import java.nio.ByteBuffer;
+import sun.corba.EncapsInputStreamFactory;
+
public final class TypeCodeOutputStream extends EncapsOutputStream
{
private OutputStream enclosure = null;
@@ -77,9 +79,9 @@
public org.omg.CORBA.portable.InputStream create_input_stream()
{
- //return new TypeCodeInputStream((ORB)orb(), getByteBuffer(), getIndex(), isLittleEndian());
- TypeCodeInputStream tcis
- = new TypeCodeInputStream((ORB)orb(), getByteBuffer(), getIndex(), isLittleEndian(), getGIOPVersion());
+ TypeCodeInputStream tcis = EncapsInputStreamFactory
+ .newTypeCodeInputStream((ORB) orb(), getByteBuffer(),
+ getIndex(), isLittleEndian(), getGIOPVersion());
//if (TypeCodeImpl.debug) {
//System.out.println("Created TypeCodeInputStream " + tcis + " with no parent");
//tcis.printBuffer();
--- a/corba/src/share/classes/com/sun/corba/se/impl/interceptors/CDREncapsCodec.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/interceptors/CDREncapsCodec.java Tue Jan 28 11:21:43 2014 -0800
@@ -33,6 +33,8 @@
import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
import com.sun.corba.se.spi.logging.CORBALogDomains;
+import sun.corba.EncapsInputStreamFactory;
+
import com.sun.corba.se.impl.corba.AnyImpl;
import com.sun.corba.se.impl.encoding.EncapsInputStream;
import com.sun.corba.se.impl.encoding.EncapsOutputStream;
@@ -193,8 +195,9 @@
// it is turned into a FormatMismatch exception.
try {
- EncapsInputStream cdrIn = new EncapsInputStream( orb, data,
- data.length, giopVersion );
+ EncapsInputStream cdrIn = EncapsInputStreamFactory.newEncapsInputStream( orb, data,
+ data.length, giopVersion );
+
cdrIn.consumeEndian();
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -370,7 +370,7 @@
* @exception IOException Any of the usual Input/Output related exceptions.
* @since JDK1.1
*/
- public final Object readObjectDelegate() throws IOException
+ public final synchronized Object readObjectDelegate() throws IOException
{
try {
@@ -389,7 +389,7 @@
}
}
- final Object simpleReadObject(Class clz,
+ final synchronized Object simpleReadObject(Class clz,
String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender,
int offset)
@@ -461,7 +461,7 @@
return obj;
}
- public final void simpleSkipObject(String repositoryID,
+ public final synchronized void simpleSkipObject(String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender)
/* throws OptionalDataException, ClassNotFoundException, IOException */
{
@@ -559,7 +559,7 @@
* objects.
* @since JDK1.1
*/
- public final void defaultReadObjectDelegate()
+ final synchronized void defaultReadObjectDelegate()
/* throws IOException, ClassNotFoundException, NotActiveException */
{
try {
@@ -988,7 +988,7 @@
}
}
- private Object inputObject(Class clz,
+ private synchronized Object inputObject(Class clz,
String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender,
int offset)
@@ -1317,7 +1317,7 @@
* a form of custom marshaling.
*
*/
- private Object inputObjectUsingFVD(Class clz,
+ private synchronized Object inputObjectUsingFVD(Class clz,
String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender,
int offset)
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/InputStreamHook.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/InputStreamHook.java Tue Jan 28 11:21:43 2014 -0800
@@ -201,7 +201,7 @@
readObjectState.endDefaultReadObject(this);
}
- public abstract void defaultReadObjectDelegate();
+ abstract void defaultReadObjectDelegate();
abstract void readFields(java.util.Map fieldToValueMap)
throws java.io.InvalidClassException, java.io.StreamCorruptedException,
--- a/corba/src/share/classes/com/sun/corba/se/impl/ior/EncapsulationUtility.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/ior/EncapsulationUtility.java Tue Jan 28 11:21:43 2014 -0800
@@ -47,6 +47,8 @@
import com.sun.corba.se.impl.encoding.EncapsOutputStream ;
import com.sun.corba.se.impl.encoding.EncapsInputStream ;
+import sun.corba.EncapsInputStreamFactory;
+
/**
* This static utility class contains various utility methods for reading and
* writing CDR encapsulations.
@@ -108,8 +110,8 @@
static public InputStream getEncapsulationStream( InputStream is )
{
byte[] data = readOctets( is ) ;
- EncapsInputStream result = new EncapsInputStream( is.orb(), data,
- data.length ) ;
+ EncapsInputStream result = EncapsInputStreamFactory.newEncapsInputStream( is.orb(), data,
+ data.length ) ;
result.consumeEndian() ;
return result ;
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/ior/ObjectKeyFactoryImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/ior/ObjectKeyFactoryImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,8 @@
import com.sun.corba.se.impl.logging.IORSystemException ;
import com.sun.corba.se.impl.encoding.EncapsInputStream ;
+import sun.corba.EncapsInputStreamFactory;
+
/** Based on the magic and scid, return the appropriate
* ObjectKeyTemplate. Expects to be called with a valid
@@ -217,7 +219,7 @@
public ObjectKey create( byte[] key )
{
OctetSeqHolder osh = new OctetSeqHolder() ;
- EncapsInputStream is = new EncapsInputStream( orb, key, key.length ) ;
+ EncapsInputStream is = EncapsInputStreamFactory.newEncapsInputStream( orb, key, key.length );
ObjectKeyTemplate oktemp = create( is, fullKey, osh ) ;
if (oktemp == null)
--- a/corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -70,6 +70,8 @@
import com.sun.corba.se.impl.encoding.EncapsInputStream ;
import com.sun.corba.se.impl.encoding.EncapsOutputStream ;
+import sun.corba.EncapsInputStreamFactory;
+
import com.sun.corba.se.impl.util.JDKBridge;
import com.sun.corba.se.impl.logging.IORSystemException;
@@ -170,8 +172,8 @@
throw wrapper.invalidTaggedProfile() ;
}
- EncapsInputStream istr = new EncapsInputStream((ORB)orb, profile.profile_data,
- profile.profile_data.length);
+ EncapsInputStream istr = EncapsInputStreamFactory.newEncapsInputStream((ORB)orb, profile.profile_data,
+ profile.profile_data.length);
istr.consumeEndian();
init( istr ) ;
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryDynamicBase.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryDynamicBase.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013 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,6 +25,7 @@
package com.sun.corba.se.impl.presentation.rmi ;
+import java.io.SerializablePermission;
import java.lang.reflect.InvocationHandler ;
import java.lang.reflect.Proxy ;
@@ -38,11 +39,18 @@
{
protected final ClassLoader loader ;
- public StubFactoryDynamicBase( PresentationManager.ClassData classData,
- ClassLoader loader )
- {
- super( classData ) ;
+ private static Void checkPermission() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkPermission(new SerializablePermission(
+ "enableSubclassImplementation"));
+ }
+ return null;
+ }
+ private StubFactoryDynamicBase(Void unused,
+ PresentationManager.ClassData classData, ClassLoader loader) {
+ super(classData);
// this.loader must not be null, or the newProxyInstance call
// will fail.
if (loader == null) {
@@ -55,5 +63,11 @@
}
}
+ public StubFactoryDynamicBase( PresentationManager.ClassData classData,
+ ClassLoader loader )
+ {
+ this (checkPermission(), classData, loader);
+ }
+
public abstract org.omg.CORBA.Object makeStub() ;
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryFactoryProxyImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryFactoryProxyImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013, 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,14 +25,22 @@
package com.sun.corba.se.impl.presentation.rmi;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import com.sun.corba.se.spi.presentation.rmi.PresentationManager ;
public class StubFactoryFactoryProxyImpl extends StubFactoryFactoryDynamicBase
{
public PresentationManager.StubFactory makeDynamicStubFactory(
- PresentationManager pm, PresentationManager.ClassData classData,
- ClassLoader classLoader )
+ PresentationManager pm, final PresentationManager.ClassData classData,
+ final ClassLoader classLoader )
{
- return new StubFactoryProxyImpl( classData, classLoader ) ;
+ return AccessController
+ .doPrivileged(new PrivilegedAction<StubFactoryProxyImpl>() {
+ @Override
+ public StubFactoryProxyImpl run() {
+ return new StubFactoryProxyImpl(classData, classLoader);
+ }
+ });
}
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/CorbaClientRequestDispatcherImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/protocol/CorbaClientRequestDispatcherImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
@@ -115,6 +115,7 @@
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
+import sun.corba.EncapsInputStreamFactory;
/**
* ClientDelegate is the RMI client-side subcontract or representation
@@ -847,8 +848,8 @@
}
byte[] data = ((UnknownServiceContext)sc).getData();
EncapsInputStream in =
- new EncapsInputStream((ORB)messageMediator.getBroker(),
- data, data.length);
+ EncapsInputStreamFactory.newEncapsInputStream((ORB)messageMediator.getBroker(),
+ data, data.length);
in.consumeEndian();
String msg =
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/SharedCDRClientRequestDispatcherImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/protocol/SharedCDRClientRequestDispatcherImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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,8 @@
import java.util.Iterator;
import java.rmi.RemoteException;
import java.nio.ByteBuffer;
-
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.rmi.CORBA.Util;
import javax.rmi.CORBA.Tie;
@@ -111,6 +112,7 @@
import com.sun.corba.se.impl.protocol.giopmsgheaders.ProfileAddr;
import com.sun.corba.se.impl.protocol.giopmsgheaders.ReferenceAddr;
import com.sun.corba.se.impl.transport.CorbaContactInfoListIteratorImpl;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.corba.se.impl.util.JDKBridge;
/**
@@ -156,10 +158,17 @@
ByteBufferWithInfo bbwi = cdrOutputObject.getByteBufferWithInfo();
cdrOutputObject.getMessageHeader().setSize(bbwi.byteBuffer, bbwi.getSize());
-
- CDRInputObject cdrInputObject =
- new CDRInputObject(orb, null, bbwi.byteBuffer,
- cdrOutputObject.getMessageHeader());
+ final ORB inOrb = orb;
+ final ByteBuffer inBuffer = bbwi.byteBuffer;
+ final Message inMsg = cdrOutputObject.getMessageHeader();
+ CDRInputObject cdrInputObject = AccessController
+ .doPrivileged(new PrivilegedAction<CDRInputObject>() {
+ @Override
+ public CDRInputObject run() {
+ return new CDRInputObject(inOrb, null, inBuffer,
+ inMsg);
+ }
+ });
messageMediator.setInputObject(cdrInputObject);
cdrInputObject.setMessageMediator(messageMediator);
@@ -192,9 +201,17 @@
cdrOutputObject = (CDROutputObject) messageMediator.getOutputObject();
bbwi = cdrOutputObject.getByteBufferWithInfo();
cdrOutputObject.getMessageHeader().setSize(bbwi.byteBuffer, bbwi.getSize());
- cdrInputObject =
- new CDRInputObject(orb, null, bbwi.byteBuffer,
- cdrOutputObject.getMessageHeader());
+ final ORB inOrb2 = orb;
+ final ByteBuffer inBuffer2 = bbwi.byteBuffer;
+ final Message inMsg2 = cdrOutputObject.getMessageHeader();
+ cdrInputObject = AccessController
+ .doPrivileged(new PrivilegedAction<CDRInputObject>() {
+ @Override
+ public CDRInputObject run() {
+ return new CDRInputObject(inOrb2, null, inBuffer2,
+ inMsg2);
+ }
+ });
messageMediator.setInputObject(cdrInputObject);
cdrInputObject.setMessageMediator(messageMediator);
--- a/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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,6 +36,8 @@
import org.omg.CosNaming.NamingContextExt ;
import org.omg.CosNaming.NamingContextExtHelper ;
+import sun.corba.EncapsInputStreamFactory;
+
import com.sun.corba.se.spi.ior.IOR;
import com.sun.corba.se.spi.ior.IORTemplate;
import com.sun.corba.se.spi.ior.ObjectKey;
@@ -114,8 +116,8 @@
buf[j] = (byte)((ORBUtility.hexOf(str.charAt(i)) << UN_SHIFT) & 0xF0);
buf[j] |= (byte)(ORBUtility.hexOf(str.charAt(i+1)) & 0x0F);
}
- EncapsInputStream s = new EncapsInputStream(orb, buf, buf.length,
- orb.getORBData().getGIOPVersion());
+ EncapsInputStream s = EncapsInputStreamFactory.newEncapsInputStream(orb, buf, buf.length,
+ orb.getORBData().getGIOPVersion());
s.consumeEndian();
return s.read_Object() ;
}
--- a/corba/src/share/classes/com/sun/corba/se/spi/servicecontext/ServiceContexts.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/spi/servicecontext/ServiceContexts.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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,6 +58,9 @@
import com.sun.corba.se.impl.util.Utility ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
+import sun.corba.EncapsInputStreamFactory;
+
+
public class ServiceContexts {
private static boolean isDebugging( OutputStream os )
{
@@ -198,11 +201,11 @@
// Note: As of Jan 2001, no standard OMG or Sun service contexts
// ship wchar data or are defined as using anything but GIOP 1.0 CDR.
EncapsInputStream eis
- = new EncapsInputStream(orb,
- data,
- data.length,
- giopVersion,
- codeBase);
+ = EncapsInputStreamFactory.newEncapsInputStream(orb,
+ data,
+ data.length,
+ giopVersion,
+ codeBase);
eis.consumeEndian();
// Now the input stream passed to a ServiceContext
--- a/corba/src/share/classes/org/omg/CORBA_2_3/portable/InputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/corba/src/share/classes/org/omg/CORBA_2_3/portable/InputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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,6 +31,10 @@
package org.omg.CORBA_2_3.portable;
+import java.io.SerializablePermission;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
/**
* InputStream provides for the reading of all of the mapped IDL types
* from the stream. It extends org.omg.CORBA.portable.InputStream. This
@@ -43,6 +47,43 @@
public abstract class InputStream extends org.omg.CORBA.portable.InputStream {
+
+ private static final String ALLOW_SUBCLASS_PROP = "jdk.corba.allowInputStreamSubclass";
+
+ private static final boolean allowSubclass = AccessController.doPrivileged(
+ new PrivilegedAction<Boolean>() {
+ @Override
+ public Boolean run() {
+ String prop = System.getProperty(ALLOW_SUBCLASS_PROP);
+ return prop == null ? false :
+ (prop.equalsIgnoreCase("false") ? false : true);
+ }
+ });
+
+ private static Void checkPermission() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ if (!allowSubclass)
+ sm.checkPermission(new
+ SerializablePermission("enableSubclassImplementation"));
+ }
+ return null;
+ }
+
+ private InputStream(Void ignore) { }
+
+ /**
+ * Create a new instance of this class.
+ *
+ * throw SecurityException if SecurityManager is installed and
+ * enableSubclassImplementation SerializablePermission
+ * is not granted or jdk.corba.allowOutputStreamSubclass system
+ * property is either not set or is set to 'false'
+ */
+ public InputStream() {
+ this(checkPermission());
+ }
+
/**
* Unmarshalls a value type from the input stream.
* @return the value type unmarshalled from the input stream
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/corba/src/share/classes/sun/corba/EncapsInputStreamFactory.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+package sun.corba;
+
+import java.nio.ByteBuffer;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+
+import com.sun.corba.se.impl.encoding.EncapsInputStream;
+import com.sun.corba.se.impl.encoding.TypeCodeInputStream;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
+import com.sun.corba.se.pept.protocol.MessageMediator;
+import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
+import com.sun.corba.se.spi.orb.ORB;
+import com.sun.org.omg.SendingContext.CodeBase;
+
+public class EncapsInputStreamFactory {
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] buf, final int size,
+ final boolean littleEndian, final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, buf, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final ByteBuffer byteBuffer,
+ final int size, final boolean littleEndian,
+ final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, byteBuffer, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, data, size);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final EncapsInputStream eis) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(eis);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size,
+ final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, data, size, version);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size,
+ final GIOPVersion version, final CodeBase codeBase) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, data, size, version,
+ codeBase);
+ }
+ });
+ }
+
+ public static TypeCodeInputStream newTypeCodeInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] buf, final int size,
+ final boolean littleEndian, final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<TypeCodeInputStream>() {
+ @Override
+ public TypeCodeInputStream run() {
+ return new TypeCodeInputStream(orb, buf, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static TypeCodeInputStream newTypeCodeInputStream(
+ final org.omg.CORBA.ORB orb, final ByteBuffer byteBuffer,
+ final int size, final boolean littleEndian,
+ final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<TypeCodeInputStream>() {
+ @Override
+ public TypeCodeInputStream run() {
+ return new TypeCodeInputStream(orb, byteBuffer, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static TypeCodeInputStream newTypeCodeInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<TypeCodeInputStream>() {
+ @Override
+ public TypeCodeInputStream run() {
+ return new TypeCodeInputStream(orb, data, size);
+ }
+ });
+ }
+}
--- a/hotspot/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/hotspot/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -403,3 +403,4 @@
05fedd51e40da22c9460bf17c7185889e435db3d hs25-b62
fca262db9c4309f99d2f5542ab0780e45c2f1578 jdk8-b120
ce2d7e46f3c7e41241f3b407705a4071323a11ab jdk9-b00
+050a626a88951140df874f7b163e304d07b6c296 jdk9-b01
--- a/jaxp/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -243,3 +243,4 @@
69a930376c70beb9877970128bad0f04cb0c6eb1 jdk8-b119
64d8b228a72cf9082b1a9a881c81188ccffde234 jdk8-b120
4045edd35e8ba73bfdc23ce8961b9640d4145fe5 jdk9-b00
+e5256f530a9b5f2d677ca245de44a617ffb58f52 jdk9-b01
--- a/jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Tue Jan 28 11:21:43 2014 -0800
@@ -79,7 +79,7 @@
/**
* JDK maximum general entity size limit
*/
- public static final String JDK_GENEAL_ENTITY_SIZE_LIMIT =
+ public static final String JDK_GENERAL_ENTITY_SIZE_LIMIT =
ORACLE_JAXP_PROPERTY_PREFIX + "maxGeneralEntitySizeLimit";
/**
* JDK maximum parameter entity size limit
@@ -129,7 +129,7 @@
/**
* JDK maximum general entity size limit
*/
- public static final String SP_GENEAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
+ public static final String SP_GENERAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
/**
* JDK maximum parameter entity size limit
*/
--- a/jaxp/src/com/sun/org/apache/xalan/internal/lib/ExsltStrings.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/lib/ExsltStrings.java Tue Jan 28 11:21:43 2014 -0800
@@ -52,6 +52,8 @@
*/
public class ExsltStrings extends ExsltBase
{
+ static final String JDK_DEFAULT_DOM = "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
+
/**
* The str:align function aligns a string within another string.
* <p>
@@ -225,7 +227,7 @@
token = str.substring(fromIndex);
}
- Document doc = DocumentHolder.m_doc;
+ Document doc = getDocument();
synchronized (doc)
{
Element element = doc.createElement("token");
@@ -289,7 +291,7 @@
{
StringTokenizer lTokenizer = new StringTokenizer(toTokenize, delims);
- Document doc = DocumentHolder.m_doc;
+ Document doc = getDocument();
synchronized (doc)
{
while (lTokenizer.hasMoreTokens())
@@ -305,7 +307,7 @@
else
{
- Document doc = DocumentHolder.m_doc;
+ Document doc = getDocument();
synchronized (doc)
{
for (int i = 0; i < toTokenize.length(); i++)
@@ -327,31 +329,23 @@
{
return tokenize(toTokenize, " \t\n\r");
}
+
/**
- * This class is not loaded until first referenced (see Java Language
- * Specification by Gosling/Joy/Steele, section 12.4.1)
- *
- * The static members are created when this class is first referenced, as a
- * lazy initialization not needing checking against null or any
- * synchronization.
- *
+ * @return an instance of DOM Document
*/
- private static class DocumentHolder
- {
- // Reuse the Document object to reduce memory usage.
- private static final Document m_doc;
- static {
- try
- {
- m_doc =DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ private static Document getDocument()
+ {
+ try
+ {
+ if (System.getSecurityManager() == null) {
+ return DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ } else {
+ return DocumentBuilderFactory.newInstance(JDK_DEFAULT_DOM, null).newDocumentBuilder().newDocument();
}
-
- catch(ParserConfigurationException pce)
- {
- throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(pce);
- }
-
+ }
+ catch(ParserConfigurationException pce)
+ {
+ throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(pce);
}
}
-
}
--- a/jaxp/src/com/sun/org/apache/xalan/internal/lib/Extensions.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/lib/Extensions.java Tue Jan 28 11:21:43 2014 -0800
@@ -56,6 +56,7 @@
*/
public class Extensions
{
+ static final String JDK_DEFAULT_DOM = "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
/**
* Constructor Extensions
*
@@ -114,23 +115,14 @@
// This no longer will work right since the DTM.
// Document myDoc = myProcessor.getContextNode().getOwnerDocument();
- try
- {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document myDoc = db.newDocument();
+ Document myDoc = getDocument();
Text textNode = myDoc.createTextNode(textNodeValue);
DocumentFragment docFrag = myDoc.createDocumentFragment();
docFrag.appendChild(textNode);
- return new NodeSet(docFrag);
- }
- catch(ParserConfigurationException pce)
- {
- throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(pce);
- }
+ return new NodeSet(docFrag);
}
}
@@ -249,8 +241,7 @@
public static NodeList tokenize(String toTokenize, String delims)
{
- Document doc = DocumentHolder.m_doc;
-
+ Document doc = getDocument();
StringTokenizer lTokenizer = new StringTokenizer(toTokenize, delims);
NodeSet resultSet = new NodeSet();
@@ -308,17 +299,7 @@
public static Node checkEnvironment(ExpressionContext myContext)
{
- Document factoryDocument;
- try
- {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- factoryDocument = db.newDocument();
- }
- catch(ParserConfigurationException pce)
- {
- throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(pce);
- }
+ Document factoryDocument = getDocument();
Node resultNode = null;
try
@@ -391,30 +372,21 @@
}
/**
- * This class is not loaded until first referenced (see Java Language
- * Specification by Gosling/Joy/Steele, section 12.4.1)
- *
- * The static members are created when this class is first referenced, as a
- * lazy initialization not needing checking against null or any
- * synchronization.
- *
+ * @return an instance of DOM Document
*/
- private static class DocumentHolder
- {
- // Reuse the Document object to reduce memory usage.
- private static final Document m_doc;
- static
+ private static Document getDocument()
+ {
+ try
{
- try
- {
- m_doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ if (System.getSecurityManager() == null) {
+ return DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ } else {
+ return DocumentBuilderFactory.newInstance(JDK_DEFAULT_DOM, null).newDocumentBuilder().newDocument();
}
-
- catch(ParserConfigurationException pce)
- {
- throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(pce);
- }
-
+ }
+ catch(ParserConfigurationException pce)
+ {
+ throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(pce);
}
}
}
--- a/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -73,8 +73,8 @@
XalanConstants.SP_ELEMENT_ATTRIBUTE_LIMIT, 0, 10000),
TOTAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_TOTAL_ENTITY_SIZE_LIMIT,
XalanConstants.SP_TOTAL_ENTITY_SIZE_LIMIT, 0, 50000000),
- GENEAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_GENEAL_ENTITY_SIZE_LIMIT,
- XalanConstants.SP_GENEAL_ENTITY_SIZE_LIMIT, 0, 0),
+ GENERAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_GENERAL_ENTITY_SIZE_LIMIT,
+ XalanConstants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0),
PARAMETER_ENTITY_SIZE_LIMIT(XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT,
XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000);
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Tue Jan 28 11:21:43 2014 -0800
@@ -240,7 +240,7 @@
/**
* JDK maximum general entity size limit
*/
- public static final String JDK_GENEAL_ENTITY_SIZE_LIMIT =
+ public static final String JDK_GENERAL_ENTITY_SIZE_LIMIT =
ORACLE_JAXP_PROPERTY_PREFIX + "maxGeneralEntitySizeLimit";
/**
* JDK maximum parameter entity size limit
@@ -287,7 +287,7 @@
/**
* JDK maximum general entity size limit
*/
- public static final String SP_GENEAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
+ public static final String SP_GENERAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
/**
* JDK maximum parameter entity size limit
*/
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,6 +44,7 @@
import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter;
import com.sun.org.apache.xerces.internal.impl.XMLEntityHandler;
import com.sun.org.apache.xerces.internal.impl.Constants;
+import com.sun.org.apache.xerces.internal.utils.XMLLimitAnalyzer;
import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
import com.sun.xml.internal.stream.Entity;
@@ -262,6 +263,11 @@
fEntityManager.startDTDEntity(inputSource);
} // setInputSource(XMLInputSource)
+
+ public void setLimitAnalyzer(XMLLimitAnalyzer limitAnalyzer) {
+ fLimitAnalyzer = limitAnalyzer;
+ }
+
/**
* Scans the external subset of the document.
*
@@ -1625,10 +1631,10 @@
XMLString literal = fString;
XMLString literal2 = fString;
int countChar = 0;
- if (fLimitAnalyzer == null && fSecurityManager != null) {
- fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
- fLimitAnalyzer.startEntity(entityName);
- }
+ if (fLimitAnalyzer == null ) {
+ fLimitAnalyzer = new XMLLimitAnalyzer();
+ }
+ fLimitAnalyzer.startEntity(entityName);
if (fEntityScanner.scanLiteral(quote, fString) != quote) {
fStringBuffer.clear();
@@ -2145,6 +2151,8 @@
// set starting state
setScannerState(SCANNER_STATE_TEXT_DECL);
//new SymbolTable());
+
+ fLimitAnalyzer = new XMLLimitAnalyzer();
}
/**
@@ -2164,18 +2172,18 @@
*/
private void checkLimit(String entityName, int len) {
if (fLimitAnalyzer == null) {
- fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
+ fLimitAnalyzer = new XMLLimitAnalyzer();
}
fLimitAnalyzer.addValue(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT, entityName, len);
- if (fSecurityManager.isOverLimit(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT)) {
- fSecurityManager.debugPrint();
+ if (fSecurityManager.isOverLimit(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT, fLimitAnalyzer)) {
+ fSecurityManager.debugPrint(fLimitAnalyzer);
reportFatalError("MaxEntitySizeLimit", new Object[]{entityName,
fLimitAnalyzer.getValue(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT),
fSecurityManager.getLimit(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT),
fSecurityManager.getStateLiteral(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT)});
}
- if (fSecurityManager.isOverLimit(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT)) {
- fSecurityManager.debugPrint();
+ if (fSecurityManager.isOverLimit(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT, fLimitAnalyzer)) {
+ fSecurityManager.debugPrint(fLimitAnalyzer);
reportFatalError("TotalEntitySizeLimit",
new Object[]{fLimitAnalyzer.getTotalValue(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT),
fSecurityManager.getLimit(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT),
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -659,12 +659,12 @@
dtdGrammarUtil = null;
if (fSecurityManager != null) {
- fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
fElementAttributeLimit = fSecurityManager.getLimit(XMLSecurityManager.Limit.ELEMENT_ATTRIBUTE_LIMIT);
} else {
- fLimitAnalyzer = null;
fElementAttributeLimit = 0;
}
+ fLimitAnalyzer = new XMLLimitAnalyzer();
+ fEntityManager.setLimitAnalyzer(fLimitAnalyzer);
}
/**
@@ -3154,16 +3154,16 @@
*/
protected void checkLimit(XMLStringBuffer buffer) {
if (fLimitAnalyzer.isTracking(fCurrentEntityName)) {
- fLimitAnalyzer.addValue(Limit.GENEAL_ENTITY_SIZE_LIMIT, fCurrentEntityName, buffer.length);
- if (fSecurityManager.isOverLimit(Limit.GENEAL_ENTITY_SIZE_LIMIT)) {
- fSecurityManager.debugPrint();
+ fLimitAnalyzer.addValue(Limit.GENERAL_ENTITY_SIZE_LIMIT, fCurrentEntityName, buffer.length);
+ if (fSecurityManager.isOverLimit(Limit.GENERAL_ENTITY_SIZE_LIMIT, fLimitAnalyzer)) {
+ fSecurityManager.debugPrint(fLimitAnalyzer);
reportFatalError("MaxEntitySizeLimit", new Object[]{fCurrentEntityName,
- fLimitAnalyzer.getValue(Limit.GENEAL_ENTITY_SIZE_LIMIT),
- fSecurityManager.getLimit(Limit.GENEAL_ENTITY_SIZE_LIMIT),
- fSecurityManager.getStateLiteral(Limit.GENEAL_ENTITY_SIZE_LIMIT)});
+ fLimitAnalyzer.getValue(Limit.GENERAL_ENTITY_SIZE_LIMIT),
+ fSecurityManager.getLimit(Limit.GENERAL_ENTITY_SIZE_LIMIT),
+ fSecurityManager.getStateLiteral(Limit.GENERAL_ENTITY_SIZE_LIMIT)});
}
- if (fSecurityManager.isOverLimit(Limit.TOTAL_ENTITY_SIZE_LIMIT)) {
- fSecurityManager.debugPrint();
+ if (fSecurityManager.isOverLimit(Limit.TOTAL_ENTITY_SIZE_LIMIT, fLimitAnalyzer)) {
+ fSecurityManager.debugPrint(fLimitAnalyzer);
reportFatalError("TotalEntitySizeLimit",
new Object[]{fLimitAnalyzer.getTotalValue(Limit.TOTAL_ENTITY_SIZE_LIMIT),
fSecurityManager.getLimit(Limit.TOTAL_ENTITY_SIZE_LIMIT),
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1090,6 +1090,8 @@
((XMLDTDScannerImpl)fDTDScanner).reset(fPropertyManager);
}
+
+ fDTDScanner.setLimitAnalyzer(fLimitAnalyzer);
do {
again = false;
switch (fScannerState) {
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -1300,8 +1300,8 @@
if(fLimitAnalyzer != null) {
fLimitAnalyzer.addValue(entityExpansionIndex, name, 1);
}
- if( fSecurityManager != null && fSecurityManager.isOverLimit(entityExpansionIndex)){
- fSecurityManager.debugPrint();
+ if( fSecurityManager != null && fSecurityManager.isOverLimit(entityExpansionIndex, fLimitAnalyzer)){
+ fSecurityManager.debugPrint(fLimitAnalyzer);
fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,"EntityExpansionLimitExceeded",
new Object[]{fSecurityManager.getLimitValueByIndex(entityExpansionIndex)},
XMLErrorReporter.SEVERITY_FATAL_ERROR );
@@ -1368,9 +1368,9 @@
//close the reader
try{
if (fLimitAnalyzer != null) {
- fLimitAnalyzer.endEntity(XMLSecurityManager.Limit.GENEAL_ENTITY_SIZE_LIMIT, fCurrentEntity.name);
+ fLimitAnalyzer.endEntity(XMLSecurityManager.Limit.GENERAL_ENTITY_SIZE_LIMIT, fCurrentEntity.name);
if (fCurrentEntity.name.equals("[xml]")) {
- fSecurityManager.debugPrint();
+ fSecurityManager.debugPrint(fLimitAnalyzer);
}
}
fCurrentEntity.close();
@@ -1439,7 +1439,6 @@
fAccessExternalDTD = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD);
fSecurityManager = (XMLSecurityManager)propertyManager.getProperty(SECURITY_MANAGER);
- fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
// initialize state
//fStandalone = false;
@@ -1501,7 +1500,6 @@
fStaxEntityResolver = (StaxEntityResolverWrapper)componentManager.getProperty(STAX_ENTITY_RESOLVER, null);
fValidationManager = (ValidationManager)componentManager.getProperty(VALIDATION_MANAGER, null);
fSecurityManager = (XMLSecurityManager)componentManager.getProperty(SECURITY_MANAGER, null);
- fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
entityExpansionIndex = fSecurityManager.getIndex(Constants.JDK_ENTITY_EXPANSION_LIMIT);
// JAXP 1.5 feature
@@ -1659,7 +1657,6 @@
if (suffixLength == Constants.SECURITY_MANAGER_PROPERTY.length() &&
propertyId.endsWith(Constants.SECURITY_MANAGER_PROPERTY)) {
fSecurityManager = (XMLSecurityManager)value;
- fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
}
}
@@ -1668,8 +1665,13 @@
{
XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager)value;
fAccessExternalDTD = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD);
- }
}
+ }
+
+ public void setLimitAnalyzer(XMLLimitAnalyzer fLimitAnalyzer) {
+ this.fLimitAnalyzer = fLimitAnalyzer;
+ }
+
/**
* Returns a list of property identifiers that are recognized by
* this component. This method may return null if no properties
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Tue Jan 28 11:21:43 2014 -0800
@@ -77,7 +77,6 @@
}
}
- private XMLSecurityManager securityManager;
/**
* Max value accumulated for each property
*/
@@ -101,8 +100,7 @@
* Default constructor. Establishes default values for known security
* vulnerabilities.
*/
- public XMLLimitAnalyzer(XMLSecurityManager securityManager) {
- this.securityManager = securityManager;
+ public XMLLimitAnalyzer() {
values = new int[Limit.values().length];
totalValue = new int[Limit.values().length];
names = new String[Limit.values().length];
@@ -157,7 +155,7 @@
}
- if (index == Limit.GENEAL_ENTITY_SIZE_LIMIT.ordinal() ||
+ if (index == Limit.GENERAL_ENTITY_SIZE_LIMIT.ordinal() ||
index == Limit.PARAMETER_ENTITY_SIZE_LIMIT.ordinal()) {
totalValue[Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal()] += value;
}
@@ -221,7 +219,7 @@
}
}
- public void debugPrint() {
+ public void debugPrint(XMLSecurityManager securityManager) {
Formatter formatter = new Formatter();
System.out.println(formatter.format("%30s %15s %15s %15s %30s",
"Property","Limit","Total size","Size","Entity Name"));
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -65,7 +65,7 @@
MAX_OCCUR_NODE_LIMIT(Constants.JDK_MAX_OCCUR_LIMIT, Constants.SP_MAX_OCCUR_LIMIT, 0, 5000),
ELEMENT_ATTRIBUTE_LIMIT(Constants.JDK_ELEMENT_ATTRIBUTE_LIMIT, Constants.SP_ELEMENT_ATTRIBUTE_LIMIT, 0, 10000),
TOTAL_ENTITY_SIZE_LIMIT(Constants.JDK_TOTAL_ENTITY_SIZE_LIMIT, Constants.SP_TOTAL_ENTITY_SIZE_LIMIT, 0, 50000000),
- GENEAL_ENTITY_SIZE_LIMIT(Constants.JDK_GENEAL_ENTITY_SIZE_LIMIT, Constants.SP_GENEAL_ENTITY_SIZE_LIMIT, 0, 0),
+ GENERAL_ENTITY_SIZE_LIMIT(Constants.JDK_GENERAL_ENTITY_SIZE_LIMIT, Constants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0),
PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000);
final String apiProperty;
@@ -148,7 +148,6 @@
private boolean[] isSet;
- private XMLLimitAnalyzer limitAnalyzer;
/**
* Index of the special entityCountInfo property
*/
@@ -169,7 +168,6 @@
* @param secureProcessing
*/
public XMLSecurityManager(boolean secureProcessing) {
- limitAnalyzer = new XMLLimitAnalyzer(this);
values = new int[Limit.values().length];
states = new State[Limit.values().length];
isSet = new boolean[Limit.values().length];
@@ -249,13 +247,15 @@
if (index == indexEntityCountInfo) {
printEntityCountInfo = (String)value;
} else {
- int temp = 0;
- try {
+ int temp;
+ if (Integer.class.isAssignableFrom(value.getClass())) {
+ temp = ((Integer)value).intValue();
+ } else {
temp = Integer.parseInt((String) value);
if (temp < 0) {
temp = 0;
}
- } catch (NumberFormatException e) {}
+ }
setLimit(index, state, temp);
}
}
@@ -387,8 +387,9 @@
* @param size the size (count or length) of the entity
* @return true if the size is over the limit, false otherwise
*/
- public boolean isOverLimit(Limit limit, String entityName, int size) {
- return isOverLimit(limit.ordinal(), entityName, size);
+ public boolean isOverLimit(Limit limit, String entityName, int size,
+ XMLLimitAnalyzer limitAnalyzer) {
+ return isOverLimit(limit.ordinal(), entityName, size, limitAnalyzer);
}
/**
@@ -400,7 +401,8 @@
* @param size the size (count or length) of the entity
* @return true if the size is over the limit, false otherwise
*/
- public boolean isOverLimit(int index, String entityName, int size) {
+ public boolean isOverLimit(int index, String entityName, int size,
+ XMLLimitAnalyzer limitAnalyzer) {
if (values[index] == NO_LIMIT) {
return false;
}
@@ -418,11 +420,11 @@
* @param size the size (count or length) of the entity
* @return true if the size is over the limit, false otherwise
*/
- public boolean isOverLimit(Limit limit) {
- return isOverLimit(limit.ordinal());
+ public boolean isOverLimit(Limit limit, XMLLimitAnalyzer limitAnalyzer) {
+ return isOverLimit(limit.ordinal(), limitAnalyzer);
}
- public boolean isOverLimit(int index) {
+ public boolean isOverLimit(int index, XMLLimitAnalyzer limitAnalyzer) {
if (values[index] == NO_LIMIT) {
return false;
}
@@ -436,29 +438,12 @@
}
}
- public void debugPrint() {
+ public void debugPrint(XMLLimitAnalyzer limitAnalyzer) {
if (printEntityCountInfo.equals(Constants.JDK_YES)) {
- limitAnalyzer.debugPrint();
+ limitAnalyzer.debugPrint(this);
}
}
- /**
- * Return the limit analyzer
- *
- * @return the limit analyzer
- */
- public XMLLimitAnalyzer getLimitAnalyzer() {
- return limitAnalyzer;
- }
-
- /**
- * Set limit analyzer
- *
- * @param analyzer a limit analyzer
- */
- public void setLimitAnalyzer(XMLLimitAnalyzer analyzer) {
- limitAnalyzer = analyzer;
- }
/**
* Indicate if a property is set explicitly
--- a/jaxp/src/com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner.java Tue Jan 28 11:21:43 2014 -0800
@@ -20,6 +20,7 @@
package com.sun.org.apache.xerces.internal.xni.parser;
+import com.sun.org.apache.xerces.internal.utils.XMLLimitAnalyzer;
import java.io.IOException;
import com.sun.org.apache.xerces.internal.xni.XNIException;
@@ -95,4 +96,5 @@
public boolean scanDTDExternalSubset(boolean complete)
throws IOException, XNIException;
+ public void setLimitAnalyzer(XMLLimitAnalyzer limitAnalyzer);
} // interface XMLDTDScanner
--- a/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,20 +24,17 @@
package com.sun.org.apache.xml.internal.resolver;
import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
+import com.sun.org.apache.xml.internal.resolver.helpers.BootstrapResolver;
+import com.sun.org.apache.xml.internal.resolver.helpers.Debug;
import java.io.InputStream;
-
+import java.net.MalformedURLException;
import java.net.URL;
-import java.net.MalformedURLException;
-
import java.util.MissingResourceException;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
import java.util.Vector;
-
-import com.sun.org.apache.xml.internal.resolver.helpers.Debug;
-import com.sun.org.apache.xml.internal.resolver.helpers.BootstrapResolver;
-import com.sun.org.apache.xml.internal.resolver.Catalog;
+import sun.reflect.misc.ReflectUtil;
/**
* CatalogManager provides an interface to the catalog properties.
@@ -687,7 +684,7 @@
catalog = new Catalog();
} else {
try {
- catalog = (Catalog) Class.forName(catalogClassName).newInstance();
+ catalog = (Catalog) ReflectUtil.forName(catalogClassName).newInstance();
} catch (ClassNotFoundException cnfe) {
debug.message(1,"Catalog class named '"
+ catalogClassName
--- a/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/DOMCatalogReader.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/DOMCatalogReader.java Tue Jan 28 11:21:43 2014 -0800
@@ -23,24 +23,21 @@
package com.sun.org.apache.xml.internal.resolver.readers;
-import java.util.Hashtable;
+import com.sun.org.apache.xml.internal.resolver.Catalog;
+import com.sun.org.apache.xml.internal.resolver.CatalogException;
+import com.sun.org.apache.xml.internal.resolver.helpers.Namespaces;
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
-import java.net.MalformedURLException;
-
+import java.util.Hashtable;
+import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
-
-import com.sun.org.apache.xml.internal.resolver.Catalog;
-import com.sun.org.apache.xml.internal.resolver.CatalogException;
-import com.sun.org.apache.xml.internal.resolver.readers.CatalogReader;
-import com.sun.org.apache.xml.internal.resolver.helpers.Namespaces;
-
+import org.w3c.dom.*;
import org.xml.sax.SAXException;
-import org.w3c.dom.*;
+import sun.reflect.misc.ReflectUtil;
/**
* A DOM-based CatalogReader.
@@ -199,7 +196,7 @@
DOMCatalogParser domParser = null;
try {
- domParser = (DOMCatalogParser) Class.forName(domParserClass).newInstance();
+ domParser = (DOMCatalogParser) ReflectUtil.forName(domParserClass).newInstance();
} catch (ClassNotFoundException cnfe) {
catalog.getCatalogManager().debug.message(1, "Cannot load XML Catalog Parser class", domParserClass);
throw new CatalogException(CatalogException.UNPARSEABLE);
--- a/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/SAXCatalogReader.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/SAXCatalogReader.java Tue Jan 28 11:21:43 2014 -0800
@@ -23,19 +23,21 @@
package com.sun.org.apache.xml.internal.resolver.readers;
-import java.util.Hashtable;
+import com.sun.org.apache.xml.internal.resolver.Catalog;
+import com.sun.org.apache.xml.internal.resolver.CatalogException;
+import com.sun.org.apache.xml.internal.resolver.CatalogManager;
+import com.sun.org.apache.xml.internal.resolver.helpers.Debug;
+import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.FileNotFoundException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
-import java.net.MalformedURLException;
import java.net.UnknownHostException;
-
+import java.util.Hashtable;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
-import javax.xml.parsers.SAXParser;
-
import org.xml.sax.AttributeList;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
@@ -45,12 +47,7 @@
import org.xml.sax.Locator;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
-
-import com.sun.org.apache.xml.internal.resolver.Catalog;
-import com.sun.org.apache.xml.internal.resolver.CatalogManager;
-import com.sun.org.apache.xml.internal.resolver.CatalogException;
-import com.sun.org.apache.xml.internal.resolver.readers.CatalogReader;
-import com.sun.org.apache.xml.internal.resolver.helpers.Debug;
+import sun.reflect.misc.ReflectUtil;
/**
* A SAX-based CatalogReader.
@@ -246,7 +243,7 @@
}
parser.parse(new InputSource(is), spHandler);
} else {
- Parser parser = (Parser) Class.forName(parserClass).newInstance();
+ Parser parser = (Parser) ReflectUtil.forName(parserClass).newInstance();
parser.setDocumentHandler(this);
if (bResolver != null) {
parser.setEntityResolver(bResolver);
@@ -352,7 +349,7 @@
try {
saxParser = (SAXCatalogParser)
- Class.forName(saxParserClass).newInstance();
+ ReflectUtil.forName(saxParserClass).newInstance();
saxParser.setCatalog(catalog);
saxParser.startDocument();
@@ -413,7 +410,7 @@
try {
saxParser = (SAXCatalogParser)
- Class.forName(saxParserClass).newInstance();
+ ReflectUtil.forName(saxParserClass).newInstance();
saxParser.setCatalog(catalog);
saxParser.startDocument();
--- a/jaxws/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -242,4 +242,8 @@
76a598cf50c4e1dc1fc8adc08b451943aa1a3179 jdk8-b118
172b8e056ff259044ca48c5425d643dc8e2e05c8 jdk8-b119
6c152deb600d8a11bc46149ace317b1c9fce1482 jdk8-b120
+32050ab53c8a8e4cb09f04b88db78258a480fb61 jdk8-b121
+bc622ba563f9316f981c11c3a260f4c3fdc5ef07 jdk8-b122
+91f5c542ccad330efc0d281362dd6f33f2039746 jdk8-b123
32050ab53c8a8e4cb09f04b88db78258a480fb61 jdk9-b00
+9c9fabbcd3d526d7ca29165169155f49a107533a jdk9-b01
--- a/jaxws/src/share/jaxws_classes/com/sun/tools/internal/jxc/model/nav/ApNavigator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/tools/internal/jxc/model/nav/ApNavigator.java Tue Jan 28 11:21:43 2014 -0800
@@ -65,7 +65,7 @@
*
* @author Kohsuke Kawaguchi (kk@kohsuke.org)
*/
-public class ApNavigator implements Navigator<TypeMirror, TypeElement, VariableElement, ExecutableElement> {
+public final class ApNavigator implements Navigator<TypeMirror, TypeElement, VariableElement, ExecutableElement> {
private final ProcessingEnvironment env;
@@ -236,7 +236,7 @@
}
public boolean isFinal(TypeElement clazz) {
- return hasModifier(clazz,Modifier.FINAL);
+ return hasModifier(clazz, Modifier.FINAL);
}
public VariableElement[] getEnumConstants(TypeElement clazz) {
@@ -258,8 +258,9 @@
return env.getElementUtils().getPackageOf(clazz).getQualifiedName().toString();
}
- public TypeElement findClass(String className, TypeElement referencePoint) {
- return env.getElementUtils().getTypeElement(className);
+ @Override
+ public TypeElement loadObjectFactory(TypeElement referencePoint, String packageName) {
+ return env.getElementUtils().getTypeElement(packageName + ".ObjectFactory");
}
public boolean isBridgeMethod(ExecutableElement method) {
--- a/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/EagerNType.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/EagerNType.java Tue Jan 28 11:21:43 2014 -0800
@@ -30,7 +30,6 @@
import com.sun.codemodel.internal.JType;
import com.sun.tools.internal.xjc.outline.Aspect;
import com.sun.tools.internal.xjc.outline.Outline;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
/**
* @author Kohsuke Kawaguchi
@@ -69,6 +68,6 @@
}
public String fullName() {
- return Navigator.REFLECTION.getTypeName(t);
+ return Utils.REFLECTION_NAVIGATOR.getTypeName(t);
}
}
--- a/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/NavigatorImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/NavigatorImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -56,7 +56,7 @@
EagerNType ent = (EagerNType) nt;
if (base instanceof EagerNClass) {
EagerNClass enc = (EagerNClass) base;
- return create(REFLECTION.getBaseClass(ent.t, enc.c));
+ return create(Utils.REFLECTION_NAVIGATOR.getBaseClass(ent.t, enc.c));
}
// lazy class can never be a base type of an eager type
return null;
@@ -176,7 +176,7 @@
public NType getTypeArgument(NType nt, int i) {
if (nt instanceof EagerNType) {
EagerNType ent = (EagerNType) nt;
- return create(REFLECTION.getTypeArgument(ent.t,i));
+ return create(Utils.REFLECTION_NAVIGATOR.getTypeArgument(ent.t,i));
}
if (nt instanceof NClassByJClass) {
NClassByJClass nnt = (NClassByJClass) nt;
@@ -189,7 +189,7 @@
public boolean isParameterizedType(NType nt) {
if (nt instanceof EagerNType) {
EagerNType ent = (EagerNType) nt;
- return REFLECTION.isParameterizedType(ent.t);
+ return Utils.REFLECTION_NAVIGATOR.isParameterizedType(ent.t);
}
if (nt instanceof NClassByJClass) {
NClassByJClass nnt = (NClassByJClass) nt;
@@ -304,8 +304,8 @@
throw new UnsupportedOperationException();
}
- public NClass findClass(String className, NClass referencePoint) {
- // TODO: implement this method later
+ @Override
+ public NClass loadObjectFactory(NClass referencePoint, String pkg) {
throw new UnsupportedOperationException();
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.tools.internal.xjc.model.nav;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utils class.
+ * Has *package private* access to avoid inappropriate usage.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/JAXBRIContext.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/JAXBRIContext.java Tue Jan 28 11:21:43 2014 -0800
@@ -45,7 +45,6 @@
import com.sun.xml.internal.bind.api.impl.NameConverter;
import com.sun.xml.internal.bind.v2.ContextFactory;
import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnotationReader;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeTypeInfoSet;
import java.util.HashMap;
@@ -417,7 +416,7 @@
* @since 2.0 FCS
*/
public static @Nullable Type getBaseType(@NotNull Type type, @NotNull Class baseType) {
- return Navigator.REFLECTION.getBaseClass(type,baseType);
+ return Utils.REFLECTION_NAVIGATOR.getBaseClass(type, baseType);
}
/**
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/TypeReference.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/TypeReference.java Tue Jan 28 11:21:43 2014 -0800
@@ -32,8 +32,6 @@
import javax.xml.namespace.QName;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
-
/**
* A reference to a JAXB-bound type.
*
@@ -105,12 +103,11 @@
// if we are to reinstitute this check, check JAXB annotations only
// assert annotations.length==0; // not designed to work with adapters.
- Type base = Navigator.REFLECTION.getBaseClass(type, Collection.class);
+ Type base = Utils.REFLECTION_NAVIGATOR.getBaseClass(type, Collection.class);
if(base==null)
return this; // not a collection
- return new TypeReference(tagName,
- Navigator.REFLECTION.getTypeArgument(base,0));
+ return new TypeReference(tagName, Utils.REFLECTION_NAVIGATOR.getTypeArgument(base,0));
}
@Override
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.bind.api;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utils class.
+ * Has *package private* access to avoid inappropriate usage.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java Tue Jan 28 11:21:43 2014 -0800
@@ -289,23 +289,12 @@
String pkg = nav.getPackageName(clazz);
if (!registries.containsKey(pkg)) {
// insert the package's object factory
- C c = loadObjectFactory(clazz, pkg);
+ C c = nav.loadObjectFactory(clazz, pkg);
if (c != null)
addRegistry(c, p);
}
}
- private C loadObjectFactory(C clazz, String pkg) {
- C c;
- try {
- c = nav.findClass(pkg + ".ObjectFactory", clazz);
- } catch (SecurityException ignored) {
- // treat SecurityException in same way as ClassNotFoundException in this case
- c = null;
- }
- return c;
- }
-
/**
* Getting parametrized classes of {@code JAXBElement<...>} property
* @param p property which parametrized types we will try to get
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeAnyTypeImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeAnyTypeImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -36,7 +36,7 @@
*/
final class RuntimeAnyTypeImpl extends AnyTypeImpl<Type,Class> implements RuntimeNonElement {
private RuntimeAnyTypeImpl() {
- super(Navigator.REFLECTION);
+ super(Utils.REFLECTION_NAVIGATOR);
}
public <V> Transducer<V> getTransducer() {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -91,9 +91,6 @@
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext;
import com.sun.xml.internal.bind.v2.util.ByteArrayOutputStreamEx;
import com.sun.xml.internal.bind.v2.util.DataSourceSource;
-import java.util.logging.Logger;
-import com.sun.xml.internal.bind.Util;
-import java.util.logging.Level;
import org.xml.sax.SAXException;
@@ -108,8 +105,6 @@
public abstract class RuntimeBuiltinLeafInfoImpl<T> extends BuiltinLeafInfoImpl<Type,Class>
implements RuntimeBuiltinLeafInfo, Transducer<T> {
- private static final Logger logger = Util.getClassLogger();
-
private RuntimeBuiltinLeafInfoImpl(Class type, QName... typeNames) {
super(type, typeNames);
LEAVES.put(type,this);
@@ -201,7 +196,6 @@
public static final List<RuntimeBuiltinLeafInfoImpl<?>> builtinBeanInfos;
public static final String MAP_ANYURI_TO_URI = "mapAnyUriToUri";
- public static final String USE_OLD_GMONTH_MAPPING = "jaxb.ri.useOldGmonthMapping";
static {
@@ -966,14 +960,7 @@
m.put(DatatypeConstants.DATETIME, "%Y-%M-%DT%h:%m:%s"+ "%z");
m.put(DatatypeConstants.DATE, "%Y-%M-%D" +"%z");
m.put(DatatypeConstants.TIME, "%h:%m:%s"+ "%z");
- if (System.getProperty(USE_OLD_GMONTH_MAPPING) == null) {
- m.put(DatatypeConstants.GMONTH, "--%M%z"); // E2-12 Error. http://www.w3.org/2001/05/xmlschema-errata#e2-12
- } else { // backw. compatibility
- if (logger.isLoggable(Level.FINE)) {
- logger.log(Level.FINE, "Old GMonth mapping used.");
- }
- m.put(DatatypeConstants.GMONTH, "--%M--%z");
- }
+ m.put(DatatypeConstants.GMONTH, "--%M--%z");
m.put(DatatypeConstants.GDAY, "---%D" + "%z");
m.put(DatatypeConstants.GYEAR, "%Y" + "%z");
m.put(DatatypeConstants.GYEARMONTH, "%Y-%M" + "%z");
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeElementInfoImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeElementInfoImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -42,7 +42,6 @@
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeNonElement;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimePropertyInfo;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeTypeRef;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationException;
import com.sun.xml.internal.bind.v2.runtime.Transducer;
import com.sun.xml.internal.bind.v2.runtime.reflect.Accessor;
@@ -122,7 +121,8 @@
}
public Class<? extends JAXBElement> getType() {
- return Navigator.REFLECTION.erasure(super.getType());
+ //noinspection unchecked
+ return (Class<? extends JAXBElement>) Utils.REFLECTION_NAVIGATOR.erasure(super.getType());
}
public RuntimeClassInfo getScope() {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeModelBuilder.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeModelBuilder.java Tue Jan 28 11:21:43 2014 -0800
@@ -38,7 +38,6 @@
import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnotationReader;
import com.sun.xml.internal.bind.v2.model.core.ID;
import com.sun.xml.internal.bind.v2.model.nav.Navigator;
-import com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeNonElement;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeNonElementRef;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimePropertyInfo;
@@ -75,7 +74,7 @@
public final @Nullable JAXBContextImpl context;
public RuntimeModelBuilder(JAXBContextImpl context, RuntimeAnnotationReader annotationReader, Map<Class, Class> subclassReplacements, String defaultNamespaceRemap) {
- super(annotationReader, Navigator.REFLECTION, subclassReplacements, defaultNamespaceRemap);
+ super(annotationReader, Utils.REFLECTION_NAVIGATOR, subclassReplacements, defaultNamespaceRemap);
this.context = context;
}
@@ -109,10 +108,6 @@
return new RuntimeArrayInfoImpl(this, upstream, (Class)arrayType);
}
- public ReflectionNavigator getNavigator() {
- return (ReflectionNavigator)nav;
- }
-
@Override
protected RuntimeTypeInfoSetImpl createTypeInfoSet() {
return new RuntimeTypeInfoSetImpl(reader);
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeTypeInfoSetImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeTypeInfoSetImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -35,7 +35,6 @@
import com.sun.xml.internal.bind.v2.model.annotation.AnnotationReader;
import com.sun.xml.internal.bind.v2.model.core.TypeInfoSet;
import com.sun.xml.internal.bind.v2.model.nav.Navigator;
-import com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeNonElement;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeTypeInfoSet;
@@ -46,7 +45,7 @@
*/
final class RuntimeTypeInfoSetImpl extends TypeInfoSetImpl<Type,Class,Field,Method> implements RuntimeTypeInfoSet {
public RuntimeTypeInfoSetImpl(AnnotationReader<Type,Class,Field,Method> reader) {
- super(Navigator.REFLECTION,reader,RuntimeBuiltinLeafInfoImpl.LEAVES);
+ super(Utils.REFLECTION_NAVIGATOR,reader,RuntimeBuiltinLeafInfoImpl.LEAVES);
}
@Override
@@ -54,10 +53,6 @@
return RuntimeAnyTypeImpl.theInstance;
}
- public ReflectionNavigator getNavigator() {
- return (ReflectionNavigator)super.getNavigator();
- }
-
public RuntimeNonElement getTypeInfo( Type type ) {
return (RuntimeNonElement)super.getTypeInfo(type);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.bind.v2.model.impl;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utils class.
+ * Has *package private* access to avoid inappropriate usage.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/Navigator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/Navigator.java Tue Jan 28 11:21:43 2014 -0800
@@ -25,6 +25,10 @@
package com.sun.xml.internal.bind.v2.model.nav;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.Type;
import java.util.Collection;
import com.sun.xml.internal.bind.v2.runtime.Location;
@@ -240,10 +244,6 @@
*/
T getComponentType(T t);
-
- /** The singleton instance. */
- public static final ReflectionNavigator REFLECTION = new ReflectionNavigator();
-
/**
* Gets the i-th type argument from a parameterized type.
*
@@ -357,14 +357,14 @@
String getPackageName(C clazz);
/**
- * Finds the class/interface/enum/annotation of the given name.
+ * Finds ObjectFactory for the given referencePoint.
*
* @param referencePoint
* The class that refers to the specified class.
* @return
* null if not found.
*/
- C findClass(String className, C referencePoint);
+ C loadObjectFactory(C referencePoint, String packageName);
/**
* Returns true if this method is a bridge method as defined in JLS.
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/ReflectionNavigator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/ReflectionNavigator.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,16 +44,19 @@
* {@link Navigator} implementation for {@code java.lang.reflect}.
*
*/
-public final class ReflectionNavigator implements Navigator<Type, Class, Field, Method> {
+/*package*/final class ReflectionNavigator implements Navigator<Type, Class, Field, Method> {
+
+// ---------- Singleton -----------------
+ private static final ReflectionNavigator INSTANCE = new ReflectionNavigator();
- /**
- * Singleton.
- *
- * Use {@link Navigator#REFLECTION}
- */
- ReflectionNavigator() {
+ /*package*/static ReflectionNavigator getInstance() {
+ return INSTANCE;
}
+ private ReflectionNavigator() {
+ }
+// ---------------------------------------
+
public Class getSuperClass(Class clazz) {
if (clazz == Object.class) {
return null;
@@ -64,6 +67,7 @@
}
return sc;
}
+
private static final TypeVisitor<Type, Class> baseClassFinder = new TypeVisitor<Type, Class>() {
public Type onClass(Class c, Class sup) {
@@ -496,7 +500,7 @@
c.getDeclaredConstructor();
return true;
} catch (NoSuchMethodException e) {
- return false;
+ return false; // todo: do this WITHOUT exception throw
}
}
@@ -544,13 +548,14 @@
}
}
- public Class findClass(String className, Class referencePoint) {
+ @Override
+ public Class loadObjectFactory(Class referencePoint, String pkg) {
+ ClassLoader cl= SecureLoader.getClassClassLoader(referencePoint);
+ if (cl == null)
+ cl = SecureLoader.getSystemClassLoader();
+
try {
- ClassLoader cl = SecureLoader.getClassClassLoader(referencePoint);
- if (cl == null) {
- cl = SecureLoader.getSystemClassLoader();
- }
- return cl.loadClass(className);
+ return cl.loadClass(pkg + ".ObjectFactory");
} catch (ClassNotFoundException e) {
return null;
}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/runtime/RuntimeTypeInfoSet.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/runtime/RuntimeTypeInfoSet.java Tue Jan 28 11:21:43 2014 -0800
@@ -33,7 +33,6 @@
import javax.xml.namespace.QName;
import com.sun.xml.internal.bind.v2.model.core.TypeInfoSet;
-import com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator;
/**
* {@link TypeInfoSet} refined for runtime.
@@ -51,5 +50,4 @@
RuntimeElementInfo getElementInfo( Class scope, QName name );
Map<QName,? extends RuntimeElementInfo> getElementMappings( Class scope );
Iterable<? extends RuntimeElementInfo> getAllElements();
- ReflectionNavigator getNavigator();
}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ClassBeanInfoImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ClassBeanInfoImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -48,7 +48,6 @@
import com.sun.xml.internal.bind.v2.ClassFactory;
import com.sun.xml.internal.bind.v2.WellKnownNamespace;
import com.sun.xml.internal.bind.v2.model.core.ID;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeClassInfo;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimePropertyInfo;
import com.sun.xml.internal.bind.v2.runtime.property.AttributeProperty;
@@ -347,7 +346,7 @@
} else if (isThereAnOverridingProperty) {
// need to double check the override - it should be safe to do after the model has been created because it's targeted to override properties only
Class beanClass = bean.getClass();
- if (Navigator.REFLECTION.getDeclaredField(beanClass, p.getFieldName()) == null) {
+ if (Utils.REFLECTION_NAVIGATOR.getDeclaredField(beanClass, p.getFieldName()) == null) {
p.serializeBody(bean, target, null);
}
}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ElementBeanInfoImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ElementBeanInfoImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -36,7 +36,6 @@
import com.sun.xml.internal.bind.api.AccessorException;
import com.sun.xml.internal.bind.v2.model.core.PropertyKind;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeElementInfo;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimePropertyInfo;
import com.sun.xml.internal.bind.v2.runtime.property.Property;
@@ -81,10 +80,10 @@
this.property = PropertyFactory.create(grammar,rei.getProperty());
tagName = rei.getElementName();
- expectedType = Navigator.REFLECTION.erasure(rei.getContentInMemoryType());
+ expectedType = (Class) Utils.REFLECTION_NAVIGATOR.erasure(rei.getContentInMemoryType());
scope = rei.getScope()==null ? JAXBElement.GlobalScope.class : rei.getScope().getClazz();
- Class type = Navigator.REFLECTION.erasure(rei.getType());
+ Class type = (Class) Utils.REFLECTION_NAVIGATOR.erasure(rei.getType());
if(type==JAXBElement.class)
constructor = null;
else {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/JAXBContextImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/JAXBContextImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -65,7 +65,6 @@
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
@@ -90,7 +89,6 @@
import com.sun.xml.internal.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl;
import com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder;
import com.sun.xml.internal.bind.v2.model.nav.Navigator;
-import com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeArrayInfo;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeBuiltinLeafInfo;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeClassInfo;
@@ -118,7 +116,6 @@
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
-import org.xml.sax.helpers.DefaultHandler;
/**
* This class provides the implementation of JAXBContext.
@@ -363,7 +360,7 @@
beanInfoMap.put( e.getKey(), beanInfoMap.get(e.getValue()) );
// build bridges
- ReflectionNavigator nav = typeSet.getNavigator();
+ Navigator<Type, Class, Field, Method> nav = typeSet.getNavigator();
for (TypeReference tr : typeRefs) {
XmlJavaTypeAdapter xjta = tr.get(XmlJavaTypeAdapter.class);
@@ -371,7 +368,7 @@
XmlList xl = tr.get(XmlList.class);
// eventually compute the in-memory type
- Class erasedType = nav.erasure(tr.type);
+ Class erasedType = (Class) nav.erasure(tr.type);
if(xjta!=null) {
a = new Adapter<Type,Class>(xjta.value(),nav);
@@ -382,7 +379,7 @@
}
if(a!=null) {
- erasedType = nav.erasure(a.defaultType);
+ erasedType = (Class) nav.erasure(a.defaultType);
}
Name name = nameBuilder.createElementName(tr.tagName);
@@ -877,7 +874,7 @@
// this is a special class we introduced for JAX-WS that we *don't* want in the schema
} else {
NonElement<Type,Class> typeInfo = getXmlType(tis,tr);
- xsdgen.add(tr.tagName, !Navigator.REFLECTION.isPrimitive(tr.type),typeInfo);
+ xsdgen.add(tr.tagName, !tis.getNavigator().isPrimitive(tr.type),typeInfo);
}
}
return xsdgen;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.bind.v2.runtime;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utils class.
+ * Has *package private* access to avoid inappropriate usage.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayProperty.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayProperty.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,7 +27,6 @@
import com.sun.xml.internal.bind.api.AccessorException;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimePropertyInfo;
import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
import com.sun.xml.internal.bind.v2.runtime.reflect.Accessor;
@@ -49,7 +48,7 @@
assert prop.isCollection();
lister = Lister.create(
- Navigator.REFLECTION.erasure(prop.getRawType()),prop.id(),prop.getAdapter());
+ Utils.REFLECTION_NAVIGATOR.erasure(prop.getRawType()),prop.id(),prop.getAdapter());
assert lister!=null;
acc = prop.getAccessor().optimize(context);
assert acc!=null;
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java Tue Jan 28 11:21:43 2014 -0800
@@ -42,7 +42,6 @@
import com.sun.xml.internal.bind.v2.ClassFactory;
import com.sun.xml.internal.bind.v2.util.QNameMap;
import com.sun.xml.internal.bind.v2.model.core.PropertyKind;
-import com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeMapPropertyInfo;
import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
import com.sun.xml.internal.bind.v2.runtime.JaxBeanInfo;
@@ -98,7 +97,8 @@
this.valueBeanInfo = context.getOrCreate(prop.getValueType());
// infer the implementation class
- Class<ValueT> sig = ReflectionNavigator.REFLECTION.erasure(prop.getRawType());
+ //noinspection unchecked
+ Class<ValueT> sig = (Class<ValueT>) Utils.REFLECTION_NAVIGATOR.erasure(prop.getRawType());
mapImplClass = ClassFactory.inferImplClass(sig,knownImplClasses);
// TODO: error check for mapImplClass==null
// what is the error reporting path for this part of the code?
@@ -140,23 +140,22 @@
*/
private final Loader itemsLoader = new Loader(false) {
- private ThreadLocal<Stack<BeanT>> target = new ThreadLocal<Stack<BeanT>>();
- private ThreadLocal<Stack<ValueT>> map = new ThreadLocal<Stack<ValueT>>();
+ private ThreadLocal<BeanT> target = new ThreadLocal<BeanT>();
+ private ThreadLocal<ValueT> map = new ThreadLocal<ValueT>();
+ private int depthCounter = 0; // needed to clean ThreadLocals
@Override
public void startElement(UnmarshallingContext.State state, TagName ea) throws SAXException {
// create or obtain the Map object
try {
- BeanT target = (BeanT) state.prev.target;
- ValueT mapValue = acc.get(target);
- if(mapValue == null)
- mapValue = ClassFactory.create(mapImplClass);
- else
- mapValue.clear();
-
- Stack.push(this.target, target);
- Stack.push(map, mapValue);
- state.target = mapValue;
+ target.set((BeanT)state.prev.target);
+ map.set(acc.get(target.get()));
+ depthCounter++;
+ if(map.get() == null) {
+ map.set(ClassFactory.create(mapImplClass));
+ }
+ map.get().clear();
+ state.target = map.get();
} catch (AccessorException e) {
// recover from error by setting a dummy Map that receives and discards the values
handleGenericException(e,true);
@@ -168,7 +167,11 @@
public void leaveElement(State state, TagName ea) throws SAXException {
super.leaveElement(state, ea);
try {
- acc.set(Stack.pop(target), Stack.pop(map));
+ acc.set(target.get(), map.get());
+ if (--depthCounter == 0) {
+ target.remove();
+ map.remove();
+ }
} catch (AccessorException ex) {
handleGenericException(ex,true);
}
@@ -286,36 +289,4 @@
return acc;
return null;
}
-
- private static final class Stack<T> {
- private Stack<T> parent;
- private T value;
-
- private Stack(Stack<T> parent, T value) {
- this.parent = parent;
- this.value = value;
- }
-
- private Stack(T value) {
- this.value = value;
- }
-
- private static <T> void push(ThreadLocal<Stack<T>> holder, T value) {
- Stack<T> parent = holder.get();
- if (parent == null)
- holder.set(new Stack<T>(value));
- else
- holder.set(new Stack<T>(parent, value));
- }
-
- private static <T> T pop(ThreadLocal<Stack<T>> holder) {
- Stack<T> current = holder.get();
- if (current.parent == null)
- holder.remove();
- else
- holder.set(current.parent);
- return current.value;
- }
-
- }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.bind.v2.runtime.property;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utils class.
+ * Has *package private* access to avoid inappropriate usage.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,7 +46,6 @@
import com.sun.xml.internal.bind.api.JAXBRIContext;
import com.sun.xml.internal.bind.v2.model.core.Adapter;
import com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
import com.sun.xml.internal.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader;
@@ -198,7 +197,7 @@
public final <T> Accessor<BeanT, T> adapt(Adapter<Type, Class> adapter) {
return new AdaptedAccessor<BeanT, ValueT, T>(
- (Class<T>) Navigator.REFLECTION.erasure(adapter.defaultType),
+ (Class<T>) Utils.REFLECTION_NAVIGATOR.erasure(adapter.defaultType),
this,
adapter.adapterType);
}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Lister.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Lister.java Tue Jan 28 11:21:43 2014 -0800
@@ -51,7 +51,6 @@
import com.sun.xml.internal.bind.v2.TODO;
import com.sun.xml.internal.bind.v2.model.core.Adapter;
import com.sun.xml.internal.bind.v2.model.core.ID;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.runtime.XMLSerializer;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.Patcher;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext;
@@ -116,7 +115,7 @@
public static <BeanT,PropT,ItemT,PackT>
Lister<BeanT,PropT,ItemT,PackT> create(Type fieldType,ID idness, Adapter<Type,Class> adapter) {
- Class rawType = Navigator.REFLECTION.erasure(fieldType);
+ Class rawType = (Class) Utils.REFLECTION_NAVIGATOR.erasure(fieldType);
Class itemType;
Lister l;
@@ -125,9 +124,9 @@
l = getArrayLister(itemType);
} else
if( Collection.class.isAssignableFrom(rawType) ) {
- Type bt = Navigator.REFLECTION.getBaseClass(fieldType,Collection.class);
+ Type bt = Utils.REFLECTION_NAVIGATOR.getBaseClass(fieldType,Collection.class);
if(bt instanceof ParameterizedType)
- itemType = Navigator.REFLECTION.erasure(((ParameterizedType)bt).getActualTypeArguments()[0]);
+ itemType = (Class) Utils.REFLECTION_NAVIGATOR.erasure(((ParameterizedType)bt).getActualTypeArguments()[0]);
else
itemType = Object.class;
l = new CollectionLister(getImplClass(rawType));
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/TransducedAccessor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/TransducedAccessor.java Tue Jan 28 11:21:43 2014 -0800
@@ -39,7 +39,6 @@
import com.sun.xml.internal.bind.api.AccessorException;
import com.sun.xml.internal.bind.v2.model.core.ID;
import com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder;
-import com.sun.xml.internal.bind.v2.model.nav.Navigator;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimeNonElementRef;
import com.sun.xml.internal.bind.v2.model.runtime.RuntimePropertyInfo;
import com.sun.xml.internal.bind.v2.runtime.Name;
@@ -144,8 +143,7 @@
if(prop.isCollection()) {
return new ListTransducedAccessorImpl(xducer,prop.getAccessor(),
- Lister.create(Navigator.REFLECTION.erasure(prop.getRawType()),prop.id(),
- prop.getAdapter()));
+ Lister.create(Utils.REFLECTION_NAVIGATOR.erasure(prop.getRawType()), prop.id(), prop.getAdapter()));
}
if(prop.id()==ID.IDREF)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.bind.v2.runtime.reflect;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utils class.
+ * Has *package private* access to avoid inappropriate usage.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/fault/SOAPFaultBuilder.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/fault/SOAPFaultBuilder.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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,6 +58,12 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.ReflectPermission;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.Permissions;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Level;
@@ -556,11 +562,40 @@
// ignore
}
captureStackTrace = tmpVal;
+ JAXB_CONTEXT = createJAXBContext();
+ }
- try {
- JAXB_CONTEXT = JAXBContext.newInstance(SOAP11Fault.class, SOAP12Fault.class);
- } catch (JAXBException e) {
- throw new Error(e); // this must be a bug in our code
+ private static JAXBContext createJAXBContext() {
+
+ // in jdk runtime doPrivileged is necessary since JAX-WS internal classes are in restricted packages
+ if (isJDKRuntime()) {
+ Permissions permissions = new Permissions();
+ permissions.add(new RuntimePermission("accessClassInPackage.com.sun." + "xml.internal.ws.fault"));
+ permissions.add(new ReflectPermission("suppressAccessChecks"));
+ return AccessController.doPrivileged(
+ new PrivilegedAction<JAXBContext>() {
+ @Override
+ public JAXBContext run() {
+ try {
+ return JAXBContext.newInstance(SOAP11Fault.class, SOAP12Fault.class);
+ } catch (JAXBException e) {
+ throw new Error(e);
+ }
+ }
+ },
+ new AccessControlContext(new ProtectionDomain[]{new ProtectionDomain(null, permissions)})
+ );
+
+ } else {
+ try {
+ return JAXBContext.newInstance(SOAP11Fault.class, SOAP12Fault.class);
+ } catch (JAXBException e) {
+ throw new Error(e);
+ }
}
}
+
+ private static boolean isJDKRuntime() {
+ return SOAPFaultBuilder.class.getName().contains("internal");
+ }
}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/RuntimeModeler.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/RuntimeModeler.java Tue Jan 28 11:21:43 2014 -0800
@@ -45,7 +45,6 @@
import com.sun.xml.internal.ws.resources.ModelerMessages;
import com.sun.xml.internal.ws.resources.ServerMessages;
import com.sun.xml.internal.ws.spi.db.BindingContext;
-import com.sun.xml.internal.ws.spi.db.BindingHelper;
import com.sun.xml.internal.ws.spi.db.TypeInfo;
import com.sun.xml.internal.ws.spi.db.WrapperComposite;
@@ -886,7 +885,7 @@
//set the actual type argument of Holder in the TypeReference
if (isHolder) {
if(clazzType==Holder.class){
- clazzType = BindingHelper.erasure(((ParameterizedType)genericParameterTypes[pos]).getActualTypeArguments()[0]);
+ clazzType = (Class) Utils.REFLECTION_NAVIGATOR.erasure(((ParameterizedType)genericParameterTypes[pos]).getActualTypeArguments()[0]);
}
}
Mode paramMode = isHolder ? Mode.INOUT : Mode.IN;
@@ -1101,7 +1100,7 @@
//set the actual type argument of Holder in the TypeReference
if (isHolder) {
if (clazzType==Holder.class)
- clazzType = BindingHelper.erasure(((ParameterizedType)genericParameterTypes[pos]).getActualTypeArguments()[0]);
+ clazzType = (Class) Utils.REFLECTION_NAVIGATOR.erasure(((ParameterizedType)genericParameterTypes[pos]).getActualTypeArguments()[0]);
}
Mode paramMode = isHolder ? Mode.INOUT : Mode.IN;
for (Annotation annotation : pannotations[pos]) {
@@ -1347,7 +1346,7 @@
//set the actual type argument of Holder in the TypeReference
if (isHolder) {
if (clazzType==Holder.class)
- clazzType = BindingHelper.erasure(((ParameterizedType)genericParameterTypes[pos]).getActualTypeArguments()[0]);
+ clazzType = (Class) Utils.REFLECTION_NAVIGATOR.erasure(((ParameterizedType)genericParameterTypes[pos]).getActualTypeArguments()[0]);
}
Mode paramMode = isHolder ? Mode.INOUT : Mode.IN;
@@ -1435,14 +1434,14 @@
private Class getAsyncReturnType(Method method, Class returnType) {
if(Response.class.isAssignableFrom(returnType)){
Type ret = method.getGenericReturnType();
- return BindingHelper.erasure(((ParameterizedType)ret).getActualTypeArguments()[0]);
+ return (Class) Utils.REFLECTION_NAVIGATOR.erasure(((ParameterizedType)ret).getActualTypeArguments()[0]);
}else{
Type[] types = method.getGenericParameterTypes();
Class[] params = method.getParameterTypes();
int i = 0;
for(Class cls : params){
if(AsyncHandler.class.isAssignableFrom(cls)){
- return BindingHelper.erasure(((ParameterizedType)types[i]).getActualTypeArguments()[0]);
+ return (Class) Utils.REFLECTION_NAVIGATOR.erasure(((ParameterizedType)types[i]).getActualTypeArguments()[0]);
}
i++;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.ws.model;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * 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.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/WrapperBeanGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/WrapperBeanGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -61,7 +61,7 @@
private static final AbstractWrapperBeanGenerator RUNTIME_GENERATOR =
new RuntimeWrapperBeanGenerator(new RuntimeInlineAnnotationReader(),
- Navigator.REFLECTION, FIELD_FACTORY);
+ (Navigator<java.lang.reflect.Type, Class, ?, Method>) Utils.REFLECTION_NAVIGATOR, FIELD_FACTORY);
private static final class RuntimeWrapperBeanGenerator extends AbstractWrapperBeanGenerator<java.lang.reflect.Type, Class, java.lang.reflect.Method, Field> {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/BindingHelper.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/BindingHelper.java Tue Jan 28 11:21:43 2014 -0800
@@ -136,10 +136,10 @@
* @since 2.0 FCS
*/
public static @Nullable Type getBaseType(@NotNull Type type, @NotNull Class baseType) {
- return Navigator.REFLECTION.getBaseClass(type,baseType);
+ return Utils.REFLECTION_NAVIGATOR.getBaseClass(type,baseType);
}
public static <T> Class<T> erasure(Type t) {
- return Navigator.REFLECTION.erasure(t);
+ return (Class<T>) Utils.REFLECTION_NAVIGATOR.erasure(t);
}
}
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/TypeInfo.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/TypeInfo.java Tue Jan 28 11:21:43 2014 -0800
@@ -119,12 +119,11 @@
// if we are to reinstitute this check, check JAXB annotations only
// assert annotations.length==0; // not designed to work with adapters.
Type t = (genericType != null)? genericType : type;
- Type base = Navigator.REFLECTION.getBaseClass(t, Collection.class);
+ Type base = Utils.REFLECTION_NAVIGATOR.getBaseClass(t, Collection.class);
if(base==null)
return this; // not a collection
- return new TypeInfo(tagName,
- Navigator.REFLECTION.getTypeArgument(base,0));
+ return new TypeInfo(tagName, Utils.REFLECTION_NAVIGATOR.getTypeArgument(base,0));
}
public Map<String, Object> properties() {
@@ -188,9 +187,9 @@
}
// if (type instanceof Class && java.util.Collection.class.isAssignableFrom((Class)type)) {
Type t = (genericType != null)? genericType : type;
- Type base = Navigator.REFLECTION.getBaseClass(t, Collection.class);
+ Type base = Utils.REFLECTION_NAVIGATOR.getBaseClass(t, Collection.class);
if ( base != null) {
- return new TypeInfo(tagName, Navigator.REFLECTION.getTypeArgument(base,0), annotations);
+ return new TypeInfo(tagName, Utils.REFLECTION_NAVIGATOR.getTypeArgument(base,0), annotations);
}
return null;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package com.sun.xml.internal.ws.spi.db;
+
+import com.sun.xml.internal.bind.v2.model.nav.Navigator;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * 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.
+ */
+/* package */ final class Utils {
+
+ private static final Logger LOGGER = Logger.getLogger(Utils.class.getName());
+
+ /**
+ * static ReflectionNavigator field to avoid usage of reflection every time we use it.
+ */
+ /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR;
+
+ static { // we statically initializing REFLECTION_NAVIGATOR property
+ Class refNav = null;
+ try {
+ refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator");
+ //noinspection unchecked
+ Method getInstance = refNav.getDeclaredMethod("getInstance");
+ getInstance.setAccessible(true);
+ //noinspection unchecked
+ REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) 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);
+ throw e;
+ }
+ }
+
+ /**
+ * private constructor to avoid util class instantiating
+ */
+ private Utils() {
+ }
+}
--- a/jaxws/src/share/jaxws_classes/javax/xml/bind/TypeConstraintException.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jaxws/src/share/jaxws_classes/javax/xml/bind/TypeConstraintException.java Tue Jan 28 11:21:43 2014 -0800
@@ -59,6 +59,7 @@
*/
private volatile Throwable linkedException;
+ static final long serialVersionUID = -3059799699420143848L;
/**
* Construct a TypeConstraintException with the specified detail message. The
--- a/jdk/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -243,3 +243,4 @@
e4499a6529e8c3e762ba86f45cdd774c92a8e7bc jdk8-b119
d31cd980e1da31fa496a359caaf1a165aeb5791a jdk8-b120
27b384262cba51dd0fe3e3534820189b46abc8cb jdk9-b00
+3b4ac8d1b76fc6bec9815f0ab714f15b552e4c7b jdk9-b01
--- a/jdk/make/CompileJavaClasses.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/CompileJavaClasses.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -274,11 +274,6 @@
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java
- # JObjC.jar contains 1.5 byte-code...so skip it here :-(
- # MACOSX_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/native/jobjc/src
- # EXCLUDES += tests/java/com/apple/jobjc
-
- EXCLUDES += com/apple/jobjc
endif
# The security classes should not end up in the classes directory as that will prevent them
@@ -354,44 +349,6 @@
##########################################################################################
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- #
- # JObjC.jar is compiled with BOOT_JAVAC which (may) not support the "-h" flag.
- # so we first compile classes with BOOT_JAVAC and then with JDK_JAVAC :-(
- #
- $(eval $(call SetupJavaCompiler,GENERATE_15BYTECODE, \
- JAVAC := $(JAVAC), \
- FLAGS := -source 1.5 -target 1.5 -g -bootclasspath $(BOOT_RTJAR) -cp $(JDK_OUTPUTDIR)/../langtools/dist/lib/classes.jar $(DISABLE_WARNINGS), \
- SERVER_DIR := $(SJAVAC_SERVER_DIR), \
- SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
-
- $(eval $(call SetupJavaCompilation,BUILD_JOBJC, \
- SETUP := GENERATE_15BYTECODE, \
- DISABLE_SJAVAC := true, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/java \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/java \
- $(JDK_OUTPUTDIR)/gensrc_jobjc/src, \
- INCLUDES := com/apple/jobjc, \
- EXCLUDES := tests/java/com/apple/jobjc, \
- BIN := $(JDK_OUTPUTDIR)/jobjc_classes, \
- JAR := $(JDK_OUTPUTDIR)/lib/JObjC.jar, \
- JARINDEX := true))
-
- $(BUILD_JOBJC): $(BUILD_JDK)
-
- $(eval $(call SetupJavaCompilation,BUILD_JOBJC_HEADERS, \
- SETUP := GENERATE_JDKBYTECODE, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/java \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/java \
- $(JDK_OUTPUTDIR)/gensrc_jobjc/src, \
- INCLUDES := com/apple/jobjc, \
- EXCLUDES := tests/java/com/apple/jobjc, \
- BIN := $(JDK_OUTPUTDIR)/jobjc_classes_headers, \
- HEADERS := $(JDK_OUTPUTDIR)/gensrc_headers_jobjc))
-
-$(BUILD_JOBJC_HEADERS): $(BUILD_JDK)
-
-endif
##########################################################################################
--- a/jdk/make/CompileLaunchers.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/CompileLaunchers.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -437,6 +437,7 @@
ifeq ($(OPENJDK_TARGET_OS), solaris)
UNPACKEXE_LANG := C++
endif
+UNPACKEXE_DEBUG_SYMBOLS := true
# On windows, unpack200 is linked completely differently to all other
# executables, using the compiler with the compiler arguments.
# It's also linked incrementally, producing a .ilk file that needs to
@@ -445,6 +446,9 @@
BUILD_UNPACKEXE_LDEXE := $(CC)
EXE_OUT_OPTION_save := $(EXE_OUT_OPTION)
EXE_OUT_OPTION := -Fe
+ # With the current way unpack200 is built, debug symbols aren't supported
+ # anyway.
+ UNPACKEXE_DEBUG_SYMBOLS :=
endif
$(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE, \
SRC := $(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack, \
@@ -474,7 +478,7 @@
-D "JDK_FNAME=unpack200.exe" \
-D "JDK_INTERNAL_NAME=unpack200" \
-D "JDK_FTYPE=0x1L", \
- DEBUG_SYMBOLS := true, \
+ DEBUG_SYMBOLS := $(UNPACKEXE_DEBUG_SYMBOLS), \
MANIFEST := $(JDK_TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest))
ifeq ($(OPENJDK_TARGET_OS), windows)
--- a/jdk/make/CreateJars.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/CreateJars.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -668,13 +668,6 @@
##########################################################################################
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- $(eval $(call SetupArchive,BUILD_JOBJC_JAR, , \
- SRCS := $(JDK_OUTPUTDIR)/jobjc_classes, \
- JAR := $(IMAGES_OUTPUTDIR)/lib/JObjC.jar, \
- JARINDEX := true))
-endif
-
# This file is imported from hotspot in Import.gmk. Copying it into images/lib so that
# all jars can be found in one place when creating images in Images.gmk. It needs to be
# done here so that clean targets can be simple and accurate.
--- a/jdk/make/GenerateSources.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/GenerateSources.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -85,11 +85,6 @@
include gensrc/GensrcSwing.gmk
GENSRC += $(GENSRC_SWING_BEANINFO) $(GENSRC_SWING_NIMBUS)
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- include gensrc/GensrcJObjC.gmk
- GENSRC += $(GENSRC_JOBJC)
-endif
-
$(GENSRC): $(BUILD_TOOLS)
all: $(GENSRC)
--- a/jdk/make/Images.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/Images.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -283,14 +283,13 @@
$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
$(MKDIR) -p $@
-# In the old build, JObjC.jar is not part of the meta-index
$(JRE_IMAGE_DIR)/lib/meta-index: $(JRE_LIB_TARGETS)
$(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index `$(LS) *.jar | $(SED) 's/JObjC\.jar//g'`
+ $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index *.jar
$(JDK_IMAGE_DIR)/jre/lib/meta-index: $(JDKJRE_LIB_TARGETS)
$(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index `$(LS) *.jar | $(SED) 's/JObjC\.jar//g'`
+ $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index *.jar
$(JRE_IMAGE_DIR)/lib/ext/meta-index: $(JRE_LIB_TARGETS)
$(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
--- a/jdk/make/Profiles.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/Profiles.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -105,10 +105,6 @@
ALL_JARS += $(IMAGES_OUTPUTDIR)/lib/ext/sunmscapi.jar
endif
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- ALL_JARS += $(IMAGES_OUTPUTDIR)/lib/JObjC.jar
-endif
-
ifeq ($(PROFILE), profile_1)
PROFILE_JARS := $(PROFILE_1_JARS)
else ifeq ($(PROFILE), profile_2)
--- a/jdk/make/Setup.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/Setup.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -27,7 +27,7 @@
# To build with all warnings enabled, do the following:
# make JAVAC_WARNINGS="-Xlint:all -Xmaxwarns 10000"
-JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,try,varargs -Werror
+JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,overloads,try,varargs -Werror
# Any java code executed during a JDK build to build other parts of the JDK must be
# executed by the bootstrap JDK (probably with -Xbootclasspath/p: ) and for this
--- a/jdk/make/data/mainmanifest/manifest.mf Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/data/mainmanifest/manifest.mf Tue Jan 28 11:21:43 2014 -0800
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Specification-Title: Java Platform API Specification
-Specification-Version: 1.8
+Specification-Version: 1.9
Specification-Vendor: Oracle Corporation
Implementation-Title: Java Runtime Environment
Implementation-Version: @@RELEASE@@
--- a/jdk/make/gensrc/GensrcSwing.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/gensrc/GensrcSwing.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -77,7 +77,7 @@
$(ECHO) Generating beaninfo
$(MKDIR) -p $(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing
$(JAVA) -Djava.awt.headless=true $(NEW_JAVADOC) \
- -sourcepath "$(JDK_TOPDIR)/src/share/classes$(PATH_SEP)$(JDK_OUTPUTDIR)/gensrc" \
+ -sourcepath "$(JDK_TOPDIR)/src/share/classes$(PATH_SEP)$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes$(PATH_SEP)$(JDK_OUTPUTDIR)/gensrc" \
-doclet build.tools.swingbeaninfo.GenDocletBeanInfo \
-x $(SWINGBEAN_DEBUG_FLAG) -d $(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing \
-t $(DOCLET_DATA_DIR)/SwingBeanInfo.template -docletpath $(JDK_OUTPUTDIR)/btclasses \
--- a/jdk/make/lib/CoreLibraries.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/lib/CoreLibraries.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -310,16 +310,6 @@
BUILD_LIBRARIES += $(BUILD_LIBUNPACK)
-ifeq ($(OPENJDK_TARGET_OS), windows)
- $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.map: $(BUILD_LIBUNPACK)
- $(ECHO) Copying $(@F)
- $(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX), %.map, $<) $@
-
- $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.pdb: $(BUILD_LIBUNPACK)
- $(ECHO) Copying $(@F)
- $(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX), %.pdb, $<) $@
-endif
-
##########################################################################################
BUILD_LIBJLI_SRC_DIRS := $(JDK_TOPDIR)/src/share/bin $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin
--- a/jdk/make/lib/NetworkingLibraries.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/lib/NetworkingLibraries.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -25,6 +25,7 @@
LIBNET_SRC_DIRS := $(JDK_TOPDIR)/src/share/native/java/net \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/net \
+ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/ \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/dns \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/spi
--- a/jdk/make/lib/PlatformLibraries.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/lib/PlatformLibraries.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -136,64 +136,6 @@
##########################################################################################
-ifeq ($(OPENJDK_TARGET_OS), macosx)
-
- $(eval $(call SetupNativeCompilation,BUILD_LIBJOBJC32, \
- LIBRARY := JObjC, \
- OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc32, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/native \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/native, \
- LANG := C, \
- OPTIMIZATION := LOW, \
- CFLAGS := -fpascal-strings \
- -fobjc-gc \
- -gdwarf-2 \
- $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers_jobjc \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- -m32, \
- LDFLAGS := $(LDFLAGS_JDKLIB) \
- -m32, \
- LDFLAGS_SUFFIX := -framework Foundation -framework JavaVM \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- -framework JavaNativeFoundation \
- -lffi, \
- OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc32, \
- DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-
- $(eval $(call SetupNativeCompilation,BUILD_LIBJOBJC64, \
- LIBRARY := JObjC, \
- OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc64, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/native \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/native, \
- LANG := C, \
- OPTIMIZATION := LOW, \
- CFLAGS := -fpascal-strings \
- -fobjc-gc \
- -gdwarf-2 \
- $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers_jobjc \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- , \
- LDFLAGS := -fpascal-strings \
- -fobjc-gc \
- -gdwarf-2 \
- $(LDFLAGS_JDKLIB) \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := -framework Foundation -framework JavaVM \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- -framework JavaNativeFoundation \
- -lffi, \
- OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc64, \
- DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-
- $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBRARY_SUFFIX): $(BUILD_LIBJOBJC32) $(BUILD_LIBJOBJC64)
- $(LIPO) -create -output $@ $(BUILD_LIBJOBJC32) $(BUILD_LIBJOBJC64)
-
- BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBRARY_SUFFIX)
-
-endif
-
-##########################################################################################
-
ifndef OPENJDK
ifeq ($(OPENJDK_TARGET_OS), windows)
--- a/jdk/make/mapfiles/libjava/mapfile-vers Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/mapfiles/libjava/mapfile-vers Tue Jan 28 11:21:43 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
@@ -273,7 +273,6 @@
Java_sun_misc_Version_getJdkSpecialVersion;
Java_sun_misc_Version_getJvmVersionInfo;
Java_sun_misc_Version_getJvmSpecialVersion;
- Java_sun_misc_VM_getThreadStateValues;
Java_sun_misc_VM_latestUserDefinedLoader;
Java_sun_misc_VM_initialize;
Java_sun_misc_VMSupport_initAgentProperties;
--- a/jdk/make/mapfiles/libnet/mapfile-vers Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/make/mapfiles/libnet/mapfile-vers Tue Jan 28 11:21:43 2014 -0800
@@ -86,6 +86,8 @@
Java_java_net_PlainSocketImpl_socketConnect;
Java_java_net_PlainDatagramSocketImpl_getTimeToLive;
Java_java_net_PlainDatagramSocketImpl_setTimeToLive;
+ Java_sun_net_PortConfig_getUpper0;
+ Java_sun_net_PortConfig_getLower0;
Java_sun_net_dns_ResolverConfigurationImpl_localDomain0;
Java_sun_net_dns_ResolverConfigurationImpl_fallbackDomain0;
Java_sun_net_sdp_SdpSupport_convert0;
--- a/jdk/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Tue Jan 28 11:21:43 2014 -0800
@@ -290,8 +290,8 @@
SplashUnlock(splash);
rc = poll(pfd, 1, timeout);
SplashLock(splash);
- if (splash->isVisible>0 && SplashTime() >= splash->time +
- splash->frames[splash->currentFrame].delay) {
+ if (splash->isVisible > 0 && splash->currentFrame >= 0 &&
+ SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) {
SplashNextFrame(splash);
SplashRedrawWindow(splash);
}
--- a/jdk/src/share/bin/java.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/bin/java.c Tue Jan 28 11:21:43 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
@@ -345,6 +345,13 @@
} \
} while (JNI_FALSE)
+#define CHECK_EXCEPTION_RETURN(CER_return_value) \
+ do { \
+ if ((*env)->ExceptionOccurred(env)) { \
+ return CER_return_value; \
+ } \
+ } while (JNI_FALSE)
+
int JNICALL
JavaMain(void * _args)
{
@@ -1233,8 +1240,9 @@
"checkAndLoadMain",
"(ZILjava/lang/String;)Ljava/lang/Class;"));
- str = NewPlatformString(env, name);
- result = (*env)->CallStaticObjectMethod(env, cls, mid, USE_STDERR, mode, str);
+ NULL_CHECK0(str = NewPlatformString(env, name));
+ NULL_CHECK0(result = (*env)->CallStaticObjectMethod(env, cls, mid,
+ USE_STDERR, mode, str));
if (JLI_IsTraceLauncher()) {
end = CounterGet();
@@ -1480,7 +1488,7 @@
NULL_CHECK(cls);
NULL_CHECK(showSettingsID = (*env)->GetStaticMethodID(env, cls,
"showSettings", "(ZLjava/lang/String;JJJZ)V"));
- joptString = (*env)->NewStringUTF(env, optString);
+ NULL_CHECK(joptString = (*env)->NewStringUTF(env, optString));
(*env)->CallStaticVoidMethod(env, cls, showSettingsID,
USE_STDERR,
joptString,
@@ -1521,31 +1529,35 @@
NULL_CHECK(printHelp = (*env)->GetStaticMethodID(env, cls,
"printHelpMessage", "(Z)V"));
- jprogname = (*env)->NewStringUTF(env, _program_name);
+ NULL_CHECK(jprogname = (*env)->NewStringUTF(env, _program_name));
/* Initialize the usage message with the usual preamble */
(*env)->CallStaticVoidMethod(env, cls, initHelp, jprogname);
+ CHECK_EXCEPTION_RETURN();
/* Assemble the other variant part of the usage */
if ((knownVMs[0].flag == VM_KNOWN) ||
(knownVMs[0].flag == VM_IF_SERVER_CLASS)) {
- vm1 = (*env)->NewStringUTF(env, knownVMs[0].name);
- vm2 = (*env)->NewStringUTF(env, knownVMs[0].name+1);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[0].name));
+ NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[0].name+1));
(*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2);
+ CHECK_EXCEPTION_RETURN();
}
for (i=1; i<knownVMsCount; i++) {
if (knownVMs[i].flag == VM_KNOWN) {
- vm1 = (*env)->NewStringUTF(env, knownVMs[i].name);
- vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
+ NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1));
(*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2);
+ CHECK_EXCEPTION_RETURN();
}
}
for (i=1; i<knownVMsCount; i++) {
if (knownVMs[i].flag == VM_ALIASED_TO) {
- vm1 = (*env)->NewStringUTF(env, knownVMs[i].name);
- vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
+ NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1));
(*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2);
+ CHECK_EXCEPTION_RETURN();
}
}
@@ -1558,8 +1570,9 @@
defaultVM = knownVMs[0].server_class+1;
}
- vm1 = (*env)->NewStringUTF(env, defaultVM);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, defaultVM));
(*env)->CallStaticVoidMethod(env, cls, vmErgo, isServerClassMachine, vm1);
+ CHECK_EXCEPTION_RETURN();
}
/* Complete the usage message and print to stderr*/
--- a/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java Tue Jan 28 11:21:43 2014 -0800
@@ -29,6 +29,7 @@
import java.beans.ExceptionListener;
import java.io.IOException;
+import java.io.StringReader;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
@@ -246,6 +247,14 @@
}
/**
+ * Disables any external entities.
+ */
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId) {
+ return new InputSource(new StringReader(""));
+ }
+
+ /**
* Prepares this handler to read objects from XML document.
*/
@Override
--- a/jdk/src/share/classes/com/sun/crypto/provider/TlsRsaPremasterSecretGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/crypto/provider/TlsRsaPremasterSecretGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
@@ -72,13 +72,17 @@
throw new IllegalStateException(
"TlsRsaPremasterSecretGenerator must be initialized");
}
- if (random == null) {
- random = new SecureRandom();
+ byte[] b = spec.getEncodedSecret();
+ if (b == null) {
+ if (random == null) {
+ random = new SecureRandom();
+ }
+ b = new byte[48];
+ random.nextBytes(b);
+ b[0] = (byte)spec.getMajorVersion();
+ b[1] = (byte)spec.getMinorVersion();
}
- byte[] b = new byte[48];
- random.nextBytes(b);
- b[0] = (byte)spec.getMajorVersion();
- b[1] = (byte)spec.getMinorVersion();
+
return new SecretKeySpec(b, "TlsRsaPremasterSecret");
}
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibEntry.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibEntry.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,17 +27,9 @@
// java imports
//
+import com.sun.jmx.snmp.SnmpDefinitions;
import java.io.Serializable;
-import java.util.Hashtable;
-import java.util.Enumeration;
-
-// jmx imports
-//
-import com.sun.jmx.snmp.SnmpValue;
-import com.sun.jmx.snmp.SnmpVarBind;
import com.sun.jmx.snmp.SnmpStatusException;
-import com.sun.jmx.snmp.agent.SnmpMibOid;
-import com.sun.jmx.snmp.agent.SnmpMibNode;
/**
* Represents a node in an SNMP MIB which corresponds to a table entry
@@ -99,7 +91,9 @@
*/
public void validateVarId(long arc, Object userData)
throws SnmpStatusException {
- if (isVariable(arc) == false) throw noSuchNameException;
+ if (isVariable(arc) == false) {
+ throw new SnmpStatusException(SnmpDefinitions.snmpRspNoSuchName);
+ }
}
/**
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibGroup.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibGroup.java Tue Jan 28 11:21:43 2014 -0800
@@ -108,8 +108,9 @@
*/
public void validateVarId(long arc, Object userData)
throws SnmpStatusException {
- if (isVariable(arc) == false)
- throw noSuchObjectException;
+ if (isVariable(arc) == false) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
}
@@ -360,17 +361,20 @@
validateVarId(arc, data);
// The trailing .0 is missing in the OID
- if (depth+2 > length)
- throw noSuchInstanceException;
+ if (depth+2 > length) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// There are too many arcs left in the OID (there should remain
// a single trailing .0)
- if (depth+2 < length)
- throw noSuchInstanceException;
+ if (depth+2 < length) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// The last trailing arc is not .0
- if (oid[depth+1] != 0L)
- throw noSuchInstanceException;
+ if (oid[depth+1] != 0L) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// It's one of our variable, register this node.
handlers.add(this,depth,varbind);
@@ -389,12 +393,13 @@
int length = oid.length;
SnmpMibNode node = null;
- if (handlers == null)
+ if (handlers == null) {
// This should be considered as a genErr, but we do not want to
// abort the whole request, so we're going to throw
// a noSuchObject...
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
final Object data = handlers.getUserData();
final int pduVersion = handlers.getRequestPduVersion();
@@ -430,7 +435,7 @@
depth+1,handlers,
checker);
}catch(SnmpStatusException ex) {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} finally {
checker.remove(depth);
}
@@ -455,7 +460,7 @@
try {
checker.checkCurrentOid();
} catch(SnmpStatusException e) {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} finally {
checker.remove(depth,2);
}
@@ -500,7 +505,7 @@
// The oid is not valid, we will throw an exception in order
// to try with the next valid identifier...
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} catch (SnmpStatusException e) {
// We didn't find anything at the given arc, so we're going
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibNode.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibNode.java Tue Jan 28 11:21:43 2014 -0800
@@ -155,7 +155,7 @@
long[] oid, int depth,
SnmpRequestTree handlers)
throws SnmpStatusException {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
}
/**
@@ -183,7 +183,7 @@
long[] oid, int pos, int depth,
SnmpRequestTree handlers, AcmChecker checker)
throws SnmpStatusException {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
}
/**
@@ -346,8 +346,9 @@
final int[] a = table;
final int val= (int) value;
- if (a == null)
- throw noSuchObjectException;
+ if (a == null) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
int low= 0;
int max= a.length;
@@ -356,11 +357,13 @@
// Basic check
//
- if (max < 1)
- throw noSuchObjectException;
+ if (max < 1) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
- if (a[max-1] <= val)
- throw noSuchObjectException;
+ if (a[max-1] <= val) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
while (low <= max) {
elmt= a[curr];
@@ -400,15 +403,4 @@
* Contains the list of variable identifiers.
*/
protected int[] varList;
-
- /**
- * Contains a predefined exception that is often fired when an
- * object is not found in the MIB.
- */
- static final protected SnmpStatusException noSuchInstanceException =
- new SnmpStatusException(SnmpStatusException.noSuchInstance);
- static final protected SnmpStatusException noSuchObjectException =
- new SnmpStatusException(SnmpStatusException.noSuchObject);
- static final protected SnmpStatusException noSuchNameException =
- new SnmpStatusException(SnmpDefinitions.snmpRspNoSuchName);
}
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibOid.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibOid.java Tue Jan 28 11:21:43 2014 -0800
@@ -160,12 +160,10 @@
if (depth > length) {
// Nothing is left... the oid is not valid
- throw noSuchObjectException;
-
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} else if (depth == length) {
// The oid is not complete...
- throw noSuchInstanceException;
-
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
} else {
// Some children variable or subobject is being querried
// getChild() will raise an exception if no child is found.
@@ -205,12 +203,13 @@
final int length = oid.length;
SnmpMibNode node = null;
long[] result = null;
- if (handlers == null)
+ if (handlers == null) {
// This should be considered as a genErr, but we do not want to
// abort the whole request, so we're going to throw
// a noSuchObject...
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
final Object data = handlers.getUserData();
final int pduVersion = handlers.getRequestPduVersion();
@@ -235,7 +234,7 @@
// SnmpOid result = null;
if (child == null) {
// shouldn't happen
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
// validateVarId(index);
// handlers.add(this,varbind,depth);
// result = new SnmpOid(0);
@@ -444,11 +443,13 @@
// first we need to retrieve the identifier in the list of children
//
final int pos= getInsertAt(id);
- if (pos >= nbChildren)
- throw noSuchObjectException;
+ if (pos >= nbChildren) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
- if (varList[pos] != (int) id)
- throw noSuchObjectException;
+ if (varList[pos] != (int) id) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
// Access the node
//
@@ -456,10 +457,11 @@
try {
child = children.elementAtNonSync(pos);
} catch(ArrayIndexOutOfBoundsException e) {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
}
- if (child == null)
- throw noSuchInstanceException;
+ if (child == null) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
return child;
}
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibTable.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibTable.java Tue Jan 28 11:21:43 2014 -0800
@@ -280,7 +280,7 @@
SnmpVarBind var;
for (Enumeration<SnmpVarBind> e= r.getElements(); e.hasMoreElements();) {
var = e.nextElement();
- r.registerGetException(var,noSuchInstanceException);
+ r.registerGetException(var,new SnmpStatusException(SnmpStatusException.noSuchInstance));
}
}
@@ -1607,8 +1607,9 @@
protected SnmpOid getNextOid(SnmpOid oid, Object userData)
throws SnmpStatusException {
- if (size == 0)
- throw noSuchInstanceException;
+ if (size == 0) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
final SnmpOid resOid = oid;
@@ -1619,7 +1620,7 @@
if (last.equals(resOid)) {
// Last element of the table ...
//
- throw noSuchInstanceException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
}
// First find the oid. This will allow to speed up retrieval process
@@ -1641,12 +1642,12 @@
// XX last = (SnmpOid) oids.elementAt(newPos);
last = tableoids[newPos];
} catch(ArrayIndexOutOfBoundsException e) {
- throw noSuchInstanceException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
}
} else {
// We are dealing with the last element of the table ..
//
- throw noSuchInstanceException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
}
@@ -1668,8 +1669,9 @@
*/
protected SnmpOid getNextOid(Object userData)
throws SnmpStatusException {
- if (size == 0)
- throw noSuchInstanceException;
+ if (size == 0) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// XX return (SnmpOid) oids.firstElement();
return tableoids[0];
}
@@ -1875,10 +1877,10 @@
// not support creation.
// We know that the entry does not exists if (isentry == false).
if (!hasEntry) {
- if (!handlers.isCreationAllowed())
+ if (!handlers.isCreationAllowed()) {
// we're not doing a set
- throw noSuchInstanceException;
- else if (!isCreationEnabled())
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ } else if (!isCreationEnabled())
// we're doing a set but creation is disabled.
throw new
SnmpStatusException(SnmpStatusException.snmpRspNoAccess);
@@ -1922,12 +1924,13 @@
int length = oid.length;
- if (handlers == null)
- // This should be considered as a genErr, but we do not want to
- // abort the whole request, so we're going to throw
- // a noSuchObject...
- //
- throw noSuchObjectException;
+ if (handlers == null) {
+ // This should be considered as a genErr, but we do not want to
+ // abort the whole request, so we're going to throw
+ // a noSuchObject...
+ //
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
final Object data = handlers.getUserData();
final int pduVersion = handlers.getRequestPduVersion();
@@ -1961,7 +1964,7 @@
// so we won't find the next element in this table... (any
// element in this table will have a smaller OID)
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} else if (oid[pos] < nodeId) {
// we must return the first leaf under the first columnar
// object, so we are back to our first case where pos was
@@ -2051,8 +2054,9 @@
// in tables can't be properly supported (all rows
// must have the same holes)
//
- if (skipEntryVariable(entryoid,var,data,pduVersion))
- throw noSuchObjectException;
+ if (skipEntryVariable(entryoid,var,data,pduVersion)) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
} catch(SnmpStatusException se) {
entryoid = getNextOid(data);
var = getNextVarEntryId(entryoid,var,data,pduVersion);
@@ -2085,8 +2089,9 @@
// So we throw the exception.
// => will skip to next node in the MIB tree.
//
- if (entryoid == null || var == -1 ) throw noSuchObjectException;
-
+ if (entryoid == null || var == -1 ) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
// So here we know both the row (entryoid) and the column (var)
//
@@ -2097,8 +2102,9 @@
// for this specific entry, it is not readable for any
// other entry => skip to next column.
//
- if (!isReadableEntryId(entryoid,var,data))
- throw noSuchObjectException;
+ if (!isReadableEntryId(entryoid,var,data)) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
// Prepare the result and the ACM checker.
//
@@ -2161,8 +2167,9 @@
// No need to continue, we throw an exception.
// => will skip to next node in the MIB tree.
//
- if (entryoid == null || var == -1 )
- throw noSuchObjectException;
+ if (entryoid == null || var == -1 ) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
}
}
@@ -2182,14 +2189,15 @@
// Control the length of the oid
//
- if (pos +2 >= length)
- throw noSuchInstanceException;
+ if (pos +2 >= length) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// Check that the entry identifier is specified
//
- if (oid[pos] != nodeId)
- throw noSuchObjectException;
-
+ if (oid[pos] != nodeId) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
}
// ----------------------------------------------------------------------
--- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpRequestHandler.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpRequestHandler.java Tue Jan 28 11:21:43 2014 -0800
@@ -1146,7 +1146,4 @@
static final private String InterruptSysCallMsg =
"Interrupted system call";
-
- static final private SnmpStatusException noSuchNameException =
- new SnmpStatusException(SnmpDefinitions.snmpRspNoSuchName) ;
}
--- a/jdk/src/share/classes/com/sun/management/VMOption.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/management/VMOption.java Tue Jan 28 11:21:43 2014 -0800
@@ -97,6 +97,11 @@
*/
ERGONOMIC,
/**
+ * The VM option was set using the attach framework.
+ * @since 1.9
+ */
+ ATTACH_ON_DEMAND,
+ /**
* The VM option was set via some other mechanism.
*/
OTHER
--- a/jdk/src/share/classes/com/sun/naming/internal/FactoryEnumeration.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/naming/internal/FactoryEnumeration.java Tue Jan 28 11:21:43 2014 -0800
@@ -56,9 +56,12 @@
* references so as not to prevent GC of the class loader. Each
* weak reference is tagged with the factory's class name so the
* class can be reloaded if the reference is cleared.
-
+ *
* @param factories A non-null list
* @param loader The class loader of the list's contents
+ *
+ * This internal method is used with Thread Context Class Loader (TCCL),
+ * please don't expose this method as public.
*/
FactoryEnumeration(List<NamedWeakReference<Object>> factories,
ClassLoader loader) {
@@ -79,7 +82,8 @@
try {
if (answer == null) { // reload class if weak ref cleared
- answer = Class.forName(className, true, loader);
+ Class<?> cls = Class.forName(className, true, loader);
+ answer = cls;
}
// Instantiate Class to get factory
answer = ((Class) answer).newInstance();
--- a/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java Tue Jan 28 11:21:43 2014 -0800
@@ -53,21 +53,24 @@
final class VersionHelper12 extends VersionHelper {
- private boolean getSystemPropsFailed = false;
-
- VersionHelper12() {} // Disallow external from creating one of these.
+ // Disallow external from creating one of these.
+ VersionHelper12() {
+ }
public Class<?> loadClass(String className) throws ClassNotFoundException {
- ClassLoader cl = getContextClassLoader();
- return Class.forName(className, true, cl);
+ return loadClass(className, getContextClassLoader());
}
/**
- * Package private.
- */
+ * Package private.
+ *
+ * This internal method is used with Thread Context Class Loader (TCCL),
+ * please don't expose this method as public.
+ */
Class<?> loadClass(String className, ClassLoader cl)
throws ClassNotFoundException {
- return Class.forName(className, true, cl);
+ Class<?> cls = Class.forName(className, true, cl);
+ return cls;
}
/**
@@ -75,13 +78,13 @@
* @param codebase A non-null, space-separated list of URL strings.
*/
public Class<?> loadClass(String className, String codebase)
- throws ClassNotFoundException, MalformedURLException {
- ClassLoader cl;
+ throws ClassNotFoundException, MalformedURLException {
ClassLoader parent = getContextClassLoader();
- cl = URLClassLoader.newInstance(getUrlArray(codebase), parent);
+ ClassLoader cl =
+ URLClassLoader.newInstance(getUrlArray(codebase), parent);
- return Class.forName(className, true, cl);
+ return loadClass(className, cl);
}
String getJndiProperty(final int i) {
@@ -99,16 +102,12 @@
}
String[] getJndiProperties() {
- if (getSystemPropsFailed) {
- return null; // after one failure, don't bother trying again
- }
Properties sysProps = AccessController.doPrivileged(
new PrivilegedAction<Properties>() {
public Properties run() {
try {
return System.getProperties();
} catch (SecurityException e) {
- getSystemPropsFailed = true;
return null;
}
}
@@ -173,17 +172,32 @@
return new InputStreamEnumeration(urls);
}
+ /**
+ * Package private.
+ *
+ * This internal method returns Thread Context Class Loader (TCCL),
+ * if null, returns the system Class Loader.
+ *
+ * Please don't expose this method as public.
+ */
ClassLoader getContextClassLoader() {
+
return AccessController.doPrivileged(
new PrivilegedAction<ClassLoader>() {
public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
+ ClassLoader loader =
+ Thread.currentThread().getContextClassLoader();
+ if (loader == null) {
+ // Don't use bootstrap class loader directly!
+ loader = ClassLoader.getSystemClassLoader();
+ }
+
+ return loader;
}
}
);
}
-
/**
* Given an enumeration of URLs, an instance of this class represents
* an enumeration of their InputStreams. Each operation on the URL
--- a/jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java Tue Jan 28 11:21:43 2014 -0800
@@ -276,6 +276,11 @@
*
* @throws IOException
* If some other I/O error occurs
+ *
+ * @throws SecurityException
+ * If a security manager has been installed and its
+ * {@link SecurityManager#checkListen checkListen} method denies
+ * the operation
*/
public abstract SctpChannel bind(SocketAddress local)
throws IOException;
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11.java Tue Jan 28 11:21:43 2014 -0800
@@ -382,7 +382,8 @@
} else if (!isVisible(xmlns)) {
//There is a definition but the xmlns is not selected by the xpath.
//then xmlns=""
- n = ns.addMappingAndRender(XMLNS, "", nullNode);
+ n = ns.addMappingAndRender(
+ XMLNS, "", getNullNode(xmlns.getOwnerDocument()));
}
//output the xmlns def if needed.
if (n != null) {
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315.java Tue Jan 28 11:21:43 2014 -0800
@@ -327,7 +327,8 @@
} else if (!isVisible(xmlns)) {
//There is a definition but the xmlns is not selected by the xpath.
//then xmlns=""
- n = ns.addMappingAndRender(XMLNS, "", nullNode);
+ n = ns.addMappingAndRender(
+ XMLNS, "", getNullNode(xmlns.getOwnerDocument()));
}
//output the xmlns def if needed.
if (n != null) {
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315Excl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315Excl.java Tue Jan 28 11:21:43 2014 -0800
@@ -292,7 +292,7 @@
if (xmlns != null && !isVisible(xmlns)) {
// There is a definition but the xmlns is not selected by the
// xpath. then xmlns=""
- ns.addMapping(XMLNS, "", nullNode);
+ ns.addMapping(XMLNS, "", getNullNode(xmlns.getOwnerDocument()));
}
String prefix = null;
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,8 +34,6 @@
import java.util.Map;
import java.util.Set;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
@@ -49,6 +47,7 @@
import org.w3c.dom.Attr;
import org.w3c.dom.Comment;
import org.w3c.dom.Element;
+import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
@@ -64,8 +63,9 @@
public static final String XMLNS = "xmlns";
protected static final AttrCompare COMPARE = new AttrCompare();
- protected static final Attr nullNode;
+ // Make sure you clone the following mutable arrays before passing to
+ // potentially untrusted objects such as OutputStreams.
private static final byte[] END_PI = {'?','>'};
private static final byte[] BEGIN_PI = {'<','?'};
private static final byte[] END_COMM = {'-','-','>'};
@@ -78,27 +78,17 @@
private static final byte[] LT = {'&','l','t',';'};
private static final byte[] END_TAG = {'<','/'};
private static final byte[] AMP = {'&','a','m','p',';'};
- private static final byte[] equalsStr = {'=','\"'};
+ private static final byte[] EQUALS_STR = {'=','\"'};
protected static final int NODE_BEFORE_DOCUMENT_ELEMENT = -1;
protected static final int NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT = 0;
protected static final int NODE_AFTER_DOCUMENT_ELEMENT = 1;
- static {
- // The null xmlns definition.
- try {
- DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- nullNode = documentBuilder.newDocument().createAttributeNS(Constants.NamespaceSpecNS, XMLNS);
- nullNode.setValue("");
- } catch (Exception e) {
- throw new RuntimeException("Unable to create nullNode: " + e);
- }
- }
-
private List<NodeFilter> nodeFilter;
private boolean includeComments;
private Set<Node> xpathNodeSet;
+
/**
* The node to be skipped/excluded from the DOM tree
* in subtree canonicalizations.
@@ -107,6 +97,11 @@
private OutputStream writer = new ByteArrayOutputStream();
/**
+ * The null xmlns definition.
+ */
+ private Attr nullNode;
+
+ /**
* Constructor CanonicalizerBase
*
* @param includeComments
@@ -310,7 +305,7 @@
writer.write('>');
sibling = currentNode.getFirstChild();
if (sibling == null) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeStringToUtf8(name, writer);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -328,7 +323,7 @@
break;
}
while (sibling == null && parentNode != null) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeByte(((Element)parentNode).getTagName(), writer, cache);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -488,7 +483,7 @@
if (sibling == null) {
if (currentNodeIsVisible) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeByte(name, writer, cache);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -510,7 +505,7 @@
}
while (sibling == null && parentNode != null) {
if (isVisible(parentNode)) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeByte(((Element)parentNode).getTagName(), writer, cache);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -641,8 +636,9 @@
parents.clear();
Attr nsprefix;
if (((nsprefix = ns.getMappingWithoutRendered(XMLNS)) != null)
- && "".equals(nsprefix.getValue())) {
- ns.addMappingAndRender(XMLNS, "", nullNode);
+ && "".equals(nsprefix.getValue())) {
+ ns.addMappingAndRender(
+ XMLNS, "", getNullNode(nsprefix.getOwnerDocument()));
}
}
@@ -696,7 +692,7 @@
) throws IOException {
writer.write(' ');
UtfHelpper.writeByte(name, writer, cache);
- writer.write(equalsStr);
+ writer.write(EQUALS_STR.clone());
byte[] toWrite;
final int length = value.length();
int i = 0;
@@ -706,27 +702,27 @@
switch (c) {
case '&' :
- toWrite = AMP;
+ toWrite = AMP.clone();
break;
case '<' :
- toWrite = LT;
+ toWrite = LT.clone();
break;
case '"' :
- toWrite = QUOT;
+ toWrite = QUOT.clone();
break;
case 0x09 : // '\t'
- toWrite = X9;
+ toWrite = X9.clone();
break;
case 0x0A : // '\n'
- toWrite = XA;
+ toWrite = XA.clone();
break;
case 0x0D : // '\r'
- toWrite = XD;
+ toWrite = XD.clone();
break;
default :
@@ -756,7 +752,7 @@
if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
writer.write('\n');
}
- writer.write(BEGIN_PI);
+ writer.write(BEGIN_PI.clone());
final String target = currentPI.getTarget();
int length = target.length();
@@ -764,7 +760,7 @@
for (int i = 0; i < length; i++) {
char c = target.charAt(i);
if (c == 0x0D) {
- writer.write(XD);
+ writer.write(XD.clone());
} else {
if (c < 0x80) {
writer.write(c);
@@ -784,14 +780,14 @@
for (int i = 0; i < length; i++) {
char c = data.charAt(i);
if (c == 0x0D) {
- writer.write(XD);
+ writer.write(XD.clone());
} else {
UtfHelpper.writeCharToUtf8(c, writer);
}
}
}
- writer.write(END_PI);
+ writer.write(END_PI.clone());
if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
writer.write('\n');
}
@@ -810,7 +806,7 @@
if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
writer.write('\n');
}
- writer.write(BEGIN_COMM);
+ writer.write(BEGIN_COMM.clone());
final String data = currentComment.getData();
final int length = data.length();
@@ -818,7 +814,7 @@
for (int i = 0; i < length; i++) {
char c = data.charAt(i);
if (c == 0x0D) {
- writer.write(XD);
+ writer.write(XD.clone());
} else {
if (c < 0x80) {
writer.write(c);
@@ -828,7 +824,7 @@
}
}
- writer.write(END_COMM);
+ writer.write(END_COMM.clone());
if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
writer.write('\n');
}
@@ -852,19 +848,19 @@
switch (c) {
case '&' :
- toWrite = AMP;
+ toWrite = AMP.clone();
break;
case '<' :
- toWrite = LT;
+ toWrite = LT.clone();
break;
case '>' :
- toWrite = GT;
+ toWrite = GT.clone();
break;
case 0xD :
- toWrite = XD;
+ toWrite = XD.clone();
break;
default :
@@ -879,4 +875,18 @@
}
}
+ // The null xmlns definition.
+ protected Attr getNullNode(Document ownerDocument) {
+ if (nullNode == null) {
+ try {
+ nullNode = ownerDocument.createAttributeNS(
+ Constants.NamespaceSpecNS, XMLNS);
+ nullNode.setValue("");
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to create nullNode: " + e);
+ }
+ }
+ return nullNode;
+ }
+
}
--- a/jdk/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -660,7 +660,7 @@
//Added the handling for Class tags to take care of maps
//Makes an entry into the map upon end of class tag
try{
- typeMap.put(Key_map,Class.forName(Value_map));
+ typeMap.put(Key_map,sun.reflect.misc.ReflectUtil.forName(Value_map));
}catch(ClassNotFoundException ex) {
throw new SAXException(MessageFormat.format(resBundle.handleGetObject("xmlrch.errmap").toString(), ex.getMessage()));
--- a/jdk/src/share/classes/java/awt/AWTEventMulticaster.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/AWTEventMulticaster.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, 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
@@ -609,6 +609,7 @@
* @param b window-state-listener-b
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static WindowStateListener add(WindowStateListener a,
WindowStateListener b) {
return (WindowStateListener)addInternal(a, b);
@@ -632,6 +633,7 @@
* @param a action-listener-a
* @param b action-listener-b
*/
+ @SuppressWarnings("overloads")
public static ActionListener add(ActionListener a, ActionListener b) {
return (ActionListener)addInternal(a, b);
}
@@ -642,6 +644,7 @@
* @param a item-listener-a
* @param b item-listener-b
*/
+ @SuppressWarnings("overloads")
public static ItemListener add(ItemListener a, ItemListener b) {
return (ItemListener)addInternal(a, b);
}
@@ -652,9 +655,11 @@
* @param a adjustment-listener-a
* @param b adjustment-listener-b
*/
+ @SuppressWarnings("overloads")
public static AdjustmentListener add(AdjustmentListener a, AdjustmentListener b) {
return (AdjustmentListener)addInternal(a, b);
}
+ @SuppressWarnings("overloads")
public static TextListener add(TextListener a, TextListener b) {
return (TextListener)addInternal(a, b);
}
@@ -676,6 +681,7 @@
* @param b hierarchy-listener-b
* @since 1.3
*/
+ @SuppressWarnings("overloads")
public static HierarchyListener add(HierarchyListener a, HierarchyListener b) {
return (HierarchyListener)addInternal(a, b);
}
@@ -698,6 +704,7 @@
* @param b mouse-wheel-listener-b
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static MouseWheelListener add(MouseWheelListener a,
MouseWheelListener b) {
return (MouseWheelListener)addInternal(a, b);
@@ -780,6 +787,7 @@
* @param oldl the window-state-listener being removed
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static WindowStateListener remove(WindowStateListener l,
WindowStateListener oldl) {
return (WindowStateListener) removeInternal(l, oldl);
@@ -803,6 +811,7 @@
* @param l action-listener-l
* @param oldl the action-listener being removed
*/
+ @SuppressWarnings("overloads")
public static ActionListener remove(ActionListener l, ActionListener oldl) {
return (ActionListener) removeInternal(l, oldl);
}
@@ -813,6 +822,7 @@
* @param l item-listener-l
* @param oldl the item-listener being removed
*/
+ @SuppressWarnings("overloads")
public static ItemListener remove(ItemListener l, ItemListener oldl) {
return (ItemListener) removeInternal(l, oldl);
}
@@ -823,9 +833,11 @@
* @param l adjustment-listener-l
* @param oldl the adjustment-listener being removed
*/
+ @SuppressWarnings("overloads")
public static AdjustmentListener remove(AdjustmentListener l, AdjustmentListener oldl) {
return (AdjustmentListener) removeInternal(l, oldl);
}
+ @SuppressWarnings("overloads")
public static TextListener remove(TextListener l, TextListener oldl) {
return (TextListener) removeInternal(l, oldl);
}
@@ -847,6 +859,7 @@
* @param oldl the hierarchy-listener being removed
* @since 1.3
*/
+ @SuppressWarnings("overloads")
public static HierarchyListener remove(HierarchyListener l, HierarchyListener oldl) {
return (HierarchyListener) removeInternal(l, oldl);
}
@@ -870,6 +883,7 @@
* @param oldl the mouse-wheel-listener being removed
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static MouseWheelListener remove(MouseWheelListener l,
MouseWheelListener oldl) {
return (MouseWheelListener) removeInternal(l, oldl);
--- a/jdk/src/share/classes/java/awt/Graphics2D.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/Graphics2D.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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,7 +44,7 @@
* control over geometry, coordinate transformations, color management,
* and text layout. This is the fundamental class for rendering
* 2-dimensional shapes, text and images on the Java(tm) platform.
- * <p>
+ *
* <h2>Coordinate Spaces</h2>
* All coordinates passed to a <code>Graphics2D</code> object are specified
* in a device-independent coordinate system called User Space, which is
@@ -229,7 +229,7 @@
*
* <h2>Default Rendering Attributes</h2>
* The default values for the <code>Graphics2D</code> rendering attributes are:
- * <dl compact>
+ * <dl>
* <dt><i><code>Paint</code></i>
* <dd>The color of the <code>Component</code>.
* <dt><i><code>Font</code></i>
@@ -351,7 +351,7 @@
* fill(new Rectangle(x, y, w, h));
* </pre>
* is called.
- * <p>
+ *
* <li>
* Similarly, for draw operations, including <code>drawLine</code>,
* <code>drawRect</code>, <code>drawRoundRect</code>,
@@ -363,7 +363,7 @@
* draw(new Rectangle(x, y, w, h));
* </pre>
* is called.
- * <p>
+ *
* <li>
* The <code>draw3DRect</code> and <code>fill3DRect</code> methods were
* implemented in terms of the <code>drawLine</code> and
--- a/jdk/src/share/classes/java/awt/MediaTracker.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/MediaTracker.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2013, 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,7 +65,7 @@
*
* <p>
* Here is an example of using <code>MediaTracker</code>:
- * <p>
+ *
* <hr><blockquote><pre>{@code
* import java.applet.Applet;
* import java.awt.Color;
--- a/jdk/src/share/classes/java/awt/Toolkit.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/Toolkit.java Tue Jan 28 11:21:43 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
@@ -2299,6 +2299,7 @@
super(a, b);
}
+ @SuppressWarnings("overloads")
static AWTEventListener add(AWTEventListener a,
AWTEventListener b) {
if (a == null) return b;
@@ -2306,6 +2307,7 @@
return new ToolkitEventMulticaster(a, b);
}
+ @SuppressWarnings("overloads")
static AWTEventListener remove(AWTEventListener l,
AWTEventListener oldl) {
return (AWTEventListener) removeInternal(l, oldl);
--- a/jdk/src/share/classes/java/awt/datatransfer/Clipboard.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/Clipboard.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, 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
@@ -54,7 +54,13 @@
String name;
+ /**
+ * The owner of the clipboard.
+ */
protected ClipboardOwner owner;
+ /**
+ * Contents of the clipboard.
+ */
protected Transferable contents;
/**
@@ -75,7 +81,7 @@
/**
* Creates a clipboard object.
- *
+ * @param name for the clipboard
* @see java.awt.Toolkit#getSystemClipboard
*/
public Clipboard(String name) {
@@ -84,6 +90,7 @@
/**
* Returns the name of this clipboard object.
+ * @return the name of this clipboard object
*
* @see java.awt.Toolkit#getSystemClipboard
*/
--- a/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, 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
@@ -1184,16 +1184,24 @@
/**
* Does the <code>DataFlavor</code> represent a serialized object?
+ * @return whether or not a serialized object is represented
*/
-
public boolean isMimeTypeSerializedObject() {
return isMimeTypeEqual(javaSerializedObjectMimeType);
}
+ /**
+ * Returns the default representation class.
+ * @return the default representation class
+ */
public final Class<?> getDefaultRepresentationClass() {
return ioInputStreamClass;
}
+ /**
+ * Returns the name of the default representation class.
+ * @return the name of the default representation class
+ */
public final String getDefaultRepresentationClassAsString() {
return getDefaultRepresentationClass().getName();
}
@@ -1201,8 +1209,9 @@
/**
* Does the <code>DataFlavor</code> represent a
* <code>java.io.InputStream</code>?
+ * @return whether or not this {@code DataFlavor} represent a
+ * {@code java.io.InputStream}
*/
-
public boolean isRepresentationClassInputStream() {
return ioInputStreamClass.isAssignableFrom(representationClass);
}
@@ -1211,6 +1220,9 @@
* Returns whether the representation class for this
* <code>DataFlavor</code> is <code>java.io.Reader</code> or a subclass
* thereof.
+ * @return whether or not the representation class for this
+ * {@code DataFlavor} is {@code java.io.Reader} or a subclass
+ * thereof
*
* @since 1.4
*/
@@ -1222,6 +1234,9 @@
* Returns whether the representation class for this
* <code>DataFlavor</code> is <code>java.nio.CharBuffer</code> or a
* subclass thereof.
+ * @return whether or not the representation class for this
+ * {@code DataFlavor} is {@code java.nio.CharBuffer} or a subclass
+ * thereof
*
* @since 1.4
*/
@@ -1233,6 +1248,9 @@
* Returns whether the representation class for this
* <code>DataFlavor</code> is <code>java.nio.ByteBuffer</code> or a
* subclass thereof.
+ * @return whether or not the representation class for this
+ * {@code DataFlavor} is {@code java.nio.ByteBuffer} or a subclass
+ * thereof
*
* @since 1.4
*/
@@ -1408,6 +1426,9 @@
*
* This method is never invoked by this implementation from 1.1 onwards.
*
+ * @param parameterName the parameter name
+ * @param parameterValue the parameter value
+ * @return the parameter value
* @deprecated
*/
@Deprecated
@@ -1424,6 +1445,8 @@
*
* This method is never invoked by this implementation from 1.1 onwards.
*
+ * @param mimeType the mime type
+ * @return the mime type
* @deprecated
*/
@Deprecated
--- a/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java Tue Jan 28 11:21:43 2014 -0800
@@ -57,6 +57,7 @@
/**
* Creates a <code>Transferable</code> capable of transferring
* the specified <code>String</code>.
+ * @param data the string to be transferred
*/
public StringSelection(String data) {
this.data = data;
--- a/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java Tue Jan 28 11:21:43 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
@@ -181,6 +181,7 @@
/**
* Returns the default FlavorMap for this thread's ClassLoader.
+ * @return the default FlavorMap for this thread's ClassLoader
*/
public static FlavorMap getDefaultFlavorMap() {
ClassLoader contextClassLoader =
@@ -1309,6 +1310,8 @@
* @param nat the <code>String</code> to decode
* @return the decoded <code>DataFlavor</code>, or <code>null</code> if
* nat is not an encoded <code>String</code> native
+ * @throws ClassNotFoundException if the class of the data flavor
+ * is not loaded
*/
public static DataFlavor decodeDataFlavor(String nat)
throws ClassNotFoundException
--- a/jdk/src/share/classes/java/awt/datatransfer/Transferable.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/Transferable.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2003, 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
@@ -62,6 +62,7 @@
* of the object returned is defined by the representation class of the flavor.
*
* @param flavor the requested flavor for the data
+ * @return an object which represents the data to be transferred
* @see DataFlavor#getRepresentationClass
* @exception IOException if the data is no longer available
* in the requested flavor.
--- a/jdk/src/share/classes/java/awt/dnd/DnDEventMulticaster.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/DnDEventMulticaster.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2007, 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
@@ -141,6 +141,7 @@
* @param a drag-source-motion-listener-a
* @param b drag-source-motion-listener-b
*/
+ @SuppressWarnings("overloads")
public static DragSourceMotionListener add(DragSourceMotionListener a,
DragSourceMotionListener b) {
return (DragSourceMotionListener)addInternal(a, b);
@@ -166,6 +167,7 @@
* @param l drag-source-motion-listener-l
* @param ol the drag-source-motion-listener being removed
*/
+ @SuppressWarnings("overloads")
public static DragSourceMotionListener remove(DragSourceMotionListener l,
DragSourceMotionListener ol) {
return (DragSourceMotionListener)removeInternal(l, ol);
--- a/jdk/src/share/classes/java/awt/dnd/DragSource.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/DragSource.java Tue Jan 28 11:21:43 2014 -0800
@@ -495,6 +495,7 @@
* and <code>DragGestureListener</code> on
* the newly created object.
* <P>
+ * @param <T> the type of {@code DragGestureRecognizer} to create
* @param recognizerAbstractClass the requested abstract type
* @param actions the permitted source drag actions
* @param c the <code>Component</code> target
@@ -669,6 +670,7 @@
* <code><em>Foo</em>Listener</code>s are registered using the
* <code>add<em>Foo</em>Listener</code> method.
*
+ * @param <T> the type of listener objects
* @param listenerType the type of listeners requested; this parameter
* should specify an interface that descends from
* <code>java.util.EventListener</code>
--- a/jdk/src/share/classes/java/awt/dnd/DropTarget.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/DropTarget.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, 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
@@ -566,6 +566,7 @@
* DropTargetContextPeer as a drag operation encounters this
* DropTarget. Accessing the Context while no Drag is current
* has undefined results.
+ * @return the DropTargetContext associated with this DropTarget
*/
protected DropTargetContext createDropTargetContext() {
@@ -766,9 +767,10 @@
/**
* create an embedded autoscroller
- * <P>
+ *
* @param c the <code>Component</code>
* @param p the <code>Point</code>
+ * @return an embedded autoscroller
*/
protected DropTargetAutoScroller createDropTargetAutoScroller(Component c, Point p) {
--- a/jdk/src/share/classes/java/awt/dnd/peer/DragSourceContextPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/peer/DragSourceContextPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2007, 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,18 +47,24 @@
/**
* start a drag
+ * @param dsc the DragSourceContext
+ * @param c the cursor
+ * @param dragImage the image to be dragged
+ * @param imageOffset the offset
*/
void startDrag(DragSourceContext dsc, Cursor c, Image dragImage, Point imageOffset) throws InvalidDnDOperationException;
/**
* return the current drag cursor
+ * @return the current drag cursor
*/
Cursor getCursor();
/**
* set the current drag cursor
+ * @param c the cursor
*/
void setCursor(Cursor c) throws InvalidDnDOperationException;
--- a/jdk/src/share/classes/java/awt/dnd/peer/DropTargetContextPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/peer/DropTargetContextPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2007, 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,35 +44,42 @@
/**
* update the peer's notion of the Target's actions
+ * @param actions the actions
*/
void setTargetActions(int actions);
/**
* get the current Target actions
+ * @return the current Target actions
*/
int getTargetActions();
/**
* get the DropTarget associated with this peer
+ * @return the DropTarget associated with this peer
*/
DropTarget getDropTarget();
/**
* get the (remote) DataFlavors from the peer
+ * @return the (remote) DataFlavors from the peer
*/
DataFlavor[] getTransferDataFlavors();
/**
* get an input stream to the remote data
+ * @return an input stream to the remote data
*/
Transferable getTransferable() throws InvalidDnDOperationException;
/**
+ * Return whether or not the DragSource Transferable is in the
+ * same JVM as the Target.
* @return if the DragSource Transferable is in the same JVM as the Target
*/
@@ -80,6 +87,7 @@
/**
* accept the Drag
+ * @param dragAction the drag action
*/
void acceptDrag(int dragAction);
@@ -92,6 +100,7 @@
/**
* accept the Drop
+ * @param dropAction the drop action
*/
void acceptDrop(int dropAction);
@@ -104,6 +113,7 @@
/**
* signal complete
+ * @param success the signal
*/
void dropComplete(boolean success);
--- a/jdk/src/share/classes/java/awt/event/AWTEventListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/AWTEventListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, 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
@@ -56,6 +56,7 @@
/**
* Invoked when an event is dispatched in the AWT.
+ * @param event the event to be processed
*/
public void eventDispatched(AWTEvent event);
--- a/jdk/src/share/classes/java/awt/event/ActionListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ActionListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -46,6 +46,7 @@
/**
* Invoked when an action occurs.
+ * @param e the event to be processed
*/
public void actionPerformed(ActionEvent e);
--- a/jdk/src/share/classes/java/awt/event/AdjustmentListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/AdjustmentListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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,7 @@
/**
* Invoked when the value of the adjustable has changed.
+ * @param e the event to be processed
*/
public void adjustmentValueChanged(AdjustmentEvent e);
--- a/jdk/src/share/classes/java/awt/event/ComponentListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ComponentListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -54,21 +54,25 @@
public interface ComponentListener extends EventListener {
/**
* Invoked when the component's size changes.
+ * @param e the event to be processed
*/
public void componentResized(ComponentEvent e);
/**
* Invoked when the component's position changes.
+ * @param e the event to be processed
*/
public void componentMoved(ComponentEvent e);
/**
* Invoked when the component has been made visible.
+ * @param e the event to be processed
*/
public void componentShown(ComponentEvent e);
/**
* Invoked when the component has been made invisible.
+ * @param e the event to be processed
*/
public void componentHidden(ComponentEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/ContainerListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ContainerListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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,11 +55,13 @@
public interface ContainerListener extends EventListener {
/**
* Invoked when a component has been added to the container.
+ * @param e the event to be processed
*/
public void componentAdded(ContainerEvent e);
/**
* Invoked when a component has been removed from the container.
+ * @param e the event to be processed
*/
public void componentRemoved(ContainerEvent e);
--- a/jdk/src/share/classes/java/awt/event/FocusListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/FocusListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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,11 +51,13 @@
/**
* Invoked when a component gains the keyboard focus.
+ * @param e the event to be processed
*/
public void focusGained(FocusEvent e);
/**
* Invoked when a component loses the keyboard focus.
+ * @param e the event to be processed
*/
public void focusLost(FocusEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/HierarchyBoundsListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/HierarchyBoundsListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -52,11 +52,13 @@
public interface HierarchyBoundsListener extends EventListener {
/**
* Called when an ancestor of the source is moved.
+ * @param e the event to be processed
*/
public void ancestorMoved(HierarchyEvent e);
/**
* Called when an ancestor of the source is resized.
+ * @param e the event to be processed
*/
public void ancestorResized(HierarchyEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/HierarchyListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/HierarchyListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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,6 +51,7 @@
* Called when the hierarchy has been changed. To discern the actual
* type of change, call <code>HierarchyEvent.getChangeFlags()</code>.
*
+ * @param e the event to be processed
* @see HierarchyEvent#getChangeFlags()
*/
public void hierarchyChanged(HierarchyEvent e);
--- a/jdk/src/share/classes/java/awt/event/InputEvent.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputEvent.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -233,7 +233,8 @@
* This limit is defined by the relevant number
* of buttons that may hypothetically exist on the mouse but it is greater than the
* {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}.
- * <p>
+ *
+ * @return a mask for an existing mouse button.
* @throws IllegalArgumentException if {@code button} is less than zero or greater than the number
* of button masks reserved for buttons
* @since 7.0
@@ -368,6 +369,7 @@
/**
* Returns whether or not the Shift modifier is down on this event.
+ * @return whether or not the Shift modifier is down on this event
*/
public boolean isShiftDown() {
return (modifiers & SHIFT_MASK) != 0;
@@ -375,6 +377,7 @@
/**
* Returns whether or not the Control modifier is down on this event.
+ * @return whether or not the Control modifier is down on this event
*/
public boolean isControlDown() {
return (modifiers & CTRL_MASK) != 0;
@@ -382,6 +385,7 @@
/**
* Returns whether or not the Meta modifier is down on this event.
+ * @return whether or not the Meta modifier is down on this event
*/
public boolean isMetaDown() {
return (modifiers & META_MASK) != 0;
@@ -389,6 +393,7 @@
/**
* Returns whether or not the Alt modifier is down on this event.
+ * @return whether or not the Alt modifier is down on this event
*/
public boolean isAltDown() {
return (modifiers & ALT_MASK) != 0;
@@ -396,6 +401,7 @@
/**
* Returns whether or not the AltGraph modifier is down on this event.
+ * @return whether or not the AltGraph modifier is down on this event
*/
public boolean isAltGraphDown() {
return (modifiers & ALT_GRAPH_MASK) != 0;
@@ -404,6 +410,7 @@
/**
* Returns the difference in milliseconds between the timestamp of when this event occurred and
* midnight, January 1, 1970 UTC.
+ * @return the difference in milliseconds between the timestamp and midnight, January 1, 1970 UTC
*/
public long getWhen() {
return when;
@@ -411,6 +418,7 @@
/**
* Returns the modifier mask for this event.
+ * @return the modifier mask for this event
*/
public int getModifiers() {
return modifiers & (JDK_1_3_MODIFIERS | HIGH_MODIFIERS);
@@ -451,6 +459,7 @@
* </PRE>
* The above code will work even if new modifiers are added.
*
+ * @return the extended modifier mask for this event
* @since 1.4
*/
public int getModifiersEx() {
@@ -467,6 +476,7 @@
/**
* Returns whether or not this event has been consumed.
+ * @return whether or not this event has been consumed
* @see #consume
*/
public boolean isConsumed() {
@@ -487,6 +497,9 @@
* Zero parameter means that no modifiers were passed and will
* cause the returning an empty string.
*
+ * @return a String describing the extended modifier keys and
+ * mouse buttons
+ *
* @param modifiers a modifier mask describing the extended
* modifier keys and mouse buttons for the event
* @return a text description of the combination of extended
--- a/jdk/src/share/classes/java/awt/event/InputMethodEvent.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputMethodEvent.java Tue Jan 28 11:21:43 2014 -0800
@@ -277,6 +277,7 @@
/**
* Gets the number of committed characters in the text.
+ * @return the number of committed characters in the text
*/
public int getCommittedCharacterCount() {
return committedCharacterCount;
--- a/jdk/src/share/classes/java/awt/event/InputMethodListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputMethodListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -40,17 +40,17 @@
* @see java.awt.im.InputMethodRequests
* @since 1.2
*/
-
public interface InputMethodListener extends EventListener {
/**
* Invoked when the text entered through an input method has changed.
+ * @param event the event to be processed
*/
void inputMethodTextChanged(InputMethodEvent event);
/**
* Invoked when the caret within composed text has changed.
+ * @param event the event to be processed
*/
void caretPositionChanged(InputMethodEvent event);
-
}
--- a/jdk/src/share/classes/java/awt/event/ItemListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ItemListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -50,6 +50,7 @@
* Invoked when an item has been selected or deselected by the user.
* The code written for this method performs the operations
* that need to occur when an item is selected (or deselected).
+ * @param e the event to be processed
*/
void itemStateChanged(ItemEvent e);
--- a/jdk/src/share/classes/java/awt/event/KeyEvent.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/KeyEvent.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -132,7 +132,7 @@
* <p>
* WARNING: Aside from those keys that are defined by the Java language
* (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_
- * constants. Sun reserves the right to change these values as needed
+ * constants. The platform steward reserves the right to change these values as needed
* to accommodate a wider range of keyboards in the future.
* <p>
* An unspecified behavior will be caused if the {@code id} parameter
@@ -194,21 +194,52 @@
/* Virtual key codes. */
+ /** Constant for the ENTER virtual key. */
public static final int VK_ENTER = '\n';
+
+ /** Constant for the BACK_SPACE virtual key. */
public static final int VK_BACK_SPACE = '\b';
+
+ /** Constant for the TAB virtual key. */
public static final int VK_TAB = '\t';
+
+ /** Constant for the CANCEL virtual key. */
public static final int VK_CANCEL = 0x03;
+
+ /** Constant for the CLEAR virtual key. */
public static final int VK_CLEAR = 0x0C;
+
+ /** Constant for the SHIFT virtual key. */
public static final int VK_SHIFT = 0x10;
+
+ /** Constant for the CONTROL virtual key. */
public static final int VK_CONTROL = 0x11;
+
+ /** Constant for the ALT virtual key. */
public static final int VK_ALT = 0x12;
+
+ /** Constant for the PAUSE virtual key. */
public static final int VK_PAUSE = 0x13;
+
+ /** Constant for the CAPS_LOCK virtual key. */
public static final int VK_CAPS_LOCK = 0x14;
+
+ /** Constant for the ESCAPE virtual key. */
public static final int VK_ESCAPE = 0x1B;
+
+ /** Constant for the SPACE virtual key. */
public static final int VK_SPACE = 0x20;
+
+ /** Constant for the PAGE_UP virtual key. */
public static final int VK_PAGE_UP = 0x21;
+
+ /** Constant for the PAGE_DOWN virtual key. */
public static final int VK_PAGE_DOWN = 0x22;
+
+ /** Constant for the END virtual key. */
public static final int VK_END = 0x23;
+
+ /** Constant for the HOME virtual key. */
public static final int VK_HOME = 0x24;
/**
@@ -257,15 +288,35 @@
public static final int VK_SLASH = 0x2F;
/** VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
+
+ /** Constant for the "0" key. */
public static final int VK_0 = 0x30;
+
+ /** Constant for the "1" key. */
public static final int VK_1 = 0x31;
+
+ /** Constant for the "2" key. */
public static final int VK_2 = 0x32;
+
+ /** Constant for the "3" key. */
public static final int VK_3 = 0x33;
+
+ /** Constant for the "4" key. */
public static final int VK_4 = 0x34;
+
+ /** Constant for the "5" key. */
public static final int VK_5 = 0x35;
+
+ /** Constant for the "6" key. */
public static final int VK_6 = 0x36;
+
+ /** Constant for the "7" key. */
public static final int VK_7 = 0x37;
+
+ /** Constant for the "8" key. */
public static final int VK_8 = 0x38;
+
+ /** Constant for the "9" key. */
public static final int VK_9 = 0x39;
/**
@@ -279,31 +330,83 @@
public static final int VK_EQUALS = 0x3D;
/** VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
+
+ /** Constant for the "A" key. */
public static final int VK_A = 0x41;
+
+ /** Constant for the "B" key. */
public static final int VK_B = 0x42;
+
+ /** Constant for the "C" key. */
public static final int VK_C = 0x43;
+
+ /** Constant for the "D" key. */
public static final int VK_D = 0x44;
+
+ /** Constant for the "E" key. */
public static final int VK_E = 0x45;
+
+ /** Constant for the "F" key. */
public static final int VK_F = 0x46;
+
+ /** Constant for the "G" key. */
public static final int VK_G = 0x47;
+
+ /** Constant for the "H" key. */
public static final int VK_H = 0x48;
+
+ /** Constant for the "I" key. */
public static final int VK_I = 0x49;
+
+ /** Constant for the "J" key. */
public static final int VK_J = 0x4A;
+
+ /** Constant for the "K" key. */
public static final int VK_K = 0x4B;
+
+ /** Constant for the "L" key. */
public static final int VK_L = 0x4C;
+
+ /** Constant for the "M" key. */
public static final int VK_M = 0x4D;
+
+ /** Constant for the "N" key. */
public static final int VK_N = 0x4E;
+
+ /** Constant for the "O" key. */
public static final int VK_O = 0x4F;
+
+ /** Constant for the "P" key. */
public static final int VK_P = 0x50;
+
+ /** Constant for the "Q" key. */
public static final int VK_Q = 0x51;
+
+ /** Constant for the "R" key. */
public static final int VK_R = 0x52;
+
+ /** Constant for the "S" key. */
public static final int VK_S = 0x53;
+
+ /** Constant for the "T" key. */
public static final int VK_T = 0x54;
+
+ /** Constant for the "U" key. */
public static final int VK_U = 0x55;
+
+ /** Constant for the "V" key. */
public static final int VK_V = 0x56;
+
+ /** Constant for the "W" key. */
public static final int VK_W = 0x57;
+
+ /** Constant for the "X" key. */
public static final int VK_X = 0x58;
+
+ /** Constant for the "Y" key. */
public static final int VK_Y = 0x59;
+
+ /** Constant for the "Z" key. */
public static final int VK_Z = 0x5A;
/**
@@ -321,17 +424,40 @@
*/
public static final int VK_CLOSE_BRACKET = 0x5D;
+ /** Constant for the number pad "0" key. */
public static final int VK_NUMPAD0 = 0x60;
+
+ /** Constant for the number pad "1" key. */
public static final int VK_NUMPAD1 = 0x61;
+
+ /** Constant for the number pad "2" key. */
public static final int VK_NUMPAD2 = 0x62;
+
+ /** Constant for the number pad "3" key. */
public static final int VK_NUMPAD3 = 0x63;
+
+ /** Constant for the number pad "4" key. */
public static final int VK_NUMPAD4 = 0x64;
+
+ /** Constant for the number pad "5" key. */
public static final int VK_NUMPAD5 = 0x65;
+
+ /** Constant for the number pad "6" key. */
public static final int VK_NUMPAD6 = 0x66;
+
+ /** Constant for the number pad "7" key. */
public static final int VK_NUMPAD7 = 0x67;
+
+ /** Constant for the number pad "8" key. */
public static final int VK_NUMPAD8 = 0x68;
+
+ /** Constant for the number pad "9" key. */
public static final int VK_NUMPAD9 = 0x69;
+
+ /** Constant for the number pad multiply key. */
public static final int VK_MULTIPLY = 0x6A;
+
+ /** Constant for the number pad add key. */
public static final int VK_ADD = 0x6B;
/**
@@ -347,11 +473,22 @@
*/
public static final int VK_SEPARATOR = VK_SEPARATER;
+ /** Constant for the number pad subtract key. */
public static final int VK_SUBTRACT = 0x6D;
+
+ /** Constant for the number pad decimal point key. */
public static final int VK_DECIMAL = 0x6E;
+
+ /** Constant for the number pad divide key. */
public static final int VK_DIVIDE = 0x6F;
+
+ /** Constant for the delete key. */
public static final int VK_DELETE = 0x7F; /* ASCII DEL */
+
+ /** Constant for the NUM_LOCK key. */
public static final int VK_NUM_LOCK = 0x90;
+
+ /** Constant for the SCROLL_LOCK key. */
public static final int VK_SCROLL_LOCK = 0x91;
/** Constant for the F1 function key. */
@@ -463,12 +600,22 @@
*/
public static final int VK_F24 = 0xF00B;
+ /** Constant for the PRINTSCREEN key. */
public static final int VK_PRINTSCREEN = 0x9A;
+
+ /** Constant for the INSERT key. */
public static final int VK_INSERT = 0x9B;
+
+ /** Constant for the HELP key. */
public static final int VK_HELP = 0x9C;
+
+ /** Constant for the META key. */
public static final int VK_META = 0x9D;
+ /** Constant for the BACK_QUOTE key. */
public static final int VK_BACK_QUOTE = 0xC0;
+
+ /** Constant for the QUOTE key. */
public static final int VK_QUOTE = 0xDE;
/**
@@ -638,6 +785,7 @@
/* for input method support on Asian Keyboards */
/* not clear what this means - listed in Microsoft Windows API */
+ /** Constant for the FINAL key. */
public static final int VK_FINAL = 0x0018;
/** Constant for the Convert function key. */
@@ -653,14 +801,23 @@
public static final int VK_ACCEPT = 0x001E;
/* not clear what this means - listed in Microsoft Windows API */
+ /** Constant for the MODECHANGE key. */
public static final int VK_MODECHANGE = 0x001F;
/* replaced by VK_KANA_LOCK for Microsoft Windows and Solaris;
might still be used on other platforms */
+ /**
+ * Constant for the KANA lock key.
+ * @see #VK_KANA_LOCK
+ **/
public static final int VK_KANA = 0x0015;
/* replaced by VK_INPUT_METHOD_ON_OFF for Microsoft Windows and Solaris;
might still be used for other platforms */
+ /**
+ * Constant for KANJI.
+ * @see #VK_INPUT_METHOD_ON_OFF
+ */
public static final int VK_KANJI = 0x0019;
/**
@@ -1085,7 +1242,25 @@
}
/**
- * @deprecated as of JDK1.1
+ * @deprecated as of JDK1.1; use {@link #KeyEvent(Component, int, long, int, int, char)} instead
+ * @param source The <code>Component</code> that originated the event
+ * @param id An integer indicating the type of event.
+ * For information on allowable values, see
+ * the class description for {@link KeyEvent}
+ * @param when A long integer that specifies the time the event
+ * occurred.
+ * Passing negative or zero value
+ * is not recommended
+ * @param modifiers The modifier keys down during event (shift, ctrl,
+ * alt, meta).
+ * Passing negative value
+ * is not recommended.
+ * Zero value means that no modifiers were passed.
+ * Use either an extended _DOWN_MASK or old _MASK modifiers,
+ * however do not mix models in the one event.
+ * The extended modifiers are preferred for using
+ * @param keyCode The integer code for an actual key, or VK_UNDEFINED
+ * (for a key-typed event)
*/
@Deprecated
public KeyEvent(Component source, int id, long when, int modifiers,
@@ -1184,6 +1359,7 @@
* Returns a String describing the keyCode, such as "HOME", "F1" or "A".
* These strings can be localized by changing the awt.properties file.
*
+ * @param keyCode the key whose description is to be returned
* @return a string containing a text description for a physical key,
* identified by its keyCode
*/
@@ -1376,6 +1552,7 @@
* <code>InputEvent.BUTTON3_MASK</code> have the same value,
* so the string "Meta" is returned for both modifiers.
*
+ * @param modifiers the modifier mask to be processed
* @return string a text description of the combination of modifier
* keys that were held down during the event
* @see InputEvent#getModifiersExText(int)
@@ -1612,8 +1789,8 @@
* Pressing the same key in a regular Russian layout gives another code, unique for the
* letter "Cyrillic I short".
*
+ * @return an extended key code for the event
* @since 1.7
- *
*/
public int getExtendedKeyCode() {
return (int)extendedKeyCode;
@@ -1621,6 +1798,7 @@
/**
* Returns an extended key code for a unicode character.
*
+ * @param c the unicode character to be processed
* @return for a unicode character with a corresponding {@code VK_} constant -- this
* {@code VK_} constant; for a character appearing on the primary
* level of a known keyboard layout -- a unique integer.
@@ -1628,7 +1806,6 @@
* {@code VK_UNDEFINED} is returned.
*
* @since 1.7
- *
*/
public static int getExtendedKeyCodeForChar(int c) {
// Return a keycode (if any) associated with a character.
--- a/jdk/src/share/classes/java/awt/event/KeyListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/KeyListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -54,6 +54,7 @@
* Invoked when a key has been typed.
* See the class description for {@link KeyEvent} for a definition of
* a key typed event.
+ * @param e the event to be processed
*/
public void keyTyped(KeyEvent e);
@@ -61,6 +62,7 @@
* Invoked when a key has been pressed.
* See the class description for {@link KeyEvent} for a definition of
* a key pressed event.
+ * @param e the event to be processed
*/
public void keyPressed(KeyEvent e);
@@ -68,6 +70,7 @@
* Invoked when a key has been released.
* See the class description for {@link KeyEvent} for a definition of
* a key released event.
+ * @param e the event to be processed
*/
public void keyReleased(KeyEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/MouseListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -59,26 +59,31 @@
/**
* Invoked when the mouse button has been clicked (pressed
* and released) on a component.
+ * @param e the event to be processed
*/
public void mouseClicked(MouseEvent e);
/**
* Invoked when a mouse button has been pressed on a component.
+ * @param e the event to be processed
*/
public void mousePressed(MouseEvent e);
/**
* Invoked when a mouse button has been released on a component.
+ * @param e the event to be processed
*/
public void mouseReleased(MouseEvent e);
/**
* Invoked when the mouse enters a component.
+ * @param e the event to be processed
*/
public void mouseEntered(MouseEvent e);
/**
* Invoked when the mouse exits a component.
+ * @param e the event to be processed
*/
public void mouseExited(MouseEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/MouseMotionListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseMotionListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -63,12 +63,14 @@
* Due to platform-dependent Drag&Drop implementations,
* <code>MOUSE_DRAGGED</code> events may not be delivered during a native
* Drag&Drop operation.
+ * @param e the event to be processed
*/
public void mouseDragged(MouseEvent e);
/**
* Invoked when the mouse cursor has been moved onto a component
* but no buttons have been pushed.
+ * @param e the event to be processed
*/
public void mouseMoved(MouseEvent e);
--- a/jdk/src/share/classes/java/awt/event/MouseWheelListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseWheelListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -52,6 +52,7 @@
/**
* Invoked when the mouse wheel is rotated.
+ * @param e the event to be processed
* @see MouseWheelEvent
*/
public void mouseWheelMoved(MouseWheelEvent e);
--- a/jdk/src/share/classes/java/awt/event/PaintEvent.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/PaintEvent.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -108,6 +108,8 @@
/**
* Returns the rectangle representing the area which needs to be
* repainted in response to this event.
+ * @return the rectangle representing the area which needs to be
+ * repainted in response to this event
*/
public Rectangle getUpdateRect() {
return updateRect;
--- a/jdk/src/share/classes/java/awt/event/TextListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/TextListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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,8 @@
* Invoked when the value of the text has changed.
* The code written for this method performs the operations
* that need to occur when text changes.
+ *
+ * @param e the event to be processed
*/
public void textValueChanged(TextEvent e);
--- a/jdk/src/share/classes/java/awt/event/WindowFocusListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/WindowFocusListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -57,6 +57,7 @@
* Invoked when the Window is set to be the focused Window, which means
* that the Window, or one of its subcomponents, will receive keyboard
* events.
+ * @param e the event to be processed
*/
public void windowGainedFocus(WindowEvent e);
@@ -64,6 +65,7 @@
* Invoked when the Window is no longer the focused Window, which means
* that keyboard events will no longer be delivered to the Window or any of
* its subcomponents.
+ * @param e the event to be processed
*/
public void windowLostFocus(WindowEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/WindowListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/WindowListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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,18 +51,21 @@
public interface WindowListener extends EventListener {
/**
* Invoked the first time a window is made visible.
+ * @param e the event to be processed
*/
public void windowOpened(WindowEvent e);
/**
* Invoked when the user attempts to close the window
* from the window's system menu.
+ * @param e the event to be processed
*/
public void windowClosing(WindowEvent e);
/**
* Invoked when a window has been closed as the result
* of calling dispose on the window.
+ * @param e the event to be processed
*/
public void windowClosed(WindowEvent e);
@@ -71,6 +74,7 @@
* minimized state. For many platforms, a minimized window
* is displayed as the icon specified in the window's
* iconImage property.
+ * @param e the event to be processed
* @see java.awt.Frame#setIconImage
*/
public void windowIconified(WindowEvent e);
@@ -78,6 +82,7 @@
/**
* Invoked when a window is changed from a minimized
* to a normal state.
+ * @param e the event to be processed
*/
public void windowDeiconified(WindowEvent e);
@@ -88,6 +93,7 @@
* as a highlighted title bar. The active Window is always either the
* focused Window, or the first Frame or Dialog that is an owner of the
* focused Window.
+ * @param e the event to be processed
*/
public void windowActivated(WindowEvent e);
@@ -98,6 +104,7 @@
* highlighted title bar. The active Window is always either the focused
* Window, or the first Frame or Dialog that is an owner of the focused
* Window.
+ * @param e the event to be processed
*/
public void windowDeactivated(WindowEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/WindowStateListener.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/WindowStateListener.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
@@ -50,6 +50,7 @@
public interface WindowStateListener extends EventListener {
/**
* Invoked when window state is changed.
+ * @param e the event to be processed
*/
public void windowStateChanged(WindowEvent e);
}
--- a/jdk/src/share/classes/java/awt/font/TextAttribute.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/font/TextAttribute.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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,7 +65,7 @@
* <LI>the valid values if there are limitations
* <LI>a description of the effect.
* </UL>
- * <p>
+ *
* <H3>Values</H3>
* <UL>
* <LI>The values of attributes must always be immutable.
@@ -95,7 +95,6 @@
* </UL>
*
* <h4>Summary of attributes</h4>
- * <p>
* <table style="float:center" border="0" cellspacing="0" cellpadding="2" width="%95"
* summary="Key, value type, principal constants, and default value
* behavior of all TextAttributes">
--- a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -457,8 +457,6 @@
* @param caps the buffer capabilities
*
* @throws AWTException if flip buffering is not supported
- *
- * @see Component.FlipBufferStrategy#createBuffers
*/
void createBuffers(int numBuffers, BufferCapabilities caps)
throws AWTException;
@@ -467,8 +465,6 @@
* Returns the back buffer as image.
*
* @return the back buffer as image
- *
- * @see Component.FlipBufferStrategy#getBackBuffer
*/
Image getBackBuffer();
@@ -480,15 +476,11 @@
* @param x2 the area to be flipped, lower right X coordinate
* @param y2 the area to be flipped, lower right Y coordinate
* @param flipAction the flip action to perform
- *
- * @see Component.FlipBufferStrategy#flip
*/
void flip(int x1, int y1, int x2, int y2, BufferCapabilities.FlipContents flipAction);
/**
* Destroys all created buffers.
- *
- * @see Component.FlipBufferStrategy#destroyBuffers
*/
void destroyBuffers();
--- a/jdk/src/share/classes/java/awt/peer/DialogPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/DialogPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -64,7 +64,6 @@
* @param windows the windows to block
*
* @see Dialog#modalShow()
- * @see Dialog#blockWindows()
*/
void blockWindows(java.util.List<Window> windows);
}
--- a/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -26,6 +26,7 @@
package java.awt.peer;
import java.awt.Component;
+import java.awt.KeyboardFocusManager;
import java.awt.Window;
/**
@@ -71,7 +72,7 @@
/**
* Clears the current global focus owner.
*
- * @param activeWindow
+ * @param activeWindow the active window
*
* @see KeyboardFocusManager#clearGlobalFocusOwner()
*/
--- a/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -29,8 +29,8 @@
import java.awt.Point;
/**
- * Peer interface for {@link MouseInfo}. This is used to get some additional
- * information about the mouse.
+ * Peer interface for {@link java.awt.MouseInfo}. This is used to get
+ * some additional information about the mouse.
*
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
--- a/jdk/src/share/classes/java/awt/peer/PanelPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/PanelPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2013, 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,7 +25,7 @@
package java.awt.peer;
/**
- * The peer interface for {@link Panel}. This is a subinterface of
+ * The peer interface for {@link java.awt.Panel}. This is a subinterface of
* ContainerPeer and does not declare any additional methods because a Panel
* is just that, a concrete Container.
*
--- a/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2013, 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 @@
import java.awt.TextArea;
/**
- * The peer interface for {@link TexTArea}.
+ * The peer interface for {@link TextArea}.
*
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
--- a/jdk/src/share/classes/java/awt/peer/WindowPeer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/WindowPeer.java Tue Jan 28 11:21:43 2014 -0800
@@ -57,7 +57,7 @@
* Sets if the window should always stay
* on top of all other windows or not.
*
- * @see Window#getAlwaysOnTop()
+ * @see Window#isAlwaysOnTop()
* @see Window#setAlwaysOnTop(boolean)
*/
void updateAlwaysOnTopState();
--- a/jdk/src/share/classes/java/awt/print/Paper.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/print/Paper.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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,6 @@
* are compatible. For example, if the paper size is changed from
* 11 x 17 to 8.5 x 11, the application might need to reduce the
* imageable area so that whatever is printed fits on the page.
- * <p>
* @see #setSize(double, double)
* @see #setImageableArea(double, double, double, double)
*/
--- a/jdk/src/share/classes/java/awt/print/Printable.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/awt/print/Printable.java Tue Jan 28 11:21:43 2014 -0800
@@ -94,7 +94,6 @@
* <code>Pageable</code> then the client may provide different PageFormats
* for each page index. Calculations of page breaks must account for this.
* </ul>
- * <p>
* @see java.awt.print.Pageable
* @see java.awt.print.PageFormat
* @see java.awt.print.PrinterJob
--- a/jdk/src/share/classes/java/beans/XMLEncoder.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/beans/XMLEncoder.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -150,7 +150,6 @@
* Although all object graphs may be written using just these three
* tags, the following definitions are included so that common
* data structures can be expressed more concisely:
- * <p>
* <ul>
* <li>
* The default method name is "new".
--- a/jdk/src/share/classes/java/beans/beancontext/BeanContextSupport.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/beans/beancontext/BeanContextSupport.java Tue Jan 28 11:21:43 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
@@ -351,7 +351,8 @@
* methods that add children to the set.
* </p>
* @param targetChild the child to create the Child on behalf of
- * @param peer the peer if the tragetChild and the peer are related by an implementation of BeanContextProxy * @return Subtype-specific subclass of Child without overriding collection methods
+ * @param peer the peer if the tragetChild and the peer are related by an implementation of BeanContextProxy
+ * @return Subtype-specific subclass of Child without overriding collection methods
*/
protected BCSChild createBCSChild(Object targetChild, Object peer) {
--- a/jdk/src/share/classes/java/lang/Double.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/Double.java Tue Jan 28 11:21:43 2014 -0800
@@ -833,14 +833,10 @@
* @return the bits that represent the floating-point number.
*/
public static long doubleToLongBits(double value) {
- long result = doubleToRawLongBits(value);
- // Check for NaN based on values of bit fields, maximum
- // exponent and nonzero significand.
- if ( ((result & DoubleConsts.EXP_BIT_MASK) ==
- DoubleConsts.EXP_BIT_MASK) &&
- (result & DoubleConsts.SIGNIF_BIT_MASK) != 0L)
- result = 0x7ff8000000000000L;
- return result;
+ if (!isNaN(value)) {
+ return doubleToRawLongBits(value);
+ }
+ return 0x7ff8000000000000L;
}
/**
--- a/jdk/src/share/classes/java/lang/Float.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/Float.java Tue Jan 28 11:21:43 2014 -0800
@@ -741,14 +741,10 @@
* @return the bits that represent the floating-point number.
*/
public static int floatToIntBits(float value) {
- int result = floatToRawIntBits(value);
- // Check for NaN based on values of bit fields, maximum
- // exponent and nonzero significand.
- if ( ((result & FloatConsts.EXP_BIT_MASK) ==
- FloatConsts.EXP_BIT_MASK) &&
- (result & FloatConsts.SIGNIF_BIT_MASK) != 0)
- result = 0x7fc00000;
- return result;
+ if (!isNaN(value)) {
+ return floatToRawIntBits(value);
+ }
+ return 0x7fc00000;
}
/**
--- a/jdk/src/share/classes/java/lang/Long.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/Long.java Tue Jan 28 11:21:43 2014 -0800
@@ -700,21 +700,58 @@
throw new NumberFormatException("Bad digit at end of " + s);
}
long result = first * radix + second;
- if (compareUnsigned(result, first) < 0) {
+
+ /*
+ * Test leftmost bits of multiprecision extension of first*radix
+ * for overflow. The number of bits needed is defined by
+ * GUARD_BIT = ceil(log2(Character.MAX_RADIX)) + 1 = 7. Then
+ * int guard = radix*(int)(first >>> (64 - GUARD_BIT)) and
+ * overflow is tested by splitting guard in the ranges
+ * guard < 92, 92 <= guard < 128, and 128 <= guard, where
+ * 92 = 128 - Character.MAX_RADIX. Note that guard cannot take
+ * on a value which does not include a prime factor in the legal
+ * radix range.
+ */
+ int guard = radix * (int) (first >>> 57);
+ if (guard >= 128 ||
+ (result >= 0 && guard >= 128 - Character.MAX_RADIX)) {
/*
- * The maximum unsigned value, (2^64)-1, takes at
- * most one more digit to represent than the
- * maximum signed value, (2^63)-1. Therefore,
- * parsing (len - 1) digits will be appropriately
- * in-range of the signed parsing. In other
- * words, if parsing (len -1) digits overflows
- * signed parsing, parsing len digits will
- * certainly overflow unsigned parsing.
+ * For purposes of exposition, the programmatic statements
+ * below should be taken to be multi-precision, i.e., not
+ * subject to overflow.
+ *
+ * A) Condition guard >= 128:
+ * If guard >= 128 then first*radix >= 2^7 * 2^57 = 2^64
+ * hence always overflow.
+ *
+ * B) Condition guard < 92:
+ * Define left7 = first >>> 57.
+ * Given first = (left7 * 2^57) + (first & (2^57 - 1)) then
+ * result <= (radix*left7)*2^57 + radix*(2^57 - 1) + second.
+ * Thus if radix*left7 < 92, radix <= 36, and second < 36,
+ * then result < 92*2^57 + 36*(2^57 - 1) + 36 = 2^64 hence
+ * never overflow.
*
- * The compareUnsigned check above catches
- * situations where an unsigned overflow occurs
- * incorporating the contribution of the final
- * digit.
+ * C) Condition 92 <= guard < 128:
+ * first*radix + second >= radix*left7*2^57 + second
+ * so that first*radix + second >= 92*2^57 + 0 > 2^63
+ *
+ * D) Condition guard < 128:
+ * radix*first <= (radix*left7) * 2^57 + radix*(2^57 - 1)
+ * so
+ * radix*first + second <= (radix*left7) * 2^57 + radix*(2^57 - 1) + 36
+ * thus
+ * radix*first + second < 128 * 2^57 + 36*2^57 - radix + 36
+ * whence
+ * radix*first + second < 2^64 + 2^6*2^57 = 2^64 + 2^63
+ *
+ * E) Conditions C, D, and result >= 0:
+ * C and D combined imply the mathematical result
+ * 2^63 < first*radix + second < 2^64 + 2^63. The lower
+ * bound is therefore negative as a signed long, but the
+ * upper bound is too small to overflow again after the
+ * signed long overflows to positive above 2^64 - 1. Hence
+ * result >= 0 implies overflow given C and D.
*/
throw new NumberFormatException(String.format("String value %s exceeds " +
"range of unsigned long.", s));
--- a/jdk/src/share/classes/java/lang/SecurityManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/SecurityManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -1106,11 +1106,8 @@
* calling thread is not allowed to wait for a connection request on
* the specified local port number.
* <p>
- * If port is not 0, this method calls
- * <code>checkPermission</code> with the
+ * This method calls <code>checkPermission</code> with the
* <code>SocketPermission("localhost:"+port,"listen")</code>.
- * If port is zero, this method calls <code>checkPermission</code>
- * with <code>SocketPermission("localhost:1024-","listen").</code>
* <p>
* If you override this method, then you should make a call to
* <code>super.checkListen</code>
@@ -1123,12 +1120,8 @@
* @see #checkPermission(java.security.Permission) checkPermission
*/
public void checkListen(int port) {
- if (port == 0) {
- checkPermission(SecurityConstants.LOCAL_LISTEN_PERMISSION);
- } else {
- checkPermission(new SocketPermission("localhost:"+port,
- SecurityConstants.SOCKET_LISTEN_ACTION));
- }
+ checkPermission(new SocketPermission("localhost:"+port,
+ SecurityConstants.SOCKET_LISTEN_ACTION));
}
/**
--- a/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java Tue Jan 28 11:21:43 2014 -0800
@@ -611,7 +611,7 @@
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKESPECIAL, BMH, "<init>", makeSignature("", true));
+ mv.visitMethodInsn(INVOKESPECIAL, BMH, "<init>", makeSignature("", true), false);
for (int i = 0, j = 0; i < types.length(); ++i, ++j) {
// i counts the arguments, j counts corresponding argument slots
@@ -662,7 +662,7 @@
// put fields on the stack
emitPushFields(types, className, mv);
// finally, invoke the constructor and return
- mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false));
+ mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false), false);
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
@@ -678,7 +678,7 @@
int iconstInsn = ICONST_0 + extensionIndex(t);
assert(iconstInsn <= ICONST_5);
mv.visitInsn(iconstInsn);
- mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG);
+ mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG, false);
mv.visitFieldInsn(GETFIELD, SPECIES_DATA, "constructor", "[" + MH_SIG);
mv.visitInsn(ICONST_0);
mv.visitInsn(AALOAD);
@@ -690,7 +690,7 @@
// put narg on stack
mv.visitVarInsn(typeLoadOp(t), 3);
// finally, invoke the constructor and return
- mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false));
+ mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false), false);
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
@@ -701,7 +701,7 @@
mv.visitCode();
mv.visitLdcInsn(types);
mv.visitLdcInsn(Type.getObjectType(className));
- mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG);
+ mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG, false);
mv.visitFieldInsn(PUTSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG);
mv.visitInsn(RETURN);
mv.visitMaxs(0, 0);
--- a/jdk/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Tue Jan 28 11:21:43 2014 -0800
@@ -193,10 +193,10 @@
CallSite buildCallSite() throws LambdaConversionException {
final Class<?> innerClass = spinInnerClass();
if (invokedType.parameterCount() == 0) {
- final Constructor[] ctrs = AccessController.doPrivileged(
- new PrivilegedAction<Constructor[]>() {
+ final Constructor<?>[] ctrs = AccessController.doPrivileged(
+ new PrivilegedAction<Constructor<?>[]>() {
@Override
- public Constructor[] run() {
+ public Constructor<?>[] run() {
Constructor<?>[] ctrs = innerClass.getDeclaredConstructors();
if (ctrs.length == 1) {
// The lambda implementing inner class constructor is private, set
@@ -338,7 +338,7 @@
m.visitVarInsn(getLoadOpcode(argType), varIndex);
varIndex += getParameterSize(argType);
}
- m.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString());
+ m.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString(), false);
m.visitInsn(ARETURN);
m.visitMaxs(-1, -1);
m.visitEnd();
@@ -354,7 +354,7 @@
ctor.visitCode();
ctor.visitVarInsn(ALOAD, 0);
ctor.visitMethodInsn(INVOKESPECIAL, JAVA_LANG_OBJECT, NAME_CTOR,
- METHOD_DESCRIPTOR_VOID);
+ METHOD_DESCRIPTOR_VOID, false);
int parameterCount = invokedType.parameterCount();
for (int i = 0, lvIndex = 0; i < parameterCount; i++) {
ctor.visitVarInsn(ALOAD, 0);
@@ -402,7 +402,7 @@
mv.visitInsn(AASTORE);
}
mv.visitMethodInsn(INVOKESPECIAL, NAME_SERIALIZED_LAMBDA, NAME_CTOR,
- DESCR_CTOR_SERIALIZED_LAMBDA);
+ DESCR_CTOR_SERIALIZED_LAMBDA, false);
mv.visitInsn(ARETURN);
// Maxs computed by ClassWriter.COMPUTE_MAXS, these arguments ignored
mv.visitMaxs(-1, -1);
@@ -421,7 +421,7 @@
mv.visitInsn(DUP);
mv.visitLdcInsn("Non-serializable lambda");
mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR,
- DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION);
+ DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false);
mv.visitInsn(ATHROW);
mv.visitMaxs(-1, -1);
mv.visitEnd();
@@ -434,7 +434,7 @@
mv.visitInsn(DUP);
mv.visitLdcInsn("Non-serializable lambda");
mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR,
- DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION);
+ DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false);
mv.visitInsn(ATHROW);
mv.visitMaxs(-1, -1);
mv.visitEnd();
--- a/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -403,7 +403,7 @@
String owner = "java/lang/" + wrapper.wrapperType().getSimpleName();
String name = "valueOf";
String desc = "(" + wrapper.basicTypeChar() + ")L" + owner + ";";
- mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, false);
}
/**
@@ -417,7 +417,7 @@
String name = wrapper.primitiveSimpleName() + "Value";
String desc = "()" + wrapper.basicTypeChar();
mv.visitTypeInsn(Opcodes.CHECKCAST, owner);
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc);
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc, false);
}
/**
@@ -437,7 +437,7 @@
mv.visitLdcInsn(constantPlaceholder(pclass));
mv.visitTypeInsn(Opcodes.CHECKCAST, CLS);
mv.visitInsn(Opcodes.SWAP);
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG);
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG, false);
if (pclass.isArray())
mv.visitTypeInsn(Opcodes.CHECKCAST, OBJARY);
}
@@ -570,7 +570,7 @@
// invocation
MethodType type = name.function.methodType();
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString());
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString(), false);
}
static private Class<?>[] STATICALLY_INVOCABLE_PACKAGES = {
@@ -638,6 +638,12 @@
refKind = REF_invokeVirtual;
}
+ if (member.getDeclaringClass().isInterface() && refKind == REF_invokeVirtual) {
+ // Methods from Object declared in an interface can be resolved by JVM to invokevirtual kind.
+ // Need to convert it back to invokeinterface to pass verification and make the invocation works as expected.
+ refKind = REF_invokeInterface;
+ }
+
// push arguments
for (int i = 0; i < name.arguments.length; i++) {
emitPushArgument(name, i);
@@ -938,7 +944,7 @@
emitAloadInsn(0);
mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", "Ljava/lang/invoke/LambdaForm;");
mv.visitInsn(Opcodes.SWAP); // swap form and array; avoid local variable
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;");
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;", false);
// maybe unbox
Class<?> rtype = invokerType.returnType();
@@ -1001,7 +1007,7 @@
// Invoke
String targetDesc = dstType.basicType().toMethodDescriptorString();
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc);
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc, false);
// Box primitive types
Class<?> rtype = dstType.returnType();
--- a/jdk/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java Tue Jan 28 11:21:43 2014 -0800
@@ -158,19 +158,19 @@
visitMethodInsn(Opcodes.INVOKESTATIC,
wrapperName(w),
NAME_BOX_METHOD,
- boxingDescriptor(w));
+ boxingDescriptor(w), false);
}
/**
* Convert types by unboxing. The source type is known to be a primitive wrapper.
- * @param ws A primitive wrapper corresponding to wrapped reference source type
+ * @param sname A primitive wrapper corresponding to wrapped reference source type
* @param wt A primitive wrapper being converted to
*/
void unbox(String sname, Wrapper wt) {
visitMethodInsn(Opcodes.INVOKEVIRTUAL,
sname,
unboxMethod(wt),
- unboxingDescriptor(wt));
+ unboxingDescriptor(wt), false);
}
private String descriptorToName(String desc) {
--- a/jdk/src/share/classes/java/net/Socket.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/net/Socket.java Tue Jan 28 11:21:43 2014 -0800
@@ -272,7 +272,9 @@
* {@code zero} for a system selected free port.
* @exception IOException if an I/O error occurs when creating the socket.
* @exception SecurityException if a security manager exists and its
- * {@code checkConnect} method doesn't allow the operation.
+ * {@code checkConnect} method doesn't allow the connection
+ * to the destination, or if its {@code checkListen} method
+ * doesn't allow the bind to the local port.
* @exception IllegalArgumentException if the port parameter or localPort
* parameter is outside the specified range of valid port values,
* which is between 0 and 65535, inclusive.
@@ -311,7 +313,9 @@
* {@code zero} for a system selected free port.
* @exception IOException if an I/O error occurs when creating the socket.
* @exception SecurityException if a security manager exists and its
- * {@code checkConnect} method doesn't allow the operation.
+ * {@code checkConnect} method doesn't allow the connection
+ * to the destination, or if its {@code checkListen} method
+ * doesn't allow the bind to the local port.
* @exception IllegalArgumentException if the port parameter or localPort
* parameter is outside the specified range of valid port values,
* which is between 0 and 65535, inclusive.
@@ -609,6 +613,9 @@
* is already bound.
* @throws IllegalArgumentException if bindpoint is a
* SocketAddress subclass not supported by this socket
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkListen} method doesn't allow the bind
+ * to the local port.
*
* @since 1.4
* @see #isBound
@@ -630,6 +637,10 @@
InetAddress addr = epoint.getAddress();
int port = epoint.getPort();
checkAddress (addr, "bind");
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkListen(port);
+ }
getImpl().bind (addr, port);
bound = true;
}
--- a/jdk/src/share/classes/java/net/SocketPermission.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/net/SocketPermission.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,6 +34,9 @@
import java.net.InetAddress;
import java.security.Permission;
import java.security.PermissionCollection;
+import java.security.PrivilegedAction;
+import java.security.AccessController;
+import java.security.Security;
import java.io.Serializable;
import java.io.ObjectStreamField;
import java.io.ObjectOutputStream;
@@ -41,6 +44,7 @@
import java.io.IOException;
import sun.net.util.IPAddressUtil;
import sun.net.RegisteredDomain;
+import sun.net.PortConfig;
import sun.security.util.SecurityConstants;
import sun.security.util.Debug;
@@ -89,6 +93,9 @@
* form "N-", where <i>N</i> is a port number, signifies all ports
* numbered <i>N</i> and above, while a specification of the
* form "-N" indicates all ports numbered <i>N</i> and below.
+ * The special port value {@code 0} refers to the entire <i>ephemeral</i>
+ * port range. This is a fixed range of ports a system may use to
+ * allocate dynamic ports from. The actual range may be system dependent.
* <p>
* The possible ways to connect to the host are
* <pre>
@@ -97,7 +104,8 @@
* listen
* resolve
* </pre>
- * The "listen" action is only meaningful when used with "localhost".
+ * The "listen" action is only meaningful when used with "localhost" and
+ * means the ability to bind to a specified port.
* The "resolve" action is implied when any of the other actions are present.
* The action "resolve" refers to host/ip name service lookups.
* <P>
@@ -176,6 +184,7 @@
private static final int PORT_MIN = 0;
private static final int PORT_MAX = 65535;
private static final int PRIV_PORT_MAX = 1023;
+ private static final int DEF_EPH_LOW = 49152;
// the actions mask
private transient int mask;
@@ -226,6 +235,14 @@
private static Debug debug = null;
private static boolean debugInit = false;
+ // ephemeral port range for this system
+ private static final int ephemeralLow = initEphemeralPorts(
+ "low", DEF_EPH_LOW
+ );
+ private static final int ephemeralHigh = initEphemeralPorts(
+ "high", PORT_MAX
+ );
+
static {
Boolean tmp = java.security.AccessController.doPrivileged(
new sun.security.action.GetBooleanAction("sun.net.trustNameService"));
@@ -360,6 +377,14 @@
}
/**
+ * Returns true if the permission has specified zero
+ * as its value (or lower bound) signifying the ephemeral range
+ */
+ private boolean includesEphemerals() {
+ return portrange[0] == 0;
+ }
+
+ /**
* Initialize the SocketPermission object. We don't do any DNS lookups
* as this point, instead we hold off until the implies method is
* called.
@@ -850,10 +875,21 @@
int i,j;
if ((that.mask & RESOLVE) != that.mask) {
- // check port range
+
+ // check simple port range
if ((that.portrange[0] < this.portrange[0]) ||
(that.portrange[1] > this.portrange[1])) {
+
+ // if either includes the ephemeral range, do full check
+ if (this.includesEphemerals() || that.includesEphemerals()) {
+ if (!inRange(this.portrange[0], this.portrange[1],
+ that.portrange[0], that.portrange[1]))
+ {
+ return false;
+ }
+ } else {
return false;
+ }
}
}
@@ -1168,6 +1204,75 @@
init(getName(),getMask(actions));
}
+ /**
+ * Check the system/security property for the ephemeral port range
+ * for this system. The suffix is either "high" or "low"
+ */
+ private static int initEphemeralPorts(String suffix, int defval) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction<Integer>(){
+ public Integer run() {
+ int val = Integer.getInteger(
+ "jdk.net.ephemeralPortRange."+suffix, -1
+ );
+ if (val != -1) {
+ return val;
+ } else {
+ return suffix.equals("low") ?
+ PortConfig.getLower() : PortConfig.getUpper();
+ }
+ }
+ }
+ );
+ }
+
+ /**
+ * Check if the target range is within the policy range
+ * together with the ephemeral range for this platform
+ * (if policy includes ephemeral range)
+ */
+ private static boolean inRange(
+ int policyLow, int policyHigh, int targetLow, int targetHigh
+ )
+ {
+ if (targetLow == 0) {
+ // check policy includes ephemeral range
+ if (!inRange(policyLow, policyHigh, ephemeralLow, ephemeralHigh)) {
+ return false;
+ }
+ if (targetHigh == 0) {
+ // nothing left to do
+ return true;
+ }
+ // continue check with first real port number
+ targetLow = 1;
+ }
+
+ if (policyLow == 0 && policyHigh == 0) {
+ // ephemeral range only
+ return targetLow >= ephemeralLow && targetHigh <= ephemeralHigh;
+ }
+
+ if (policyLow != 0) {
+ // simple check of policy only
+ return targetLow >= policyLow && targetHigh <= policyHigh;
+ }
+
+ // policyLow == 0 which means possibly two ranges to check
+
+ // first check if policy and ephem range overlap/contiguous
+
+ if (policyHigh >= ephemeralLow - 1) {
+ return targetHigh <= ephemeralHigh;
+ }
+
+ // policy and ephem range do not overlap
+
+ // target range must lie entirely inside policy range or eph range
+
+ return (targetLow <= policyHigh && targetHigh <= policyHigh) ||
+ (targetLow >= ephemeralLow && targetHigh <= ephemeralHigh);
+ }
/*
public String toString()
{
--- a/jdk/src/share/classes/java/net/SocksSocketImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/net/SocksSocketImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -118,7 +118,7 @@
private int readSocksReply(InputStream in, byte[] data, long deadlineMillis) throws IOException {
int len = data.length;
int received = 0;
- for (int attempts = 0; received < len && attempts < 3; attempts++) {
+ while (received < len) {
int count;
try {
count = ((SocketInputStream)in).read(data, received, len - received, remainingMillis(deadlineMillis));
@@ -521,7 +521,11 @@
throw new SocketException("Reply from SOCKS server badly formatted");
break;
case DOMAIN_NAME:
- len = data[1];
+ byte[] lenByte = new byte[1];
+ i = readSocksReply(in, lenByte, deadlineMillis);
+ if (i != 1)
+ throw new SocketException("Reply from SOCKS server badly formatted");
+ len = lenByte[0] & 0xFF;
byte[] host = new byte[len];
i = readSocksReply(in, host, deadlineMillis);
if (i != len)
@@ -532,7 +536,7 @@
throw new SocketException("Reply from SOCKS server badly formatted");
break;
case IPV6:
- len = data[1];
+ len = 16;
addr = new byte[len];
i = readSocksReply(in, addr, deadlineMillis);
if (i != len)
--- a/jdk/src/share/classes/java/nio/channels/AsynchronousSocketChannel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/nio/channels/AsynchronousSocketChannel.java Tue Jan 28 11:21:43 2014 -0800
@@ -200,6 +200,10 @@
* @throws UnsupportedAddressTypeException {@inheritDoc}
* @throws ClosedChannelException {@inheritDoc}
* @throws IOException {@inheritDoc}
+ * @throws SecurityException
+ * If a security manager has been installed and its
+ * {@link SecurityManager#checkListen checkListen} method denies
+ * the operation
*/
@Override
public abstract AsynchronousSocketChannel bind(SocketAddress local)
--- a/jdk/src/share/classes/java/nio/channels/SocketChannel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/nio/channels/SocketChannel.java Tue Jan 28 11:21:43 2014 -0800
@@ -227,6 +227,10 @@
* @throws UnsupportedAddressTypeException {@inheritDoc}
* @throws ClosedChannelException {@inheritDoc}
* @throws IOException {@inheritDoc}
+ * @throws SecurityException
+ * If a security manager has been installed and its
+ * {@link SecurityManager#checkListen checkListen} method denies
+ * the operation
*
* @since 1.7
*/
--- a/jdk/src/share/classes/java/nio/file/Files.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/nio/file/Files.java Tue Jan 28 11:21:43 2014 -0800
@@ -752,9 +752,12 @@
}
if (parent == null) {
// unable to find existing parent
- if (se != null)
+ if (se == null) {
+ throw new FileSystemException(dir.toString(), null,
+ "Unable to determine if root directory exists");
+ } else {
throw se;
- throw new IOException("Root directory does not exist");
+ }
}
// create directories
--- a/jdk/src/share/classes/java/util/Arrays.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/Arrays.java Tue Jan 28 11:21:43 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
@@ -1427,12 +1427,14 @@
* found to violate the {@link Comparator} contract
*/
public static <T> void sort(T[] a, Comparator<? super T> c) {
- if (c == null)
- c = NaturalOrder.INSTANCE;
- if (LegacyMergeSort.userRequested)
- legacyMergeSort(a, c);
- else
- TimSort.sort(a, 0, a.length, c, null, 0, 0);
+ if (c == null) {
+ sort(a);
+ } else {
+ if (LegacyMergeSort.userRequested)
+ legacyMergeSort(a, c);
+ else
+ TimSort.sort(a, 0, a.length, c, null, 0, 0);
+ }
}
/** To be removed in a future release. */
@@ -1498,13 +1500,15 @@
*/
public static <T> void sort(T[] a, int fromIndex, int toIndex,
Comparator<? super T> c) {
- if (c == null)
- c = NaturalOrder.INSTANCE;
- rangeCheck(a.length, fromIndex, toIndex);
- if (LegacyMergeSort.userRequested)
- legacyMergeSort(a, fromIndex, toIndex, c);
- else
- TimSort.sort(a, fromIndex, toIndex, c, null, 0, 0);
+ if (c == null) {
+ sort(a, fromIndex, toIndex);
+ } else {
+ rangeCheck(a.length, fromIndex, toIndex);
+ if (LegacyMergeSort.userRequested)
+ legacyMergeSort(a, fromIndex, toIndex, c);
+ else
+ TimSort.sort(a, fromIndex, toIndex, c, null, 0, 0);
+ }
}
/** To be removed in a future release. */
--- a/jdk/src/share/classes/java/util/Collections.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/Collections.java Tue Jan 28 11:21:43 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
@@ -121,34 +121,9 @@
*
* <p>The specified list must be modifiable, but need not be resizable.
*
- * <p>Implementation note: This implementation is a stable, adaptive,
- * iterative mergesort that requires far fewer than n lg(n) comparisons
- * when the input array is partially sorted, while offering the
- * performance of a traditional mergesort when the input array is
- * randomly ordered. If the input array is nearly sorted, the
- * implementation requires approximately n comparisons. Temporary
- * storage requirements vary from a small constant for nearly sorted
- * input arrays to n/2 object references for randomly ordered input
- * arrays.
- *
- * <p>The implementation takes equal advantage of ascending and
- * descending order in its input array, and can take advantage of
- * ascending and descending order in different parts of the same
- * input array. It is well-suited to merging two or more sorted arrays:
- * simply concatenate the arrays and sort the resulting array.
- *
- * <p>The implementation was adapted from Tim Peters's list sort for Python
- * (<a href="http://svn.python.org/projects/python/trunk/Objects/listsort.txt">
- * TimSort</a>). It uses techniques from Peter McIlroy's "Optimistic
- * Sorting and Information Theoretic Complexity", in Proceedings of the
- * Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp 467-474,
- * January 1993.
- *
- * <p>This implementation dumps the specified list into an array, sorts
- * the array, and iterates over the list resetting each element
- * from the corresponding position in the array. This avoids the
- * n<sup>2</sup> log(n) performance that would result from attempting
- * to sort a linked list in place.
+ * @implNote
+ * This implementation defers to the {@link List#sort(Comparator)}
+ * method using the specified list and a {@code null} comparator.
*
* @param <T> the class of the objects in the list
* @param list the list to be sorted.
@@ -159,16 +134,11 @@
* @throws IllegalArgumentException (optional) if the implementation
* detects that the natural ordering of the list elements is
* found to violate the {@link Comparable} contract
+ * @see List#sort(Comparator)
*/
@SuppressWarnings("unchecked")
public static <T extends Comparable<? super T>> void sort(List<T> list) {
- Object[] a = list.toArray();
- Arrays.sort(a);
- ListIterator<T> i = list.listIterator();
- for (Object e : a) {
- i.next();
- i.set((T) e);
- }
+ list.sort(null);
}
/**
@@ -183,34 +153,9 @@
*
* <p>The specified list must be modifiable, but need not be resizable.
*
- * <p>Implementation note: This implementation is a stable, adaptive,
- * iterative mergesort that requires far fewer than n lg(n) comparisons
- * when the input array is partially sorted, while offering the
- * performance of a traditional mergesort when the input array is
- * randomly ordered. If the input array is nearly sorted, the
- * implementation requires approximately n comparisons. Temporary
- * storage requirements vary from a small constant for nearly sorted
- * input arrays to n/2 object references for randomly ordered input
- * arrays.
- *
- * <p>The implementation takes equal advantage of ascending and
- * descending order in its input array, and can take advantage of
- * ascending and descending order in different parts of the same
- * input array. It is well-suited to merging two or more sorted arrays:
- * simply concatenate the arrays and sort the resulting array.
- *
- * <p>The implementation was adapted from Tim Peters's list sort for Python
- * (<a href="http://svn.python.org/projects/python/trunk/Objects/listsort.txt">
- * TimSort</a>). It uses techniques from Peter McIlroy's "Optimistic
- * Sorting and Information Theoretic Complexity", in Proceedings of the
- * Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp 467-474,
- * January 1993.
- *
- * <p>This implementation dumps the specified list into an array, sorts
- * the array, and iterates over the list resetting each element
- * from the corresponding position in the array. This avoids the
- * n<sup>2</sup> log(n) performance that would result from attempting
- * to sort a linked list in place.
+ * @implNote
+ * This implementation defers to the {@link List#sort(Comparator)}
+ * method using the specified list and comparator.
*
* @param <T> the class of the objects in the list
* @param list the list to be sorted.
@@ -223,16 +168,11 @@
* list-iterator does not support the {@code set} operation.
* @throws IllegalArgumentException (optional) if the comparator is
* found to violate the {@link Comparator} contract
+ * @see List#sort(Comparator)
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public static <T> void sort(List<T> list, Comparator<? super T> c) {
- Object[] a = list.toArray();
- Arrays.sort(a, (Comparator)c);
- ListIterator<T> i = list.listIterator();
- for (Object e : a) {
- i.next();
- i.set((T) e);
- }
+ list.sort(c);
}
@@ -4464,10 +4404,12 @@
* <pre>
* List<String> s = Collections.emptyList();
* </pre>
- * Implementation note: Implementations of this method need not
- * create a separate <tt>List</tt> object for each call. Using this
- * method is likely to have comparable cost to using the like-named
- * field. (Unlike this method, the field does not provide type safety.)
+ *
+ * @implNote
+ * Implementations of this method need not create a separate <tt>List</tt>
+ * object for each call. Using this method is likely to have comparable
+ * cost to using the like-named field. (Unlike this method, the field does
+ * not provide type safety.)
*
* @param <T> type of elements, if there were any, in the list
* @return an empty immutable list
--- a/jdk/src/share/classes/java/util/List.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/List.java Tue Jan 28 11:21:43 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
@@ -415,11 +415,49 @@
}
/**
- * Sorts this list using the supplied {@code Comparator} to compare elements.
+ * Sorts this list according to the order induced by the specified
+ * {@link Comparator}.
+ *
+ * <p>All elements in this list must be <i>mutually comparable</i> using the
+ * specified comparator (that is, {@code c.compare(e1, e2)} must not throw
+ * a {@code ClassCastException} for any elements {@code e1} and {@code e2}
+ * in the list).
+ *
+ * <p>If the specified comparator is {@code null} then all elements in this
+ * list must implement the {@link Comparable} interface and the elements'
+ * {@linkplain Comparable natural ordering} should be used.
+ *
+ * <p>This list must be modifiable, but need not be resizable.
*
* @implSpec
- * The default implementation is equivalent to, for this {@code list}:
- * <pre>Collections.sort(list, c)</pre>
+ * The default implementation obtains an array containing all elements in
+ * this list, sorts the array, and iterates over this list resetting each
+ * element from the corresponding position in the array. (This avoids the
+ * n<sup>2</sup> log(n) performance that would result from attempting
+ * to sort a linked list in place.)
+ *
+ * @implNote
+ * This implementation is a stable, adaptive, iterative mergesort that
+ * requires far fewer than n lg(n) comparisons when the input array is
+ * partially sorted, while offering the performance of a traditional
+ * mergesort when the input array is randomly ordered. If the input array
+ * is nearly sorted, the implementation requires approximately n
+ * comparisons. Temporary storage requirements vary from a small constant
+ * for nearly sorted input arrays to n/2 object references for randomly
+ * ordered input arrays.
+ *
+ * <p>The implementation takes equal advantage of ascending and
+ * descending order in its input array, and can take advantage of
+ * ascending and descending order in different parts of the same
+ * input array. It is well-suited to merging two or more sorted arrays:
+ * simply concatenate the arrays and sort the resulting array.
+ *
+ * <p>The implementation was adapted from Tim Peters's list sort for Python
+ * (<a href="http://svn.python.org/projects/python/trunk/Objects/listsort.txt">
+ * TimSort</a>). It uses techniques from Peter McIlroy's "Optimistic
+ * Sorting and Information Theoretic Complexity", in Proceedings of the
+ * Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp 467-474,
+ * January 1993.
*
* @param c the {@code Comparator} used to compare list elements.
* A {@code null} value indicates that the elements'
@@ -434,8 +472,15 @@
* contract
* @since 1.8
*/
+ @SuppressWarnings({"unchecked", "rawtypes"})
default void sort(Comparator<? super E> c) {
- Collections.sort(this, c);
+ Object[] a = this.toArray();
+ Arrays.sort(a, (Comparator) c);
+ ListIterator<E> i = this.listIterator();
+ for (Object e : a) {
+ i.next();
+ i.set((E) e);
+ }
}
/**
--- a/jdk/src/share/classes/java/util/jar/JarFile.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/jar/JarFile.java Tue Jan 28 11:21:43 2014 -0800
@@ -53,6 +53,13 @@
* or method in this class will cause a {@link NullPointerException} to be
* thrown.
*
+ * If the verify flag is on when opening a signed jar file, the content of the
+ * file is verified against its signature embedded inside the file. Please note
+ * that the verification process does not include validating the signer's
+ * certificate. A caller should inspect the return value of
+ * {@link JarEntry#getCodeSigners()} to further determine if the signature
+ * can be trusted.
+ *
* @author David Connelly
* @see Manifest
* @see java.util.zip.ZipFile
--- a/jdk/src/share/classes/java/util/jar/JarVerifier.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/jar/JarVerifier.java Tue Jan 28 11:21:43 2014 -0800
@@ -179,7 +179,9 @@
name = name.substring(1);
// only set the jev object for entries that have a signature
- if (sigFileSigners.get(name) != null) {
+ // (either verified or not)
+ if (sigFileSigners.get(name) != null ||
+ verifiedSigners.get(name) != null) {
mev.setEntry(name, je);
return;
}
--- a/jdk/src/share/classes/java/util/logging/LogManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/logging/LogManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -240,6 +240,11 @@
* retrieved by calling LogManager.getLogManager.
*/
protected LogManager() {
+ this(checkSubclassPermissions());
+ }
+
+ private LogManager(Void checked) {
+
// Add a shutdown hook to close the global handlers.
try {
Runtime.getRuntime().addShutdownHook(new Cleaner());
@@ -249,6 +254,19 @@
}
}
+ private static Void checkSubclassPermissions() {
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ // These permission will be checked in the LogManager constructor,
+ // in order to register the Cleaner() thread as a shutdown hook.
+ // Check them here to avoid the penalty of constructing the object
+ // etc...
+ sm.checkPermission(new RuntimePermission("shutdownHooks"));
+ sm.checkPermission(new RuntimePermission("setContextClassLoader"));
+ }
+ return null;
+ }
+
/**
* Lazy initialization: if this instance of manager is the global
* manager then this method will read the initial configuration and
--- a/jdk/src/share/classes/java/util/stream/DoubleStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/DoubleStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -150,10 +150,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/ForEachOps.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/ForEachOps.java Tue Jan 28 11:21:43 2014 -0800
@@ -32,6 +32,7 @@
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.function.IntConsumer;
+import java.util.function.IntFunction;
import java.util.function.LongConsumer;
/**
@@ -317,12 +318,55 @@
*/
@SuppressWarnings("serial")
static final class ForEachOrderedTask<S, T> extends CountedCompleter<Void> {
+ /*
+ * Our goal is to ensure that the elements associated with a task are
+ * processed according to an in-order traversal of the computation tree.
+ * We use completion counts for representing these dependencies, so that
+ * a task does not complete until all the tasks preceding it in this
+ * order complete. We use the "completion map" to associate the next
+ * task in this order for any left child. We increase the pending count
+ * of any node on the right side of such a mapping by one to indicate
+ * its dependency, and when a node on the left side of such a mapping
+ * completes, it decrements the pending count of its corresponding right
+ * side. As the computation tree is expanded by splitting, we must
+ * atomically update the mappings to maintain the invariant that the
+ * completion map maps left children to the next node in the in-order
+ * traversal.
+ *
+ * Take, for example, the following computation tree of tasks:
+ *
+ * a
+ * / \
+ * b c
+ * / \ / \
+ * d e f g
+ *
+ * The complete map will contain (not necessarily all at the same time)
+ * the following associations:
+ *
+ * d -> e
+ * b -> f
+ * f -> g
+ *
+ * Tasks e, f, g will have their pending counts increased by 1.
+ *
+ * The following relationships hold:
+ *
+ * - completion of d "happens-before" e;
+ * - completion of d and e "happens-before b;
+ * - completion of b "happens-before" f; and
+ * - completion of f "happens-before" g
+ *
+ * Thus overall the "happens-before" relationship holds for the
+ * reporting of elements, covered by tasks d, e, f and g, as specified
+ * by the forEachOrdered operation.
+ */
+
private final PipelineHelper<T> helper;
private Spliterator<S> spliterator;
private final long targetSize;
private final ConcurrentHashMap<ForEachOrderedTask<S, T>, ForEachOrderedTask<S, T>> completionMap;
private final Sink<T> action;
- private final Object lock;
private final ForEachOrderedTask<S, T> leftPredecessor;
private Node<T> node;
@@ -333,9 +377,9 @@
this.helper = helper;
this.spliterator = spliterator;
this.targetSize = AbstractTask.suggestTargetSize(spliterator.estimateSize());
- this.completionMap = new ConcurrentHashMap<>();
+ // Size map to avoid concurrent re-sizes
+ this.completionMap = new ConcurrentHashMap<>(Math.max(16, AbstractTask.LEAF_TARGET << 1));
this.action = action;
- this.lock = new Object();
this.leftPredecessor = null;
}
@@ -348,7 +392,6 @@
this.targetSize = parent.targetSize;
this.completionMap = parent.completionMap;
this.action = parent.action;
- this.lock = parent.lock;
this.leftPredecessor = leftPredecessor;
}
@@ -367,16 +410,42 @@
new ForEachOrderedTask<>(task, leftSplit, task.leftPredecessor);
ForEachOrderedTask<S, T> rightChild =
new ForEachOrderedTask<>(task, rightSplit, leftChild);
+
+ // Fork the parent task
+ // Completion of the left and right children "happens-before"
+ // completion of the parent
+ task.addToPendingCount(1);
+ // Completion of the left child "happens-before" completion of
+ // the right child
+ rightChild.addToPendingCount(1);
task.completionMap.put(leftChild, rightChild);
- task.addToPendingCount(1); // forking
- rightChild.addToPendingCount(1); // right pending on left child
+
+ // If task is not on the left spine
if (task.leftPredecessor != null) {
- leftChild.addToPendingCount(1); // left pending on previous subtree, except left spine
- if (task.completionMap.replace(task.leftPredecessor, task, leftChild))
- task.addToPendingCount(-1); // transfer my "right child" count to my left child
- else
- leftChild.addToPendingCount(-1); // left child is ready to go when ready
+ /*
+ * Completion of left-predecessor, or left subtree,
+ * "happens-before" completion of left-most leaf node of
+ * right subtree.
+ * The left child's pending count needs to be updated before
+ * it is associated in the completion map, otherwise the
+ * left child can complete prematurely and violate the
+ * "happens-before" constraint.
+ */
+ leftChild.addToPendingCount(1);
+ // Update association of left-predecessor to left-most
+ // leaf node of right subtree
+ if (task.completionMap.replace(task.leftPredecessor, task, leftChild)) {
+ // If replaced, adjust the pending count of the parent
+ // to complete when its children complete
+ task.addToPendingCount(-1);
+ } else {
+ // Left-predecessor has already completed, parent's
+ // pending count is adjusted by left-predecessor;
+ // left child is ready to complete
+ leftChild.addToPendingCount(-1);
+ }
}
+
ForEachOrderedTask<S, T> taskToFork;
if (forkRight) {
forkRight = false;
@@ -391,31 +460,49 @@
}
taskToFork.fork();
}
- if (task.getPendingCount() == 0) {
- task.helper.wrapAndCopyInto(task.action, rightSplit);
- }
- else {
+
+ /*
+ * Task's pending count is either 0 or 1. If 1 then the completion
+ * map will contain a value that is task, and two calls to
+ * tryComplete are required for completion, one below and one
+ * triggered by the completion of task's left-predecessor in
+ * onCompletion. Therefore there is no data race within the if
+ * block.
+ */
+ if (task.getPendingCount() > 0) {
+ // Cannot complete just yet so buffer elements into a Node
+ // for use when completion occurs
+ @SuppressWarnings("unchecked")
+ IntFunction<T[]> generator = size -> (T[]) new Object[size];
Node.Builder<T> nb = task.helper.makeNodeBuilder(
- task.helper.exactOutputSizeIfKnown(rightSplit),
- size -> (T[]) new Object[size]);
+ task.helper.exactOutputSizeIfKnown(rightSplit),
+ generator);
task.node = task.helper.wrapAndCopyInto(nb, rightSplit).build();
+ task.spliterator = null;
}
task.tryComplete();
}
@Override
public void onCompletion(CountedCompleter<?> caller) {
- spliterator = null;
if (node != null) {
- // Dump any data from this leaf into the sink
- synchronized (lock) {
- node.forEach(action);
- }
+ // Dump buffered elements from this leaf into the sink
+ node.forEach(action);
node = null;
}
- ForEachOrderedTask<S, T> victim = completionMap.remove(this);
- if (victim != null)
- victim.tryComplete();
+ else if (spliterator != null) {
+ // Dump elements output from this leaf's pipeline into the sink
+ helper.wrapAndCopyInto(action, spliterator);
+ spliterator = null;
+ }
+
+ // The completion of this task *and* the dumping of elements
+ // "happens-before" completion of the associated left-most leaf task
+ // of right subtree (if any, which can be this task's right sibling)
+ //
+ ForEachOrderedTask<S, T> leftDescendant = completionMap.remove(this);
+ if (leftDescendant != null)
+ leftDescendant.tryComplete();
}
}
}
--- a/jdk/src/share/classes/java/util/stream/IntStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/IntStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -146,10 +146,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/LongStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/LongStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -151,10 +151,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/Nodes.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/Nodes.java Tue Jan 28 11:21:43 2014 -0800
@@ -63,7 +63,7 @@
// IllegalArgumentException messages
static final String BAD_SIZE = "Stream size exceeds max array size";
- @SuppressWarnings("raw")
+ @SuppressWarnings("rawtypes")
private static final Node EMPTY_NODE = new EmptyNode.OfRef();
private static final Node.OfInt EMPTY_INT_NODE = new EmptyNode.OfInt();
private static final Node.OfLong EMPTY_LONG_NODE = new EmptyNode.OfLong();
@@ -956,6 +956,7 @@
* Initiate a stack containing, in left-to-right order, the child nodes
* covered by this spliterator
*/
+ @SuppressWarnings("unchecked")
protected final Deque<N> initStack() {
// Bias size to the case where leaf nodes are close to this node
// 8 is the minimum initial capacity for the ArrayDeque implementation
@@ -969,6 +970,7 @@
* Depth first search, in left-to-right order, of the node tree, using
* an explicit stack, to find the next non-empty leaf node.
*/
+ @SuppressWarnings("unchecked")
protected final N findNextLeafNode(Deque<N> stack) {
N n = null;
while ((n = stack.pollFirst()) != null) {
@@ -984,6 +986,7 @@
return null;
}
+ @SuppressWarnings("unchecked")
protected final boolean initTryAdvance() {
if (curNode == null)
return false;
@@ -1870,6 +1873,7 @@
}
assert task.offset + task.length < MAX_ARRAY_SIZE;
+ @SuppressWarnings("unchecked")
T_SINK sink = (T_SINK) task;
task.helper.wrapAndCopyInto(sink, rightSplit);
task.propagateCompletion();
@@ -2173,6 +2177,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
protected T_NODE doLeaf() {
T_BUILDER builder = builderFactory.apply(helper.exactOutputSizeIfKnown(spliterator));
return (T_NODE) helper.wrapAndCopyInto(builder, spliterator).build();
--- a/jdk/src/share/classes/java/util/stream/SortedOps.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/SortedOps.java Tue Jan 28 11:21:43 2014 -0800
@@ -29,7 +29,6 @@
import java.util.Comparator;
import java.util.Objects;
import java.util.Spliterator;
-import java.util.concurrent.ForkJoinTask;
import java.util.function.IntFunction;
@@ -113,7 +112,9 @@
StreamOpFlag.IS_ORDERED | StreamOpFlag.IS_SORTED);
this.isNaturalSort = true;
// Will throw CCE when we try to sort if T is not Comparable
- this.comparator = (Comparator<? super T>) Comparator.naturalOrder();
+ @SuppressWarnings("unchecked")
+ Comparator<? super T> comp = (Comparator<? super T>) Comparator.naturalOrder();
+ this.comparator = comp;
}
/**
@@ -170,7 +171,7 @@
}
@Override
- public Sink<Integer> opWrapSink(int flags, Sink sink) {
+ public Sink<Integer> opWrapSink(int flags, Sink<Integer> sink) {
Objects.requireNonNull(sink);
if (StreamOpFlag.SORTED.isKnown(flags))
@@ -291,6 +292,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
public void begin(long size) {
if (size >= Nodes.MAX_ARRAY_SIZE)
throw new IllegalArgumentException(Nodes.BAD_SIZE);
--- a/jdk/src/share/classes/java/util/stream/SpinedBuffer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/SpinedBuffer.java Tue Jan 28 11:21:43 2014 -0800
@@ -92,6 +92,7 @@
* @throws IllegalArgumentException if the specified initial capacity
* is negative
*/
+ @SuppressWarnings("unchecked")
SpinedBuffer(int initialCapacity) {
super(initialCapacity);
curChunk = (E[]) new Object[1 << initialChunkPower];
@@ -100,6 +101,7 @@
/**
* Constructs an empty list with an initial capacity of sixteen.
*/
+ @SuppressWarnings("unchecked")
SpinedBuffer() {
super();
curChunk = (E[]) new Object[1 << initialChunkPower];
@@ -114,6 +116,7 @@
: priorElementCount[spineIndex] + spine[spineIndex].length;
}
+ @SuppressWarnings("unchecked")
private void inflateSpine() {
if (spine == null) {
spine = (E[][]) new Object[MIN_SPINE_SIZE][];
@@ -125,6 +128,7 @@
/**
* Ensure that the buffer has at least capacity to hold the target size
*/
+ @SuppressWarnings("unchecked")
protected final void ensureCapacity(long targetSize) {
long capacity = capacity();
if (targetSize > capacity) {
--- a/jdk/src/share/classes/java/util/stream/Stream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/Stream.java Tue Jan 28 11:21:43 2014 -0800
@@ -227,10 +227,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
@@ -270,10 +271,11 @@
/**
* Returns an {@code IntStream} consisting of the results of replacing each
- * element of this stream with the contents of the stream produced by
- * applying the provided mapping function to each element. (If the result
- * of the mapping function is {@code null}, this is treated as if the result
- * was an empty stream.)
+ * element of this stream with the contents of a mapped stream produced by
+ * applying the provided mapping function to each element. Each mapped
+ * stream is {@link java.util.stream.BaseStream#close() closed} after its
+ * contents have been placed into this stream. (If a mapped stream is
+ * {@code null} an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
@@ -288,11 +290,12 @@
IntStream flatMapToInt(Function<? super T, ? extends IntStream> mapper);
/**
- * Returns a {@code LongStream} consisting of the results of replacing each
- * element of this stream with the contents of the stream produced
- * by applying the provided mapping function to each element. (If the result
- * of the mapping function is {@code null}, this is treated as if the result
- * was an empty stream.)
+ * Returns an {@code LongStream} consisting of the results of replacing each
+ * element of this stream with the contents of a mapped stream produced by
+ * applying the provided mapping function to each element. Each mapped
+ * stream is {@link java.util.stream.BaseStream#close() closed} after its
+ * contents have been placed into this stream. (If a mapped stream is
+ * {@code null} an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
@@ -307,11 +310,12 @@
LongStream flatMapToLong(Function<? super T, ? extends LongStream> mapper);
/**
- * Returns a {@code DoubleStream} consisting of the results of replacing each
- * element of this stream with the contents of the stream produced
- * by applying the provided mapping function to each element. (If the result
- * of the mapping function is {@code null}, this is treated as if the result
- * was an empty stream.)
+ * Returns an {@code DoubleStream} consisting of the results of replacing
+ * each element of this stream with the contents of a mapped stream produced
+ * by applying the provided mapping function to each element. Each mapped
+ * stream is {@link java.util.stream.BaseStream#close() closed} after its
+ * contents have placed been into this stream. (If a mapped stream is
+ * {@code null} an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/StreamSpliterators.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/StreamSpliterators.java Tue Jan 28 11:21:43 2014 -0800
@@ -516,6 +516,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
public T_SPLITR trySplit() {
return (T_SPLITR) get().trySplit();
}
@@ -643,6 +644,7 @@
// existing and additionally created F/J tasks that perform
// redundant work on no elements.
while (true) {
+ @SuppressWarnings("unchecked")
T_SPLITR leftSplit = (T_SPLITR) s.trySplit();
if (leftSplit == null)
return null;
@@ -970,6 +972,7 @@
// Stop splitting when there are no more limit permits
if (permits.get() == 0)
return null;
+ @SuppressWarnings("unchecked")
T_SPLITR split = (T_SPLITR) s.trySplit();
return split == null ? null : makeSpliterator(split);
}
@@ -1068,16 +1071,18 @@
super(s, skip, limit);
}
- OfPrimitive(T_SPLITR s, UnorderedSliceSpliterator.OfPrimitive parent) {
+ OfPrimitive(T_SPLITR s, UnorderedSliceSpliterator.OfPrimitive<T, T_CONS, T_BUFF, T_SPLITR> parent) {
super(s, parent);
}
@Override
public boolean tryAdvance(T_CONS action) {
Objects.requireNonNull(action);
+ @SuppressWarnings("unchecked")
+ T_CONS consumer = (T_CONS) this;
while (permitStatus() != PermitStatus.NO_MORE) {
- if (!s.tryAdvance((T_CONS) this))
+ if (!s.tryAdvance(consumer))
return false;
else if (acquirePermits(1) == 1) {
acceptConsumed(action);
@@ -1316,7 +1321,7 @@
* estimate size is 0.
*
* <p>The {@code forEachRemaining} method if invoked will never terminate.
- * The {@coe tryAdvance} method always returns true.
+ * The {@code tryAdvance} method always returns true.
*
*/
static abstract class InfiniteSupplyingSpliterator<T> implements Spliterator<T> {
--- a/jdk/src/share/classes/java/util/stream/StreamSupport.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/StreamSupport.java Tue Jan 28 11:21:43 2014 -0800
@@ -54,7 +54,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #stream(java.util.function.Supplier, int, boolean)} should be used
* to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
@@ -89,7 +89,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
@@ -125,7 +125,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #intStream(java.util.function.Supplier, int, boolean)} should be
* used to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfInt} describing the stream elements
@@ -158,7 +158,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier a {@code Supplier} of a {@code Spliterator.OfInt}
@@ -192,7 +192,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #longStream(java.util.function.Supplier, int, boolean)} should be
* used to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfLong} describing the stream elements
@@ -226,7 +226,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier a {@code Supplier} of a {@code Spliterator.OfLong}
@@ -260,7 +260,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #doubleStream(java.util.function.Supplier, int, boolean)} should
* be used to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator A {@code Spliterator.OfDouble} describing the stream elements
@@ -294,7 +294,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier A {@code Supplier} of a {@code Spliterator.OfDouble}
--- a/jdk/src/share/classes/java/util/stream/Streams.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/Streams.java Tue Jan 28 11:21:43 2014 -0800
@@ -715,6 +715,7 @@
@Override
public T_SPLITR trySplit() {
+ @SuppressWarnings("unchecked")
T_SPLITR ret = beforeSplit ? aSpliterator : (T_SPLITR) bSpliterator.trySplit();
beforeSplit = false;
return ret;
--- a/jdk/src/share/classes/java/util/stream/package-info.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/package-info.java Tue Jan 28 11:21:43 2014 -0800
@@ -206,7 +206,7 @@
* as {@link java.util.function.Function}, and are often lambda expressions or
* method references.
*
- * <h3><a name="Non-Interference">Non-interference</a></h3>
+ * <h3><a name="NonInterference">Non-interference</a></h3>
*
* Streams enable you to execute possibly-parallel aggregate operations over a
* variety of data sources, including even non-thread-safe collections such as
@@ -729,7 +729,7 @@
* modifications of the data source prior to commencement of the terminal
* operation (provided the behavioral parameters to the stream operations meet
* the required criteria for non-interference and statelessness). See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a>
+ * <a href="package-summary.html#NonInterference">Non-Interference</a>
* for more details.
*
* @since 1.8
--- a/jdk/src/share/classes/javax/accessibility/AccessibleContext.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/accessibility/AccessibleContext.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -39,7 +39,7 @@
* obtaining more specific accessibility information about a component.
* If the component supports them, these methods will return an object that
* implements one or more of the following interfaces:
- * <P><ul>
+ * <ul>
* <li>{@link AccessibleAction} - the object can perform one or more actions.
* This interface provides the standard mechanism for an assistive
* technology to determine what those actions are and tell the object
--- a/jdk/src/share/classes/javax/imageio/ImageWriter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/ImageWriter.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -53,8 +53,6 @@
* which uses them for format recognition and presentation of
* available format readers and writers.
*
- * <p>
- *
* @see ImageReader
* @see ImageWriteParam
* @see javax.imageio.spi.IIORegistry
--- a/jdk/src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -54,7 +54,7 @@
* listed in the following
* table:
*
- * <p><table border=1>
+ * <table border=1>
* <caption><b>Compression Types</b></caption>
* <tr><th>Type String</th> <th>Description</th> <th>Image Types</th></tr>
* <tr><td>BI_RGB</td> <td>Uncompressed RLE</td> <td>{@literal <= } 8-bits/sample</td></tr>
--- a/jdk/src/share/classes/javax/imageio/stream/ImageInputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/stream/ImageInputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -446,7 +446,7 @@
* <code>UTFDataFormatException</code> is thrown. Otherwise, the
* group is converted to the character:
*
- * <p> <pre><code>
+ * <pre><code>
* (char)(((a& 0x1F) << 6) | (b & 0x3F))
* </code></pre>
*
@@ -460,7 +460,7 @@
* <code>UTFDataFormatException</code> is thrown. Otherwise, the
* group is converted to the character:
*
- * <p> <pre><code>
+ * <pre><code>
* (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
* </code></pre>
*
--- a/jdk/src/share/classes/javax/imageio/stream/ImageOutputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/stream/ImageOutputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -379,7 +379,7 @@
* <code>\u0001</code> through <code>\u007f</code>, it is
* represented by one byte:
*
- * <p><pre>
+ * <pre>
* (byte)c
* </pre>
*
@@ -388,7 +388,7 @@
* <code>\u07ff</code>, then it is represented by two bytes,
* to be written in the order shown:
*
- * <p> <pre><code>
+ * <pre><code>
* (byte)(0xc0 | (0x1f & (c >> 6)))
* (byte)(0x80 | (0x3f & c))
* </code></pre>
@@ -397,7 +397,7 @@
* <code>\u0800</code> through <code>uffff</code>, then it is
* represented by three bytes, to be written in the order shown:
*
- * <p> <pre><code>
+ * <pre><code>
* (byte)(0xe0 | (0x0f & (c >> 12)))
* (byte)(0x80 | (0x3f & (c >> 6)))
* (byte)(0x80 | (0x3f & c))
--- a/jdk/src/share/classes/javax/print/Doc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/Doc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,12 +44,12 @@
* in which the print data is available. A doc flavor designates the print
* data format (a MIME type) and the representation class of the object
* from which the print data comes.
- * <P>
+ *
* <LI>
* Obtain the print data representation object, which is an instance of the
* doc flavor's representation class. The Print Job can then obtain the actual
* print data from the representation object.
- * <P>
+ *
* <LI>
* Obtain the printing attributes that specify additional characteristics of
* the doc or that specify processing instructions to be applied to the doc.
@@ -104,7 +104,6 @@
* a stream does not mean that it will, with the implications that Doc
* implementors which rely on the service to close them should create such
* streams only in response to a request from the service.
- * <P>
* <HR>
*/
public interface Doc {
--- a/jdk/src/share/classes/javax/print/DocFlavor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/DocFlavor.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,7 +49,7 @@
* See <a href="../../java/lang/package-summary.html#charenc">
* character encodings</a> for more information on the character encodings
* supported on the Java platform.
- * <P>
+ *
* <LI>
* <B>Representation class name.</B> This specifies the fully-qualified name of
* the class of the object from which the actual print data comes, as returned
@@ -64,7 +64,7 @@
* also lets the <code>DocPrintJob</code> obtain an instance of the doc flavor's
* representation class, from which the <code>DocPrintJob</code> then obtains
* the actual print data.
- * <P>
+ *
* <HR>
* <H3>Client Formatted Print Data</H3>
* There are two broad categories of print data, client formatted print data
@@ -96,22 +96,22 @@
* <LI>
* Character array (<CODE>char[]</CODE>) -- The print data consists of the
* Unicode characters in the array.
- * <P>
+ *
* <LI>
* <code>String</code> --
* The print data consists of the Unicode characters in the string.
- * <P>
+ *
* <LI>
* Character stream ({@link java.io.Reader java.io.Reader})
* -- The print data consists of the Unicode characters read from the stream
* up to the end-of-stream.
- * <P>
+ *
* <LI>
* Byte array (<CODE>byte[]</CODE>) -- The print data consists of the bytes in
* the array. The bytes are encoded in the character set specified by the doc
* flavor's MIME type. If the MIME type does not specify a character set, the
* default character set is US-ASCII.
- * <P>
+ *
* <LI>
* Byte stream ({@link java.io.InputStream java.io.InputStream}) --
* The print data consists of the bytes read from the stream up to the
@@ -139,7 +139,7 @@
* To print such documents, let the client open an input stream on the URL
* or file and use an input stream data flavor.
* </UL>
- * <p>
+ *
* <HR>
* <h3>Default and Platform Encodings</h3>
* <P>
@@ -179,11 +179,9 @@
* understood by this VM.
* For common flavors, the pre-defined *HOST DocFlavors may be used.
* <p>
- * <p>
* See <a href="../../java/lang/package-summary.html#charenc">
* character encodings</a> for more information on the character encodings
* supported on the Java platform.
- * <p>
* <HR>
* <h3>Recommended DocFlavors</h3>
* <P>
@@ -196,7 +194,6 @@
* constructor can be used to create an arbitrary doc flavor.
* <UL>
* <LI>Preformatted text
- * <P>
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -222,9 +219,9 @@
* In general, preformatted text print data is provided either in a character
* oriented representation class (character array, String, Reader) or in a
* byte oriented representation class (byte array, InputStream, URL).
- * <P>
+ *
* <LI>Preformatted page description language (PDL) documents
- *<P>
+ *
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -245,9 +242,9 @@
* <P>
* In general, preformatted PDL print data is provided in a byte oriented
* representation class (byte array, InputStream, URL).
- * <P>
+ *
* <LI>Preformatted images
- *<P>
+ *
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -269,9 +266,9 @@
* <P>
* In general, preformatted image print data is provided in a byte oriented
* representation class (byte array, InputStream, URL).
- * <P>
+ *
* <LI>Preformatted autosense print data
- * <P>
+ *
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -287,7 +284,7 @@
* autosense print data is provided in a byte oriented representation class
* (byte array, InputStream, URL).
* </UL>
- * <P>
+ *
* <HR>
* <H3>Service Formatted Print Data</H3>
* <P>
@@ -315,7 +312,7 @@
* {@link java.awt.image.renderable.RenderableImage RenderableImage}. The
* printer calls methods
* in that interface to obtain the image to be printed.
- * <P>
+ *
* <LI>
* Printable object -- The client supplies an object that implements interface
* {@link java.awt.print.Printable Printable}.
@@ -323,7 +320,7 @@
* printed, one by one.
* For each page, the printer supplies a graphics context, and whatever the
* client draws in that graphics context gets printed.
- * <P>
+ *
* <LI>
* Pageable object -- The client supplies an object that implements interface
* {@link java.awt.print.Pageable Pageable}. The printer calls
@@ -331,9 +328,9 @@
* For each page, the printer supplies a graphics context, and whatever
* the client draws in that graphics context gets printed.
* </UL>
- * <P>
+ *
* <HR>
- * <P>
+ *
* <HR>
* <H3>Pre-defined Doc Flavors</H3>
* A Java Print Service instance is not <B><I>required</I></B> to support the
@@ -354,7 +351,7 @@
* <CODE>("text/plain; charset=us-ascii", "java.io.InputStream")</CODE>
* <BR>·
* <CODE>("text/plain; charset=utf-8", "java.io.InputStream")</CODE>
- * <P>
+ *
* <LI>
* Renderable image objects. Specifically, the following doc flavor is
* recommended to be supported:
@@ -389,7 +386,7 @@
* <P>
* The client must itself perform all plain text print data formatting not
* addressed by the above requirements.
- * <P>
+ *
* <H3>Design Rationale</H3>
* <P>
* Class DocFlavor in package javax.print.data is similar to class
@@ -403,13 +400,13 @@
* <LI>
* The JPS API is designed to be used in Java profiles which do not support
* AWT.
- * <P>
+ *
* <LI>
* The implementation of class <code>java.awt.datatransfer.DataFlavor</code>
* does not guarantee that equivalent data flavors will have the same
* serialized representation. DocFlavor does, and can be used in services
* which need this.
- * <P>
+ *
* <LI>
* The implementation of class <code>java.awt.datatransfer.DataFlavor</code>
* includes a human presentable name as part of the serialized representation.
--- a/jdk/src/share/classes/javax/print/MultiDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/MultiDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -67,7 +67,7 @@
* data from the print data representation object. Get the next multidoc from
* the current multidoc, and repeat until there are no more. (The code example
* above uses the interleaved pattern.)
- * <P>
+ *
* <LI>
* The <B>all-at-once</B> pattern: Get the doc from the current multidoc, and
* save the doc in a list. Get the next multidoc from the current multidoc, and
--- a/jdk/src/share/classes/javax/print/MultiDocPrintJob.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/MultiDocPrintJob.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -32,7 +32,6 @@
* Obtained from a MultiDocPrintService, a MultiDocPrintJob can print a
* specified collection of documents as a single print job with a set of
* job attributes.
- * <P>
*/
public interface MultiDocPrintJob extends DocPrintJob {
--- a/jdk/src/share/classes/javax/print/PrintService.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/PrintService.java Tue Jan 28 11:21:43 2014 -0800
@@ -119,6 +119,7 @@
* Gets the value of the single specified service attribute.
* This may be useful to clients which only need the value of one
* attribute and want to minimize overhead.
+ * @param <T> the type of the specified service attribute
* @param category the category of a PrintServiceAttribute supported
* by this service - may not be null.
* @return the value of the supported attribute or null if the
--- a/jdk/src/share/classes/javax/print/ServiceUI.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/ServiceUI.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -52,7 +52,6 @@
*for a user as well as allowing the user to select the print service to use
*and specify choices such as paper size and number of copies.
* <p>
- * <p>
* The dialogs are designed to work with pluggable print services though the
* public APIs of those print services.
* <p>
--- a/jdk/src/share/classes/javax/print/SimpleDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/SimpleDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -91,7 +91,10 @@
Class repClass = null;
try {
- repClass = Class.forName(flavor.getRepresentationClassName());
+ String className = flavor.getRepresentationClassName();
+ sun.reflect.misc.ReflectUtil.checkPackageAccess(className);
+ repClass = Class.forName(className, false,
+ Thread.currentThread().getContextClassLoader());
} catch (Throwable e) {
throw new IllegalArgumentException("unknown representation class");
}
--- a/jdk/src/share/classes/javax/print/StreamPrintServiceFactory.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/StreamPrintServiceFactory.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -45,7 +45,7 @@
* <p>
* This class is implemented by a service and located by the
* implementation using the
- * <a href="../../../technotes/guides/jar/jar.html#Service Provider">
+ * <a href="../../../technotes/guides/jar/jar.html#Service%20Provider">
* SPI JAR File specification</a>.
* <p>
* Applications locate instances of this class by calling the
--- a/jdk/src/share/classes/javax/print/attribute/AttributeSet.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/AttributeSet.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -69,17 +69,17 @@
* A {@link DocAttributeSet DocAttributeSet}, containing {@link DocAttribute
* DocAttribute}s, specifies the characteristics of an individual doc and the
* print job settings to be applied to an individual doc.
- * <P>
+ *
* <LI>
* A {@link PrintRequestAttributeSet PrintRequestAttributeSet}, containing
* {@link PrintRequestAttribute PrintRequestAttribute}s, specifies the
* settings
* to be applied to a whole print job and to all the docs in the print job.
- * <P>
+ *
* <LI>
* A {@link PrintJobAttributeSet PrintJobAttributeSet}, containing {@link
* PrintJobAttribute PrintJobAttribute}s, reports the status of a print job.
- * <P>
+ *
* <LI>
* A {@link PrintServiceAttributeSet PrintServiceAttributeSet}, containing
* {@link PrintServiceAttribute PrintServiceAttribute}s, reports the status of
@@ -103,7 +103,6 @@
* HashPrintRequestAttributeSet}, {@link HashPrintJobAttributeSet
* HashPrintJobAttributeSet}, and {@link HashPrintServiceAttributeSet
* HashPrintServiceAttributeSet}.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/print/attribute/standard/Chromaticity.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Chromaticity.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,6 +1,5 @@
-
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -42,7 +41,7 @@
* The table below shows the effects of specifying a Chromaticity attribute of
* {@link #MONOCHROME MONOCHROME} or {@link #COLOR COLOR}
* for a monochrome or color document.
- * <P>
+ *
* <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=1 SUMMARY="Shows effects of specifying MONOCHROME or COLOR Chromaticity attributes">
* <TR>
* <TH>
@@ -79,9 +78,7 @@
* </TR>
* </TABLE>
* <P>
- * <P>
* <B>IPP Compatibility:</B> Chromaticity is not an IPP attribute at present.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/print/attribute/standard/Copies.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Copies.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,17 +44,17 @@
* <LI>
* SINGLE_DOCUMENT -- The result will be <I>n</I> copies of a single output
* document comprising all the input docs.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- The result will be <I>n</I> copies of a single
* output document comprising all the input docs, and the first impression of
* each input doc will always start on a new media sheet.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The result will be <I>n</I> copies of
* the first input document, followed by <I>n</I> copies of the second input
* document, . . . followed by <I>n</I> copies of the last input document.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The result will be the first input
* document, the second input document, . . . the last input document, the group
@@ -64,7 +64,6 @@
* <B>IPP Compatibility:</B> The integer value gives the IPP integer value. The
* category name returned by <CODE>getName()</CODE> gives the IPP attribute
* name.
- * <P>
*
* @author David Mendenhall
* @author Alan Kamihensky
--- a/jdk/src/share/classes/javax/print/attribute/standard/Fidelity.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Fidelity.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -46,7 +46,6 @@
* returns the IPP string representation of the attribute value.
* See <a href="http://www.ietf.org/rfc/rfc2911.txt">RFC 2911</a> Section 15.1 for
* a fuller description of the IPP fidelity attribute.
- * <P>
*
*/
public final class Fidelity extends EnumSyntax
--- a/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -178,21 +178,21 @@
* <LI>
* SINGLE_DOCUMENT -- All the input docs will be bound together as one output
* document with the specified binding.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be bound together as one
* output document with the specified binding, and the first impression of each
* input doc will always start on a new media sheet.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will be bound
* separately with the specified binding.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input doc will be bound separately
* with the specified binding.
* </UL>
- * <P>
+ *
* <LI>
* If different docs have different bindings specified, then only two values of
* {@link MultipleDocumentHandling MultipleDocumentHandling} make sense, and the
@@ -202,7 +202,7 @@
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will be bound
* separately with its own specified binding.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input doc will be bound separately
* with its own specified binding.
--- a/jdk/src/share/classes/javax/print/attribute/standard/JobKOctets.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/JobKOctets.java Tue Jan 28 11:21:43 2014 -0800
@@ -65,7 +65,7 @@
* The size of a doc is computed based on the print data representation class as
* specified by the doc's {@link javax.print.DocFlavor DocFlavor}, as
* shown in the table below.
- * <P>
+ *
* <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=1 SUMMARY="Table showing computation of doc sizes">
* <TR>
* <TH>Representation Class</TH>
--- a/jdk/src/share/classes/javax/print/attribute/standard/JobState.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/JobState.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -76,12 +76,12 @@
* <LI>
* The job is using, or is attempting to use, one or more purely software
* processes that are analyzing, creating, or interpreting a PDL, etc.
- * <P>
+ *
* <LI>
* The job is using, or is attempting to use, one or more hardware
* devices that are interpreting a PDL, making marks on a medium, and/or
* performing finishing, such as stapling, etc.
- * <P>
+ *
* <LI>
* The printer has made the job ready for printing, but the output
* device is not yet printing it, either because the job hasn't reached the
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -40,7 +40,6 @@
* <P>
* <B>IPP Compatibility:</B> MediaName is a representation class for
* values of the IPP "media" attribute which names media.
- * <P>
*
*/
public class MediaName extends Media implements Attribute {
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -288,7 +288,6 @@
/**
* Class MediaSize.ISO includes {@link MediaSize MediaSize} values for ISO
* media.
- * <P>
*/
public final static class ISO {
/**
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,6 @@
* values of the IPP "media" attribute which names media sizes.
* The names of the media sizes correspond to those in the IPP 1.1 RFC
* <a HREF="http://www.ietf.org/rfc/rfc2911.txt">RFC 2911</a>
- * <P>
*
*/
public class MediaSizeName extends Media {
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -42,8 +42,6 @@
* <P>
* <B>IPP Compatibility:</B> MediaTray is a representation class for
* values of the IPP "media" attribute which name paper trays.
- * <P>
- *
*/
public class MediaTray extends Media implements Attribute {
--- a/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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 @@
* single output document to produce. The MultipleDocumentHandling values
* SINGLE_DOCUMENT and SINGLE_DOCUMENT_NEW_SHEET specify two variations of
* this possibility.
- * <P>
+ *
* <LI>
* The multiple input documents remain separate output documents. Finishing
* operations ({@link Finishings Finishings}),
@@ -83,7 +83,7 @@
* sheets resulting from processing the document data must be
* <CODE>a(*),b(*),a(*),b(*),...</CODE>, and the printer object must force
* each copy (<CODE>a(*),b(*)</CODE>) to start on a new media sheet.
- * <P>
+ *
* <LI>
* <A NAME="sducfi">{@link #SEPARATE_DOCUMENTS_UNCOLLATED_COPIES
* <B>SEPARATE_DOCUMENTS_UNCOLLATED_COPIES</B>}</A>. If a print job
@@ -96,7 +96,7 @@
* If more than one copy is made, the ordering of the sets of media sheets
* resulting from processing the document data must be
* <CODE>a(*),a(*),...,b(*),b(*)...</CODE>.
- * <P>
+ *
* <LI>
* <A NAME="sdccfi">{@link #SEPARATE_DOCUMENTS_COLLATED_COPIES
* <B>SEPARATE_DOCUMENTS_COLLATED_COPIES</B>}</A>. If a print job
@@ -109,7 +109,7 @@
* If more than one copy is made, the ordering of the sets of media sheets
* resulting from processing the document data must be
* <CODE>a(*),b(*),a(*),b(*),...</CODE>.
- * <P>
+ *
* <LI>
* <A NAME="sdnsfi">{@link #SINGLE_DOCUMENT_NEW_SHEET
* <B>SINGLE_DOCUMENT_NEW_SHEET</B>}</A>. Same as SINGLE_DOCUMENT,
@@ -132,12 +132,12 @@
* <LI>
* With SINGLE_DOCUMENT, documents <CODE>a</CODE> and <CODE>b</CODE> are
* stapled together as a single document with no regard to new sheets.
- * <P>
+ *
* <LI>
* With SINGLE_DOCUMENT_NEW_SHEET, documents <CODE>a</CODE> and <CODE>b</CODE>
* are stapled together as a single document, but document <CODE>b</CODE>
* starts on a new sheet.
- * <P>
+ *
* <LI>
* With SEPARATE_DOCUMENTS_UNCOLLATED_COPIES and
* SEPARATE_DOCUMENTS_COLLATED_COPIES, documents <CODE>a</CODE> and
--- a/jdk/src/share/classes/javax/print/attribute/standard/NumberUp.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/NumberUp.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -56,7 +56,7 @@
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
* output document. Each media impression will consist of <I>n</I>m
* print-stream pages from the output document.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media impression will consist of <I>n</I>
@@ -64,7 +64,7 @@
* each input doc will always start on a new media sheet; this means the last
* impression of an input doc may have fewer than <I>n</I> print-stream pages
* on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* Each media impression will consist of <I>n</I> print-stream pages from the
@@ -72,7 +72,7 @@
* input doc will always start on a new media sheet; this means the last
* impression of an input doc may have fewer than <I>n</I> print-stream pages on
* it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* Each media impression will consist of <I>n</I> print-stream pages from the
@@ -91,7 +91,7 @@
* the first print-stream page of the next input doc goes at the start of the
* next media impression, possibly leaving fewer than the full number of
* print-stream pages on the previous media impression.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media impression will consist of <I>n</I>
@@ -99,7 +99,7 @@
* each input doc will always start on a new media sheet; this means the last
* impression of an input doc may have fewer than <I>n</I> print-stream pages
* on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media impression will consist of
@@ -107,7 +107,7 @@
* docs are separate, the first impression of each input doc will always start
* on a new media sheet; this means the last impression of an input doc may have
* fewer than <I>n<SUB>i</SUB></I> print-stream pages on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media impression will consist of
@@ -120,7 +120,6 @@
* <B>IPP Compatibility:</B> The integer value gives the IPP integer value.
* The category name returned by <CODE>getName()</CODE> gives the IPP
* attribute name.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/print/attribute/standard/PageRanges.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PageRanges.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -68,17 +68,17 @@
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
* output document. The specified page ranges of that output document will be
* printed.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document, and the first impression of each input doc will
* always start on a new media sheet. The specified page ranges of that output
* document will be printed.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- For each separate input doc, the
* specified page ranges will be printed.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- For each separate input doc, the
* specified page ranges will be printed.
@@ -87,7 +87,7 @@
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- For each separate input doc, its own
* specified page ranges will be printed..
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- For each separate input doc, its own
* specified page ranges will be printed..
@@ -100,7 +100,6 @@
* javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an
* explanation of canonical array form. The category name returned by
* <CODE>getName()</CODE> gives the IPP attribute name.
- * <P>
*
* @author David Mendenhall
* @author Alan Kaminsky
--- a/jdk/src/share/classes/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -45,7 +45,6 @@
* to find out more information about this specific printer rather than this
* general kind of printer.
* <P>
- * <P>
* <B>IPP Compatibility:</B> The string form returned by
* <CODE>toString()</CODE> gives the IPP uri value.
* The category name returned by <CODE>getName()</CODE>
--- a/jdk/src/share/classes/javax/print/attribute/standard/PrinterResolution.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PrinterResolution.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,7 +44,7 @@
* an instance of class PrinterResolution indicating the exact resolution the
* client wants. Only printers supporting that exact resolution will match the
* search.
- * <P>
+ *
* <LI>
* When a client needs to print a job using the client's desired resolution
* exactly (no more, no less), the client specifies an instance of class
@@ -60,7 +60,6 @@
* In some cases this may be more simply achieved by specifying a
* PrintQuality attribute which often controls resolution.
* <P>
- * <P>
* <B>IPP Compatibility:</B> The information needed to construct an IPP
* <CODE>"printer-resolution"</CODE> attribute can be obtained by calling
* methods on the PrinterResolution object. The category name returned by
--- a/jdk/src/share/classes/javax/print/attribute/standard/SheetCollate.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/SheetCollate.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -77,7 +77,7 @@
* combined into one output document. Multiple copies of the output document
* will be produced with pages in collated order, i.e. pages 1, 2, 3, . . .,
* 1, 2, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = COLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SINGLE_DOCUMENT_NEW_SHEET -- All the input docs
@@ -85,7 +85,7 @@
* input doc will always start on a new media sheet. Multiple copies of the
* output document will be produced with pages in collated order, i.e. pages
* 1, 2, 3, . . ., 1, 2, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = COLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each
@@ -94,7 +94,7 @@
* pages in collated order, but the documents themselves in uncollated order,
* i.e. pages A1, A2, A3, . . ., A1, A2, A3, . . ., B1, B2, B3, . . ., B1, B2,
* B3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = COLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input
@@ -103,14 +103,14 @@
* in collated order, with the documents themselves also in collated order, i.e.
* pages A1, A2, A3, . . ., B1, B2, B3, . . ., A1, A2, A3, . . ., B1, B2, B3,
* . . .
- * <P>
+ *
* <LI>
* SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SINGLE_DOCUMENT -- All the input docs will be
* combined into one output document. Multiple copies of the output document
* will be produced with pages in uncollated order, i.e. pages 1, 1, . . .,
* 2, 2, . . ., 3, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SINGLE_DOCUMENT_NEW_SHEET -- All the input docs
@@ -118,7 +118,7 @@
* input doc will always start on a new media sheet. Multiple copies of the
* output document will be produced with pages in uncollated order, i.e. pages
* 1, 1, . . ., 2, 2, . . ., 3, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each
@@ -128,7 +128,7 @@
* order, i.e. pages A1, A1, . . ., A2, A2, . . ., A3, A3, . . ., B1, B1, . . .,
* B2, B2, . . ., B3, B3, . . .
* </UL>
- * <P>
+ *
* <LI>
* If different docs have different sheet collations specified, then only one
* value of {@link MultipleDocumentHandling MultipleDocumentHandling} is
--- a/jdk/src/share/classes/javax/print/attribute/standard/Sides.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Sides.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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,21 +51,21 @@
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
* output document. Each media sheet will consist of <I>n</I> impressions from
* the output document.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media sheet will consist of <I>n</I>
* impressions from the output document. However, the first impression of each
* input doc will always start on a new media sheet; this means the last media
* sheet of an input doc may have only one impression on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* Each media sheet will consist of <I>n</I> impressions from the input doc.
* Since the input docs are separate, the first impression of each input doc
* will always start on a new media sheet; this means the last media sheet of
* an input doc may have only one impression on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* Each media sheet will consist of <I>n</I> impressions from the input doc.
@@ -73,7 +73,7 @@
* will always start on a new media sheet; this means the last media sheet of
* an input doc may have only one impression on it.
* </UL>
- * <P>
+ *
* <UL>
* <LI>
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
@@ -83,14 +83,14 @@
* input doc has a different sides value from the previous input doc, the first
* print-stream page of the next input doc goes at the start of the next media
* sheet, possibly leaving only one impression on the previous media sheet.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media sheet will consist of <I>n</I>
* impressions from the output document. However, the first impression of each
* input doc will always start on a new media sheet; this means the last
* impression of an input doc may have only one impression on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media sheet will consist of <I>n<SUB>i</SUB></I>
@@ -98,7 +98,7 @@
* impression of each input doc will always start on a new media sheet; this
* means the last media sheet of an input doc may have only one impression on
* it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media sheet will consist of <I>n<SUB>i</SUB></I>
@@ -113,7 +113,6 @@
* <CODE>getName()</CODE> is the IPP attribute name. The enumeration's
* integer value is the IPP enum value. The <code>toString()</code> method
* returns the IPP string representation of the attribute value.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/security/auth/Policy.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/Policy.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,6 +26,10 @@
package javax.security.auth;
import java.security.Security;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
+import java.util.Objects;
import sun.security.util.Debug;
/**
@@ -155,22 +159,15 @@
public abstract class Policy {
private static Policy policy;
- private static ClassLoader contextClassLoader;
private final static String AUTH_POLICY =
"sun.security.provider.AuthPolicyFile";
+ private final java.security.AccessControlContext acc =
+ java.security.AccessController.getContext();
+
// true if a custom (not AUTH_POLICY) system-wide policy object is set
private static boolean isCustomPolicy;
- static {
- contextClassLoader = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
- };
-
/**
* Sole constructor. (For invocation by subclass constructors, typically
* implicit.)
@@ -213,8 +210,8 @@
if (policy == null) {
String policy_class = null;
- policy_class = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<String>() {
+ policy_class = AccessController.doPrivileged
+ (new PrivilegedAction<String>() {
public String run() {
return java.security.Security.getProperty
("auth.policy.provider");
@@ -226,18 +223,28 @@
try {
final String finalClass = policy_class;
- policy = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedExceptionAction<Policy>() {
- public Policy run() throws ClassNotFoundException,
- InstantiationException,
- IllegalAccessException {
- return (Policy) Class.forName
- (finalClass,
- true,
- contextClassLoader).newInstance();
- }
- });
- isCustomPolicy = !finalClass.equals(AUTH_POLICY);
+
+ Policy untrustedImpl = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Policy>() {
+ public Policy run() throws ClassNotFoundException,
+ InstantiationException,
+ IllegalAccessException {
+ Class<? extends Policy> implClass = Class.forName(
+ finalClass, false,
+ Thread.currentThread().getContextClassLoader()
+ ).asSubclass(Policy.class);
+ return implClass.newInstance();
+ }
+ });
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Void>() {
+ public Void run() {
+ setPolicy(untrustedImpl);
+ isCustomPolicy = !finalClass.equals(AUTH_POLICY);
+ return null;
+ }
+ }, Objects.requireNonNull(untrustedImpl.acc)
+ );
} catch (Exception e) {
throw new SecurityException
(sun.security.util.ResourcesMgr.getString
--- a/jdk/src/share/classes/javax/security/auth/Subject.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/Subject.java Tue Jan 28 11:21:43 2014 -0800
@@ -964,6 +964,10 @@
s.defaultReadObject();
+ // Rewrap the principals into a SecureSet
+ principals = Collections.synchronizedSet(new SecureSet<Principal>
+ (this, PRINCIPAL_SET, principals));
+
// The Credential {@code Set} is not serialized, but we do not
// want the default deserialization routine to set it to null.
this.pubCredentials = Collections.synchronizedSet
--- a/jdk/src/share/classes/javax/security/auth/login/Configuration.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/login/Configuration.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,9 +27,6 @@
import javax.security.auth.AuthPermission;
-import java.io.*;
-import java.util.*;
-import java.net.URI;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
@@ -38,7 +35,7 @@
import java.security.NoSuchProviderException;
import java.security.Provider;
import java.security.Security;
-import java.security.SecurityPermission;
+import java.util.Objects;
import sun.security.jca.GetInstance;
@@ -191,16 +188,9 @@
public abstract class Configuration {
private static Configuration configuration;
- private static ClassLoader contextClassLoader;
- static {
- contextClassLoader = AccessController.doPrivileged
- (new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
- };
+ private final java.security.AccessControlContext acc =
+ java.security.AccessController.getContext();
private static void checkPermission(String type) {
SecurityManager sm = System.getSecurityManager();
@@ -253,17 +243,26 @@
try {
final String finalClass = config_class;
- configuration = AccessController.doPrivileged
- (new PrivilegedExceptionAction<Configuration>() {
- public Configuration run() throws ClassNotFoundException,
- InstantiationException,
- IllegalAccessException {
- return (Configuration)Class.forName
- (finalClass,
- true,
- contextClassLoader).newInstance();
- }
- });
+ Configuration untrustedImpl = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Configuration>() {
+ public Configuration run() throws ClassNotFoundException,
+ InstantiationException,
+ IllegalAccessException {
+ Class<? extends Configuration> implClass = Class.forName(
+ finalClass, false,
+ Thread.currentThread().getContextClassLoader()
+ ).asSubclass(Configuration.class);
+ return implClass.newInstance();
+ }
+ });
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Void>() {
+ public Void run() {
+ setConfiguration(untrustedImpl);
+ return null;
+ }
+ }, Objects.requireNonNull(untrustedImpl.acc)
+ );
} catch (PrivilegedActionException e) {
Exception ee = e.getException();
if (ee instanceof InstantiationException) {
--- a/jdk/src/share/classes/javax/security/auth/login/LoginContext.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/login/LoginContext.java Tue Jan 28 11:21:43 2014 -0800
@@ -209,8 +209,7 @@
private Map<String,?> state = new HashMap<String,Object>();
private Configuration config;
- private boolean configProvided = false;
- private AccessControlContext creatorAcc = null;
+ private AccessControlContext creatorAcc = null; // customized config only
private ModuleInfo[] moduleStack;
private ClassLoader contextClassLoader = null;
private static final Class<?>[] PARAMS = { };
@@ -229,7 +228,7 @@
private void init(String name) throws LoginException {
SecurityManager sm = System.getSecurityManager();
- if (sm != null && !configProvided) {
+ if (sm != null && creatorAcc == null) {
sm.checkPermission(new AuthPermission
("createLoginContext." + name));
}
@@ -252,7 +251,7 @@
AppConfigurationEntry[] entries = config.getAppConfigurationEntry(name);
if (entries == null) {
- if (sm != null && !configProvided) {
+ if (sm != null && creatorAcc == null) {
sm.checkPermission(new AuthPermission
("createLoginContext." + OTHER));
}
@@ -279,7 +278,15 @@
contextClassLoader = java.security.AccessController.doPrivileged
(new java.security.PrivilegedAction<ClassLoader>() {
public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
+ ClassLoader loader =
+ Thread.currentThread().getContextClassLoader();
+ if (loader == null) {
+ // Don't use bootstrap class loader directly to ensure
+ // proper package access control!
+ loader = ClassLoader.getSystemClassLoader();
+ }
+
+ return loader;
}
});
}
@@ -298,10 +305,10 @@
(DEFAULT_HANDLER);
if (defaultHandler == null || defaultHandler.length() == 0)
return null;
- Class<?> c = Class.forName(defaultHandler,
- true,
- finalLoader);
- return (CallbackHandler)c.newInstance();
+ Class<? extends CallbackHandler> c = Class.forName(
+ defaultHandler, true,
+ finalLoader).asSubclass(CallbackHandler.class);
+ return c.newInstance();
}
});
} catch (java.security.PrivilegedActionException pae) {
@@ -309,7 +316,7 @@
}
// secure it with the caller's ACC
- if (this.callbackHandler != null && !configProvided) {
+ if (this.callbackHandler != null && creatorAcc == null) {
this.callbackHandler = new SecureCallbackHandler
(java.security.AccessController.getContext(),
this.callbackHandler);
@@ -498,8 +505,7 @@
CallbackHandler callbackHandler,
Configuration config) throws LoginException {
this.config = config;
- configProvided = (config != null) ? true : false;
- if (configProvided) {
+ if (config != null) {
creatorAcc = java.security.AccessController.getContext();
}
@@ -510,7 +516,7 @@
}
if (callbackHandler == null) {
loadDefaultCallbackHandler();
- } else if (!configProvided) {
+ } else if (creatorAcc == null) {
this.callbackHandler = new SecureCallbackHandler
(java.security.AccessController.getContext(),
callbackHandler);
@@ -577,23 +583,13 @@
}
try {
- if (configProvided) {
- // module invoked in doPrivileged with creatorAcc
- invokeCreatorPriv(LOGIN_METHOD);
- invokeCreatorPriv(COMMIT_METHOD);
- } else {
- // module invoked in doPrivileged
- invokePriv(LOGIN_METHOD);
- invokePriv(COMMIT_METHOD);
- }
+ // module invoked in doPrivileged
+ invokePriv(LOGIN_METHOD);
+ invokePriv(COMMIT_METHOD);
loginSucceeded = true;
} catch (LoginException le) {
try {
- if (configProvided) {
- invokeCreatorPriv(ABORT_METHOD);
- } else {
- invokePriv(ABORT_METHOD);
- }
+ invokePriv(ABORT_METHOD);
} catch (LoginException le2) {
throw le;
}
@@ -628,13 +624,8 @@
("null.subject.logout.called.before.login"));
}
- if (configProvided) {
- // module invoked in doPrivileged with creatorAcc
- invokeCreatorPriv(LOGOUT_METHOD);
- } else {
- // module invoked in doPrivileged
- invokePriv(LOGOUT_METHOD);
- }
+ // module invoked in doPrivileged
+ invokePriv(LOGOUT_METHOD);
}
/**
@@ -677,7 +668,8 @@
/**
* Invokes the login, commit, and logout methods
- * from a LoginModule inside a doPrivileged block.
+ * from a LoginModule inside a doPrivileged block restricted
+ * by creatorAcc (may be null).
*
* This version is called if the caller did not instantiate
* the LoginContext with a Configuration object.
@@ -690,29 +682,6 @@
invoke(methodName);
return null;
}
- });
- } catch (java.security.PrivilegedActionException pae) {
- throw (LoginException)pae.getException();
- }
- }
-
- /**
- * Invokes the login, commit, and logout methods
- * from a LoginModule inside a doPrivileged block restricted
- * by creatorAcc
- *
- * This version is called if the caller instantiated
- * the LoginContext with a Configuration object.
- */
- private void invokeCreatorPriv(final String methodName)
- throws LoginException {
- try {
- java.security.AccessController.doPrivileged
- (new java.security.PrivilegedExceptionAction<Void>() {
- public Void run() throws LoginException {
- invoke(methodName);
- return null;
- }
}, creatorAcc);
} catch (java.security.PrivilegedActionException pae) {
throw (LoginException)pae.getException();
@@ -735,24 +704,24 @@
} else {
// instantiate the LoginModule
- Class<?> c = Class.forName
- (moduleStack[i].entry.getLoginModuleName(),
+ //
+ // Allow any object to be a LoginModule as long as it
+ // conforms to the interface.
+ Class<?> c = Class.forName(
+ moduleStack[i].entry.getLoginModuleName(),
true,
contextClassLoader);
Constructor<?> constructor = c.getConstructor(PARAMS);
Object[] args = { };
-
- // allow any object to be a LoginModule
- // as long as it conforms to the interface
moduleStack[i].module = constructor.newInstance(args);
+ // call the LoginModule's initialize method
methods = moduleStack[i].module.getClass().getMethods();
-
- // call the LoginModule's initialize method
for (mIndex = 0; mIndex < methods.length; mIndex++) {
- if (methods[mIndex].getName().equals(INIT_METHOD))
+ if (methods[mIndex].getName().equals(INIT_METHOD)) {
break;
+ }
}
Object[] initArgs = {subject,
@@ -760,19 +729,28 @@
state,
moduleStack[i].entry.getOptions() };
// invoke the LoginModule initialize method
+ //
+ // Throws ArrayIndexOutOfBoundsException if no such
+ // method defined. May improve to use LoginException in
+ // the future.
methods[mIndex].invoke(moduleStack[i].module, initArgs);
}
// find the requested method in the LoginModule
for (mIndex = 0; mIndex < methods.length; mIndex++) {
- if (methods[mIndex].getName().equals(methodName))
+ if (methods[mIndex].getName().equals(methodName)) {
break;
+ }
}
// set up the arguments to be passed to the LoginModule method
Object[] args = { };
// invoke the LoginModule method
+ //
+ // Throws ArrayIndexOutOfBoundsException if no such
+ // method defined. May improve to use LoginException in
+ // the future.
boolean status = ((Boolean)methods[mIndex].invoke
(moduleStack[i].module, args)).booleanValue();
--- a/jdk/src/share/classes/javax/sound/sampled/AudioInputStream.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/sound/sampled/AudioInputStream.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -193,7 +193,6 @@
* @see #read(byte[], int, int)
* @see #read(byte[])
* @see #available
- * <p>
*/
public int read() throws IOException {
if( frameSize != 1 ) {
--- a/jdk/src/share/classes/javax/sound/sampled/AudioPermission.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/sound/sampled/AudioPermission.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -40,7 +40,7 @@
* The following table lists the possible <code>AudioPermission</code> target names.
* For each name, the table provides a description of exactly what that permission
* allows, as well as a discussion of the risks of granting code the permission.
- * <p>
+ *
*
* <table border=1 cellpadding=5 summary="permission target name, what the permission allows, and associated risks">
* <tr>
--- a/jdk/src/share/classes/javax/sound/sampled/ReverbType.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/sound/sampled/ReverbType.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
@@ -77,7 +77,7 @@
* <p>
*
* <b>Reverberation Types and Parameters</b>
- * <p>
+ *
* <table border=1 cellpadding=5 summary="reverb types and params: decay time, late intensity, late delay, early intensity, and early delay">
*
* <tr>
--- a/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java Tue Jan 28 11:21:43 2014 -0800
@@ -35,6 +35,8 @@
import java.io.InputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.naming.*;
@@ -348,7 +350,17 @@
/*
* Dependent on application
*/
- String strRowsetProperties = System.getProperty("rowset.properties");
+ String strRowsetProperties;
+ try {
+ strRowsetProperties = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ public String run() {
+ return System.getProperty("rowset.properties");
+ }
+ }, null, new PropertyPermission("rowset.properties","read"));
+ } catch (Exception ex) {
+ strRowsetProperties = null;
+ }
+
if (strRowsetProperties != null) {
// Load user's implementation of SyncProvider
// here. -Drowset.properties=/abc/def/pqr.txt
@@ -393,7 +405,16 @@
* load additional properties from -D command line
*/
properties.clear();
- String providerImpls = System.getProperty(ROWSET_SYNC_PROVIDER);
+ String providerImpls;
+ try {
+ providerImpls = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ public String run() {
+ return System.getProperty(ROWSET_SYNC_PROVIDER);
+ }
+ }, null, new PropertyPermission(ROWSET_SYNC_PROVIDER,"read"));
+ } catch (Exception ex) {
+ providerImpls = null;
+ }
if (providerImpls != null) {
int i = 0;
--- a/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java Tue Jan 28 11:21:43 2014 -0800
@@ -115,7 +115,7 @@
/**
* Returns the index-position of the specified object in the list.
*
- * @param anObject
+ * @param anObject the object to return the index of
* @return an int representing the index position, where 0 is
* the first position
*/
--- a/jdk/src/share/classes/javax/swing/JComboBox.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JComboBox.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -675,7 +675,7 @@
* the model and its preferred size obtained, which can be
* relatively expensive.
*
- * @param prototypeDisplayValue
+ * @param prototypeDisplayValue the prototype display value
* @see #getPrototypeDisplayValue
* @since 1.4
* @beaninfo
--- a/jdk/src/share/classes/javax/swing/JEditorPane.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JEditorPane.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -160,9 +160,9 @@
* the character set specified in the <code>ChangedCharSetException</code>
* (which is an <code>IOException</code>).
* </ol>
- * <p>
+ *
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="text/DefaultEditorKit.html">DefaultEditorKit</a>.
--- a/jdk/src/share/classes/javax/swing/JLabel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JLabel.java Tue Jan 28 11:21:43 2014 -0800
@@ -855,7 +855,6 @@
* <code>RIGHT</code>,
* <code>LEADING</code>, or
* <code>TRAILING</code> (the default).
- * @exception IllegalArgumentException
*
* @see SwingConstants
* @beaninfo
--- a/jdk/src/share/classes/javax/swing/JLayeredPane.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JLayeredPane.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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,20 +58,20 @@
* layers makes it easy to ensure that components overlap properly,
* without having to worry about specifying numbers for specific depths:
* <DL>
- * <DT><FONT SIZE="2">DEFAULT_LAYER</FONT></DT>
+ * <DT>DEFAULT_LAYER</DT>
* <DD>The standard layer, where most components go. This the bottommost
* layer.
- * <DT><FONT SIZE="2">PALETTE_LAYER</FONT></DT>
+ * <DT>PALETTE_LAYER</DT>
* <DD>The palette layer sits over the default layer. Useful for floating
* toolbars and palettes, so they can be positioned above other components.
- * <DT><FONT SIZE="2">MODAL_LAYER</FONT></DT>
+ * <DT>MODAL_LAYER</DT>
* <DD>The layer used for modal dialogs. They will appear on top of any
* toolbars, palettes, or standard components in the container.
- * <DT><FONT SIZE="2">POPUP_LAYER</FONT></DT>
+ * <DT>POPUP_LAYER</DT>
* <DD>The popup layer displays above dialogs. That way, the popup windows
* associated with combo boxes, tooltips, and other help text will appear
* above the component, palette, or dialog that generated them.
- * <DT><FONT SIZE="2">DRAG_LAYER</FONT></DT>
+ * <DT>DRAG_LAYER</DT>
* <DD>When dragging a component, reassigning it to the drag layer ensures
* that it is positioned over every other component in the container. When
* finished dragging, it can be reassigned to its normal layer.
--- a/jdk/src/share/classes/javax/swing/JOptionPane.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JOptionPane.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -131,7 +131,7 @@
* <b>Parameters:</b><br>
* The parameters to these methods follow consistent patterns:
* <blockquote>
- * <dl compact>
+ * <dl>
* <dt>parentComponent<dd>
* Defines the <code>Component</code> that is to be the parent of this
* dialog box.
@@ -149,7 +149,7 @@
* <code>String</code> constant.
* However, the type of this parameter is actually <code>Object</code>. Its
* interpretation depends on its type:
- * <dl compact>
+ * <dl>
* <dt>Object[]<dd>An array of objects is interpreted as a series of
* messages (one per object) arranged in a vertical stack.
* The interpretation is recursive -- each object in the
@@ -187,7 +187,7 @@
* <code>String</code>s. But
* the parameter type is an array of <code>Objects</code>.
* A button is created for each object depending on its type:
- * <dl compact>
+ * <dl>
* <dt>Component<dd>The component is added to the button row directly.
* <dt>Icon<dd>A <code>JButton</code> is created with this as its label.
* <dt>other<dd>The <code>Object</code> is converted to a string using its
--- a/jdk/src/share/classes/javax/swing/JTextArea.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JTextArea.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -95,7 +95,7 @@
* </pre>
*
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="text/DefaultEditorKit.html">DefaultEditorKit</a>.
--- a/jdk/src/share/classes/javax/swing/JTextPane.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JTextPane.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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 @@
* be embedded in the flow of text.
*
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="text/DefaultEditorKit.html">DefaultEditorKit</a>.
--- a/jdk/src/share/classes/javax/swing/SwingUtilities.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/SwingUtilities.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,6 +24,7 @@
*/
package javax.swing;
+import sun.reflect.misc.ReflectUtil;
import sun.swing.SwingUtilities2;
import sun.swing.UIAction;
@@ -33,9 +34,6 @@
import java.awt.event.*;
import java.awt.dnd.DropTarget;
-import java.util.Vector;
-import java.util.Hashtable;
-
import java.lang.reflect.*;
import javax.accessibility.*;
@@ -1872,6 +1870,7 @@
static Class<?> loadSystemClass(String className) throws ClassNotFoundException {
+ ReflectUtil.checkPackageAccess(className);
return Class.forName(className, true, Thread.currentThread().
getContextClassLoader());
}
--- a/jdk/src/share/classes/javax/swing/event/EventListenerList.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/event/EventListenerList.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,6 +27,7 @@
import java.io.*;
import java.util.*;
import java.lang.reflect.Array;
+import sun.reflect.misc.ReflectUtil;
/**
* A class that holds a list of EventListeners. A single instance
@@ -271,7 +272,9 @@
while (null != (listenerTypeOrNull = s.readObject())) {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
EventListener l = (EventListener)s.readObject();
- add((Class<EventListener>)Class.forName((String)listenerTypeOrNull, true, cl), l);
+ String name = (String) listenerTypeOrNull;
+ ReflectUtil.checkPackageAccess(name);
+ add((Class<EventListener>)Class.forName(name, true, cl), l);
}
}
--- a/jdk/src/share/classes/javax/swing/plaf/TextUI.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/TextUI.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -105,7 +105,7 @@
* @param biasRet an array to contain the bias for the returned position
* @return the location within the model that best represents the next
* location visual position
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException for an invalid direction
*/
public abstract int getNextVisualPositionFrom(JTextComponent t,
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -1199,7 +1199,7 @@
* can be traversed to determine how the model is being
* represented spatially.
* <p>
- * <font color=red><b>NOTE:</b>The View hierarchy can
+ * <font style="color: red;"><b>NOTE:</b>The View hierarchy can
* be traversed from the root view, and other things
* can be done as well. Things done in this way cannot
* be protected like simple method calls through the TextUI.
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java Tue Jan 28 11:21:43 2014 -0800
@@ -356,12 +356,12 @@
* end points are equal. In such a case, the end y point is slightly
* increased to avoid the overlap.
*
- * @param x1
- * @param y1
- * @param x2
- * @param y2
- * @param midpoints
- * @param colors
+ * @param x1 x1
+ * @param y1 y1
+ * @param x2 x2
+ * @param y2 y2
+ * @param midpoints the midpoints
+ * @param colors the colors
* @return a valid LinearGradientPaint. This method never returns null.
* @throws NullPointerException
* if {@code midpoints} array is null,
@@ -387,11 +387,11 @@
* is non-positive. In such a case, the radius is just slightly
* increased to avoid 0.
*
- * @param x
- * @param y
- * @param r
- * @param midpoints
- * @param colors
+ * @param x x-coordinate
+ * @param y y-coordinate
+ * @param r radius
+ * @param midpoints the midpoints
+ * @param colors the colors
* @return a valid RadialGradientPaint. This method never returns null.
* @throws NullPointerException
* if {@code midpoints} array is null,
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
@@ -645,7 +645,7 @@
* passed to the NimbusStyle constructor. In either case, it looks for
* "background".</p>
*
- * @param ctx
+ * @param ctx SynthContext identifying requester
* @param key must not be null
*/
@Override public Object get(SynthContext ctx, Object key) {
--- a/jdk/src/share/classes/javax/swing/text/CompositeView.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/CompositeView.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -713,7 +713,7 @@
* @param biasRet an array containing the bias that was checked
* @return the location within the model that best represents the next
* north or south location
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException if <code>direction</code> is invalid
* @see #getNextVisualPositionFrom
*
@@ -745,7 +745,7 @@
* @param biasRet an array containing the bias that was checked
* @return the location within the model that best represents the next
* west or east location
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException if <code>direction</code> is invalid
* @see #getNextVisualPositionFrom
*/
--- a/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -43,7 +43,7 @@
* provides a minimal set of actions for a simple editor.
*
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* There are two properties which deal with newlines. The
* system property, <code>line.separator</code>, is defined to be
--- a/jdk/src/share/classes/javax/swing/text/Document.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/Document.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -33,7 +33,7 @@
* interface is to scale from very simple needs (a plain text textfield)
* to complex needs (an HTML or XML document, for example).
*
- * <p><b><font size=+1>Content</font></b>
+ * <p><b>Content</b>
* <p>
* At the simplest level, text can be
* modeled as a linear sequence of characters. To support
@@ -62,7 +62,7 @@
* <li>{@link #getText(int, int)}
* <li>{@link #getText(int, int, javax.swing.text.Segment)}
* </ul>
- * <p><b><font size=+1>Structure</font></b>
+ * <p><b>Structure</b>
* <p>
* Text is rarely represented simply as featureless content. Rather,
* text typically has some sort of structure associated with it.
@@ -83,7 +83,7 @@
* <li>{@link #getRootElements()}
* </ul>
*
- * <p><b><font size=+1>Mutations</font></b>
+ * <p><b>Mutations</b>
* <p>
* All documents need to be able to add and remove simple text.
* Typically, text is inserted and removed via gestures from
@@ -98,7 +98,7 @@
* <li>{@link #createPosition(int)}
* </ul>
*
- * <p><b><font size=+1>Notification</font></b>
+ * <p><b>Notification</b>
* <p>
* Mutations to the <code>Document</code> must be communicated to
* interested observers. The notification of change follows the event model
@@ -152,7 +152,7 @@
* <li><a href="#removeUndoableEditListener(javax.swing.event.UndoableEditListener)">removeUndoableEditListener(UndoableEditListener)</a>
* </ul>
*
- * <p><b><font size=+1>Properties</font></b>
+ * <p><b>Properties</b>
* <p>
* Document implementations will generally have some set of properties
* associated with them at runtime. Two well known properties are the
--- a/jdk/src/share/classes/javax/swing/text/GlyphView.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/GlyphView.java Tue Jan 28 11:21:43 2014 -0800
@@ -1250,7 +1250,7 @@
* is returned as the zero-th element of this array
* @return the location within the model that best represents the next
* location visual position.
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException for an invalid direction
*/
public int getNextVisualPositionFrom(GlyphView v, int pos, Position.Bias b, Shape a,
--- a/jdk/src/share/classes/javax/swing/text/JTextComponent.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/JTextComponent.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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,7 +88,7 @@
* a section in <em>The Java Tutorial.</em>
*
* <dl>
- * <dt><b><font size=+1>Caret Changes</font></b>
+ * <dt><b>Caret Changes</b>
* <dd>
* The caret is a pluggable object in swing text components.
* Notification of changes to the caret position and the selection
@@ -107,7 +107,7 @@
* <b>Note</b>: Non-editable text components also have a caret though
* it may not be painted.
*
- * <dt><b><font size=+1>Commands</font></b>
+ * <dt><b>Commands</b>
* <dd>
* Text components provide a number of commands that can be used
* to manipulate the component. This is essentially the way that
@@ -118,7 +118,7 @@
* found with the {@link #getActions} method. These actions
* can be bound to key events, fired from buttons, etc.
*
- * <dt><b><font size=+1>Text Input</font></b>
+ * <dt><b>Text Input</b>
* <dd>
* The text components support flexible and internationalized text input, using
* keymaps and the input method framework, while maintaining compatibility with
@@ -203,7 +203,7 @@
* <li>caret movement forward and backward
* </ul>
*
- * <dt><b><font size=+1>Model/View Split</font></b>
+ * <dt><b>Model/View Split</b>
* <dd>
* The text components have a model-view split. A text component pulls
* together the objects used to represent the model, view, and controller.
@@ -227,13 +227,13 @@
* {@link DocumentListener}
* interface and registered interest with the model being observed.
*
- * <dt><b><font size=+1>Location Information</font></b>
+ * <dt><b>Location Information</b>
* <dd>
* The capability of determining the location of text in
* the view is provided. There are two methods, {@link #modelToView}
* and {@link #viewToModel} for determining this information.
*
- * <dt><b><font size=+1>Undo/Redo support</font></b>
+ * <dt><b>Undo/Redo support</b>
* <dd>
* Support for an edit history mechanism is provided to allow
* undo/redo operations. The text component does not itself
@@ -243,7 +243,7 @@
* The support is provided by the Document model, which allows
* one to attach UndoableEditListener implementations.
*
- * <dt><b><font size=+1>Thread Safety</font></b>
+ * <dt><b>Thread Safety</b>
* <dd>
* The swing text components provide some support of thread
* safe operations. Because of the high level of configurability
@@ -254,13 +254,13 @@
* The methods that are safe to call asynchronously are marked
* with comments.
*
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="DefaultEditorKit.html">DefaultEditorKit</a>.
*
*
- * <dt><b><font size=+1>Printing support</font></b>
+ * <dt><b>Printing support</b>
* <dd>
* Several {@link #print print} methods are provided for basic
* document printing. If more advanced printing is needed, use the
--- a/jdk/src/share/classes/javax/swing/text/NavigationFilter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/NavigationFilter.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -100,7 +100,7 @@
* @param biasRet Used to return resulting Bias of next position
* @return the location within the model that best represents the next
* location visual position
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException if <code>direction</code>
* doesn't have one of the legal values above
*/
--- a/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -183,7 +183,7 @@
* <p>The following table shows the example document and the results
* of various methods described above.</p>
*
- * <table border=1 cellspacing=0>
+ * <table border=1 cellspacing=0 summary="HTML Content of example above">
* <tr>
* <th>Example</th>
* <th><code>insertAfterStart</code></th>
@@ -994,16 +994,16 @@
*
* <p>Invoking <code>setInnerHTML(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
* <b><div></b>
* \
- * <font color="red"><ul></font>
+ * <font style="color: red;"><ul></font>
* \
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>Parameter <code>elem</code> must not be a leaf element,
@@ -1075,14 +1075,14 @@
*
* <p>Invoking <code>setOuterHTML(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
- * <font color="red"><ul></font>
+ * <font style="color: red;"><ul></font>
* \
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>If either <code>elem</code> or <code>htmlText</code>
@@ -1145,16 +1145,16 @@
*
* <p>Invoking <code>insertAfterStart(elem,
* "<ul><li>")</code> results in the following structure
- * (new elements are <font color="red">in red</font>).</p>
+ * (new elements are <font style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
* <b><div></b>
* / | \
- * <font color="red"><ul></font> <p> <p>
+ * <font style="color: red;"><ul></font> <p> <p>
* /
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>Unlike the <code>insertBeforeStart</code> method, new
@@ -1215,16 +1215,16 @@
*
* <p>Invoking <code>insertBeforeEnd(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
* <b><div></b>
* / | \
- * <p> <p> <font color="red"><ul></font>
+ * <p> <p> <font style="color: red;"><ul></font>
* \
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>Unlike the <code>insertAfterEnd</code> method, new elements
@@ -1282,14 +1282,14 @@
*
* <p>Invoking <code>insertBeforeStart(elem,
* "<ul><li>")</code> results in the following structure
- * (new elements are <font color="red">in red</font>).</p>
+ * (new elements are <font style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* / \
- * <font color="red"><ul></font> <b><div></b>
+ * <font style="color: red;"><ul></font> <b><div></b>
* / / \
- * <font color="red"><li></font> <p> <p>
+ * <font style="color: red;"><li></font> <p> <p>
* </pre>
*
* <p>Unlike the <code>insertAfterStart</code> method, new
@@ -1340,14 +1340,14 @@
*
* <p>Invoking <code>insertAfterEnd(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* / \
- * <b><div></b> <font color="red"><ul></font>
+ * <b><div></b> <font style="color: red;"><ul></font>
* / \ \
- * <p> <p> <font color="red"><li></font>
+ * <p> <p> <font style="color: red;"><li></font>
* </pre>
*
* <p>Unlike the <code>insertBeforeEnd</code> method, new elements
--- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -117,10 +117,10 @@
* support are pseudo selectors, such as <code>A:link { color: red }</code>,
* and the <code>important</code> modifier.
* <p>
- * <font color="red">Note: This implementation is currently
+ * @implNote This implementation is currently
* incomplete. It can be replaced with alternative implementations
* that are complete. Future versions of this class will provide
- * better CSS support.</font>
+ * better CSS support.
*
* @author Timothy Prinzing
* @author Sunita Mani
--- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Tue Jan 28 11:21:43 2014 -0800
@@ -541,9 +541,11 @@
* to last and last, respectively, in the case of a POST
* request.
*/
- if (!failedOnce)
+ if (!failedOnce) {
+ checkURLFile();
requests.prepend(method + " " + getRequestURI()+" " +
httpVersion, null);
+ }
if (!getUseCaches()) {
requests.setIfNotSet ("Cache-Control", "no-cache");
requests.setIfNotSet ("Pragma", "no-cache");
@@ -554,7 +556,12 @@
if (port != -1 && port != url.getDefaultPort()) {
host += ":" + String.valueOf(port);
}
- requests.setIfNotSet("Host", host);
+ String reqHost = requests.findValue("Host");
+ if (reqHost == null ||
+ (!reqHost.equalsIgnoreCase(host) && !checkSetHost()))
+ {
+ requests.set("Host", host);
+ }
requests.setIfNotSet("Accept", acceptString);
/*
@@ -671,6 +678,44 @@
}
}
+ private boolean checkSetHost() {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String name = s.getClass().getName();
+ if (name.equals("sun.plugin2.applet.AWTAppletSecurityManager") ||
+ name.equals("sun.plugin2.applet.FXAppletSecurityManager") ||
+ name.equals("com.sun.javaws.security.JavaWebStartSecurity") ||
+ name.equals("sun.plugin.security.ActivatorSecurityManager"))
+ {
+ int CHECK_SET_HOST = -2;
+ try {
+ s.checkConnect(url.toExternalForm(), CHECK_SET_HOST);
+ } catch (SecurityException ex) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private void checkURLFile() {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String name = s.getClass().getName();
+ if (name.equals("sun.plugin2.applet.AWTAppletSecurityManager") ||
+ name.equals("sun.plugin2.applet.FXAppletSecurityManager") ||
+ name.equals("com.sun.javaws.security.JavaWebStartSecurity") ||
+ name.equals("sun.plugin.security.ActivatorSecurityManager"))
+ {
+ int CHECK_SUBPATH = -3;
+ try {
+ s.checkConnect(url.toExternalForm(), CHECK_SUBPATH);
+ } catch (SecurityException ex) {
+ throw new SecurityException("denied access outside a permitted URL subpath", ex);
+ }
+ }
+ }
+ }
/**
* Create a new HttpClient object, bypassing the cache of
--- a/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -428,6 +428,10 @@
throw new AlreadyBoundException();
InetSocketAddress isa = (local == null) ?
new InetSocketAddress(0) : Net.checkAddress(local);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkListen(isa.getPort());
+ }
NetHooks.beforeTcpBind(fd, isa.getAddress(), isa.getPort());
Net.bind(fd, isa.getAddress(), isa.getPort());
localAddress = Net.localAddress(fd);
--- a/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -572,6 +572,10 @@
throw new AlreadyBoundException();
InetSocketAddress isa = (local == null) ?
new InetSocketAddress(0) : Net.checkAddress(local);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkListen(isa.getPort());
+ }
NetHooks.beforeTcpBind(fd, isa.getAddress(), isa.getPort());
Net.bind(fd, isa.getAddress(), isa.getPort());
localAddress = Net.localAddress(fd);
--- a/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -28,7 +28,10 @@
import java.lang.annotation.*;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
import java.lang.reflect.GenericDeclaration;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.LinkedHashMap;
@@ -40,6 +43,7 @@
import sun.reflect.generics.factory.GenericsFactory;
import sun.reflect.generics.tree.FieldTypeSignature;
import sun.reflect.generics.visitor.Reifier;
+import sun.reflect.misc.ReflectUtil;
/**
* Implementation of <tt>java.lang.reflect.TypeVariable</tt> interface
@@ -95,6 +99,13 @@
TypeVariableImpl<T> make(T decl, String name,
FieldTypeSignature[] bs,
GenericsFactory f) {
+
+ if (!((decl instanceof Class) ||
+ (decl instanceof Method) ||
+ (decl instanceof Constructor))) {
+ throw new AssertionError("Unexpected kind of GenericDeclaration" +
+ decl.getClass().toString());
+ }
return new TypeVariableImpl<T>(decl, name, bs, f);
}
@@ -149,6 +160,13 @@
* @since 1.5
*/
public D getGenericDeclaration(){
+ if (genericDeclaration instanceof Class)
+ ReflectUtil.checkPackageAccess((Class)genericDeclaration);
+ else if ((genericDeclaration instanceof Method) ||
+ (genericDeclaration instanceof Constructor))
+ ReflectUtil.conservativeCheckMemberAccess((Member)genericDeclaration);
+ else
+ throw new AssertionError("Unexpected kind of GenericDeclaration");
return genericDeclaration;
}
@@ -164,7 +182,8 @@
@Override
public boolean equals(Object o) {
- if (o instanceof TypeVariable) {
+ if (o instanceof TypeVariable &&
+ o.getClass() == TypeVariableImpl.class) {
TypeVariable<?> that = (TypeVariable<?>) o;
GenericDeclaration thatDecl = that.getGenericDeclaration();
--- a/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,11 +26,13 @@
package sun.reflect.misc;
+import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import sun.reflect.Reflection;
+import sun.security.util.SecurityConstants;
public final class ReflectUtil {
@@ -118,6 +120,40 @@
}
/**
+ * Does a conservative approximation of member access check. Use this if
+ * you don't have an actual 'userland' caller Class/ClassLoader available.
+ * This might be more restrictive than a precise member access check where
+ * you have a caller, but should never allow a member access that is
+ * forbidden.
+ *
+ * @param m the {@code Member} about to be accessed
+ */
+ public static void conservativeCheckMemberAccess(Member m) throws SecurityException{
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm == null)
+ return;
+
+ // Check for package access on the declaring class.
+ //
+ // In addition, unless the member and the declaring class are both
+ // public check for access declared member permissions.
+ //
+ // This is done regardless of ClassLoader relations between the {@code
+ // Member m} and any potential caller.
+
+ final Class<?> declaringClass = m.getDeclaringClass();
+
+ checkPackageAccess(declaringClass);
+
+ if (Modifier.isPublic(m.getModifiers()) &&
+ Modifier.isPublic(declaringClass.getModifiers()))
+ return;
+
+ // Check for declared member access.
+ sm.checkPermission(SecurityConstants.CHECK_MEMBER_ACCESS_PERMISSION);
+ }
+
+ /**
* Checks package access on the given class.
*
* If it is a {@link Proxy#isProxyClass(java.lang.Class)} that implements
--- a/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -94,8 +94,23 @@
RMIServerSocketFactory ssf)
throws RemoteException
{
- LiveRef lref = new LiveRef(id, port, csf, ssf);
- setup(new UnicastServerRef2(lref));
+ if (port == Registry.REGISTRY_PORT && System.getSecurityManager() != null) {
+ // grant permission for default port only.
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws RemoteException {
+ LiveRef lref = new LiveRef(id, port, csf, ssf);
+ setup(new UnicastServerRef2(lref));
+ return null;
+ }
+ }, null, new SocketPermission("localhost:"+port, "listen,accept"));
+ } catch (PrivilegedActionException pae) {
+ throw (RemoteException)pae.getException();
+ }
+ } else {
+ LiveRef lref = new LiveRef(id, port, csf, ssf);
+ setup(new UnicastServerRef2(lref));
+ }
}
/**
@@ -104,8 +119,23 @@
public RegistryImpl(int port)
throws RemoteException
{
- LiveRef lref = new LiveRef(id, port);
- setup(new UnicastServerRef(lref));
+ if (port == Registry.REGISTRY_PORT && System.getSecurityManager() != null) {
+ // grant permission for default port only.
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws RemoteException {
+ LiveRef lref = new LiveRef(id, port);
+ setup(new UnicastServerRef(lref));
+ return null;
+ }
+ }, null, new SocketPermission("localhost:"+port, "listen,accept"));
+ } catch (PrivilegedActionException pae) {
+ throw (RemoteException)pae.getException();
+ }
+ } else {
+ LiveRef lref = new LiveRef(id, port);
+ setup(new UnicastServerRef(lref));
+ }
}
/*
@@ -352,7 +382,7 @@
public RegistryImpl run() throws RemoteException {
return new RegistryImpl(regPort);
}
- }, getAccessControlContext());
+ }, getAccessControlContext(regPort));
} catch (PrivilegedActionException ex) {
throw (RemoteException) ex.getException();
}
@@ -382,7 +412,7 @@
* The approach used here is taken from the similar method
* getAccessControlContext() in the sun.applet.AppletPanel class.
*/
- private static AccessControlContext getAccessControlContext() {
+ private static AccessControlContext getAccessControlContext(int port) {
// begin with permissions granted to all code in current policy
PermissionCollection perms = AccessController.doPrivileged(
new java.security.PrivilegedAction<PermissionCollection>() {
@@ -404,6 +434,7 @@
* related classes themselves are more tightly limited by RMI.
*/
perms.add(new SocketPermission("*", "connect,accept"));
+ perms.add(new SocketPermission("localhost:"+port, "listen,accept"));
perms.add(new RuntimePermission("accessClassInPackage.sun.jvmstat.*"));
perms.add(new RuntimePermission("accessClassInPackage.sun.jvm.hotspot.*"));
--- a/jdk/src/share/classes/sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
@@ -45,11 +45,12 @@
private final int majorVersion;
private final int minorVersion;
+ private final byte[] encodedSecret;
/**
* Constructs a new TlsRsaPremasterSecretParameterSpec.
- *
- * <p>The version numbers will be placed inside the premaster secret to
+ * <P>
+ * The version numbers will be placed inside the premaster secret to
* detect version rollbacks attacks as described in the TLS specification.
* Note that they do not indicate the protocol version negotiated for
* the handshake.
@@ -65,7 +66,42 @@
this.majorVersion =
TlsMasterSecretParameterSpec.checkVersion(majorVersion);
this.minorVersion =
- TlsMasterSecretParameterSpec.checkVersion(minorVersion); }
+ TlsMasterSecretParameterSpec.checkVersion(minorVersion);
+ this.encodedSecret = null;
+ }
+
+ /**
+ * Constructs a new TlsRsaPremasterSecretParameterSpec.
+ * <P>
+ * The version numbers will be placed inside the premaster secret to
+ * detect version rollbacks attacks as described in the TLS specification.
+ * Note that they do not indicate the protocol version negotiated for
+ * the handshake.
+ * <P>
+ * Usually, the encoded secret key is a random number that acts as
+ * dummy pre_master_secret to avoid vulnerabilities described by
+ * section 7.4.7.1, RFC 5246.
+ *
+ * @param majorVersion the major number of the protocol version
+ * @param minorVersion the minor number of the protocol version
+ * @param encodedSecret the encoded secret key
+ *
+ * @throws IllegalArgumentException if minorVersion or majorVersion are
+ * negative or larger than 255, or encodedSecret is not exactly 48 bytes.
+ */
+ public TlsRsaPremasterSecretParameterSpec(int majorVersion,
+ int minorVersion, byte[] encodedSecret) {
+ this.majorVersion =
+ TlsMasterSecretParameterSpec.checkVersion(majorVersion);
+ this.minorVersion =
+ TlsMasterSecretParameterSpec.checkVersion(minorVersion);
+
+ if (encodedSecret == null || encodedSecret.length != 48) {
+ throw new IllegalArgumentException(
+ "Encoded secret is not exactly 48 bytes");
+ }
+ this.encodedSecret = encodedSecret.clone();
+ }
/**
* Returns the major version.
@@ -84,4 +120,13 @@
public int getMinorVersion() {
return minorVersion;
}
+
+ /**
+ * Returns the encoded secret.
+ *
+ * @return the encoded secret, may be null if no encoded secret.
+ */
+ public byte[] getEncodedSecret() {
+ return encodedSecret == null ? null : encodedSecret.clone();
+ }
}
--- a/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -451,30 +451,7 @@
// see JCE spec
protected Key engineUnwrap(byte[] wrappedKey, String algorithm,
int type) throws InvalidKeyException, NoSuchAlgorithmException {
- if (algorithm.equals("TlsRsaPremasterSecret")) {
- // the instance variable "session" has been initialized for
- // decrypt mode, so use a local variable instead.
- Session s = null;
- try {
- s = token.getObjSession();
- long keyType = CKK_GENERIC_SECRET;
- CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] {
- new CK_ATTRIBUTE(CKA_CLASS, CKO_SECRET_KEY),
- new CK_ATTRIBUTE(CKA_KEY_TYPE, keyType),
- };
- attributes = token.getAttributes
- (O_IMPORT, CKO_SECRET_KEY, keyType, attributes);
- long keyID = token.p11.C_UnwrapKey(s.id(),
- new CK_MECHANISM(mechanism), p11Key.keyID, wrappedKey,
- attributes);
- return P11Key.secretKey(s, keyID, algorithm, 48 << 3,
- attributes);
- } catch (PKCS11Exception e) {
- throw new InvalidKeyException("unwrap() failed", e);
- } finally {
- token.releaseSession(s);
- }
- }
+
// XXX implement unwrap using C_Unwrap() for all keys
implInit(Cipher.DECRYPT_MODE, p11Key);
if (wrappedKey.length > maxInputSize) {
--- a/jdk/src/share/classes/sun/security/pkcs11/P11TlsRsaPremasterSecretGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11TlsRsaPremasterSecretGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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,23 +88,33 @@
throw new IllegalStateException
("TlsRsaPremasterSecretGenerator must be initialized");
}
- CK_VERSION version =
- new CK_VERSION(spec.getMajorVersion(), spec.getMinorVersion());
- Session session = null;
- try {
- session = token.getObjSession();
- CK_ATTRIBUTE[] attributes = token.getAttributes
- (O_GENERATE, CKO_SECRET_KEY, CKK_GENERIC_SECRET, new CK_ATTRIBUTE[0]);
- long keyID = token.p11.C_GenerateKey
- (session.id(), new CK_MECHANISM(mechanism, version), attributes);
- SecretKey key = P11Key.secretKey
- (session, keyID, "TlsRsaPremasterSecret", 48 << 3, attributes);
- return key;
- } catch (PKCS11Exception e) {
- throw new ProviderException("Could not generate premaster secret", e);
- } finally {
- token.releaseSession(session);
+
+ byte[] b = spec.getEncodedSecret();
+ if (b == null) {
+ CK_VERSION version = new CK_VERSION(
+ spec.getMajorVersion(), spec.getMinorVersion());
+ Session session = null;
+ try {
+ session = token.getObjSession();
+ CK_ATTRIBUTE[] attributes = token.getAttributes(
+ O_GENERATE, CKO_SECRET_KEY,
+ CKK_GENERIC_SECRET, new CK_ATTRIBUTE[0]);
+ long keyID = token.p11.C_GenerateKey(session.id(),
+ new CK_MECHANISM(mechanism, version), attributes);
+ SecretKey key = P11Key.secretKey(session,
+ keyID, "TlsRsaPremasterSecret", 48 << 3, attributes);
+ return key;
+ } catch (PKCS11Exception e) {
+ throw new ProviderException(
+ "Could not generate premaster secret", e);
+ } finally {
+ token.releaseSession(session);
+ }
}
+
+ // Won't worry, the TlsRsaPremasterSecret will be soon converted to
+ // TlsMasterSecret.
+ return new SecretKeySpec(b, "TlsRsaPremasterSecret");
}
}
--- a/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, 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
@@ -43,10 +43,8 @@
* These are the only platforms we currently support, but other optimized
* variants could be added as needed.
*
- * NOTE that because this code performs unchecked direct memory access, it
- * MUST be restricted to trusted code. It is imperative that the caller protects
- * against out of bounds memory access by performing the necessary bounds
- * checks before calling methods in this class.
+ * NOTE that ArrayIndexOutOfBoundsException will be thrown if the bounds checks
+ * failed.
*
* This class may also be helpful in improving the performance of the
* crypto code in the SunJCE provider. However, for now it is only accessible by
@@ -103,6 +101,10 @@
* byte[] to int[] conversion, little endian byte order.
*/
static void b2iLittle(byte[] in, int inOfs, int[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len) ||
+ (outOfs < 0) || ((out.length - outOfs) < len/4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
len += inOfs;
@@ -131,6 +133,10 @@
// Special optimization of b2iLittle(in, inOfs, out, 0, 64)
static void b2iLittle64(byte[] in, int inOfs, int[] out) {
+ if ((inOfs < 0) || ((in.length - inOfs) < 64) ||
+ (out.length < 16)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
out[ 0] = unsafe.getInt(in, (long)(inOfs ));
@@ -176,6 +182,10 @@
* int[] to byte[] conversion, little endian byte order.
*/
static void i2bLittle(int[] in, int inOfs, byte[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len/4) ||
+ (outOfs < 0) || ((out.length - outOfs) < len)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
outOfs += byteArrayOfs;
len += outOfs;
@@ -204,6 +214,9 @@
// Store one 32-bit value into out[outOfs..outOfs+3] in little endian order.
static void i2bLittle4(int val, byte[] out, int outOfs) {
+ if ((outOfs < 0) || ((out.length - outOfs) < 4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
unsafe.putInt(out, (long)(byteArrayOfs + outOfs), val);
} else if (bigEndian && ((outOfs & 3) == 0)) {
@@ -220,6 +233,10 @@
* byte[] to int[] conversion, big endian byte order.
*/
static void b2iBig(byte[] in, int inOfs, int[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len) ||
+ (outOfs < 0) || ((out.length - outOfs) < len/4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
len += inOfs;
@@ -248,6 +265,10 @@
// Special optimization of b2iBig(in, inOfs, out, 0, 64)
static void b2iBig64(byte[] in, int inOfs, int[] out) {
+ if ((inOfs < 0) || ((in.length - inOfs) < 64) ||
+ (out.length < 16)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
out[ 0] = reverseBytes(unsafe.getInt(in, (long)(inOfs )));
@@ -293,6 +314,10 @@
* int[] to byte[] conversion, big endian byte order.
*/
static void i2bBig(int[] in, int inOfs, byte[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len/4) ||
+ (outOfs < 0) || ((out.length - outOfs) < len)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
outOfs += byteArrayOfs;
len += outOfs;
@@ -321,6 +346,9 @@
// Store one 32-bit value into out[outOfs..outOfs+3] in big endian order.
static void i2bBig4(int val, byte[] out, int outOfs) {
+ if ((outOfs < 0) || ((out.length - outOfs) < 4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
unsafe.putInt(out, (long)(byteArrayOfs + outOfs), reverseBytes(val));
} else if (bigEndian && ((outOfs & 3) == 0)) {
@@ -337,6 +365,10 @@
* byte[] to long[] conversion, big endian byte order.
*/
static void b2lBig(byte[] in, int inOfs, long[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len) ||
+ (outOfs < 0) || ((out.length - outOfs) < len/8)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
len += inOfs;
@@ -378,6 +410,10 @@
// Special optimization of b2lBig(in, inOfs, out, 0, 128)
static void b2lBig128(byte[] in, int inOfs, long[] out) {
+ if ((inOfs < 0) || ((in.length - inOfs) < 128) ||
+ (out.length < 16)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
out[ 0] = reverseBytes(unsafe.getLong(in, (long)(inOfs )));
@@ -406,6 +442,10 @@
* long[] to byte[] conversion, big endian byte order.
*/
static void l2bBig(long[] in, int inOfs, byte[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len/8) ||
+ (outOfs < 0) || ((out.length - outOfs) < len)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
len += outOfs;
while (outOfs < len) {
long i = in[inOfs++];
@@ -419,5 +459,4 @@
out[outOfs++] = (byte)(i );
}
}
-
}
--- a/jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Tue Jan 28 11:21:43 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
@@ -446,10 +446,28 @@
}
} else if (responderKeyId != null) {
for (X509CertImpl cert : certs) {
+ // Match responder's key identifier against the cert's SKID
+ // This will match if the SKID is encoded using the 160-bit
+ // SHA-1 hash method as defined in RFC 5280.
KeyIdentifier certKeyId = cert.getSubjectKeyId();
if (certKeyId != null && responderKeyId.equals(certKeyId)) {
signerCert = cert;
break;
+ } else {
+ // The certificate does not have a SKID or may have
+ // been using a different algorithm (ex: see RFC 7093).
+ // Check if the responder's key identifier matches
+ // against a newly generated key identifier of the
+ // cert's public key using the 160-bit SHA-1 method.
+ try {
+ certKeyId = new KeyIdentifier(cert.getPublicKey());
+ } catch (IOException e) {
+ // ignore
+ }
+ if (responderKeyId.equals(certKeyId)) {
+ signerCert = cert;
+ break;
+ }
}
}
}
--- a/jdk/src/share/classes/sun/security/rsa/RSAPadding.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPadding.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -318,33 +318,53 @@
/**
* PKCS#1 v1.5 unpadding (blocktype 1 and 2).
+ *
+ * Note that we want to make it a constant-time operation
*/
private byte[] unpadV15(byte[] padded) throws BadPaddingException {
int k = 0;
+ BadPaddingException bpe = null;
+
if (padded[k++] != 0) {
- throw new BadPaddingException("Data must start with zero");
+ bpe = new BadPaddingException("Data must start with zero");
}
- if (padded[k++] != type) {
- throw new BadPaddingException("Blocktype mismatch: " + padded[1]);
+ if (padded[k++] != type && bpe == null) {
+ bpe = new BadPaddingException("Blocktype mismatch: " + padded[1]);
}
- while (true) {
+ int p = 0;
+ while (k < padded.length) {
int b = padded[k++] & 0xff;
- if (b == 0) {
- break;
+ if (b == 0 && p == 0) {
+ p = k;
}
- if (k == padded.length) {
- throw new BadPaddingException("Padding string not terminated");
+ if (k == padded.length && p == 0 && bpe == null) {
+ bpe = new BadPaddingException("Padding string not terminated");
}
- if ((type == PAD_BLOCKTYPE_1) && (b != 0xff)) {
- throw new BadPaddingException("Padding byte not 0xff: " + b);
+ if ((type == PAD_BLOCKTYPE_1) && (b != 0xff) &&
+ p == 0 && bpe == null) {
+ bpe = new BadPaddingException("Padding byte not 0xff: " + b);
}
}
- int n = padded.length - k;
- if (n > maxDataSize) {
- throw new BadPaddingException("Padding string too short");
+ int n = padded.length - p;
+ if (n > maxDataSize && bpe == null) {
+ bpe = new BadPaddingException("Padding string too short");
}
+
+ // copy useless padding array for a constant-time method
+ //
+ // Is it necessary?
+ byte[] padding = new byte[p];
+ System.arraycopy(padded, 0, padding, 0, p);
+
byte[] data = new byte[n];
- System.arraycopy(padded, padded.length - n, data, 0, n);
+ System.arraycopy(padded, p, data, 0, n);
+
+ if (bpe == null) {
+ bpe = new BadPaddingException("Unused exception");
+ } else {
+ throw bpe;
+ }
+
return data;
}
--- a/jdk/src/share/classes/sun/security/ssl/CipherSuite.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/ssl/CipherSuite.java Tue Jan 28 11:21:43 2014 -0800
@@ -985,13 +985,45 @@
// ID Key Exchange Cipher A obs suprt PRF
// ====== ============ ========= = === ===== ========
-
- // Placeholder for cipher suites in GCM mode.
+ // Suite B compliant cipher suites, see RFC 6460.
//
- // For better compatibility and interoperability, we decrease the
- // priority of cipher suites in GCM mode for a while as GCM
- // technologies mature in the industry. Eventually we'll move
- // the GCM suites here.
+ // Note that, at present this provider is not Suite B compliant. The
+ // preference order of the GCM cipher suites does not follow the spec
+ // of RFC 6460. In this section, only two cipher suites are listed
+ // so that applications can make use of Suite-B compliant cipher
+ // suite firstly.
+ add("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
+ 0xc02c, --p, K_ECDHE_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
+ 0xc02b, --p, K_ECDHE_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+
+ // AES_256(GCM)
+ add("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
+ 0xc030, --p, K_ECDHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_RSA_WITH_AES_256_GCM_SHA384",
+ 0x009d, --p, K_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
+ 0xc02e, --p, K_ECDH_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
+ 0xc032, --p, K_ECDH_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
+ 0x009f, --p, K_DHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
+ 0x00a3, --p, K_DHE_DSS, B_AES_256_GCM, T, max, tls12, P_SHA384);
+
+ // AES_128(GCM)
+ add("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
+ 0xc02f, --p, K_ECDHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_RSA_WITH_AES_128_GCM_SHA256",
+ 0x009c, --p, K_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
+ 0xc02d, --p, K_ECDH_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
+ 0xc031, --p, K_ECDH_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
+ 0x009e, --p, K_DHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
+ 0x00a2, --p, K_DHE_DSS, B_AES_128_GCM, T, max, tls12, P_SHA256);
// AES_256(CBC)
add("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
@@ -1067,50 +1099,6 @@
add("TLS_ECDH_RSA_WITH_RC4_128_SHA",
0xC00C, --p, K_ECDH_RSA, B_RC4_128, N);
- // Cipher suites in GCM mode, see RFC 5288/5289.
- //
- // We may increase the priority of cipher suites in GCM mode when
- // GCM technologies become mature in the industry.
-
- // Suite B compliant cipher suites, see RFC 6460.
- //
- // Note that, at present this provider is not Suite B compliant. The
- // preference order of the GCM cipher suites does not follow the spec
- // of RFC 6460.
- add("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
- 0xc02c, --p, K_ECDHE_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
- 0xc02b, --p, K_ECDHE_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
-
- // AES_256(GCM)
- add("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- 0xc030, --p, K_ECDHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_RSA_WITH_AES_256_GCM_SHA384",
- 0x009d, --p, K_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
- 0xc02e, --p, K_ECDH_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
- 0xc032, --p, K_ECDH_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
- 0x009f, --p, K_DHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
- 0x00a3, --p, K_DHE_DSS, B_AES_256_GCM, T, max, tls12, P_SHA384);
-
- // AES_128(GCM)
- add("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
- 0xc02f, --p, K_ECDHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_RSA_WITH_AES_128_GCM_SHA256",
- 0x009c, --p, K_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
- 0xc02d, --p, K_ECDH_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
- 0xc031, --p, K_ECDH_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
- 0x009e, --p, K_DHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
- 0x00a2, --p, K_DHE_DSS, B_AES_128_GCM, T, max, tls12, P_SHA256);
- // End of cipher suites in GCM mode.
-
// 3DES_EDE
add("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
0xC008, --p, K_ECDHE_ECDSA, B_3DES, T);
--- a/jdk/src/share/classes/sun/security/ssl/Handshaker.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/ssl/Handshaker.java Tue Jan 28 11:21:43 2014 -0800
@@ -1104,94 +1104,23 @@
clnt_random.random_bytes, svr_random.random_bytes,
prfHashAlg, prfHashLength, prfBlockSize);
- SecretKey masterSecret;
try {
KeyGenerator kg = JsseJce.getKeyGenerator(masterAlg);
kg.init(spec);
- masterSecret = kg.generateKey();
- } catch (GeneralSecurityException e) {
+ return kg.generateKey();
+ } catch (InvalidAlgorithmParameterException |
+ NoSuchAlgorithmException iae) {
+ // unlikely to happen, otherwise, must be a provider exception
+ //
// For RSA premaster secrets, do not signal a protocol error
// due to the Bleichenbacher attack. See comments further down.
- if (!preMasterSecret.getAlgorithm().equals(
- "TlsRsaPremasterSecret")) {
- throw new ProviderException(e);
- }
-
if (debug != null && Debug.isOn("handshake")) {
System.out.println("RSA master secret generation error:");
- e.printStackTrace(System.out);
- }
-
- if (requestedVersion != null) {
- preMasterSecret =
- RSAClientKeyExchange.generateDummySecret(requestedVersion);
- } else {
- preMasterSecret =
- RSAClientKeyExchange.generateDummySecret(protocolVersion);
+ iae.printStackTrace(System.out);
}
-
- // recursive call with new premaster secret
- return calculateMasterSecret(preMasterSecret, null);
- }
-
- // if no version check requested (client side handshake), or version
- // information is not available (not an RSA premaster secret),
- // return master secret immediately.
- if ((requestedVersion == null) ||
- !(masterSecret instanceof TlsMasterSecret)) {
- return masterSecret;
- }
-
- // we have checked the ClientKeyExchange message when reading TLS
- // record, the following check is necessary to ensure that
- // JCE provider does not ignore the checking, or the previous
- // checking process bypassed the premaster secret version checking.
- TlsMasterSecret tlsKey = (TlsMasterSecret)masterSecret;
- int major = tlsKey.getMajorVersion();
- int minor = tlsKey.getMinorVersion();
- if ((major < 0) || (minor < 0)) {
- return masterSecret;
- }
+ throw new ProviderException(iae);
- // check if the premaster secret version is ok
- // the specification says that it must be the maximum version supported
- // by the client from its ClientHello message. However, many
- // implementations send the negotiated version, so accept both
- // for SSL v3.0 and TLS v1.0.
- // NOTE that we may be comparing two unsupported version numbers, which
- // is why we cannot use object reference equality in this special case.
- ProtocolVersion premasterVersion =
- ProtocolVersion.valueOf(major, minor);
- boolean versionMismatch = (premasterVersion.v != requestedVersion.v);
-
- /*
- * we never checked the client_version in server side
- * for TLS v1.0 and SSL v3.0. For compatibility, we
- * maintain this behavior.
- */
- if (versionMismatch && requestedVersion.v <= ProtocolVersion.TLS10.v) {
- versionMismatch = (premasterVersion.v != protocolVersion.v);
}
-
- if (versionMismatch == false) {
- // check passed, return key
- return masterSecret;
- }
-
- // Due to the Bleichenbacher attack, do not signal a protocol error.
- // Generate a random premaster secret and continue with the handshake,
- // which will fail when verifying the finished messages.
- // For more information, see comments in PreMasterSecret.
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println("RSA PreMasterSecret version error: expected"
- + protocolVersion + " or " + requestedVersion + ", decrypted: "
- + premasterVersion);
- }
- preMasterSecret =
- RSAClientKeyExchange.generateDummySecret(requestedVersion);
-
- // recursive call with new premaster secret
- return calculateMasterSecret(preMasterSecret, null);
}
/*
--- a/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, 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
@@ -133,26 +133,37 @@
} else {
encrypted = new byte [messageSize];
if (input.read(encrypted) != messageSize) {
- throw new SSLProtocolException
- ("SSL: read PreMasterSecret: short read");
+ throw new SSLProtocolException(
+ "SSL: read PreMasterSecret: short read");
}
}
+ Exception failover = null;
+ byte[] encoded = null;
try {
Cipher cipher = JsseJce.getCipher(JsseJce.CIPHER_RSA_PKCS1);
- cipher.init(Cipher.UNWRAP_MODE, privateKey);
- preMaster = (SecretKey)cipher.unwrap(encrypted,
- "TlsRsaPremasterSecret", Cipher.SECRET_KEY);
+ // Cannot generate key here, please don't use Cipher.UNWRAP_MODE!
+ cipher.init(Cipher.DECRYPT_MODE, privateKey);
+ encoded = cipher.doFinal(encrypted);
+ } catch (BadPaddingException bpe) {
+ failover = bpe;
+ encoded = null;
+ } catch (IllegalBlockSizeException ibse) {
+ // the message it too big to process with RSA
+ throw new SSLProtocolException(
+ "Unable to process PreMasterSecret, may be too big");
+ } catch (Exception e) {
+ // unlikely to happen, otherwise, must be a provider exception
+ if (debug != null && Debug.isOn("handshake")) {
+ System.out.println("RSA premaster secret decryption error:");
+ e.printStackTrace(System.out);
+ }
+ throw new RuntimeException("Could not generate dummy secret", e);
+ }
- // polish the premaster secret
- preMaster = polishPreMasterSecretKey(currentVersion, maxVersion,
- generator, preMaster, null);
- } catch (Exception e) {
- // polish the premaster secret
- preMaster =
- polishPreMasterSecretKey(currentVersion, maxVersion,
- generator, null, e);
- }
+ // polish the premaster secret
+ preMaster = polishPreMasterSecretKey(
+ currentVersion, maxVersion, generator, encoded, failover);
}
/**
@@ -163,85 +174,74 @@
*
* RFC 5246 describes the approach as :
*
- * 1. Generate a string R of 46 random bytes
+ * 1. Generate a string R of 48 random bytes
*
* 2. Decrypt the message to recover the plaintext M
*
* 3. If the PKCS#1 padding is not correct, or the length of message
* M is not exactly 48 bytes:
- * pre_master_secret = ClientHello.client_version || R
+ * pre_master_secret = R
* else If ClientHello.client_version <= TLS 1.0, and version
* number check is explicitly disabled:
- * pre_master_secret = M
+ * premaster secret = M
+ * else If M[0..1] != ClientHello.client_version:
+ * premaster secret = R
* else:
- * pre_master_secret = ClientHello.client_version || M[2..47]
+ * premaster secret = M
+ *
+ * Note that #2 has completed before the call of this method.
*/
private SecretKey polishPreMasterSecretKey(ProtocolVersion currentVersion,
ProtocolVersion clientHelloVersion, SecureRandom generator,
- SecretKey secretKey, Exception failoverException) {
+ byte[] encoded, Exception failoverException) {
this.protocolVersion = clientHelloVersion;
+ if (generator == null) {
+ generator = new SecureRandom();
+ }
+ byte[] random = new byte[48];
+ generator.nextBytes(random);
- if (failoverException == null && secretKey != null) {
+ if (failoverException == null && encoded != null) {
// check the length
- byte[] encoded = secretKey.getEncoded();
- if (encoded == null) { // unable to get the encoded key
+ if (encoded.length != 48) {
if (debug != null && Debug.isOn("handshake")) {
System.out.println(
- "unable to get the plaintext of the premaster secret");
+ "incorrect length of premaster secret: " +
+ encoded.length);
}
- int keySize = KeyUtil.getKeySize(secretKey);
- if (keySize > 0 && keySize != 384) { // 384 = 48 * 8
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println(
- "incorrect length of premaster secret: " +
- (keySize/8));
- }
-
- return generateDummySecret(clientHelloVersion);
- }
+ return generatePreMasterSecret(
+ clientHelloVersion, random, generator);
+ }
- // The key size is exactly 48 bytes or not accessible.
- //
- // Conservatively, pass the checking to master secret
- // calculation.
- return secretKey;
- } else if (encoded.length == 48) {
- // check the version
- if (clientHelloVersion.major == encoded[0] &&
- clientHelloVersion.minor == encoded[1]) {
+ if (clientHelloVersion.major != encoded[0] ||
+ clientHelloVersion.minor != encoded[1]) {
- return secretKey;
- } else if (clientHelloVersion.v <= ProtocolVersion.TLS10.v &&
- currentVersion.major == encoded[0] &&
- currentVersion.minor == encoded[1]) {
+ if (clientHelloVersion.v <= ProtocolVersion.TLS10.v &&
+ currentVersion.major == encoded[0] &&
+ currentVersion.minor == encoded[1]) {
/*
* For compatibility, we maintain the behavior that the
* version in pre_master_secret can be the negotiated
* version for TLS v1.0 and SSL v3.0.
*/
this.protocolVersion = currentVersion;
- return secretKey;
- }
-
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println("Mismatching Protocol Versions, " +
- "ClientHello.client_version is " + clientHelloVersion +
- ", while PreMasterSecret.client_version is " +
- ProtocolVersion.valueOf(encoded[0], encoded[1]));
- }
+ } else {
+ if (debug != null && Debug.isOn("handshake")) {
+ System.out.println("Mismatching Protocol Versions, " +
+ "ClientHello.client_version is " +
+ clientHelloVersion +
+ ", while PreMasterSecret.client_version is " +
+ ProtocolVersion.valueOf(encoded[0], encoded[1]));
+ }
- return generateDummySecret(clientHelloVersion);
- } else {
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println(
- "incorrect length of premaster secret: " +
- encoded.length);
+ encoded = random;
}
+ }
- return generateDummySecret(clientHelloVersion);
- }
+ return generatePreMasterSecret(
+ clientHelloVersion, encoded, generator);
}
if (debug != null && Debug.isOn("handshake") &&
@@ -250,11 +250,14 @@
failoverException.printStackTrace(System.out);
}
- return generateDummySecret(clientHelloVersion);
+ return generatePreMasterSecret(clientHelloVersion, random, generator);
}
// generate a premaster secret with the specified version number
- static SecretKey generateDummySecret(ProtocolVersion version) {
+ private static SecretKey generatePreMasterSecret(
+ ProtocolVersion version, byte[] encodedSecret,
+ SecureRandom generator) {
+
if (debug != null && Debug.isOn("handshake")) {
System.out.println("Generating a random fake premaster secret");
}
@@ -263,11 +266,17 @@
String s = ((version.v >= ProtocolVersion.TLS12.v) ?
"SunTls12RsaPremasterSecret" : "SunTlsRsaPremasterSecret");
KeyGenerator kg = JsseJce.getKeyGenerator(s);
- kg.init(new TlsRsaPremasterSecretParameterSpec
- (version.major, version.minor));
+ kg.init(new TlsRsaPremasterSecretParameterSpec(
+ version.major, version.minor, encodedSecret), generator);
return kg.generateKey();
- } catch (GeneralSecurityException e) {
- throw new RuntimeException("Could not generate dummy secret", e);
+ } catch (InvalidAlgorithmParameterException |
+ NoSuchAlgorithmException iae) {
+ // unlikely to happen, otherwise, must be a provider exception
+ if (debug != null && Debug.isOn("handshake")) {
+ System.out.println("RSA premaster secret generation error:");
+ iae.printStackTrace(System.out);
+ }
+ throw new RuntimeException("Could not generate dummy secret", iae);
}
}
--- a/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Tue Jan 28 11:21:43 2014 -0800
@@ -158,8 +158,13 @@
private String altSignerClasspath = null;
private ZipFile zipFile = null;
+ // Informational warnings
+ private boolean hasExpiringCert = false;
+ private boolean noTimestamp = false;
+ private Date expireDate = new Date(0L); // used in noTimestamp warning
+
+ // Severe warnings
private boolean hasExpiredCert = false;
- private boolean hasExpiringCert = false;
private boolean notYetValidCert = false;
private boolean chainNotValidated = false;
private boolean notSignedByAlias = false;
@@ -258,9 +263,6 @@
if (strict) {
int exitCode = 0;
- if (hasExpiringCert) {
- exitCode |= 2;
- }
if (chainNotValidated || hasExpiredCert || notYetValidCert) {
exitCode |= 4;
}
@@ -754,14 +756,25 @@
System.out.println(rb.getString(
"jar.is.unsigned.signatures.missing.or.not.parsable."));
} else {
- System.out.println(rb.getString("jar.verified."));
- if (hasUnsignedEntry || hasExpiredCert || hasExpiringCert ||
- badKeyUsage || badExtendedKeyUsage || badNetscapeCertType ||
- notYetValidCert || chainNotValidated ||
- aliasNotInStore || notSignedByAlias) {
+ boolean warningAppeared = false;
+ boolean errorAppeared = false;
+ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType ||
+ notYetValidCert || chainNotValidated || hasExpiredCert ||
+ hasUnsignedEntry ||
+ aliasNotInStore || notSignedByAlias) {
- System.out.println();
- System.out.println(rb.getString("Warning."));
+ if (strict) {
+ System.out.println(rb.getString("jar.verified.with.signer.errors."));
+ System.out.println();
+ System.out.println(rb.getString("Error."));
+ errorAppeared = true;
+ } else {
+ System.out.println(rb.getString("jar.verified."));
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ warningAppeared = true;
+ }
+
if (badKeyUsage) {
System.out.println(
rb.getString("This.jar.contains.entries.whose.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing."));
@@ -785,10 +798,6 @@
System.out.println(rb.getString(
"This.jar.contains.entries.whose.signer.certificate.has.expired."));
}
- if (hasExpiringCert) {
- System.out.println(rb.getString(
- "This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months."));
- }
if (notYetValidCert) {
System.out.println(rb.getString(
"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid."));
@@ -807,10 +816,29 @@
if (aliasNotInStore) {
System.out.println(rb.getString("This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore."));
}
+ } else {
+ System.out.println(rb.getString("jar.verified."));
+ }
+ if (hasExpiringCert || noTimestamp) {
+ if (!warningAppeared) {
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ warningAppeared = true;
+ }
+ if (hasExpiringCert) {
+ System.out.println(rb.getString(
+ "This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months."));
+ }
+ if (noTimestamp) {
+ System.out.println(
+ String.format(rb.getString("no.timestamp.verifying"), expireDate));
+ }
+ }
+ if (warningAppeared || errorAppeared) {
if (! (verbose != null && showcerts)) {
System.out.println();
System.out.println(rb.getString(
- "Re.run.with.the.verbose.and.certs.options.for.more.details."));
+ "Re.run.with.the.verbose.and.certs.options.for.more.details."));
}
}
}
@@ -870,6 +898,9 @@
try {
boolean printValidity = true;
if (timestamp == null) {
+ if (expireDate.getTime() == 0 || expireDate.after(notAfter)) {
+ expireDate = notAfter;
+ }
x509Cert.checkValidity();
// test if cert will expire within six months
if (notAfter.getTime() < System.currentTimeMillis() + SIX_MONTHS) {
@@ -1233,6 +1264,10 @@
tsaCert = getTsaCert(tsaAlias);
}
+ if (tsaUrl == null && tsaCert == null) {
+ noTimestamp = true;
+ }
+
SignatureFile.Block block = null;
try {
@@ -1380,12 +1415,20 @@
}
}
- if (hasExpiredCert || hasExpiringCert || notYetValidCert
- || badKeyUsage || badExtendedKeyUsage
- || badNetscapeCertType || chainNotValidated) {
- System.out.println();
+ boolean warningAppeared = false;
+ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType ||
+ notYetValidCert || chainNotValidated || hasExpiredCert) {
+ if (strict) {
+ System.out.println(rb.getString("jar.signed.with.signer.errors."));
+ System.out.println();
+ System.out.println(rb.getString("Error."));
+ } else {
+ System.out.println(rb.getString("jar.signed."));
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ warningAppeared = true;
+ }
- System.out.println(rb.getString("Warning."));
if (badKeyUsage) {
System.out.println(
rb.getString("The.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing."));
@@ -1404,9 +1447,6 @@
if (hasExpiredCert) {
System.out.println(
rb.getString("The.signer.certificate.has.expired."));
- } else if (hasExpiringCert) {
- System.out.println(
- rb.getString("The.signer.certificate.will.expire.within.six.months."));
} else if (notYetValidCert) {
System.out.println(
rb.getString("The.signer.certificate.is.not.yet.valid."));
@@ -1416,6 +1456,24 @@
System.out.println(
rb.getString("The.signer.s.certificate.chain.is.not.validated."));
}
+ } else {
+ System.out.println(rb.getString("jar.signed."));
+ }
+ if (hasExpiringCert || noTimestamp) {
+ if (!warningAppeared) {
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ }
+
+ if (hasExpiringCert) {
+ System.out.println(
+ rb.getString("The.signer.certificate.will.expire.within.six.months."));
+ }
+
+ if (noTimestamp) {
+ System.out.println(
+ String.format(rb.getString("no.timestamp.signing"), expireDate));
+ }
}
// no IOException thrown in the above try clause, so disable
@@ -1502,6 +1560,7 @@
timestamp = ts.getTimestamp();
} else {
timestamp = null;
+ noTimestamp = true;
}
// display the certificate(s). The first one is end-entity cert and
// its KeyUsage should be checked.
--- a/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java Tue Jan 28 11:21:43 2014 -0800
@@ -112,9 +112,9 @@
{"Please.specify.alias.name", "Please specify alias name"},
{"Only.one.alias.can.be.specified", "Only one alias can be specified"},
{"This.jar.contains.signed.entries.which.is.not.signed.by.the.specified.alias.es.",
- "This jar contains signed entries which is not signed by the specified alias(es)."},
+ "This jar contains signed entries which are not signed by the specified alias(es)."},
{"This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore.",
- "This jar contains signed entries that's not signed by alias in this keystore."},
+ "This jar contains signed entries that are not signed by alias in this keystore."},
{"s", "s"},
{"m", "m"},
{"k", "k"},
@@ -135,7 +135,10 @@
{".Unsigned.entries.", "(Unsigned entries)"},
{"jar.is.unsigned.signatures.missing.or.not.parsable.",
"jar is unsigned. (signatures missing or not parsable)"},
+ {"jar.signed.", "jar signed."},
+ {"jar.signed.with.signer.errors.", "jar signed, with signer errors."},
{"jar.verified.", "jar verified."},
+ {"jar.verified.with.signer.errors.", "jar verified, with signer errors."},
{"jarsigner.", "jarsigner: "},
{"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
"signature filename must consist of the following characters: A-Z, 0-9, _ or -"},
@@ -193,6 +196,7 @@
"using an alternative signing mechanism"},
{"entry.was.signed.on", "entry was signed on {0}"},
{"Warning.", "Warning: "},
+ {"Error.", "Error: "},
{"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
"This jar contains unsigned entries which have not been integrity-checked. "},
{"This.jar.contains.entries.whose.signer.certificate.has.expired.",
@@ -229,6 +233,10 @@
"The signer's certificate chain is not validated."},
{"This.jar.contains.entries.whose.certificate.chain.is.not.validated.",
"This jar contains entries whose certificate chain is not validated."},
+ {"no.timestamp.signing",
+ "No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."},
+ {"no.timestamp.verifying",
+ "This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."},
{"Unknown.password.type.", "Unknown password type: "},
{"Cannot.find.environment.variable.",
"Cannot find environment variable: "},
--- a/jdk/src/share/classes/sun/security/util/SecurityConstants.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/security/util/SecurityConstants.java Tue Jan 28 11:21:43 2014 -0800
@@ -144,5 +144,5 @@
// java.lang.SecurityManager
public static final SocketPermission LOCAL_LISTEN_PERMISSION =
- new SocketPermission("localhost:1024-", SOCKET_LISTEN_ACTION);
+ new SocketPermission("localhost:0", SOCKET_LISTEN_ACTION);
}
--- a/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre Normalzeit", "ACT",
- "Acre Sommerzeit", "ACST"};
+ "Acre Sommerzeit", "ACST",
+ "Acre Normalzeit", "ACT"};
String ADELAIDE[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien)", "CST",
- "Zentrale Sommerzeit (S\u00FCdaustralien)", "CST"};
+ "Zentrale Sommerzeit (S\u00FCdaustralien)", "CST",
+ "Zentrale Zeitzone (S\u00FCdaustralien)", "CT"};
String AGT[] = new String[] {"Argentinische Zeit", "ART",
- "Argentinische Sommerzeit", "ARST"};
+ "Argentinische Sommerzeit", "ARST",
+ "Argentinische Zeit", "ART"};
String AKST[] = new String[] {"Alaska Normalzeit", "AKST",
- "Alaska Sommerzeit", "AKDT"};
+ "Alaska Sommerzeit", "AKDT",
+ "Zeitzone f\u00FCr Alaska", "AKT"};
String AMT[] = new String[] {"Amazonas Normalzeit", "AMT",
- "Amazonas Sommerzeit", "AMST"};
+ "Amazonas Sommerzeit", "AMST",
+ "Amazonas Normalzeit", "AMT"};
String ARAST[] = new String[] {"Arabische Normalzeit", "AST",
- "Arabische Sommerzeit", "ADT"};
+ "Arabische Sommerzeit", "ADT",
+ "Zeitzone f\u00FCr Arabische Halbinsel", "AT"};
String ARMT[] = new String[] {"Armenische Zeit", "AMT",
- "Armenische Sommerzeit", "AMST"};
+ "Armenische Sommerzeit", "AMST",
+ "Armenische Zeit", "AMT"};
String AST[] = new String[] {"Atlantik Normalzeit", "AST",
- "Atlantik Sommerzeit", "ADT"};
+ "Atlantik Sommerzeit", "ADT",
+ "Zeitzone Atlantik", "AT"};
String BDT[] = new String[] {"Bangladesch Zeit", "BDT",
- "Bangladesch Sommerzeit", "BDST"};
+ "Bangladesch Sommerzeit", "BDST",
+ "Bangladesch Zeit", "BDT"};
String BRISBANE[] = new String[] {"\u00D6stliche Normalzeit (Queensland)", "EST",
- "\u00D6stliche Sommerzeit (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 Sommerzeit (S\u00FCdaustralien/New South Wales)", "CST",
+ "Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)", "CT"};
String BRT[] = new String[] {"Brasilianische Zeit", "BRT",
- "Brasilianische Sommerzeit", "BRST"};
+ "Brasilianische Sommerzeit", "BRST",
+ "Brasilianische Zeit", "BRT"};
String BTT[] = new String[] {"Bhutanische Zeit", "BTT",
- "Bhutanische Sommerzeit", "BTST"};
+ "Bhutanische Sommerzeit", "BTST",
+ "Bhutanische Zeit", "BTT"};
String CAT[] = new String[] {"Zentralafrikanische Zeit", "CAT",
- "Zentralafrikanische Sommerzeit", "CAST"};
+ "Zentralafrikanische Sommerzeit", "CAST",
+ "Zentralafrikanische Zeit", "CAT"};
String CET[] = new String[] {"Mitteleurop\u00e4ische Zeit", "MEZ",
- "Mitteleurop\u00e4ische Sommerzeit", "MESZ"};
+ "Mitteleurop\u00e4ische Sommerzeit", "MESZ",
+ "Mitteleurop\u00E4ische Zeit", "MEZ"};
String CHAST[] = new String[] {"Chatham Normalzeit", "CHAST",
- "Chatham Sommerzeit", "CHADT"};
+ "Chatham Sommerzeit", "CHADT",
+ "Zeitzone f\u00FCr Chatham-Inseln", "CHAT"};
String CHUT[] = new String[] {"Chuuk Zeit", "CHUT",
- "Chuuk Sommerzeit", "CHUST"};
+ "Chuuk Sommerzeit", "CHUST",
+ "Chuuk Zeit", "CHUT"};
String CIT[] = new String[] {"Zentralindonesische Zeit", "WITA",
- "Zentralindonesische Sommerzeit", "CIST"};
+ "Zentralindonesische Sommerzeit", "CIST",
+ "Zentralindonesische Zeit", "WITA"};
String CLT[] = new String[] {"Chilenische Zeit", "CLT",
- "Chilenische Sommerzeit", "CLST"};
+ "Chilenische Sommerzeit", "CLST",
+ "Chilenische Zeit", "CLT"};
String CST[] = new String[] {"Zentrale Normalzeit", "CST",
- "Zentrale Sommerzeit", "CDT"};
+ "Zentrale Sommerzeit", "CDT",
+ "Zentrale Zeitzone", "CT"};
String CTT[] = new String[] {"Chinesische Normalzeit", "CST",
- "Chinesische Sommerzeit", "CDT"};
+ "Chinesische Sommerzeit", "CDT",
+ "Zeitzone f\u00FCr China", "CT"};
String CUBA[] = new String[] {"Kubanische Normalzeit", "CST",
- "Kubanische Sommerzeit", "CDT"};
- String DARWIN[] = new String[] {"Central Normalzeit (Northern Territory)", "CST",
- "Zentrale Sommerzeit (Northern Territory)", "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 DUBLIN[] = new String[] {"Greenwich Zeit", "GMT",
- "Irische Sommerzeit", "IST"};
+ "Irische Sommerzeit", "IST",
+ "Irische Zeit", "IT"};
String EAT[] = new String[] {"Ostafrikanische Zeit", "EAT",
- "Ostafrikanische Sommerzeit", "EAST"};
+ "Ostafrikanische Sommerzeit", "EAST",
+ "Ostafrikanische Zeit", "EAT"};
String EASTER[] = new String[] {"Osterinseln Zeit", "EAST",
- "Osterinseln Sommerzeit", "EASST"};
+ "Osterinseln Sommerzeit", "EASST",
+ "Osterinseln Zeit", "EAST"};
String EET[] = new String[] {"Osteurop\u00e4ische Zeit", "OEZ",
- "Osteurop\u00e4ische Sommerzeit", "OESZ"};
+ "Osteurop\u00e4ische Sommerzeit", "OESZ",
+ "Osteurop\u00e4ische Zeit", "OEZ"};
String EGT[] = new String[] {"Ostgr\u00f6nl\u00e4ndische Zeit", "EGT",
- "Ostgr\u00f6nl\u00e4ndische Sommerzeit", "EGST"};
+ "Ostgr\u00f6nl\u00e4ndische Sommerzeit", "EGST",
+ "Ostgr\u00F6nl\u00E4ndische Zeit", "EGT"};
String EST[] = new String[] {"\u00d6stliche Normalzeit", "EST",
- "\u00d6stliche Sommerzeit", "EDT"};
- String EST_NSW[] = new String[] {"Eastern Normalzeit (Neus\u00FCdwales)", "EST",
- "\u00D6stliche Sommerzeit (New South Wales)", "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 FET[] = new String[] {"Kaliningrader Zeit", "FET",
- "Kaliningrader Sommerzeit", "FEST"};
+ "Kaliningrader Sommerzeit", "FEST",
+ "Kaliningrader Zeit", "FET"};
String GHMT[] = new String[] {"Ghanaische Normalzeit", "GMT",
- "Ghanaische Sommerzeit", "GHST"};
+ "Ghanaische Sommerzeit", "GHST",
+ "Ghanaische Normalzeit", "GMT"};
String GAMBIER[] = new String[] {"Gambier Zeit", "GAMT",
- "Gambier Sommerzeit", "GAMST"};
+ "Gambier Sommerzeit", "GAMST",
+ "Gambier Zeit", "GAMT"};
String GMT[] = new String[] {"Greenwich Zeit", "GMT",
+ "Greenwich Zeit", "GMT",
"Greenwich Zeit", "GMT"};
String GMTBST[] = new String[] {"Greenwich Zeit", "GMT",
- "Britische Sommerzeit", "BST"};
+ "Britische Sommerzeit", "BST",
+ "Britische Zeit", "BT"};
String GST[] = new String[] {"Golf Normalzeit", "GST",
- "Golf Sommerzeit", "GDT"};
+ "Golf Sommerzeit", "GDT",
+ "Zeitzone f\u00FCr Persischen Golf", "GT"};
String HAST[] = new String[] {"Hawaii-Aleutische Normalzeit", "HAST",
- "Hawaii-Aleutische Sommerzeit", "HADT"};
+ "Hawaii-Aleutische Sommerzeit", "HADT",
+ "Zeitzone f\u00FCr Hawaii und Al\u00EButen", "HAT"};
String HKT[] = new String[] {"Hongkong Zeit", "HKT",
- "Hongkong Sommerzeit", "HKST"};
+ "Hongkong Sommerzeit", "HKST",
+ "Hongkong Zeit", "HKT"};
String HST[] = new String[] {"Hawaii Normalzeit", "HST",
- "Hawaii Sommerzeit", "HDT"};
+ "Hawaii Sommerzeit", "HDT",
+ "Zeitzone f\u00FCr Hawaii", "HT"};
String ICT[] = new String[] {"Indochina Zeit", "ICT",
- "Indochina Sommerzeit", "ICST"};
+ "Indochina Sommerzeit", "ICST",
+ "Indochina Zeit", "ICT"};
String IRT[] = new String[] {"Iranische Normalzeit", "IRST",
- "Iranische Sommerzeit", "IRDT"};
+ "Iranische Sommerzeit", "IRDT",
+ "Iranische Zeit", "IRT"};
String ISRAEL[] = new String[] {"Israelische Normalzeit", "IST",
- "Israelische Sommerzeit", "IDT"};
+ "Israelische Sommerzeit", "IDT",
+ "Zeitzone f\u00FCr Israel", "IT"};
String IST[] = new String[] {"Indische Normalzeit", "IST",
- "Indische Sommerzeit", "IDT"};
+ "Indische Sommerzeit", "IDT",
+ "Zeitzone f\u00FCr Indien", "IT"};
String JST[] = new String[] {"Japanische Normalzeit", "JST",
- "Japanische Sommerzeit", "JDT"};
+ "Japanische Sommerzeit", "JDT",
+ "Zeitzone f\u00FCr Japan", "JT"};
String KST[] = new String[] {"Koreanische Normalzeit", "KST",
- "Koreanische Sommerzeit", "KDT"};
+ "Koreanische Sommerzeit", "KDT",
+ "Zeitzone f\u00FCr Korea", "KT"};
String LORD_HOWE[] = new String[] {"Lord Howe Normalzeit", "LHST",
- "Lord Howe Sommerzeit", "LHST"};
+ "Lord Howe Sommerzeit", "LHST",
+ "Lord-Howe Normalzeit", "LHT"};
String MHT[] = new String[] {"Marshallinseln Zeit", "MHT",
- "Marshallinseln Sommerzeit", "MHST"};
+ "Marshallinseln Sommerzeit", "MHST",
+ "Marshallinseln Zeit", "MHT"};
String MSK[] = new String[] {"Moskauer Normalzeit", "MSK",
- "Moskauer Sommerzeit", "MSD"};
+ "Moskauer Sommerzeit", "MSD",
+ "Zeitzone f\u00FCr Moskau", "MT"};
String MST[] = new String[] {"Rocky Mountains Normalzeit", "MST",
- "Rocky Mountains Sommerzeit", "MDT"};
+ "Rocky Mountains Sommerzeit", "MDT",
+ "Zeitzone Mountain", "MT"};
String MYT[] = new String[] {"Malaysische Zeit", "MYT",
- "Malaysische Sommerzeit", "MYST"};
+ "Malaysische Sommerzeit", "MYST",
+ "Malaysische Zeit", "MYT"};
String NORONHA[] = new String[] {"Fernando de Noronha Zeit", "FNT",
- "Fernando de Noronha Sommerzeit", "FNST"};
+ "Fernando de Noronha Sommerzeit", "FNST",
+ "Fernando de Noronha Zeit", "FNT"};
String NOVT[] = new String[] {"Nowosibirsker Zeit", "NOVT",
- "Nowosibirsker Sommerzeit", "NOVST"};
+ "Nowosibirsker Sommerzeit", "NOVST",
+ "Nowosibirsker Zeit", "NOVT"};
String NPT[] = new String[] {"Nepalesische Zeit", "NPT",
- "Nepalesische Sommerzeit", "NPST"};
+ "Nepalesische Sommerzeit", "NPST",
+ "Nepalesische Zeit", "NPT"};
String NST[] = new String[] {"Neufundland Normalzeit", "NST",
- "Neufundland Sommerzeit", "NDT"};
+ "Neufundland Sommerzeit", "NDT",
+ "Zeitzone f\u00FCr Neufundland", "NT"};
String NZST[] = new String[] {"Neuseeland Normalzeit", "NZST",
- "Neuseeland Sommerzeit", "NZDT"};
+ "Neuseeland Sommerzeit", "NZDT",
+ "Zeitzone f\u00FCr Neuseeland", "NZT"};
String PITCAIRN[] = new String[] {"Pitcairn Normalzeit", "PST",
- "Pitcairn Sommerzeit", "PDT"};
+ "Pitcairn Sommerzeit", "PDT",
+ "Zeitzone f\u00FCr Pitcairn", "PT"};
String PKT[] = new String[] {"Pakistanische Zeit", "PKT",
- "Pakistanische Sommerzeit", "PKST"};
+ "Pakistanische Sommerzeit", "PKST",
+ "Pakistanische Zeit", "PKT"};
String PONT[] = new String[] {"Pohnpei Zeit", "PONT",
- "Pohnpei Sommerzeit", "PONST"};
+ "Pohnpei Sommerzeit", "PONST",
+ "Pohnpei-Inseln Zeit", "PONT"};
String PST[] = new String[] {"Pazifische Normalzeit", "PST",
- "Pazifische Sommerzeit", "PDT"};
+ "Pazifische Sommerzeit", "PDT",
+ "Zeitzone Pazifik", "PT"};
String SAST[] = new String[] {"S\u00fcdafrikanische Normalzeit", "SAST",
- "S\u00fcdafrikanische Sommerzeit", "SAST"};
+ "S\u00fcdafrikanische Sommerzeit", "SAST",
+ "Zeitzone f\u00FCr S\u00FCdafrika", "SAT"};
String SBT[] = new String[] {"Salomoninseln Zeit", "SBT",
- "Salomoninseln Sommerzeit", "SBST"};
+ "Salomoninseln Sommerzeit", "SBST",
+ "Salomoninseln Zeit", "SBT"};
String SGT[] = new String[] {"Singapur Zeit", "SGT",
- "Singapur Sommerzeit", "SGST"};
+ "Singapur Sommerzeit", "SGST",
+ "Singapur Zeit", "SGT"};
String SLST[] = new String[] {"Greenwich Normalzeit", "GMT",
- "Sierra Leone Sommerzeit", "SLST"};
+ "Sierra Leone Sommerzeit", "SLST",
+ "Sierra Leone Zeit", "SLT"};
String TASMANIA[] = new String[] {"\u00D6stliche Normalzeit (Tasmanien)", "EST",
- "\u00D6stliche Sommerzeit (Tasmanien)", "EST"};
+ "\u00D6stliche Sommerzeit (Tasmanien)", "EST",
+ "\u00D6stliche Zeitzone (Tasmanien)", "ET"};
String TMT[] = new String[] {"Turkmenische Zeit", "TMT",
- "Turkmenische Sommerzeit", "TMST"};
+ "Turkmenische Sommerzeit", "TMST",
+ "Turkmenische Zeit", "TMT"};
String ULAT[]= new String[] {"Ulaanbaatar Zeit", "ULAT",
- "Ulaanbaatar Sommerzeit", "ULAST"};
+ "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 Sommerzeit", "WAST",
+ "Westafrikanische Zeit", "WAT"};
String WET[] = new String[] {"Westeurop\u00e4ische Zeit", "WEZ",
- "Westeurop\u00e4ische Sommerzeit", "WESZ"};
+ "Westeurop\u00e4ische Sommerzeit", "WESZ",
+ "Westeurop\u00E4ische Zeit", "WEZ"};
String WIT[] = new String[] {"Westindonesische Zeit", "WIB",
- "Westindonesische Sommerzeit", "WIST"};
+ "Westindonesische Sommerzeit", "WIST",
+ "Westindonesische Zeit", "WIB"};
String WST_AUS[] = new String[] {"Westliche Normalzeit (Australien)", "WST",
- "Westliche Sommerzeit (Australien)", "WST"};
+ "Westliche Sommerzeit (Australien)", "WST",
+ "Westliche Zeitzone (Australien)", "WT"};
String SAMOA[] = new String[] {"Samoa Normalzeit", "SST",
- "Samoa Sommerzeit", "SDT"};
+ "Samoa Sommerzeit", "SDT",
+ "Zeitzone f\u00FCr Samoa", "ST"};
String WST_SAMOA[] = new String[] {"West Samoa Zeit", "WST",
- "West Samoa Sommerzeit", "WSDT"};
+ "West Samoa Sommerzeit", "WSDT",
+ "West Samoa Zeit", "WST"};
String ChST[] = new String[] {"Chamorro Normalzeit", "ChST",
- "Chamorro Sommerzeit", "ChDT"};
+ "Chamorro Sommerzeit", "ChDT",
+ "Zeitzone f\u00FCr die Marianen", "ChT"};
String VICTORIA[] = new String[] {"\u00D6stliche Normalzeit (Victoria)", "EST",
- "\u00D6stliche Sommerzeit (Victoria)", "EST"};
+ "\u00D6stliche Sommerzeit (Victoria)", "EST",
+ "\u00D6stliche Zeitzone (Victoria)", "ET"};
String UTC[] = new String[] {"Koordinierte Universalzeit", "UTC",
+ "Koordinierte Universalzeit", "UTC",
"Koordinierte Universalzeit", "UTC"};
String UZT[] = new String[] {"Usbekistan Zeit", "UZT",
- "Usbekistan Sommerzeit", "UZST"};
+ "Usbekistan Sommerzeit", "UZST",
+ "Usbekistan Zeit", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Paraguay Zeit", "PYT",
- "Paraguay Sommerzeit", "PYST"}},
+ "Paraguay Sommerzeit", "PYST",
+ "Paraguay Zeit", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Kolumbianische Zeit", "COT",
- "Kolumbianische Sommerzeit", "COST"}},
+ "Kolumbianische Sommerzeit", "COST",
+ "Kolumbianische Zeit", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Venezuelanische Zeit", "VET",
- "Venezuelanische Sommerzeit", "VEST"}},
+ "Venezuelanische Sommerzeit", "VEST",
+ "Venezuelanische Zeit", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Franz\u00f6sisch-Guiana Zeit", "GFT",
- "Franz\u00f6sisch-Guiana Sommerzeit", "GFST"}},
+ "Franz\u00f6sisch-Guiana Sommerzeit", "GFST",
+ "Franz\u00F6sisch-Guiana Zeit", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Westgr\u00f6nl\u00e4ndische Zeit", "WGT",
- "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST"}},
+ "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST",
+ "Westgr\u00F6nl\u00E4ndische Zeit", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Ecuadorianische Zeit", "ECT",
- "Ecuadorianische Sommerzeit", "ECST"}},
+ "Ecuadorianische Sommerzeit", "ECST",
+ "Ecuadorianische Zeit", "ECT"}},
{"America/Guyana", new String[] {"Guyanische Zeit", "GYT",
- "Guyanische Sommerzeit", "GYST"}},
+ "Guyanische Sommerzeit", "GYST",
+ "Guyanische Zeit", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Bolivianische Zeit", "BOT",
- "Bolivianische Sommerzeit", "BOST"}},
+ "Bolivianische Sommerzeit", "BOST",
+ "Bolivianische Zeit", "BOT"}},
{"America/Lima", new String[] {"Peruanische Zeit", "PET",
- "Peruanische Sommerzeit", "PEST"}},
+ "Peruanische Sommerzeit", "PEST",
+ "Peruanische Zeit", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Metlakatla Normalzeit", "MeST",
- "Metlakatla Sommerzeit", "MeDT"}},
+ "Metlakatla Sommerzeit", "MeDT",
+ "Metlakatla Normalzeit", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Pierre & Miquelon Normalzeit", "PMST",
- "Pierre & Miquelon Sommerzeit", "PMDT"}},
+ "Pierre & Miquelon Sommerzeit", "PMDT",
+ "Zeitzone f\u00FCr St. Pierre und Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Uruguayische Zeit", "UYT",
- "Uruguayische Sommerzeit", "UYST"}},
+ "Uruguayische Sommerzeit", "UYST",
+ "Uruguayanische Zeit", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Suriname Zeit", "SRT",
- "Suriname Sommerzeit", "SRST"}},
+ "Suriname Sommerzeit", "SRST",
+ "Suriname Zeit", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Davis Zeit", "DAVT",
- "Davis Sommerzeit", "DAVST"}},
+ "Davis Sommerzeit", "DAVST",
+ "Davis Zeit", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville Zeit", "DDUT",
- "Dumont-d'Urville Sommerzeit", "DDUST"}},
+ "Dumont-d'Urville Sommerzeit", "DDUST",
+ "Dumont-d'Urville Zeit", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Macquarieinsel Zeit", "MIST",
- "Macquarieinsel Sommerzeit", "MIST"}},
+ "Macquarieinsel Sommerzeit", "MIST",
+ "Macquarieinsel Zeit", "MIST"}},
{"Antarctica/Mawson", new String[] {"Mawson Zeit", "MAWT",
- "Mawson Sommerzeit", "MAWST"}},
+ "Mawson Sommerzeit", "MAWST",
+ "Mawson Zeit", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Rothera Zeit", "ROTT",
- "Rothera Sommerzeit", "ROTST"}},
+ "Rothera Sommerzeit", "ROTST",
+ "Rothera Zeit", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa Zeit", "SYOT",
- "Syowa Sommerzeit", "SYOST"}},
+ "Syowa Sommerzeit", "SYOST",
+ "Syowa Zeit", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Vostok Zeit", "VOST",
- "Vostok Sommerzeit", "VOSST"}},
+ "Vostok Sommerzeit", "VOSST",
+ "Vostok Zeit", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma Ata Zeit", "ALMT",
- "Alma-Ata Sommerzeit", "ALMST"}},
+ "Alma-Ata Sommerzeit", "ALMST",
+ "Alma Ata Zeit", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Anadyr Zeit", "ANAT",
- "Anadyr Sommerzeit", "ANAST"}},
+ "Anadyr Sommerzeit", "ANAST",
+ "Anadyr Zeit", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau Zeit", "AQTT",
- "Aqtau Sommerzeit", "AQTST"}},
+ "Aqtau Sommerzeit", "AQTST",
+ "Aqtau Zeit", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe Zeit", "AQTT",
- "Aqtobe Sommerzeit", "AQTST"}},
+ "Aqtobe Sommerzeit", "AQTST",
+ "Aqtobe Zeit", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Aserbaidschanische Zeit", "AZT",
- "Aserbaidschanische Sommerzeit", "AZST"}},
+ "Aserbaidschanische Sommerzeit", "AZST",
+ "Aserbaidschanische Zeit", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Kirgisische Zeit", "KGT",
- "Kirgisische Sommerzeit", "KGST"}},
+ "Kirgisische Sommerzeit", "KGST",
+ "Kirgisische Zeit", "KGT"}},
{"Asia/Brunei", new String[] {"Brunei Zeit", "BNT",
- "Brunei Sommerzeit", "BNST"}},
+ "Brunei Sommerzeit", "BNST",
+ "Brunei Zeit", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan Zeit", "CHOT",
- "Choibalsan Sommerzeit", "CHOST"}},
+ "Choibalsan Sommerzeit", "CHOST",
+ "Choibalsan Zeit", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Timor-Leste Normalzeit", "TLT",
- "Timor-Leste Sommerzeit", "TLST"}},
+ "Timor-Leste Sommerzeit", "TLST",
+ "Timor-Leste Normalzeit", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Tadschikische Zeit", "TJT",
- "Tadschikische Sommerzeit", "TJST"}},
+ "Tadschikische Sommerzeit", "TJST",
+ "Tadschikische Zeit", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hovd Zeit", "HOVT",
- "Hovd Sommerzeit", "HOVST"}},
+ "Hovd Sommerzeit", "HOVST",
+ "Hovd Zeit", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Irkutsk Zeit", "IRKT",
- "Irkutsk Sommerzeit", "IRKST"}},
+ "Irkutsk Sommerzeit", "IRKST",
+ "Irkutsk Zeit", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Ostindonesische Zeit", "WIT",
- "Ostindonesische Sommerzeit", "EIST"}},
+ "Ostindonesische Sommerzeit", "EIST",
+ "Ostindonesische Zeit", "WIT"}},
{"Asia/Kabul", new String[] {"Afghanistanische Zeit", "AFT",
- "Afghanistanische Sommerzeit", "AFST"}},
+ "Afghanistanische Sommerzeit", "AFST",
+ "Afghanistanische Zeit", "AFT"}},
{"Asia/Kamchatka", new String[] {"Petropawlowsk-Kamtschatkische Zeit", "PETT",
- "Petropawlowsk-Kamtschatkische Sommerzeit", "PETST"}},
+ "Petropawlowsk-Kamtschatkische Sommerzeit", "PETST",
+ "Petropawlowsk-Kamtschatkische Zeit", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Chandyga Zeit", "YAKT",
- "Chandyga Sommerzeit", "YAKST"}},
+ "Chandyga Sommerzeit", "YAKST",
+ "Chandyga Zeit", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Krasnojarsker Zeit", "KRAT",
- "Krasnojarsker Sommerzeit", "KRAST"}},
+ "Krasnojarsker Sommerzeit", "KRAST",
+ "Krasnojarsker Zeit", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadanische Zeit", "MAGT",
- "Magadanische Sommerzeit", "MAGST"}},
+ "Magadanische Sommerzeit", "MAGST",
+ "Magadanische Zeit", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Philippinische Zeit", "PHT",
- "Philippinische Sommerzeit", "PHST"}},
+ "Philippinische Sommerzeit", "PHST",
+ "Philippinische Zeit", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral Zeit", "ORAT",
- "Oral Sommerzeit", "ORAST"}},
+ "Oral Sommerzeit", "ORAST",
+ "Oral Zeit", "ORAT"}},
{"Asia/Omsk", new String[] {"Omsk Zeit", "OMST",
- "Omsk Sommerzeit", "OMSST"}},
+ "Omsk Sommerzeit", "OMSST",
+ "Omsk Zeit", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda Zeit", "QYZT",
- "Qyzylorda Sommerzeit", "QYZST"}},
+ "Qyzylorda Sommerzeit", "QYZST",
+ "Qyzylorda Zeit", "QYZT"}},
{"Asia/Rangoon", new String[] {"Myanmar Zeit", "MMT",
- "Myanmar Sommerzeit", "MMST"}},
+ "Myanmar Sommerzeit", "MMST",
+ "Myanmar Zeit", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Sakhalin Zeit", "SAKT",
- "Sakhalin Sommerzeit", "SAKST"}},
+ "Sakhalin Sommerzeit", "SAKST",
+ "Sakhalin Zeit", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Georgische Zeit", "GET",
- "Georgische Sommerzeit", "GEST"}},
+ "Georgische Sommerzeit", "GEST",
+ "Georgische Zeit", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Ust-Nera Zeit", "VLAT",
- "Ust-Nera Sommerzeit", "VLAST"}},
+ "Ust-Nera Sommerzeit", "VLAST",
+ "Ust-Nera Zeit", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Wladiwostok Zeit", "VLAT",
- "Wladiwostok Sommerzeit", "VLAST"}},
+ "Wladiwostok Sommerzeit", "VLAST",
+ "Wladiwostok Zeit", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Jakutsk Zeit", "YAKT",
- "Jakutsk Sommerzeit", "YAKST"}},
+ "Jakutsk Sommerzeit", "YAKST",
+ "Jakutsk Zeit", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Jekaterinburger Zeit", "YEKT",
- "Jekaterinburger Sommerzeit", "YEKST"}},
+ "Jekaterinburger Sommerzeit", "YEKST",
+ "Jekaterinburger Zeit", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Azoren Zeit", "AZOT",
- "Azoren Sommerzeit", "AZOST"}},
+ "Azoren Sommerzeit", "AZOST",
+ "Azoren Zeit", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Kap Verde Zeit", "CVT",
- "Kap Verde Sommerzeit", "CVST"}},
+ "Kap Verde Sommerzeit", "CVST",
+ "Kap Verde Zeit", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"South Georgia Normalzeit", "GST",
- "South Georgia Sommerzeit", "GDT"}},
+ "South Georgia Sommerzeit", "GDT",
+ "Zeitzone f\u00FCr S\u00FCdgeorgien", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Falkland Inseln Zeit", "FKT",
- "Falkland Inseln Sommerzeit", "FKST"}},
+ "Falkland Inseln Sommerzeit", "FKST",
+ "Falkland Inseln Zeit", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Zentral-Westliche Normalzeit (Australien)", "CWST",
- "Zentral-Westliche Sommerzeit (Australien)", "CWST"}},
+ "Zentral-Westliche Sommerzeit (Australien)", "CWST",
+ "Zentral-Westliche Normalzeit (Australien)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Samarische Zeit", "SAMT",
- "Samarische Sommerzeit", "SAMST"}},
+ "Samarische Sommerzeit", "SAMST",
+ "Samarische Zeit", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Wolgograder Zeit", "VOLT",
- "Wolgograder Sommerzeit", "VOLST"}},
+ "Wolgograder Sommerzeit", "VOLST",
+ "Wolgograder Zeit", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Indischer Ozean Territorium Zeit", "IOT",
- "Indischer Ozean Territorium Sommerzeit", "IOST"}},
+ "Indischer Ozean Territorium Sommerzeit", "IOST",
+ "Indischer Ozean Territorium Zeit", "IOT"}},
{"Indian/Christmas", new String[] {"Christmas Island Zeit", "CXT",
- "Christmas Island Sommerzeit", "CXST"}},
+ "Christmas Island Sommerzeit", "CXST",
+ "Weihnachtsinseln Zeit", "CIT"}},
{"Indian/Cocos", new String[] {"Cocos Islands Zeit", "CCT",
- "Cocos Islands Sommerzeit", "CCST"}},
+ "Cocos Islands Sommerzeit", "CCST",
+ "Kokos-Inseln Zeit", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Franz\u00f6sisch S\u00fcd- u. Antarktische Landzeit", "TFT",
- "Franz\u00f6sisch S\u00fcd- u. Antarktische Landsommerzeit", "TFST"}},
+ "Franz\u00f6sisch S\u00fcd- u. Antarktische Landsommerzeit", "TFST",
+ "Franz\u00F6sisch S\u00FCd- u. Antarktische Landzeit", "TFT"}},
{"Indian/Mahe", new String[] {"Seychellen Zeit", "SCT",
- "Seychellen Sommerzeit", "SCST"}},
+ "Seychellen Sommerzeit", "SCST",
+ "Seychellen Zeit", "SCT"}},
{"Indian/Maldives", new String[] {"Maledivische Zeit", "MVT",
- "Maledivische Sommerzeit", "MVST"}},
+ "Maledivische Sommerzeit", "MVST",
+ "Maledivische Zeit", "MVT"}},
{"Indian/Mauritius", new String[] {"Mauritius Zeit", "MUT",
- "Mauritius Sommerzeit", "MUST"}},
+ "Mauritius Sommerzeit", "MUST",
+ "Mauritius Zeit", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Reunion Zeit", "RET",
- "Reunion Sommerzeit", "REST"}},
+ "Reunion Sommerzeit", "REST",
+ "R\u00E9union Zeit", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Zentraleurop\u00e4ische Zeit", "MET",
- "Zentraleurop\u00e4ische Sommerzeit", "MEST"}},
+ "Zentraleurop\u00e4ische Sommerzeit", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Vanuatu Zeit", "VUT",
- "Vanuatu Sommerzeit", "VUST"}},
+ "Vanuatu Sommerzeit", "VUST",
+ "Vanuatu Zeit", "VUT"}},
{"Pacific/Enderbury", new String[] {"Phoenix Inseln Zeit", "PHOT",
- "Phoenix Inseln Sommerzeit", "PHOST"}},
+ "Phoenix Inseln Sommerzeit", "PHOST",
+ "Phoenix Inseln Zeit", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Tokelau Zeit", "TKT",
- "Tokelau Sommerzeit", "TKST"}},
+ "Tokelau Sommerzeit", "TKST",
+ "Tokelau Zeit", "TKT"}},
{"Pacific/Fiji", new String[] {"Fidschi Zeit", "FJT",
- "Fidschi Sommerzeit", "FJST"}},
+ "Fidschi Sommerzeit", "FJST",
+ "Fidschi Zeit", "FJT"}},
{"Pacific/Funafuti", new String[] {"Tuvalu Zeit", "TVT",
- "Tuvalu Sommerzeit", "TVST"}},
+ "Tuvalu Sommerzeit", "TVST",
+ "Tuvalu Zeit", "TVT"}},
{"Pacific/Galapagos", new String[] {"Galapagos Zeit", "GALT",
- "Galapagos Sommerzeit", "GALST"}},
+ "Galapagos Sommerzeit", "GALST",
+ "Galapagos Zeit", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line Inseln Zeit", "LINT",
- "Line Inseln Sommerzeit", "LINST"}},
+ "Line Inseln Sommerzeit", "LINST",
+ "Line Inseln Zeit", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae Zeit", "KOST",
- "Kosrae Sommerzeit", "KOSST"}},
+ "Kosrae Sommerzeit", "KOSST",
+ "Kosrae Zeit", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Marquesas Zeit", "MART",
- "Marquesas Sommerzeit", "MARST"}},
+ "Marquesas Sommerzeit", "MARST",
+ "Marquesas Zeit", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Nauru Zeit", "NRT",
- "Nauru Sommerzeit", "NRST"}},
+ "Nauru Sommerzeit", "NRST",
+ "Nauru Zeit", "NRT"}},
{"Pacific/Niue", new String[] {"Niue Zeit", "NUT",
- "Niue Sommerzeit", "NUST"}},
+ "Niue Sommerzeit", "NUST",
+ "Niue Zeit", "NUT"}},
{"Pacific/Norfolk", new String[] {"Norfolk Zeit", "NFT",
- "Norfolk Sommerzeit", "NFST"}},
+ "Norfolk Sommerzeit", "NFST",
+ "Norfolk Zeit", "NFT"}},
{"Pacific/Noumea", new String[] {"Neukaledonische Zeit", "NCT",
- "Neukaledonische Sommerzeit", "NCST"}},
+ "Neukaledonische Sommerzeit", "NCST",
+ "Neukaledonische Zeit", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Palau Zeit", "PWT",
- "Palau Sommerzeit", "PWST"}},
+ "Palau Sommerzeit", "PWST",
+ "Palau Zeit", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Papua-Neuguinea Zeit", "PGT",
- "Papua-Neuguinea Sommerzeit", "PGST"}},
+ "Papua-Neuguinea Sommerzeit", "PGST",
+ "Papua-Neuguinea Zeit", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Cook-Inseln Zeit", "CKT",
- "Cook-Inseln Sommerzeit", "CKHST"}},
+ "Cook-Inseln Sommerzeit", "CKHST",
+ "Cook-Inseln Zeit", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Tahiti Zeit", "TAHT",
- "Tahiti Sommerzeit", "TAHST"}},
+ "Tahiti Sommerzeit", "TAHST",
+ "Tahiti Zeit", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Gilbert-Inseln Zeit", "GILT",
- "Gilbert-Inseln Sommerzeit", "GILST"}},
+ "Gilbert-Inseln Sommerzeit", "GILST",
+ "Gilbert-Inseln Zeit", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Tonga Zeit", "TOT",
- "Tonga Sommerzeit", "TOST"}},
+ "Tonga Sommerzeit", "TOST",
+ "Tonga Zeit", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Wake Zeit", "WAKT",
- "Wake Sommerzeit", "WAKST"}},
+ "Wake Sommerzeit", "WAKST",
+ "Wake Zeit", "WAKT"}},
{"Pacific/Wallis", new String[] {"Wallis u. Futuna Zeit", "WFT",
- "Wallis u. Futuna Sommerzeit", "WFST"}},
+ "Wallis u. Futuna Sommerzeit", "WFST",
+ "Wallis u. Futuna Zeit", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Hora de Acre", "ACT",
- "Hora de verano de Acre", "ACST"};
+ "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 de verano Central (Sur de Australia)", "CST",
+ "Hora Central (Australia del Sur)", "CT"};
String AGT[] = new String[] {"Hora de Argentina", "ART",
- "Hora de verano de Argentina", "ARST"};
+ "Hora de verano de Argentina", "ARST",
+ "Hora de Argentina", "ART"};
String AKST[] = new String[] {"Hora est\u00e1ndar de Alaska", "AKST",
- "Hora de verano de Alaska", "AKDT"};
+ "Hora de verano de Alaska", "AKDT",
+ "Hora de Alaska", "AKT"};
String AMT[] = new String[] {"Hora est\u00e1ndar de Amazonia", "AMT",
- "Hora de verano de Amazonia", "AMST"};
+ "Hora de verano de Amazonia", "AMST",
+ "Hora est\u00E1ndar de Amazonia", "AMT"};
String ARAST[] = new String[] {"Hora est\u00e1ndar de Arabia", "AST",
- "Hora de verano de Arabia", "ADT"};
+ "Hora de verano de Arabia", "ADT",
+ "Hora de Arabia", "AT"};
String ARMT[] = new String[] {"Hora de Armenia", "AMT",
- "Hora de verano de Armenia", "AMST"};
+ "Hora de verano de Armenia", "AMST",
+ "Hora de Armenia", "AMT"};
String AST[] = new String[] {"Hora est\u00e1ndar Atl\u00e1ntico", "AST",
- "Hora de verano Atl\u00e1ntico", "ADT"};
+ "Hora de verano Atl\u00e1ntico", "ADT",
+ "Hora del Atl\u00E1ntico", "AT"};
String BDT[] = new String[] {"Hora de Bangladesh", "BDT",
- "Hora de verano de Bangladesh", "BDST"};
+ "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 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 de verano Central (Sur de Australia/Nueva Gales del Sur)", "CST",
+ "Hora Central (Australia del Sur/Nueva Gales del Sur)", "CT"};
String BRT[] = new String[] {"Hora de Brasil", "BRT",
- "Hora de verano de Brasil", "BRST"};
+ "Hora de verano de Brasil", "BRST",
+ "Hora de Brasil", "BRT"};
String BTT[] = new String[] {"Hora de But\u00e1n", "BTT",
- "Hora de verano de But\u00e1n", "BTST"};
+ "Hora de verano de But\u00e1n", "BTST",
+ "Hora de But\u00E1n", "BTT"};
String CAT[] = new String[] {"Hora de \u00c1frica Central", "CAT",
- "Hora de verano de \u00c1frica Central", "CAST"};
+ "Hora de verano de \u00c1frica Central", "CAST",
+ "Hora de \u00C1frica Central", "CAT"};
String CET[] = new String[] {"Hora de Europa Central", "CET",
- "Hora de verano de Europa Central", "CEST"};
+ "Hora de verano de Europa Central", "CEST",
+ "Hora de Europa Central", "CET"};
String CHAST[] = new String[] {"Hora est\u00e1ndar de Chatham", "CHAST",
- "Hora de verano de Chatham", "CHADT"};
- String CHUT[] = new String[] {"Chuuk Time", "CHUT",
- "Chuuk Summer Time", "CHUST"};
+ "Hora de verano de Chatham", "CHADT",
+ "Hora de Chatam", "CHAT"};
+ String CHUT[] = new String[] {"Hora de Chuuk", "CHUT",
+ "Hora de verano de Chuuk", "CHUST",
+ "Hora de Chuuk", "CHUT"};
String CIT[] = new String[] {"Hora de Indonesia Central", "WITA",
- "Hora de verano de Indonesia Central", "CIST"};
+ "Hora de verano de Indonesia Central", "CIST",
+ "Hora de Indonesia Central", "WITA"};
String CLT[] = new String[] {"Hora de Chile", "CLT",
- "Hora de verano de Chile", "CLST"};
+ "Hora de verano de Chile", "CLST",
+ "Hora de Chile", "CLT"};
String CST[] = new String[] {"Hora est\u00e1ndar Central", "CST",
- "Hora de verano Central", "CDT"};
+ "Hora de verano Central", "CDT",
+ "Hora Central", "CT"};
String CTT[] = new String[] {"Hora est\u00e1ndar de China", "CST",
- "Hora de verano de China", "CDT"};
+ "Hora de verano de China", "CDT",
+ "Hora de China", "CT"};
String CUBA[] = new String[] {"Hora est\u00e1ndar de Cuba", "CST",
- "Hora de verano de Cuba", "CDT"};
+ "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 de verano Central (territorio del Norte)", "CST",
+ "Hora Central (Territorio Septentrional)", "CT"};
String DUBLIN[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
- "Hora de verano de Irlanda", "IST"};
+ "Hora de verano de Irlanda", "IST",
+ "Hora de Irlanda", "IT"};
String EAT[] = new String[] {"Hora de \u00c1frica Oriental", "EAT",
- "Hora de verano de \u00c1frica Oriental", "EAST"};
+ "Hora de verano de \u00c1frica Oriental", "EAST",
+ "Hora de \u00C1frica Oriental", "EAT"};
String EASTER[] = new String[] {"Hora de la Isla de Pascua", "EAST",
- "Hora de verano de la Isla de Pascua", "EASST"};
+ "Hora de verano de la Isla de Pascua", "EASST",
+ "Hora de la Isla de Pascua", "EAST"};
String EET[] = new String[] {"Hora de Europa Oriental", "EET",
- "Hora de verano de Europa Oriental", "EEST"};
+ "Hora de verano de Europa Oriental", "EEST",
+ "Hora de Europa Oriental", "EET"};
String EGT[] = new String[] {"Hora de Groenlandia Oriental", "EGT",
- "Hora de verano de Groenlandia Oriental", "EGST"};
+ "Hora de verano de Groenlandia Oriental", "EGST",
+ "Hora de Groenlandia Oriental", "EGT"};
String EST[] = new String[] {"Hora est\u00e1ndar Oriental", "EST",
- "Hora de verano Oriental", "EDT"};
+ "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 de verano Oriental (Nueva Gales del Sur)", "EST",
+ "Hora Oriental (Nueva Gales del Sur)", "ET"};
String FET[] = new String[] {"Hora de Europa m\u00E1s Oriental", "FET",
- "Hora de verano de Europa m\u00E1s Oriental", "FEST"};
+ "Hora de verano de Europa m\u00E1s Oriental", "FEST",
+ "Hora de Europa m\u00E1s Oriental", "FET"};
String GHMT[] = new String[] {"Hora central de Ghana", "GMT",
- "Hora de verano de Ghana", "GHST"};
+ "Hora de verano de Ghana", "GHST",
+ "Hora central de Ghana", "GMT"};
String GAMBIER[] = new String[] {"Hora de Gambier", "GAMT",
- "Hora de verano de Gambier", "GAMST"};
+ "Hora de verano de Gambier", "GAMST",
+ "Hora de Gambier", "GAMT"};
String GMT[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
+ "Hora del Meridiano de Greenwich", "GMT",
"Hora del Meridiano de Greenwich", "GMT"};
String GMTBST[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
- "Hora de verano de Gran Breta\u00f1a", "BST"};
+ "Hora de verano de Gran Breta\u00f1a", "BST",
+ "Hora de Gran Breta\u00F1a", "BT"};
String GST[] = new String[] {"Hora est\u00e1ndar del Golfo", "GST",
- "Hora de verano del Golfo", "GDT"};
+ "Hora de verano del Golfo", "GDT",
+ "Hora del Golfo", "GT"};
String HAST[] = new String[] {"Hora est\u00e1ndar de Hawaii-Aleutianas", "HAST",
- "Hora de verano de Hawaii-Aleutianas", "HADT"};
+ "Hora de verano de Hawaii-Aleutianas", "HADT",
+ "Hora de Hawaii-Aleutian", "HAT"};
String HKT[] = new String[] {"Hora de Hong Kong", "HKT",
- "Hora de verano de Hong Kong", "HKST"};
+ "Hora de verano de Hong Kong", "HKST",
+ "Hora de Hong Kong", "HKT"};
String HST[] = new String[] {"Hora est\u00e1ndar de Hawaii", "HST",
- "Hora de verano de Hawaii", "HDT"};
+ "Hora de verano de Hawaii", "HDT",
+ "Hora de Hawaii", "HT"};
String ICT[] = new String[] {"Hora de Indochina", "ICT",
- "Hora de verano de Indochina", "ICST"};
+ "Hora de verano de Indochina", "ICST",
+ "Hora de Indochina", "ICT"};
String IRT[] = new String[] {"Hora est\u00e1ndar de Ir\u00e1n", "IRST",
- "Hora de verano de Ir\u00e1n", "IRDT"};
+ "Hora de verano de Ir\u00e1n", "IRDT",
+ "Hora de Ir\u00E1n", "IRT"};
String ISRAEL[] = new String[] {"Hora est\u00e1ndar de Israel", "IST",
- "Hora de verano de Israel", "IDT"};
+ "Hora de verano de Israel", "IDT",
+ "Hora de Israel", "IT"};
String IST[] = new String[] {"Hora est\u00e1ndar de India", "IST",
- "Hora de verano de India", "IDT"};
+ "Hora de verano de India", "IDT",
+ "Hora de India", "IT"};
String JST[] = new String[] {"Hora est\u00e1ndar de Jap\u00f3n", "JST",
- "Hora de verano de Jap\u00f3n", "JDT"};
+ "Hora de verano de Jap\u00f3n", "JDT",
+ "Hora de Jap\u00F3n", "JT"};
String KST[] = new String[] {"Hora est\u00e1ndar de Corea", "KST",
- "Hora de verano de Corea", "KDT"};
+ "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", "LHST",
+ "Hora de Lord Howe", "LHT"};
String MHT[] = new String[] {"Hora de las Islas Marshall", "MHT",
- "Hora de verano de las Islas Marshall", "MHST"};
+ "Hora de verano de las Islas Marshall", "MHST",
+ "Hora de Islas Marshall", "MHT"};
String MSK[] = new String[] {"Hora est\u00e1ndar de Mosc\u00fa", "MSK",
- "Hora de verano de Mosc\u00fa", "MSD"};
+ "Hora de verano de Mosc\u00fa", "MSD",
+ "Hora de Mosc\u00FA", "MT"};
String MST[] = new String[] {"Hora est\u00e1ndar de las Rocosas", "MST",
- "Hora de verano de las Rocosas", "MDT"};
+ "Hora de verano de las Rocosas", "MDT",
+ "Hora de las Monta\u00F1as Rocosas", "MT"};
String MYT[] = new String[] {"Hora de Malasia", "MYT",
- "Hora de verano de Malasia", "MYST"};
+ "Hora de verano de Malasia", "MYST",
+ "Hora de Malasia", "MYT"};
String NORONHA[] = new String[] {"Hora de Fernando de Noronha", "FNT",
- "Hora de verano de Fernando de Noronha", "FNST"};
+ "Hora de verano de Fernando de Noronha", "FNST",
+ "Hora de Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Hora de Novosibirsk", "NOVT",
- "Hora de verano de Novosibirsk", "NOVST"};
+ "Hora de verano de Novosibirsk", "NOVST",
+ "Hora de Novosibirsk", "NOVT"};
String NPT[] = new String[] {"Hora de Nepal", "NPT",
- "Hora de verano de Nepal", "NPST"};
+ "Hora de verano de Nepal", "NPST",
+ "Hora de Nepal", "NPT"};
String NST[] = new String[] {"Hora est\u00e1ndar de Terranova", "NST",
- "Hora de verano de Terranova", "NDT"};
+ "Hora de verano de Terranova", "NDT",
+ "Hora de Terranova", "NT"};
String NZST[] = new String[] {"Hora est\u00e1ndar de Nueva Zelanda", "NZST",
- "Hora de verano de Nueva Zelanda", "NZDT"};
+ "Hora de verano de Nueva Zelanda", "NZDT",
+ "Hora de Nueva Zelanda", "NZT"};
String PITCAIRN[] = new String[] {"Hora est\u00e1ndar de Pitcairn", "PST",
- "Hora de verano de Pitcairn", "PDT"};
+ "Hora de verano de Pitcairn", "PDT",
+ "Hora de Islas Pitcairn", "PT"};
String PKT[] = new String[] {"Hora de Pakist\u00e1n", "PKT",
- "Hora de verano de Pakist\u00e1n", "PKST"};
- String PONT[] = new String[] {"Pohnpei Time", "PONT",
- "Pohnpei Summer Time", "PONST"};
+ "Hora de verano de Pakist\u00e1n", "PKST",
+ "Hora de Pakist\u00E1n", "PKT"};
+ String PONT[] = new String[] {"Hora de Pohnpei", "PONT",
+ "Hora de verano de Pohnpei", "PONST",
+ "Hora de Pohnpei", "PONT"};
String PST[] = new String[] {"Hora est\u00e1ndar del Pac\u00edfico", "PST",
- "Hora de verano del Pac\u00edfico", "PDT"};
+ "Hora de verano del Pac\u00edfico", "PDT",
+ "Hora del Pac\u00EDfico", "PT"};
String SAST[] = new String[] {"Hora est\u00e1ndar de Sud\u00e1frica", "SAST",
- "Hora de verano de Sud\u00e1frica", "SAST"};
+ "Hora de verano de Sud\u00e1frica", "SAST",
+ "Hora de Sud\u00E1frica", "SAT"};
String SBT[] = new String[] {"Hora de las Islas Solomon", "SBT",
- "Hora de verano de las Islas Solomon", "SBST"};
+ "Hora de verano de las Islas Solomon", "SBST",
+ "Hora de las Islas Solomon", "SBT"};
String SGT[] = new String[] {"Hora de Singapur", "SGT",
- "Hora de verano de Singapur", "SGST"};
+ "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"};
+ "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 de verano del Este (Tasmania)", "EST",
+ "Hora Oriental (Tasmania)", "ET"};
String TMT[] = new String[] {"Hora de Turkmenist\u00e1n", "TMT",
- "Hora de verano de Turkmenist\u00e1n", "TMST"};
+ "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 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 verano de \u00c1frica Occidental", "WAST",
+ "Hora de \u00C1frica Occidental", "WAT"};
String WET[] = new String[] {"Hora de Europa Occidental", "WET",
- "Hora de verano de Europa Occidental", "WEST"};
+ "Hora de verano de Europa Occidental", "WEST",
+ "Hora de Europa Occidental", "WET"};
String WIT[] = new String[] {"Hora de Indonesia Occidental", "WIB",
- "Indonesia Hora de verano de Indonesia Occidental", "WIST"};
+ "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 de verano Occidental (Australia)", "WST",
+ "Hora Occidental (Australia)", "WT"};
String SAMOA[] = new String[] {"Hora est\u00e1ndar de Samoa", "SST",
- "Hora de verano de Samoa", "SDT"};
+ "Hora de verano de Samoa", "SDT",
+ "Hora de Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Hora de Samoa Occidental", "WST",
- "Hora de verano de Samoa Occidental", "WSDT"};
+ "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 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 de verano del Este (Victoria)", "EST",
+ "Hora Oriental (Victoria)", "ET"};
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 verano de Uzbekist\u00e1n", "UZST",
+ "Hora de Uzbekist\u00E1n", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Hora de Paraguay", "PYT",
- "Hora de verano de Paraguay", "PYST"}},
+ "Hora de verano de Paraguay", "PYST",
+ "Hora de Paraguay", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Hora de Colombia", "COT",
- "Hora de verano de Colombia", "COST"}},
+ "Hora de verano de Colombia", "COST",
+ "Hora de Colombia", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Hora de Venezuela", "VET",
- "Hora de verano de Venezuela", "VEST"}},
+ "Hora de verano de Venezuela", "VEST",
+ "Hora de Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Hora de la Guayana Francesa", "GFT",
- "Hora de verano de la Guayana Francesa", "GFST"}},
+ "Hora de verano de la Guayana Francesa", "GFST",
+ "Hora de la Guayana Francesa", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Hora de Groenlandia Occidental", "WGT",
- "Hora de verano de Groenlandia Occidental", "WGST"}},
+ "Hora de verano de Groenlandia Occidental", "WGST",
+ "Hora de Groenlandia Occidental", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Hora de Ecuador", "ECT",
- "Hora de verano de Ecuador", "ECST"}},
+ "Hora de verano de Ecuador", "ECST",
+ "Hora de Ecuador", "ECT"}},
{"America/Guyana", new String[] {"Hora de Guyana", "GYT",
- "Hora de verano de Guyana", "GYST"}},
+ "Hora de verano de Guyana", "GYST",
+ "Hora de Guyana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Hora de Bolivia", "BOT",
- "Hora de verano de Bolivia", "BOST"}},
+ "Hora de verano de Bolivia", "BOST",
+ "Hora de Bolivia", "BOT"}},
{"America/Lima", new String[] {"Hora de Per\u00fa", "PET",
- "Hora de verano de Per\u00fa", "PEST"}},
+ "Hora de verano de Per\u00fa", "PEST",
+ "Hora de Per\u00FA", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -399,14 +484,17 @@
{"America/Mendoza", AGT},
{"America/Menominee", CST},
{"America/Merida", CST},
- {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
- "Metlakatla Daylight Time", "MeDT"}},
+ {"America/Metlakatla", new String[] {"Hora de Metlakatla", "MeST",
+ "Hora de verano de Metlakatla", "MeDT",
+ "Metlakatla Time", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Hora est\u00e1ndar de Pierre & Miquelon", "PMST",
- "Hora de verano de Pierre & Miquelon", "PMDT"}},
+ "Hora de verano de Pierre & Miquelon", "PMDT",
+ "Hora de San Pedro y Miquel\u00F3n", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Hora de Uruguay", "UYT",
- "Hora de verano de Uruguay", "UYST"}},
+ "Hora de verano de Uruguay", "UYST",
+ "Hora de Uruguay", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Hora de Surinam", "SRT",
- "Hora de verano de Surinam", "SRST"}},
+ "Hora de verano de Surinam", "SRST",
+ "Hora de Surinam", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Hora de Davis", "DAVT",
- "Hora de verano de Davis", "DAVST"}},
+ "Hora de verano de Davis", "DAVST",
+ "Hora de Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Hora de Dumont-d'Urville", "DDUT",
- "Hora de verano de Dumont-d'Urville", "DDUST"}},
- {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
- "Macquarie Island Summer Time", "MIST"}},
+ "Hora de verano de Dumont-d'Urville", "DDUST",
+ "Hora de Dumont-d'Urville", "DDUT"}},
+ {"Antarctica/Macquarie", new String[] {"Hora de Isla Macquarie", "MIST",
+ "Hora de verano de Isla Macquarie", "MIST",
+ "Hora de Isla Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Hora de Mawson", "MAWT",
- "Hora de verano de Mawson", "MAWST"}},
+ "Hora de verano de Mawson", "MAWST",
+ "Hora de Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Hora de Rothera", "ROTT",
- "Hora de verano de Rothera", "ROTST"}},
+ "Hora de verano de Rothera", "ROTST",
+ "Hora de Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Hora de Syowa", "SYOT",
- "Hora de verano de Syowa", "SYOST"}},
+ "Hora de verano de Syowa", "SYOST",
+ "Hora de Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Hora de Vostok", "VOST",
- "Hora de verano de Vostok", "VOSST"}},
+ "Hora de verano de Vostok", "VOSST",
+ "Hora de Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Hora de Alma-Ata", "ALMT",
- "Hora de verano de Alma-Ata", "ALMST"}},
+ "Hora de verano de Alma-Ata", "ALMST",
+ "Hora de Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Hora de Anadyr", "ANAT",
- "Hora de verano de Anadyr", "ANAST"}},
+ "Hora de verano de Anadyr", "ANAST",
+ "Hora de Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Hora de Aqtau", "AQTT",
- "Hora de verano de Aqtau", "AQTST"}},
+ "Hora de verano de Aqtau", "AQTST",
+ "Hora de Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Hora de Aqtobe", "AQTT",
- "Hora de verano de Aqtobe", "AQTST"}},
+ "Hora de verano de Aqtobe", "AQTST",
+ "Hora de Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Hora de Azerbaiy\u00e1n", "AZT",
- "Hora de verano de Azerbaiy\u00e1n", "AZST"}},
+ "Hora de verano de Azerbaiy\u00e1n", "AZST",
+ "Hora de Azerbaiy\u00E1n", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Hora de Kirguizist\u00e1n", "KGT",
- "Hora de verano de Kirguizist\u00e1n", "KGST"}},
+ "Hora de verano de Kirguizist\u00e1n", "KGST",
+ "Hora de Kirguizist\u00E1n", "KGT"}},
{"Asia/Brunei", new String[] {"Hora de Brunei", "BNT",
- "Hora de verano de Brunei", "BNST"}},
+ "Hora de verano de Brunei", "BNST",
+ "Hora de Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Hora de Choibalsan", "CHOT",
- "Hora de verano de Choibalsan", "CHOST"}},
+ "Hora de verano de Choibalsan", "CHOST",
+ "Hora de Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Hora de Timor Leste", "TLT",
- "Hora de verano de Timor Leste", "TLST"}},
+ "Hora de verano de Timor Leste", "TLST",
+ "Hora de Timor Leste", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Hora de Tajikist\u00e1n", "TJT",
- "Hora de verano de Tajikist\u00e1n", "TJST"}},
+ "Hora de verano de Tajikist\u00e1n", "TJST",
+ "Hora de Tajikist\u00E1n", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hora de Hovd", "HOVT",
- "Hora de verano de Hovd", "HOVST"}},
+ "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 verano de Irkutsk", "IRKST",
+ "Hora de Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Hora de Indonesia Oriental", "WIT",
- "Hora de verano de Indonesia Oriental", "EIST"}},
+ "Hora de verano de Indonesia Oriental", "EIST",
+ "Hora de Indonesia Oriental", "WIT"}},
{"Asia/Kabul", new String[] {"Hora de Afganist\u00e1n", "AFT",
- "Hora de verano de Afganist\u00e1n", "AFST"}},
+ "Hora de verano de Afganist\u00e1n", "AFST",
+ "Hora de Afganist\u00E1n", "AFT"}},
{"Asia/Kamchatka", new String[] {"Hora de Petropavlovsk-Kamchatski", "PETT",
- "Hora de verano de Petropavlovsk-Kamchatski", "PETST"}},
+ "Hora de verano de Petropavlovsk-Kamchatski", "PETST",
+ "Hora de Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Hora de Khandyga", "YAKT",
- "Hora de verano de Khandyga", "YAKST"}},
+ "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 verano de Krasnoyarsk", "KRAST",
+ "Hora de Krasnoyarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Hora de Magad\u00e1n", "MAGT",
- "Hora de verano de Magad\u00e1n", "MAGST"}},
+ "Hora de verano de Magad\u00e1n", "MAGST",
+ "Hora de Magad\u00E1n", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Hora de Filipinas", "PHT",
- "Hora de verano de Filipinas", "PHST"}},
+ "Hora de verano de Filipinas", "PHST",
+ "Hora de Filipinas", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Hora de Uralsk", "ORAT",
- "Hora de verano de Uralsk", "ORAST"}},
+ "Hora de verano de Uralsk", "ORAST",
+ "Hora de Uralsk", "ORAT"}},
{"Asia/Omsk", new String[] {"Hora de Omsk", "OMST",
- "Hora de verano de Omsk", "OMSST"}},
+ "Hora de verano de Omsk", "OMSST",
+ "Hora de Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Hora de Qyzylorda", "QYZT",
- "Hora de verano de Qyzylorda", "QYZST"}},
+ "Hora de verano de Qyzylorda", "QYZST",
+ "Hora de Qyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Hora de Myanmar", "MMT",
- "Hora de verano de Myanmar", "MMST"}},
+ "Hora de verano de Myanmar", "MMST",
+ "Hora de Myanmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Hora de Sajalin", "SAKT",
- "Hora de verano de Sajalin", "SAKST"}},
+ "Hora de verano de Sajalin", "SAKST",
+ "Hora de Sajalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Hora de Georgia", "GET",
- "Hora de verano de Georgia", "GEST"}},
+ "Hora de verano de Georgia", "GEST",
+ "Hora de Georgia", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Hora de Ust-Nera", "VLAT",
- "Hora de verano de Ust-Nera", "VLAST"}},
+ "Hora de verano de Ust-Nera", "VLAST",
+ "Hora de Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Hora de Vladivostok", "VLAT",
- "Hora de verano de Vladivostok", "VLAST"}},
+ "Hora de verano de Vladivostok", "VLAST",
+ "Hora de Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Hora de Yakutsk", "YAKT",
- "Hora de verano de Yakutsk", "YAKST"}},
+ "Hora de verano de Yakutsk", "YAKST",
+ "Hora de Yakutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Hora de Ekaterinburgo", "YEKT",
- "Hora de verano de Ekaterinburgo", "YEKST"}},
+ "Hora de verano de Ekaterinburgo", "YEKST",
+ "Hora de Ekaterinburgo", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Hora de Azores", "AZOT",
- "Hora de verano de Azores", "AZOST"}},
+ "Hora de verano de Azores", "AZOST",
+ "Hora de Azores", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Hora de Cabo Verde", "CVT",
- "Hora de verano de Cabo Verde", "CVST"}},
+ "Hora de verano de Cabo Verde", "CVST",
+ "Hora de Cabo Verde", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Hora est\u00e1ndar de Georgia del Sur", "GST",
- "Hora de verano de Georgia del Sur", "GDT"}},
+ "Hora de verano de Georgia del Sur", "GDT",
+ "Hora de Georgia del Sur", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Hora de las islas Malvinas", "FKT",
- "Hora de verano de las islas Malvinas", "FKST"}},
+ "Hora de verano de las islas Malvinas", "FKST",
+ "Hora de las islas Malvinas", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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 est\u00E1ndar de verano de Australia Central y Occidental", "CWST",
+ "Hora de Australia Central y Occidental", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Hora de Samara", "SAMT",
- "Hora de verano de Samara", "SAMST"}},
+ "Hora de verano de Samara", "SAMST",
+ "Hora de Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Hora de Volgogrado", "VOLT",
- "Hora de verano de Volgogrado", "VOLST"}},
+ "Hora de verano de Volgogrado", "VOLST",
+ "Hora de Volgogrado", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Hora del Territorio del Oc\u00e9ano \u00cdndico", "IOT",
- "Hora de verano del Territorio del Oc\u00e9ano \u00cdndico", "IOST"}},
+ "Hora de verano del Territorio del Oc\u00e9ano \u00cdndico", "IOST",
+ "Hora del Territorio del Oc\u00E9ano \u00CDndico", "IOT"}},
{"Indian/Christmas", new String[] {"Hora de la isla de Christmas", "CXT",
- "Hora de verano de la isla de Christmas", "CXST"}},
+ "Hora de verano de la isla de Christmas", "CXST",
+ "Hora de la isla de Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Hora de las islas Cocos", "CCT",
- "Hora de verano de las islas Cocos", "CCST"}},
+ "Hora de verano de las islas Cocos", "CCST",
+ "Hora de las islas Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Hora de los Territorios Franceses del Sur y de la Ant\u00e1rtida", "TFT",
- "Hora de verano de los Territorios Franceses del Sur y de la Ant\u00e1rtida", "TFST"}},
+ "Hora de verano de los Territorios Franceses del Sur y de la Ant\u00e1rtida", "TFST",
+ "Hora de los Territorios Franceses del Sur y de la Ant\u00E1rtida", "TFT"}},
{"Indian/Mahe", new String[] {"Hora de Seychelles", "SCT",
- "Hora de verano de Seychelles", "SCST"}},
+ "Hora de verano de Seychelles", "SCST",
+ "Hora de Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Hora de Maldivas", "MVT",
- "Hora de verano de Maldivas", "MVST"}},
+ "Hora de verano de Maldivas", "MVST",
+ "Hora de Maldivas", "MVT"}},
{"Indian/Mauritius", new String[] {"Hora de Mauricio", "MUT",
- "Hora de verano de Mauricio", "MUST"}},
+ "Hora de verano de Mauricio", "MUST",
+ "Hora de Mauricio", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Hora de Reuni\u00f3n", "RET",
- "Hora de verano de Reuni\u00f3n", "REST"}},
+ "Hora de verano de Reuni\u00f3n", "REST",
+ "Hora de Reuni\u00F3n", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Hora de Europa Central", "MET",
- "Hora de verano de Europa Central", "MEST"}},
+ "Hora de verano de Europa Central", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Hora de Vanuatu", "VUT",
- "Hora de verano de Vanuatu", "VUST"}},
+ "Hora de verano de Vanuatu", "VUST",
+ "Hora de Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Hora de la isla Phoenix", "PHOT",
- "Hora de verano de la isla Phoenix", "PHOST"}},
+ "Hora de verano de la isla Phoenix", "PHOST",
+ "Hora de la isla Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Hora de Tokelau", "TKT",
- "Hora de verano de Tokelau", "TKST"}},
+ "Hora de verano de Tokelau", "TKST",
+ "Hora de Tokelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Hora de Fiji", "FJT",
- "Hora de verano de Fiji", "FJST"}},
+ "Hora de verano de Fiji", "FJST",
+ "Hora de Fiji", "FJT"}},
{"Pacific/Funafuti", new String[] {"Hora de Tuvalu", "TVT",
- "Hora de verano de Tuvalu", "TVST"}},
+ "Hora de verano de Tuvalu", "TVST",
+ "Hora de Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Hora de Gal\u00e1pagos", "GALT",
- "Hora de verano de Gal\u00e1pagos", "GALST"}},
+ "Hora de verano de Gal\u00e1pagos", "GALST",
+ "Hora de Gal\u00E1pagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Hora de las islas Line", "LINT",
- "Hora de verano de las islas Line", "LINST"}},
+ "Hora de verano de las islas Line", "LINST",
+ "Hora de las islas Line", "LINT"}},
{"Pacific/Kosrae", new String[] {"Hora de Kosrae", "KOST",
- "Hora de verano de Kosrae", "KOSST"}},
+ "Hora de verano de Kosrae", "KOSST",
+ "Hora de Kosrae", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Hora de Marquesas", "MART",
- "Hora de verano de Marquesas", "MARST"}},
+ "Hora de verano de Marquesas", "MARST",
+ "Hora de Marquesas", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Hora de Nauru", "NRT",
- "Hora de verano de Nauru", "NRST"}},
+ "Hora de verano de Nauru", "NRST",
+ "Hora de Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Hora de Niue", "NUT",
- "Hora de verano de Niue", "NUST"}},
+ "Hora de verano de Niue", "NUST",
+ "Hora de Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Hora de Norfolk", "NFT",
- "Hora de verano de Norfolk", "NFST"}},
+ "Hora de verano de Norfolk", "NFST",
+ "Hora de Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Hora de Nueva Caledonia", "NCT",
- "Hora de verano de Nueva Caledonia", "NCST"}},
+ "Hora de verano de Nueva Caledonia", "NCST",
+ "Hora de Nueva Caledonia", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Hora de Palau", "PWT",
- "Hora de verano de Palau", "PWST"}},
+ "Hora de verano de Palau", "PWST",
+ "Hora de Palau", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Hora de Pap\u00faa-Nueva Guinea", "PGT",
- "Hora de verano de Pap\u00faa-Nueva Guinea", "PGST"}},
+ "Hora de verano de Pap\u00faa-Nueva Guinea", "PGST",
+ "Hora de Pap\u00FAa-Nueva Guinea", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Hora de las islas Cook", "CKT",
- "Hora de verano de las islas Cook", "CKHST"}},
+ "Hora de verano de las islas Cook", "CKHST",
+ "Hora de las islas Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Hora de Tahit\u00ed", "TAHT",
- "Hora de verano de Tahit\u00ed", "TAHST"}},
+ "Hora de verano de Tahit\u00ed", "TAHST",
+ "Hora de Tahit\u00ED", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Hora de las islas Gilbert", "GILT",
- "Hora de verano de las islas Gilbert", "GILST"}},
+ "Hora de verano de las islas Gilbert", "GILST",
+ "Hora de las islas Gilbert", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Hora de Tonga", "TOT",
- "Hora de verano de Tonga", "TOST"}},
+ "Hora de verano de Tonga", "TOST",
+ "Hora de Tonga", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Hora de Wake", "WAKT",
- "Hora de verano de Wake", "WAKST"}},
+ "Hora de verano de Wake", "WAKST",
+ "Hora de Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Hora de Wallis y Futuna", "WFT",
- "Hora de verano de Wallis y Futuna", "WFST"}},
+ "Hora de verano de Wallis y Futuna", "WFST",
+ "Hora de Wallis y Futuna", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Heure de l'Acre", "ACT",
- "Heure d'\u00e9t\u00e9 de l'Acre", "ACST"};
+ "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"};
+ "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)", "CST",
+ "Centre (Australie-M\u00E9ridionale)", "CT"};
String AGT[] = new String[] {"Heure D'Argentine", "ART",
- "Heure d'\u00e9t\u00e9 D'Argentine", "ARST"} ;
+ "Heure d'\u00e9t\u00e9 D'Argentine", "ARST",
+ "Heure d'Argentine", "ART"} ;
String AKST[] = new String[] {"Heure normale d'Alaska", "AKST",
- "Heure avanc\u00e9e d'Alaska", "AKDT"} ;
+ "Heure avanc\u00e9e d'Alaska", "AKDT",
+ "Alaska", "AKT"} ;
String AMT[] = new String[] {"Heure normale d'Amazonie", "AMT",
- "Heure d'\u00e9t\u00e9 d'Amazonie", "AMST"} ;
+ "Heure d'\u00e9t\u00e9 d'Amazonie", "AMST",
+ "Heure d'Amazonie", "AMT"} ;
String ARAST[] = new String[] {"Heure normale d'Arabie", "AST",
- "Heure avanc\u00e9e d'Arabie", "ADT"} ;
+ "Heure avanc\u00e9e d'Arabie", "ADT",
+ "Arabie", "AT"} ;
String ARMT[] = new String[] {"Heure d'Arm\u00e9nie", "AMT",
- "Heure d'\u00e9t\u00e9 d'Arm\u00e9nie", "AMST"} ;
+ "Heure d'\u00e9t\u00e9 d'Arm\u00e9nie", "AMST",
+ "Heure d'Arm\u00E9nie", "AMT"} ;
String AST[] = new String[] {"Heure normale de l'Atlantique", "AST",
- "Heure avanc\u00e9e de l'Atlantique", "ADT"} ;
+ "Heure avanc\u00e9e de l'Atlantique", "ADT",
+ "Atlantique", "AT"} ;
String BDT[] = new String[] {"Heure du Bangladesh", "BDT",
- "Heure d'\u00e9t\u00e9 du Bangladesh", "BDST"} ;
+ "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"};
+ "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"};
+ "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 BRT[] = new String[] {"Heure du Br\u00e9sil", "BRT",
- "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST"} ;
+ "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST",
+ "Heure du Br\u00E9sil", "BRT"} ;
String BTT[] = new String[] {"Heure du Bhoutan", "BTT",
- "Heure d'\u00e9t\u00e9 du Bhoutan", "BTST"} ;
+ "Heure d'\u00e9t\u00e9 du Bhoutan", "BTST",
+ "Heure du Bhoutan", "BTT"} ;
String CAT[] = new String[] {"Heure d'Afrique centrale", "CAT",
- "Heure d'\u00e9t\u00e9 d'Afrique centrale", "CAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique centrale", "CAST",
+ "Heure d'Afrique centrale", "CAT"} ;
String CET[] = new String[] {"Heure d'Europe centrale", "CET",
- "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST"} ;
+ "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST",
+ "Heure d'Europe centrale", "CET"} ;
String CHAST[] = new String[] {"Heure standard de Chatham", "CHAST",
- "Heure avanc\u00e9e de Chatham", "CHADT"};
+ "Heure avanc\u00e9e de Chatham", "CHADT",
+ "Chatham", "CHAT"};
String CHUT[] = new String[] {"Heure de Chuuk", "CHUT",
- "Heure d'\u00E9t\u00E9 de Chuuk", "CHUST"};
+ "Heure d'\u00E9t\u00E9 de Chuuk", "CHUST",
+ "Heure de Chuuk", "CHUT"};
String CIT[] = new String[] {"Heure d'Indon\u00e9sie centrale", "WITA",
- "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie centrale", "CIST"};
+ "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie centrale", "CIST",
+ "Heure d'Indon\u00E9sie centrale", "WITA"};
String CLT[] = new String[] {"Heure du Chili", "CLT",
- "Heure d'\u00e9t\u00e9 du Chili", "CLST"} ;
+ "Heure d'\u00e9t\u00e9 du Chili", "CLST",
+ "Heure du Chili", "CLT"} ;
String CST[] = new String[] {"Heure normale du Centre", "CST",
- "Heure avanc\u00e9e du Centre", "CDT"} ;
+ "Heure avanc\u00e9e du Centre", "CDT",
+ "Centre", "CT"} ;
String CTT[] = new String[] {"Heure normale de Chine", "CST",
- "Heure avanc\u00e9e de Chine", "CDT"} ;
+ "Heure avanc\u00e9e de Chine", "CDT",
+ "Chine", "CT"} ;
String CUBA[] = new String[] {"Heure standard de Cuba", "CST",
- "Heure d'\u00e9t\u00e9 de Cuba", "CDT"};
+ "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"};
+ "Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)", "CST",
+ "Centre (Territoire du Nord)", "CT"};
String DUBLIN[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
- "Heure d'\u00e9t\u00e9 irlandaise", "IST"};
+ "Heure d'\u00e9t\u00e9 irlandaise", "IST",
+ "Heure irlandaise", "IT"};
String EAT[] = new String[] {"Heure d'Afrique de l'Est", "EAT",
- "Heure d'\u00e9t\u00e9 d'Afrique de l'Est", "EAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique de l'Est", "EAST",
+ "Heure d'Afrique de l'Est", "EAT"} ;
String EASTER[] = new String[] {"Heure de l'Ile de P\u00e2ques", "EAST",
- "Heure d'\u00e9t\u00e9 de l'Ile de P\u00e2ques", "EASST"};
+ "Heure d'\u00e9t\u00e9 de l'Ile de P\u00e2ques", "EASST",
+ "Heure de l'Ile de P\u00E2ques", "EAST"};
String EET[] = new String[] {"Heure d'Europe de l'Est", "EET",
- "Heure d'\u00e9t\u00e9 d'Europe de l'Est", "EEST"} ;
+ "Heure d'\u00e9t\u00e9 d'Europe de l'Est", "EEST",
+ "Heure d'Europe de l'Est", "EET"} ;
String EGT[] = new String[] {"Heure du Groenland de l'Est", "EGT",
- "Heure d'\u00e9t\u00e9 du Groenland de l'Est", "EGST"} ;
+ "Heure d'\u00e9t\u00e9 du Groenland de l'Est", "EGST",
+ "Heure du Groenland de l'Est", "EGT"} ;
String EST[] = new String[] {"Heure normale de l'Est", "EST",
- "Heure avanc\u00e9e de l'Est", "EDT"} ;
+ "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"} ;
+ "Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)", "EST",
+ "C\u00F4te Est (Nouvelle-Galles du Sud)", "ET"} ;
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'\u00E9t\u00E9 d'Europe de l'Est UTC+3", "FEST",
+ "Heure d'Europe de l'Est UTC+3", "FET"};
String GHMT[] = new String[] {"Heure du Ghana", "GMT",
- "Heure d'\u00e9t\u00e9 du Ghana", "GHST"};
+ "Heure d'\u00e9t\u00e9 du Ghana", "GHST",
+ "Heure du Ghana", "GMT"};
String GAMBIER[] = new String[] {"Heure de Gambi", "GAMT",
- "Heure d'\u00e9t\u00e9 de Gambi", "GAMST"};
+ "Heure d'\u00e9t\u00e9 de Gambi", "GAMST",
+ "Heure de Gambi", "GAMT"};
String GMT[] = new String[] {"Heure de Greenwich", "GMT",
+ "Heure de Greenwich", "GMT",
"Heure de Greenwich", "GMT"} ;
String GMTBST[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
- "Heure d'\u00e9t\u00e9 britannique", "BST"};
+ "Heure d'\u00e9t\u00e9 britannique", "BST",
+ "Heure britannique", "BT"};
String GST[] = new String[] {"Heure normale du Golfe", "GST",
- "Heure avanc\u00e9e du Golfe", "GDT"} ;
+ "Heure avanc\u00e9e du Golfe", "GDT",
+ "Golfe", "GT"} ;
String HAST[] = new String[] {"Heure normale d'Hawa\u00ef-Al\u00e9outiennes", "HAST",
- "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT"} ;
+ "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT",
+ "Hawa\u00EF-Iles Al\u00E9outiennes", "HAT"} ;
String HKT[] = new String[] {"Heure de Hong Kong", "HKT",
- "Heure d'\u00e9t\u00e9 de Hong Kong", "HKST"};
+ "Heure d'\u00e9t\u00e9 de Hong Kong", "HKST",
+ "Heure de Hong-Kong", "HKT"};
String HST[] = new String[] {"Heure normale d'Hawa\u00ef", "HST",
- "Heure avanc\u00e9e d'Hawa\u00ef", "HDT"} ;
+ "Heure avanc\u00e9e d'Hawa\u00ef", "HDT",
+ "Hawa\u00EF", "HT"} ;
String ICT[] = new String[] {"Heure d'Indochine", "ICT",
- "Heure d'\u00e9t\u00e9 d'Indochine", "ICST"} ;
+ "Heure d'\u00e9t\u00e9 d'Indochine", "ICST",
+ "Heure d'Indochine", "ICT"} ;
String IRT[] = new String[] {"Heure normale d'Iran", "IRST",
- "Heure avanc\u00e9e d'Iran", "IRDT"} ;
+ "Heure avanc\u00e9e d'Iran", "IRDT",
+ "Heure d'Iran", "IRT"} ;
String ISRAEL[] = new String[] {"Heure standard d'Isra\u00ebl", "IST",
- "Heure avanc\u00e9e d'Isra\u00ebl", "IDT"};
+ "Heure avanc\u00e9e d'Isra\u00ebl", "IDT",
+ "Isra\u00EBl", "IT"};
String IST[] = new String[] {"Heure normale d'Inde", "IST",
- "Heure avanc\u00e9e d'Inde", "IDT"} ;
+ "Heure avanc\u00e9e d'Inde", "IDT",
+ "Inde", "IT"} ;
String JST[] = new String[] {"Heure normale du Japon", "JST",
- "Heure avanc\u00e9e du Japon", "JDT"} ;
+ "Heure avanc\u00e9e du Japon", "JDT",
+ "Japon", "JT"} ;
String KST[] = new String[] {"Heure normale de Cor\u00e9e", "KST",
- "Heure avanc\u00e9e de Cor\u00e9e", "KDT"} ;
+ "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", "LHST",
+ "Heure de Lord Howe", "LHT"};
String MHT[] = new String[] {"Heure des Iles Marshall", "MHT",
- "Heure d'\u00e9t\u00e9 des Iles Marshall", "MHST"};
+ "Heure d'\u00e9t\u00e9 des Iles Marshall", "MHST",
+ "Heure des Iles Marshall", "MHT"};
String MSK[] = new String[] {"Heure standard de Moscou", "MSK",
- "Heure avanc\u00e9e de Moscou", "MSD"};
+ "Heure avanc\u00e9e de Moscou", "MSD",
+ "Moscou", "MT"};
String MST[] = new String[] {"Heure normale des Rocheuses", "MST",
- "Heure avanc\u00e9e des Rocheuses", "MDT"} ;
+ "Heure avanc\u00e9e des Rocheuses", "MDT",
+ "Rocheuses", "MT"} ;
String MYT[] = new String[] {"Heure de Malaisie", "MYT",
- "Heure d'\u00e9t\u00e9 de Malaisie", "MYST"};
+ "Heure d'\u00e9t\u00e9 de Malaisie", "MYST",
+ "Heure de Malaisie", "MYT"};
String NORONHA[] = new String[] {"Heure de Fernando de Noronha", "FNT",
- "Heure d'\u00e9t\u00e9 de Fernando de Noronha", "FNST"};
+ "Heure d'\u00e9t\u00e9 de Fernando de Noronha", "FNST",
+ "Heure de Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Heure de Novossibirsk", "NOVT",
- "Heure d'\u00e9t\u00e9 de Novossibirsk", "NOVST"};
+ "Heure d'\u00e9t\u00e9 de Novossibirsk", "NOVST",
+ "Heure de Novossibirsk", "NOVT"};
String NPT[] = new String[] {"Heure du N\u00e9pal", "NPT",
- "Heure d'\u00e9t\u00e9 du N\u00e9pal", "NPST"};
+ "Heure d'\u00e9t\u00e9 du N\u00e9pal", "NPST",
+ "Heure du N\u00E9pal", "NPT"};
String NST[] = new String[] {"Heure normale de Terre-Neuve", "NST",
- "Heure avanc\u00e9e de Terre-Neuve", "NDT"} ;
+ "Heure avanc\u00e9e de Terre-Neuve", "NDT",
+ "Terre-Neuve", "NT"} ;
String NZST[] = new String[] {"Heure normale de Nouvelle-Z\u00e9lande", "NZST",
- "Heure avanc\u00e9e de Nouvelle-Z\u00e9lande", "NZDT"} ;
+ "Heure avanc\u00e9e de Nouvelle-Z\u00e9lande", "NZDT",
+ "Nouvelle-Z\u00E9lande", "NZT"} ;
String PITCAIRN[] = new String[] {"Heure standard des Pitcairn", "PST",
- "heure avanc\u00e9e des Pitcairn", "PDT"};
+ "heure avanc\u00e9e des Pitcairn", "PDT",
+ "Pitcairn", "PT"};
String PKT[] = new String[] {"Heure du Pakistan", "PKT",
- "Heure d'\u00e9t\u00e9 du Pakistan", "PKST"} ;
+ "Heure d'\u00e9t\u00e9 du Pakistan", "PKST",
+ "Heure du Pakistan", "PKT"} ;
String PONT[] = new String[] {"Heure de Pohnpei", "PONT",
- "Heure d'\u00E9t\u00E9 de Pohnpei", "PONST"};
+ "Heure d'\u00E9t\u00E9 de Pohnpei", "PONST",
+ "Ponape", "PONT"};
String PST[] = new String[] {"Heure normale du Pacifique", "PST",
- "Heure avanc\u00e9e du Pacifique", "PDT"} ;
+ "Heure avanc\u00e9e du Pacifique", "PDT",
+ "Pacifique", "PT"} ;
String SAST[] = new String[] {"Heure normale d'Afrique du Sud", "SAST",
- "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST",
+ "Afrique du Sud", "SAT"} ;
String SBT[] = new String[] {"Heure des \u00celes Salomon", "SBT",
- "Heure d'\u00e9t\u00e9 des \u00celes Salomon", "SBST"} ;
+ "Heure d'\u00e9t\u00e9 des \u00celes Salomon", "SBST",
+ "Heure des Iles Salomon", "SBT"} ;
String SGT[] = new String[] {"Heure de Singapour", "SGT",
- "Heure d'\u00e9t\u00e9 de Singapour", "SGST"};
+ "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 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"};
+ "Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)", "EST",
+ "C\u00F4te Est (Tasmanie)", "ET"};
String TMT[] = new String[] {"Heure du Turkm\u00e9nistan", "TMT",
- "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST"} ;
+ "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 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'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST",
+ "Heure d'Afrique de l'Ouest", "WAT"} ;
String WET[] = new String[] {"Heure d'Europe de l'Ouest", "WET",
- "Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST"} ;
+ "Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST",
+ "Heure d'Europe de l'Ouest", "WET"} ;
String WIT[] = new String[] {"Heure de l'Indon\u00e9sie occidentale", "WIB",
- "Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST"};
+ "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"} ;
+ "Heure d'\u00E9t\u00E9 de l'Ouest (Australie)", "WST",
+ "Ouest (Australie)", "WT"} ;
String SAMOA[] = new String[] {"Heure standard de Samoa", "SST",
- "Heure avanc\u00e9e de Samoa", "SDT"};
+ "Heure avanc\u00e9e de Samoa", "SDT",
+ "Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WST",
- "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT"} ;
+ "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"};
+ "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"};
+ "Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)", "EST",
+ "C\u00F4te Est (Victoria)", "ET"};
String UTC[] = new String[] {"Temps universel coordonn\u00e9", "UTC",
- "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 d'\u00e9t\u00e9 de l'Ouzb\u00e9kistan", "UZST",
+ "Heure de l'Ouzb\u00E9kistan", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Heure du Paraguay", "PYT",
- "Heure d'\u00e9t\u00e9 du Paraguay", "PYST"}},
+ "Heure d'\u00e9t\u00e9 du Paraguay", "PYST",
+ "Heure du Paraguay", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Heure de Colombie", "COT",
- "Heure d'\u00e9t\u00e9 de Colombie", "COST"}},
+ "Heure d'\u00e9t\u00e9 de Colombie", "COST",
+ "Heure de Colombie", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Heure du Venezuela", "VET",
- "Heure d'\u00e9t\u00e9 du Venezuela", "VEST"}},
+ "Heure d'\u00e9t\u00e9 du Venezuela", "VEST",
+ "Heure du Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Heure de Guyane fran\u00e7aise", "GFT",
- "Heure d'\u00e9t\u00e9 de Guyane fran\u00e7aise", "GFST"}},
+ "Heure d'\u00e9t\u00e9 de Guyane fran\u00e7aise", "GFST",
+ "Heure de Guyane fran\u00E7aise", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Heure du Groenland de l'Ouest", "WGT",
- "Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST"}},
+ "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/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Heure de l'\u00c9quateur", "ECT",
- "Heure d'\u00e9t\u00e9 de l'\u00c9quateur", "ECST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00c9quateur", "ECST",
+ "Heure de l'Equateur", "ECT"}},
{"America/Guyana", new String[] {"Heure de Guyana", "GYT",
- "Heure d'\u00e9t\u00e9 de Guyana", "GYST"}},
+ "Heure d'\u00e9t\u00e9 de Guyana", "GYST",
+ "Heure de Guyana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Heure de Bolivie", "BOT",
- "Heure d'\u00e9t\u00e9 de Bolivie", "BOST"}},
+ "Heure d'\u00e9t\u00e9 de Bolivie", "BOST",
+ "Heure de Bolivie", "BOT"}},
{"America/Lima", new String[] {"Heure du P\u00e9rou", "PET",
- "Heure d'\u00e9t\u00e9 du P\u00e9rou", "PEST"}},
+ "Heure d'\u00e9t\u00e9 du P\u00e9rou", "PEST",
+ "Heure du P\u00E9rou", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Heure normale de Metlakatla", "MeST",
- "Heure avanc\u00E9e de Metlakatla", "MeDT"}},
+ "Heure avanc\u00E9e de Metlakatla", "MeDT",
+ "Heure de Metlakatla", "MeT"}},
{"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"}},
+ "Heure avanc\u00e9e de Saint-Pierre et Miquelon", "PMDT",
+ "Saint-Pierre-et-Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Heure de l'Uruguay", "UYT",
- "Heure d'\u00e9t\u00e9 de l'Uruguay", "UYST"}},
+ "Heure d'\u00e9t\u00e9 de l'Uruguay", "UYST",
+ "Heure de l'Uruguay", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Heure du Surinam", "SRT",
- "Heure d'\u00e9t\u00e9 du Surinam", "SRST"}},
+ "Heure d'\u00e9t\u00e9 du Surinam", "SRST",
+ "Heure du Surinam", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Heure de Davis", "DAVT",
- "Heure d'\u00e9t\u00e9 de Davis", "DAVST"}},
+ "Heure d'\u00e9t\u00e9 de Davis", "DAVST",
+ "Heure de Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Heure de Dumont-d'Urville", "DDUT",
- "Heure d'\u00e9t\u00e9 de Dumont-d'Urville", "DDUST"}},
+ "Heure d'\u00e9t\u00e9 de Dumont-d'Urville", "DDUST",
+ "Heure de Dumont-d'Urville", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Heure de l'Ile Macquarie", "MIST",
- "Heure d'\u00E9t\u00E9 de l'Ile Macquarie", "MIST"}},
+ "Heure d'\u00E9t\u00E9 de l'Ile Macquarie", "MIST",
+ "Heure de l'Ile Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Heure de Mawson", "MAWT",
- "Heure d'\u00e9t\u00e9 de Mawson", "MAWST"}},
+ "Heure d'\u00e9t\u00e9 de Mawson", "MAWST",
+ "Heure de Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Heure de Rothera", "ROTT",
- "Heure d'\u00e9t\u00e9 de Rothera", "ROTST"}},
+ "Heure d'\u00e9t\u00e9 de Rothera", "ROTST",
+ "Heure de Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Heure de Syowa", "SYOT",
- "Heure d'\u00e9t\u00e9 de Syowa", "SYOST"}},
+ "Heure d'\u00e9t\u00e9 de Syowa", "SYOST",
+ "Heure de Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Heure de Vostok", "VOST",
- "Heure d'\u00e9t\u00e9 de Vostok", "VOSST"}},
+ "Heure d'\u00e9t\u00e9 de Vostok", "VOSST",
+ "Heure de Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Heure d'Alma-Ata", "ALMT",
- "Heure d'\u00e9t\u00e9 d'Alma-Ata", "ALMST"}},
+ "Heure d'\u00e9t\u00e9 d'Alma-Ata", "ALMST",
+ "Heure d'Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Heure d'Anadyr", "ANAT",
- "Heure d'\u00e9t\u00e9 d'Anadyr", "ANAST"}},
+ "Heure d'\u00e9t\u00e9 d'Anadyr", "ANAST",
+ "Heure d'Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Heure d'Aqtau", "AQTT",
- "Heure d'\u00e9t\u00e9 d'Aqtau", "AQTST"}},
+ "Heure d'\u00e9t\u00e9 d'Aqtau", "AQTST",
+ "Heure d'Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Heure d'Aqtobe", "AQTT",
- "Heure d'\u00e9t\u00e9 d'Aqtobe", "AQTST"}},
+ "Heure d'\u00e9t\u00e9 d'Aqtobe", "AQTST",
+ "Heure d'Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Heure d'Azerba\u00efdjan", "AZT",
- "Heure d'\u00e9t\u00e9 d'Azerba\u00efdjan", "AZST"}},
+ "Heure d'\u00e9t\u00e9 d'Azerba\u00efdjan", "AZST",
+ "Heure d'Azerba\u00EFdjan", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Heure du Kirghizistan", "KGT",
- "Heure d'\u00e9t\u00e9 du Kirghizistan", "KGST"}},
+ "Heure d'\u00e9t\u00e9 du Kirghizistan", "KGST",
+ "Heure du Kirghizistan", "KGT"}},
{"Asia/Brunei", new String[] {"Heure du Brunei", "BNT",
- "Heure d'\u00e9t\u00e9 du Brunei", "BNST"}},
+ "Heure d'\u00e9t\u00e9 du Brunei", "BNST",
+ "Heure du Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Heure de Choibalsan", "CHOT",
- "Heure d'\u00e9t\u00e9 de Choibalsan", "CHOST"}},
+ "Heure d'\u00e9t\u00e9 de Choibalsan", "CHOST",
+ "Heure de Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Heure de Timor-Leste", "TLT",
- "Heure d'\u00e9t\u00e9 de Timor-Leste", "TLST"}},
+ "Heure d'\u00e9t\u00e9 de Timor-Leste", "TLST",
+ "Heure de Timor-Leste", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Heure du Tadjikistan", "TJT",
- "Heure d'\u00e9t\u00e9 du Tadjikistan", "TJST"}},
+ "Heure d'\u00e9t\u00e9 du Tadjikistan", "TJST",
+ "Heure du Tadjikistan", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Heure de Hovd", "HOVT",
- "Heure d'\u00e9t\u00e9 de Hovd", "HOVST"}},
+ "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'\u00e9t\u00e9 d'Irkutsk", "IRKST",
+ "Heure d'Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Heure d'Indon\u00e9sie orientale", "WIT",
- "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie orientale", "EIST"}},
+ "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie orientale", "EIST",
+ "Heure d'Indon\u00E9sie orientale", "WIT"}},
{"Asia/Kabul", new String[] {"Heure d'Afghanistan", "AFT",
- "Heure d'\u00e9t\u00e9 d'Afghanistan", "AFST"}},
+ "Heure d'\u00e9t\u00e9 d'Afghanistan", "AFST",
+ "Heure d'Afghanistan", "AFT"}},
{"Asia/Kamchatka", new String[] {"Heure de Petropavlovsk-Kamchatski", "PETT",
- "Heure d'\u00e9t\u00e9 de Petropavlovsk-Kamchatski", "PETST"}},
+ "Heure d'\u00e9t\u00e9 de Petropavlovsk-Kamchatski", "PETST",
+ "Heure de Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Heure de Khandyga", "YAKT",
- "Heure d'\u00E9t\u00E9 de Khandyga", "YAKST"}},
+ "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 d'\u00e9t\u00e9 de Krasno\u00efarsk", "KRAST",
+ "Heure de Krasno\u00EFarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Heure de Magadan", "MAGT",
- "Heure d'\u00e9t\u00e9 de Magadan", "MAGST"}},
+ "Heure d'\u00e9t\u00e9 de Magadan", "MAGST",
+ "Heure de Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Heure des Philippines", "PHT",
- "Heure d'\u00e9t\u00e9 des Philippines", "PHST"}},
+ "Heure d'\u00e9t\u00e9 des Philippines", "PHST",
+ "Heure des Philippines", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Heure d'Oral", "ORAT",
- "Heure d'\u00e9t\u00e9 d'Oral", "ORAST"}},
+ "Heure d'\u00e9t\u00e9 d'Oral", "ORAST",
+ "Heure d'Oral", "ORAT"}},
{"Asia/Omsk", new String[] {"Heure d'Omsk", "OMST",
- "Heure d'\u00e9t\u00e9 d'Omsk", "OMSST"}},
+ "Heure d'\u00e9t\u00e9 d'Omsk", "OMSST",
+ "Heure d'Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Heure de Kyzylorda", "QYZT",
- "Heure d'\u00e9t\u00e9 de Kyzylorda", "QYZST"}},
+ "Heure d'\u00e9t\u00e9 de Kyzylorda", "QYZST",
+ "Heure de Kyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Heure de Myanmar", "MMT",
- "Heure d'\u00e9t\u00e9 de Myanmar", "MMST"}},
+ "Heure d'\u00e9t\u00e9 de Myanmar", "MMST",
+ "Heure de Myanmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Heure de Sakhalin", "SAKT",
- "Heure d'\u00e9t\u00e9 de Sakhalin", "SAKST"}},
+ "Heure d'\u00e9t\u00e9 de Sakhalin", "SAKST",
+ "Heure de Sakhalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Heure de G\u00e9orgie", "GET",
- "Heure d'\u00e9t\u00e9 de G\u00e9orgie", "GEST"}},
+ "Heure d'\u00e9t\u00e9 de G\u00e9orgie", "GEST",
+ "Heure de G\u00E9orgie", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Heure d'Ust-Nera", "VLAT",
- "Heure d'\u00E9t\u00E9 d'Ust-Nera", "VLAST"}},
+ "Heure d'\u00E9t\u00E9 d'Ust-Nera", "VLAST",
+ "Heure d'Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Heure de Vladivostok", "VLAT",
- "Heure d'\u00e9t\u00e9 de Vladivostok", "VLAST"}},
+ "Heure d'\u00e9t\u00e9 de Vladivostok", "VLAST",
+ "Heure de Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Heure du Iakoutsk", "YAKT",
- "Heure d'\u00e9t\u00e9 du Iakoutsk", "YAKST"}},
+ "Heure d'\u00e9t\u00e9 du Iakoutsk", "YAKST",
+ "Heure du Iakoutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Heure de Yekaterinburg", "YEKT",
- "Heure d'\u00e9t\u00e9 de Yekaterinburg", "YEKST"}},
+ "Heure d'\u00e9t\u00e9 de Yekaterinburg", "YEKST",
+ "Heure de Yekaterinburg", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Heure des A\u00e7ores", "AZOT",
- "Heure d'\u00e9t\u00e9 des A\u00e7ores", "AZOST"}},
+ "Heure d'\u00e9t\u00e9 des A\u00e7ores", "AZOST",
+ "Heure des A\u00E7ores", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Heure de Cap-Vert", "CVT",
- "Heure d'\u00e9t\u00e9 de Cap-Vert", "CVST"}},
+ "Heure d'\u00e9t\u00e9 de Cap-Vert", "CVST",
+ "Heure de Cap-Vert", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Heure normale de G\u00e9orgie du Sud", "GST",
- "Heure avanc\u00e9e de G\u00e9orgie du Sud", "GDT"}},
+ "Heure avanc\u00e9e de G\u00e9orgie du Sud", "GDT",
+ "G\u00E9orgie du Sud", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Heure des \u00eeles Falkland", "FKT",
- "Heure d'\u00e9t\u00e9 des \u00eeles Falkland", "FKST"}},
+ "Heure d'\u00e9t\u00e9 des \u00eeles Falkland", "FKST",
+ "Heure des \u00EEles Falkland", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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 d'\u00E9t\u00E9 de l'Australie occidentale (centre)", "CWST",
+ "Heure de l'Australie occidentale (centre)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Heure normale de Samara", "SAMT",
- "Heure d'\u00e9t\u00e9 de Samara", "SAMST"}},
+ "Heure d'\u00e9t\u00e9 de Samara", "SAMST",
+ "Heure de Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Heure de Volgograd", "VOLT",
- "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST"}},
+ "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST",
+ "Heure de Volgograd", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Heure de l'oc\u00e9an Indien", "IOT",
- "Heure d'\u00e9t\u00e9 de l'oc\u00e9an Indien", "IOST"}},
+ "Heure d'\u00e9t\u00e9 de l'oc\u00e9an Indien", "IOST",
+ "Heure de l'oc\u00E9an Indien", "IOT"}},
{"Indian/Christmas", new String[] {"Heure de l'\u00cele Christmas", "CXT",
- "Heure d'\u00e9t\u00e9 de l'\u00cele Christmas", "CXST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00cele Christmas", "CXST",
+ "Heure de l'Ile Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Heure des \u00celes Cocos", "CCT",
- "Heure d'\u00e9t\u00e9 des \u00celes Cocos", "CCST"}},
+ "Heure d'\u00e9t\u00e9 des \u00celes Cocos", "CCST",
+ "Heure des Iles Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Heure des Terres australes antartiques fran\u00e7aises", "TFT",
- "Heure d'\u00e9t\u00e9 des Terres australes antartiques fran\u00e7aises", "TFST"}},
+ "Heure d'\u00e9t\u00e9 des Terres australes antartiques fran\u00e7aises", "TFST",
+ "Heure des Terres australes antarctiques fran\u00E7aises", "TFT"}},
{"Indian/Mahe", new String[] {"Heure des Seychelles", "SCT",
- "Heure d'\u00e9t\u00e9 des Seychelles", "SCST"}},
+ "Heure d'\u00e9t\u00e9 des Seychelles", "SCST",
+ "Heure des Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Heure des Maldives", "MVT",
- "Heure d'\u00e9t\u00e9 des Maldives", "MVST"}},
+ "Heure d'\u00e9t\u00e9 des Maldives", "MVST",
+ "Heure des Maldives", "MVT"}},
{"Indian/Mauritius", new String[] {"Heure de Maurice", "MUT",
- "Heure d'\u00e9t\u00e9 de Maurice", "MUST"}},
+ "Heure d'\u00e9t\u00e9 de Maurice", "MUST",
+ "Heure de Maurice", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Heure de la R\u00e9union", "RET",
- "Heure d'\u00e9t\u00e9 de la R\u00e9union", "REST"}},
+ "Heure d'\u00e9t\u00e9 de la R\u00e9union", "REST",
+ "Heure de la R\u00E9union", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Heure de l'Europe centrale", "MET",
- "Heure d'\u00e9t\u00e9 de l'Europe centrale", "MEST"}},
+ "Heure d'\u00e9t\u00e9 de l'Europe centrale", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Heure du Vanuatu", "VUT",
- "Heure d'\u00e9t\u00e9 du Vanuatu", "VUST"}},
+ "Heure d'\u00e9t\u00e9 du Vanuatu", "VUST",
+ "Heure du Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Heure de l'\u00cele de Phoenix", "PHOT",
- "Heure d'\u00e9t\u00e9 de l'\u00cele de Phoenix", "PHOST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00cele de Phoenix", "PHOST",
+ "Heure de l'Ile de Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Heure de Tokelau", "TKT",
- "Heure d'\u00e9t\u00e9 de Tokelau", "TKST"}},
+ "Heure d'\u00e9t\u00e9 de Tokelau", "TKST",
+ "Heure de Tokelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Heure de Fidji", "FJT",
- "Heure d'\u00e9t\u00e9 de Fidji", "FJST"}},
+ "Heure d'\u00e9t\u00e9 de Fidji", "FJST",
+ "Heure de Fidji", "FJT"}},
{"Pacific/Funafuti", new String[] {"Heure de Tuvalu", "TVT",
- "Heure d'\u00e9t\u00e9 de Tuvalu", "TVST"}},
+ "Heure d'\u00e9t\u00e9 de Tuvalu", "TVST",
+ "Heure de Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Heure des Galapagos", "GALT",
- "Heure d'\u00e9t\u00e9 des Galapagos", "GALST"}},
+ "Heure d'\u00e9t\u00e9 des Galapagos", "GALST",
+ "Heure des Galapagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Heure de l'\u00cele de Line", "LINT",
- "Heure d'\u00e9t\u00e9 de l'\u00cele de Line", "LINST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00cele de Line", "LINST",
+ "Heure de l'Ile de Line", "LINT"}},
{"Pacific/Kosrae", new String[] {"Heure de Kusaie", "KOST",
- "Heure d'\u00e9t\u00e9 de Kusaie", "KOSST"}},
+ "Heure d'\u00e9t\u00e9 de Kusaie", "KOSST",
+ "Heure de Kusaie", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Heure des Marquises", "MART",
- "Heure d'\u00e9t\u00e9 des Marquises", "MARST"}},
+ "Heure d'\u00e9t\u00e9 des Marquises", "MARST",
+ "Heure des Marquises", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Heure de Nauru", "NRT",
- "Heure d'\u00e9t\u00e9 de Nauru", "NRST"}},
+ "Heure d'\u00e9t\u00e9 de Nauru", "NRST",
+ "Heure de Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Heure de Niue", "NUT",
- "Heure d'\u00e9t\u00e9 de Niue", "NUST"}},
+ "Heure d'\u00e9t\u00e9 de Niue", "NUST",
+ "Heure de Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Heure de Norfolk", "NFT",
- "Heure d'\u00e9t\u00e9 de Norfolk", "NFST"}},
+ "Heure d'\u00e9t\u00e9 de Norfolk", "NFST",
+ "Heure de Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Heure de Nouvelle-Cal\u00e9donie", "NCT",
- "Heure d'\u00e9t\u00e9 de Nouvelle-Cal\u00e9donie", "NCST"}},
+ "Heure d'\u00e9t\u00e9 de Nouvelle-Cal\u00e9donie", "NCST",
+ "Heure de Nouvelle-Cal\u00E9donie", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Heure de Palaos", "PWT",
- "Heure d'\u00e9t\u00e9 de Palaos", "PWST"}},
+ "Heure d'\u00e9t\u00e9 de Palaos", "PWST",
+ "Heure de Palaos", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Heure de Papouasie-Nouvelle-Guin\u00e9e", "PGT",
- "Heure d'\u00e9t\u00e9 de de Papouasie-Nouvelle-Guin\u00e9e", "PGST"}},
+ "Heure d'\u00e9t\u00e9 de de Papouasie-Nouvelle-Guin\u00e9e", "PGST",
+ "Heure de Papouasie-Nouvelle-Guin\u00E9e", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Heure des \u00celes Cook", "CKT",
- "Heure d'\u00e9t\u00e9 des \u00celes Cook", "CKHST"}},
+ "Heure d'\u00e9t\u00e9 des \u00celes Cook", "CKHST",
+ "Heure des Iles Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Heure de Tahiti", "TAHT",
- "Heure d'\u00e9t\u00e9 de Tahiti", "TAHST"}},
+ "Heure d'\u00e9t\u00e9 de Tahiti", "TAHST",
+ "Heure de Tahiti", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Heure de Kiribati", "GILT",
- "Heure d'\u00e9t\u00e9 de Kiribati", "GILST"}},
+ "Heure d'\u00e9t\u00e9 de Kiribati", "GILST",
+ "Heure de Kiribati", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Heure de Tonga", "TOT",
- "Heure d'\u00e9t\u00e9 de Tonga", "TOST"}},
+ "Heure d'\u00e9t\u00e9 de Tonga", "TOST",
+ "Heure de Tonga", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Heure de Wake", "WAKT",
- "Heure d'\u00e9t\u00e9 de Wake", "WAKST"}},
+ "Heure d'\u00e9t\u00e9 de Wake", "WAKST",
+ "Heure de Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Heure de Wallis et Futuna", "WFT",
- "Heure d'\u00e9t\u00e9 de Wallis et Futuna", "WFST"}},
+ "Heure d'\u00e9t\u00e9 de Wallis et Futuna", "WFST",
+ "Heure de Wallis-et-Futuna", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Ora di Acre", "ACT",
- "Ora estiva di Acre", "ACST"};
+ "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 estiva centrale (Australia del Sud)", "CST",
+ "Ora fuso centrale (Australia del Sud)", "CT"};
String AGT[] = new String[] {"Ora dell'Argentina", "ART",
- "Ora estiva dell'Argentina", "ARST"};
+ "Ora estiva dell'Argentina", "ARST",
+ "Ora dell'Argentina", "ART"};
String AKST[] = new String[] {"Ora solare dell'Alaska", "AKST",
- "Ora legale dell'Alaska", "AKDT"};
+ "Ora legale dell'Alaska", "AKDT",
+ "Ora Alaska", "AKT"};
String AMT[] = new String[] {"Ora solare dell'Amazzonia", "AMT",
- "Ora estiva dell'Amazzonia", "AMST"};
+ "Ora estiva dell'Amazzonia", "AMST",
+ "Ora dell'Amazzonia", "AMT"};
String ARAST[] = new String[] {"Ora solare dell'Arabia", "AST",
- "Ora legale dell'Arabia", "ADT"};
+ "Ora legale dell'Arabia", "ADT",
+ "Ora Arabia Saudita", "AT"};
String ARMT[] = new String[] {"Ora dell'Armenia", "AMT",
- "Ora estiva dell'Armenia", "AMST"};
+ "Ora estiva dell'Armenia", "AMST",
+ "Ora dell'Armenia", "AMT"};
String AST[] = new String[] {"Ora solare dell'Atlantico occidentale", "AST",
- "Ora legale dell'Atlantico occidentale", "ADT"};
+ "Ora legale dell'Atlantico occidentale", "ADT",
+ "Fuso dell'Atlantico", "AT"};
String BDT[] = new String[] {"Ora del Bangladesh", "BDT",
- "Ora estiva del Bangladesh", "BDST"};
+ "Ora estiva del Bangladesh", "BDST",
+ "Ora del Bangladesh", "BDT"};
String BRISBANE[] = new String[] {"Ora standard orientale (Queensland)", "EST",
- "Ora estiva 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 estiva centrale (Australia del Sud/Nuovo Galles del Sud)", "CST",
+ "Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)", "CT"};
String BRT[] = new String[] {"Ora del Brasile", "BRT",
- "Ora estiva del Brasile", "BRST"};
+ "Ora estiva del Brasile", "BRST",
+ "Ora di Brasilia", "BRT"};
String BTT[] = new String[] {"Ora del Bhutan", "BTT",
- "Ora estiva del Bhutan", "BTST"};
+ "Ora estiva del Bhutan", "BTST",
+ "Ora del Bhutan", "BTT"};
String CAT[] = new String[] {"Ora dell'Africa centrale", "CAT",
- "Ora estiva dell'Africa centrale", "CAST"};
+ "Ora estiva dell'Africa centrale", "CAST",
+ "Ora dell'Africa centrale", "CAT"};
String CET[] = new String[] {"Ora dell'Europa centrale", "CET",
- "Ora estiva dell'Europa centrale", "CEST"};
+ "Ora estiva dell'Europa centrale", "CEST",
+ "Ora dell'Europa centrale", "CET"};
String CHAST[] = new String[] {"Ora di Chatham standard", "CHAST",
- "Ora legale di Chatham", "CHADT"};
+ "Ora legale di Chatham", "CHADT",
+ "Ora Chatham", "CHAT"};
String CHUT[] = new String[] {"Ora di Chuuk", "CHUT",
- "Ora estiva di Chuuk", "CHUST"};
+ "Ora estiva di Chuuk", "CHUST",
+ "Ora di Chuuk", "CHUT"};
String CIT[] = new String[] {"Ora dell'Indonesia centrale", "WITA",
- "Ora estiva dell'Indonesia centrale", "CIST"};
+ "Ora estiva dell'Indonesia centrale", "CIST",
+ "Ora dell'Indonesia centrale", "WITA"};
String CLT[] = new String[] {"Ora del Cile", "CLT",
- "Ora estiva del Cile", "CLST"};
+ "Ora estiva del Cile", "CLST",
+ "Ora del Cile", "CLT"};
String CST[] = new String[] {"Ora solare USA centrale", "CST",
- "Ora legale USA centrale", "CDT"};
+ "Ora legale USA centrale", "CDT",
+ "Ora fuso centrale", "CT"};
String CTT[] = new String[] {"Ora solare della Cina", "CST",
- "Ora legale della Cina", "CDT"};
+ "Ora legale della Cina", "CDT",
+ "Ora Cina", "CT"};
String CUBA[] = new String[] {"Ora solare Cuba", "CST",
- "Ora legale Cuba", "CDT"};
+ "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 estiva centrale (Territori del Nord)", "CST",
+ "Ora fuso centrale (Territori del Nord)", "CT"};
String DUBLIN[] = new String[] {"Ora media di Greenwich", "GMT",
- "Ora estiva irlandese", "IST"};
+ "Ora estiva irlandese", "IST",
+ "Ora irlandese", "IT"};
String EAT[] = new String[] {"Ora dell'Africa orientale", "EAT",
- "Ora estiva dell'Africa orientale", "EAST"};
+ "Ora estiva dell'Africa orientale", "EAST",
+ "Ora dell'Africa orientale", "EAT"};
String EASTER[] = new String[] {"Ora dell'Isola di Pasqua", "EAST",
- "Ora estiva dell'Isola di Pasqua", "EASST"};
+ "Ora estiva dell'Isola di Pasqua", "EASST",
+ "Ora dell'Isola di Pasqua", "EAST"};
String EET[] = new String[] {"Ora dell'Europa orientale", "EET",
- "Ora estiva dell'Europa orientale", "EEST"};
+ "Ora estiva dell'Europa orientale", "EEST",
+ "Ora dell'Europa orientale", "EET"};
String EGT[] = new String[] {"Ora della Groenlandia orientale", "EGT",
- "Ora estiva della Groenlandia orientale", "EGST"};
+ "Ora estiva della Groenlandia orientale", "EGST",
+ "Ora della Groenlandia orientale", "EGT"};
String EST[] = new String[] {"Ora solare USA orientale", "EST",
- "Ora legale USA orientale", "EDT"};
+ "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 estiva dell'Australia orientale (Nuovo Galles del Sud)", "EST",
+ "Ora fuso orientale (Nuovo Galles del Sud)", "ET"};
String FET[] = new String[] {"Ora dei paesi europei pi\u00F9 orientali", "FET",
- "Ora estiva dei paesi europei pi\u00F9 orientali", "FEST"};
+ "Ora estiva dei paesi europei pi\u00F9 orientali", "FEST",
+ "Ora dei paesi europei pi\u00F9 orientali", "FET"};
String GHMT[] = new String[] {"Ora media del Ghana", "GMT",
- "Ora legale del Ghana", "GHST"};
+ "Ora legale del Ghana", "GHST",
+ "Ora media del Ghana", "GMT"};
String GAMBIER[] = new String[] {"Ora di Gambier", "GAMT",
- "Ora estiva di Gambier", "GAMST"};
+ "Ora estiva di Gambier", "GAMST",
+ "Ora di Gambier", "GAMT"};
String GMT[] = new String[] {"Ora media di Greenwich", "GMT",
+ "Ora media di Greenwich", "GMT",
"Ora media di Greenwich", "GMT"};
String GMTBST[] = new String[] {"Ora media di Greenwich", "GMT",
- "Ora estiva britannica", "BST"};
+ "Ora estiva britannica", "BST",
+ "Ora britannica", "BT"};
String GST[] = new String[] {"Ora solare del golfo", "GST",
- "Ora legale del golfo", "GDT"};
+ "Ora legale del golfo", "GDT",
+ "Ora del golfo", "GT"};
String HAST[] = new String[] {"Ora solare delle Isole Hawaii-Aleutine", "HAST",
- "Ora solare delle Isole Hawaii-Aleutine", "HADT"};
+ "Ora solare delle Isole Hawaii-Aleutine", "HADT",
+ "Ora Hawaii-Aleutine", "HAT"};
String HKT[] = new String[] {"Ora di Hong Kong", "HKT",
- "Ora estiva di Hong Kong", "HKST"};
+ "Ora estiva di Hong Kong", "HKST",
+ "Ora di Hong Kong", "HKT"};
String HST[] = new String[] {"Ora solare delle Isole Hawaii", "HST",
- "Ora legale delle Isole Hawaii", "HDT"};
+ "Ora legale delle Isole Hawaii", "HDT",
+ "Ora Hawaii", "HT"};
String ICT[] = new String[] {"Ora dell'Indocina", "ICT",
- "Ora estiva dell'Indocina", "ICST"};
+ "Ora estiva dell'Indocina", "ICST",
+ "Ora dell'Indocina", "ICT"};
String IRT[] = new String[] {"Ora solare Iran", "IRST",
- "Ora legale Iran", "IRDT"};
+ "Ora legale Iran", "IRDT",
+ "Ora Iran", "IRT"};
String ISRAEL[] = new String[] {"Ora standard di Israele", "IST",
- "Ora legale di Israele", "IDT"};
+ "Ora legale di Israele", "IDT",
+ "Ora Israele", "IT"};
String IST[] = new String[] {"Ora solare dell'India", "IST",
- "Ora legale dell'India", "IDT"};
+ "Ora legale dell'India", "IDT",
+ "Ora India", "IT"};
String JST[] = new String[] {"Ora solare del Giappone", "JST",
- "Ora legale del Giappone", "JDT"};
+ "Ora legale del Giappone", "JDT",
+ "Ora Giappone", "JT"};
String KST[] = new String[] {"Ora solare della Corea", "KST",
- "Ora legale della Corea", "KDT"};
+ "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", "LHST",
+ "Ora di Lord Howe", "LHT"};
String MHT[] = new String[] {"Ora delle Isole Marshall", "MHT",
- "Ora estiva delle Isole Marshall", "MHST"};
+ "Ora estiva delle Isole Marshall", "MHST",
+ "Ora delle Isole Marshall", "MHT"};
String MSK[] = new String[] {"Ora standard di Mosca", "MSK",
- "Ora legale di Mosca", "MSD"};
+ "Ora legale di Mosca", "MSD",
+ "Ora Mosca", "MT"};
String MST[] = new String[] {"Ora solare USA occidentale", "MST",
- "Ora legale USA occidentale", "MDT"};
+ "Ora legale USA occidentale", "MDT",
+ "Ora fuso occidentale", "MT"};
String MYT[] = new String[] {"Ora della Malaysia", "MYT",
- "Ora estiva della Malaysia", "MYST"};
+ "Ora estiva della Malaysia", "MYST",
+ "Ora della Malaysia", "MYT"};
String NORONHA[] = new String[] {"Ora di Fernando de Noronha", "FNT",
- "Ora estiva di Fernando de Noronha", "FNST"};
+ "Ora estiva di Fernando de Noronha", "FNST",
+ "Ora di Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Ora di Novosibirsk", "NOVT",
- "Ora estiva di Novosibirsk", "NOVST"};
+ "Ora estiva di Novosibirsk", "NOVST",
+ "Ora di Novosibirsk", "NOVT"};
String NPT[] = new String[] {"Ora del Nepal", "NPT",
- "Ora estiva del Nepal", "NPST"};
+ "Ora estiva del Nepal", "NPST",
+ "Ora del Nepal", "NPT"};
String NST[] = new String[] {"Ora solare di Terranova", "NST",
- "Ora legale di Terranova", "NDT"};
+ "Ora legale di Terranova", "NDT",
+ "Ora Terranova", "NT"};
String NZST[] = new String[] {"Ora solare della Nuova Zelanda", "NZST",
- "Ora legale della Nuova Zelanda", "NZDT"};
+ "Ora legale della Nuova Zelanda", "NZDT",
+ "Ora Nuova Zelanda", "NZT"};
String PITCAIRN[] = new String[] {"Ora standard di Pitcairn", "PST",
- "Ora legale di Pitcairn", "PDT"};
+ "Ora legale di Pitcairn", "PDT",
+ "Ora Pitcairn", "PT"};
String PKT[] = new String[] {"Ora del Pakistan", "PKT",
- "Ora estiva del Pakistan", "PKST"};
+ "Ora estiva del Pakistan", "PKST",
+ "Ora del Pakistan", "PKT"};
String PONT[] = new String[] {"Ora di Pohnpei", "PONT",
- "Ora estiva di Pohnpei", "PONST"};
+ "Ora estiva di Pohnpei", "PONST",
+ "Ora Ponape", "PONT"};
String PST[] = new String[] {"Ora solare della costa occidentale USA", "PST",
- "Ora legale della costa occidentale USA", "PDT"};
+ "Ora legale della costa occidentale USA", "PDT",
+ "Fuso del Pacifico", "PT"};
String SAST[] = new String[] {"Ora solare del Sudafrica", "SAST",
- "Ora estiva del Sudafrica", "SAST"};
+ "Ora estiva del Sudafrica", "SAST",
+ "Ora Sudafrica", "SAT"};
String SBT[] = new String[] {"Ora delle Isole Salomone", "SBT",
- "Ora estiva delle Isole Salomone", "SBST"};
+ "Ora estiva delle Isole Salomone", "SBST",
+ "Ora delle Isole Salomone", "SBT"};
String SGT[] = new String[] {"Ora di Singapore", "SGT",
- "Ora estiva di Singapore", "SGST"};
+ "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 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 estiva orientale (Tasmania)", "EST",
+ "Ora fuso orientale (Tasmania)", "ET"};
String TMT[] = new String[] {"Ora del Turkmenistan", "TMT",
- "Ora estiva del Turkmenistan", "TMST"};
+ "Ora estiva del Turkmenistan", "TMST",
+ "Ora del Turkmenistan", "TMT"};
String ULAT[]= new String[] {"Ora di Ulaanbaatar", "ULAT",
- "Ora estiva di Ulaanbaatar", "ULAST"};
+ "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 estiva dell'Africa occidentale", "WAST",
+ "Ora dell'Africa occidentale", "WAT"};
String WET[] = new String[] {"Ora dell'Europa occidentale", "WET",
- "Ora estiva dell'Europa occidentale", "WEST"};
+ "Ora estiva dell'Europa occidentale", "WEST",
+ "Ora dell'Europa occidentale", "WET"};
String WIT[] = new String[] {"Ora dell'Indonesia occidentale", "WIB",
- "Ora estiva dell'Indonesia occidentale", "WIST"};
+ "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 estiva dell'Australia occidentale", "WST",
+ "Ora Australia occidentale", "WT"};
String SAMOA[] = new String[] {"Ora standard di Samoa", "SST",
- "Ora legale di Samoa", "SDT"};
+ "Ora legale di Samoa", "SDT",
+ "Ora Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Ora di Samoa", "WST",
- "Ora estiva di Samoa", "WSDT"};
+ "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 legale di Chamorro", "ChDT",
+ "Ora Chamorro", "ChT"};
String VICTORIA[] = new String[] {"Ora standard orientale (Victoria)", "EST",
- "Ora estiva orientale (Victoria)", "EST"};
+ "Ora estiva orientale (Victoria)", "EST",
+ "Ora fuso orientale (Victoria)", "ET"};
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 estiva dell'Uzbekistan", "UZST",
+ "Ora dell'Uzbekistan", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Ora del Paraguay", "PYT",
- "Ora estiva del Paraguay", "PYST"}},
+ "Ora estiva del Paraguay", "PYST",
+ "Ora del Paraguay", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Ora della Colombia", "COT",
- "Ora estiva della Colombia", "COST"}},
+ "Ora estiva della Colombia", "COST",
+ "Ora della Colombia", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Ora del Venezuela", "VET",
- "Ora estiva del Venezuela", "VEST"}},
+ "Ora estiva del Venezuela", "VEST",
+ "Ora del Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Ora della Guyana Francese", "GFT",
- "Ora estiva della Guyana Francese", "GFST"}},
+ "Ora estiva della Guyana Francese", "GFST",
+ "Ora della Guyana Francese", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Ora della Groenlandia occidentale", "WGT",
- "Ora estiva della Groenlandia occidentale", "WGST"}},
+ "Ora estiva della Groenlandia occidentale", "WGST",
+ "Ora della Groenlandia occidentale", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Ora dell'Ecuador", "ECT",
- "Ora estiva dell'Ecuador", "ECST"}},
+ "Ora estiva dell'Ecuador", "ECST",
+ "Ora dell'Ecuador", "ECT"}},
{"America/Guyana", new String[] {"Ora della Guyana", "GYT",
- "Ora estiva della Guyana", "GYST"}},
+ "Ora estiva della Guyana", "GYST",
+ "Ora della Guyana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Ora della Bolivia", "BOT",
- "Ora estiva della Bolivia", "BOST"}},
+ "Ora estiva della Bolivia", "BOST",
+ "Ora della Bolivia", "BOT"}},
{"America/Lima", new String[] {"Ora del Per\u00f9", "PET",
- "Ora estiva del Per\u00f9", "PEST"}},
+ "Ora estiva del Per\u00f9", "PEST",
+ "Ora del Per\u00F9", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Ora standard di Metlakatla", "MeST",
- "Ora legale di Metlakatla", "MeDT"}},
+ "Ora legale di Metlakatla", "MeDT",
+ "Ora di Metlakatla", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Ora solare di Saint-Pierre e Miquelon", "PMST",
- "Ora legale di Saint-Pierre e Miquelon", "PMDT"}},
+ "Ora legale di Saint-Pierre e Miquelon", "PMDT",
+ "Ora Saint-Pierre e Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Ora dell'Uruguay", "UYT",
- "Ora estiva dell'Uruguay", "UYST"}},
+ "Ora estiva dell'Uruguay", "UYST",
+ "Ora dell'Uruguay", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Ora di Suriname", "SRT",
- "Ora estiva di Suriname", "SRST"}},
+ "Ora estiva di Suriname", "SRST",
+ "Ora di Suriname", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Ora di Davis", "DAVT",
- "Ora estiva di Davis", "DAVST"}},
+ "Ora estiva di Davis", "DAVST",
+ "Ora di Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Ora di Dumont-d'Urville", "DDUT",
- "Ora estiva di Dumont-d'Urville", "DDUST"}},
+ "Ora estiva di Dumont-d'Urville", "DDUST",
+ "Ora di Dumont-d'Urville", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Ora dell'Isola Macquarie", "MIST",
- "Ora estiva dell'Isola Macquarie", "MIST"}},
+ "Ora estiva dell'Isola Macquarie", "MIST",
+ "Ora dell'Isola Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Ora di Mawson", "MAWT",
- "Ora estiva di Mawson", "MAWST"}},
+ "Ora estiva di Mawson", "MAWST",
+ "Ora di Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Ora di Rothera", "ROTT",
- "Ora estiva di Rothera", "ROTST"}},
+ "Ora estiva di Rothera", "ROTST",
+ "Ora di Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Ora di Syowa", "SYOT",
- "Ora estiva di Syowa", "SYOST"}},
+ "Ora estiva di Syowa", "SYOST",
+ "Ora di Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Ora di Vostok", "VOST",
- "Ora estiva di Vostok", "VOSST"}},
+ "Ora estiva di Vostok", "VOSST",
+ "Ora di Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Ora di Alma-Ata", "ALMT",
- "Ora estiva di Alma-Ata", "ALMST"}},
+ "Ora estiva di Alma-Ata", "ALMST",
+ "Ora di Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Ora di Anadyr", "ANAT",
- "Ora estiva di Anadyr", "ANAST"}},
+ "Ora estiva di Anadyr", "ANAST",
+ "Ora di Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Ora di Aqtau", "AQTT",
- "Ora estiva di Aqtau", "AQTST"}},
+ "Ora estiva di Aqtau", "AQTST",
+ "Ora di Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Ora di Aqtobe", "AQTT",
- "Ora estiva di Aqtobe", "AQTST"}},
+ "Ora estiva di Aqtobe", "AQTST",
+ "Ora di Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Ora dell'Azerbaigian", "AZT",
- "Ora estiva dell'Azerbaigian", "AZST"}},
+ "Ora estiva dell'Azerbaigian", "AZST",
+ "Ora dell'Azerbaigian", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Ora del Kirghizistan", "KGT",
- "Ora estiva del Kirghizistan", "KGST"}},
+ "Ora estiva del Kirghizistan", "KGST",
+ "Ora del Kirghizistan", "KGT"}},
{"Asia/Brunei", new String[] {"Ora del Brunei", "BNT",
- "Ora estiva del Brunei", "BNST"}},
+ "Ora estiva del Brunei", "BNST",
+ "Ora del Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Ora di Choibalsan", "CHOT",
- "Ora estiva di Choibalsan", "CHOST"}},
+ "Ora estiva di Choibalsan", "CHOST",
+ "Ora di Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Ora di Timor Leste", "TLT",
- "Ora estiva di Timor Leste", "TLST"}},
+ "Ora estiva di Timor Leste", "TLST",
+ "Ora di Timor Est", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Ora del Tagikistan", "TJT",
- "Ora estiva del Tagikistan", "TJST"}},
+ "Ora estiva del Tagikistan", "TJST",
+ "Ora del Tagikistan", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Ora di Hovd", "HOVT",
- "Ora estiva di Hovd", "HOVST"}},
+ "Ora estiva di Hovd", "HOVST",
+ "Ora di Hovd", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Ora di Irkutsk", "IRKT",
- "Ora estiva di Irkutsk", "IRKST"}},
+ "Ora estiva di Irkutsk", "IRKST",
+ "Ora di Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Ora dell'Indonesia orientale", "WIT",
- "Ora estiva dell'Indonesia orientale", "EIST"}},
+ "Ora estiva dell'Indonesia orientale", "EIST",
+ "Ora dell'Indonesia orientale", "WIT"}},
{"Asia/Kabul", new String[] {"Ora dell'Afghanistan", "AFT",
- "Ora estiva dell'Afghanistan", "AFST"}},
+ "Ora estiva dell'Afghanistan", "AFST",
+ "Ora dell'Afghanistan", "AFT"}},
{"Asia/Kamchatka", new String[] {"Ora di Petropavlovsk-Kamchatski", "PETT",
- "Ora estiva di Petropavlovsk-Kamchatski", "PETST"}},
+ "Ora estiva di Petropavlovsk-Kamchatski", "PETST",
+ "Ora di Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Kolkata", IST},
{"Asia/Khandyga", new String[] {"Ora di Khandyga", "YAKT",
- "Ora estiva di Khandyga", "YAKST"}},
+ "Ora estiva di Khandyga", "YAKST",
+ "Ora di Khandyga", "YAKT"}},
{"Asia/Krasnoyarsk", new String[] {"Ora di Krasnojarsk", "KRAT",
- "Ora estiva di Krasnojarsk", "KRAST"}},
+ "Ora estiva di Krasnojarsk", "KRAST",
+ "Ora di Krasnojarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Ora di Magadan", "MAGT",
- "Ora estiva di Magadan", "MAGST"}},
+ "Ora estiva di Magadan", "MAGST",
+ "Ora di Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Ora delle Filippine", "PHT",
- "Ora estiva delle Filippine", "PHST"}},
+ "Ora estiva delle Filippine", "PHST",
+ "Ora delle Filippine", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Ora di Oral", "ORAT",
- "Ora estiva di Oral", "ORAST"}},
+ "Ora estiva di Oral", "ORAST",
+ "Ora di Oral", "ORAT"}},
{"Asia/Omsk", new String[] {"Ora di Omsk", "OMST",
- "Ora estiva di Omsk", "OMSST"}},
+ "Ora estiva di Omsk", "OMSST",
+ "Ora di Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Ora di Qyzylorda", "QYZT",
- "Ora estiva di Qyzylorda", "QYZST"}},
+ "Ora estiva di Qyzylorda", "QYZST",
+ "Ora di Qyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Ora della Birmania/Myanmar", "MMT",
- "Ora estiva della Birmania/Myanmar", "MMST"}},
+ "Ora estiva della Birmania/Myanmar", "MMST",
+ "Ora della Birmania/Myanmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Ora di Sakhalin", "SAKT",
- "Ora estiva di Sakhalin", "SAKST"}},
+ "Ora estiva di Sakhalin", "SAKST",
+ "Ora di Sakhalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Ora della Georgia", "GET",
- "Ora estiva della Georgia", "GEST"}},
+ "Ora estiva della Georgia", "GEST",
+ "Ora della Georgia", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Ora di Ust-Nera", "VLAT",
- "Ora estiva di Ust-Nera", "VLAST"}},
+ "Ora estiva di Ust-Nera", "VLAST",
+ "Ora di Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Ora di Vladivostok", "VLAT",
- "Ora estiva di Vladivostok", "VLAST"}},
+ "Ora estiva di Vladivostok", "VLAST",
+ "Ora di Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Ora di Jakutsk", "YAKT",
- "Ora estiva di Jakutsk", "YAKST"}},
+ "Ora estiva di Jakutsk", "YAKST",
+ "Ora di Yakutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Ora di Ekaterinburg", "YEKT",
- "Ora estiva di Ekaterinburg", "YEKST"}},
+ "Ora estiva di Ekaterinburg", "YEKST",
+ "Ora di Ekaterinburg", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Ora delle Azzorre", "AZOT",
- "Ora estiva delle Azzorre", "AZOST"}},
+ "Ora estiva delle Azzorre", "AZOST",
+ "Ora delle Azzorre", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Ora di Capo Verde", "CVT",
- "Ora estiva di Capo Verde", "CVST"}},
+ "Ora estiva di Capo Verde", "CVST",
+ "Ora di Capo Verde", "CVT"}},
{"Atlantic/Faroe", WET},
{"Atlantic/Faeroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Ora solare della Georgia Australe", "GST",
- "Ora legale della Georgia Australe", "GDT"}},
+ "Ora legale della Georgia Australe", "GDT",
+ "Ora Georgia del Sud", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Ora delle Falkland", "FKT",
- "Ora estiva delle Falkland", "FKST"}},
+ "Ora estiva delle Falkland", "FKST",
+ "Ora delle Falkland", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Ora standard Australia centro-occidentale", "CWST",
- "Ora estiva Australia centro-occidentale", "CWST"}},
+ "Ora estiva Australia centro-occidentale", "CWST",
+ "Ora Australia centro-occidentale", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Ora di Samara", "SAMT",
- "Ora estiva di Samara", "SAMST"}},
+ "Ora estiva di Samara", "SAMST",
+ "Ora di Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Ora di Volgograd", "VOLT",
- "Ora estiva di Volgograd", "VOLST"}},
+ "Ora estiva di Volgograd", "VOLST",
+ "Ora di Volgograd", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Ora del Terr. Britannico dell'Oceano Indiano", "IOT",
- "Ora estiva del Terr. Britannico dell'Oceano Indiano", "IOST"}},
+ "Ora estiva del Terr. Britannico dell'Oceano Indiano", "IOST",
+ "Ora del Territorio Britannico dell'Oceano Indiano", "IOT"}},
{"Indian/Christmas", new String[] {"Ora dell'Isola Christmas", "CXT",
- "Ora estiva dell'Isola Christmas", "CXST"}},
+ "Ora estiva dell'Isola Christmas", "CXST",
+ "Ora dell'Isola Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Ora delle Isole Cocos", "CCT",
- "Ora estiva delle Isole Cocos", "CCST"}},
+ "Ora estiva delle Isole Cocos", "CCST",
+ "Ora delle Isole Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Ora delle Terre Australi e Antartiche Francesi", "TFT",
- "Ora estiva delle Terre Australi Antartiche Francesi", "TFST"}},
+ "Ora estiva delle Terre Australi Antartiche Francesi", "TFST",
+ "Ora delle Terre Australi e Antartiche Francesi", "TFT"}},
{"Indian/Mahe", new String[] {"Ora delle Seychelles", "SCT",
- "Ora estiva delle Seychelles", "SCST"}},
+ "Ora estiva delle Seychelles", "SCST",
+ "Ora delle Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Ora delle Maldive", "MVT",
- "Ora estiva delle Maldive", "MVST"}},
+ "Ora estiva delle Maldive", "MVST",
+ "Ora delle Maldive", "MVT"}},
{"Indian/Mauritius", new String[] {"Ora di Mauritius", "MUT",
- "Ora estiva di Mauritius", "MUST"}},
+ "Ora estiva di Mauritius", "MUST",
+ "Ora di Mauritius", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Ora di Reunion", "RET",
- "Ora estiva di Reunion", "REST"}},
+ "Ora estiva di Reunion", "REST",
+ "Ora di Reunion", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Ora dell'Europa centrale", "MET",
- "Ora estiva dell'Europa centrale", "MEST"}},
+ "Ora estiva dell'Europa centrale", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Ora di Vanuatu", "VUT",
- "Ora estiva di Vanuatu", "VUST"}},
+ "Ora estiva di Vanuatu", "VUST",
+ "Ora di Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Ora dell'Isola della Fenice", "PHOT",
- "Ora estiva dell'Isola della Fenice", "PHOST"}},
+ "Ora estiva dell'Isola della Fenice", "PHOST",
+ "Ora delle Isole Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Ora di Tokelau", "TKT",
- "Ora estiva di Tokelau", "TKST"}},
+ "Ora estiva di Tokelau", "TKST",
+ "Ora di Tokelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Ora di Figi", "FJT",
- "Ora estiva di Figi", "FJST"}},
+ "Ora estiva di Figi", "FJST",
+ "Ora di Figi", "FJT"}},
{"Pacific/Funafuti", new String[] {"Ora di Tuvalu", "TVT",
- "Ora estiva di Tuvalu", "TVST"}},
+ "Ora estiva di Tuvalu", "TVST",
+ "Ora di Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Ora delle Galapagos", "GALT",
- "Ora estiva delle Galapagos", "GALST"}},
+ "Ora estiva delle Galapagos", "GALST",
+ "Ora delle Galapagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Ora delle Line Islands", "LINT",
- "Ora estiva delle Line Islands", "LINST"}},
+ "Ora estiva delle Line Islands", "LINST",
+ "Ora delle Line Islands", "LINT"}},
{"Pacific/Kosrae", new String[] {"Ora di Kosrae", "KOST",
- "Ora estiva di Kosrae", "KOSST"}},
+ "Ora estiva di Kosrae", "KOSST",
+ "Ora di Kosrae", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Ora delle Isole Marchesi", "MART",
- "Ora estiva delle Isole Marchesi", "MARST"}},
+ "Ora estiva delle Isole Marchesi", "MARST",
+ "Ora delle Isole Marchesi", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Ora di Nauru", "NRT",
- "Ora estiva di Nauru", "NRST"}},
+ "Ora estiva di Nauru", "NRST",
+ "Ora di Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Ora di Niue", "NUT",
- "Ora estiva di Niue", "NUST"}},
+ "Ora estiva di Niue", "NUST",
+ "Ora di Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Ora di Norfolk", "NFT",
- "Ora estiva di Norfolk", "NFST"}},
+ "Ora estiva di Norfolk", "NFST",
+ "Ora di Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Ora della Nuova Caledonia", "NCT",
- "Ora estiva della Nuova Caledonia", "NCST"}},
+ "Ora estiva della Nuova Caledonia", "NCST",
+ "Ora della Nuova Caledonia", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Ora di Palau", "PWT",
- "Ora estiva di Palau", "PWST"}},
+ "Ora estiva di Palau", "PWST",
+ "Ora di Palau", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Ora di Papua Nuova Guinea", "PGT",
- "Ora estiva di Papua Nuova Guinea", "PGST"}},
+ "Ora estiva di Papua Nuova Guinea", "PGST",
+ "Ora di Papua Nuova Guinea", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Ora delle Isole Cook", "CKT",
- "Ora estiva delle Isole Cook", "CKHST"}},
+ "Ora estiva delle Isole Cook", "CKHST",
+ "Ora delle Isole Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Ora di Tahiti", "TAHT",
- "Ora estiva di Tahiti", "TAHST"}},
+ "Ora estiva di Tahiti", "TAHST",
+ "Ora di Tahiti", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Ora delle Isole Gilbert", "GILT",
- "Ora estiva delle Isole Gilbert", "GILST"}},
+ "Ora estiva delle Isole Gilbert", "GILST",
+ "Ora delle Isole Gilbert", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Ora di Tonga", "TOT",
- "Ora estiva di Tonga", "TOST"}},
+ "Ora estiva di Tonga", "TOST",
+ "Ora di Tonga", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Ora di Wake", "WAKT",
- "Ora estiva di Wake", "WAKST"}},
+ "Ora estiva di Wake", "WAKST",
+ "Ora di Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Ora di Wallis e Futuna", "WFT",
- "Ora estiva di Wallis e Futuna", "WFST"}},
+ "Ora estiva di Wallis e Futuna", "WFST",
+ "Ora di Wallis e Futuna", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"\u30a2\u30af\u30ec\u6642\u9593", "ACT",
- "\u30a2\u30af\u30ec\u590f\u6642\u9593", "ACST"};
+ "\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\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 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\u590f\u6642\u9593", "ARST",
+ "\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593", "ART"};
String AKST[] = new String[] {"\u30a2\u30e9\u30b9\u30ab\u6a19\u6e96\u6642", "AKST",
- "\u30a2\u30e9\u30b9\u30ab\u590f\u6642\u9593", "AKDT"};
+ "\u30a2\u30e9\u30b9\u30ab\u590f\u6642\u9593", "AKDT",
+ "\u30A2\u30E9\u30B9\u30AB\u6642\u9593", "AKT"};
String AMT[] = new String[] {"\u30a2\u30de\u30be\u30f3\u6642\u9593", "AMT",
- "\u30a2\u30de\u30be\u30f3\u590f\u6642\u9593", "AMST"};
+ "\u30a2\u30de\u30be\u30f3\u590f\u6642\u9593", "AMST",
+ "\u30A2\u30DE\u30BE\u30F3\u6642\u9593", "AMT"};
String ARAST[] = new String[] {"\u30a2\u30e9\u30d3\u30a2\u6a19\u6e96\u6642", "AST",
- "\u30a2\u30e9\u30d3\u30a2\u590f\u6642\u9593", "ADT"};
+ "\u30a2\u30e9\u30d3\u30a2\u590f\u6642\u9593", "ADT",
+ "\u30A2\u30E9\u30D3\u30A2\u6642\u9593", "AT"};
String ARMT[] = new String[] {"\u30a2\u30eb\u30e1\u30cb\u30a2\u6642\u9593", "AMT",
- "\u30a2\u30eb\u30e1\u30cb\u30a2\u590f\u6642\u9593", "AMST"};
+ "\u30a2\u30eb\u30e1\u30cb\u30a2\u590f\u6642\u9593", "AMST",
+ "\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593", "AMT"};
String AST[] = new String[] {"\u5927\u897f\u6d0b\u6a19\u6e96\u6642", "AST",
- "\u5927\u897f\u6d0b\u590f\u6642\u9593", "ADT"};
+ "\u5927\u897f\u6d0b\u590f\u6642\u9593", "ADT",
+ "\u5927\u897F\u6D0B\u6A19\u6E96\u6642", "AT"};
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\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\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\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 BRT[] = new String[] {"\u30d6\u30e9\u30b8\u30eb\u6642\u9593", "BRT",
- "\u30d6\u30e9\u30b8\u30eb\u590f\u6642\u9593", "BRST"};
+ "\u30d6\u30e9\u30b8\u30eb\u590f\u6642\u9593", "BRST",
+ "\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593", "BRT"};
String BTT[] = new String[] {"\u30d6\u30fc\u30bf\u30f3\u6642\u9593", "BTT",
- "\u30d6\u30fc\u30bf\u30f3\u590f\u6642\u9593", "BTST"};
+ "\u30d6\u30fc\u30bf\u30f3\u590f\u6642\u9593", "BTST",
+ "\u30D6\u30FC\u30BF\u30F3\u6642\u9593", "BTT"};
String CAT[] = new String[] {"\u4e2d\u90e8\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "CAT",
- "\u4e2d\u90e8\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "CAST"};
+ "\u4e2d\u90e8\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "CAST",
+ "\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "CAT"};
String CET[] = new String[] {"\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "CET",
- "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST"};
+ "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST",
+ "\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "CET"};
String CHAST[] = new String[] {"\u30c1\u30e3\u30bf\u30e0\u6a19\u6e96\u6642", "CHAST",
- "\u30c1\u30e3\u30bf\u30e0\u590f\u6642\u9593", "CHADT"};
+ "\u30c1\u30e3\u30bf\u30e0\u590f\u6642\u9593", "CHADT",
+ "\u30C1\u30E3\u30BF\u30E0\u6642\u9593", "CHAT"};
String CHUT[] = new String[] {"\u30C1\u30E5\u30FC\u30AF\u6642\u9593", "CHUT",
- "Chuuk Time", "CHUST"};
+ "Chuuk Time", "CHUST",
+ "\u30C1\u30E5\u30FC\u30AF\u6642\u9593", "CHUT"};
String CIT[] = new String[] {"\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WITA",
- "\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "CIST"};
+ "\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "CIST",
+ "\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WITA"};
String CLT[] = new String[] {"\u30c1\u30ea\u6642\u9593", "CLT",
- "\u30c1\u30ea\u590f\u6642\u9593", "CLST"};
+ "\u30c1\u30ea\u590f\u6642\u9593", "CLST",
+ "\u30C1\u30EA\u6642\u9593", "CLT"};
String CST[] = new String[] {"\u4e2d\u90e8\u6a19\u6e96\u6642", "CST",
- "\u4e2d\u90e8\u590f\u6642\u9593", "CDT"};
+ "\u4e2d\u90e8\u590f\u6642\u9593", "CDT",
+ "\u4E2D\u90E8\u6A19\u6E96\u6642", "CT"};
String CTT[] = new String[] {"\u4e2d\u56fd\u6a19\u6e96\u6642", "CST",
- "\u4e2d\u56fd\u590f\u6642\u9593", "CDT"};
+ "\u4e2d\u56fd\u590f\u6642\u9593", "CDT",
+ "\u4E2D\u56FD\u6642\u9593", "CT"};
String CUBA[] = new String[] {"\u30ad\u30e5\u30fc\u30d0\u6a19\u6e96\u6642", "CST",
- "\u30ad\u30e5\u30fc\u30d0\u590f\u6642\u9593", "CDT"};
+ "\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\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 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\u590f\u6642\u9593", "IST",
+ "\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593", "IT"};
String EAT[] = new String[] {"\u6771\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "EAT",
- "\u6771\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "EAST"};
+ "\u6771\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "EAST",
+ "\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "EAT"};
String EASTER[] = new String[] {"\u30a4\u30fc\u30b9\u30bf\u30fc\u5cf6\u6642\u9593", "EAST",
- "\u30a4\u30fc\u30b9\u30bf\u30fc\u5cf6\u590f\u6642\u9593", "EASST"};
+ "\u30a4\u30fc\u30b9\u30bf\u30fc\u5cf6\u590f\u6642\u9593", "EASST",
+ "\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593", "EAST"};
String EET[] = new String[] {"\u6771\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "EET",
- "\u6771\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "EEST"};
+ "\u6771\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "EEST",
+ "\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "EET"};
String EGT[] = new String[] {"\u6771\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "EGT",
- "\u6771\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "EGST"};
+ "\u6771\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "EGST",
+ "\u6771\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "EGT"};
String EST[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642", "EST",
- "\u6771\u90e8\u590f\u6642\u9593", "EDT"};
+ "\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\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 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\u590F\u6642\u9593", "FEST",
+ "\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "FET"};
String GHMT[] = new String[] {"\u30ac\u30fc\u30ca\u6a19\u6e96\u6642", "GMT",
- "\u30ac\u30fc\u30ca\u590f\u6642\u9593", "GHST"};
+ "\u30ac\u30fc\u30ca\u590f\u6642\u9593", "GHST",
+ "\u30AC\u30FC\u30CA\u6A19\u6E96\u6642", "GMT"};
String GAMBIER[] = new String[] {"\u30ac\u30f3\u30d3\u30a2\u6642\u9593", "GAMT",
- "\u30ac\u30f3\u30d3\u30a2\u590f\u6642\u9593", "GAMST"};
+ "\u30ac\u30f3\u30d3\u30a2\u590f\u6642\u9593", "GAMST",
+ "\u30AC\u30F3\u30D3\u30A8\u6642\u9593", "GAMT"};
String GMT[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
- "\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT"};
+ "\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
+ "\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642", "GMT"};
String GMTBST[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
- "\u82f1\u56fd\u590f\u6642\u9593", "BST"};
+ "\u82f1\u56fd\u590f\u6642\u9593", "BST",
+ "\u30A4\u30AE\u30EA\u30B9\u6642\u9593", "BT"};
String GST[] = new String[] {"\u6e7e\u5cb8\u6a19\u6e96\u6642", "GST",
- "\u6e7e\u5cb8\u590f\u6642\u9593", "GDT"};
+ "\u6e7e\u5cb8\u590f\u6642\u9593", "GDT",
+ "\u6E7E\u5CB8\u6642\u9593", "GT"};
String HAST[] = new String[] {"\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u6a19\u6e96\u6642", "HAST",
- "\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u590f\u6642\u9593", "HADT"};
+ "\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u590f\u6642\u9593", "HADT",
+ "\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593", "HAT"};
String HKT[] = new String[] {"\u9999\u6e2f\u6642\u9593", "HKT",
- "\u9999\u6e2f\u590f\u6642\u9593", "HKST"};
+ "\u9999\u6e2f\u590f\u6642\u9593", "HKST",
+ "\u9999\u6E2F\u6642\u9593", "HKT"};
String HST[] = new String[] {"\u30cf\u30ef\u30a4\u6a19\u6e96\u6642", "HST",
- "\u30cf\u30ef\u30a4\u590f\u6642\u9593", "HDT"};
+ "\u30cf\u30ef\u30a4\u590f\u6642\u9593", "HDT",
+ "\u30CF\u30EF\u30A4\u6642\u9593", "HT"};
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\u590f\u6642\u9593", "ICST",
+ "\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593", "ICT"};
String IRT[] = new String[] {"\u30a4\u30e9\u30f3\u6a19\u6e96\u6642", "IRST",
- "\u30a4\u30e9\u30f3\u590f\u6642\u9593", "IRDT"};
+ "\u30a4\u30e9\u30f3\u590f\u6642\u9593", "IRDT",
+ "\u30A4\u30E9\u30F3\u6642\u9593", "IRT"};
String ISRAEL[] = new String[] {"\u30a4\u30b9\u30e9\u30a8\u30eb\u6a19\u6e96\u6642", "IST",
- "\u30a4\u30b9\u30e9\u30a8\u30eb\u590f\u6642\u9593", "IDT"};
+ "\u30a4\u30b9\u30e9\u30a8\u30eb\u590f\u6642\u9593", "IDT",
+ "\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593", "IT"};
String IST[] = new String[] {"\u30a4\u30f3\u30c9\u6a19\u6e96\u6642", "IST",
- "\u30a4\u30f3\u30c9\u590f\u6642\u9593", "IDT"};
+ "\u30a4\u30f3\u30c9\u590f\u6642\u9593", "IDT",
+ "\u30A4\u30F3\u30C9\u6642\u9593", "IT"};
String JST[] = new String[] {"\u65e5\u672c\u6a19\u6e96\u6642", "JST",
- "\u65e5\u672c\u590f\u6642\u9593", "JDT"};
+ "\u65e5\u672c\u590f\u6642\u9593", "JDT",
+ "\u65E5\u672C\u6642\u9593", "JT"};
String KST[] = new String[] {"\u97d3\u56fd\u6a19\u6e96\u6642", "KST",
- "\u97d3\u56fd\u590f\u6642\u9593", "KDT"};
+ "\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", "LHST",
+ "\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"};
+ "\u30de\u30fc\u30b7\u30e3\u30eb\u5cf6\u590f\u6642\u9593", "MHST",
+ "\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593", "MHT"};
String MSK[] = new String[] {"\u30e2\u30b9\u30af\u30ef\u6a19\u6e96\u6642", "MSK",
- "\u30e2\u30b9\u30af\u30ef\u590f\u6642\u9593", "MSD"};
+ "\u30e2\u30b9\u30af\u30ef\u590f\u6642\u9593", "MSD",
+ "\u30E2\u30B9\u30AF\u30EF\u6642\u9593", "MT"};
String MST[] = new String[] {"\u5c71\u5730\u6a19\u6e96\u6642", "MST",
- "\u5c71\u5730\u590f\u6642\u9593", "MDT"};
+ "\u5c71\u5730\u590f\u6642\u9593", "MDT",
+ "\u5C71\u5730\u6A19\u6E96\u6642", "MT"};
String MYT[] = new String[] {"\u30de\u30ec\u30fc\u30b7\u30a2\u6642\u9593", "MYT",
- "\u30de\u30ec\u30fc\u30b7\u30a2\u590f\u6642\u9593", "MYST"};
+ "\u30de\u30ec\u30fc\u30b7\u30a2\u590f\u6642\u9593", "MYST",
+ "\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593", "MYT"};
String NORONHA[] = new String[] {"\u30d5\u30a7\u30eb\u30ca\u30f3\u30c9\u30fb\u30c7\u30fb\u30ce\u30ed\u30fc\u30cb\u30e3\u6642\u9593", "FNT",
- "\u30d5\u30a7\u30eb\u30ca\u30f3\u30c9\u30fb\u30c7\u30fb\u30ce\u30ed\u30fc\u30cb\u30e3\u590f\u6642\u9593", "FNST"};
+ "\u30d5\u30a7\u30eb\u30ca\u30f3\u30c9\u30fb\u30c7\u30fb\u30ce\u30ed\u30fc\u30cb\u30e3\u590f\u6642\u9593", "FNST",
+ "\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593", "FNT"};
String NOVT[] = new String[] {"\u30ce\u30dc\u30b7\u30d3\u30eb\u30b9\u30af\u6642\u9593", "NOVT",
- "\u30ce\u30dc\u30b7\u30d3\u30eb\u30b9\u30af\u590f\u6642\u9593", "NOVST"};
+ "\u30ce\u30dc\u30b7\u30d3\u30eb\u30b9\u30af\u590f\u6642\u9593", "NOVST",
+ "\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593", "NOVT"};
String NPT[] = new String[] {"\u30cd\u30d1\u30fc\u30eb\u6642\u9593", "NPT",
- "\u30cd\u30d1\u30fc\u30eb\u590f\u6642\u9593", "NPST"};
+ "\u30cd\u30d1\u30fc\u30eb\u590f\u6642\u9593", "NPST",
+ "\u30CD\u30D1\u30FC\u30EB\u6642\u9593", "NPT"};
String NST[] = new String[] {"\u30cb\u30e5\u30fc\u30d5\u30a1\u30f3\u30c9\u30e9\u30f3\u30c9\u6a19\u6e96\u6642", "NST",
- "\u30cb\u30e5\u30fc\u30d5\u30a1\u30f3\u30c9\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NDT"};
+ "\u30cb\u30e5\u30fc\u30d5\u30a1\u30f3\u30c9\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NDT",
+ "\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593", "NT"};
String NZST[] = new String[] {"\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9\u6a19\u6e96\u6642", "NZST",
- "\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NZDT"};
+ "\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NZDT",
+ "\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593", "NZT"};
String PITCAIRN[] = new String[] {"\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u6a19\u6e96\u6642", "PST",
- "\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u590f\u6642\u9593", "PDT"};
+ "\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u590f\u6642\u9593", "PDT",
+ "\u30D4\u30C8\u30B1\u30A2\u30F3\u6642\u9593", "PT"};
String PKT[] = new String[] {"\u30d1\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "PKT",
- "\u30d1\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "PKST"};
+ "\u30d1\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "PKST",
+ "\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "PKT"};
String PONT[] = new String[] {"\u30DD\u30F3\u30DA\u30A4\u6642\u9593", "PONT",
- "\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593", "PONST"};
+ "\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593", "PONST",
+ "\u30DD\u30CA\u30DA\u6642\u9593", "PONT"};
String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "PST",
- "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT"};
+ "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT",
+ "\u592A\u5E73\u6D0B\u6A19\u6E96\u6642", "PT"};
String SAST[] = new String[] {"\u5357\u30a2\u30d5\u30ea\u30ab\u6a19\u6e96\u6642", "SAST",
- "\u5357\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "SAST"};
+ "\u5357\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "SAST",
+ "\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "SAT"};
String SBT[] = new String[] {"\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u6642\u9593", "SBT",
- "\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "SBST"};
+ "\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "SBST",
+ "\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593", "SBT"};
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\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\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\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)", "EST",
+ "\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "ET"};
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\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\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\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "WAST",
+ "\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "WAT"};
String WET[] = new String[] {"\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "WET",
- "\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "WEST"};
+ "\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "WEST",
+ "\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "WET"};
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\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\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WST",
+ "\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WT"};
String SAMOA[] = new String[] {"\u30b5\u30e2\u30a2\u6a19\u6e96\u6642", "SST",
- "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT"};
+ "\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",
- "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSDT"};
+ "\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"};
+ "\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\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)", "EST",
+ "\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "ET"};
String UTC[] = new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
- "\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\u590f\u6642\u9593", "UZST",
+ "\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\u30d1\u30e9\u30b0\u30a2\u30a4\u6642\u9593", "PYT",
- "\u30d1\u30e9\u30b0\u30a2\u30a4\u590f\u6642\u9593", "PYST"}},
+ "\u30d1\u30e9\u30b0\u30a2\u30a4\u590f\u6642\u9593", "PYST",
+ "\u30D1\u30E9\u30B0\u30A2\u30A4\u6642\u9593", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\u30b3\u30ed\u30f3\u30d3\u30a2\u6642\u9593", "COT",
- "\u30b3\u30ed\u30f3\u30d3\u30a2\u590f\u6642\u9593", "COST"}},
+ "\u30b3\u30ed\u30f3\u30d3\u30a2\u590f\u6642\u9593", "COST",
+ "\u30B3\u30ED\u30F3\u30D3\u30A2\u6642\u9593", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\u30d9\u30cd\u30ba\u30a8\u30e9\u6642\u9593", "VET",
- "\u30d9\u30cd\u30ba\u30a8\u30e9\u590f\u6642\u9593", "VEST"}},
+ "\u30d9\u30cd\u30ba\u30a8\u30e9\u590f\u6642\u9593", "VEST",
+ "\u30D9\u30CD\u30BA\u30A8\u30E9\u6642\u9593", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\u4ecf\u9818\u30ae\u30a2\u30ca\u6642\u9593", "GFT",
- "\u4ecf\u9818\u30ae\u30a2\u30ca\u590f\u6642\u9593", "GFST"}},
+ "\u4ecf\u9818\u30ae\u30a2\u30ca\u590f\u6642\u9593", "GFST",
+ "\u30D5\u30E9\u30F3\u30B9\u9818\u30AE\u30A2\u30CA\u6642\u9593", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "WGT",
- "\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST"}},
+ "\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/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\u30a8\u30af\u30a2\u30c9\u30eb\u6642\u9593", "ECT",
- "\u30a8\u30af\u30a2\u30c9\u30eb\u590f\u6642\u9593", "ECST"}},
+ "\u30a8\u30af\u30a2\u30c9\u30eb\u590f\u6642\u9593", "ECST",
+ "\u30A8\u30AF\u30A2\u30C9\u30EB\u6642\u9593", "ECT"}},
{"America/Guyana", new String[] {"\u30ac\u30a4\u30a2\u30ca\u6642\u9593", "GYT",
- "\u30ac\u30a4\u30a2\u30ca\u590f\u6642\u9593", "GYST"}},
+ "\u30ac\u30a4\u30a2\u30ca\u590f\u6642\u9593", "GYST",
+ "\u30AC\u30A4\u30A2\u30CA\u6642\u9593", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\u30dc\u30ea\u30d3\u30a2\u6642\u9593", "BOT",
- "\u30dc\u30ea\u30d3\u30a2\u590f\u6642\u9593", "BOST"}},
+ "\u30dc\u30ea\u30d3\u30a2\u590f\u6642\u9593", "BOST",
+ "\u30DC\u30EA\u30D3\u30A2\u6642\u9593", "BOT"}},
{"America/Lima", new String[] {"\u30da\u30eb\u30fc\u6642\u9593", "PET",
- "\u30da\u30eb\u30fc\u590f\u6642\u9593", "PEST"}},
+ "\u30da\u30eb\u30fc\u590f\u6642\u9593", "PEST",
+ "\u30DA\u30EB\u30FC\u6642\u9593", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"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\u590F\u6642\u9593", "MeDT",
+ "\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6642\u9593", "MeT"}},
{"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"}},
+ "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "PMDT",
+ "\u30D4\u30A8\u30FC\u30EB\u30FB\u30DF\u30AF\u30ED\u30F3\u6642\u9593", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\u30a6\u30eb\u30b0\u30a2\u30a4\u6642\u9593", "UYT",
- "\u30a6\u30eb\u30b0\u30a2\u30a4\u590f\u6642\u9593", "UYST"}},
+ "\u30a6\u30eb\u30b0\u30a2\u30a4\u590f\u6642\u9593", "UYST",
+ "\u30A6\u30EB\u30B0\u30A2\u30A4\u6642\u9593", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\u30b9\u30ea\u30ca\u30e0\u6642\u9593", "SRT",
- "\u30b9\u30ea\u30ca\u30e0\u590f\u6642\u9593", "SRST"}},
+ "\u30b9\u30ea\u30ca\u30e0\u590f\u6642\u9593", "SRST",
+ "\u30B9\u30EA\u30CA\u30E0\u6642\u9593", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"\u30c7\u30a4\u30d3\u30b9\u6642\u9593", "DAVT",
- "\u30c7\u30a4\u30d3\u30b9\u590f\u6642\u9593", "DAVST"}},
+ "\u30c7\u30a4\u30d3\u30b9\u590f\u6642\u9593", "DAVST",
+ "\u30C7\u30FC\u30D3\u30B9\u6642\u9593", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u6642\u9593", "DDUT",
- "\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u590f\u6642\u9593", "DDUST"}},
+ "\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u590f\u6642\u9593", "DDUST",
+ "\u30C7\u30E5\u30E2\u30F3\u30FB\u30C7\u30E5\u30EB\u30D3\u30EB\u6642\u9593", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593", "MIST",
- "\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593", "MIST"}},
+ "\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593", "MIST",
+ "\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593", "MIST"}},
{"Antarctica/Mawson", new String[] {"\u30e2\u30fc\u30bd\u30f3\u6642\u9593", "MAWT",
- "\u30e2\u30fc\u30bd\u30f3\u590f\u6642\u9593", "MAWST"}},
+ "\u30e2\u30fc\u30bd\u30f3\u590f\u6642\u9593", "MAWST",
+ "\u30E2\u30FC\u30BD\u30F3\u6642\u9593", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\u30ed\u30bc\u30e9\u6642\u9593", "ROTT",
- "\u30ed\u30bc\u30e9\u590f\u6642\u9593", "ROTST"}},
+ "\u30ed\u30bc\u30e9\u590f\u6642\u9593", "ROTST",
+ "\u30ED\u30BC\u30E9\u6642\u9593", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"\u662d\u548c\u57fa\u5730\u6642\u9593", "SYOT",
- "\u662d\u548c\u57fa\u5730\u590f\u6642\u9593", "SYOST"}},
+ "\u662d\u548c\u57fa\u5730\u590f\u6642\u9593", "SYOST",
+ "\u662D\u548C\u57FA\u5730\u6642\u9593", "SYOT"}},
{"Antarctica/Vostok", new String[] {"\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u6642\u9593", "VOST",
- "\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u590f\u6642\u9593", "VOSST"}},
+ "\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u590f\u6642\u9593", "VOSST",
+ "\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"\u30a2\u30eb\u30de\u30a2\u30bf\u6642\u9593", "ALMT",
- "\u30a2\u30eb\u30de\u30a2\u30bf\u590f\u6642\u9593", "ALMST"}},
+ "\u30a2\u30eb\u30de\u30a2\u30bf\u590f\u6642\u9593", "ALMST",
+ "\u30A2\u30EB\u30DE\u30A2\u30BF\u6642\u9593", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u6642\u9593", "ANAT",
- "\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u590f\u6642\u9593", "ANAST"}},
+ "\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u590f\u6642\u9593", "ANAST",
+ "\u30A2\u30CA\u30C7\u30A3\u30EA\u6642\u9593", "ANAT"}},
{"Asia/Aqtau", new String[] {"\u30a2\u30af\u30bf\u30a6\u6642\u9593", "AQTT",
- "\u30a2\u30af\u30bf\u30a6\u590f\u6642\u9593", "AQTST"}},
+ "\u30a2\u30af\u30bf\u30a6\u590f\u6642\u9593", "AQTST",
+ "\u30A2\u30AF\u30BF\u30A6\u6642\u9593", "AQTT"}},
{"Asia/Aqtobe", new String[] {"\u30a2\u30af\u30c8\u30d9\u6642\u9593", "AQTT",
- "\u30a2\u30af\u30c8\u30d9\u590f\u6642\u9593", "AQTST"}},
+ "\u30a2\u30af\u30c8\u30d9\u590f\u6642\u9593", "AQTST",
+ "\u30A2\u30AF\u30C8\u30D9\u6642\u9593", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u6642\u9593", "AZT",
- "\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u590f\u6642\u9593", "AZST"}},
+ "\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u590f\u6642\u9593", "AZST",
+ "\u30A2\u30BC\u30EB\u30D0\u30A4\u30B8\u30E3\u30F3\u6642\u9593", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"\u30ad\u30eb\u30ae\u30b9\u30bf\u30f3\u6642\u9593", "KGT",
- "\u30ad\u30eb\u30ae\u30b9\u30bf\u30f3\u590f\u6642\u9593", "KGST"}},
+ "\u30ad\u30eb\u30ae\u30b9\u30bf\u30f3\u590f\u6642\u9593", "KGST",
+ "\u30AD\u30EB\u30AE\u30B9\u6642\u9593", "KGT"}},
{"Asia/Brunei", new String[] {"\u30d6\u30eb\u30cd\u30a4\u6642\u9593", "BNT",
- "\u30d6\u30eb\u30cd\u30a4\u590f\u6642\u9593", "BNST"}},
+ "\u30d6\u30eb\u30cd\u30a4\u590f\u6642\u9593", "BNST",
+ "\u30D6\u30EB\u30CD\u30A4\u6642\u9593", "BNT"}},
{"Asia/Calcutta", IST},
{"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\u590f\u6642\u9593", "CHOST",
+ "\u30C1\u30E7\u30A4\u30D0\u30EB\u30B5\u30F3\u6642\u9593", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\u6771\u30c6\u30a3\u30e2\u30fc\u30eb\u6642\u9593", "TLT",
- "\u6771\u30c6\u30a3\u30e2\u30fc\u30eb\u590f\u6642\u9593", "TLST"}},
+ "\u6771\u30c6\u30a3\u30e2\u30fc\u30eb\u590f\u6642\u9593", "TLST",
+ "\u6771\u30C6\u30A3\u30E2\u30FC\u30EB\u6642\u9593", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "TJT",
- "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TJST"}},
+ "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TJST",
+ "\u30BF\u30B8\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"\u30db\u30d6\u30c9\u6642\u9593", "HOVT",
- "\u30db\u30d6\u30c9\u590f\u6642\u9593", "HOVST"}},
+ "\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\u590f\u6642\u9593", "IRKST",
+ "\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WIT",
- "\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "EIST" }},
+ "\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "EIST" ,
+ "\u6771\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WIT"}},
{"Asia/Kabul", new String[] {"\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3\u6642\u9593", "AFT",
- "\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "AFST"}},
+ "\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "AFST",
+ "\u30A2\u30D5\u30AC\u30CB\u30B9\u30BF\u30F3\u6642\u9593", "AFT"}},
{"Asia/Kamchatka", new String[] {"\u30da\u30c8\u30ed\u30d1\u30d6\u30ed\u30d5\u30b9\u30af\u30ab\u30e0\u30c1\u30e3\u30c4\u30ad\u30fc\u6642\u9593", "PETT",
- "\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\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/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\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\u590f\u6642\u9593", "KRAST",
+ "\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"\u30de\u30ac\u30c0\u30f3\u6642\u9593", "MAGT",
- "\u30de\u30ac\u30c0\u30f3\u590f\u6642\u9593", "MAGST"}},
+ "\u30de\u30ac\u30c0\u30f3\u590f\u6642\u9593", "MAGST",
+ "\u30DE\u30AC\u30C0\u30F3\u6642\u9593", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\u30d5\u30a3\u30ea\u30d4\u30f3\u6642\u9593", "PHT",
- "\u30d5\u30a3\u30ea\u30d4\u30f3\u590f\u6642\u9593", "PHST"}},
+ "\u30d5\u30a3\u30ea\u30d4\u30f3\u590f\u6642\u9593", "PHST",
+ "\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"\u30aa\u30e9\u30eb\u6642\u9593", "ORAT",
- "\u30aa\u30e9\u30eb\u590f\u6642\u9593", "ORAST"}},
+ "\u30aa\u30e9\u30eb\u590f\u6642\u9593", "ORAST",
+ "\u30AA\u30E9\u30EB\u6642\u9593", "ORAT"}},
{"Asia/Omsk", new String[] {"\u30aa\u30e0\u30b9\u30af\u6642\u9593", "OMST",
- "\u30aa\u30e0\u30b9\u30af\u590f\u6642\u9593", "OMSST"}},
+ "\u30aa\u30e0\u30b9\u30af\u590f\u6642\u9593", "OMSST",
+ "\u30AA\u30E0\u30B9\u30AF\u6642\u9593", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"\u30ad\u30b8\u30eb\u30aa\u30eb\u30c0\u6642\u9593", "QYZT",
- "\u30ad\u30b8\u30eb\u30aa\u30eb\u30c0\u590f\u6642\u9593", "QYZST"}},
+ "\u30ad\u30b8\u30eb\u30aa\u30eb\u30c0\u590f\u6642\u9593", "QYZST",
+ "\u30AF\u30BA\u30ED\u30EB\u30C0\u6642\u9593", "QYZT"}},
{"Asia/Rangoon", new String[] {"\u30df\u30e3\u30f3\u30de\u30fc\u6642\u9593", "MMT",
- "\u30df\u30e3\u30f3\u30de\u30fc\u590f\u6642\u9593", "MMST"}},
+ "\u30df\u30e3\u30f3\u30de\u30fc\u590f\u6642\u9593", "MMST",
+ "\u30DF\u30E3\u30F3\u30DE\u30FC\u6642\u9593", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\u6a3a\u592a\u6642\u9593", "SAKT",
- "\u6a3a\u592a\u590f\u6642\u9593", "SAKST"}},
+ "\u6a3a\u592a\u590f\u6642\u9593", "SAKST",
+ "\u30B5\u30CF\u30EA\u30F3\u6642\u9593", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\u30b0\u30eb\u30b8\u30a2\u6642\u9593", "GET",
- "\u30b0\u30eb\u30b8\u30a2\u590f\u6642\u9593", "GEST"}},
+ "\u30b0\u30eb\u30b8\u30a2\u590f\u6642\u9593", "GEST",
+ "\u30B0\u30EB\u30B8\u30A2\u6642\u9593", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"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\u590F\u6642\u9593", "VLAST",
+ "\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u6642\u9593", "VLAT",
- "\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u590f\u6642\u9593", "VLAST"}},
+ "\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u590f\u6642\u9593", "VLAST",
+ "\u30A6\u30E9\u30B8\u30AA\u30B9\u30C8\u30AF\u6642\u9593", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\u30e4\u30af\u30fc\u30c4\u30af\u6642\u9593", "YAKT",
- "\u30e4\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "YAKST"}},
+ "\u30e4\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "YAKST",
+ "\u30E4\u30AF\u30FC\u30C4\u30AF\u6642\u9593", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u6642\u9593", "YEKT",
- "\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u590f\u6642\u9593", "YEKST"}},
+ "\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u590f\u6642\u9593", "YEKST",
+ "\u30A8\u30AB\u30C6\u30EA\u30F3\u30D6\u30EB\u30AF\u6642\u9593", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\u30a2\u30be\u30ec\u30b9\u6642\u9593", "AZOT",
- "\u30a2\u30be\u30ec\u30b9\u590f\u6642\u9593", "AZOST"}},
+ "\u30a2\u30be\u30ec\u30b9\u590f\u6642\u9593", "AZOST",
+ "\u30A2\u30BE\u30EC\u30B9\u6642\u9593", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7\u6642\u9593", "CVT",
- "\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7\u590f\u6642\u9593", "CVST"}},
+ "\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7\u590f\u6642\u9593", "CVST",
+ "\u30AB\u30FC\u30DC\u30D9\u30EB\u30C7\u6642\u9593", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u6a19\u6e96\u6642", "GST",
- "\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u590f\u6642\u9593", "GDT"}},
+ "\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u590f\u6642\u9593", "GDT",
+ "\u5357\u30B8\u30E7\u30FC\u30B8\u30A2\u6642\u9593", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6\u6642\u9593", "FKT",
- "\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6\u590f\u6642\u9593", "FKST"}},
+ "\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6\u590f\u6642\u9593", "FKST",
+ "\u30D5\u30A9\u30FC\u30AF\u30E9\u30F3\u30C9\u8AF8\u5CF6\u6642\u9593", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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\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/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\u30b5\u30de\u30e9\u6642\u9593", "SAMT",
- "\u30b5\u30de\u30e9\u590f\u6642\u9593", "SAMST"}},
+ "\u30b5\u30de\u30e9\u590f\u6642\u9593", "SAMST",
+ "\u30B5\u30DE\u30E9\u6642\u9593", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"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\u590f\u6642\u9593", "VOLST",
+ "\u30DC\u30EB\u30B4\u30B0\u30E9\u30FC\u30C9\u6642\u9593", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\u30a4\u30f3\u30c9\u6d0b\u5730\u57df\u6642\u9593", "IOT",
- "\u30a4\u30f3\u30c9\u6d0b\u5730\u57df\u590f\u6642\u9593", "IOST"}},
+ "\u30a4\u30f3\u30c9\u6d0b\u5730\u57df\u590f\u6642\u9593", "IOST",
+ "\u30A4\u30F3\u30C9\u6D0B\u5730\u57DF\u6642\u9593", "IOT"}},
{"Indian/Christmas", new String[] {"\u30af\u30ea\u30b9\u30de\u30b9\u8af8\u5cf6\u6642\u9593", "CXT",
- "\u30af\u30ea\u30b9\u30de\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CXST"}},
+ "\u30af\u30ea\u30b9\u30de\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CXST",
+ "\u30AF\u30EA\u30B9\u30DE\u30B9\u5CF6\u6642\u9593", "CIT"}},
{"Indian/Cocos", new String[] {"\u30b3\u30b3\u30b9\u8af8\u5cf6\u6642\u9593", "CCT",
- "\u30b3\u30b3\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CCST"}},
+ "\u30b3\u30b3\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CCST",
+ "\u30B3\u30B3\u30B9\u8AF8\u5CF6\u6642\u9593", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\u4ecf\u5357\u65b9\u9818\u304a\u3088\u3073\u5357\u6975\u6642\u9593", "TFT",
- "\u4ecf\u5357\u65b9\u9818\u304a\u3088\u3073\u5357\u6975\u590f\u6642\u9593", "TFST"}},
+ "\u4ecf\u5357\u65b9\u9818\u304a\u3088\u3073\u5357\u6975\u590f\u6642\u9593", "TFST",
+ "\u30D5\u30E9\u30F3\u30B9\u9818\u5357\u65B9\u304A\u3088\u3073\u5357\u6975\u5927\u9678\u6642\u9593", "TFT"}},
{"Indian/Mahe", new String[] {"\u30bb\u30a4\u30b7\u30a7\u30eb\u6642\u9593", "SCT",
- "\u30bb\u30a4\u30b7\u30a7\u30eb\u590f\u6642\u9593", "SCST"}},
+ "\u30bb\u30a4\u30b7\u30a7\u30eb\u590f\u6642\u9593", "SCST",
+ "\u30BB\u30FC\u30B7\u30A7\u30EB\u6642\u9593", "SCT"}},
{"Indian/Maldives", new String[] {"\u30e2\u30eb\u30b8\u30d6\u6642\u9593", "MVT",
- "\u30e2\u30eb\u30b8\u30d6\u590f\u6642\u9593", "MVST"}},
+ "\u30e2\u30eb\u30b8\u30d6\u590f\u6642\u9593", "MVST",
+ "\u30E2\u30EB\u30B8\u30D6\u6642\u9593", "MVT"}},
{"Indian/Mauritius", new String[] {"\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9\u6642\u9593", "MUT",
- "\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9\u590f\u6642\u9593", "MUST"}},
+ "\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9\u590f\u6642\u9593", "MUST",
+ "\u30E2\u30FC\u30EA\u30B7\u30E3\u30B9\u6642\u9593", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\u30ec\u30e6\u30cb\u30aa\u30f3\u6642\u9593", "RET",
- "\u30ec\u30e6\u30cb\u30aa\u30f3\u590f\u6642\u9593", "REST"}},
+ "\u30ec\u30e6\u30cb\u30aa\u30f3\u590f\u6642\u9593", "REST",
+ "\u30EC\u30E6\u30CB\u30AA\u30F3\u6642\u9593", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "MET",
- "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "MEST"}},
+ "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\u30d0\u30cc\u30a2\u30c4\u6642\u9593", "VUT",
- "\u30d0\u30cc\u30a2\u30c4\u590f\u6642\u9593", "VUST"}},
+ "\u30d0\u30cc\u30a2\u30c4\u590f\u6642\u9593", "VUST",
+ "\u30D0\u30CC\u30A2\u30C4\u6642\u9593", "VUT"}},
{"Pacific/Enderbury", new String[] {"\u30d5\u30a7\u30cb\u30c3\u30af\u30b9\u8af8\u5cf6\u6642\u9593", "PHOT",
- "\u30d5\u30a7\u30cb\u30c3\u30af\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "PHOST"}},
+ "\u30d5\u30a7\u30cb\u30c3\u30af\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "PHOST",
+ "\u30D5\u30A7\u30CB\u30C3\u30AF\u30B9\u8AF8\u5CF6\u6642\u9593", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\u30c8\u30b1\u30e9\u30a6\u8af8\u5cf6\u6642\u9593", "TKT",
- "\u30c8\u30b1\u30e9\u30a6\u8af8\u5cf6\u590f\u6642\u9593", "TKST"}},
+ "\u30c8\u30b1\u30e9\u30a6\u8af8\u5cf6\u590f\u6642\u9593", "TKST",
+ "\u30C8\u30B1\u30E9\u30A6\u6642\u9593", "TKT"}},
{"Pacific/Fiji", new String[] {"\u30d5\u30a3\u30b8\u30fc\u6642\u9593", "FJT",
- "\u30d5\u30a3\u30b8\u30fc\u590f\u6642\u9593", "FJST"}},
+ "\u30d5\u30a3\u30b8\u30fc\u590f\u6642\u9593", "FJST",
+ "\u30D5\u30A3\u30B8\u30FC\u6642\u9593", "FJT"}},
{"Pacific/Funafuti", new String[] {"\u30c4\u30d0\u30eb\u6642\u9593", "TVT",
- "\u30c4\u30d0\u30eb\u590f\u6642\u9593", "TVST"}},
+ "\u30c4\u30d0\u30eb\u590f\u6642\u9593", "TVST",
+ "\u30C4\u30D0\u30EB\u6642\u9593", "TVT"}},
{"Pacific/Galapagos", new String[] {"\u30ac\u30e9\u30d1\u30b4\u30b9\u6642\u9593", "GALT",
- "\u30ac\u30e9\u30d1\u30b4\u30b9\u590f\u6642\u9593", "GALST"}},
+ "\u30ac\u30e9\u30d1\u30b4\u30b9\u590f\u6642\u9593", "GALST",
+ "\u30AC\u30E9\u30D1\u30B4\u30B9\u6642\u9593", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"\u30e9\u30a4\u30f3\u8af8\u5cf6\u6642\u9593", "LINT",
- "\u30e9\u30a4\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "LINST"}},
+ "\u30e9\u30a4\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "LINST",
+ "\u30E9\u30A4\u30F3\u8AF8\u5CF6\u6642\u9593", "LINT"}},
{"Pacific/Kosrae", new String[] {"\u30b3\u30b9\u30e9\u30a8\u6642\u9593", "KOST",
- "\u30b3\u30b9\u30e9\u30a8\u590f\u6642\u9593", "KOSST"}},
+ "\u30b3\u30b9\u30e9\u30a8\u590f\u6642\u9593", "KOSST",
+ "\u30B3\u30B9\u30E9\u30A8\u6642\u9593", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\u30de\u30eb\u30b1\u30b5\u30b9\u6642\u9593", "MART",
- "\u30de\u30eb\u30b1\u30b5\u30b9\u590f\u6642\u9593", "MARST"}},
+ "\u30de\u30eb\u30b1\u30b5\u30b9\u590f\u6642\u9593", "MARST",
+ "\u30DE\u30EB\u30AD\u30FC\u30BA\u6642\u9593", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\u30ca\u30a6\u30eb\u6642\u9593", "NRT",
- "\u30ca\u30a6\u30eb\u590f\u6642\u9593", "NRST"}},
+ "\u30ca\u30a6\u30eb\u590f\u6642\u9593", "NRST",
+ "\u30CA\u30A6\u30EB\u6642\u9593", "NRT"}},
{"Pacific/Niue", new String[] {"\u30cb\u30a6\u30a8\u5cf6\u6642\u9593", "NUT",
- "\u30cb\u30a6\u30a8\u5cf6\u590f\u6642\u9593", "NUST"}},
+ "\u30cb\u30a6\u30a8\u5cf6\u590f\u6642\u9593", "NUST",
+ "\u30CB\u30A6\u30A8\u6642\u9593", "NUT"}},
{"Pacific/Norfolk", new String[] {"\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u6642\u9593", "NFT",
- "\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u590f\u6642\u9593", "NFST"}},
+ "\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u590f\u6642\u9593", "NFST",
+ "\u30CE\u30FC\u30D5\u30A9\u30FC\u30AF\u6642\u9593", "NFT"}},
{"Pacific/Noumea", new String[] {"\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2\u6642\u9593", "NCT",
- "\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2\u590f\u6642\u9593", "NCST"}},
+ "\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2\u590f\u6642\u9593", "NCST",
+ "\u30CB\u30E5\u30FC\u30AB\u30EC\u30C9\u30CB\u30A2\u6642\u9593", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\u30d1\u30e9\u30aa\u6642\u9593", "PWT",
- "\u30d1\u30e9\u30aa\u590f\u6642\u9593", "PWST"}},
+ "\u30d1\u30e9\u30aa\u590f\u6642\u9593", "PWST",
+ "\u30D1\u30E9\u30AA\u6642\u9593", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u6642\u9593", "PGT",
- "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u590f\u6642\u9593", "PGST"}},
+ "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u590f\u6642\u9593", "PGST",
+ "\u30D1\u30D7\u30A2\u30CB\u30E5\u30FC\u30AE\u30CB\u30A2\u6642\u9593", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\u30af\u30c3\u30af\u8af8\u5cf6\u6642\u9593", "CKT",
- "\u30af\u30c3\u30af\u8af8\u5cf6\u590f\u6642\u9593", "CKHST"}},
+ "\u30af\u30c3\u30af\u8af8\u5cf6\u590f\u6642\u9593", "CKHST",
+ "\u30AF\u30C3\u30AF\u8AF8\u5CF6\u6642\u9593", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\u30bf\u30d2\u30c1\u6642\u9593", "TAHT",
- "\u30bf\u30d2\u30c1\u590f\u6642\u9593", "TAHST"}},
+ "\u30bf\u30d2\u30c1\u590f\u6642\u9593", "TAHST",
+ "\u30BF\u30D2\u30C1\u6642\u9593", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u6642\u9593", "GILT",
- "\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u590f\u6642\u9593", "GILST"}},
+ "\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u590f\u6642\u9593", "GILST",
+ "\u30AE\u30EB\u30D0\u30FC\u30C8\u8AF8\u5CF6\u6642\u9593", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\u30c8\u30f3\u30ac\u6642\u9593", "TOT",
- "\u30c8\u30f3\u30ac\u590f\u6642\u9593", "TOST"}},
+ "\u30c8\u30f3\u30ac\u590f\u6642\u9593", "TOST",
+ "\u30C8\u30F3\u30AC\u6642\u9593", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\u30a6\u30a7\u30fc\u30af\u6642\u9593", "WAKT",
- "\u30a6\u30a7\u30fc\u30af\u590f\u6642\u9593", "WAKST"}},
+ "\u30a6\u30a7\u30fc\u30af\u590f\u6642\u9593", "WAKST",
+ "\u30A6\u30A7\u30FC\u30AF\u6642\u9593", "WAKT"}},
{"Pacific/Wallis", new String[] {"\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u6642\u9593", "WFT",
- "\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u590f\u6642\u9593", "WFST"}},
+ "\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u590f\u6642\u9593", "WFST",
+ "\u30A6\u30A9\u30EA\u30B9\u30FB\u30D5\u30C4\u30CA\u6642\u9593", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"\uc5d0\uc774\ucee4 \uc2dc\uac04", "ACT",
- "\uc5d0\uc774\ucee4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ACST"};
+ "\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 \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 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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ARST",
+ "\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC", "ART"};
String AKST[] = new String[] {"\uc54c\ub798\uc2a4\uce74 \ud45c\uc900\uc2dc", "AKST",
- "\uc54c\ub798\uc2a4\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AKDT"};
+ "\uc54c\ub798\uc2a4\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AKDT",
+ "\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC", "AKT"};
String AMT[] = new String[] {"\uc544\ub9c8\uc874 \uc2dc\uac04", "AMT",
- "\uc544\ub9c8\uc874 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST"};
+ "\uc544\ub9c8\uc874 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST",
+ "\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC", "AMT"};
String ARAST[] = new String[] {"\uc544\ub78d \ud45c\uc900\uc2dc", "AST",
- "\uc544\ub78d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT"};
+ "\uc544\ub78d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT",
+ "\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC", "AT"};
String ARMT[] = new String[] {"\uc544\ub974\uba54\ub2c8\uc544 \uc2dc\uac04", "AMT",
- "\uc544\ub974\uba54\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST"};
+ "\uc544\ub974\uba54\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST",
+ "\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC", "AMT"};
String AST[] = new String[] {"\ub300\uc11c\uc591 \ud45c\uc900\uc2dc", "AST",
- "\ub300\uc11c\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT"};
+ "\ub300\uc11c\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT",
+ "\uB300\uC11C\uC591 \uD45C\uC900\uC2DC", "AT"};
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 \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 \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 \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 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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BRST",
+ "\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC", "BRT"};
String BTT[] = new String[] {"\ubd80\ud0c4 \uc2dc\uac04", "BTT",
- "\ubd80\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BTST"};
+ "\ubd80\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BTST",
+ "\uBD80\uD0C4 \uD45C\uC900\uC2DC", "BTT"};
String CAT[] = new String[] {"\uc911\uc559 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "CAT",
- "\uc911\uc559 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CAST"};
+ "\uc911\uc559 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CAST",
+ "\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "CAT"};
String CET[] = new String[] {"\uc911\uc559 \uc720\ub7fd \uc2dc\uac04", "CET",
- "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST"};
+ "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST",
+ "\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC", "CET"};
String CHAST[] = new String[] {"Chatham \ud45c\uc900\uc2dc", "CHAST",
- "Chatham \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHADT"};
+ "Chatham \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHADT",
+ "\uCC44\uD140 \uD45C\uC900\uC2DC", "CHAT"};
String CHUT[] = new String[] {"\uCD94\uD06C \uD45C\uC900\uC2DC", "CHUT",
- "\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "CHUST"};
+ "\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "CHUST",
+ "\uCD94\uD06C \uD45C\uC900\uC2DC", "CHUT"};
String CIT[] = new String[] {"\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WITA",
- "\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CIST"};
+ "\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CIST",
+ "\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WITA"};
String CLT[] = new String[] {"\uce60\ub808 \uc2dc\uac04", "CLT",
- "\uce60\ub808 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CLST"};
+ "\uce60\ub808 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CLST",
+ "\uCE60\uB808 \uD45C\uC900\uC2DC", "CLT"};
String CST[] = new String[] {"\uc911\ubd80 \ud45c\uc900\uc2dc", "CST",
- "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+ "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT",
+ "\uC911\uBD80 \uD45C\uC900\uC2DC", "CT"};
String CTT[] = new String[] {"\uc911\uad6d \ud45c\uc900\uc2dc", "CST",
- "\uc911\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+ "\uc911\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT",
+ "\uC911\uAD6D \uD45C\uC900\uC2DC", "CT"};
String CUBA[] = new String[] {"\ucfe0\ubc14 \ud45c\uc900\uc2dc", "CST",
- "\ucfe0\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+ "\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 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)", "CST",
+ "\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "CT"};
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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IST",
+ "\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC", "IT"};
String EAT[] = new String[] {"\ub3d9\ubd80 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "EAT",
- "\ub3d9\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EAST"};
+ "\ub3d9\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EAST",
+ "\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "EAT"};
String EASTER[] = new String[] {"Easter Is. \uc2dc\uac04", "EAST",
- "Easter Is. \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EASST"};
+ "Easter Is. \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EASST",
+ "\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC", "EAST"};
String EET[] = new String[] {"\ub3d9\uc720\ub7fd \uc2dc\uac04", "EET",
- "\ub3d9\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EEST"};
+ "\ub3d9\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EEST",
+ "\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc", "EET"};
String EGT[] = new String[] {"\ub3d9\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "EGT",
- "\ub3d9\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EGST"};
+ "\ub3d9\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EGST",
+ "\uB3D9\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "EGT"};
String EST[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc", "EST",
- "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EDT"};
+ "\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 \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 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 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "FEST",
+ "\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC", "FET"};
String GHMT[] = new String[] {"\uac00\ub098 \ud45c\uc900\uc2dc", "GMT",
- "\uac00\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GHST"};
+ "\uac00\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GHST",
+ "\uAC00\uB098 \uD45C\uC900\uC2DC", "GMT"};
String GAMBIER[] = new String[] {"\uac10\ube44\uc544 \uc2dc\uac04", "GAMT",
- "\uac10\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GAMST"};
+ "\uac10\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GAMST",
+ "\uC7A0\uBE44\uC544 \uD45C\uC900\uC2DC", "GAMT"};
String GMT[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
- "\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT"};
+ "\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
+ "\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC", "GMT"};
String GMTBST[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
- "\uc601\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BST"};
+ "\uc601\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BST",
+ "\uC601\uAD6D \uD45C\uC900\uC2DC", "BT"};
String GST[] = new String[] {"\uac78\ud504\ub9cc \ud45c\uc900\uc2dc", "GST",
- "\uac78\ud504\ub9cc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT"};
+ "\uac78\ud504\ub9cc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT",
+ "\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC", "GT"};
String HAST[] = new String[] {"\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \ud45c\uc900\uc2dc", "HAST",
- "\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HADT"};
+ "\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HADT",
+ "\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC", "HAT"};
String HKT[] = new String[] {"\ud64d\ucf69 \uc2dc\uac04", "HKT",
- "\ud64d\ucf69 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HKST"};
+ "\ud64d\ucf69 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HKST",
+ "\uD64D\uCF69 \uD45C\uC900\uC2DC", "HKT"};
String HST[] = new String[] {"\ud558\uc640\uc774 \ud45c\uc900\uc2dc", "HST",
- "\ud558\uc640\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HDT"};
+ "\ud558\uc640\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HDT",
+ "\uD558\uC640\uC774 \uD45C\uC900\uC2DC", "HT"};
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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ICST",
+ "\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC", "ICT"};
String IRT[] = new String[] {"\uc774\ub780 \ud45c\uc900\uc2dc", "IRST",
- "\uc774\ub780 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRDT"};
+ "\uc774\ub780 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRDT",
+ "\uC774\uB780 \uD45C\uC900\uC2DC", "IRT"};
String ISRAEL[] = new String[] {"\uc774\uc2a4\ub77c\uc5d8 \ud45c\uc900\uc2dc", "IST",
- "\uc774\uc2a4\ub77c\uc5d8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT"};
+ "\uc774\uc2a4\ub77c\uc5d8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT",
+ "\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC", "IT"};
String IST[] = new String[] {"\uc778\ub3c4 \ud45c\uc900\uc2dc", "IST",
- "\uc778\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT"};
+ "\uc778\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT",
+ "\uC778\uB3C4 \uD45C\uC900\uC2DC", "IT"};
String JST[] = new String[] {"\uc77c\ubcf8 \ud45c\uc900\uc2dc", "JST",
- "\uc77c\ubcf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "JDT"};
+ "\uc77c\ubcf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "JDT",
+ "\uC77C\uBCF8 \uD45C\uC900\uC2DC", "JT"};
String KST[] = new String[] {"\ud55c\uad6d \ud45c\uc900\uc2dc", "KST",
- "\ud55c\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KDT"};
+ "\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", "LHST",
+ "\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"};
+ "\ub9c8\uc15c\uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MHST",
+ "\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC", "MHT"};
String MSK[] = new String[] {"\ubaa8\uc2a4\ud06c\ubc14 \ud45c\uc900\uc2dc", "MSK",
- "\ubaa8\uc2a4\ud06c\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MSD"};
+ "\ubaa8\uc2a4\ud06c\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MSD",
+ "\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC", "MT"};
String MST[] = new String[] {"\uc0b0\uc9c0 \ud45c\uc900\uc2dc", "MST",
- "\uc0b0\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MDT"};
+ "\uc0b0\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MDT",
+ "\uC0B0\uC9C0 \uD45C\uC900\uC2DC", "MT"};
String MYT[] = new String[] {"\ub9d0\ub808\uc774\uc2dc\uc544 \uc2dc\uac04", "MYT",
- "\ub9d0\ub808\uc774\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MYST"};
+ "\ub9d0\ub808\uc774\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MYST",
+ "\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC", "MYT"};
String NORONHA[] = new String[] {"Fernando de Noronha \uc2dc\uac04", "FNT",
- "Fernando de Noronha \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FNST"};
+ "Fernando de Noronha \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FNST",
+ "\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC", "FNT"};
String NOVT[] = new String[] {"\ub178\ube0c\uc2dc\ube4c\uc2a4\ud06c \uc2dc\uac04", "NOVT",
- "\ub178\ube0c\uc2dc\ube4c\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NOVST"};
+ "\ub178\ube0c\uc2dc\ube4c\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NOVST",
+ "\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC", "NOVT"};
String NPT[] = new String[] {"\ub124\ud314 \uc2dc\uac04", "NPT",
- "\ub124\ud314 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NPST"};
+ "\ub124\ud314 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NPST",
+ "\uB124\uD314 \uD45C\uC900\uC2DC", "NPT"};
String NST[] = new String[] {"\ub274\ud380\ub4e4\ub79c\ub4dc \ud45c\uc900\uc2dc", "NST",
- "\ub274\ud380\ub4e4\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NDT"};
+ "\ub274\ud380\ub4e4\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NDT",
+ "\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC", "NT"};
String NZST[] = new String[] {"\ub274\uc9c8\ub79c\ub4dc \ud45c\uc900\uc2dc", "NZST",
- "\ub274\uc9c8\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NZDT"};
+ "\ub274\uc9c8\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NZDT",
+ "\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC", "NZT"};
String PITCAIRN[] = new String[] {"Pitcairn \ud45c\uc900\uc2dc", "PST",
- "Pitcairn \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+ "Pitcairn \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT",
+ "\uD54F\uCF00\uC5B8 \uD45C\uC900\uC2DC", "PT"};
String PKT[] = new String[] {"\ud30c\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "PKT",
- "\ud30c\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PKST"};
+ "\ud30c\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PKST",
+ "\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "PKT"};
String PONT[] = new String[] {"\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC", "PONT",
- "\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "PONST"};
+ "\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "PONST",
+ "\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC", "PONT"};
String PST[] = new String[] {"\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc", "PST",
- "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+ "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT",
+ "\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC", "PT"};
String SAST[] = new String[] {"\ub0a8\uc544\ud504\ub9ac\uce74 \ud45c\uc900\uc2dc", "SAST",
- "\ub0a8\uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAST"};
+ "\ub0a8\uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAST",
+ "\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "SAT"};
String SBT[] = new String[] {"\uc194\ub85c\ubaac \uad70\ub3c4 \uc2dc\uac04", "SBT",
- "\uc194\ub85c\ubaac \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SBST"};
+ "\uc194\ub85c\ubaac \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SBST",
+ "\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC", "SBT"};
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 \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 \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 \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 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 \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\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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAST",
+ "\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "WAT"};
String WET[] = new String[] {"\uc11c\uc720\ub7fd \uc2dc\uac04", "WET",
- "\uc11c\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WEST"};
+ "\uc11c\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WEST",
+ "\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC", "WET"};
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\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 \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 SAMOA[] = new String[] {"\uc0ac\ubaa8\uc544 \ud45c\uc900\uc2dc", "SST",
- "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT"};
+ "\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",
- "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSDT"};
+ "\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\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 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)", "EST",
+ "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "ET"};
String UTC[] = new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
- "\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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UZST",
+ "\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\ud30c\ub77c\uacfc\uc774 \uc2dc\uac04", "PYT",
- "\ud30c\ub77c\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PYST"}},
+ "\ud30c\ub77c\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PYST",
+ "\uD30C\uB77C\uACFC\uC774 \uD45C\uC900\uC2DC", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\ucf5c\ub86c\ube44\uc544 \uc2dc\uac04", "COT",
- "\ucf5c\ub86c\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "COST"}},
+ "\ucf5c\ub86c\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "COST",
+ "\uCF5C\uB86C\uBE44\uC544 \uD45C\uC900\uC2DC", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\ubca0\ub124\uc218\uc5d8\ub77c \uc2dc\uac04", "VET",
- "\ubca0\ub124\uc218\uc5d8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VEST"}},
+ "\ubca0\ub124\uc218\uc5d8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VEST",
+ "\uBCA0\uB124\uC218\uC5D8\uB77C \uD45C\uC900\uC2DC", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc2dc\uac04", "GFT",
- "\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GFST"}},
+ "\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GFST",
+ "\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098 \uD45C\uC900\uC2DC", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "WGT",
- "\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST"}},
+ "\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/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\uc5d0\ucfe0\uc544\ub3c4\ub974 \uc2dc\uac04", "ECT",
- "\uc5d0\ucfe0\uc544\ub3c4\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ECST"}},
+ "\uc5d0\ucfe0\uc544\ub3c4\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ECST",
+ "\uC5D0\uCF70\uB3C4\uB974 \uD45C\uC900\uC2DC", "ECT"}},
{"America/Guyana", new String[] {"\uac00\uc774\uc544\ub098 \uc2dc\uac04", "GYT",
- "\uac00\uc774\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GYST"}},
+ "\uac00\uc774\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GYST",
+ "\uAC00\uC774\uC544\uB098 \uD45C\uC900\uC2DC", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\ubcfc\ub9ac\ube44\uc544 \uc2dc\uac04", "BOT",
- "\ubcfc\ub9ac\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BOST"}},
+ "\ubcfc\ub9ac\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BOST",
+ "\uBCFC\uB9AC\uBE44\uC544 \uD45C\uC900\uC2DC", "BOT"}},
{"America/Lima", new String[] {"\ud398\ub8e8 \uc2dc\uac04", "PET",
- "\ud398\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PEST"}},
+ "\ud398\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PEST",
+ "\uD398\uB8E8 \uD45C\uC900\uC2DC", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"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 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MeDT",
+ "\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC", "MeT"}},
{"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"}},
+ "\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PMDT",
+ "\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871 \uD45C\uC900\uC2DC", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\uc6b0\ub8e8\uacfc\uc774 \uc2dc\uac04", "UYT",
- "\uc6b0\ub8e8\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UYST"}},
+ "\uc6b0\ub8e8\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UYST",
+ "\uC6B0\uB8E8\uACFC\uC774 \uD45C\uC900\uC2DC", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\uc218\ub9ac\ub0a8 \uc2dc\uac04", "SRT",
- "\uc218\ub9ac\ub0a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SRST"}},
+ "\uc218\ub9ac\ub0a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SRST",
+ "\uC218\uB9AC\uB0A8 \uD45C\uC900\uC2DC", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Davis \uc2dc\uac04", "DAVT",
- "Davis \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DAVST"}},
+ "Davis \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DAVST",
+ "\uB370\uC774\uBE44\uC2A4 \uD45C\uC900\uC2DC", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"\ub4a4\ubabd \ub4a4\ub974\ube4c \uc2dc\uac04", "DDUT",
- "\ub4a4\ubabd \ub4a4\ub974\ube4c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DDUST"}},
+ "\ub4a4\ubabd \ub4a4\ub974\ube4c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DDUST",
+ "\uB450\uBAAC\uD2B8\uC6B0\uB974\uBE4C \uD45C\uC900\uC2DC", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC", "MIST",
- "\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MIST"}},
+ "\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MIST",
+ "\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC", "MIST"}},
{"Antarctica/Mawson", new String[] {"\ubaa8\uc2a8 \uc2dc\uac04", "MAWT",
- "\ubaa8\uc2a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAWST"}},
+ "\ubaa8\uc2a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAWST",
+ "\uB9C8\uC2A8 \uD45C\uC900\uC2DC", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\ub85c\uc81c\ub77c \ud45c\uc900\uc2dc", "ROTT",
- "\ub85c\uc81c\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ROTST"}},
+ "\ub85c\uc81c\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ROTST",
+ "\uB85C\uB354\uB77C \uD45C\uC900\uC2DC", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa \uc2dc\uac04", "SYOT",
- "Syowa \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SYOST"}},
+ "Syowa \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SYOST",
+ "\uC1FC\uC640 \uD45C\uC900\uC2DC", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Vostok \uc2dc\uac04", "VOST",
- "Vostok \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOSST"}},
+ "Vostok \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOSST",
+ "\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"\uc54c\ub9c8\uc544\ud0c0 \uc2dc\uac04", "ALMT",
- "\uc54c\ub9c8\uc544\ud0c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ALMST"}},
+ "\uc54c\ub9c8\uc544\ud0c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ALMST",
+ "\uC54C\uB9C8\uC544\uD0C0 \uD45C\uC900\uC2DC", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\uc544\ub098\ub514\ub974 \uc2dc\uac04", "ANAT",
- "\uc544\ub098\ub514\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ANAST"}},
+ "\uc544\ub098\ub514\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ANAST",
+ "\uC544\uB098\uB514\uB9AC \uD45C\uC900\uC2DC", "ANAT"}},
{"Asia/Aqtau", new String[] {"\uc545\ud0c0\uc6b0 \uc2dc\uac04", "AQTT",
- "\uc545\ud0c0\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST"}},
+ "\uc545\ud0c0\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST",
+ "\uC544\uD06C\uD0C0\uC6B0 \uD45C\uC900\uC2DC", "AQTT"}},
{"Asia/Aqtobe", new String[] {"\uc545\ud1a0\ube0c \uc2dc\uac04", "AQTT",
- "\uc545\ud1a0\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST"}},
+ "\uc545\ud1a0\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST",
+ "\uC544\uD06C\uD1A0\uBCA0 \uD45C\uC900\uC2DC", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\uc544\uc81c\ub974\ubc14\uc774\uc794 \uc2dc\uac04", "AZT",
- "\uc544\uc81c\ub974\ubc14\uc774\uc794 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZST"}},
+ "\uc544\uc81c\ub974\ubc14\uc774\uc794 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZST",
+ "\uC544\uC81C\uB974\uBC14\uC774\uC794 \uD45C\uC900\uC2DC", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"\ud0a4\ub974\ud0a4\uc988\uc2a4\ud0c4 \uc2dc\uac04", "KGT",
- "\ud0a4\ub974\uae30\uc988\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KGST"}},
+ "\ud0a4\ub974\uae30\uc988\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KGST",
+ "\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "KGT"}},
{"Asia/Brunei", new String[] {"\ube0c\ub8e8\ub098\uc774 \uc2dc\uac04", "BNT",
- "\ube0c\ub8e8\ub098\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BNST"}},
+ "\ube0c\ub8e8\ub098\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BNST",
+ "\uBE0C\uB8E8\uB098\uC774 \uD45C\uC900\uC2DC", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan \uc2dc\uac04", "CHOT",
- "Choibalsan \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHOST"}},
+ "Choibalsan \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHOST",
+ "\uCD08\uC774\uBC1C\uC0B0 \uD45C\uC900\uC2DC", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\ud2f0\ubaa8\ub974-\ub808\uc2a4\ud14c \uc2dc\uac04", "TLT",
- "\ud2f0\ubaa8\ub974-\ub808\uc2a4\ud14c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TLST"}},
+ "\ud2f0\ubaa8\ub974-\ub808\uc2a4\ud14c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TLST",
+ "\uB3D9\uD2F0\uBAA8\uB974 \uD45C\uC900\uC2DC", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "TJT",
- "\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TJST"}},
+ "\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TJST",
+ "\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hovd \uc2dc\uac04", "HOVT",
- "Hovd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HOVST"}},
+ "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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRKST",
+ "\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WIT",
- "\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EIST"}},
+ "\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EIST",
+ "\uB3D9\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WIT"}},
{"Asia/Kabul", new String[] {"\uc544\ud504\uac00\ub2c8\uc2a4\ud0c4 \uc2dc\uac04", "AFT",
- "\uc544\ud504\uac00\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AFST"}},
+ "\uc544\ud504\uac00\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AFST",
+ "\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "AFT"}},
{"Asia/Kamchatka", new String[] {"\ud398\ud2b8\ub85c\ud30c\ube14\ub85c\ud504\uc2a4\ud06c-\uce84\ucc28\uce20\ud0a4 \uc2dc\uac04", "PETT",
- "\ud398\ud2b8\ub85c\ud30c\ube14\ub85c\ud504\uc2a4\ud06c-\uce84\ucc28\uce20\ud0a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PETST"}},
+ "\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/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 \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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KRAST",
+ "\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"\ub9c8\uac00\ub2e8 \uc2dc\uac04", "MAGT",
- "\ub9c8\uac00\ub2e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAGST"}},
+ "\ub9c8\uac00\ub2e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAGST",
+ "\uB9C8\uAC00\uB2E8 \uD45C\uC900\uC2DC", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\ud544\ub9ac\ud540 \uc2dc\uac04", "PHT",
- "\ud544\ub9ac\ud540 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHST"}},
+ "\ud544\ub9ac\ud540 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHST",
+ "\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral \ud45c\uc900\uc2dc", "ORAT",
- "Oral \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ORAST"}},
+ "Oral \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ORAST",
+ "\uC624\uB7F4 \uD45C\uC900\uC2DC", "ORAT"}},
{"Asia/Omsk", new String[] {"Omsk \uc2dc\uac04", "OMST",
- "Omsk \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "OMSST"}},
+ "Omsk \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "OMSST",
+ "\uC634\uC2A4\uD06C \uD45C\uC900\uC2DC", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda \ud45c\uc900\uc2dc", "QYZT",
- "Qyzylorda \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "QYZST"}},
+ "Qyzylorda \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "QYZST",
+ "\uD0A4\uC9C8\uB85C\uB974\uB2E4 \uD45C\uC900\uC2DC", "QYZT"}},
{"Asia/Rangoon", new String[] {"\ubbf8\uc580\ub9c8 \uc2dc\uac04", "MMT",
- "\ubbf8\uc580\ub9c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MMST"}},
+ "\ubbf8\uc580\ub9c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MMST",
+ "\uBBF8\uC580\uB9C8 \uD45C\uC900\uC2DC", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\uc0ac\ud560\ub9b0 \uc2dc\uac04", "SAKT",
- "\uc0ac\ud560\ub9b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAKST"}},
+ "\uc0ac\ud560\ub9b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAKST",
+ "\uC0AC\uD560\uB9B0 \uD45C\uC900\uC2DC", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\uadf8\ub8e8\uc9c0\uc57c \uc2dc\uac04", "GET",
- "\uadf8\ub8e8\uc9c0\uc57c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GEST"}},
+ "\uadf8\ub8e8\uc9c0\uc57c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GEST",
+ "\uADF8\uB8E8\uC9C0\uC57C \uD45C\uC900\uC2DC", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"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 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "VLAST" ,
+ "\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc2dc\uac04", "VLAT",
- "\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VLAST"}},
+ "\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VLAST",
+ "\uBE14\uB77C\uB514\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\uc57c\uce20\ud06c \uc2dc\uac04", "YAKT",
- "\uc57c\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YAKST"}},
+ "\uc57c\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YAKST",
+ "\uC57C\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc2dc\uac04", "YEKT",
- "\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YEKST"}},
+ "\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YEKST",
+ "\uC608\uCE74\uD14C\uB9B0\uBD80\uB974\uD06C \uD45C\uC900\uC2DC", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\uc544\uc870\ub808\uc2a4 \uc2dc\uac04", "AZOT",
- "\uc544\uc870\ub808\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZOST"}},
+ "\uc544\uc870\ub808\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZOST",
+ "\uC544\uC870\uB808\uC2A4 \uD45C\uC900\uC2DC", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\uae4c\ubf40\ubca0\ub974\ub370 \uc2dc\uac04", "CVT",
- "\uae4c\ubf40\ubca0\ub974\ub370 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CVST"}},
+ "\uae4c\ubf40\ubca0\ub974\ub370 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CVST",
+ "\uCF00\uC774\uD504\uBCA0\uB974\uB370 \uD45C\uC900\uC2DC", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\uc0ac\uc6b0\uc2a4 \uc870\uc9c0\uc544 \ud45c\uc900\uc2dc", "GST",
- "\uc0ac\uc6b0\uc2a4 \uc870\uc9c0\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT"}},
+ "\uc0ac\uc6b0\uc2a4 \uc870\uc9c0\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT",
+ "\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uD45C\uC900\uC2DC", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\ud3ec\ud074\ub79c\ub4dc \uad70\ub3c4 \uc2dc\uac04", "FKT",
- "\ud3ec\ud074\ub79c\ub4dc \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FKST"}},
+ "\ud3ec\ud074\ub79c\ub4dc \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FKST",
+ "\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4 \uD45C\uC900\uC2DC", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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 \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/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\uc0ac\ub9c8\ub77c \uc2dc\uac04", "SAMT",
- "\uc0ac\ub9c8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAMST"}},
+ "\uc0ac\ub9c8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAMST",
+ "\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"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 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOLST",
+ "\uBCFC\uACE0\uADF8\uB77C\uB4DC \uD45C\uC900\uC2DC", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\uc601\uc778\ub3c4 \uc81c\ub3c4 \uc2dc\uac04", "IOT",
- "\uc601\uc778\ub3c4 \uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IOST"}},
+ "\uc601\uc778\ub3c4 \uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IOST",
+ "\uC778\uB3C4\uC591 \uC2DD\uBBFC\uC9C0 \uD45C\uC900\uC2DC", "IOT"}},
{"Indian/Christmas", new String[] {"\ud06c\ub9ac\uc2a4\ub9c8\uc2a4\uc12c \uc2dc\uac04", "CXT",
- "\ud06c\ub9ac\uc2a4\ub9c8\uc2a4\uc12c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CXST"}},
+ "\ud06c\ub9ac\uc2a4\ub9c8\uc2a4\uc12c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CXST",
+ "\uD06C\uB9AC\uC2A4\uB9C8\uC2A4 \uC12C \uD45C\uC900\uC2DC", "CIT"}},
{"Indian/Cocos", new String[] {"\ucf54\ucf54\uc2a4 \uad70\ub3c4 \uc2dc\uac04", "CCT",
- "\ucf54\ucf54\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CCST"}},
+ "\ucf54\ucf54\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CCST",
+ "\uCF54\uCF54\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\ud504\ub791\uc2a4 \ub0a8\ubd80 \uc9c0\ubc29 \ubc0f \ub0a8\uadf9 \uc9c0\uc5ed \uc2dc\uac04", "TFT",
- "\ud504\ub791\uc2a4 \ub0a8\ubd80 \uc9c0\ubc29 \ubc0f \ub0a8\uadf9 \uc9c0\uc5ed \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TFST"}},
+ "\ud504\ub791\uc2a4 \ub0a8\ubd80 \uc9c0\ubc29 \ubc0f \ub0a8\uadf9 \uc9c0\uc5ed \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TFST",
+ "\uD504\uB791\uC2A4\uB839 \uB0A8\uBD80 \uBC0F \uB0A8\uADF9 \uB300\uB959 \uD45C\uC900\uC2DC", "TFT"}},
{"Indian/Mahe", new String[] {"\uc138\uc774\uc140 \uc2dc\uac04", "SCT",
- "\uc138\uc774\uc258 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SCST"}},
+ "\uc138\uc774\uc258 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SCST",
+ "\uC138\uC774\uC178 \uD45C\uC900\uC2DC", "SCT"}},
{"Indian/Maldives", new String[] {"\ubab0\ub514\ube0c \uc2dc\uac04", "MVT",
- "\ubab0\ub514\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MVST"}},
+ "\ubab0\ub514\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MVST",
+ "\uBAB0\uB514\uBE0C \uD45C\uC900\uC2DC", "MVT"}},
{"Indian/Mauritius", new String[] {"\ubaa8\ub9ac\uc154\uc2a4 \uc2dc\uac04", "MUT",
- "\ubaa8\ub9ac\uc154\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MUST"}},
+ "\ubaa8\ub9ac\uc154\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MUST",
+ "\uBAA8\uB9AC\uC154\uC2A4 \uD45C\uC900\uC2DC", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\ub9ac\uc720\ub2c8\uc5b8 \uc2dc\uac04", "RET",
- "\ub9ac\uc720\ub2c8\uc5b8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "REST"}},
+ "\ub9ac\uc720\ub2c8\uc5b8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "REST",
+ "\uB808\uC704\uB2C8\uC639 \uD45C\uC900\uC2DC", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\uc911\ubd80 \uc720\ub7fd \uc2dc\uac04", "MET",
- "\uc911\ubd80 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MEST"}},
+ "\uc911\ubd80 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\ube44\ub204\uc544\ud22c \uc2dc\uac04", "VUT",
- "\ubc14\ub204\uc544\ud22c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VUST"}},
+ "\ubc14\ub204\uc544\ud22c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VUST",
+ "\uBC14\uB204\uC544\uD22C \uD45C\uC900\uC2DC", "VUT"}},
{"Pacific/Enderbury", new String[] {"\ud53c\ub2c9\uc2a4 \uad70\ub3c4 \uc2dc\uac04", "PHOT",
- "\ud53c\ub2c9\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHOST"}},
+ "\ud53c\ub2c9\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHOST",
+ "\uD53C\uB2C9\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\ud1a0\ucf08\ub77c\uc6b0 \uc2dc\uac04", "TKT",
- "\ud1a0\ucf08\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TKST"}},
+ "\ud1a0\ucf08\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TKST",
+ "\uD1A0\uCF08\uB77C\uC6B0 \uD45C\uC900\uC2DC", "TKT"}},
{"Pacific/Fiji", new String[] {"\ud53c\uc9c0 \uc2dc\uac04", "FJT",
- "\ud53c\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FJST"}},
+ "\ud53c\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FJST",
+ "\uD53C\uC9C0 \uD45C\uC900\uC2DC", "FJT"}},
{"Pacific/Funafuti", new String[] {"\ud22c\ubc1c\ub8e8 \uc2dc\uac04", "TVT",
- "\ud22c\ubc1c\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TVST"}},
+ "\ud22c\ubc1c\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TVST",
+ "\uD22C\uBC1C\uB8E8 \uD45C\uC900\uC2DC", "TVT"}},
{"Pacific/Galapagos", new String[] {"\uac08\ub77c\ud30c\uace0\uc2a4 \uc2dc\uac04", "GALT",
- "\uac08\ub77c\ud30c\uace0\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GALST"}},
+ "\uac08\ub77c\ud30c\uace0\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GALST",
+ "\uAC08\uB77C\uD30C\uACE0\uC2A4 \uD45C\uC900\uC2DC", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"\ub77c\uc778 \uad70\ub3c4 \uc2dc\uac04", "LINT",
- "\ub77c\uc778 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LINST"}},
+ "\ub77c\uc778 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LINST",
+ "\uB77C\uC778 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "LINT"}},
{"Pacific/Kosrae", new String[] {"\ucf54\uc2a4\ub798 \uc2dc\uac04", "KOST",
- "\ucf54\uc2a4\ub798 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KOSST"}},
+ "\ucf54\uc2a4\ub798 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KOSST",
+ "\uCF54\uC2A4\uB808 \uD45C\uC900\uC2DC", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\ub9c8\ub974\ucf00\uc0ac\uc2a4 \uc2dc\uac04", "MART",
- "\ub9c8\ub974\ucf00\uc0ac\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MARST"}},
+ "\ub9c8\ub974\ucf00\uc0ac\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MARST",
+ "\uB9C8\uD0A4\uC800\uC2A4 \uD45C\uC900\uC2DC", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\ub098\uc6b0\ub8e8 \uc2dc\uac04", "NRT",
- "\ub098\uc6b0\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NRST"}},
+ "\ub098\uc6b0\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NRST",
+ "\uB098\uC6B0\uB8E8 \uD45C\uC900\uC2DC", "NRT"}},
{"Pacific/Niue", new String[] {"\ub2c8\uc6b0\uc5d0 \uc2dc\uac04", "NUT",
- "\ub2c8\uc6b0\uc5d0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NUST"}},
+ "\ub2c8\uc6b0\uc5d0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NUST",
+ "\uB2C8\uC6B0\uC5D0 \uD45C\uC900\uC2DC", "NUT"}},
{"Pacific/Norfolk", new String[] {"\ub178\ud37d \uc2dc\uac04", "NFT",
- "\ub178\ud37d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NFST"}},
+ "\ub178\ud37d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NFST",
+ "\uB178\uD37D \uD45C\uC900\uC2DC", "NFT"}},
{"Pacific/Noumea", new String[] {"\ub274 \uce7c\ub808\ub3c4\ub2c8\uc544 \uc2dc\uac04", "NCT",
- "\ub274 \uce7c\ub808\ub3c4\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NCST"}},
+ "\ub274 \uce7c\ub808\ub3c4\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NCST",
+ "\uB274 \uCE7C\uB808\uB3C4\uB2C8\uC544 \uD45C\uC900\uC2DC", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\ud314\ub77c\uc6b0 \uc2dc\uac04", "PWT",
- "\ud314\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PWST"}},
+ "\ud314\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PWST",
+ "\uD314\uB77C\uC6B0 \uD45C\uC900\uC2DC", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc2dc\uac04", "PGT",
- "\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PGST"}},
+ "\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PGST",
+ "\uD30C\uD478\uC544 \uB274\uAE30\uB2C8\uC544 \uD45C\uC900\uC2DC", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\ucfe0\ud06c \uad70\ub3c4 \uc2dc\uac04", "CKT",
- "\ucfe0\ud06c \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CKHST"}},
+ "\ucfe0\ud06c \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CKHST",
+ "\uCFE1 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\ud0c0\ud788\ud2f0 \uc2dc\uac04", "TAHT",
- "\ud0c0\ud788\ud2f0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TAHST"}},
+ "\ud0c0\ud788\ud2f0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TAHST",
+ "\uD0C0\uD788\uD2F0 \uD45C\uC900\uC2DC", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc2dc\uac04", "GILT",
- "\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GILST"}},
+ "\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GILST",
+ "\uAE38\uBC84\uD2B8 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\ud1b5\uac00 \uc2dc\uac04", "TOT",
- "\ud1b5\uac00 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TOST"}},
+ "\ud1b5\uac00 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TOST",
+ "\uD1B5\uAC00 \uD45C\uC900\uC2DC", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\uc6e8\uc774\ud06c \uc2dc\uac04", "WAKT",
- "\uc6e8\uc774\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAKST"}},
+ "\uc6e8\uc774\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAKST",
+ "\uC6E8\uC774\uD06C \uD45C\uC900\uC2DC", "WAKT"}},
{"Pacific/Wallis", new String[] {"\uc6d4\ub9ac\uc2a4 \ud6c4\ud22c\ub098 \uc2dc\uac04", "WFT",
- "\uc6d4\ub9ac\uc2a4 \ud6c4\ud2b8\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WFST"}},
+ "\uc6d4\ub9ac\uc2a4 \ud6c4\ud2b8\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WFST",
+ "\uC6D4\uB9AC\uC2A4 \uD478\uD22C\uB098 \uD45C\uC900\uC2DC", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,157 +46,233 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Fuso hor\u00e1rio do Acre", "ACT",
- "Fuso hor\u00e1rio de ver\u00e3o do Acre", "ACST"};
+ "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"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)", "CST",
+ "Hor\u00E1rio Central (Austr\u00E1lia do Sul)", "CT"};
String AGT[] = new String[] {"Fuso hor\u00e1rio da Argentina", "ART",
- "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST",
+ "Hor\u00E1rio da Argentina", "ART"};
String AKST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Alaska", "AKST",
- "Hor\u00e1rio de luz natural do Alaska", "AKDT"};
+ "Hor\u00e1rio de luz natural do Alaska", "AKDT",
+ "Hor\u00E1rio do Alasca", "AKT"};
String AMT[] = new String[] {"Fuso hor\u00e1rio do Amazonas", "AMT",
- "Fuso hor\u00e1rio de ver\u00e3o do Amazonas", "AMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Amazonas", "AMST",
+ "Hor\u00E1rio do Amazonas", "AMT"};
String ARAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ar\u00e1bia", "AST",
- "Hor\u00e1rio de luz natural da Ar\u00e1bia", "ADT"};
+ "Hor\u00e1rio de luz natural da Ar\u00e1bia", "ADT",
+ "Hor\u00E1rio da Ar\u00E1bia", "AT"};
String ARMT[] = new String[] {"Fuso hor\u00e1rio da Arm\u00eania", "AMT",
- "Fuso hor\u00e1rio de ver\u00e3o da Arm\u00eania", "AMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Arm\u00eania", "AMST",
+ "Hor\u00E1rio da Arm\u00EAnia", "AMT"};
String AST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Atl\u00e2ntico", "AST",
- "Hor\u00e1rio de luz natural do Atl\u00e2ntico", "ADT"};
+ "Hor\u00e1rio de luz natural do Atl\u00e2ntico", "ADT",
+ "Hor\u00E1rio do Atl\u00E2ntico", "AT"};
String BDT[] = new String[] {"Fuso hor\u00e1rio de Bangladesh", "BDT",
- "Fuso hor\u00e1rio de ver\u00e3o de Bangladesh", "BDST"};
+ "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"};
+ "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"};
+ "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 BRT[] = new String[] {"Fuso hor\u00e1rio de Bras\u00edlia", "BRT",
- "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST",
+ "Hor\u00E1rio de Bras\u00EDlia", "BRT"};
String BTT[] = new String[] {"Fuso hor\u00e1rio de But\u00e3o", "BTT",
- "Fuso hor\u00e1rio de ver\u00e3o de But\u00e3o", "BTST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de But\u00e3o", "BTST",
+ "Hor\u00E1rio do But\u00E3o", "BTT"};
String CAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Central", "CAT",
- "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Central", "CAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Central", "CAST",
+ "Hor\u00E1rio da \u00C1frica Central", "CAT"};
String CET[] = new String[] {"Fuso hor\u00e1rio da Europa Central", "CET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST",
+ "Hor\u00E1rio da Europa Central", "CET"};
String CHAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chatham", "CHAST",
- "Hor\u00e1rio de luz natural de Chatham", "CHADT"};
+ "Hor\u00e1rio de luz natural de Chatham", "CHADT",
+ "Hor\u00E1rio de Chatham", "CHAT"};
String CIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Central", "WITA",
- "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Central", "CIST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Central", "CIST",
+ "Hor\u00E1rio da Indon\u00E9sia Central", "WITA"};
String CLT[] = new String[] {"Fuso hor\u00e1rio do Chile", "CLT",
- "Fuso hor\u00e1rio de ver\u00e3o do Chile", "CLST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Chile", "CLST",
+ "Hor\u00E1rio do Chile", "CLT"};
String CST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central", "CST",
- "Hor\u00e1rio de luz natural central", "CDT"};
+ "Hor\u00e1rio de luz natural central", "CDT",
+ "Hor\u00E1rio Central", "CT"};
String CTT[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da China", "CST",
- "Hor\u00e1rio de luz natural da China", "CDT"};
+ "Hor\u00e1rio de luz natural da China", "CDT",
+ "Hor\u00E1rio da China", "CT"};
String CUBA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Cuba", "CST",
- "Hor\u00e1rio de luz natural de Cuba", "CDT"};
+ "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"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)", "CST",
+ "Hor\u00E1rio Central (Territ\u00F3rio do Norte)", "CT"};
String DUBLIN[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST",
+ "Hor\u00E1rio da Rep\u00FAblica da Irlanda", "IT"};
String EAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Oriental", "EAT",
- "Fuso hor\u00e1rio padr\u00e3o da \u00c1frica Oriental", "EAST"};
+ "Fuso hor\u00e1rio padr\u00e3o da \u00c1frica Oriental", "EAST",
+ "Hor\u00E1rio do Leste da \u00C1frica", "EAT"};
String EASTER[] = new String[] {"Fuso hor\u00e1rio da Ilha de P\u00e1scoa", "EAST",
- "Fuso hor\u00e1rio de ver\u00e3o da Ilha de P\u00e1scoa", "EASST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Ilha de P\u00e1scoa", "EASST",
+ "Hor\u00E1rio da Ilha de P\u00E1scoa", "EAST"};
String EET[] = new String[] {"Fuso hor\u00e1rio da Europa Oriental", "EET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa Oriental", "EEST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Oriental", "EEST",
+ "Hor\u00e1rio da Europa Oriental", "EET"};
String EGT[] = new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Oriental", "EGT",
- "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Oriental", "EGST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Oriental", "EGST",
+ "Hor\u00E1rio da Groenl\u00E2ndia Oriental", "EGT"};
String EST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental", "EST",
- "Hor\u00e1rio de luz natural oriental", "EDT"};
+ "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"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)", "EST",
+ "Hor\u00E1rio Oriental (Nova Gales do Sul)", "ET"};
String FET[] = new String[] {"Hor\u00E1rio do Extremo Leste Europeu (FET)", "FET",
- "Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu", "FEST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu", "FEST",
+ "Hor\u00E1rio do Extremo Leste Europeu (FET)", "FET"};
String GHMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Gana", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Gana", "GHST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Gana", "GHST",
+ "Fuso Hor\u00E1rio do Meridiano de Gana", "GMT"};
String GAMBIER[] = new String[] {"Fuso hor\u00e1rio de Gambier", "GAMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Gambier", "GAMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Gambier", "GAMST",
+ "Hor\u00E1rio de Gambier", "GAMT"};
String GMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio do meridiano de Greenwich", "GMT"};
+ "Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
+ "Hor\u00E1rio M\u00E9dio de Greenwich", "GMT"};
String GMTBST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o da Gr\u00e3-Bretanha", "BST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Gr\u00e3-Bretanha", "BST",
+ "Hor\u00E1rio do Reino Unido", "BT"};
String GST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do golfo", "GST",
- "Hor\u00e1rio de luz natural do golfo", "GDT"};
+ "Hor\u00e1rio de luz natural do golfo", "GDT",
+ "Hor\u00E1rio do Golfo", "GT"};
String HAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed-Aleutian", "HAST",
- "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT"};
+ "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT",
+ "Hor\u00E1rio do Hava\u00ED-Aleutas", "HAT"};
String HKT[] = new String[] {"Fuso hor\u00e1rio de Hong Kong", "HKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST",
+ "Hor\u00E1rio de Hong Kong", "HKT"};
String HST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed", "HST",
- "Hor\u00e1rio de luz natural do Hava\u00ed", "HDT"};
+ "Hor\u00e1rio de luz natural do Hava\u00ed", "HDT",
+ "Hor\u00E1rio do Hava\u00ED", "HT"};
String ICT[] = new String[] {"Fuso hor\u00e1rio da Indochina", "ICT",
- "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST",
+ "Hor\u00E1rio da Indochina", "ICT"};
String IRT[] = new String[] {"Fuso hor\u00e1rio do Ir\u00e3", "IRST",
- "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT"};
+ "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT",
+ "Hor\u00E1rio do Ir\u00E3", "IRT"};
String ISRAEL[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Israel", "IST",
- "Hor\u00e1rio de luz natural de Israel", "IDT"};
+ "Hor\u00e1rio de luz natural de Israel", "IDT",
+ "Hor\u00E1rio de Israel", "IT"};
String IST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00cdndia", "IST",
- "Hor\u00e1rio de luz natural da \u00cdndia", "IDT"};
+ "Hor\u00e1rio de luz natural da \u00cdndia", "IDT",
+ "Hor\u00E1rio da \u00CDndia", "IT"};
String JST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Jap\u00e3o", "JST",
- "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT"};
+ "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT",
+ "Hor\u00E1rio do Jap\u00E3o", "JT"};
String KST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Coreia", "KST",
- "Hor\u00e1rio de luz natural da Coreia", "KDT"};
+ "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", "LHST",
+ "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"};
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marshall", "MHST",
+ "Hor\u00E1rio das Ilhas Marshall", "MHT"};
String MSK[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Moscou", "MSK",
- "Hor\u00e1rio de luz natural de Moscou", "MSD"};
+ "Hor\u00e1rio de luz natural de Moscou", "MSD",
+ "Hor\u00E1rio de Moscou", "MT"};
String MST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o das montanhas", "MST",
- "Hor\u00e1rio de luz natural das montanhas", "MDT"};
+ "Hor\u00e1rio de luz natural das montanhas", "MDT",
+ "Hor\u00E1rio das Montanhas Rochosas", "MT"};
String MYT[] = new String[] {"Fuso hor\u00e1rio da Mal\u00e1sia", "MYT",
- "Fuso hor\u00e1rio de ver\u00e3o da Mal\u00e1sia", "MYST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Mal\u00e1sia", "MYST",
+ "Hor\u00E1rio da Mal\u00E1sia", "MYT"};
String NORONHA[] = new String[] {"Fuso hor\u00e1rio de Fernando de Noronha", "FNT",
- "Fuso hor\u00e1rio de ver\u00e3o de Fernando de Noronha", "FNST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Fernando de Noronha", "FNST",
+ "Hor\u00E1rio de Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Fuso hor\u00e1rio de Novosibirsk", "NOVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Novosibirsk", "NOVST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Novosibirsk", "NOVST",
+ "Hor\u00E1rio de Novosibirsk", "NOVT"};
String NPT[] = new String[] {"Fuso hor\u00e1rio do Nepal", "NPT",
- "Fuso hor\u00e1rio de ver\u00e3o do Nepal", "NPST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Nepal", "NPST",
+ "Hor\u00E1rio do Nepal", "NPT"};
String NST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Terra Nova", "NST",
- "Hor\u00e1rio de luz natural de Terra Nova", "NDT"};
+ "Hor\u00e1rio de luz natural de Terra Nova", "NDT",
+ "Hor\u00E1rio de Terra Nova", "NT"};
String NZST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Nova Zel\u00e2ndia", "NZST",
- "Hor\u00e1rio de luz natural da Nova Zel\u00e2ndia", "NZDT"};
+ "Hor\u00e1rio de luz natural da Nova Zel\u00e2ndia", "NZDT",
+ "Hor\u00E1rio da Nova Zel\u00E2ndia", "NZT"};
String PITCAIRN[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Pitcairn", "PST",
- "Hor\u00e1rio de luz natural de Pitcairn", "PDT"};
+ "Hor\u00e1rio de luz natural de Pitcairn", "PDT",
+ "Hor\u00E1rio de Pitcairn", "PT"};
String PKT[] = new String[] {"Fuso hor\u00e1rio do Paquist\u00e3o", "PKT",
- "Fuso hor\u00e1rio de ver\u00e3o do Paquist\u00e3o", "PKST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Paquist\u00e3o", "PKST",
+ "Hor\u00E1rio do Paquist\u00E3o", "PKT"};
String PONT[] = new String[] {"Fuso Hor\u00E1rio de Pohnpei", "PONT",
- "Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei", "PONST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei", "PONST",
+ "Hor\u00E1rio de Ponape", "PONT"};
String PST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Pac\u00edfico", "PST",
- "Hor\u00e1rio de luz natural do Pac\u00edfico", "PDT"};
+ "Hor\u00e1rio de luz natural do Pac\u00edfico", "PDT",
+ "Hor\u00E1rio do Pac\u00EDfico", "PT"};
String SAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00c1frica do Sul", "SAST",
- "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica do Sul", "SAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica do Sul", "SAST",
+ "Hor\u00E1rio da \u00C1frica do Sul", "SAT"};
String SBT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Salom\u00e3o", "SBT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Salom\u00e3o", "SBST"};
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Salom\u00e3o", "SBST",
+ "Hor\u00E1rio das Ilhas Salom\u00E3o", "SBT"};
String SGT[] = new String[] {"Fuso hor\u00e1rio de Cingapura", "SGT",
- "Fuso hor\u00e1rio de ver\u00e1 de Cingapura", "SGST"};
+ "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"};
+ "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"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)", "EST",
+ "Hor\u00E1rio do Leste (Tasm\u00E2nia)", "ET"};
String TMT[] = new String[] {"Fuso hor\u00e1rio do Turcomenist\u00e3o", "TMT",
- "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST",
+ "Hor\u00E1rio do Turcomenist\u00E3o", "TMT"};
String TRUT[] = new String[] {"Fuso Hor\u00E1rio de Chuuk", "CHUT",
- "Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk", "CHUST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk", "CHUST",
+ "Fuso Hor\u00E1rio de Chuuk", "CHUT"};
String ULAT[]= new String[] {"Fuso hor\u00e1rio de Ulan Bator", "ULAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Ulan Bator", "ULAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Ulan Bator", "ULAST",
+ "Hor\u00E1rio de Ulaanbaatar", "ULAT"};
String WAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Ocidental", "WAT",
- "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Ocidental", "WAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Ocidental", "WAST",
+ "Hor\u00E1rio da \u00C1frica Ocidental", "WAT"};
String WET[] = new String[] {"Fuso hor\u00e1rio da Europa Ocidental", "WET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST",
+ "Hor\u00E1rio da Europa Ocidental", "WET"};
String WIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Ocidental", "WIB",
- "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST"};
+ "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"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)", "WST",
+ "Hor\u00E1rio Ocidental (Austr\u00E1lia)", "WT"};
String SAMOA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Samoa", "SST",
- "Hor\u00e1rio de luz natural de Samoa", "SDT"};
+ "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",
- "Fuso hor\u00e1rio de ver\u00e3o de Samoa Ocidental", "WSDT"};
+ "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 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"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)", "EST",
+ "Hor\u00E1rio do Leste (Victoria)", "ET"};
String UTC[] = new String[] {"Tempo universal coordenado", "UTC",
- "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"};
+ "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"};
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Fuso hor\u00e1rio do Paraguai", "PYT",
- "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST",
+ "Hor\u00E1rio do Paraguai", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Fuso hor\u00e1rio da Col\u00f4mbia", "COT",
- "Fuso hor\u00e1rio de ver\u00e3o da Col\u00f4mbia", "COST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Col\u00f4mbia", "COST",
+ "Hor\u00E1rio da Col\u00F4mbia", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Fuso hor\u00e1rio da Venezuela", "VET",
- "Fuso hor\u00e1rio de ver\u00e3o da Venezuela", "VEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Venezuela", "VEST",
+ "Hor\u00E1rio da Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Fuso hor\u00e1rio da Guiana Francesa", "GFT",
- "Fuso hor\u00e1rio de ver\u00e3o da Guiana Francesa", "GFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Guiana Francesa", "GFST",
+ "Hor\u00E1rio da Guiana Francesa", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT",
- "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST"}},
+ "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/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Fuso hor\u00e1rio do Equador", "ECT",
- "Fuso hor\u00e1rio de ver\u00e3o do Equador", "ECST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Equador", "ECST",
+ "Hor\u00E1rio do Equador", "ECT"}},
{"America/Guyana", new String[] {"Fuso hor\u00e1rio da Guiana", "GYT",
- "Fuso hor\u00e1rio de ver\u00e3o da Guiana", "GYST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Guiana", "GYST",
+ "Hor\u00E1rios da Guiana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Fuso hor\u00e1rio da Bol\u00edvia", "BOT",
- "Fuso hor\u00e1rio de ver\u00e3o da Bol\u00edvia", "BOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Bol\u00edvia", "BOST",
+ "Hor\u00E1rio da Bol\u00EDvia", "BOT"}},
{"America/Lima", new String[] {"Fuso hor\u00e1rio do Peru", "PET",
- "Fuso hor\u00e1rio de ver\u00e3o do Peru", "PEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Peru", "PEST",
+ "Hor\u00E1rio do Peru", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"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 Luz Natural de Metlakatla", "MeDT",
+ "Hor\u00E1rio de Metlakatla", "MeT"}},
{"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"}},
+ "Hor\u00e1rio de luz natural de S\u00e3o Pedro e Miquelon", "PMDT",
+ "Hor\u00E1rio de Saint Pierre e Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Fuso hor\u00e1rio do Uruguai", "UYT",
- "Fuso hor\u00e1rio de ver\u00e3o do Uruguai", "UYST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Uruguai", "UYST",
+ "Hor\u00E1rio do Uruguai", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Fuso hor\u00e1rio do Suriname", "SRT",
- "Fuso hor\u00e1rio de ver\u00e3o do Suriname", "SRST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Suriname", "SRST",
+ "Hor\u00E1rio do Suriname", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Fuso hor\u00e1rio de Davis", "DAVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Davis", "DAVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Davis", "DAVST",
+ "Hor\u00E1rio de Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Fuso hor\u00e1rio de Dumont-d'Urville", "DDUT",
- "Fuso hor\u00e1rio de ver\u00e3o de Dumont-d'Urville", "DDUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Dumont-d'Urville", "DDUST",
+ "Fuso Hor\u00E1rio de Dumont-d'Urville", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Fuso Hor\u00E1rio da Ilha de Macquarie", "MIST",
- "Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie", "MIST"}},
+ "Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie", "MIST",
+ "Fuso Hor\u00E1rio da Ilha de Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Fuso hor\u00e1rio de Mawson", "MAWT",
- "Fuso hor\u00e1rio de ver\u00e3o de Mawson", "MAWST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Mawson", "MAWST",
+ "Hor\u00E1rio de Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Fuso hor\u00e1rio de Rothera", "ROTT",
- "Fuso hor\u00e1rio de ver\u00e3o de Rothera", "ROTST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Rothera", "ROTST",
+ "Hor\u00E1rio de Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Fuso hor\u00e1rio de Syowa", "SYOT",
- "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST",
+ "Hor\u00E1rio de Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Fuso hor\u00e1rio de Vostok", "VOST",
- "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST",
+ "Hor\u00E1rio de Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Fuso hor\u00e1rio de Alma-Ata", "ALMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST",
+ "Hor\u00E1rio de Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Fuso hor\u00e1rio de Anadyr", "ANAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST",
+ "Hor\u00E1rio de Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Fuso hor\u00e1rio de Aqtau", "AQTT",
- "Fuso hor\u00e1rio de ver\u00e3o de Aqtau", "AQTST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Aqtau", "AQTST",
+ "Hor\u00E1rio de Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Fuso hor\u00e1rio de Aqtobe", "AQTT",
- "Fuso hor\u00e1rio de ver\u00e3o de Aqtobe", "AQTST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Aqtobe", "AQTST",
+ "Hor\u00E1rio de Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Fuso hor\u00e1rio do Azerbaij\u00e3o", "AZT",
- "Fuso hor\u00e1rio de ver\u00e3o do Azerbaij\u00e3o", "AZST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Azerbaij\u00e3o", "AZST",
+ "Hor\u00E1rio do Azerbaij\u00E3o", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Fuso hor\u00e1rio do Quirguist\u00e3o", "KGT",
- "Fuso hor\u00e1rio de ver\u00e3o do Quirguist\u00e3o", "KGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Quirguist\u00e3o", "KGST",
+ "Hor\u00E1rio do Quirguist\u00E3o", "KGT"}},
{"Asia/Brunei", new String[] {"Fuso hor\u00e1rio de Brunei", "BNT",
- "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST",
+ "Hor\u00E1rio de Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Fuso hor\u00e1rio de Choibalsan", "CHOT",
- "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST",
+ "Hor\u00E1rio de Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Fuso hor\u00e1rio do Timor-Leste", "TLT",
- "Fuso hor\u00e1rio de ver\u00e3o do Timor-Leste", "TLST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Timor-Leste", "TLST",
+ "Hor\u00E1rio do Timor-Leste", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Fuso hor\u00e1rio do Tadjiquist\u00e3o", "TJT",
- "Fuso hor\u00e1rio de ver\u00e3o do Tadjiquist\u00e3o", "TJST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Tadjiquist\u00e3o", "TJST",
+ "Hor\u00E1rio do Tadjiquist\u00E3o", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Fuso hor\u00e1rio de Hovd", "HOVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Hovd", "HOVST"}},
+ "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"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST",
+ "Hor\u00E1rio de Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Oriental", "WIT",
- "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Oriental", "EIST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Oriental", "EIST",
+ "Hor\u00E1rio da Indon\u00E9sia Oriental", "WIT"}},
{"Asia/Kabul", new String[] {"Fuso hor\u00e1rio do Afeganist\u00e3o", "AFT",
- "Fuso hor\u00e1rio de ver\u00e3o do Afeganist\u00e3o", "AFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Afeganist\u00e3o", "AFST",
+ "Hor\u00E1rio do Afeganist\u00E3o", "AFT"}},
{"Asia/Kamchatka", new String[] {"Fuso hor\u00e1rio de Petropavlovsk-Kamchatski", "PETT",
- "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST",
+ "Hor\u00E1rio de Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"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 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"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST",
+ "Hor\u00E1rio de Krasnoyarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Fuso hor\u00e1rio de Magadan", "MAGT",
- "Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST",
+ "Hor\u00E1rio de Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Fuso hor\u00e1rio das Filipinas", "PHT",
- "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST",
+ "Hor\u00E1rio das Filipinas", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Fuso hor\u00e1rio de Uralsk", "ORAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST",
+ "Hor\u00E1rio de Uralsk", "ORAT"}},
{"Asia/Omsk", new String[] {"Fuso hor\u00e1rio de Omsk", "OMST",
- "Fuso hor\u00e1rio de ver\u00e3o de Omsk", "OMSST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Omsk", "OMSST",
+ "Hor\u00E1rio de Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Fuso hor\u00e1rio de Kizil-Orda", "QYZT",
- "Fuso hor\u00e1rio de ver\u00e3o de Kizil-Orda", "QYZST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Kizil-Orda", "QYZST",
+ "Hor\u00E1rio de Qyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Fuso hor\u00e1rio de Mianmar", "MMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Mianmar", "MMST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Mianmar", "MMST",
+ "Hor\u00E1rio de Mianmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Fuso hor\u00e1rio de Sakhalina", "SAKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Sakhalina", "SAKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Sakhalina", "SAKST",
+ "Hor\u00E1rio de Sakhalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Fuso hor\u00e1rio da Ge\u00f3rgia", "GET",
- "Fuso hor\u00e1rio de ver\u00e3o da Ge\u00f3rgia", "GEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Ge\u00f3rgia", "GEST",
+ "Hor\u00E1rio da Ge\u00F3rgia", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Hor\u00E1rio de Ust-Nera", "VLAT",
- "Hor\u00E1rio de Ver\u00E3o de Ust-Nera", "VLAST"}},
+ "Hor\u00E1rio de Ver\u00E3o de Ust-Nera", "VLAST",
+ "Hor\u00E1rio de Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Fuso hor\u00e1rio de Vladivostok", "VLAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Vladivostok", "VLAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Vladivostok", "VLAST",
+ "Hor\u00E1rio de Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Fuso hor\u00e1rio de Yakutsk", "YAKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Yakutsk", "YAKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Yakutsk", "YAKST",
+ "Hor\u00E1rio de Yakutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Fuso hor\u00e1rio de Yekaterinburgo", "YEKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Yekaterinburgo", "YEKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Yekaterinburgo", "YEKST",
+ "Hor\u00E1rio de Yekaterinburg", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Fuso hor\u00e1rio das A\u00e7ores", "AZOT",
- "Fuso hor\u00e1rio de ver\u00e3o das A\u00e7ores", "AZOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das A\u00e7ores", "AZOST",
+ "Hor\u00E1rio de A\u00E7ores", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Fuso hor\u00e1rio de Cabo Verde", "CVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Cabo Verde", "CVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Cabo Verde", "CVST",
+ "Hor\u00E1rio de Cabo Verde", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ge\u00f3rgia do Sul", "GST",
- "Hor\u00e1rio de luz natural da Ge\u00f3rgia do Sul", "GDT"}},
+ "Hor\u00e1rio de luz natural da Ge\u00f3rgia do Sul", "GDT",
+ "Hor\u00E1rio da Ge\u00F3rgia do Sul", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Fuso hor\u00e1rio das Ilhas Falkland", "FKT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Falkland", "FKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Falkland", "FKST",
+ "Hor\u00E1rio das Ilhas Malvinas", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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"}},
+ "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)", "CWST",
+ "Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Fuso hor\u00e1rio de Samara", "SAMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Samara", "SAMST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Samara", "SAMST",
+ "Hor\u00E1rio de Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"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"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Volgogrado", "VOLST",
+ "Hor\u00E1rio de Volgogrado", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Fuso hor\u00e1rio dos territ\u00f3rios do Oceano \u00cdndico", "IOT",
- "Fuso hor\u00e1rio de ver\u00e3o dos territ\u00f3rios do Oceano \u00cdndico", "IOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o dos territ\u00f3rios do Oceano \u00cdndico", "IOST",
+ "Hor\u00E1rio do Territ\u00F3rio do Oceano \u00CDndico", "IOT"}},
{"Indian/Christmas", new String[] {"Fuso hor\u00e1rio das Ilhas Christmas", "CXT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Christmas", "CXST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Christmas", "CXST",
+ "Hor\u00E1rio da Ilha Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Fuso hor\u00e1rio das Ilhas Cocos", "CCT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cocos", "CCST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cocos", "CCST",
+ "Hor\u00E1rio das Ilhas Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Fuso hor\u00e1rio das Terras Austrais e Ant\u00e1rticas Francesas", "TFT",
- "Fuso hor\u00e1rio de ver\u00e3o das Terras Austrais e Ant\u00e1rticas Francesas", "TFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Terras Austrais e Ant\u00e1rticas Francesas", "TFST",
+ "Hor\u00E1rio do Territ\u00F3rio Franc\u00EAs no Sul da Ant\u00E1rtica", "TFT"}},
{"Indian/Mahe", new String[] {"Fuso hor\u00e1rio das Seychelles", "SCT",
- "Fuso hor\u00e1rio de ver\u00e3o das Seychelles", "SCST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Seychelles", "SCST",
+ "Hor\u00E1rio de Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Fuso hor\u00e1rio das Maldivas", "MVT",
- "Fuso hor\u00e1rio de ver\u00e3o das Maldivas", "MVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Maldivas", "MVST",
+ "Hor\u00E1rio das Maldivas", "MVT"}},
{"Indian/Mauritius", new String[] {"Fuso hor\u00e1rio das Ilhas Maur\u00edcio", "MUT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Maur\u00edcio", "MUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Maur\u00edcio", "MUST",
+ "Hor\u00E1rio de Maur\u00EDcio", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Fuso hor\u00e1rio de Reuni\u00e3o", "RET",
- "Fuso hor\u00e1rio de ver\u00e3o de Reuni\u00e3o", "REST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Reuni\u00e3o", "REST",
+ "Hor\u00E1rio das Ilhas Reuni\u00E3o", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Fuso hor\u00e1rio da Europa M\u00e9dia", "MET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa M\u00e9dia", "MEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa M\u00e9dia", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", TRUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Fuso hor\u00e1rio de Vanuatu", "VUT",
- "Fuso hor\u00e1rio de ver\u00e3o de Vanuatu", "VUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Vanuatu", "VUST",
+ "Hor\u00E1rio de Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Fuso hor\u00e1rio das Ilhas F\u00e9nix", "PHOT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas F\u00e9nix", "PHOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas F\u00e9nix", "PHOST",
+ "Hor\u00E1rio da Ilha Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Fuso hor\u00e1rio de Tokelau", "TKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Tokelau", "TKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Tokelau", "TKST",
+ "Hor\u00E1rio de Toquelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Fuso hor\u00e1rio de Fiji", "FJT",
- "Fuso hor\u00e1rio de ver\u00e3o de Fiji", "FJST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Fiji", "FJST",
+ "Hor\u00E1rio de Fiji", "FJT"}},
{"Pacific/Funafuti", new String[] {"Fuso hor\u00e1rio de Tuvalu", "TVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Tuvalu", "TVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Tuvalu", "TVST",
+ "Hor\u00E1rio de Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Fuso hor\u00e1rio das Ilhas Gal\u00e1pagos", "GALT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gal\u00e1pagos", "GALST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gal\u00e1pagos", "GALST",
+ "Hor\u00E1rio de Gal\u00E1pagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Fuso hor\u00e1rio das Esp\u00f3rades Equatoriais", "LINT",
- "Fuso hor\u00e1rio de ver\u00e3o das Esp\u00f3rades Equatoriais", "LINST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Esp\u00f3rades Equatoriais", "LINST",
+ "Hor\u00E1rio das Ilhas Line", "LINT"}},
{"Pacific/Kosrae", new String[] {"Fuso hor\u00e1rio de Kosrae", "KOST",
- "Fuso hor\u00e1rio de ver\u00e3o de Kosrae", "KOSST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Kosrae", "KOSST",
+ "Hor\u00E1rio de Kosrae", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Fuso hor\u00e1rio das Ilhas Marquesas", "MART",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marquesas", "MARST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marquesas", "MARST",
+ "Hor\u00E1rio das Ilhas Marquesas", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Fuso hor\u00e1rio de Nauru", "NRT",
- "Fuso hor\u00e1rio de ver\u00e3o de Nauru", "NRST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Nauru", "NRST",
+ "Hor\u00E1rio de Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Fuso hor\u00e1rio de Niue", "NUT",
- "Fuso hor\u00e1rio de ver\u00e3o de Niue", "NUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Niue", "NUST",
+ "Hor\u00E1rio de Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Fuso hor\u00e1rio da Ilha de Norfolk", "NFT",
- "Fuso hor\u00e1rio de ver\u00e3o da Ilha de Norfolk", "NFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Ilha de Norfolk", "NFST",
+ "Hor\u00E1rio de Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Fuso hor\u00e1rio da Nova Caled\u00f4nia", "NCT",
- "Fuso hor\u00e1rio de ver\u00e3o da Nova Caled\u00f4nia", "NCST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Nova Caled\u00f4nia", "NCST",
+ "Hor\u00E1rio da Nova Caled\u00F4nia", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Fuso hor\u00e1rio de Palau", "PWT",
- "Fuso hor\u00e1rio de ver\u00e3o de Palau", "PWST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Palau", "PWST",
+ "Hor\u00E1rio de Palau", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Fuso hor\u00e1rio de Papua-Nova Guin\u00e9", "PGT",
- "Fuso hor\u00e1rio de ver\u00e3o de Papua-Nova Guin\u00e9", "PGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Papua-Nova Guin\u00e9", "PGST",
+ "Hor\u00E1rio de Papua-Nova Guin\u00E9", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Fuso hor\u00e1rio das Ilhas Cook", "CKT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cook", "CKHST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cook", "CKHST",
+ "Hor\u00E1rio das Ilhas Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Fuso hor\u00e1rio do Taiti", "TAHT",
- "Fuso hor\u00e1rio de ver\u00e3o do Taiti", "TAHST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Taiti", "TAHST",
+ "Hor\u00E1rio do Tahiti", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Fuso hor\u00e1rio das Ilhas Gilbert", "GILT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gilbert", "GILST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gilbert", "GILST",
+ "Hor\u00E1rio das Ilhas Gilbert", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Fuso hor\u00e1rio de Tonga", "TOT",
- "Fuso hor\u00e1rio de ver\u00e3o de Tonga", "TOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Tonga", "TOST",
+ "Hor\u00E1rio de Tonga", "TOT"}},
{"Pacific/Truk", TRUT},
{"Pacific/Wake", new String[] {"Fuso hor\u00e1rio de Wake", "WAKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Wake", "WAKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Wake", "WAKST",
+ "Hor\u00E1rio de Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Fuso hor\u00e1rio de Wallis e Futuna", "WFT",
- "Fuso hor\u00e1rio de ver\u00e3o de Wallis e Futuna", "WFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Wallis e Futuna", "WFST",
+ "Hor\u00E1rio das Ilhas Wallis e Futuna", "WFT"}},
{"Pacific/Yap", TRUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre, normaltid", "ACT",
- "Acre, sommartid", "ACST"};
+ "Acre, sommartid", "ACST",
+ "Acre, normaltid", "ACT"};
String ADELAIDE[] = new String[] {"Central standardtid (Sydaustralien)", "CST",
- "Central sommartid (South Australia)", "CST"};
+ "Central sommartid (South Australia)", "CST",
+ "Central tid (Sydaustralien)", "CT"};
String AGT[] = new String[] {"Argentina, normaltid", "ART",
- "Argentina, sommartid", "ARST"};
+ "Argentina, sommartid", "ARST",
+ "Argentinsk tid", "ART"};
String AKST[] = new String[] {"Alaska, normaltid", "AKST",
- "Alaska, sommartid", "AKDT"};
+ "Alaska, sommartid", "AKDT",
+ "Alaskisk tid", "AKT"};
String AMT[] = new String[] {"Amazonas, normaltid", "AMT",
- "Amazonas, sommartid", "AMST"};
+ "Amazonas, sommartid", "AMST",
+ "Amazonas-tid", "AMT"};
String ARAST[] = new String[] {"Arabisk normaltid", "AST",
- "Arabisk sommartid", "ADT"};
+ "Arabisk sommartid", "ADT",
+ "Arabisk tid", "AT"};
String ARMT[] = new String[] {"Armenien, normaltid", "AMT",
- "Armenien, sommartid", "AMST"};
+ "Armenien, sommartid", "AMST",
+ "Armenisk tid", "AMT"};
String AST[] = new String[] {"Atlantisk normaltid", "AST",
- "Atlantisk sommartid", "ADT"};
+ "Atlantisk sommartid", "ADT",
+ "Atlantisk tid", "AT"};
String BDT[] = new String[] {"Bangladesh, normaltid", "BDT",
- "Bangladesh, sommartid", "BDST"};
+ "Bangladesh, sommartid", "BDST",
+ "Bangladeshisk tid", "BDT"};
String BRISBANE[] = new String[] {"\u00D6stlig standardtid (Queensland)", "EST",
- "\u00D6stlig sommartid (Queensland)", "EST"};
- String BROKEN_HILL[] = new String[] {"Central standardtid (Sydaustralien)/New South Wales)", "CST",
- "Central sommartid (South Australia/New South Wales)", "CST"};
+ "\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 BRT[] = new String[] {"Brasilien, normaltid", "BRT",
- "Brasilien, sommartid", "BRST"};
+ "Brasilien, sommartid", "BRST",
+ "Brasiliansk tid", "BRT"};
String BTT[] = new String[] {"Bhutan, normaltid", "BTT",
- "Bhutan, sommartid", "BTST"};
+ "Bhutan, sommartid", "BTST",
+ "Bhutanesisk tid", "BTT"};
String CAT[] = new String[] {"Centralafrikansk tid", "CAT",
- "Centralafrikansk sommartid", "CAST"};
+ "Centralafrikansk sommartid", "CAST",
+ "Centralafrikansk tid", "CAT"};
String CET[] = new String[] {"Centraleuropeisk tid", "CET",
- "Centraleuropeisk sommartid", "CEST"};
+ "Centraleuropeisk sommartid", "CEST",
+ "Centraleuropeisk tid", "CET"};
String CHAST[] = new String[] {"Chatham, normaltid", "CHAST",
- "Chatham, sommartid", "CHADT"};
+ "Chatham, sommartid", "CHADT",
+ "Chathams tid", "CHAT"};
String CHUT[] = new String[] {"Chuuk, normaltid", "CHUT",
- "Chuuk, sommartid", "CHUST"};
+ "Chuuk, sommartid", "CHUST",
+ "Chuuk, normaltid", "CHUT"};
String CIT[] = new String[] {"Centralindonesisk tid", "WITA",
- "Centralindonesisk sommartid", "CIST"};
+ "Centralindonesisk sommartid", "CIST",
+ "Centralindonesisk tid", "WITA"};
String CLT[] = new String[] {"Chile, normaltid", "CLT",
- "Chile, sommartid", "CLST"};
+ "Chile, sommartid", "CLST",
+ "Chilensk tid", "CLT"};
String CST[] = new String[] {"Central normaltid", "CST",
- "Central sommartid", "CDT"};
+ "Central sommartid", "CDT",
+ "Central tid", "CT"};
String CTT[] = new String[] {"Kina, normaltid", "CST",
- "Kina, sommartid", "CDT"};
+ "Kina, sommartid", "CDT",
+ "Kinesisk tid", "CT"};
String CUBA[] = new String[] {"Kuba, normaltid", "CST",
- "Kuba, sommartid", "CDT"};
+ "Kuba, sommartid", "CDT",
+ "Kubansk tid", "CT"};
String DARWIN[] = new String[] {"Central standardtid (Nordterritoriet)", "CST",
- "Central sommartid (Nordterritoriet)", "CST"};
+ "Central sommartid (Nordterritoriet)", "CST",
+ "Central tid (Nordterritoriet)", "CT"};
String DUBLIN[] = new String[] {"Greenwichtid", "GMT",
- "Irland, sommartid", "IST"};
+ "Irland, sommartid", "IST",
+ "Irl\u00E4ndsk tid", "IT"};
String EAT[] = new String[] {"\u00d6stafrikansk tid", "EAT",
- "\u00d6stafrikansk sommartid", "EAST"};
+ "\u00d6stafrikansk sommartid", "EAST",
+ "\u00D6stafrikansk tid", "EAT"};
String EASTER[] = new String[] {"P\u00e5sk\u00f6n, normaltid", "EAST",
- "P\u00e5sk\u00f6n, sommartid", "EASST"};
+ "P\u00e5sk\u00f6n, sommartid", "EASST",
+ "P\u00E5sk\u00F6n-tid", "EAST"};
String EET[] = new String[] {"\u00d6steuropeisk tid", "EET",
- "\u00d6steuropeisk sommartid", "EEST"};
+ "\u00d6steuropeisk sommartid", "EEST",
+ "\u00d6steuropeisk tid", "EET"};
String EGT[] = new String[] {"\u00d6stgr\u00f6nl\u00e4ndsk tid", "EGT",
- "\u00d6stgr\u00f6nl\u00e4ndsk sommartid", "EGST"};
+ "\u00d6stgr\u00f6nl\u00e4ndsk sommartid", "EGST",
+ "\u00D6stgr\u00F6nl\u00E4ndsk tid", "EGT"};
String EST[] = new String[] {"Eastern, normaltid", "EST",
- "Eastern, sommartid", "EDT"};
+ "Eastern, sommartid", "EDT",
+ "\u00D6stlig tid", "ET"};
String EST_NSW[] = new String[] {"\u00D6stlig standardtid (New South Wales)", "EST",
- "\u00D6stlig sommartid (New South Wales)", "EST"};
+ "\u00D6stlig sommartid (New South Wales)", "EST",
+ "\u00D6stlig tid (New South Wales)", "ET"};
String FET[] = new String[] {"Kaliningradtid", "FET",
- "\u00D6steuropeisk sommartid", "FEST"};
+ "\u00D6steuropeisk sommartid", "FEST",
+ "Kaliningradtid", "FET"};
String GHMT[] = new String[] {"Ghana, normaltid", "GMT",
- "Ghana, sommartid", "GHST"};
+ "Ghana, sommartid", "GHST",
+ "Ghana, normaltid", "GMT"};
String GAMBIER[] = new String[] {"Gambier, normaltid", "GAMT",
- "Gambier, sommartid", "GAMST"};
+ "Gambier, sommartid", "GAMST",
+ "Gambier\u00F6arna-tid", "GAMT"};
String GMT[] = new String[] {"Greenwichtid", "GMT",
+ "Greenwichtid", "GMT",
"Greenwichtid", "GMT"};
String GMTBST[] = new String[] {"Greenwichtid", "GMT",
- "Brittisk sommartid", "BST"};
+ "Brittisk sommartid", "BST",
+ "Brittisk tid", "BT"};
String GST[] = new String[] {"Gulf-normaltid", "GST",
- "Gulf-sommartid", "GDT"};
+ "Gulf-sommartid", "GDT",
+ "Golfens tid", "GT"};
String HAST[] = new String[] {"Hawaii-Aleuterna, normaltid", "HAST",
- "Hawaii-Aleuterna, sommartid", "HADT"};
+ "Hawaii-Aleuterna, sommartid", "HADT",
+ "Hawaiiansk-aleutisk tid", "HAT"};
String HKT[] = new String[] {"Hong Kong, normaltid", "HKT",
- "Hong Kong, sommartid", "HKST"};
+ "Hong Kong, sommartid", "HKST",
+ "Hongkong-tid", "HKT"};
String HST[] = new String[] {"Hawaii, normaltid", "HST",
- "Hawaii, sommartid", "HDT"};
+ "Hawaii, sommartid", "HDT",
+ "Hawaiiansk tid", "HT"};
String ICT[] = new String[] {"Indokinesisk tid", "ICT",
- "Indokinesisk sommartid", "ICST"};
+ "Indokinesisk sommartid", "ICST",
+ "Indokinesisk tid", "ICT"};
String IRT[] = new String[] {"Iran, normaltid", "IRST",
- "Iran, sommartid", "IRDT"};
+ "Iran, sommartid", "IRDT",
+ "Iransk tid", "IRT"};
String ISRAEL[] = new String[] {"Israel, normaltid", "IST",
- "Israel, sommartid", "IDT"};
+ "Israel, sommartid", "IDT",
+ "Israelisk tid", "IT"};
String IST[] = new String[] {"Indien, normaltid", "IST",
- "Indien, sommartid", "IDT"};
+ "Indien, sommartid", "IDT",
+ "Indisk tid", "IT"};
String JST[] = new String[] {"Japan, normaltid", "JST",
- "Japan, sommartid", "JDT"};
+ "Japan, sommartid", "JDT",
+ "Japansk tid", "JT"};
String KST[] = new String[] {"Korea, normaltid", "KST",
- "Korea, sommartid", "KDT"};
+ "Korea, sommartid", "KDT",
+ "Koreansk tid", "KT"};
String LORD_HOWE[] = new String[] {"Lord Howe, normaltid", "LHST",
- "Lord Howe, sommartid", "LHST"};
+ "Lord Howe, sommartid", "LHST",
+ "Lord Howe-tid", "LHT"};
String MHT[] = new String[] {"Marshall\u00f6arna, normaltid", "MHT",
- "Marshall\u00f6arna, sommartid", "MHST"};
+ "Marshall\u00f6arna, sommartid", "MHST",
+ "Marshall\u00F6arna-tid", "MHT"};
String MSK[] = new String[] {"Moskva, normaltid", "MSK",
- "Moskva, sommartid", "MSD"};
+ "Moskva, sommartid", "MSD",
+ "Moskvas tid", "MT"};
String MST[] = new String[] {"Mountain, normaltid", "MST",
- "Mountain, sommartid", "MDT"};
+ "Mountain, sommartid", "MDT",
+ "Mountain-tid", "MT"};
String MYT[] = new String[] {"Malaysia, normaltid", "MYT",
- "Malaysia, sommartid", "MYST"};
+ "Malaysia, sommartid", "MYST",
+ "Malaysisk tid", "MYT"};
String NORONHA[] = new String[] {"Fernando de Noronha, normaltid", "FNT",
- "Fernando de Noronha, sommartid", "FNST"};
+ "Fernando de Noronha, sommartid", "FNST",
+ "Fernando de Noronha-tid", "FNT"};
String NOVT[] = new String[] {"Novosibirsk, normaltid", "NOVT",
- "Novosibirsk, sommartid", "NOVST"};
+ "Novosibirsk, sommartid", "NOVST",
+ "Sibirisk tid", "NOVT"};
String NPT[] = new String[] {"Nepal, normaltid", "NPT",
- "Nepal, sommartid", "NPST"};
+ "Nepal, sommartid", "NPST",
+ "Nepalesisk tid", "NPT"};
String NST[] = new String[] {"Newfoundland, normaltid", "NST",
- "Newfoundland, sommartid", "NDT"};
+ "Newfoundland, sommartid", "NDT",
+ "Newfoundl\u00E4ndsk tid", "NT"};
String NZST[] = new String[] {"Nya Zeeland, normaltid", "NZST",
- "Nya Zeeland, sommartid", "NZDT"};
+ "Nya Zeeland, sommartid", "NZDT",
+ "Nyzeel\u00E4ndsk tid", "NZT"};
String PITCAIRN[] = new String[] {"Pitcairn, normaltid", "PST",
- "Pitcairn, sommartid", "PDT"};
+ "Pitcairn, sommartid", "PDT",
+ "Pitcairn-tid", "PT"};
String PKT[] = new String[] {"Pakistan, normaltid", "PKT",
- "Pakistan, sommartid", "PKST"};
+ "Pakistan, sommartid", "PKST",
+ "Pakistansk tid", "PKT"};
String PONT[] = new String[] {"Pohnpei, normaltid", "PONT",
- "Pohnpei, sommartid", "PONST"};
+ "Pohnpei, sommartid", "PONST",
+ "Ponape-tid", "PONT"};
String PST[] = new String[] {"Stilla havet, normaltid", "PST",
- "Stilla havet, sommartid", "PDT"};
+ "Stilla havet, sommartid", "PDT",
+ "Stillahavet", "PT"};
String SAST[] = new String[] {"Sydafrika, normaltid", "SAST",
- "Sydafrika, sommartid", "SAST"};
+ "Sydafrika, sommartid", "SAST",
+ "Sydafrikansk tid", "SAT"};
String SBT[] = new String[] {"Salomon\u00f6arna, normaltid", "SBT",
- "Salomon\u00f6arna, sommartid", "SBST"};
+ "Salomon\u00f6arna, sommartid", "SBST",
+ "Salomon\u00F6arna-tid", "SBT"};
String SGT[] = new String[] {"Singapore, normaltid", "SGT",
- "Singapore, sommartid", "SGST"};
+ "Singapore, sommartid", "SGST",
+ "Singapore-tid", "SGT"};
String SLST[] = new String[] {"Greenwichtid", "GMT",
- "Sierra Leone, sommartid", "SLST"};
+ "Sierra Leone, sommartid", "SLST",
+ "Sierra Leone-tid", "SLT"};
String TASMANIA[] = new String[] {"\u00D6stlig standardtid (Tasmania)", "EST",
- "\u00D6stlig sommartid (Tasmanien)", "EST"};
+ "\u00D6stlig sommartid (Tasmanien)", "EST",
+ "\u00D6stlig tid (Tasmania)", "ET"};
String TMT[] = new String[] {"Turkmenistan, normaltid", "TMT",
- "Turkmenistan, sommartid", "TMST"};
+ "Turkmenistan, sommartid", "TMST",
+ "Turkmensk tid", "TMT"};
String ULAT[]= new String[] {"Ulaanbaatar, normaltid", "ULAT",
- "Ulaanbaatar, sommartid", "ULAST"};
+ "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 sommartid", "WAST",
+ "V\u00E4stafrikansk tid", "WAT"};
String WET[] = new String[] {"V\u00e4steuropeisk tid", "WET",
- "V\u00e4steuropeisk sommartid", "WEST"};
+ "V\u00e4steuropeisk sommartid", "WEST",
+ "V\u00E4steuropeisk tid", "WET"};
String WIT[] = new String[] {"V\u00e4stindonesisk tid", "WIB",
- "V\u00e4stindonesisk sommartid", "WIST"};
+ "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 sommartid (Australien)", "WST",
+ "V\u00E4stlig tid (Australien)", "WT"};
String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
- "Samoa, sommartid", "SDT"};
+ "Samoa, sommartid", "SDT",
+ "Samoansk tid", "ST"};
String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WST",
- "V\u00e4stsamoansk sommartid", "WSDT"};
+ "V\u00e4stsamoansk sommartid", "WSDT",
+ "V\u00E4stsamoansk tid", "WST"};
String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
- "Chamorro, sommartid", "ChDT"};
+ "Chamorro, sommartid", "ChDT",
+ "Chamorros tid", "ChT"};
String VICTORIA[] = new String[] {"\u00D6stlig standardtid (Victoria)", "EST",
- "\u00D6stlig sommartid (Victoria)", "EST"};
+ "\u00D6stlig sommartid (Victoria)", "EST",
+ "\u00D6stlig tid (Victoria)", "ET"};
String UTC[] = new String[] {"Koordinerad universell tid", "UTC",
- "Koordinerad universell tid", "UTC"};
+ "Koordinerad universell tid", "UTC",
+ "UTC (koordinerad v\u00E4rldstid)", "UTC"};
String UZT[] = new String[] {"Uzbekistan, normaltid", "UZT",
- "Uzbekistan, sommartid", "UZST"};
+ "Uzbekistan, sommartid", "UZST",
+ "Uzbekisk tid", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Paraguay, normaltid", "PYT",
- "Paraguay, sommartid", "PYST"}},
+ "Paraguay, sommartid", "PYST",
+ "Paraguayansk tid", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Colombia, normaltid", "COT",
- "Colombia, sommartid", "COST"}},
+ "Colombia, sommartid", "COST",
+ "Kolombiansk tid", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Venezuela, normaltid", "VET",
- "Venezuela, sommartid", "VEST"}},
+ "Venezuela, sommartid", "VEST",
+ "Venezuelansk tid", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Franska Guyana, normaltid", "GFT",
- "Franska Guyana, sommartid", "GFST"}},
+ "Franska Guyana, sommartid", "GFST",
+ "Franska Guyana-tid", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"V\u00e4stra Gr\u00f6nland, normaltid", "WGT",
- "V\u00e4stra Gr\u00f6nland, sommartid", "WGST"}},
+ "V\u00e4stra Gr\u00f6nland, sommartid", "WGST",
+ "V\u00E4stgr\u00F6nl\u00E4ndsk tid", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Ecuador, normaltid", "ECT",
- "Ecuador, sommartid", "ECST"}},
+ "Ecuador, sommartid", "ECST",
+ "Ecuadoriansk tid", "ECT"}},
{"America/Guyana", new String[] {"Guyana, normaltid", "GYT",
- "Guyana, sommartid", "GYST"}},
+ "Guyana, sommartid", "GYST",
+ "Guyansk tid", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Bolivia, normaltid", "BOT",
- "Bolivia, sommartid", "BOST"}},
+ "Bolivia, sommartid", "BOST",
+ "Boliviansk tid", "BOT"}},
{"America/Lima", new String[] {"Peru, normaltid", "PET",
- "Peru, sommartid", "PEST"}},
+ "Peru, sommartid", "PEST",
+ "Peruansk tid", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Metlakatla, normaltid", "MeST",
- "Metlakatla, sommartid", "MeDT"}},
+ "Metlakatla, sommartid", "MeDT",
+ "Metlakatla-tid", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Saint-Pierre-et-Miquelon, normaltid", "PMST",
- "Saint-Pierre-et-Miquelon, sommartid", "PMDT"}},
+ "Saint-Pierre-et-Miquelon, sommartid", "PMDT",
+ "Saint-Pierre och Miquelons tid", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Uruguay, normaltid", "UYT",
- "Uruguay, sommartid", "UYST"}},
+ "Uruguay, sommartid", "UYST",
+ "Uruguayansk tid", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Surinam, normaltid", "SRT",
- "Surinam, sommartid", "SRST"}},
+ "Surinam, sommartid", "SRST",
+ "Surinamsk tid", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Davis, normaltid", "DAVT",
- "Davis, sommartid", "DAVST"}},
+ "Davis, sommartid", "DAVST",
+ "Davis-tid", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville, normaltid", "DDUT",
- "Dumont-d'Urville, sommartid", "DDUST"}},
+ "Dumont-d'Urville, sommartid", "DDUST",
+ "Dumont-d'Urville-tid", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Macquarie\u00F6n, normaltid", "MIST",
- "Macquarie\u00F6n, sommartid", "MIST"}},
+ "Macquarie\u00F6n, sommartid", "MIST",
+ "Macquarie\u00F6n, normaltid", "MIST"}},
{"Antarctica/Mawson", new String[] {"Mawson, normaltid", "MAWT",
- "Mawson, sommartid", "MAWST"}},
+ "Mawson, sommartid", "MAWST",
+ "Mawson-tid", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Rothera, normaltid", "ROTT",
- "Rothera, sommartid", "ROTST"}},
+ "Rothera, sommartid", "ROTST",
+ "Rothera-tid", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa, normaltid", "SYOT",
- "Syowa, sommartid", "SYOST"}},
+ "Syowa, sommartid", "SYOST",
+ "Syowa-tid", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Vostok, normaltid", "VOST",
- "Vostok, sommartid", "VOSST"}},
+ "Vostok, sommartid", "VOSST",
+ "Vostok-tid", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma-Ata, normaltid", "ALMT",
- "Alma-Ata, sommartid", "ALMST"}},
+ "Alma-Ata, sommartid", "ALMST",
+ "Alma-Ata-tid", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Anadyr, normaltid", "ANAT",
- "Anadyr, sommartid", "ANAST"}},
+ "Anadyr, sommartid", "ANAST",
+ "Anadyr-tid", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau, normaltid", "AQTT",
- "Aqtau, sommartid", "AQTST"}},
+ "Aqtau, sommartid", "AQTST",
+ "Aqtau-tid", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe, normaltid", "AQTT",
- "Aqtobe, sommartid", "AQTST"}},
+ "Aqtobe, sommartid", "AQTST",
+ "Aqtobe-tid", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Azerbajdzjan, normaltid", "AZT",
- "Azerbajdzjan, sommartid", "AZST"}},
+ "Azerbajdzjan, sommartid", "AZST",
+ "Azerbajdzjansk tid", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Kirgizstan, normaltid", "KGT",
- "Kirgizstan, sommartid", "KGST"}},
+ "Kirgizstan, sommartid", "KGST",
+ "Kirgizisk tid", "KGT"}},
{"Asia/Brunei", new String[] {"Brunei, normaltid", "BNT",
- "Brunei, sommartid", "BNST"}},
+ "Brunei, sommartid", "BNST",
+ "Bruneisk tid", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan, normaltid", "CHOT",
- "Choibalsan, sommartid", "CHOST"}},
+ "Choibalsan, sommartid", "CHOST",
+ "Choibalsan-tid", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Timor-Leste, normaltid", "TLT",
- "Timor-Leste, sommartid", "TLST"}},
+ "Timor-Leste, sommartid", "TLST",
+ "\u00D6sttimor, normaltid", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Tadzjikistan, normaltid", "TJT",
- "Tadzjikistan, sommartid", "TJST"}},
+ "Tadzjikistan, sommartid", "TJST",
+ "Tadzjikisk tid", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hovd, normaltid", "HOVT",
- "Hovd, sommartid", "HOVST"}},
+ "Hovd, sommartid", "HOVST",
+ "Hovd-tid", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Irkutsk, normaltid", "IRKT",
- "Irkutsk, sommartid", "IRKST"}},
+ "Irkutsk, sommartid", "IRKST",
+ "Irkutsk-tid", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u00d6stindonesisk tid", "WIT",
- "\u00d6stindonesisk sommartid", "EIST"}},
+ "\u00d6stindonesisk sommartid", "EIST",
+ "\u00D6stindonesisk tid", "WIT"}},
{"Asia/Kabul", new String[] {"Afghanistan, normaltid", "AFT",
- "Afghanistan, sommartid", "AFST"}},
+ "Afghanistan, sommartid", "AFST",
+ "Afghansk tid", "AFT"}},
{"Asia/Kamchatka", new String[] {"Petropavlovsk-Kamtjatka, normaltid", "PETT",
- "Petropavlovsk-Kamtjatka, sommartid", "PETST"}},
+ "Petropavlovsk-Kamtjatka, sommartid", "PETST",
+ "Petropavlovsk-Kamtjatskij-tid", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Khandyga, normaltid", "YAKT",
- "Khandyga, sommartid", "YAKST"}},
+ "Khandyga, sommartid", "YAKST",
+ "Khandyga, normaltid", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Krasnojarsk, normaltid", "KRAT",
- "Krasnojarsk, sommartid", "KRAST"}},
+ "Krasnojarsk, sommartid", "KRAST",
+ "Krasnojarsk-tid", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadan, normaltid", "MAGT",
- "Magadan, sommartid", "MAGST"}},
+ "Magadan, sommartid", "MAGST",
+ "Magadan-tid", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Filippinerna, normaltid", "PHT",
- "Filippinerna, sommartid", "PHST"}},
+ "Filippinerna, sommartid", "PHST",
+ "Filippinsk tid", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral, normaltid", "ORAT",
- "Oral, sommartid", "ORAST"}},
+ "Oral, sommartid", "ORAST",
+ "Oral-tid", "ORAT"}},
{"Asia/Omsk", new String[] {"Omsk, normaltid", "OMST",
- "Omsk, sommartid", "OMSST"}},
+ "Omsk, sommartid", "OMSST",
+ "Omsk-tid", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda, normaltid", "QYZT",
- "Qyzylorda, sommartid", "QYZST"}},
+ "Qyzylorda, sommartid", "QYZST",
+ "Qyzylorda-tid", "QYZT"}},
{"Asia/Rangoon", new String[] {"Myanmar, normaltid", "MMT",
- "Myanmar, sommartid", "MMST"}},
+ "Myanmar, sommartid", "MMST",
+ "Myanmar-tid", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Sakhalin, normaltid", "SAKT",
- "Sakhalin, sommartid", "SAKST"}},
+ "Sakhalin, sommartid", "SAKST",
+ "Sakhalin-tid", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Georgien, normaltid", "GET",
- "Georgien, sommartid", "GEST"}},
+ "Georgien, sommartid", "GEST",
+ "Georgisk tid", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Ust-Nera, normaltid", "VLAT",
- "Ust-Nera, sommartid", "VLAST"}},
+ "Ust-Nera, sommartid", "VLAST",
+ "Ust-Nera, normaltid", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Vladivostok, normaltid", "VLAT",
- "Vladivostok, sommartid", "VLAST"}},
+ "Vladivostok, sommartid", "VLAST",
+ "Vladivostok-tid", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Jakutsk, normaltid", "YAKT",
- "Jakutsk, sommartid", "YAKST"}},
+ "Jakutsk, sommartid", "YAKST",
+ "Jakutsk-tid", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Jekaterinburg, normaltid", "YEKT",
- "Jekaterinburg, sommartid", "YEKST"}},
+ "Jekaterinburg, sommartid", "YEKST",
+ "Jekaterinburg-tid", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Azorerna, normaltid", "AZOT",
- "Azorerna, sommartid", "AZOST"}},
+ "Azorerna, sommartid", "AZOST",
+ "Azorerna-tid", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Kap Verde, normaltid", "CVT",
- "Kap Verde, sommartid", "CVST"}},
+ "Kap Verde, sommartid", "CVST",
+ "Kap Verde-tid", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Sydgeorgien, normaltid", "GST",
- "Sydgeorgien, sommartid", "GDT"}},
+ "Sydgeorgien, sommartid", "GDT",
+ "Sydgeorgisk tid", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Falklands\u00f6arna, normaltid", "FKT",
- "Falklands\u00f6arna, sommartid", "FKST"}},
+ "Falklands\u00f6arna, sommartid", "FKST",
+ "Falklands\u00F6arna-tid", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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 sommartid (Australien)", "CWST",
+ "Central v\u00E4stlig tid (Australien)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Samara, normaltid", "SAMT",
- "Samara, sommartid", "SAMST"}},
+ "Samara, sommartid", "SAMST",
+ "Samara-tid", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Volgograd-tid", "VOLT",
- "Volgograd, sommartid", "VOLST"}},
+ "Volgograd, sommartid", "VOLST",
+ "Volgograd, normaltid", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Indiska oceanen, normaltid", "IOT",
- "Indiska oceanen, sommartid", "IOST"}},
+ "Indiska oceanen, sommartid", "IOST",
+ "Indiska Ocean\u00F6arna-tid", "IOT"}},
{"Indian/Christmas", new String[] {"Jul\u00f6n, normaltid", "CXT",
- "Jul\u00f6n, sommartid", "CXST"}},
+ "Jul\u00f6n, sommartid", "CXST",
+ "Jul\u00F6n-tid", "CIT"}},
{"Indian/Cocos", new String[] {"Cocos-Keeling\u00f6arna, normaltid", "CCT",
- "Cocos-Keeling\u00f6arna, sommartid", "CCST"}},
+ "Cocos-Keeling\u00f6arna, sommartid", "CCST",
+ "Kokos\u00F6arna-tid", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Franska s\u00f6dra och antarktiska omr\u00e5dena, normaltid", "TFT",
- "Franska s\u00f6dra och antarktiska omr\u00e5dena, sommartid", "TFST"}},
+ "Franska s\u00f6dra och antarktiska omr\u00e5dena, sommartid", "TFST",
+ "Franska s\u00F6dra och antarktiska \u00F6arna-tid", "TFT"}},
{"Indian/Mahe", new String[] {"Seychellerna, normaltid", "SCT",
- "Seychellerna, sommartid", "SCST"}},
+ "Seychellerna, sommartid", "SCST",
+ "Seychellisk tid", "SCT"}},
{"Indian/Maldives", new String[] {"Maldiverna, normaltid", "MVT",
- "Maldiverna, sommartid", "MVST"}},
+ "Maldiverna, sommartid", "MVST",
+ "Maldivisk tid", "MVT"}},
{"Indian/Mauritius", new String[] {"Mauritius, normaltid", "MUT",
- "Mauritius, sommartid", "MUST"}},
+ "Mauritius, sommartid", "MUST",
+ "Mauritiansk tid", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Reunion, normaltid", "RET",
- "Reunion, sommartid", "REST"}},
+ "Reunion, sommartid", "REST",
+ "Reunion-tid", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Mellaneuropeisk tid", "MET",
- "Mellaneuropeisk sommartid", "MEST"}},
+ "Mellaneuropeisk sommartid", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Vanuatu, normaltid", "VUT",
- "Vanuatu, sommartid", "VUST"}},
+ "Vanuatu, sommartid", "VUST",
+ "Vanuatu-tid", "VUT"}},
{"Pacific/Enderbury", new String[] {"Phoenix-\u00f6arna, normaltid", "PHOT",
- "Phoenix-\u00f6arna, sommartid", "PHOST"}},
+ "Phoenix-\u00f6arna, sommartid", "PHOST",
+ "Phoenix\u00F6arna-tid", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Tokelau, normaltid", "TKT",
- "Tokelau, sommartid", "TKST"}},
+ "Tokelau, sommartid", "TKST",
+ "Tokelau-tid", "TKT"}},
{"Pacific/Fiji", new String[] {"Fiji, normaltid", "FJT",
- "Fiji, sommartid", "FJST"}},
+ "Fiji, sommartid", "FJST",
+ "Fijiansk tid", "FJT"}},
{"Pacific/Funafuti", new String[] {"Tuvalu, normaltid", "TVT",
- "Tuvalu, sommartid", "TVST"}},
+ "Tuvalu, sommartid", "TVST",
+ "Tuvalu-tid", "TVT"}},
{"Pacific/Galapagos", new String[] {"Galapagos, normaltid", "GALT",
- "Galapagos, sommartid", "GALST"}},
+ "Galapagos, sommartid", "GALST",
+ "Galapagos-tid", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line-\u00f6arna, normaltid", "LINT",
- "Line-\u00f6arna, sommartid", "LINST"}},
+ "Line-\u00f6arna, sommartid", "LINST",
+ "Line Islands-tid", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae, normaltid", "KOST",
- "Kosrae, sommartid", "KOSST"}},
+ "Kosrae, sommartid", "KOSST",
+ "Kosrae-tid", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Marquesas, normaltid", "MART",
- "Marquesas, sommartid", "MARST"}},
+ "Marquesas, sommartid", "MARST",
+ "Marquesas\u00F6arna-tid", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Nauru, normaltid", "NRT",
- "Nauru, sommartid", "NRST"}},
+ "Nauru, sommartid", "NRST",
+ "Nauruansk tid", "NRT"}},
{"Pacific/Niue", new String[] {"Niue, normaltid", "NUT",
- "Niue, sommartid", "NUST"}},
+ "Niue, sommartid", "NUST",
+ "Niue-tid", "NUT"}},
{"Pacific/Norfolk", new String[] {"Norfolk, normaltid", "NFT",
- "Norfolk, sommartid", "NFST"}},
+ "Norfolk, sommartid", "NFST",
+ "Norfolk-tid", "NFT"}},
{"Pacific/Noumea", new String[] {"Nya Caledonien, normaltid", "NCT",
- "Nya Caledonien, sommartid", "NCST"}},
+ "Nya Caledonien, sommartid", "NCST",
+ "Nya Kaledonien-tid", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Palau, normaltid", "PWT",
- "Palau, sommartid", "PWST"}},
+ "Palau, sommartid", "PWST",
+ "Palau-tid", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Papua Nya Guinea, normaltid", "PGT",
- "Papua Nya Guinea, sommartid", "PGST"}},
+ "Papua Nya Guinea, sommartid", "PGST",
+ "Papua Nya Guinea-tid", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Cook\u00f6arna, normaltid", "CKT",
- "Cook\u00f6arna, sommartid", "CKHST"}},
+ "Cook\u00f6arna, sommartid", "CKHST",
+ "Cook\u00F6arna-tid", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Tahiti, normaltid", "TAHT",
- "Tahiti, sommartid", "TAHST"}},
+ "Tahiti, sommartid", "TAHST",
+ "Tahiti-tid", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Gilbert\u00f6arna, normaltid", "GILT",
- "Gilbert\u00f6arna, sommartid", "GILST"}},
+ "Gilbert\u00f6arna, sommartid", "GILST",
+ "Gilbert\u00F6arna-tid", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Tonga, normaltid", "TOT",
- "Tonga, sommartid", "TOST"}},
+ "Tonga, sommartid", "TOST",
+ "Tonga-tid", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Wake, normaltid", "WAKT",
- "Wake, sommartid", "WAKST"}},
+ "Wake, sommartid", "WAKST",
+ "Wake-tid", "WAKT"}},
{"Pacific/Wallis", new String[] {"Wallis & Futuna, normaltid", "WFT",
- "Wallis & Futuna, sommartid", "WFST"}},
+ "Wallis & Futuna, sommartid", "WFST",
+ "Wallis- och Futuna\u00F6arna-tid", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre \u65f6\u95f4", "ACT",
- "Acre \u590f\u4ee4\u65f6", "ACST"};
+ "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\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CST",
+ "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CT"};
String AGT[] = new String[] {"\u963f\u6839\u5ef7\u65f6\u95f4", "ART",
- "\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "ARST"};
+ "\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "ARST",
+ "\u963F\u6839\u5EF7\u65F6\u95F4", "ART"};
String AKST[] = new String[] {"\u963f\u62c9\u65af\u52a0\u6807\u51c6\u65f6\u95f4", "AKST",
- "\u963f\u62c9\u65af\u52a0\u590f\u4ee4\u65f6", "AKDT"};
+ "\u963f\u62c9\u65af\u52a0\u590f\u4ee4\u65f6", "AKDT",
+ "\u963F\u62C9\u65AF\u52A0\u65F6\u95F4", "AKT"};
String AMT[] = new String[] {"\u4e9a\u9a6c\u900a\u65f6\u95f4", "AMT",
- "\u4e9a\u9a6c\u900a\u590f\u4ee4\u65f6", "AMST"};
+ "\u4e9a\u9a6c\u900a\u590f\u4ee4\u65f6", "AMST",
+ "\u4E9A\u9A6C\u900A\u65F6\u95F4", "AMT"};
String ARAST[] = new String[] {"\u963f\u62c9\u4f2f\u6807\u51c6\u65f6\u95f4", "AST",
- "\u963f\u62c9\u4f2f\u590f\u4ee4\u65f6", "ADT"};
+ "\u963f\u62c9\u4f2f\u590f\u4ee4\u65f6", "ADT",
+ "\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4", "AT"};
String ARMT[] = new String[] {"\u4e9a\u7f8e\u5c3c\u4e9a\u65f6\u95f4", "AMT",
- "\u4e9a\u7f8e\u5c3c\u4e9a\u590f\u4ee4\u65f6", "AMST"};
+ "\u4e9a\u7f8e\u5c3c\u4e9a\u590f\u4ee4\u65f6", "AMST",
+ "\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4", "AMT"};
String AST[] = new String[] {"\u5927\u897f\u6d0b\u6807\u51c6\u65f6\u95f4", "AST",
- "\u5927\u897f\u6d0b\u590f\u4ee4\u65f6", "ADT"};
+ "\u5927\u897f\u6d0b\u590f\u4ee4\u65f6", "ADT",
+ "\u5927\u897F\u6D0B\u65F6\u95F4", "AT"};
String BDT[] = new String[] {"\u5b5f\u52a0\u62c9\u65f6\u95f4", "BDT",
- "\u5b5f\u52a0\u62c9\u590f\u4ee4\u65f6", "BDST"};
+ "\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\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\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 BRT[] = new String[] {"\u5df4\u897f\u5229\u4e9a\u65f6\u95f4", "BRT",
- "\u5df4\u897f\u5229\u4e9a\u590f\u4ee4\u65f6", "BRST"};
+ "\u5df4\u897f\u5229\u4e9a\u590f\u4ee4\u65f6", "BRST",
+ "\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4", "BRT"};
String BTT[] = new String[] {"\u4e0d\u4e39\u65f6\u95f4", "BTT",
- "\u4e0d\u4e39\u590f\u4ee4\u65f6", "BTST"};
+ "\u4e0d\u4e39\u590f\u4ee4\u65f6", "BTST",
+ "\u4E0D\u4E39\u65F6\u95F4", "BTT"};
String CAT[] = new String[] {"\u4e2d\u975e\u65f6\u95f4", "CAT",
- "\u4e2d\u975e\u590f\u4ee4\u65f6", "CAST"};
+ "\u4e2d\u975e\u590f\u4ee4\u65f6", "CAST",
+ "\u4E2D\u975E\u65F6\u95F4", "CAT"};
String CET[] = new String[] {"\u4e2d\u6b27\u65f6\u95f4", "CET",
- "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST"};
+ "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST",
+ "\u4E2D\u6B27\u65F6\u95F4", "CET"};
String CHAST[] = new String[] {"\u67e5\u8428\u59c6\u6807\u51c6\u65f6\u95f4", "CHAST",
- "\u67e5\u8428\u59c6\u590f\u4ee4\u65f6", "CHADT"};
+ "\u67e5\u8428\u59c6\u590f\u4ee4\u65f6", "CHADT",
+ "\u67E5\u5854\u59C6\u65F6\u95F4", "CHAT"};
String CHUT[] = new String[] {"\u4E18\u514B\u65F6\u95F4", "CHUT",
- "\u4E18\u514B\u590F\u4EE4\u65F6", "CHUST"};
+ "\u4E18\u514B\u590F\u4EE4\u65F6", "CHUST",
+ "\u4E18\u514B\u65F6\u95F4", "CHUT"};
String CIT[] = new String[] {"\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WITA",
- "\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "CIST"};
+ "\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "CIST",
+ "\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WITA"};
String CLT[] = new String[] {"\u667a\u5229\u65f6\u95f4", "CLT",
- "\u667a\u5229\u590f\u4ee4\u65f6", "CLST"};
+ "\u667a\u5229\u590f\u4ee4\u65f6", "CLST",
+ "\u667A\u5229\u65F6\u95F4", "CLT"};
String CST[] = new String[] {"\u4e2d\u592e\u6807\u51c6\u65f6\u95f4", "CST",
- "\u4e2d\u592e\u590f\u4ee4\u65f6", "CDT"};
+ "\u4e2d\u592e\u590f\u4ee4\u65f6", "CDT",
+ "\u4E2D\u90E8\u65F6\u95F4", "CT"};
String CTT[] = new String[] {"\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4", "CST",
- "\u4e2d\u56fd\u590f\u4ee4\u65f6", "CDT"};
+ "\u4e2d\u56fd\u590f\u4ee4\u65f6", "CDT",
+ "\u4E2D\u56FD\u65F6\u95F4", "CT"};
String CUBA[] = new String[] {"\u53e4\u5df4\u6807\u51c6\u65f6\u95f4", "CST",
- "\u53e4\u5df4\u590f\u4ee4\u65f6", "CDT"};
+ "\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\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)", "CST",
+ "\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)", "CT"};
String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u7231\u5c14\u5170\u590f\u4ee4\u65f6", "IST"};
+ "\u7231\u5c14\u5170\u590f\u4ee4\u65f6", "IST",
+ "\u7231\u5C14\u5170\u65F6\u95F4", "IT"};
String EAT[] = new String[] {"\u4e1c\u975e\u65f6\u95f4", "EAT",
- "\u4e1c\u975e\u590f\u4ee4\u65f6", "EAST"};
+ "\u4e1c\u975e\u590f\u4ee4\u65f6", "EAST",
+ "\u4E1C\u975E\u65F6\u95F4", "EAT"};
String EASTER[] = new String[] {"\u590d\u6d3b\u5c9b\u65f6\u95f4", "EAST",
- "\u590d\u6d3b\u5c9b\u590f\u4ee4\u65f6", "EASST"};
+ "\u590d\u6d3b\u5c9b\u590f\u4ee4\u65f6", "EASST",
+ "\u590D\u6D3B\u5C9B\u65F6\u95F4", "EAST"};
String EET[] = new String[] {"\u4e1c\u6b27\u65f6\u95f4", "EET",
- "\u4e1c\u6b27\u590f\u4ee4\u65f6", "EEST"};
+ "\u4e1c\u6b27\u590f\u4ee4\u65f6", "EEST",
+ "\u4e1c\u6b27\u65f6\u95f4", "EET"};
String EGT[] = new String[] {"\u4e1c\u683c\u6797\u5c9b\u65f6\u95f4", "EGT",
- "\u4e1c\u683c\u6797\u5c9b\u590f\u4ee4\u65f6", "EGST"};
+ "\u4e1c\u683c\u6797\u5c9b\u590f\u4ee4\u65f6", "EGST",
+ "\u4E1C\u683C\u6797\u5C9B\u65F6\u95F4", "EGT"};
String EST[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "EST",
- "\u4e1c\u90e8\u590f\u4ee4\u65f6", "EDT"};
+ "\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\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "ET"};
String FET[] = new String[] {"\u8FDC\u4E1C\u6B27\u65F6\u95F4", "FET",
- "\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6", "FEST"};
+ "\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6", "FEST",
+ "\u8FDC\u4E1C\u6B27\u65F6\u95F4", "FET"};
String GHMT[] = new String[] {"\u52a0\u7eb3\u65f6\u95f4", "GMT",
- "\u52a0\u7eb3\u590f\u4ee4\u65f6", "GHST"};
+ "\u52a0\u7eb3\u590f\u4ee4\u65f6", "GHST",
+ "\u52A0\u7EB3\u65F6\u95F4", "GMT"};
String GAMBIER[] = new String[] {"\u5188\u6bd4\u4e9a\u65f6\u95f4", "GAMT",
- "\u5188\u6bd4\u4e9a\u590f\u4ee4\u65f6", "GAMST"};
+ "\u5188\u6bd4\u4e9a\u590f\u4ee4\u65f6", "GAMST",
+ "\u5188\u6BD4\u4E9A\u65F6\u95F4", "GAMT"};
String GMT[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT"};
+ "\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
+ "\u683C\u6797\u5A01\u6CBB\u65F6\u95F4", "GMT"};
String GMTBST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u82f1\u56fd\u590f\u4ee4\u65f6", "BST"};
+ "\u82f1\u56fd\u590f\u4ee4\u65f6", "BST",
+ "\u82F1\u56FD\u65F6\u95F4", "BT"};
String GST[] = new String[] {"\u6ce2\u65af\u6e7e\u6807\u51c6\u65f6\u95f4", "GST",
- "\u6ce2\u65af\u6e7e\u590f\u4ee4\u65f6", "GDT"};
+ "\u6ce2\u65af\u6e7e\u590f\u4ee4\u65f6", "GDT",
+ "\u6D77\u6E7E\u65F6\u95F4", "GT"};
String HAST[] = new String[] {"\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "HAST",
- "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u590f\u4ee4\u65f6", "HADT"};
+ "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u590f\u4ee4\u65f6", "HADT",
+ "\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4", "HAT"};
String HKT[] = new String[] {"\u9999\u6e2f\u65f6\u95f4", "HKT",
- "\u9999\u6e2f\u590f\u4ee4\u65f6", "HKST"};
+ "\u9999\u6e2f\u590f\u4ee4\u65f6", "HKST",
+ "\u9999\u6E2F\u65F6\u95F4", "HKT"};
String HST[] = new String[] {"\u590f\u5a01\u5937\u6807\u51c6\u65f6\u95f4", "HST",
- "\u590f\u5a01\u5937\u590f\u4ee4\u65f6", "HDT"};
+ "\u590f\u5a01\u5937\u590f\u4ee4\u65f6", "HDT",
+ "\u590F\u5A01\u5937\u65F6\u95F4", "HT"};
String ICT[] = new String[] {"\u5370\u5ea6\u652f\u90a3\u65f6\u95f4", "ICT",
- "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u65f6", "ICST"};
+ "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u65f6", "ICST",
+ "\u5370\u5EA6\u652F\u90A3\u65F6\u95F4", "ICT"};
String IRT[] = new String[] {"\u4f0a\u6717\u6807\u51c6\u65f6\u95f4", "IRST",
- "\u4f0a\u6717\u590f\u4ee4\u65f6", "IRDT"};
+ "\u4f0a\u6717\u590f\u4ee4\u65f6", "IRDT",
+ "\u4F0A\u6717\u65F6\u95F4", "IRT"};
String ISRAEL[] = new String[] {"\u4ee5\u8272\u5217\u6807\u51c6\u65f6\u95f4", "IST",
- "\u4ee5\u8272\u5217\u590f\u4ee4\u65f6", "IDT"};
+ "\u4ee5\u8272\u5217\u590f\u4ee4\u65f6", "IDT",
+ "\u4EE5\u8272\u5217\u65F6\u95F4", "IT"};
String IST[] = new String[] {"\u5370\u5ea6\u6807\u51c6\u65f6\u95f4", "IST",
- "\u5370\u5ea6\u590f\u4ee4\u65f6", "IDT"};
+ "\u5370\u5ea6\u590f\u4ee4\u65f6", "IDT",
+ "\u5370\u5EA6\u65F6\u95F4", "IT"};
String JST[] = new String[] {"\u65e5\u672c\u6807\u51c6\u65f6\u95f4", "JST",
- "\u65e5\u672c\u590f\u4ee4\u65f6", "JDT"};
+ "\u65e5\u672c\u590f\u4ee4\u65f6", "JDT",
+ "\u65E5\u672C\u65F6\u95F4", "JT"};
String KST[] = new String[] {"\u97e9\u56fd\u6807\u51c6\u65f6\u95f4", "KST",
- "\u97e9\u56fd\u590f\u4ee4\u65f6", "KDT"};
+ "\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", "LHST",
+ "\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"};
+ "\u9a6c\u7ecd\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "MHST",
+ "\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4", "MHT"};
String MSK[] = new String[] {"\u83ab\u65af\u79d1\u6807\u51c6\u65f6\u95f4", "MSK",
- "\u83ab\u65af\u79d1\u590f\u4ee4\u65f6", "MSD"};
+ "\u83ab\u65af\u79d1\u590f\u4ee4\u65f6", "MSD",
+ "\u83AB\u65AF\u79D1\u65F6\u95F4", "MT"};
String MST[] = new String[] {"Mountain \u6807\u51c6\u65f6\u95f4", "MST",
- "Mountain \u590f\u4ee4\u65f6", "MDT"};
+ "Mountain \u590f\u4ee4\u65f6", "MDT",
+ "\u5C71\u5730\u65F6\u95F4", "MT"};
String MYT[] = new String[] {"\u9a6c\u6765\u897f\u4e9a\u65f6\u95f4", "MYT",
- "\u9a6c\u6765\u897f\u4e9a\u590f\u4ee4\u65f6", "MYST"};
+ "\u9a6c\u6765\u897f\u4e9a\u590f\u4ee4\u65f6", "MYST",
+ "\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4", "MYT"};
String NORONHA[] = new String[] {"\u8d39\u5c14\u5357\u591a\u5fb7\u8bfa\u7f57\u5c3c\u4e9a\u65f6\u95f4", "FNT",
- "\u8d39\u5c14\u5357\u591a\u5fb7\u8bfa\u7f57\u5c3c\u4e9a\u590f\u4ee4\u65f6", "FNST"};
+ "\u8d39\u5c14\u5357\u591a\u5fb7\u8bfa\u7f57\u5c3c\u4e9a\u590f\u4ee4\u65f6", "FNST",
+ "\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4", "FNT"};
String NOVT[] = new String[] {"Novosibirsk \u65f6\u95f4", "NOVT",
- "Novosibirsk \u590f\u4ee4\u65f6", "NOVST"};
+ "Novosibirsk \u590f\u4ee4\u65f6", "NOVST",
+ "Novosibirsk \u65F6\u95F4", "NOVT"};
String NPT[] = new String[] {"\u5c3c\u6cca\u5c14\u65f6\u95f4", "NPT",
- "\u5c3c\u6cca\u5c14\u590f\u4ee4\u65f6", "NPST"};
+ "\u5c3c\u6cca\u5c14\u590f\u4ee4\u65f6", "NPST",
+ "\u5C3C\u6CCA\u5C14\u65F6\u95F4", "NPT"};
String NST[] = new String[] {"\u7ebd\u82ac\u5170\u6807\u51c6\u65f6\u95f4", "NST",
- "\u7ebd\u82ac\u5170\u590f\u4ee4\u65f6", "NDT"};
+ "\u7ebd\u82ac\u5170\u590f\u4ee4\u65f6", "NDT",
+ "\u7EBD\u82AC\u5170\u65F6\u95F4", "NT"};
String NZST[] = new String[] {"\u65b0\u897f\u5170\u6807\u51c6\u65f6\u95f4", "NZST",
- "\u65b0\u897f\u5170\u590f\u4ee4\u65f6", "NZDT"};
+ "\u65b0\u897f\u5170\u590f\u4ee4\u65f6", "NZDT",
+ "\u65B0\u897F\u5170\u65F6\u95F4", "NZT"};
String PITCAIRN[] = new String[] {"\u76ae\u7279\u5eb7\u5c9b\u6807\u51c6\u65f6\u95f4", "PST",
- "\u76ae\u7279\u5eb7\u5c9b\u590f\u4ee4\u65f6", "PDT"};
+ "\u76ae\u7279\u5eb7\u5c9b\u590f\u4ee4\u65f6", "PDT",
+ "\u76AE\u7279\u51EF\u6069\u65F6\u95F4", "PT"};
String PKT[] = new String[] {"\u5df4\u57fa\u65af\u5766\u65f6\u95f4", "PKT",
- "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u65f6", "PKST"};
+ "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u65f6", "PKST",
+ "\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4", "PKT"};
String PONT[] = new String[] {"\u6CE2\u7EB3\u4F69\u65F6\u95F4", "PONT",
- "\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6", "PONST"};
+ "\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6", "PONST",
+ "\u6CE2\u7EB3\u4F69\u65F6\u95F4", "PONT"};
String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "PST",
- "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT"};
+ "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT",
+ "\u592A\u5E73\u6D0B\u65F6\u95F4", "PT"};
String SAST[] = new String[] {"\u5357\u975e\u6807\u51c6\u65f6\u95f4", "SAST",
- "\u5357\u975e\u590f\u4ee4\u65f6", "SAST"};
+ "\u5357\u975e\u590f\u4ee4\u65f6", "SAST",
+ "\u5357\u975E\u65F6\u95F4", "SAT"};
String SBT[] = new String[] {"\u6240\u7f57\u95e8\u7fa4\u5c9b\u65f6\u95f4", "SBT",
- "\u6240\u7f57\u95e8\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SBST"};
+ "\u6240\u7f57\u95e8\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SBST",
+ "\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4", "SBT"};
String SGT[] = new String[] {"\u65b0\u52a0\u5761\u65f6\u95f4", "SGT",
- "\u65b0\u52a0\u5761\u590f\u4ee4\u65f6", "SGST"};
+ "\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\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\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "ET"};
String TMT[] = new String[] {"\u571f\u5e93\u66fc\u65f6\u95f4", "TMT",
- "\u571f\u5e93\u66fc\u590f\u4ee4\u65f6", "TMST"};
+ "\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\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\u590f\u4ee4\u65f6", "WAST",
+ "\u897F\u975E\u65F6\u95F4", "WAT"};
String WET[] = new String[] {"\u897f\u6b27\u65f6\u95f4", "WET",
- "\u897f\u6b27\u590f\u4ee4\u65f6", "WEST"};
+ "\u897f\u6b27\u590f\u4ee4\u65f6", "WEST",
+ "\u897F\u6B27\u65F6\u95F4", "WET"};
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\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\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "WST",
+ "\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "WT"};
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\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT",
+ "\u8428\u6469\u4E9A\u65F6\u95F4", "ST"};
String WST_SAMOA[] = new String[] {"\u897f\u8428\u6469\u4e9a\u65f6\u95f4", "WST",
- "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSDT"};
+ "\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"};
+ "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\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "ET"};
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",
+ "\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\u590f\u4ee4\u65f6", "UZST",
+ "\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\u5df4\u62c9\u572d\u65f6\u95f4", "PYT",
- "\u5df4\u62c9\u572d\u590f\u4ee4\u65f6", "PYST"}},
+ "\u5df4\u62c9\u572d\u590f\u4ee4\u65f6", "PYST",
+ "\u5DF4\u62C9\u572D\u65F6\u95F4", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\u54e5\u4f26\u6bd4\u4e9a\u65f6\u95f4", "COT",
- "\u54e5\u4f26\u6bd4\u4e9a\u590f\u4ee4\u65f6", "COST"}},
+ "\u54e5\u4f26\u6bd4\u4e9a\u590f\u4ee4\u65f6", "COST",
+ "\u54E5\u4F26\u6BD4\u4E9A\u65F6\u95F4", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\u59d4\u5185\u745e\u62c9\u65f6\u95f4", "VET",
- "\u59d4\u5185\u745e\u62c9\u590f\u4ee4\u65f6", "VEST"}},
+ "\u59d4\u5185\u745e\u62c9\u590f\u4ee4\u65f6", "VEST",
+ "\u59D4\u5185\u745E\u62C9\u65F6\u95F4", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\u6cd5\u5c5e\u572d\u4e9a\u90a3\u65f6\u95f4", "GFT",
- "\u6cd5\u5c5e\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GFST"}},
+ "\u6cd5\u5c5e\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GFST",
+ "\u6CD5\u5C5E\u572D\u4E9A\u90A3\u65F6\u95F4", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u683c\u6797\u5170\u5c9b\u65f6\u95f4", "WGT",
- "\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST"}},
+ "\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/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\u5384\u74dc\u591a\u5c14\u65f6\u95f4", "ECT",
- "\u5384\u74dc\u591a\u5c14\u590f\u4ee4\u65f6", "ECST"}},
+ "\u5384\u74dc\u591a\u5c14\u590f\u4ee4\u65f6", "ECST",
+ "\u5384\u74DC\u591A\u5C14\u65F6\u95F4", "ECT"}},
{"America/Guyana", new String[] {"\u572d\u4e9a\u90a3\u65f6\u95f4", "GYT",
- "\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GYST"}},
+ "\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GYST",
+ "\u572D\u4E9A\u90A3\u65F6\u95F4", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\u73bb\u5229\u7ef4\u4e9a\u65f6\u95f4", "BOT",
- "\u73bb\u5229\u7ef4\u4e9a\u590f\u4ee4\u65f6", "BOST"}},
+ "\u73bb\u5229\u7ef4\u4e9a\u590f\u4ee4\u65f6", "BOST",
+ "\u73BB\u5229\u7EF4\u4E9A\u65F6\u95F4", "BOT"}},
{"America/Lima", new String[] {"\u79d8\u9c81\u65f6\u95f4", "PET",
- "\u79d8\u9c81\u590f\u4ee4\u65f6", "PEST"}},
+ "\u79d8\u9c81\u590f\u4ee4\u65f6", "PEST",
+ "\u79D8\u9C81\u65F6\u95F4", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"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\u590F\u4EE4\u65F6", "MeDT",
+ "\u6885\u7279\u62C9\u5361\u7279\u62C9\u65F6\u95F4", "MeT"}},
{"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"}},
+ "\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u590f\u4ee4\u65f6", "PMDT",
+ "\u76AE\u57C3\u5C14\u548C\u5BC6\u514B\u9686\u5C9B\u65F6\u95F4", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\u4e4c\u62c9\u572d\u65f6\u95f4", "UYT",
- "\u4e4c\u62c9\u572d\u590f\u4ee4\u65f6", "UYST"}},
+ "\u4e4c\u62c9\u572d\u590f\u4ee4\u65f6", "UYST",
+ "\u4E4C\u62C9\u572D\u65F6\u95F4", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\u82cf\u5229\u5357\u65f6\u95f4", "SRT",
- "\u82cf\u5229\u5357\u590f\u4ee4\u65f6", "SRST"}},
+ "\u82cf\u5229\u5357\u590f\u4ee4\u65f6", "SRST",
+ "\u82CF\u5229\u5357\u65F6\u95F4", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"\u6234\u7ef4\u65af\u65f6\u95f4", "DAVT",
- "\u6234\u7ef4\u65af\u590f\u4ee4\u65f6", "DAVST"}},
+ "\u6234\u7ef4\u65af\u590f\u4ee4\u65f6", "DAVST",
+ "\u6234\u7EF4\u65AF\u65F6\u95F4", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville \u65f6\u95f4", "DDUT",
- "Dumont-d'Urville \u590f\u4ee4\u65f6", "DDUST"}},
+ "Dumont-d'Urville \u590f\u4ee4\u65f6", "DDUST",
+ "Dumont-d'Urville \u65F6\u95F4", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4", "MIST",
- "\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6", "MIST"}},
+ "\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6", "MIST",
+ "\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4", "MIST"}},
{"Antarctica/Mawson", new String[] {"\u83ab\u68ee\u65f6\u95f4", "MAWT",
- "\u83ab\u68ee\u590f\u4ee4\u65f6", "MAWST"}},
+ "\u83ab\u68ee\u590f\u4ee4\u65f6", "MAWST",
+ "\u83AB\u68EE\u65F6\u95F4", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\u7f57\u745f\u62c9\u65f6\u95f4", "ROTT",
- "\u7f57\u745f\u62c9\u590f\u4ee4\u65f6", "ROTST"}},
+ "\u7f57\u745f\u62c9\u590f\u4ee4\u65f6", "ROTST",
+ "\u7F57\u745F\u62C9\u65F6\u95F4", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa \u65f6\u95f4", "SYOT",
- "Syowa \u590f\u4ee4\u65f6", "SYOST"}},
+ "Syowa \u590f\u4ee4\u65f6", "SYOST",
+ "Syowa \u65F6\u95F4", "SYOT"}},
{"Antarctica/Vostok", new String[] {"\u83ab\u65af\u6258\u514b\u65f6\u95f4", "VOST",
- "\u83ab\u65af\u6258\u514b\u590f\u4ee4\u65f6", "VOSST"}},
+ "\u83ab\u65af\u6258\u514b\u590f\u4ee4\u65f6", "VOSST",
+ "\u83AB\u65AF\u6258\u514B\u65F6\u95F4", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma-Ata \u65f6\u95f4", "ALMT",
- "Alma-Ata \u590f\u4ee4\u65f6", "ALMST"}},
+ "Alma-Ata \u590f\u4ee4\u65f6", "ALMST",
+ "Alma-Ata \u65F6\u95F4", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\u963f\u90a3\u5e95\u6cb3\u65f6\u95f4", "ANAT",
- "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u65f6", "ANAST"}},
+ "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u65f6", "ANAST",
+ "\u963F\u90A3\u5E95\u6CB3\u65F6\u95F4", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau \u65f6\u95f4", "AQTT",
- "Aqtau \u590f\u4ee4\u65f6", "AQTST"}},
+ "Aqtau \u590f\u4ee4\u65f6", "AQTST",
+ "Aqtau \u65F6\u95F4", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe \u65f6\u95f4", "AQTT",
- "Aqtobe \u590f\u4ee4\u65f6", "AQTST"}},
+ "Aqtobe \u590f\u4ee4\u65f6", "AQTST",
+ "Aqtobe \u65F6\u95F4", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\u4e9a\u585e\u62dc\u7136\u65f6\u95f4", "AZT",
- "\u4e9a\u585e\u62dc\u7136\u590f\u4ee4\u65f6", "AZST"}},
+ "\u4e9a\u585e\u62dc\u7136\u590f\u4ee4\u65f6", "AZST",
+ "\u4E9A\u585E\u62DC\u7136\u65F6\u95F4", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"\u5409\u5c14\u5409\u65af\u65af\u5766\u65f6\u95f4", "KGT",
- "\u5409\u5c14\u5409\u65af\u65af\u5766\u590f\u4ee4\u65f6", "KGST"}},
+ "\u5409\u5c14\u5409\u65af\u65af\u5766\u590f\u4ee4\u65f6", "KGST",
+ "\u5409\u5C14\u5409\u65AF\u65AF\u5766\u65F6\u95F4", "KGT"}},
{"Asia/Brunei", new String[] {"\u6587\u83b1\u65f6\u95f4", "BNT",
- "\u6587\u83b1\u590f\u4ee4\u65f6", "BNST"}},
+ "\u6587\u83b1\u590f\u4ee4\u65f6", "BNST",
+ "\u6587\u83B1\u65F6\u95F4", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan \u65f6\u95f4", "CHOT",
- "Choibalsan \u590f\u4ee4\u65f6", "CHOST"}},
+ "Choibalsan \u590f\u4ee4\u65f6", "CHOST",
+ "Choibalsan \u65F6\u95F4", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\u4e1c\u5e1d\u6c76\u65f6\u95f4", "TLT",
- "\u4e1c\u5e1d\u6c76\u590f\u4ee4\u65f6", "TLST"}},
+ "\u4e1c\u5e1d\u6c76\u590f\u4ee4\u65f6", "TLST",
+ "\u4E1C\u5E1D\u6C76\u65F6\u95F4", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\u5854\u5409\u514b\u65af\u5766\u65f6\u95f4", "TJT",
- "\u5854\u5409\u514b\u65af\u5766\u590f\u4ee4\u65f6", "TJST"}},
+ "\u5854\u5409\u514b\u65af\u5766\u590f\u4ee4\u65f6", "TJST",
+ "\u5854\u5409\u514B\u65AF\u5766\u65F6\u95F4", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"\u79d1\u5e03\u591a\u65f6\u95f4", "HOVT",
- "\u79d1\u5e03\u591a\u590f\u4ee4\u65f6", "HOVST"}},
+ "\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\u590f\u4ee4\u65f6", "IRKST",
+ "\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WIT",
- "\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "EIST"}},
+ "\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "EIST",
+ "\u4E1C\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WIT"}},
{"Asia/Kabul", new String[] {"\u963f\u5bcc\u6c57\u65f6\u95f4", "AFT",
- "\u963f\u5bcc\u6c57\u590f\u4ee4\u65f6", "AFST"}},
+ "\u963f\u5bcc\u6c57\u590f\u4ee4\u65f6", "AFST",
+ "\u963F\u5BCC\u6C57\u65F6\u95F4", "AFT"}},
{"Asia/Kamchatka", new String[] {"\u5f7c\u5f97\u7f57\u5df4\u752b\u6d1b\u592b\u65af\u514b\u65f6\u95f4", "PETT",
- "\u5f7c\u5f97\u7f57\u5df4\u752b\u6d1b\u592b\u65af\u514b\u590f\u4ee4\u65f6", "PETST"}},
+ "\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/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\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\u590f\u4ee4\u65f6", "KRAST",
+ "\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadan \u65f6\u95f4", "MAGT",
- "Magadan \u590f\u4ee4\u65f6", "MAGST"}},
+ "Magadan \u590f\u4ee4\u65f6", "MAGST",
+ "Magadan \u65F6\u95F4", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\u83f2\u5f8b\u5bbe\u65f6\u95f4", "PHT",
- "\u83f2\u5f8b\u5bbe\u590f\u4ee4\u65f6", "PHST"}},
+ "\u83f2\u5f8b\u5bbe\u590f\u4ee4\u65f6", "PHST",
+ "\u83F2\u5F8B\u5BBE\u65F6\u95F4", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral \u65f6\u95f4", "ORAT",
- "Oral \u590f\u4ee4\u65f6", "ORAST"}},
+ "Oral \u590f\u4ee4\u65f6", "ORAST",
+ "Oral \u65F6\u95F4", "ORAT"}},
{"Asia/Omsk", new String[] {"\u9102\u6728\u65af\u514b\u65f6\u95f4", "OMST",
- "\u9102\u6728\u65af\u514b\u590f\u4ee4\u65f6", "OMSST"}},
+ "\u9102\u6728\u65af\u514b\u590f\u4ee4\u65f6", "OMSST",
+ "\u9102\u6728\u65AF\u514B\u65F6\u95F4", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda \u65f6\u95f4", "QYZT",
- "Qyzylorda \u590f\u4ee4\u65f6", "QYZST"}},
+ "Qyzylorda \u590f\u4ee4\u65f6", "QYZST",
+ "Qyzylorda \u65F6\u95F4", "QYZT"}},
{"Asia/Rangoon", new String[] {"\u7f05\u7538\u65f6\u95f4", "MMT",
- "\u7f05\u7538\u590f\u4ee4\u65f6", "MMST"}},
+ "\u7f05\u7538\u590f\u4ee4\u65f6", "MMST",
+ "\u7F05\u7538\u65F6\u95F4", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\u5e93\u9875\u5c9b\u65f6\u95f4", "SAKT",
- "\u5e93\u9875\u5c9b\u590f\u4ee4\u65f6", "SAKST"}},
+ "\u5e93\u9875\u5c9b\u590f\u4ee4\u65f6", "SAKST",
+ "\u5E93\u9875\u5C9B\u65F6\u95F4", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\u4e54\u6cbb\u4e9a\u65f6\u95f4", "GET",
- "\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GEST"}},
+ "\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GEST",
+ "\u4E54\u6CBB\u4E9A\u65F6\u95F4", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"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\u590F\u4EE4\u65F6", "VLAST",
+ "\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\u6d77\u53c2\u5d34\u65f6\u95f4", "VLAT",
- "\u6d77\u53c2\u5d34\u590f\u4ee4\u65f6", "VLAST"}},
+ "\u6d77\u53c2\u5d34\u590f\u4ee4\u65f6", "VLAST",
+ "\u6D77\u53C2\u5D34\u65F6\u95F4", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\u4e9a\u5e93\u6b21\u514b\u65f6\u95f4", "YAKT",
- "\u4e9a\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "YAKST"}},
+ "\u4e9a\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "YAKST",
+ "\u4E9A\u5E93\u6B21\u514B\u65F6\u95F4", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Yekaterinburg \u65f6\u95f4", "YEKT",
- "Yekaterinburg \u590f\u4ee4\u65f6", "YEKST"}},
+ "Yekaterinburg \u590f\u4ee4\u65f6", "YEKST",
+ "Yekaterinburg \u65F6\u95F4", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\u4e9a\u901f\u5c14\u7fa4\u5c9b\u65f6\u95f4", "AZOT",
- "\u4e9a\u901f\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "AZOST"}},
+ "\u4e9a\u901f\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "AZOST",
+ "\u4E9A\u901F\u5C14\u7FA4\u5C9B\u65F6\u95F4", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\u4f5b\u5fb7\u89d2\u65f6\u95f4", "CVT",
- "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u65f6", "CVST"}},
+ "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u65f6", "CVST",
+ "\u4F5B\u5FB7\u89D2\u65F6\u95F4", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\u5357\u4e54\u6cbb\u4e9a\u6807\u51c6\u65f6\u95f4", "GST",
- "\u5357\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GDT"}},
+ "\u5357\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GDT",
+ "\u5357\u4E54\u6CBB\u4E9A\u5C9B\u65F6\u95F4", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\u798f\u514b\u5170\u7fa4\u5c9b\u65f6\u95f4", "FKT",
- "\u798f\u514b\u5170\u7fa4\u5c9b\u590f\u4ee4\u65f6", "FKST"}},
+ "\u798f\u514b\u5170\u7fa4\u5c9b\u590f\u4ee4\u65f6", "FKST",
+ "\u798F\u514B\u5170\u7FA4\u5C9B\u65F6\u95F4", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"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\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "CWST",
+ "\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\u6c99\u9a6c\u62c9\u65f6\u95f4", "SAMT",
- "\u6c99\u9a6c\u62c9\u590f\u4ee4\u65f6", "SAMST"}},
+ "\u6c99\u9a6c\u62c9\u590f\u4ee4\u65f6", "SAMST",
+ "\u6C99\u9A6C\u62C9\u65F6\u95F4", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"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\u590f\u4ee4\u65f6", "VOLST",
+ "\u4F0F\u5C14\u52A0\u683C\u52D2\u65F6\u95F4", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\u5370\u5ea6\u6d0b\u5730\u5e26\u65f6\u95f4", "IOT",
- "\u5370\u5ea6\u6d0b\u5730\u5e26\u590f\u4ee4\u65f6", "IOST"}},
+ "\u5370\u5ea6\u6d0b\u5730\u5e26\u590f\u4ee4\u65f6", "IOST",
+ "\u5370\u5EA6\u6D0B\u5730\u5E26\u65F6\u95F4", "IOT"}},
{"Indian/Christmas", new String[] {"\u5723\u8bde\u5c9b\u65f6\u95f4", "CXT",
- "\u5723\u8bde\u5c9b\u590f\u4ee4\u65f6", "CXST"}},
+ "\u5723\u8bde\u5c9b\u590f\u4ee4\u65f6", "CXST",
+ "\u5723\u8BDE\u5C9B\u65F6\u95F4", "CIT"}},
{"Indian/Cocos", new String[] {"\u53ef\u53ef\u65af\u7fa4\u5c9b\u65f6\u95f4", "CCT",
- "\u53ef\u53ef\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CCST"}},
+ "\u53ef\u53ef\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CCST",
+ "\u53EF\u53EF\u65AF\u7FA4\u5C9B\u65F6\u95F4", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\u6cd5\u5c5e\u5357\u6781\u65f6\u95f4", "TFT",
- "\u6cd5\u5c5e\u5357\u6781\u590f\u4ee4\u65f6", "TFST"}},
+ "\u6cd5\u5c5e\u5357\u6781\u590f\u4ee4\u65f6", "TFST",
+ "\u6CD5\u5C5E\u5357\u6781\u65F6\u95F4", "TFT"}},
{"Indian/Mahe", new String[] {"\u585e\u5e2d\u5c14\u7fa4\u5c9b\u65f6\u95f4", "SCT",
- "\u585e\u5e2d\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SCST"}},
+ "\u585e\u5e2d\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SCST",
+ "\u585E\u5E2D\u5C14\u7FA4\u5C9B\u65F6\u95F4", "SCT"}},
{"Indian/Maldives", new String[] {"\u9a6c\u5c14\u4ee3\u592b\u65f6\u95f4", "MVT",
- "\u9a6c\u5c14\u4ee3\u592b\u590f\u4ee4\u65f6", "MVST"}},
+ "\u9a6c\u5c14\u4ee3\u592b\u590f\u4ee4\u65f6", "MVST",
+ "\u9A6C\u5C14\u4EE3\u592B\u65F6\u95F4", "MVT"}},
{"Indian/Mauritius", new String[] {"\u6469\u91cc\u897f\u65af\u65f6\u95f4", "MUT",
- "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u65f6", "MUST"}},
+ "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u65f6", "MUST",
+ "\u6469\u91CC\u897F\u65AF\u65F6\u95F4", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\u7559\u5c3c\u65fa\u5c9b\u65f6\u95f4", "RET",
- "\u7559\u5c3c\u65fa\u5c9b\u590f\u4ee4\u65f6", "REST"}},
+ "\u7559\u5c3c\u65fa\u5c9b\u590f\u4ee4\u65f6", "REST",
+ "\u7559\u5C3C\u65FA\u5C9B\u65F6\u95F4", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\u4e2d\u6b27\u65f6\u95f4", "MET",
- "\u4e2d\u6b27\u590f\u4ee4\u65f6", "MEST"}},
+ "\u4e2d\u6b27\u590f\u4ee4\u65f6", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\u74e6\u5974\u963f\u56fe\u65f6\u95f4", "VUT",
- "\u74e6\u5974\u963f\u56fe\u590f\u4ee4\u65f6", "VUST"}},
+ "\u74e6\u5974\u963f\u56fe\u590f\u4ee4\u65f6", "VUST",
+ "\u74E6\u5974\u963F\u56FE\u65F6\u95F4", "VUT"}},
{"Pacific/Enderbury", new String[] {"\u83f2\u5c3c\u514b\u65af\u7fa4\u5c9b\u65f6\u95f4", "PHOT",
- "\u83f2\u5c3c\u514b\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "PHOST"}},
+ "\u83f2\u5c3c\u514b\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "PHOST",
+ "\u83F2\u5C3C\u514B\u65AF\u7FA4\u5C9B\u65F6\u95F4", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\u6258\u514b\u52b3\u7fa4\u5c9b\u65f6\u95f4", "TKT",
- "\u6258\u514b\u52b3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "TKST"}},
+ "\u6258\u514b\u52b3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "TKST",
+ "\u6258\u514B\u52B3\u7FA4\u5C9B\u65F6\u95F4", "TKT"}},
{"Pacific/Fiji", new String[] {"\u6590\u6d4e\u65f6\u95f4", "FJT",
- "\u6590\u6d4e\u590f\u4ee4\u65f6", "FJST"}},
+ "\u6590\u6d4e\u590f\u4ee4\u65f6", "FJST",
+ "\u6590\u6D4E\u65F6\u95F4", "FJT"}},
{"Pacific/Funafuti", new String[] {"\u5410\u9c81\u74e6\u65f6\u95f4", "TVT",
- "\u5410\u9c81\u74e6\u590f\u4ee4\u65f6", "TVST"}},
+ "\u5410\u9c81\u74e6\u590f\u4ee4\u65f6", "TVST",
+ "\u5410\u9C81\u74E6\u65F6\u95F4", "TVT"}},
{"Pacific/Galapagos", new String[] {"\u52a0\u62c9\u5df4\u54e5\u65f6\u95f4", "GALT",
- "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u65f6", "GALST"}},
+ "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u65f6", "GALST",
+ "\u52A0\u62C9\u5DF4\u54E5\u65F6\u95F4", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line \u5c9b\u65f6\u95f4", "LINT",
- "Line \u5c9b\u590f\u4ee4\u65f6", "LINST"}},
+ "Line \u5c9b\u590f\u4ee4\u65f6", "LINST",
+ "Line \u5C9B\u65F6\u95F4", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae \u65f6\u95f4", "KOST",
- "Kosrae \u590f\u4ee4\u65f6", "KOSST"}},
+ "Kosrae \u590f\u4ee4\u65f6", "KOSST",
+ "Kosrae \u65F6\u95F4", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\u9a6c\u514b\u8428\u65af\u65f6\u95f4", "MART",
- "\u9a6c\u514b\u8428\u65af\u590f\u4ee4\u65f6", "MARST"}},
+ "\u9a6c\u514b\u8428\u65af\u590f\u4ee4\u65f6", "MARST",
+ "\u9A6C\u514B\u8428\u65AF\u65F6\u95F4", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\u8bfa\u9c81\u65f6\u95f4", "NRT",
- "\u8bfa\u9c81\u590f\u4ee4\u65f6", "NRST"}},
+ "\u8bfa\u9c81\u590f\u4ee4\u65f6", "NRST",
+ "\u8BFA\u9C81\u65F6\u95F4", "NRT"}},
{"Pacific/Niue", new String[] {"\u7ebd\u5a01\u5c9b\u65f6\u95f4", "NUT",
- "\u7ebd\u5a01\u5c9b\u590f\u4ee4\u65f6", "NUST"}},
+ "\u7ebd\u5a01\u5c9b\u590f\u4ee4\u65f6", "NUST",
+ "\u7EBD\u5A01\u5C9B\u65F6\u95F4", "NUT"}},
{"Pacific/Norfolk", new String[] {"\u8bfa\u798f\u514b\u65f6\u95f4", "NFT",
- "\u8bfa\u798f\u514b\u590f\u4ee4\u65f6", "NFST"}},
+ "\u8bfa\u798f\u514b\u590f\u4ee4\u65f6", "NFST",
+ "\u8BFA\u798F\u514B\u65F6\u95F4", "NFT"}},
{"Pacific/Noumea", new String[] {"\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9a\u65f6\u95f4", "NCT",
- "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9a\u590f\u4ee4\u65f6", "NCST"}},
+ "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9a\u590f\u4ee4\u65f6", "NCST",
+ "\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9A\u65F6\u95F4", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\u5e1b\u7409\u65f6\u95f4", "PWT",
- "\u5e1b\u7409\u590f\u4ee4\u65f6", "PWST"}},
+ "\u5e1b\u7409\u590f\u4ee4\u65f6", "PWST",
+ "\u5E1B\u7409\u65F6\u95F4", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u65f6\u95f4", "PGT",
- "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u590f\u4ee4\u65f6", "PGST"}},
+ "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u590f\u4ee4\u65f6", "PGST",
+ "\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u65F6\u95F4", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\u5e93\u514b\u7fa4\u5c9b\u65f6\u95f4", "CKT",
- "\u5e93\u514b\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CKHST"}},
+ "\u5e93\u514b\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CKHST",
+ "\u5E93\u514B\u7FA4\u5C9B\u65F6\u95F4", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\u5927\u6eaa\u5730\u5c9b\u65f6\u95f4", "TAHT",
- "\u5927\u6eaa\u5730\u5c9b\u590f\u4ee4\u65f6", "TAHST"}},
+ "\u5927\u6eaa\u5730\u5c9b\u590f\u4ee4\u65f6", "TAHST",
+ "\u5927\u6EAA\u5730\u5C9B\u65F6\u95F4", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\u5409\u4f2f\u7279\u7fa4\u5c9b\u65f6\u95f4", "GILT",
- "\u5409\u4f2f\u7279\u7fa4\u5c9b\u590f\u4ee4\u65f6", "GILST"}},
+ "\u5409\u4f2f\u7279\u7fa4\u5c9b\u590f\u4ee4\u65f6", "GILST",
+ "\u5409\u4F2F\u7279\u7FA4\u5C9B\u65F6\u95F4", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\u4e1c\u52a0\u65f6\u95f4", "TOT",
- "\u4e1c\u52a0\u590f\u4ee4\u65f6", "TOST"}},
+ "\u4e1c\u52a0\u590f\u4ee4\u65f6", "TOST",
+ "\u4E1C\u52A0\u65F6\u95F4", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\u5a01\u514b\u65f6\u95f4", "WAKT",
- "\u5a01\u514b\u590f\u4ee4\u65f6", "WAKST"}},
+ "\u5a01\u514b\u590f\u4ee4\u65f6", "WAKST",
+ "\u5A01\u514B\u65F6\u95F4", "WAKT"}},
{"Pacific/Wallis", new String[] {"\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u65f6\u95f4", "WFT",
- "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "WFST"}},
+ "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "WFST",
+ "\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7EB3\u7FA4\u5C9B\u65F6\u95F4", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Tue Jan 28 11:21:43 2014 -0800
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre \u6642\u9593", "ACT",
- "Acre \u590f\u4ee4\u6642\u9593", "ACST"};
+ "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\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)", "CST",
+ "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "CT"};
String AGT[] = new String[] {"\u963f\u6839\u5ef7\u6642\u9593", "ART",
- "\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "ARST"};
+ "\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "ARST",
+ "\u963F\u6839\u5EF7\u6642\u9593", "ART"};
String AKST[] = new String[] {"\u963f\u62c9\u65af\u52a0\u6a19\u6e96\u6642\u9593", "AKST",
- "\u963f\u62c9\u65af\u52a0\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "AKDT"};
+ "\u963f\u62c9\u65af\u52a0\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "AKDT",
+ "\u963F\u62C9\u65AF\u52A0\u6642\u9593", "AKT"};
String AMT[] = new String[] {"\u4e9e\u99ac\u905c\u6642\u9593", "AMT",
- "\u4e9e\u99ac\u905c\u590f\u4ee4\u6642\u9593", "AMST"};
+ "\u4e9e\u99ac\u905c\u590f\u4ee4\u6642\u9593", "AMST",
+ "\u4E9E\u99AC\u905C\u6642\u9593", "AMT"};
String ARAST[] = new String[] {"\u963f\u62c9\u4f2f\u6a19\u6e96\u6642\u9593", "AST",
- "\u963f\u62c9\u4f2f\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT"};
+ "\u963f\u62c9\u4f2f\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT",
+ "\u963F\u62C9\u4F2F\u6642\u9593", "AT"};
String ARMT[] = new String[] {"\u4e9e\u7f8e\u5c3c\u4e9e\u6642\u9593", "AMT",
- "\u4e9e\u7f8e\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "AMST"};
+ "\u4e9e\u7f8e\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "AMST",
+ "\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593", "AMT"};
String AST[] = new String[] {"\u5927\u897f\u6d0b\u6a19\u6e96\u6642\u9593", "AST",
- "\u5927\u897f\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT"};
+ "\u5927\u897f\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT",
+ "\u5927\u897F\u6D0B\u6642\u9593", "AT"};
String BDT[] = new String[] {"\u5b5f\u52a0\u62c9\u6642\u9593", "BDT",
- "\u5b5f\u52a0\u62c9\u590f\u4ee4\u6642\u9593", "BDST"};
+ "\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\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\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 BRT[] = new String[] {"\u5df4\u897f\u5229\u4e9e\u6642\u9593", "BRT",
- "\u5df4\u897f\u5229\u4e9e\u590f\u4ee4\u6642\u9593", "BRST"};
+ "\u5df4\u897f\u5229\u4e9e\u590f\u4ee4\u6642\u9593", "BRST",
+ "\u5DF4\u897F\u5229\u4E9E\u6642\u9593", "BRT"};
String BTT[] = new String[] {"\u4e0d\u4e39\u6642\u9593", "BTT",
- "\u4e0d\u4e39\u590f\u4ee4\u6642\u9593", "BTST"};
+ "\u4e0d\u4e39\u590f\u4ee4\u6642\u9593", "BTST",
+ "\u4E0D\u4E39\u6642\u9593", "BTT"};
String CAT[] = new String[] {"\u4e2d\u975e\u6642\u9593", "CAT",
- "\u4e2d\u975e\u590f\u4ee4\u6642\u9593", "CAST"};
+ "\u4e2d\u975e\u590f\u4ee4\u6642\u9593", "CAST",
+ "\u4E2D\u975E\u6642\u9593", "CAT"};
String CET[] = new String[] {"\u4e2d\u6b50\u6642\u9593", "CET",
- "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST"};
+ "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST",
+ "\u4E2D\u6B50\u6642\u9593", "CET"};
String CHAST[] = new String[] {"\u67e5\u5766\u6a19\u6e96\u6642\u9593", "CHAST",
- "\u67e5\u5766\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CHADT"};
+ "\u67e5\u5766\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CHADT",
+ "\u67E5\u5766\u6642\u9593", "CHAT"};
String CHUT[] = new String[] {"\u695A\u514B\u6642\u9593", "CHUT",
- "\u695A\u514B\u590F\u4EE4\u6642\u9593", "CHUST"};
+ "\u695A\u514B\u590F\u4EE4\u6642\u9593", "CHUST",
+ "\u695A\u514B\u6642\u9593", "CHUT"};
String CIT[] = new String[] {"\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "WITA",
- "\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "CIST"};
+ "\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "CIST",
+ "\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593", "WITA"};
String CLT[] = new String[] {"\u667a\u5229\u6642\u9593", "CLT",
- "\u667a\u5229\u590f\u4ee4\u6642\u9593", "CLST"};
+ "\u667a\u5229\u590f\u4ee4\u6642\u9593", "CLST",
+ "\u667A\u5229\u6642\u9593", "CLT"};
String CST[] = new String[] {"\u4e2d\u592e\u6a19\u6e96\u6642\u9593", "CST",
- "\u4e2d\u592e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+ "\u4e2d\u592e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT",
+ "\u7F8E\u570B\u4E2D\u90E8\u6642\u9593", "CT"};
String CTT[] = new String[] {"\u4e2d\u570b\u6a19\u6e96\u6642\u9593", "CST",
- "\u4e2d\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+ "\u4e2d\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT",
+ "\u4E2D\u570B\u6642\u9593", "CT"};
String CUBA[] = new String[] {"\u53e4\u5df4\u6a19\u6e96\u6642\u9593", "CST",
- "\u53e4\u5df4\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+ "\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"};
+ "\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 DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
- "\u611b\u723e\u862d\u590f\u4ee4\u6642\u9593", "IST"};
+ "\u611b\u723e\u862d\u590f\u4ee4\u6642\u9593", "IST",
+ "\u611B\u723E\u862D\u6587\u6642\u9593", "IT"};
String EAT[] = new String[] {"\u6771\u975e\u6642\u9593", "EAT",
- "\u6771\u975e\u590f\u4ee4\u6642\u9593", "EAST"};
+ "\u6771\u975e\u590f\u4ee4\u6642\u9593", "EAST",
+ "\u6771\u975E\u6642\u9593", "EAT"};
String EASTER[] = new String[] {"\u5fa9\u6d3b\u5cf6\u6642\u9593", "EAST",
- "\u5fa9\u6d3b\u5cf6\u590f\u4ee4\u6642\u9593", "EASST"};
+ "\u5fa9\u6d3b\u5cf6\u590f\u4ee4\u6642\u9593", "EASST",
+ "\u5FA9\u6D3B\u5CF6\u6642\u9593", "EAST"};
String EET[] = new String[] {"\u6771\u6b50\u6642\u9593", "EET",
- "\u6771\u6b50\u590f\u4ee4\u6642\u9593", "EEST"};
+ "\u6771\u6b50\u590f\u4ee4\u6642\u9593", "EEST",
+ "\u6771\u6b50\u6642\u9593", "EET"};
String EGT[] = new String[] {"\u6771\u683c\u6797\u5cf6\u6642\u9593", "EGT",
- "\u6771\u683c\u6797\u5cf6\u590f\u4ee4\u6642\u9593", "EGST"};
+ "\u6771\u683c\u6797\u5cf6\u590f\u4ee4\u6642\u9593", "EGST",
+ "\u6771\u683C\u9675\u862D\u6642\u9593", "EGT"};
String EST[] = new String[] {"\u6771\u65b9\u6a19\u6e96\u6642\u9593", "EST",
- "\u6771\u65b9\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "EDT"};
+ "\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\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "EST",
+ "\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "ET"};
String FET[] = new String[] {"\u6771\u6B50\u5167\u9678\u6642\u9593", "FET",
- "\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593", "FEST"};
+ "\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593", "FEST",
+ "\u6771\u6B50\u5167\u9678\u6642\u9593", "FET"};
String GHMT[] = new String[] {"\u8fe6\u7d0d\u5e73\u5747\u6642\u9593", "GMT",
- "\u8fe6\u7d0d\u590f\u4ee4\u6642\u9593", "GHST"};
+ "\u8fe6\u7d0d\u590f\u4ee4\u6642\u9593", "GHST",
+ "\u8FE6\u7D0D\u6642\u9593", "GMT"};
String GAMBIER[] = new String[] {"\u7518\u6bd4\u723e\u6642\u9593", "GAMT",
- "\u7518\u6bd4\u723e\u590f\u4ee4\u6642\u9593", "GAMST"};
+ "\u7518\u6bd4\u723e\u590f\u4ee4\u6642\u9593", "GAMST",
+ "\u7518\u6BD4\u723E\u6642\u9593", "GAMT"};
String GMT[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u6642\u9593", "GMT",
- "\u683c\u6797\u5a01\u6cbb\u6642\u9593", "GMT"};
+ "\u683c\u6797\u5a01\u6cbb\u6642\u9593", "GMT",
+ "\u683C\u6797\u5A01\u6CBB\u6642\u9593", "GMT"};
String GMTBST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
- "\u82f1\u570b\u590f\u4ee4\u6642\u9593", "BST"};
+ "\u82f1\u570b\u590f\u4ee4\u6642\u9593", "BST",
+ "\u82F1\u570B\u6642\u9593", "BT"};
String GST[] = new String[] {"\u6ce2\u65af\u7063\u6a19\u6e96\u6642\u9593", "GST",
- "\u6ce2\u65af\u7063\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT"};
+ "\u6ce2\u65af\u7063\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT",
+ "\u6CE2\u65AF\u7063\u6642\u9593", "GT"};
String HAST[] = new String[] {"\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u6a19\u6e96\u6642\u9593", "HAST",
- "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HADT"};
+ "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HADT",
+ "\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593", "HAT"};
String HKT[] = new String[] {"\u9999\u6e2f\u6642\u9593", "HKT",
- "\u9999\u6e2f\u590f\u4ee4\u6642\u9593", "HKST"};
+ "\u9999\u6e2f\u590f\u4ee4\u6642\u9593", "HKST",
+ "\u9999\u6E2F\u6642\u9593", "HKT"};
String HST[] = new String[] {"\u590f\u5a01\u5937\u6a19\u6e96\u6642\u9593", "HST",
- "\u590f\u5a01\u5937\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HDT"};
+ "\u590f\u5a01\u5937\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HDT",
+ "\u590F\u5A01\u5937\u6642\u9593", "HT"};
String ICT[] = new String[] {"\u5370\u5ea6\u652f\u90a3\u6642\u9593", "ICT",
- "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u6642\u9593", "ICST"};
+ "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u6642\u9593", "ICST",
+ "\u5370\u5EA6\u652F\u90A3\u6642\u9593", "ICT"};
String IRT[] = new String[] {"\u4f0a\u6717\u6a19\u6e96\u6642\u9593", "IRST",
- "\u4f0a\u6717\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IRDT"};
+ "\u4f0a\u6717\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IRDT",
+ "\u4F0A\u6717\u6642\u9593", "IRT"};
String ISRAEL[] = new String[] {"\u4ee5\u8272\u5217\u6a19\u6e96\u6642\u9593", "IST",
- "\u4ee5\u8272\u5217\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT"};
+ "\u4ee5\u8272\u5217\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT",
+ "\u4EE5\u8272\u5217\u6642\u9593", "IT"};
String IST[] = new String[] {"\u5370\u5ea6\u6a19\u6e96\u6642\u9593", "IST",
- "\u5370\u5ea6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT"};
+ "\u5370\u5ea6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT",
+ "\u5370\u5EA6\u6642\u9593", "IT"};
String JST[] = new String[] {"\u65e5\u672c\u6a19\u6e96\u6642\u9593", "JST",
- "\u65e5\u672c\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "JDT"};
+ "\u65e5\u672c\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "JDT",
+ "\u65E5\u672C\u6642\u9593", "JT"};
String KST[] = new String[] {"\u97d3\u570b\u6a19\u6e96\u6642\u9593", "KST",
- "\u97d3\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "KDT"};
+ "\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", "LHST",
+ "\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"};
+ "\u99ac\u7d39\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "MHST",
+ "\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593", "MHT"};
String MSK[] = new String[] {"\u83ab\u65af\u79d1\u6a19\u6e96\u6642\u9593", "MSK",
- "\u83ab\u65af\u79d1\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MSD"};
+ "\u83ab\u65af\u79d1\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MSD",
+ "\u83AB\u65AF\u79D1\u6642\u9593", "MT"};
String MST[] = new String[] {"\u5c71\u5340\u6a19\u6e96\u6642\u9593", "MST",
- "\u5c71\u5340\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MDT"};
+ "\u5c71\u5340\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MDT",
+ "\u7F8E\u570B\u5C71\u5340\u6642\u9593", "MT"};
String MYT[] = new String[] {"\u99ac\u4f86\u897f\u4e9e\u6642\u9593", "MYT",
- "\u99ac\u4f86\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "MYST"};
+ "\u99ac\u4f86\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "MYST",
+ "\u99AC\u4F86\u897F\u4E9E\u6642\u9593", "MYT"};
String NORONHA[] = new String[] {"\u8cbb\u723e\u5357\u591a-\u8fea\u8afe\u7f85\u5c3c\u4e9e\u6642\u9593", "FNT",
- "\u8cbb\u723e\u5357\u591a-\u8fea\u8afe\u7f85\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "FNST"};
+ "\u8cbb\u723e\u5357\u591a-\u8fea\u8afe\u7f85\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "FNST",
+ "\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593", "FNT"};
String NOVT[] = new String[] {"Novosibirsk \u6642\u9593", "NOVT",
- "Novosibirsk \u590f\u4ee4\u6642\u9593", "NOVST"};
+ "Novosibirsk \u590f\u4ee4\u6642\u9593", "NOVST",
+ "\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593", "NOVT"};
String NPT[] = new String[] {"\u5c3c\u6cca\u723e\u6642\u9593", "NPT",
- "\u5c3c\u6cca\u723e\u590f\u4ee4\u6642\u9593", "NPST"};
+ "\u5c3c\u6cca\u723e\u590f\u4ee4\u6642\u9593", "NPST",
+ "\u5C3C\u6CCA\u723E\u6642\u9593", "NPT"};
String NST[] = new String[] {"\u7d10\u82ac\u862d\u6a19\u6e96\u6642\u9593", "NST",
- "\u7d10\u82ac\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NDT"};
+ "\u7d10\u82ac\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NDT",
+ "\u7D10\u82AC\u862D\u6642\u9593", "NT"};
String NZST[] = new String[] {"\u7d10\u897f\u862d\u6a19\u6e96\u6642\u9593", "NZST",
- "\u7d10\u897f\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NZDT"};
+ "\u7d10\u897f\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NZDT",
+ "\u7D10\u897F\u862D\u6642\u9593", "NZT"};
String PITCAIRN[] = new String[] {"\u76ae\u7279\u5eb7\u6a19\u6e96\u6642\u9593", "PST",
- "\u76ae\u7279\u5eb7\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+ "\u76ae\u7279\u5eb7\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT",
+ "\u76AE\u7279\u5EB7\u6642\u9593", "PT"};
String PKT[] = new String[] {"\u5df4\u57fa\u65af\u5766\u6642\u9593", "PKT",
- "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u6642\u9593", "PKST"};
+ "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u6642\u9593", "PKST",
+ "\u5DF4\u57FA\u65AF\u5766\u6642\u9593", "PKT"};
String PONT[] = new String[] {"\u6CE2\u7D0D\u4F69\u6642\u9593", "PONT",
- "\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593", "PONST"};
+ "\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593", "PONST",
+ "\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593", "PONT"};
String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642\u9593", "PST",
- "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+ "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT",
+ "\u592A\u5E73\u6D0B\u6642\u9593", "PT"};
String SAST[] = new String[] {"\u5357\u975e\u6a19\u6e96\u6642\u9593", "SAST",
- "\u5357\u975e\u590f\u4ee4\u6642\u9593", "SAST"};
+ "\u5357\u975e\u590f\u4ee4\u6642\u9593", "SAST",
+ "\u5357\u975E\u6642\u9593", "SAT"};
String SBT[] = new String[] {"\u6240\u7f85\u9580\u7fa4\u5cf6\u6642\u9593", "SBT",
- "\u6240\u7f85\u9580\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SBST"};
+ "\u6240\u7f85\u9580\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SBST",
+ "\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593", "SBT"};
String SGT[] = new String[] {"\u65b0\u52a0\u5761\u6642\u9593", "SGT",
- "\u65b0\u52a0\u5761\u590f\u4ee4\u6642\u9593", "SGST"};
+ "\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\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"};
+ "\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 TMT[] = new String[] {"\u571f\u5eab\u66fc\u6642\u9593", "TMT",
- "\u571f\u5eab\u66fc\u590f\u4ee4\u6642\u9593", "TMST"};
+ "\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\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\u590f\u4ee4\u6642\u9593", "WAST",
+ "\u897F\u975E\u6642\u9593", "WAT"};
String WET[] = new String[] {"\u897f\u6b50\u6642\u9593", "WET",
- "\u897f\u6b50\u590f\u4ee4\u6642\u9593", "WEST"};
+ "\u897f\u6b50\u590f\u4ee4\u6642\u9593", "WEST",
+ "\u897F\u6B50\u6642\u9593", "WET"};
String WIT[] = new String[] {"\u897f\u5370\u5c3c\u6642\u9593", "WIB",
- "\u897f\u5370\u5c3c\u590f\u4ee4\u6642\u9593", "WIST"};
+ "\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\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WST",
+ "\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WT"};
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\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",
- "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSDT"};
+ "\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\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\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "EST",
+ "\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)", "ET"};
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",
+ "\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\u590f\u4ee4\u6642\u9593", "UZST",
+ "\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\u5df4\u62c9\u572d\u6642\u9593", "PYT",
- "\u5df4\u62c9\u572d\u590f\u4ee4\u6642\u9593", "PYST"}},
+ "\u5df4\u62c9\u572d\u590f\u4ee4\u6642\u9593", "PYST",
+ "\u5DF4\u62C9\u572D\u6642\u9593", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\u54e5\u502b\u6bd4\u4e9e\u6642\u9593", "COT",
- "\u54e5\u502b\u6bd4\u4e9e\u590f\u4ee4\u6642\u9593", "COST"}},
+ "\u54e5\u502b\u6bd4\u4e9e\u590f\u4ee4\u6642\u9593", "COST",
+ "\u54E5\u502B\u6BD4\u4E9E\u6642\u9593", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\u59d4\u5167\u745e\u62c9\u6642\u9593", "VET",
- "\u59d4\u5167\u745e\u62c9\u590f\u4ee4\u6642\u9593", "VEST"}},
+ "\u59d4\u5167\u745e\u62c9\u590f\u4ee4\u6642\u9593", "VEST",
+ "\u59D4\u5167\u745E\u62C9\u6642\u9593", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\u6cd5\u5c6c\u572d\u4e9e\u90a3\u6642\u9593", "GFT",
- "\u6cd5\u5c6c\u572d\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GFST"}},
+ "\u6cd5\u5c6c\u572d\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GFST",
+ "\u6CD5\u5C6C\u572D\u4E9E\u90A3\u6642\u9593", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u683c\u6797\u862d\u5cf6\u6642\u9593", "WGT",
- "\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST"}},
+ "\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/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\u5384\u74dc\u591a\u723e\u6642\u9593", "ECT",
- "\u5384\u74dc\u591a\u723e\u590f\u4ee4\u6642\u9593", "ECST"}},
+ "\u5384\u74dc\u591a\u723e\u590f\u4ee4\u6642\u9593", "ECST",
+ "\u5384\u74DC\u591A\u723E\u6642\u9593", "ECT"}},
{"America/Guyana", new String[] {"\u84cb\u4e9e\u90a3\u6642\u9593", "GYT",
- "\u84cb\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GYST"}},
+ "\u84cb\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GYST",
+ "\u84CB\u4E9E\u90A3\u6642\u9593", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\u73bb\u5229\u7dad\u4e9e\u6642\u9593", "BOT",
- "\u73bb\u5229\u7dad\u4e9e\u590f\u4ee4\u6642\u9593", "BOST"}},
+ "\u73bb\u5229\u7dad\u4e9e\u590f\u4ee4\u6642\u9593", "BOST",
+ "\u73BB\u5229\u7DAD\u4E9E\u6642\u9593", "BOT"}},
{"America/Lima", new String[] {"\u7955\u9b6f\u6642\u9593", "PET",
- "\u7955\u9b6f\u590f\u4ee4\u6642\u9593", "PEST"}},
+ "\u7955\u9b6f\u590f\u4ee4\u6642\u9593", "PEST",
+ "\u7955\u9B6F\u6642\u9593", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"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\u65E5\u5149\u7BC0\u7D04\u6642\u9593", "MeDT",
+ "\u6885\u7279\u62C9\u5361\u7279\u62C9\u6642\u9593", "MeT"}},
{"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"}},
+ "\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PMDT",
+ "\u8056\u5F7C\u5FB7\u8207\u5BC6\u555F\u5D19\u6642\u9593", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\u70cf\u62c9\u572d\u6642\u9593", "UYT",
- "\u70cf\u62c9\u572d\u590f\u4ee4\u6642\u9593", "UYST"}},
+ "\u70cf\u62c9\u572d\u590f\u4ee4\u6642\u9593", "UYST",
+ "\u70CF\u62C9\u572D\u6642\u9593", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\u8607\u5229\u5357\u6642\u9593", "SRT",
- "\u8607\u5229\u5357\u590f\u4ee4\u6642\u9593", "SRST"}},
+ "\u8607\u5229\u5357\u590f\u4ee4\u6642\u9593", "SRST",
+ "\u8607\u5229\u5357\u6642\u9593", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,124 +550,157 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"\u81fa\u7dad\u65af\u6642\u9593", "DAVT",
- "\u81fa\u7dad\u65af\u590f\u4ee4\u6642\u9593", "DAVST"}},
+ "\u81fa\u7dad\u65af\u590f\u4ee4\u6642\u9593", "DAVST",
+ "\u81FA\u7DAD\u65AF\u6642\u9593", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville \u6642\u9593", "DDUT",
- "Dumont-d'Urville \u590f\u4ee4\u6642\u9593", "DDUST"}},
+ "Dumont-d'Urville \u590f\u4ee4\u6642\u9593", "DDUST",
+ "Dumont-d'Urville \u6642\u9593", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\u9EA5\u5938\u5229\u5CF6\u6642\u9593", "MIST",
- "\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593", "MIST"}},
+ "\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593", "MIST",
+ "\u9EA5\u5938\u5229\u5CF6\u6642\u9593", "MIST"}},
{"Antarctica/Mawson", new String[] {"\u83ab\u68ee\u6642\u9593", "MAWT",
- "\u83ab\u68ee\u590f\u4ee4\u6642\u9593", "MAWST"}},
+ "\u83ab\u68ee\u590f\u4ee4\u6642\u9593", "MAWST",
+ "\u83AB\u68EE\u6642\u9593", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\u7f85\u897f\u62c9\u6642\u9593", "ROTT",
- "\u7f85\u897f\u62c9\u590f\u4ee4\u6642\u9593", "ROTST"}},
+ "\u7f85\u897f\u62c9\u590f\u4ee4\u6642\u9593", "ROTST",
+ "\u7F85\u897F\u62C9\u6642\u9593", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"\u5915\u6b50\u74e6 (Syowa) \u6642\u9593", "SYOT",
- "\u5915\u6b50\u74e6 (Syowa) \u590f\u4ee4\u6642\u9593", "SYOST"}},
+ "\u5915\u6b50\u74e6 (Syowa) \u590f\u4ee4\u6642\u9593", "SYOST",
+ "\u5915\u6B50\u74E6 (Syowa) \u6642\u9593", "SYOT"}},
{"Antarctica/Vostok", new String[] {"\u4f5b\u65af\u6258 (Vostok) \u6642\u9593", "VOST",
- "\u4f5b\u65af\u6258 (Vostok) \u590f\u4ee4\u6642\u9593", "VOSST"}},
+ "\u4f5b\u65af\u6258 (Vostok) \u590f\u4ee4\u6642\u9593", "VOSST",
+ "\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma-Ata \u6642\u9593", "ALMT",
- "Alma-Ata \u590f\u4ee4\u6642\u9593", "ALMST"}},
+ "Alma-Ata \u590f\u4ee4\u6642\u9593", "ALMST",
+ "\u963F\u62C9\u6728\u5716\u6642\u9593", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\u963f\u90a3\u5e95\u6cb3\u6642\u9593", "ANAT",
- "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u6642\u9593", "ANAST"}},
+ "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u6642\u9593", "ANAST",
+ "\u963F\u90A3\u5E95\u6CB3\u6642\u9593", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau \u6642\u9593", "AQTT",
- "Aqtau \u590f\u4ee4\u6642\u9593", "AQTST"}},
+ "Aqtau \u590f\u4ee4\u6642\u9593", "AQTST",
+ "\u963F\u514B\u5957\u6642\u9593", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe \u6642\u9593", "AQTT",
- "Aqtobe \u590f\u4ee4\u6642\u9593", "AQTST"}},
+ "Aqtobe \u590f\u4ee4\u6642\u9593", "AQTST",
+ "\u963F\u514B\u6258\u5225\u6642\u9593", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\u4e9e\u585e\u62dc\u7136\u6642\u9593", "AZT",
- "\u4e9e\u585e\u62dc\u7136\u590f\u4ee4\u6642\u9593", "AZST"}},
+ "\u4e9e\u585e\u62dc\u7136\u590f\u4ee4\u6642\u9593", "AZST",
+ "\u4E9E\u585E\u62DC\u7136\u6642\u9593", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Kirgizstan \u6642\u9593", "KGT",
- "Kirgizstan \u590f\u4ee4\u6642\u9593", "KGST"}},
+ "Kirgizstan \u590f\u4ee4\u6642\u9593", "KGST",
+ "\u5409\u723E\u5409\u65AF\u6642\u9593", "KGT"}},
{"Asia/Brunei", new String[] {"\u6c76\u840a\u6642\u9593", "BNT",
- "\u6c76\u840a\u590f\u4ee4\u6642\u9593", "BNST"}},
+ "\u6c76\u840a\u590f\u4ee4\u6642\u9593", "BNST",
+ "\u6C76\u840A\u6642\u9593", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"\u5de7\u5df4\u5c71 (Choibalsan) \u6642\u9593", "CHOT",
- "\u5de7\u5df4\u5c71 (Choibalsan) \u590f\u4ee4\u6642\u9593", "CHOST"}},
+ "\u5de7\u5df4\u5c71 (Choibalsan) \u590f\u4ee4\u6642\u9593", "CHOST",
+ "\u5DE7\u5DF4\u5C71 (Choibalsan) \u6642\u9593", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\u6771\u5e1d\u6c76\u6642\u9593", "TLT",
- "\u6771\u5e1d\u6c76\u590f\u4ee4\u6642\u9593", "TLST"}},
+ "\u6771\u5e1d\u6c76\u590f\u4ee4\u6642\u9593", "TLST",
+ "\u6771\u5E1D\u6C76\u6642\u9593", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\u5854\u5409\u514b\u6642\u9593", "TJT",
- "\u5854\u5409\u514b\u590f\u4ee4\u6642\u9593", "TJST"}},
+ "\u5854\u5409\u514b\u590f\u4ee4\u6642\u9593", "TJST",
+ "\u5854\u5409\u514B\u6642\u9593", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"\u4faf\u5fb7 (Hovd) \u6642\u9593", "HOVT",
- "\u4faf\u5fb7 (Hovd) \u590f\u4ee4\u6642\u9593", "HOVST"}},
+ "\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"}},
+ "Irkutsk \u590f\u4ee4\u6642\u9593", "IRKST",
+ "\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "WIT",
- "\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u65e5\u6642\u9593", "EIST"}},
+ "\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u65e5\u6642\u9593", "EIST",
+ "\u6771\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593", "WIT"}},
{"Asia/Kabul", new String[] {"\u963f\u5bcc\u6c57\u6642\u9593", "AFT",
- "\u963f\u5bcc\u6c57\u590f\u4ee4\u6642\u9593", "AFST"}},
+ "\u963f\u5bcc\u6c57\u590f\u4ee4\u6642\u9593", "AFST",
+ "\u963F\u5BCC\u6C57\u6642\u9593", "AFT"}},
{"Asia/Kamchatka", new String[] {"Petropavlovsk-Kamchatski \u6642\u9593", "PETT",
- "Petropavlovsk-Kamchatski \u590f\u4ee4\u6642\u9593", "PETST"}},
+ "Petropavlovsk-Kamchatski \u590f\u4ee4\u6642\u9593", "PETST",
+ "Petropavlovsk-Kamchatski \u6642\u9593", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"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) \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\u590f\u4ee4\u6642\u9593", "KRAST",
+ "\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadan \u6642\u9593", "MAGT",
- "Magadan \u590f\u4ee4\u6642\u9593", "MAGST"}},
+ "Magadan \u590f\u4ee4\u6642\u9593", "MAGST",
+ "\u99AC\u52A0\u4E39\u6642\u9593", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\u83f2\u5f8b\u8cd3\u6642\u9593", "PHT",
- "\u83f2\u5f8b\u8cd3\u590f\u4ee4\u6642\u9593", "PHST"}},
+ "\u83f2\u5f8b\u8cd3\u590f\u4ee4\u6642\u9593", "PHST",
+ "\u83F2\u5F8B\u8CD3\u6642\u9593", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"\u6b50\u4f5b\u6642\u9593", "ORAT",
- "\u6b50\u4f5b\u590f\u4ee4\u6642\u9593", "ORAST"}},
+ "\u6b50\u4f5b\u590f\u4ee4\u6642\u9593", "ORAST",
+ "\u6B50\u4F5B\u6642\u9593", "ORAT"}},
{"Asia/Omsk", new String[] {"\u6b50\u59c6\u65af\u514b (Omsk) \u6642\u9593", "OMST",
- "\u6b50\u59c6\u65af\u514b (Omsk) \u590f\u4ee4\u6642\u9593", "OMSST"}},
+ "\u6b50\u59c6\u65af\u514b (Omsk) \u590f\u4ee4\u6642\u9593", "OMSST",
+ "\u6B50\u59C6\u65AF\u514B (Omsk) \u6642\u9593", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda \u6642\u9593", "QYZT",
- "Qyzylorda \u590f\u4ee4\u6642\u9593", "QYZST"}},
+ "Qyzylorda \u590f\u4ee4\u6642\u9593", "QYZST",
+ "\u514B\u5B5C\u6D1B\u723E\u9054\u6642\u9593", "QYZT"}},
{"Asia/Rangoon", new String[] {"\u7dec\u7538\u6642\u9593", "MMT",
- "\u7dec\u7538\u590f\u4ee4\u6642\u9593", "MMST"}},
+ "\u7dec\u7538\u590f\u4ee4\u6642\u9593", "MMST",
+ "\u7DEC\u7538\u6642\u9593", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\u5eab\u9801\u5cf6\u6642\u9593", "SAKT",
- "\u5eab\u9801\u5cf6\u590f\u4ee4\u6642\u9593", "SAKST"}},
+ "\u5eab\u9801\u5cf6\u590f\u4ee4\u6642\u9593", "SAKST",
+ "\u5EAB\u9801\u5CF6\u6642\u9593", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
{"Asia/Taipei", new String[] {"\u53f0\u7063\u6a19\u6e96\u6642\u9593", "TST",
- "\u53f0\u7063\u590f\u4ee4\u6642\u9593", "TDT"}},
+ "\u53f0\u7063\u590f\u4ee4\u6642\u9593", "TDT",
+ "\u53f0\u7063\u6642\u9593", "TT"}},
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\u55ac\u6cbb\u4e9e\u6642\u9593", "GET",
- "\u55ac\u6cbb\u4e9e\u590f\u4ee4\u6642\u9593", "GEST"}},
+ "\u55ac\u6cbb\u4e9e\u590f\u4ee4\u6642\u9593", "GEST",
+ "\u55AC\u6CBB\u4E9E\u6642\u9593", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -587,31 +709,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"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) \u590F\u4EE4\u6642\u9593", "VLAST",
+ "\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\u6d77\u53c3\u5d34\u6642\u9593", "VLAT",
- "\u6d77\u53c3\u5d34\u590f\u4ee4\u6642\u9593", "VLAST"}},
+ "\u6d77\u53c3\u5d34\u590f\u4ee4\u6642\u9593", "VLAST",
+ "\u6D77\u53C3\u5D34\u6642\u9593", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\u4e9e\u5eab\u6b21\u514b\u6642\u9593", "YAKT",
- "\u4e9e\u5eab\u6b21\u514b\u590f\u4ee4\u6642\u9593", "YAKST"}},
+ "\u4e9e\u5eab\u6b21\u514b\u590f\u4ee4\u6642\u9593", "YAKST",
+ "\u4E9E\u5EAB\u6B21\u514B\u6642\u9593", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Yekaterinburg \u6642\u9593", "YEKT",
- "Yekaterinburg \u590f\u4ee4\u6642\u9593", "YEKST"}},
+ "Yekaterinburg \u590f\u4ee4\u6642\u9593", "YEKST",
+ "\u8449\u5361\u6377\u7433\u5821\u6642\u9593", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\u4e9e\u901f\u723e\u7fa4\u5cf6\u6642\u9593", "AZOT",
- "\u4e9e\u901f\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "AZOST"}},
+ "\u4e9e\u901f\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "AZOST",
+ "\u4E9E\u901F\u723E\u7FA4\u5CF6\u6642\u9593", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\u4f5b\u5fb7\u89d2\u6642\u9593", "CVT",
- "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u6642\u9593", "CVST"}},
+ "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u6642\u9593", "CVST",
+ "\u4F5B\u5FB7\u89D2\u6642\u9593", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\u5357\u55ac\u6cbb\u4e9e\u6a19\u6e96\u6642\u9593", "GST",
- "\u5357\u55ac\u6cbb\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT"}},
+ "\u5357\u55ac\u6cbb\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT",
+ "\u5357\u55AC\u6CBB\u4E9E\u6642\u9593", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\u798f\u514b\u862d\u7fa4\u5cf6\u6642\u9593", "FKT",
- "\u798f\u514b\u862d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "FKST"}},
+ "\u798f\u514b\u862d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "FKST",
+ "\u798F\u514B\u862D\u7FA4\u5CF6\u6642\u9593", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -620,7 +750,8 @@
{"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\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWST",
+ "\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -705,7 +836,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\u6c99\u99ac\u62c9\u6642\u9593", "SAMT",
- "\u6c99\u99ac\u62c9\u590f\u4ee4\u6642\u9593", "SAMST"}},
+ "\u6c99\u99ac\u62c9\u590f\u4ee4\u6642\u9593", "SAMST",
+ "\u6C99\u99AC\u62C9\u6642\u9593", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -721,7 +853,8 @@
{"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\u590f\u4ee4\u6642\u9593", "VOLST",
+ "\u4F0F\u723E\u52A0\u683C\u52D2\u6642\u9593", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -735,30 +868,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\u5370\u5ea6\u6d0b\u5730\u5340\u6642\u9593", "IOT",
- "\u5370\u5ea6\u6d0b\u5730\u5340\u590f\u4ee4\u6642\u9593", "IOST"}},
+ "\u5370\u5ea6\u6d0b\u5730\u5340\u590f\u4ee4\u6642\u9593", "IOST",
+ "\u82F1\u5C6C\u5370\u5EA6\u6D0B\u5730\u5340", "IOT"}},
{"Indian/Christmas", new String[] {"\u8056\u8a95\u5cf6\u6642\u9593", "CXT",
- "\u8056\u8a95\u5cf6\u590f\u4ee4\u6642\u9593", "CXST"}},
+ "\u8056\u8a95\u5cf6\u590f\u4ee4\u6642\u9593", "CXST",
+ "\u8056\u8A95\u5CF6\u6642\u9593", "CIT"}},
{"Indian/Cocos", new String[] {"\u53ef\u53ef\u65af\u7fa4\u5cf6\u6642\u9593", "CCT",
- "\u53ef\u53ef\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CCST"}},
+ "\u53ef\u53ef\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CCST",
+ "\u53EF\u53EF\u65AF\u7FA4\u5CF6\u6642\u9593", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\u6cd5\u570b\u5357\u534a\u7403\u53ca\u5357\u6975\u5c6c\u5730\u6642\u9593", "TFT",
- "\u6cd5\u570b\u5357\u534a\u7403\u53ca\u5357\u6975\u5c6c\u5730\u590f\u4ee4\u6642\u9593", "TFST"}},
+ "\u6cd5\u570b\u5357\u534a\u7403\u53ca\u5357\u6975\u5c6c\u5730\u590f\u4ee4\u6642\u9593", "TFST",
+ "\u6CD5\u570B\u5357\u534A\u7403\u53CA\u5357\u6975\u5C6C\u5730\u6642\u9593", "TFT"}},
{"Indian/Mahe", new String[] {"\u585e\u5e2d\u723e\u7fa4\u5cf6\u6642\u9593", "SCT",
- "\u585e\u5e2d\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SCST"}},
+ "\u585e\u5e2d\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SCST",
+ "\u585E\u5E2D\u723E\u7FA4\u5CF6\u6642\u9593", "SCT"}},
{"Indian/Maldives", new String[] {"\u99ac\u723e\u5730\u592b\u6642\u9593", "MVT",
- "\u99ac\u723e\u5730\u592b\u590f\u4ee4\u6642\u9593", "MVST"}},
+ "\u99ac\u723e\u5730\u592b\u590f\u4ee4\u6642\u9593", "MVST",
+ "\u99AC\u723E\u5730\u592B\u6642\u9593", "MVT"}},
{"Indian/Mauritius", new String[] {"\u6469\u91cc\u897f\u65af\u6642\u9593", "MUT",
- "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u6642\u9593", "MUST"}},
+ "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u6642\u9593", "MUST",
+ "\u6469\u91CC\u897F\u65AF\u6642\u9593", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\u7559\u5c3c\u65fa\u5cf6\u6642\u9593", "RET",
- "\u7559\u5c3c\u65fa\u5cf6\u590f\u4ee4\u6642\u9593", "REST"}},
+ "\u7559\u5c3c\u65fa\u5cf6\u590f\u4ee4\u6642\u9593", "REST",
+ "\u7559\u5C3C\u65FA\u5CF6\u6642\u9593", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\u4e2d\u6b50\u6642\u9593", "MET",
- "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "MEST"}},
+ "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -778,61 +920,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\u74e6\u5974\u963f\u5716\u6642\u9593", "VUT",
- "\u74e6\u5974\u963f\u5716\u590f\u4ee4\u6642\u9593", "VUST"}},
+ "\u74e6\u5974\u963f\u5716\u590f\u4ee4\u6642\u9593", "VUST",
+ "\u74E6\u5974\u963F\u5716\u6642\u9593", "VUT"}},
{"Pacific/Enderbury", new String[] {"\u83f2\u5c3c\u514b\u65af\u7fa4\u5cf6\u6642\u9593", "PHOT",
- "\u83f2\u5c3c\u514b\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "PHOST"}},
+ "\u83f2\u5c3c\u514b\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "PHOST",
+ "\u83F2\u5C3C\u514B\u65AF\u7FA4\u5CF6\u6642\u9593", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\u6258\u514b\u52de\u7fa4\u5cf6\u6642\u9593", "TKT",
- "\u6258\u514b\u52de\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "TKST"}},
+ "\u6258\u514b\u52de\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "TKST",
+ "\u6258\u514B\u52DE\u7FA4\u5CF6\u6642\u9593", "TKT"}},
{"Pacific/Fiji", new String[] {"\u6590\u6fdf\u6642\u9593", "FJT",
- "\u6590\u6fdf\u590f\u4ee4\u6642\u9593", "FJST"}},
+ "\u6590\u6fdf\u590f\u4ee4\u6642\u9593", "FJST",
+ "\u6590\u6FDF\u6642\u9593", "FJT"}},
{"Pacific/Funafuti", new String[] {"\u5410\u9b6f\u74e6\u6642\u9593", "TVT",
- "\u5410\u9b6f\u74e6\u590f\u4ee4\u6642\u9593", "TVST"}},
+ "\u5410\u9b6f\u74e6\u590f\u4ee4\u6642\u9593", "TVST",
+ "\u5410\u74E6\u9B6F\u6642\u9593", "TVT"}},
{"Pacific/Galapagos", new String[] {"\u52a0\u62c9\u5df4\u54e5\u6642\u9593", "GALT",
- "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u6642\u9593", "GALST"}},
+ "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u6642\u9593", "GALST",
+ "\u52A0\u62C9\u5DF4\u54E5\u6642\u9593", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line Is. \u6642\u9593", "LINT",
- "Line Is. \u590f\u4ee4\u6642\u9593", "LINST"}},
+ "Line Is. \u590f\u4ee4\u6642\u9593", "LINST",
+ "\u5217\u5DBC\u7FA4\u5CF6\u6642\u9593", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae \u6642\u9593", "KOST",
- "Kosrae \u590f\u4ee4\u6642\u9593", "KOSST"}},
+ "Kosrae \u590f\u4ee4\u6642\u9593", "KOSST",
+ "Kosrae \u6642\u9593", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\u99ac\u514b\u85a9\u65af\u6642\u9593", "MART",
- "\u99ac\u514b\u85a9\u65af\u590f\u4ee4\u6642\u9593", "MARST"}},
+ "\u99ac\u514b\u85a9\u65af\u590f\u4ee4\u6642\u9593", "MARST",
+ "\u99AC\u514B\u85A9\u65AF\u6642\u9593", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\u8afe\u9b6f\u6642\u9593", "NRT",
- "\u8afe\u9b6f\u590f\u4ee4\u6642\u9593", "NRST"}},
+ "\u8afe\u9b6f\u590f\u4ee4\u6642\u9593", "NRST",
+ "\u8AFE\u9B6F\u6642\u9593", "NRT"}},
{"Pacific/Niue", new String[] {"\u7d10\u5a01\u5cf6\u6642\u9593", "NUT",
- "\u7d10\u5a01\u5cf6\u590f\u4ee4\u6642\u9593", "NUST"}},
+ "\u7d10\u5a01\u5cf6\u590f\u4ee4\u6642\u9593", "NUST",
+ "\u7D10\u5A01\u5CF6\u6642\u9593", "NUT"}},
{"Pacific/Norfolk", new String[] {"\u8afe\u798f\u514b\u6642\u9593", "NFT",
- "\u8afe\u798f\u514b\u590f\u4ee4\u6642\u9593", "NFST"}},
+ "\u8afe\u798f\u514b\u590f\u4ee4\u6642\u9593", "NFST",
+ "\u8AFE\u798F\u514B\u6642\u9593", "NFT"}},
{"Pacific/Noumea", new String[] {"\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9e\u6642\u9593", "NCT",
- "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "NCST"}},
+ "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "NCST",
+ "\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9E\u6642\u9593", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\u5e1b\u7409\u6642\u9593", "PWT",
- "\u5e1b\u7409\u590f\u4ee4\u6642\u9593", "PWST"}},
+ "\u5e1b\u7409\u590f\u4ee4\u6642\u9593", "PWST",
+ "\u5E1B\u7409\u6642\u9593", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u6642\u9593", "PGT",
- "\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u590f\u4ee4\u6642\u9593", "PGST"}},
+ "\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u590f\u4ee4\u6642\u9593", "PGST",
+ "\u5DF4\u5E03\u4E9E\u65B0\u5E7E\u5167\u4E9E\u6642\u9593", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\u5eab\u514b\u7fa4\u5cf6\u6642\u9593", "CKT",
- "\u5eab\u514b\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CKHST"}},
+ "\u5eab\u514b\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CKHST",
+ "\u5EAB\u514B\u7FA4\u5CF6\u6642\u9593", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\u5927\u6eaa\u5730\u5cf6\u6642\u9593", "TAHT",
- "\u5927\u6eaa\u5730\u5cf6\u590f\u4ee4\u6642\u9593", "TAHST"}},
+ "\u5927\u6eaa\u5730\u5cf6\u590f\u4ee4\u6642\u9593", "TAHST",
+ "\u5927\u6EAA\u5730\u6642\u9593", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\u5409\u4f2f\u7279\u7fa4\u5cf6\u6642\u9593", "GILT",
- "\u5409\u4f2f\u7279\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "GILST"}},
+ "\u5409\u4f2f\u7279\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "GILST",
+ "\u5409\u4F2F\u7279\u7FA4\u5CF6\u6642\u9593", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\u6771\u52a0\u6642\u9593", "TOT",
- "\u6771\u52a0\u590f\u4ee4\u6642\u9593", "TOST"}},
+ "\u6771\u52a0\u590f\u4ee4\u6642\u9593", "TOST",
+ "\u6771\u52A0\u6642\u9593", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\u5a01\u514b\u6642\u9593", "WAKT",
- "\u5a01\u514b\u590f\u4ee4\u6642\u9593", "WAKST"}},
+ "\u5a01\u514b\u590f\u4ee4\u6642\u9593", "WAKST",
+ "\u5A01\u514B\u6642\u9593", "WAKT"}},
{"Pacific/Wallis", new String[] {"\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u6642\u9593", "WFT",
- "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "WFST"}},
+ "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "WFST",
+ "\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7D0D\u7FA4\u5CF6\u6642\u9593", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/javavm/export/jmm.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/javavm/export/jmm.h Tue Jan 28 11:21:43 2014 -0800
@@ -153,6 +153,7 @@
JMM_VMGLOBAL_ORIGIN_ENVIRON_VAR = 4, /* Set via environment variables */
JMM_VMGLOBAL_ORIGIN_CONFIG_FILE = 5, /* Set via config file (such as .hotspotrc) */
JMM_VMGLOBAL_ORIGIN_ERGONOMIC = 6, /* Set via ergonomic */
+ JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND = 7, /* Set via attach */
JMM_VMGLOBAL_ORIGIN_OTHER = 99 /* Set via some other mechanism */
} jmmVMGlobalOrigin;
--- a/jdk/src/share/lib/security/java.policy Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/lib/security/java.policy Tue Jan 28 11:21:43 2014 -0800
@@ -2,48 +2,48 @@
// Standard extensions get all permissions by default
grant codeBase "file:${{java.ext.dirs}}/*" {
- permission java.security.AllPermission;
+ permission java.security.AllPermission;
};
// default permissions granted to all domains
-grant {
- // Allows any thread to stop itself using the java.lang.Thread.stop()
- // method that takes no argument.
- // Note that this permission is granted by default only to remain
- // backwards compatible.
- // It is strongly recommended that you either remove this permission
- // from this policy file or further restrict it to code sources
- // that you specify, because Thread.stop() is potentially unsafe.
- // See the API specification of java.lang.Thread.stop() for more
+grant {
+ // Allows any thread to stop itself using the java.lang.Thread.stop()
+ // method that takes no argument.
+ // Note that this permission is granted by default only to remain
+ // backwards compatible.
+ // It is strongly recommended that you either remove this permission
+ // from this policy file or further restrict it to code sources
+ // that you specify, because Thread.stop() is potentially unsafe.
+ // See the API specification of java.lang.Thread.stop() for more
// information.
- permission java.lang.RuntimePermission "stopThread";
+ permission java.lang.RuntimePermission "stopThread";
- // allows anyone to listen on un-privileged ports
- permission java.net.SocketPermission "localhost:1024-", "listen";
+ // allows anyone to listen on dynamic ports
+ permission java.net.SocketPermission "localhost:0", "listen";
- // "standard" properies that can be read by anyone
+ // "standard" properies that can be read by anyone
- permission java.util.PropertyPermission "java.version", "read";
- permission java.util.PropertyPermission "java.vendor", "read";
- permission java.util.PropertyPermission "java.vendor.url", "read";
- permission java.util.PropertyPermission "java.class.version", "read";
- permission java.util.PropertyPermission "os.name", "read";
- permission java.util.PropertyPermission "os.version", "read";
- permission java.util.PropertyPermission "os.arch", "read";
- permission java.util.PropertyPermission "file.separator", "read";
- permission java.util.PropertyPermission "path.separator", "read";
- permission java.util.PropertyPermission "line.separator", "read";
+ permission java.util.PropertyPermission "java.version", "read";
+ permission java.util.PropertyPermission "java.vendor", "read";
+ permission java.util.PropertyPermission "java.vendor.url", "read";
+ permission java.util.PropertyPermission "java.class.version", "read";
+ permission java.util.PropertyPermission "os.name", "read";
+ permission java.util.PropertyPermission "os.version", "read";
+ permission java.util.PropertyPermission "os.arch", "read";
+ permission java.util.PropertyPermission "file.separator", "read";
+ permission java.util.PropertyPermission "path.separator", "read";
+ permission java.util.PropertyPermission "line.separator", "read";
- permission java.util.PropertyPermission "java.specification.version", "read";
- permission java.util.PropertyPermission "java.specification.vendor", "read";
- permission java.util.PropertyPermission "java.specification.name", "read";
+ permission java.util.PropertyPermission "java.specification.version", "read";
+ permission java.util.PropertyPermission "java.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.specification.name", "read";
- permission java.util.PropertyPermission "java.vm.specification.version", "read";
- permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
- permission java.util.PropertyPermission "java.vm.specification.name", "read";
- permission java.util.PropertyPermission "java.vm.version", "read";
- permission java.util.PropertyPermission "java.vm.vendor", "read";
- permission java.util.PropertyPermission "java.vm.name", "read";
+ permission java.util.PropertyPermission "java.vm.specification.version", "read";
+ permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.specification.name", "read";
+ permission java.util.PropertyPermission "java.vm.version", "read";
+ permission java.util.PropertyPermission "java.vm.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.name", "read";
};
--- a/jdk/src/share/lib/security/java.security-linux Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-linux Tue Jan 28 11:21:43 2014 -0800
@@ -182,6 +182,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -205,7 +206,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -228,6 +229,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -251,7 +253,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -470,7 +472,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -494,4 +496,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/lib/security/java.security-macosx Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-macosx Tue Jan 28 11:21:43 2014 -0800
@@ -183,6 +183,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -229,6 +230,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -471,7 +473,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -495,4 +497,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/lib/security/java.security-solaris Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-solaris Tue Jan 28 11:21:43 2014 -0800
@@ -184,6 +184,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -207,7 +208,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -229,6 +230,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -252,7 +254,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -470,7 +472,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -494,4 +496,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/lib/security/java.security-windows Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-windows Tue Jan 28 11:21:43 2014 -0800
@@ -183,6 +183,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -206,7 +207,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -229,6 +230,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -252,7 +254,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -471,7 +473,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -495,4 +497,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -32,6 +32,8 @@
#include <stdlib.h>
#include <stdarg.h>
+#include "jni_util.h"
+
#include "defines.h"
#include "bytes.h"
#include "utils.h"
@@ -147,7 +149,7 @@
break;
}
coding* ptr = NEW(coding, 1);
- CHECK_NULL_0(ptr);
+ CHECK_NULL_RETURN(ptr, 0);
coding* c = ptr->initFrom(spec);
if (c == null) {
mtrace('f', ptr, 0);
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Tue Jan 28 11:21:43 2014 -0800
@@ -158,10 +158,6 @@
#define CHECK_(y) _CHECK_DO(aborting(), return y)
#define CHECK_0 _CHECK_DO(aborting(), return 0)
-#define CHECK_NULL(p) _CHECK_DO((p)==null, return)
-#define CHECK_NULL_(y,p) _CHECK_DO((p)==null, return y)
-#define CHECK_NULL_0(p) _CHECK_DO((p)==null, return 0)
-
#define CHECK_COUNT(t) if (t < 0){abort("bad value count");} CHECK
#define STR_TRUE "true"
--- a/jdk/src/share/native/common/jni_util.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/common/jni_util.h Tue Jan 28 11:21:43 2014 -0800
@@ -278,6 +278,15 @@
#define IS_NULL(obj) ((obj) == NULL)
#define JNU_IsNull(env,obj) ((obj) == NULL)
+/************************************************************************
+ * Miscellaneous utilities used by the class libraries to check for exceptions
+ */
+
+#define CHECK_NULL(x) if ((x) == NULL) return;
+#define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return (y);
+
+#define CHECK_EXCEPTION(env) if ((*env)->ExceptionCheck(env)) return;
+#define CHECK_EXCEPTION_RETURN(env, y) if ((*env)->ExceptionCheck(env)) return (y);
/************************************************************************
* Debugging utilities
--- a/jdk/src/share/native/java/net/net_util.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/java/net/net_util.h Tue Jan 28 11:21:43 2014 -0800
@@ -42,9 +42,6 @@
#define NET_ERROR(env, ex, msg) \
{ if (!(*env)->ExceptionOccurred(env)) JNU_ThrowByName(env, ex, msg) }
-#define CHECK_NULL(x) if ((x) == NULL) return;
-#define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return y;
-
/************************************************************************
* Cached field IDs
*
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.c Tue Jan 28 11:21:43 2014 -0800
@@ -111,8 +111,9 @@
int
SplashIsStillLooping(Splash * splash)
{
- if (splash->currentFrame < 0)
+ if (splash->currentFrame < 0) {
return 0;
+ }
return splash->loopCount != 1 ||
splash->currentFrame + 1 < splash->frameCount;
}
@@ -121,17 +122,22 @@
SplashUpdateScreenData(Splash * splash)
{
ImageRect srcRect, dstRect;
+ if (splash->currentFrame < 0) {
+ return;
+ }
initRect(&srcRect, 0, 0, splash->width, splash->height, 1,
splash->width * sizeof(rgbquad_t),
splash->frames[splash->currentFrame].bitmapBits, &splash->imageFormat);
- if (splash->screenData)
+ if (splash->screenData) {
free(splash->screenData);
+ }
splash->screenStride = splash->width * splash->screenFormat.depthBytes;
- if (splash->byteAlignment > 1)
+ if (splash->byteAlignment > 1) {
splash->screenStride =
(splash->screenStride + splash->byteAlignment - 1) &
~(splash->byteAlignment - 1);
+ }
splash->screenData = malloc(splash->height * splash->screenStride);
initRect(&dstRect, 0, 0, splash->width, splash->height, 1,
splash->screenStride, splash->screenData, &splash->screenFormat);
@@ -146,16 +152,19 @@
void
SplashNextFrame(Splash * splash)
{
- if (splash->currentFrame < 0)
+ if (splash->currentFrame < 0) {
return;
+ }
do {
- if (!SplashIsStillLooping(splash))
+ if (!SplashIsStillLooping(splash)) {
return;
+ }
splash->time += splash->frames[splash->currentFrame].delay;
if (++splash->currentFrame >= splash->frameCount) {
splash->currentFrame = 0;
- if (splash->loopCount > 0)
+ if (splash->loopCount > 0) {
splash->loopCount--;
+ }
}
} while (splash->time + splash->frames[splash->currentFrame].delay -
SplashTime() <= 0);
@@ -183,8 +192,9 @@
pSrc += pSrcRect->depthBytes;
++i;
}
- if (i >= pSrcRect->numSamples)
+ if (i >= pSrcRect->numSamples) {
break;
+ }
i0 = i;
while (i < pSrcRect->numSamples &&
getRGBA(pSrc, pSrcRect->format) >= ALPHA_THRESHOLD) {
--- a/jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -55,7 +55,7 @@
(const AlternateSetTable *) ((char *) this + alternateSetTableOffset));
TTGlyphID alternate = SWAPW(alternateSetTable->alternateArray[0]);
- if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate))) {
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate), success)) {
glyphIterator->setCurrGlyphID(SWAPW(alternateSetTable->alternateArray[0]));
}
--- a/jdk/src/share/native/sun/font/layout/AnchorTables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/AnchorTables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -37,55 +37,54 @@
U_NAMESPACE_BEGIN
-void AnchorTable::getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance,
- LEPoint &anchor) const
+void AnchorTable::getAnchor(const LETableReference &base, LEGlyphID glyphID, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const
{
- switch(SWAPW(anchorFormat)) {
+ switch(SWAPW(anchorFormat)) {
case 1:
{
- const Format1AnchorTable *f1 = (const Format1AnchorTable *) this;
-
- f1->getAnchor(fontInstance, anchor);
+ LEReferenceTo<Format1AnchorTable> f1(base, success);
+ f1->getAnchor(f1, fontInstance, anchor, success);
break;
}
case 2:
{
- const Format2AnchorTable *f2 = (const Format2AnchorTable *) this;
-
- f2->getAnchor(glyphID, fontInstance, anchor);
+ LEReferenceTo<Format2AnchorTable> f2(base, success);
+ f2->getAnchor(f2, glyphID, fontInstance, anchor, success);
break;
}
case 3:
{
- const Format3AnchorTable *f3 = (const Format3AnchorTable *) this;
-
- f3->getAnchor(fontInstance, anchor);
+ LEReferenceTo<Format3AnchorTable> f3(base, success);
+ f3->getAnchor(f3, fontInstance, anchor, success);
break;
}
default:
+ {
// unknown format: just use x, y coordinate, like format 1...
- const Format1AnchorTable *f1 = (const Format1AnchorTable *) this;
-
- f1->getAnchor(fontInstance, anchor);
+ LEReferenceTo<Format1AnchorTable> f1(base, success);
+ f1->getAnchor(f1, fontInstance, anchor, success);
break;
}
+ }
}
-void Format1AnchorTable::getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const
+void Format1AnchorTable::getAnchor(const LEReferenceTo<Format1AnchorTable>& base, const LEFontInstance *fontInstance, LEPoint &anchor, LEErrorCode &success) const
{
le_int16 x = SWAPW(xCoordinate);
le_int16 y = SWAPW(yCoordinate);
LEPoint pixels;
fontInstance->transformFunits(x, y, pixels);
-
fontInstance->pixelsToUnits(pixels, anchor);
}
-void Format2AnchorTable::getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance, LEPoint &anchor) const
+void Format2AnchorTable::getAnchor(const LEReferenceTo<Format2AnchorTable>& base,
+ LEGlyphID glyphID, const LEFontInstance *fontInstance, LEPoint &anchor
+ , LEErrorCode &success) const
{
LEPoint point;
@@ -100,7 +99,8 @@
fontInstance->pixelsToUnits(point, anchor);
}
-void Format3AnchorTable::getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const
+void Format3AnchorTable::getAnchor(const LEReferenceTo<Format3AnchorTable> &base, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const
{
le_int16 x = SWAPW(xCoordinate);
le_int16 y = SWAPW(yCoordinate);
@@ -111,15 +111,15 @@
fontInstance->transformFunits(x, y, pixels);
if (dtxOffset != 0) {
- const DeviceTable *dtx = (const DeviceTable *) ((char *) this + dtxOffset);
- le_int16 adjx = dtx->getAdjustment((le_int16) fontInstance->getXPixelsPerEm());
+ LEReferenceTo<DeviceTable> dt(base, success, dtxOffset);
+ le_int16 adjx = dt->getAdjustment(dt, (le_int16) fontInstance->getXPixelsPerEm(), success);
pixels.fX += adjx;
}
if (dtyOffset != 0) {
- const DeviceTable *dty = (const DeviceTable *) ((char *) this + dtyOffset);
- le_int16 adjy = dty->getAdjustment((le_int16) fontInstance->getYPixelsPerEm());
+ LEReferenceTo<DeviceTable> dt(base, success, dtyOffset);
+ le_int16 adjy = dt->getAdjustment(dt, (le_int16) fontInstance->getYPixelsPerEm(), success);
pixels.fY += adjy;
}
--- a/jdk/src/share/native/sun/font/layout/AnchorTables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/AnchorTables.h Tue Jan 28 11:21:43 2014 -0800
@@ -49,20 +49,23 @@
le_int16 xCoordinate;
le_int16 yCoordinate;
- void getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance,
- LEPoint &anchor) const;
+ void getAnchor(const LETableReference &base, LEGlyphID glyphID, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const;
};
struct Format1AnchorTable : AnchorTable
{
- void getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const;
+ void getAnchor(const LEReferenceTo<Format1AnchorTable>& base,
+ const LEFontInstance *fontInstance, LEPoint &anchor, LEErrorCode &success) const;
};
struct Format2AnchorTable : AnchorTable
{
le_uint16 anchorPoint;
- void getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance, LEPoint &anchor) const;
+ void getAnchor(const LEReferenceTo<Format2AnchorTable>& base,
+ LEGlyphID glyphID, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const;
};
struct Format3AnchorTable : AnchorTable
@@ -70,7 +73,9 @@
Offset xDeviceTableOffset;
Offset yDeviceTableOffset;
- void getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const;
+ void getAnchor(const LEReferenceTo<Format3AnchorTable>& base,
+ const LEFontInstance *fontInstance, LEPoint &anchor,
+ LEErrorCode &success) const;
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -51,7 +51,7 @@
U_NAMESPACE_BEGIN
-le_bool CharSubstitutionFilter::accept(LEGlyphID glyph) const
+le_bool CharSubstitutionFilter::accept(LEGlyphID glyph, LEErrorCode &/*success*/) const
{
return fFontInstance->canDisplay((LEUnicode) glyph);
}
@@ -147,7 +147,9 @@
GDEFMarkFilter filter(fGDEFTable, success);
adjustMarkGlyphs(glyphStorage, &filter, success);
} else {
- LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
+ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(LETableReference::kStaticData,
+ CanonShaping::glyphDefinitionTable,
+ CanonShaping::glyphDefinitionTableLen);
GDEFMarkFilter filter(gdefTable, success);
adjustMarkGlyphs(&chars[offset], count, reverse, glyphStorage, &filter, success);
@@ -157,9 +159,9 @@
UnicodeArabicOpenTypeLayoutEngine::UnicodeArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typoFlags, LEErrorCode &success)
: ArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags | LE_CHAR_FILTER_FEATURE_FLAG, success)
{
- fGSUBTable = (const GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable;
- fGDEFTable = (const GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable;
- /* OpenTypeLayoutEngine will allocate a substitution filter */
+ fGSUBTable.setTo(LETableReference::kStaticData, (const GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable, CanonShaping::glyphSubstitutionTableLen);
+ fGDEFTable.setTo(LETableReference::kStaticData, (const GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
+ /* OpenTypeLayoutEngine will allocate a substitution filter */
}
UnicodeArabicOpenTypeLayoutEngine::~UnicodeArabicOpenTypeLayoutEngine()
--- a/jdk/src/share/native/sun/font/layout/ArabicShaping.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ArabicShaping.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -59,7 +59,8 @@
ArabicShaping::ShapeType ArabicShaping::getShapeType(LEUnicode c)
{
LEErrorCode success = LE_NO_ERROR;
- const LEReferenceTo<ClassDefinitionTable> joiningTypes((const ClassDefinitionTable *) ArabicShaping::shapingTypeTable,
+ const LEReferenceTo<ClassDefinitionTable> joiningTypes(LETableReference::kStaticData,
+ (const ClassDefinitionTable *) ArabicShaping::shapingTypeTable,
ArabicShaping::shapingTypeTableLen);
le_int32 joiningType = joiningTypes->getGlyphClass(joiningTypes, c, success);
--- a/jdk/src/share/native/sun/font/layout/CanonShaping.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CanonShaping.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -60,7 +60,7 @@
LEUnicode *outChars, LEGlyphStorage &glyphStorage)
{
LEErrorCode success = LE_NO_ERROR;
- LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
+ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(LETableReference::kStaticData, CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
LEReferenceTo<ClassDefinitionTable> classTable = gdefTable->getMarkAttachClassDefinitionTable(gdefTable, success);
le_int32 *combiningClasses = LE_NEW_ARRAY(le_int32, charCount);
le_int32 *indices = LE_NEW_ARRAY(le_int32, charCount);
--- a/jdk/src/share/native/sun/font/layout/CharSubstitutionFilter.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CharSubstitutionFilter.h Tue Jan 28 11:21:43 2014 -0800
@@ -43,6 +43,8 @@
* This filter is used by character-based GSUB processors. It
* accepts only those characters which the given font can display.
*
+ * Note: Implementation is in ArabicLayoutEngine.cpp
+ *
* @internal
*/
class CharSubstitutionFilter : public UMemory, public LEGlyphFilter
@@ -97,7 +99,7 @@
*
* @internal
*/
- le_bool accept(LEGlyphID glyph) const;
+ le_bool accept(LEGlyphID glyph, LEErrorCode &success) const;
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/ClassDefinitionTables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ClassDefinitionTables.h Tue Jan 28 11:21:43 2014 -0800
@@ -49,6 +49,7 @@
le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const;
le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const;
+#if LE_ENABLE_RAW
le_int32 getGlyphClass(LEGlyphID glyphID) const {
LETableReference base((const le_uint8*)this);
LEErrorCode ignored = LE_NO_ERROR;
@@ -60,6 +61,7 @@
LEErrorCode ignored = LE_NO_ERROR;
return hasGlyphClass(base,glyphClass,ignored);
}
+#endif
};
struct ClassDefFormat1Table : ClassDefinitionTable
--- a/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -48,7 +48,7 @@
*/
void ContextualSubstitutionBase::applySubstitutionLookups(
const LookupProcessor *lookupProcessor,
- const SubstitutionLookupRecord *substLookupRecordArray,
+ const LEReferenceToArrayOf<SubstitutionLookupRecord>& substLookupRecordArray,
le_uint16 substCount,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
@@ -60,10 +60,11 @@
}
GlyphIterator tempIterator(*glyphIterator);
+ const SubstitutionLookupRecord *substLookupRecordArrayPtr = substLookupRecordArray.getAlias(); // OK to dereference, range checked against substCount below.
for (le_int16 subst = 0; subst < substCount && LE_SUCCESS(success); subst += 1) {
- le_uint16 sequenceIndex = SWAPW(substLookupRecordArray[subst].sequenceIndex);
- le_uint16 lookupListIndex = SWAPW(substLookupRecordArray[subst].lookupListIndex);
+ le_uint16 sequenceIndex = SWAPW(substLookupRecordArrayPtr[subst].sequenceIndex);
+ le_uint16 lookupListIndex = SWAPW(substLookupRecordArrayPtr[subst].lookupListIndex);
tempIterator.setCurrStreamPosition(position);
tempIterator.next(sequenceIndex);
@@ -72,7 +73,7 @@
}
}
-le_bool ContextualSubstitutionBase::matchGlyphIDs(const TTGlyphID *glyphArray, le_uint16 glyphCount,
+le_bool ContextualSubstitutionBase::matchGlyphIDs(const LEReferenceToArrayOf<TTGlyphID>& glyphArray, le_uint16 glyphCount,
GlyphIterator *glyphIterator, le_bool backtrack)
{
le_int32 direction = 1;
@@ -101,10 +102,13 @@
return TRUE;
}
-le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArray, le_uint16 glyphCount,
- GlyphIterator *glyphIterator,
- const ClassDefinitionTable *classDefinitionTable,
- le_bool backtrack)
+le_bool ContextualSubstitutionBase::matchGlyphClasses(
+ const LEReferenceToArrayOf<le_uint16> &classArray,
+ le_uint16 glyphCount,
+ GlyphIterator *glyphIterator,
+ const LEReferenceTo<ClassDefinitionTable> &classDefinitionTable,
+ LEErrorCode &success,
+ le_bool backtrack)
{
le_int32 direction = 1;
le_int32 match = 0;
@@ -120,7 +124,7 @@
}
LEGlyphID glyph = glyphIterator->getCurrGlyphID();
- le_int32 glyphClass = classDefinitionTable->getGlyphClass(glyph);
+ le_int32 glyphClass = classDefinitionTable->getGlyphClass(classDefinitionTable, glyph, success);
le_int32 matchClass = SWAPW(classArray[match]);
if (glyphClass != matchClass) {
@@ -128,7 +132,7 @@
// in the class array which aren't in the class definition
// table. If we're looking for such a class, pretend that
// we found it.
- if (classDefinitionTable->hasGlyphClass(matchClass)) {
+ if (classDefinitionTable->hasGlyphClass(classDefinitionTable, matchClass, success)) {
return FALSE;
}
}
@@ -140,8 +144,8 @@
return TRUE;
}
-le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
- GlyphIterator *glyphIterator, const char *offsetBase, le_bool backtrack)
+le_bool ContextualSubstitutionBase::matchGlyphCoverages(const LEReferenceToArrayOf<Offset> &coverageTableOffsetArray, le_uint16 glyphCount,
+GlyphIterator *glyphIterator, const LETableReference &offsetBase, LEErrorCode &success, le_bool backtrack)
{
le_int32 direction = 1;
le_int32 glyph = 0;
@@ -153,13 +157,15 @@
while (glyphCount > 0) {
Offset coverageTableOffset = SWAPW(coverageTableOffsetArray[glyph]);
- const CoverageTable *coverageTable = (const CoverageTable *) (offsetBase + coverageTableOffset);
+ LEReferenceTo<CoverageTable> coverageTable(offsetBase, success, coverageTableOffset);
- if (! glyphIterator->next()) {
+ if (LE_FAILURE(success) || ! glyphIterator->next()) {
return FALSE;
}
- if (coverageTable->getGlyphCoverage((LEGlyphID) glyphIterator->getCurrGlyphID()) < 0) {
+ if (coverageTable->getGlyphCoverage(coverageTable,
+ (LEGlyphID) glyphIterator->getCurrGlyphID(),
+ success) < 0) {
return FALSE;
}
@@ -170,7 +176,7 @@
return TRUE;
}
-le_uint32 ContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ContextualSubstitutionSubtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -186,20 +192,29 @@
case 1:
{
- const ContextualSubstitutionFormat1Subtable *subtable = (const ContextualSubstitutionFormat1Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ContextualSubstitutionFormat1Subtable> subtable(base, success, (const ContextualSubstitutionFormat1Subtable *) this);
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 2:
{
- const ContextualSubstitutionFormat2Subtable *subtable = (const ContextualSubstitutionFormat2Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ContextualSubstitutionFormat2Subtable> subtable(base, success, (const ContextualSubstitutionFormat2Subtable *) this);
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 3:
{
- const ContextualSubstitutionFormat3Subtable *subtable = (const ContextualSubstitutionFormat3Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ContextualSubstitutionFormat3Subtable> subtable(base, success, (const ContextualSubstitutionFormat3Subtable *) this);
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
default:
@@ -207,7 +222,7 @@
}
}
-le_uint32 ContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ContextualSubstitutionFormat1Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -227,22 +242,22 @@
if (coverageIndex < srSetCount) {
Offset subRuleSetTableOffset = SWAPW(subRuleSetTableOffsetArray[coverageIndex]);
- const SubRuleSetTable *subRuleSetTable =
- (const SubRuleSetTable *) ((char *) this + subRuleSetTableOffset);
+ LEReferenceTo<SubRuleSetTable>
+ subRuleSetTable(base, success, (const SubRuleSetTable *) ((char *) this + subRuleSetTableOffset));
le_uint16 subRuleCount = SWAPW(subRuleSetTable->subRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
for (le_uint16 subRule = 0; subRule < subRuleCount; subRule += 1) {
Offset subRuleTableOffset =
SWAPW(subRuleSetTable->subRuleTableOffsetArray[subRule]);
- const SubRuleTable *subRuleTable =
- (const SubRuleTable *) ((char *) subRuleSetTable + subRuleTableOffset);
+ LEReferenceTo<SubRuleTable>
+ subRuleTable(subRuleSetTable, success, subRuleTableOffset);
le_uint16 matchCount = SWAPW(subRuleTable->glyphCount) - 1;
le_uint16 substCount = SWAPW(subRuleTable->substCount);
-
- if (matchGlyphIDs(subRuleTable->inputGlyphArray, matchCount, glyphIterator)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &subRuleTable->inputGlyphArray[matchCount];
+ LEReferenceToArrayOf<TTGlyphID> inputGlyphArray(base, success, subRuleTable->inputGlyphArray, matchCount+2);
+ if (matchGlyphIDs(inputGlyphArray, matchCount, glyphIterator)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) &subRuleTable->inputGlyphArray[matchCount], substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -259,10 +274,11 @@
return 0;
}
-le_uint32 ContextualSubstitutionFormat2Subtable::process(const LookupProcessor *lookupProcessor,
- GlyphIterator *glyphIterator,
- const LEFontInstance *fontInstance,
- LEErrorCode& success) const
+le_uint32 ContextualSubstitutionFormat2Subtable::process(const LETableReference &base,
+ const LookupProcessor *lookupProcessor,
+ GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance,
+ LEErrorCode& success) const
{
if (LE_FAILURE(success)) {
return 0;
@@ -275,29 +291,33 @@
}
if (coverageIndex >= 0) {
- const ClassDefinitionTable *classDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(classDefTableOffset));
+ LEReferenceTo<ClassDefinitionTable> classDefinitionTable(base, success,
+ (const ClassDefinitionTable *) ((char *) this + SWAPW(classDefTableOffset)));
le_uint16 scSetCount = SWAPW(subClassSetCount);
- le_int32 setClass = classDefinitionTable->getGlyphClass(glyphIterator->getCurrGlyphID());
+ le_int32 setClass = classDefinitionTable->getGlyphClass(classDefinitionTable,
+ glyphIterator->getCurrGlyphID(),
+ success);
if (setClass < scSetCount && subClassSetTableOffsetArray[setClass] != 0) {
Offset subClassSetTableOffset = SWAPW(subClassSetTableOffsetArray[setClass]);
- const SubClassSetTable *subClassSetTable =
- (const SubClassSetTable *) ((char *) this + subClassSetTableOffset);
+ LEReferenceTo<SubClassSetTable>
+ subClassSetTable(base, success, (const SubClassSetTable *) ((char *) this + subClassSetTableOffset));
le_uint16 subClassRuleCount = SWAPW(subClassSetTable->subClassRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
for (le_uint16 scRule = 0; scRule < subClassRuleCount; scRule += 1) {
Offset subClassRuleTableOffset =
SWAPW(subClassSetTable->subClassRuleTableOffsetArray[scRule]);
- const SubClassRuleTable *subClassRuleTable =
- (const SubClassRuleTable *) ((char *) subClassSetTable + subClassRuleTableOffset);
+ LEReferenceTo<SubClassRuleTable>
+ subClassRuleTable(subClassSetTable, success, subClassRuleTableOffset);
le_uint16 matchCount = SWAPW(subClassRuleTable->glyphCount) - 1;
le_uint16 substCount = SWAPW(subClassRuleTable->substCount);
- if (matchGlyphClasses(subClassRuleTable->classArray, matchCount, glyphIterator, classDefinitionTable)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &subClassRuleTable->classArray[matchCount];
+ LEReferenceToArrayOf<le_uint16> classArray(base, success, subClassRuleTable->classArray, matchCount+1);
+
+ if (matchGlyphClasses(classArray, matchCount, glyphIterator, classDefinitionTable, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) &subClassRuleTable->classArray[matchCount], substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -314,7 +334,8 @@
return 0;
}
-le_uint32 ContextualSubstitutionFormat3Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ContextualSubstitutionFormat3Subtable::process(const LETableReference &base,
+ const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success)const
@@ -333,9 +354,13 @@
// that matched when we're done.
glyphIterator->prev();
- if (ContextualSubstitutionBase::matchGlyphCoverages(coverageTableOffsetArray, gCount, glyphIterator, (const char *) this)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &coverageTableOffsetArray[gCount];
+ LEReferenceToArrayOf<Offset> covTableOffsetArray(base, success, coverageTableOffsetArray, gCount);
+
+ if( LE_FAILURE(success) ) { return 0; }
+
+ if (ContextualSubstitutionBase::matchGlyphCoverages(covTableOffsetArray, gCount, glyphIterator, base, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) &coverageTableOffsetArray[gCount], subCount);
ContextualSubstitutionBase::applySubstitutionLookups(lookupProcessor, substLookupRecordArray, subCount, glyphIterator, fontInstance, position, success);
@@ -347,7 +372,8 @@
return 0;
}
-le_uint32 ChainingContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionSubtable::process(const LEReferenceTo<ChainingContextualSubstitutionSubtable> &base,
+ const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -363,20 +389,23 @@
case 1:
{
- const ChainingContextualSubstitutionFormat1Subtable *subtable = (const ChainingContextualSubstitutionFormat1Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ChainingContextualSubstitutionFormat1Subtable> subtable(base, success, (ChainingContextualSubstitutionFormat1Subtable *) this);
+ if(LE_FAILURE(success)) return 0;
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 2:
{
- const ChainingContextualSubstitutionFormat2Subtable *subtable = (const ChainingContextualSubstitutionFormat2Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ChainingContextualSubstitutionFormat2Subtable> subtable(base, success, (const ChainingContextualSubstitutionFormat2Subtable *) this);
+ if( LE_FAILURE(success) ) { return 0; }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 3:
{
- const ChainingContextualSubstitutionFormat3Subtable *subtable = (const ChainingContextualSubstitutionFormat3Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ChainingContextualSubstitutionFormat3Subtable> subtable(base, success, (const ChainingContextualSubstitutionFormat3Subtable *) this);
+ if( LE_FAILURE(success) ) { return 0; }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
default:
@@ -390,7 +419,7 @@
// emptyFeatureList matches an le_uint32 or an le_uint16...
static const FeatureMask emptyFeatureList = 0x00000000UL;
-le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -410,8 +439,8 @@
if (coverageIndex < srSetCount) {
Offset chainSubRuleSetTableOffset = SWAPW(chainSubRuleSetTableOffsetArray[coverageIndex]);
- const ChainSubRuleSetTable *chainSubRuleSetTable =
- (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset);
+ LEReferenceTo<ChainSubRuleSetTable>
+ chainSubRuleSetTable(base, success, (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset));
le_uint16 chainSubRuleCount = SWAPW(chainSubRuleSetTable->chainSubRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
@@ -419,13 +448,19 @@
for (le_uint16 subRule = 0; subRule < chainSubRuleCount; subRule += 1) {
Offset chainSubRuleTableOffset =
SWAPW(chainSubRuleSetTable->chainSubRuleTableOffsetArray[subRule]);
- const ChainSubRuleTable *chainSubRuleTable =
- (const ChainSubRuleTable *) ((char *) chainSubRuleSetTable + chainSubRuleTableOffset);
+ LEReferenceTo<ChainSubRuleTable>
+ chainSubRuleTable = LEReferenceTo<ChainSubRuleTable>(chainSubRuleSetTable, success, chainSubRuleTableOffset);
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 backtrackGlyphCount = SWAPW(chainSubRuleTable->backtrackGlyphCount);
+ LEReferenceToArrayOf<TTGlyphID> backtrackGlyphArray(base, success, chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount);
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 inputGlyphCount = (le_uint16) SWAPW(chainSubRuleTable->backtrackGlyphArray[backtrackGlyphCount]) - 1;
- const TTGlyphID *inputGlyphArray = &chainSubRuleTable->backtrackGlyphArray[backtrackGlyphCount + 1];
+ LEReferenceToArrayOf<TTGlyphID> inputGlyphArray(base, success, &chainSubRuleTable->backtrackGlyphArray[backtrackGlyphCount + 1], inputGlyphCount+2);
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 lookaheadGlyphCount = (le_uint16) SWAPW(inputGlyphArray[inputGlyphCount]);
- const TTGlyphID *lookaheadGlyphArray = &inputGlyphArray[inputGlyphCount + 1];
+ LEReferenceToArrayOf<TTGlyphID> lookaheadGlyphArray(base, success, inputGlyphArray.getAlias(inputGlyphCount + 1,success), lookaheadGlyphCount+2);
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 substCount = (le_uint16) SWAPW(lookaheadGlyphArray[lookaheadGlyphCount]);
tempIterator.setCurrStreamPosition(position);
@@ -435,7 +470,8 @@
}
tempIterator.prev();
- if (! matchGlyphIDs(chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount, &tempIterator, TRUE)) {
+
+ if (! matchGlyphIDs(backtrackGlyphArray, backtrackGlyphCount, &tempIterator, TRUE)) {
continue;
}
@@ -446,8 +482,8 @@
}
if (matchGlyphIDs(inputGlyphArray, inputGlyphCount, glyphIterator)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &lookaheadGlyphArray[lookaheadGlyphCount + 1];
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) lookaheadGlyphArray.getAlias(lookaheadGlyphCount + 1,success), substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -464,7 +500,7 @@
return 0;
}
-le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -480,19 +516,21 @@
}
if (coverageIndex >= 0) {
- const ClassDefinitionTable *backtrackClassDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(backtrackClassDefTableOffset));
- const ClassDefinitionTable *inputClassDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(inputClassDefTableOffset));
- const ClassDefinitionTable *lookaheadClassDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(lookaheadClassDefTableOffset));
+ LEReferenceTo<ClassDefinitionTable>
+ backtrackClassDefinitionTable(base, success, (const ClassDefinitionTable *) ((char *) this + SWAPW(backtrackClassDefTableOffset)));
+ LEReferenceTo<ClassDefinitionTable>
+ inputClassDefinitionTable(base, success, (const ClassDefinitionTable *) ((char *) this + SWAPW(inputClassDefTableOffset)));
+ LEReferenceTo<ClassDefinitionTable>
+ lookaheadClassDefinitionTable(base, success, (const ClassDefinitionTable *) ((char *) this + SWAPW(lookaheadClassDefTableOffset)));
le_uint16 scSetCount = SWAPW(chainSubClassSetCount);
- le_int32 setClass = inputClassDefinitionTable->getGlyphClass(glyphIterator->getCurrGlyphID());
+ le_int32 setClass = inputClassDefinitionTable->getGlyphClass(inputClassDefinitionTable,
+ glyphIterator->getCurrGlyphID(),
+ success);
if (setClass < scSetCount && chainSubClassSetTableOffsetArray[setClass] != 0) {
Offset chainSubClassSetTableOffset = SWAPW(chainSubClassSetTableOffsetArray[setClass]);
- const ChainSubClassSetTable *chainSubClassSetTable =
- (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset);
+ LEReferenceTo<ChainSubClassSetTable>
+ chainSubClassSetTable(base, success, (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset));
le_uint16 chainSubClassRuleCount = SWAPW(chainSubClassSetTable->chainSubClassRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
@@ -500,13 +538,15 @@
for (le_uint16 scRule = 0; scRule < chainSubClassRuleCount; scRule += 1) {
Offset chainSubClassRuleTableOffset =
SWAPW(chainSubClassSetTable->chainSubClassRuleTableOffsetArray[scRule]);
- const ChainSubClassRuleTable *chainSubClassRuleTable =
- (const ChainSubClassRuleTable *) ((char *) chainSubClassSetTable + chainSubClassRuleTableOffset);
+ LEReferenceTo<ChainSubClassRuleTable>
+ chainSubClassRuleTable(chainSubClassSetTable, success, chainSubClassRuleTableOffset);
le_uint16 backtrackGlyphCount = SWAPW(chainSubClassRuleTable->backtrackGlyphCount);
le_uint16 inputGlyphCount = SWAPW(chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount]) - 1;
- const le_uint16 *inputClassArray = &chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount + 1];
- le_uint16 lookaheadGlyphCount = SWAPW(inputClassArray[inputGlyphCount]);
- const le_uint16 *lookaheadClassArray = &inputClassArray[inputGlyphCount + 1];
+ LEReferenceToArrayOf<le_uint16> inputClassArray(base, success, &chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount + 1],inputGlyphCount+2); // +2 for the lookaheadGlyphCount count
+ le_uint16 lookaheadGlyphCount = SWAPW(inputClassArray.getObject(inputGlyphCount, success));
+ LEReferenceToArrayOf<le_uint16> lookaheadClassArray(base, success, inputClassArray.getAlias(inputGlyphCount + 1,success), lookaheadGlyphCount+2); // +2 for the substCount
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 substCount = SWAPW(lookaheadClassArray[lookaheadGlyphCount]);
@@ -517,20 +557,22 @@
}
tempIterator.prev();
- if (! matchGlyphClasses(chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount,
- &tempIterator, backtrackClassDefinitionTable, TRUE)) {
+ LEReferenceToArrayOf<le_uint16> backtrackClassArray(base, success, chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount);
+ if( LE_FAILURE(success) ) { return 0; }
+ if (! matchGlyphClasses(backtrackClassArray, backtrackGlyphCount,
+ &tempIterator, backtrackClassDefinitionTable, success, TRUE)) {
continue;
}
tempIterator.setCurrStreamPosition(position);
tempIterator.next(inputGlyphCount);
- if (! matchGlyphClasses(lookaheadClassArray, lookaheadGlyphCount, &tempIterator, lookaheadClassDefinitionTable)) {
+ if (! matchGlyphClasses(lookaheadClassArray, lookaheadGlyphCount, &tempIterator, lookaheadClassDefinitionTable, success)) {
continue;
}
- if (matchGlyphClasses(inputClassArray, inputGlyphCount, glyphIterator, inputClassDefinitionTable)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &lookaheadClassArray[lookaheadGlyphCount + 1];
+ if (matchGlyphClasses(inputClassArray, inputGlyphCount, glyphIterator, inputClassDefinitionTable, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) lookaheadClassArray.getAlias(lookaheadGlyphCount + 1, success), substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -547,7 +589,7 @@
return 0;
}
-le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode & success) const
@@ -558,9 +600,13 @@
le_uint16 backtrkGlyphCount = SWAPW(backtrackGlyphCount);
le_uint16 inputGlyphCount = (le_uint16) SWAPW(backtrackCoverageTableOffsetArray[backtrkGlyphCount]);
- const Offset *inputCoverageTableOffsetArray = &backtrackCoverageTableOffsetArray[backtrkGlyphCount + 1];
+ LEReferenceToArrayOf<Offset> inputCoverageTableOffsetArray(base, success, &backtrackCoverageTableOffsetArray[backtrkGlyphCount + 1], inputGlyphCount+2); // offset
const le_uint16 lookaheadGlyphCount = (le_uint16) SWAPW(inputCoverageTableOffsetArray[inputGlyphCount]);
- const Offset *lookaheadCoverageTableOffsetArray = &inputCoverageTableOffsetArray[inputGlyphCount + 1];
+
+ if( LE_FAILURE(success) ) { return 0; }
+ LEReferenceToArrayOf<Offset> lookaheadCoverageTableOffsetArray(base, success, inputCoverageTableOffsetArray.getAlias(inputGlyphCount + 1, success), lookaheadGlyphCount+2);
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 substCount = (le_uint16) SWAPW(lookaheadCoverageTableOffsetArray[lookaheadGlyphCount]);
le_int32 position = glyphIterator->getCurrStreamPosition();
GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
@@ -571,14 +617,14 @@
tempIterator.prev();
if (! ContextualSubstitutionBase::matchGlyphCoverages(backtrackCoverageTableOffsetArray,
- backtrkGlyphCount, &tempIterator, (const char *) this, TRUE)) {
+ backtrkGlyphCount, &tempIterator, base, success, TRUE)) {
return 0;
}
tempIterator.setCurrStreamPosition(position);
tempIterator.next(inputGlyphCount - 1);
if (! ContextualSubstitutionBase::matchGlyphCoverages(lookaheadCoverageTableOffsetArray,
- lookaheadGlyphCount, &tempIterator, (const char *) this)) {
+ lookaheadGlyphCount, &tempIterator, base, success)) {
return 0;
}
@@ -589,9 +635,10 @@
glyphIterator->prev();
if (ContextualSubstitutionBase::matchGlyphCoverages(inputCoverageTableOffsetArray,
- inputGlyphCount, glyphIterator, (const char *) this)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &lookaheadCoverageTableOffsetArray[lookaheadGlyphCount + 1];
+ inputGlyphCount, glyphIterator, base, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success,
+ (const SubstitutionLookupRecord *) lookaheadCoverageTableOffsetArray.getAlias(lookaheadGlyphCount + 1,success), substCount);
ContextualSubstitutionBase::applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
--- a/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.h Tue Jan 28 11:21:43 2014 -0800
@@ -56,20 +56,32 @@
struct ContextualSubstitutionBase : GlyphSubstitutionSubtable
{
static le_bool matchGlyphIDs(
- const TTGlyphID *glyphArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
+ const LEReferenceToArrayOf<TTGlyphID> &glyphArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
le_bool backtrack = FALSE);
static le_bool matchGlyphClasses(
- const le_uint16 *classArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
- const ClassDefinitionTable *classDefinitionTable, le_bool backtrack = FALSE);
+ const LEReferenceToArrayOf<le_uint16> &classArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
+ const LEReferenceTo<ClassDefinitionTable> &classDefinitionTable, LEErrorCode &success, le_bool backtrack = FALSE);
static le_bool matchGlyphCoverages(
- const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
- GlyphIterator *glyphIterator, const char *offsetBase, le_bool backtrack = FALSE);
+ const LEReferenceToArrayOf<Offset> &coverageTableOffsetArray, le_uint16 glyphCount,
+ GlyphIterator *glyphIterator, const LETableReference& offsetBase, LEErrorCode &success, le_bool backtrack = FALSE);
+
+ /**
+ * little shim to wrap the Offset array in range checking
+ * @private
+ */
+ static le_bool matchGlyphCoverages(
+ const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
+ GlyphIterator *glyphIterator, const LETableReference& offsetBase, LEErrorCode &success, le_bool backtrack = FALSE) {
+ LEReferenceToArrayOf<Offset> ref(offsetBase, success, coverageTableOffsetArray, glyphCount);
+ if( LE_FAILURE(success) ) { return FALSE; }
+ return matchGlyphCoverages(ref, glyphCount, glyphIterator, offsetBase, success, backtrack);
+ }
static void applySubstitutionLookups(
const LookupProcessor *lookupProcessor,
- const SubstitutionLookupRecord *substLookupRecordArray,
+ const LEReferenceToArrayOf<SubstitutionLookupRecord>& substLookupRecordArray,
le_uint16 substCount,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
@@ -79,7 +91,8 @@
struct ContextualSubstitutionSubtable : ContextualSubstitutionBase
{
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor,
+ GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
struct ContextualSubstitutionFormat1Subtable : ContextualSubstitutionSubtable
@@ -87,7 +100,8 @@
le_uint16 subRuleSetCount;
Offset subRuleSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ContextualSubstitutionFormat1Subtable, subRuleSetTableOffsetArray)
@@ -116,7 +130,7 @@
le_uint16 subClassSetCount;
Offset subClassSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ContextualSubstitutionFormat2Subtable, subClassSetTableOffsetArray)
@@ -152,13 +166,15 @@
Offset coverageTableOffsetArray[ANY_NUMBER];
//SubstitutionLookupRecord substLookupRecord[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ContextualSubstitutionFormat3Subtable, coverageTableOffsetArray)
struct ChainingContextualSubstitutionSubtable : ContextualSubstitutionBase
{
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LEReferenceTo<ChainingContextualSubstitutionSubtable> &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
struct ChainingContextualSubstitutionFormat1Subtable : ChainingContextualSubstitutionSubtable
@@ -166,7 +182,8 @@
le_uint16 chainSubRuleSetCount;
Offset chainSubRuleSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ChainingContextualSubstitutionFormat1Subtable, chainSubRuleSetTableOffsetArray)
@@ -201,7 +218,8 @@
le_uint16 chainSubClassSetCount;
Offset chainSubClassSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ChainingContextualSubstitutionFormat2Subtable, chainSubClassSetTableOffsetArray)
@@ -243,7 +261,8 @@
//le_uint16 substCount;
//SubstitutionLookupRecord substLookupRecord[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor,
+ GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ChainingContextualSubstitutionFormat3Subtable, backtrackCoverageTableOffsetArray)
--- a/jdk/src/share/native/sun/font/layout/CoverageTables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CoverageTables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -37,8 +37,10 @@
U_NAMESPACE_BEGIN
-le_int32 CoverageTable::getGlyphCoverage(LEGlyphID glyphID) const
+le_int32 CoverageTable::getGlyphCoverage(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const
{
+ if(LE_FAILURE(success)) return -1;
+
switch(SWAPW(coverageFormat))
{
case 0:
@@ -46,16 +48,16 @@
case 1:
{
- const CoverageFormat1Table *f1Table = (const CoverageFormat1Table *) this;
+ LEReferenceTo<CoverageFormat1Table> f1Table(base, success);
- return f1Table->getGlyphCoverage(glyphID);
+ return f1Table->getGlyphCoverage(f1Table, glyphID, success);
}
case 2:
{
- const CoverageFormat2Table *f2Table = (const CoverageFormat2Table *) this;
+ LEReferenceTo<CoverageFormat2Table> f2Table(base, success);
- return f2Table->getGlyphCoverage(glyphID);
+ return f2Table->getGlyphCoverage(f2Table, glyphID, success);
}
default:
@@ -63,8 +65,10 @@
}
}
-le_int32 CoverageFormat1Table::getGlyphCoverage(LEGlyphID glyphID) const
+le_int32 CoverageFormat1Table::getGlyphCoverage(LEReferenceTo<CoverageFormat1Table> &base, LEGlyphID glyphID, LEErrorCode &success) const
{
+ if(LE_FAILURE(success)) return -1;
+
TTGlyphID ttGlyphID = (TTGlyphID) LE_GET_GLYPH(glyphID);
le_uint16 count = SWAPW(glyphCount);
le_uint8 bit = OpenTypeUtilities::highBit(count);
@@ -73,37 +77,45 @@
le_uint16 probe = power;
le_uint16 index = 0;
- if (count == 0) {
- return -1;
- }
+ if (count == 0) {
+ return -1;
+ }
+
+ LEReferenceToArrayOf<TTGlyphID>(base, success, glyphArray, count);
+ if(LE_FAILURE(success)) return -1; // range checks array
+
if (SWAPW(glyphArray[extra]) <= ttGlyphID) {
- index = extra;
+ index = extra;
}
while (probe > (1 << 0)) {
- probe >>= 1;
+ probe >>= 1;
- if (SWAPW(glyphArray[index + probe]) <= ttGlyphID) {
- index += probe;
- }
+ if (SWAPW(glyphArray[index + probe]) <= ttGlyphID) {
+ index += probe;
+ }
}
if (SWAPW(glyphArray[index]) == ttGlyphID) {
- return index;
+ return index;
}
return -1;
}
-le_int32 CoverageFormat2Table::getGlyphCoverage(LEGlyphID glyphID) const
+le_int32 CoverageFormat2Table::getGlyphCoverage(LEReferenceTo<CoverageFormat2Table> &base, LEGlyphID glyphID, LEErrorCode &success) const
{
+ if(LE_FAILURE(success)) return -1;
+
TTGlyphID ttGlyphID = (TTGlyphID) LE_GET_GLYPH(glyphID);
le_uint16 count = SWAPW(rangeCount);
+
+ LEReferenceToArrayOf<GlyphRangeRecord> rangeRecordArrayRef(base, success, rangeRecordArray, count);
le_int32 rangeIndex =
- OpenTypeUtilities::getGlyphRangeIndex(ttGlyphID, rangeRecordArray, count);
+ OpenTypeUtilities::getGlyphRangeIndex(ttGlyphID, rangeRecordArrayRef, success);
- if (rangeIndex < 0) {
+ if (rangeIndex < 0 || LE_FAILURE(success)) { // could fail if array out of bounds
return -1;
}
--- a/jdk/src/share/native/sun/font/layout/CoverageTables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CoverageTables.h Tue Jan 28 11:21:43 2014 -0800
@@ -46,7 +46,7 @@
{
le_uint16 coverageFormat;
- le_int32 getGlyphCoverage(LEGlyphID glyphID) const;
+ le_int32 getGlyphCoverage(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const;
};
struct CoverageFormat1Table : CoverageTable
@@ -54,7 +54,7 @@
le_uint16 glyphCount;
TTGlyphID glyphArray[ANY_NUMBER];
- le_int32 getGlyphCoverage(LEGlyphID glyphID) const;
+ le_int32 getGlyphCoverage(LEReferenceTo<CoverageFormat1Table> &base, LEGlyphID glyphID, LEErrorCode &success) const;
};
LE_VAR_ARRAY(CoverageFormat1Table, glyphArray)
@@ -64,7 +64,7 @@
le_uint16 rangeCount;
GlyphRangeRecord rangeRecordArray[ANY_NUMBER];
- le_int32 getGlyphCoverage(LEGlyphID glyphID) const;
+ le_int32 getGlyphCoverage(LEReferenceTo<CoverageFormat2Table> &base, LEGlyphID glyphID, LEErrorCode &success) const;
};
LE_VAR_ARRAY(CoverageFormat2Table, rangeRecordArray)
--- a/jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -51,23 +51,27 @@
}
LEPoint entryAnchor, exitAnchor;
- Offset entryOffset = SWAPW(entryExitRecords[coverageIndex].entryAnchor); // TODO
+ Offset entryOffset = SWAPW(entryExitRecords[coverageIndex].entryAnchor);
Offset exitOffset = SWAPW(entryExitRecords[coverageIndex].exitAnchor);
if (entryOffset != 0) {
- const AnchorTable *entryAnchorTable = (const AnchorTable *) ((char *) this + entryOffset);
+ LEReferenceTo<AnchorTable> entryAnchorTable(base, success, entryOffset);
- entryAnchorTable->getAnchor(glyphID, fontInstance, entryAnchor);
- glyphIterator->setCursiveEntryPoint(entryAnchor);
+ if( LE_SUCCESS(success) ) {
+ entryAnchorTable->getAnchor(entryAnchorTable, glyphID, fontInstance, entryAnchor, success);
+ glyphIterator->setCursiveEntryPoint(entryAnchor);
+ }
} else {
//glyphIterator->clearCursiveEntryPoint();
}
if (exitOffset != 0) {
- const AnchorTable *exitAnchorTable = (const AnchorTable *) ((char *) this + exitOffset);
+ LEReferenceTo<AnchorTable> exitAnchorTable(base, success, exitOffset);
- exitAnchorTable->getAnchor(glyphID, fontInstance, exitAnchor);
- glyphIterator->setCursiveExitPoint(exitAnchor);
+ if( LE_SUCCESS(success) ) {
+ exitAnchorTable->getAnchor(exitAnchorTable, glyphID, fontInstance, exitAnchor, success);
+ glyphIterator->setCursiveExitPoint(exitAnchor);
+ }
} else {
//glyphIterator->clearCursiveExitPoint();
}
--- a/jdk/src/share/native/sun/font/layout/DeviceTables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/DeviceTables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -43,7 +43,7 @@
#define FORMAT_COUNT LE_ARRAY_SIZE(fieldBits)
-le_int16 DeviceTable::getAdjustment(le_uint16 ppem) const
+le_int16 DeviceTable::getAdjustment(const LEReferenceTo<DeviceTable>&base, le_uint16 ppem, LEErrorCode &success) const
{
le_uint16 start = SWAPW(startSize);
le_uint16 format = SWAPW(deltaFormat) - 1;
@@ -53,6 +53,13 @@
le_uint16 sizeIndex = ppem - start;
le_uint16 bits = fieldBits[format];
le_uint16 count = 16 / bits;
+
+ LEReferenceToArrayOf<le_uint16> deltaValuesRef(base, success, deltaValues, (sizeIndex / count));
+
+ if(LE_FAILURE(success)) {
+ return result;
+ }
+
le_uint16 word = SWAPW(deltaValues[sizeIndex / count]);
le_uint16 fieldIndex = sizeIndex % count;
le_uint16 shift = 16 - (bits * (fieldIndex + 1));
--- a/jdk/src/share/native/sun/font/layout/DeviceTables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/DeviceTables.h Tue Jan 28 11:21:43 2014 -0800
@@ -50,7 +50,7 @@
le_uint16 deltaFormat;
le_uint16 deltaValues[ANY_NUMBER];
- le_int16 getAdjustment(le_uint16 ppem) const;
+ le_int16 getAdjustment(const LEReferenceTo<DeviceTable> &base, le_uint16 ppem, LEErrorCode &success) const;
private:
static const le_uint16 fieldMasks[];
--- a/jdk/src/share/native/sun/font/layout/ExtensionSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ExtensionSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -48,7 +48,6 @@
const LookupProcessor *lookupProcessor, le_uint16 lookupType,
GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const
{
-
if (LE_FAILURE(success)) {
return 0;
}
--- a/jdk/src/share/native/sun/font/layout/ExtensionSubtables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ExtensionSubtables.h Tue Jan 28 11:21:43 2014 -0800
@@ -52,8 +52,7 @@
le_uint16 extensionLookupType;
le_uint32 extensionOffset;
- le_uint32 process(const LEReferenceTo<ExtensionSubtable> &extRef,
- const LookupProcessor *lookupProcessor, le_uint16 lookupType,
+ le_uint32 process(const LEReferenceTo<ExtensionSubtable> &base, const LookupProcessor *lookupProcessor, le_uint16 lookupType,
GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
--- a/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -49,11 +49,11 @@
// nothing to do?
}
-le_bool GDEFMarkFilter::accept(LEGlyphID glyph) const
+le_bool GDEFMarkFilter::accept(LEGlyphID glyph, LEErrorCode &success) const
{
- le_int32 glyphClass = classDefTable->getGlyphClass(glyph);
+ le_int32 glyphClass = classDefTable->getGlyphClass(classDefTable, glyph, success);
- return glyphClass == gcdMarkGlyph;
+ return glyphClass == gcdMarkGlyph;
}
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.h Tue Jan 28 11:21:43 2014 -0800
@@ -55,7 +55,7 @@
GDEFMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success);
virtual ~GDEFMarkFilter();
- virtual le_bool accept(LEGlyphID glyph) const;
+ virtual le_bool accept(LEGlyphID glyph, LEErrorCode &success) const;
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/GlyphIterator.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphIterator.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -41,14 +41,13 @@
U_NAMESPACE_BEGIN
GlyphIterator::GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
- FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader)
+ FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader, LEErrorCode &success)
: direction(1), position(-1), nextLimit(-1), prevLimit(-1),
glyphStorage(theGlyphStorage), glyphPositionAdjustments(theGlyphPositionAdjustments),
srcIndex(-1), destIndex(-1), lookupFlags(theLookupFlags), featureMask(theFeatureMask), glyphGroup(0),
glyphClassDefinitionTable(), markAttachClassDefinitionTable()
{
- LEErrorCode success = LE_NO_ERROR; // TODO
le_int32 glyphCount = glyphStorage.getGlyphCount();
if (theGlyphDefinitionTableHeader.isValid()) {
@@ -388,7 +387,7 @@
void GlyphIterator::filterResetCache(void) {
filterCacheValid = FALSE;
- }
+}
le_bool GlyphIterator::filterGlyph(le_uint32 index)
{
@@ -399,53 +398,53 @@
le_bool &filterResult = filterCache.result; // NB: Making this a reference to accept the updated value, in case
// we want more fancy cacheing in the future.
- if (LE_GET_GLYPH(glyphID) >= 0xFFFE) {
+ if (LE_GET_GLYPH(glyphID) >= 0xFFFE) {
filterResult = TRUE;
} else {
LEErrorCode success = LE_NO_ERROR;
le_int32 glyphClass = gcdNoGlyphClass;
- if (glyphClassDefinitionTable.isValid()) {
- glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphClassDefinitionTable, glyphID, success);
- }
+ if (glyphClassDefinitionTable.isValid()) {
+ glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphClassDefinitionTable, glyphID, success);
+ }
switch (glyphClass) {
- case gcdNoGlyphClass:
+ case gcdNoGlyphClass:
filterResult = FALSE;
break;
- case gcdSimpleGlyph:
+ case gcdSimpleGlyph:
filterResult = (lookupFlags & lfIgnoreBaseGlyphs) != 0;
break;
- case gcdLigatureGlyph:
+ case gcdLigatureGlyph:
filterResult = (lookupFlags & lfIgnoreLigatures) != 0;
break;
- case gcdMarkGlyph:
- if ((lookupFlags & lfIgnoreMarks) != 0) {
+ case gcdMarkGlyph:
+ if ((lookupFlags & lfIgnoreMarks) != 0) {
filterResult = TRUE;
} else {
- le_uint16 markAttachType = (lookupFlags & lfMarkAttachTypeMask) >> lfMarkAttachTypeShift;
+ le_uint16 markAttachType = (lookupFlags & lfMarkAttachTypeMask) >> lfMarkAttachTypeShift;
- if ((markAttachType != 0) && (markAttachClassDefinitionTable.isValid())) {
+ if ((markAttachType != 0) && (markAttachClassDefinitionTable.isValid())) {
filterResult = (markAttachClassDefinitionTable
-> getGlyphClass(markAttachClassDefinitionTable, glyphID, success) != markAttachType);
} else {
filterResult = FALSE;
- }
- }
+ }
+ }
break;
- case gcdComponentGlyph:
+ case gcdComponentGlyph:
filterResult = ((lookupFlags & lfIgnoreBaseGlyphs) != 0);
break;
- default:
+ default:
filterResult = FALSE;
break;
- }
+ }
}
filterCacheValid = TRUE;
- }
+ }
return filterCache.result;
}
--- a/jdk/src/share/native/sun/font/layout/GlyphIterator.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphIterator.h Tue Jan 28 11:21:43 2014 -0800
@@ -49,7 +49,7 @@
class GlyphIterator : public UMemory {
public:
GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
- FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader);
+ FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader, LEErrorCode &success);
GlyphIterator(GlyphIterator &that);
--- a/jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -95,6 +95,8 @@
le_uint32 delta = 0;
+ //_LETRACE("attempting lookupType #%d", lookupType);
+
switch(lookupType)
{
case 0:
@@ -152,21 +154,21 @@
{
LEReferenceTo<ContextualPositioningSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this , glyphIterator, fontInstance, success);
break;
}
case gpstChainedContext:
{
- LEReferenceTo<ChainingContextualPositioningSubtable> subtable(lookupSubtable, success);
+ const LEReferenceTo<ChainingContextualPositioningSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this, glyphIterator, fontInstance, success);
break;
}
case gpstExtension:
{
- LEReferenceTo<ExtensionSubtable> subtable(lookupSubtable, success);
+ const LEReferenceTo<ExtensionSubtable> subtable(lookupSubtable, success);
delta = subtable->process(subtable, this, lookupType, glyphIterator, fontInstance, success);
break;
@@ -176,6 +178,12 @@
break;
}
+#if LE_TRACE
+ if(delta != 0) {
+ _LETRACE("GlyphPositioningLookupProcessor applied #%d -> delta %d @ %d", lookupType, delta, glyphIterator->getCurrStreamPosition());
+ }
+#endif
+
return delta;
}
--- a/jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -123,7 +123,7 @@
{
const LEReferenceTo<ContextualSubstitutionSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this, glyphIterator, fontInstance, success);
break;
}
@@ -131,7 +131,7 @@
{
const LEReferenceTo<ChainingContextualSubstitutionSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this, glyphIterator, fontInstance, success);
break;
}
--- a/jdk/src/share/native/sun/font/layout/IndicLayoutEngine.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/IndicLayoutEngine.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -44,7 +44,7 @@
#include "LEGlyphStorage.h"
#include "IndicReordering.h"
-#include <stdio.h>
+
U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndicOpenTypeLayoutEngine)
@@ -53,14 +53,14 @@
le_int32 typoFlags, le_bool version2, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success)
: OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success), fMPreFixups(NULL)
{
- if ( version2 ) {
- fFeatureMap = IndicReordering::getv2FeatureMap(fFeatureMapCount);
- } else {
+ if ( version2 ) {
+ fFeatureMap = IndicReordering::getv2FeatureMap(fFeatureMapCount);
+ } else {
fFeatureMap = IndicReordering::getFeatureMap(fFeatureMapCount);
- }
- fFeatureOrder = TRUE;
- fVersion2 = version2;
- fFilterZeroWidth = IndicReordering::getFilterZeroWidth(fScriptCode);
+ }
+ fFeatureOrder = TRUE;
+ fVersion2 = version2;
+ fFilterZeroWidth = IndicReordering::getFilterZeroWidth(fScriptCode);
}
IndicOpenTypeLayoutEngine::IndicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typoFlags, LEErrorCode &success)
@@ -68,7 +68,7 @@
{
fFeatureMap = IndicReordering::getFeatureMap(fFeatureMapCount);
fFeatureOrder = TRUE;
- fVersion2 = FALSE;
+ fVersion2 = FALSE;
}
IndicOpenTypeLayoutEngine::~IndicOpenTypeLayoutEngine()
@@ -90,6 +90,7 @@
return 0;
}
+ _LETRACE("IOTLE::gp, calling parent");
le_int32 retCount = OpenTypeLayoutEngine::glyphProcessing(chars, offset, count, max, rightToLeft, glyphStorage, success);
if (LE_FAILURE(success)) {
@@ -97,11 +98,15 @@
}
if (fVersion2) {
- IndicReordering::finalReordering(glyphStorage,retCount);
- IndicReordering::applyPresentationForms(glyphStorage,retCount);
- OpenTypeLayoutEngine::glyphSubstitution(count,max, rightToLeft, glyphStorage, success);
+ _LETRACE("IOTLE::gp, v2 final,");
+ IndicReordering::finalReordering(glyphStorage,retCount);
+ _LETRACE("IOTLE::gp, v2 pres");
+ IndicReordering::applyPresentationForms(glyphStorage,retCount);
+ _LETRACE("IOTLE::gp, parent gsub");
+ OpenTypeLayoutEngine::glyphSubstitution(count,max, rightToLeft, glyphStorage, success);
} else {
- IndicReordering::adjustMPres(fMPreFixups, glyphStorage, success);
+ _LETRACE("IOTLE::gp, adjust mpres");
+ IndicReordering::adjustMPres(fMPreFixups, glyphStorage, success);
}
return retCount;
}
@@ -116,6 +121,8 @@
return 0;
}
+ _LETRACE("IOTLE: charProc");
+
if (chars == NULL || offset < 0 || count < 0 || max < 0 || offset >= max || offset + count > max) {
success = LE_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -143,8 +150,10 @@
le_int32 outCharCount;
if (fVersion2) {
+ _LETRACE("v2process");
outCharCount = IndicReordering::v2process(&chars[offset], count, fScriptCode, outChars, glyphStorage);
} else {
+ _LETRACE("reorder");
outCharCount = IndicReordering::reorder(&chars[offset], count, fScriptCode, outChars, glyphStorage, &fMPreFixups, success);
}
--- a/jdk/src/share/native/sun/font/layout/IndicReordering.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/IndicReordering.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -254,8 +254,8 @@
return fGlyphStorage.getAuxData(charIndex,success);
}
- void decomposeReorderMatras ( const IndicClassTable *classTable, le_int32 beginSyllable, le_int32 nextSyllable, le_int32 inv_count ) {
- le_int32 i;
+ void decomposeReorderMatras ( const IndicClassTable *classTable, le_int32 beginSyllable, le_int32 nextSyllable, le_int32 inv_count ) {
+ le_int32 i;
LEErrorCode success = LE_NO_ERROR;
for ( i = beginSyllable ; i < nextSyllable ; i++ ) {
--- a/jdk/src/share/native/sun/font/layout/KernTable.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/KernTable.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -39,7 +39,7 @@
#include <stdio.h>
-#define DEBUG 0
+#define DEBUG_KERN_TABLE 0
U_NAMESPACE_BEGIN
@@ -99,14 +99,14 @@
: pairsSwapped(NULL), fTable(base)
{
if(LE_FAILURE(success) || (fTable.isEmpty())) {
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stderr, "no kern data\n");
#endif
return;
}
LEReferenceTo<KernTableHeader> header(fTable, success);
-#if DEBUG
+#if DEBUG_KERN_TABLE
// dump first 32 bytes of header
for (int i = 0; i < 64; ++i) {
fprintf(stderr, "%0.2x ", ((const char*)header.getAlias())[i]&0xff);
@@ -171,13 +171,13 @@
fprintf(stderr, " searchRange: %d entrySelector: %d rangeShift: %d\n", searchRange, entrySelector, rangeShift);
fprintf(stderr, "[[ ignored font table entries: range %d selector %d shift %d ]]\n", SWAPW(table->searchRange), SWAPW(table->entrySelector), SWAPW(table->rangeShift));
#endif
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stderr, "coverage: %0.4x nPairs: %d pairs 0x%x\n", coverage, nPairs, pairsSwapped);
fprintf(stderr,
" searchRange(pairs): %d entrySelector: %d rangeShift(pairs): %d\n",
searchRange, entrySelector, rangeShift);
- {
+ if (LE_SUCCESS(success)) {
// dump part of the pair list
char ids[256];
for (int i = 256; --i >= 0;) {
@@ -242,7 +242,7 @@
p = tp;
}
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stderr, "binary search for %0.8x\n", key);
#endif
@@ -251,13 +251,13 @@
probe >>= 1;
tp = (const PairInfo*)(p + (probe/KERN_PAIRINFO_SIZE));
le_uint32 tkey = tp->key;
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stdout, " %.3d (%0.8x)\n", (tp - pairsSwapped), tkey);
#endif
if (tkey <= key) {
if (tkey == key) {
le_int16 value = SWAPW(tp->value);
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stdout, "binary found kerning pair %x:%x at %d, value: 0x%x (%g)\n",
storage[i-1], storage[i], i, value & 0xffff, font->xUnitsToPoints(value));
fflush(stdout);
--- a/jdk/src/share/native/sun/font/layout/LEFontInstance.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEFontInstance.h Tue Jan 28 11:21:43 2014 -0800
@@ -181,6 +181,10 @@
*
* Subclasses which represent composite fonts should always return <code>NULL</code>.
*
+ * Note that implementing this function does not allow for range checking.
+ * Subclasses that desire the safety of range checking must implement the
+ * variation which has a length parameter.
+ *
* @param tableTag - the four byte table tag. (e.g. 'cmap')
*
* @return the address of the table in memory, or <code>NULL</code>
@@ -200,6 +204,8 @@
* Subclasses which represent composite fonts should always return <code>NULL</code>.
*
* This version sets a length, for range checking.
+ * Note that range checking can only be accomplished if this function is
+ * implemented in subclasses.
*
* @param tableTag - the four byte table tag. (e.g. 'cmap')
* @param length - ignored on entry, on exit will be the length of the table if known, or -1 if unknown.
@@ -572,5 +578,3 @@
U_NAMESPACE_END
#endif
-
-
--- a/jdk/src/share/native/sun/font/layout/LEGlyphFilter.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEGlyphFilter.h Tue Jan 28 11:21:43 2014 -0800
@@ -62,7 +62,7 @@
*
* @internal
*/
- virtual le_bool accept(LEGlyphID glyph) const = 0;
+ virtual le_bool accept(LEGlyphID glyph, LEErrorCode &success) const = 0;
};
#endif /* U_HIDE_INTERNAL_API */
--- a/jdk/src/share/native/sun/font/layout/LEGlyphStorage.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEGlyphStorage.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -458,7 +458,7 @@
success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
return;
}
-
+ _LETRACE("set%-4d\t(%.2f, %.2f)", glyphIndex, x, y);
fPositions[glyphIndex * 2] = x;
fPositions[glyphIndex * 2 + 1] = y;
}
@@ -688,10 +688,9 @@
// the source glyph we're pointing at
// just got replaced by the insertion
- fSrcIndex -= 1;
+ fSrcIndex -= 1;
return FALSE;
}
U_NAMESPACE_END
-
--- a/jdk/src/share/native/sun/font/layout/LEGlyphStorage.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEGlyphStorage.h Tue Jan 28 11:21:43 2014 -0800
@@ -568,4 +568,3 @@
U_NAMESPACE_END
#endif
-
--- a/jdk/src/share/native/sun/font/layout/LEScripts.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEScripts.h Tue Jan 28 11:21:43 2014 -0800
@@ -30,7 +30,7 @@
* WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
* YOU REALLY KNOW WHAT YOU'RE DOING.
*
- * Generated on: 10/26/2010 02:53:33 PM PDT
+ * Generated on: 11/01/2011 04:08:09 PM PDT
*/
#ifndef __LESCRIPTS_H
@@ -262,7 +262,16 @@
khojScriptCode = 157,
tirhScriptCode = 158,
- scriptCodeCount = 159
+/**
+ * @stable ICU 52
+ */
+ aghbScriptCode = 159,
+ mahjScriptCode = 160,
+
+/**
+ * @stable ICU 2.2
+ */
+ scriptCodeCount
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/LEStandalone.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEStandalone.h Tue Jan 28 11:21:43 2014 -0800
@@ -132,6 +132,9 @@
#define uprv_memcpy memcpy
#define uprv_realloc realloc
+#define U_EXPORT2
+#define U_CAPI extern "C"
+
#if !defined(U_IS_BIG_ENDIAN)
#ifdef _LITTLE_ENDIAN
#define U_IS_BIG_ENDIAN 0
--- a/jdk/src/share/native/sun/font/layout/LETableReference.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LETableReference.h Tue Jan 28 11:21:43 2014 -0800
@@ -37,34 +37,47 @@
#include "LETypes.h"
#include "LEFontInstance.h"
+/**
+ * \def LE_ENABLE_RAW
+ * If this is 1, enables old non-safe raw access
+ */
+#ifndef LE_ENABLE_RAW
+#define LE_ENABLE_RAW 0
+#endif
-#define kQuestionmarkTableTag 0x3F3F3F3FUL
-#define kTildeTableTag 0x7e7e7e7eUL
+#define kQuestionmarkTableTag 0x3F3F3F3FUL /* ???? */
+#define kStaticTableTag 0x30303030UL /* 0000 */
+#define kTildeTableTag 0x7e7e7e7eUL /* ~~~~ */
#ifdef __cplusplus
// internal - interface for range checking
U_NAMESPACE_BEGIN
#if LE_ASSERT_BAD_FONT
+
+#ifndef LE_TRACE_TR
+#define LE_TRACE_TR 0
+#endif
+
class LETableReference; // fwd
/**
* defined in OpenTypeUtilities.cpp
* @internal
*/
-extern void _debug_LETableReference(const char *f, int l, const char *msg, const LETableReference *what, const void *ptr, size_t len);
+U_CAPI void U_EXPORT2 _debug_LETableReference(const char *f, int l, const char *msg, const LETableReference *what, const void *ptr, size_t len);
#define LE_DEBUG_TR(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0);
#define LE_DEBUG_TR3(x,y,z) _debug_LETableReference(__FILE__, __LINE__, x, this, (const void*)y, (size_t)z);
-#if 0
-#define LE_TRACE_TR(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0);
+#if LE_TRACE_TR
+#define _TRTRACE(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0);
#else
-#define LE_TRACE_TR(x)
+#define _TRTRACE(x)
#endif
#else
#define LE_DEBUG_TR(x)
#define LE_DEBUG_TR3(x,y,z)
-#define LE_TRACE_TR(x)
+#define _TRTRACE(x)
#endif
/**
@@ -72,6 +85,13 @@
*/
class LETableReference {
public:
+
+ /**
+ * Dummy enum asserting that a value is actually static data
+ * and does not need to be range checked
+ */
+ enum EStaticData { kStaticData = 0 };
+
/**
* @internal
* Construct from a specific tag
@@ -79,28 +99,42 @@
LETableReference(const LEFontInstance* font, LETag tableTag, LEErrorCode &success) :
fFont(font), fTag(tableTag), fParent(NULL), fStart(NULL),fLength(LE_UINTPTR_MAX) {
loadTable(success);
- LE_TRACE_TR("INFO: new table load")
+ _TRTRACE("INFO: new table load")
}
LETableReference(const LETableReference &parent, LEErrorCode &success) : fFont(parent.fFont), fTag(parent.fTag), fParent(&parent), fStart(parent.fStart), fLength(parent.fLength) {
if(LE_FAILURE(success)) {
clear();
}
- LE_TRACE_TR("INFO: new clone")
+ _TRTRACE("INFO: new clone")
}
+#if LE_ENABLE_RAW
+ /**
+ * Construct without a parent LETR.
+ */
LETableReference(const le_uint8* data, size_t length = LE_UINTPTR_MAX) :
fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(data), fLength(length) {
- LE_TRACE_TR("INFO: new raw")
+ _TRTRACE("INFO: new raw")
}
+#endif
+
+ /**
+ * Construct without a parent LETR.
+ */
+ LETableReference(EStaticData /* NOTUSED */, const le_uint8* data, size_t length) :
+ fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(data), fLength(length) {
+ _TRTRACE("INFO: new EStaticData")
+ }
+
LETableReference() :
fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(NULL), fLength(0) {
- LE_TRACE_TR("INFO: new empty")
+ _TRTRACE("INFO: new empty")
}
~LETableReference() {
- fTag=kTildeTableTag;
- LE_TRACE_TR("INFO: new dtor")
+ fTag= (LETag)kTildeTableTag;
+ _TRTRACE("INFO: new dtor")
}
/**
@@ -126,7 +160,7 @@
fLength = (fParent->fLength) - offset; // decrement length as base address is incremented
}
if(fLength != LE_UINTPTR_MAX) { // if we have bounds:
- if(offset+fLength > fParent->fLength) {
+ if((offset+fLength < offset) || (offset+fLength > fParent->fLength)) {
LE_DEBUG_TR3("offset+fLength out of range: (%p) +%d", NULL, offset+fLength);
err = LE_INDEX_OUT_OF_BOUNDS_ERROR; // exceeded
clear();
@@ -136,11 +170,13 @@
} else {
clear();
}
- LE_TRACE_TR("INFO: new subset")
+ _TRTRACE("INFO: new subset")
}
const void* getAlias() const { return (const void*)fStart; }
- const void* getAliasTODO() const { LE_DEBUG_TR("getAliasTODO()"); return (const void*)fStart; }
+#ifndef LE_ENABLE_RAW
+ const void* getAliasRAW() const { LE_DEBUG_TR("getAliasRAW()"); return (const void*)fStart; }
+#endif
le_bool isEmpty() const { return fStart==NULL || fLength==0; }
le_bool isValid() const { return !isEmpty(); }
le_bool hasBounds() const { return fLength!=LE_UINTPTR_MAX; }
@@ -233,7 +269,18 @@
void setRaw(const void *data, size_t length = LE_UINTPTR_MAX) {
fFont = NULL;
- fTag = kQuestionmarkTableTag;
+ fTag = (LETag)kQuestionmarkTableTag;
+ fParent = NULL;
+ fStart = (const le_uint8*)data;
+ fLength = length;
+ }
+
+ /**
+ * set this object pointing to static data
+ */
+ void setTo(EStaticData /*notused*/, const void *data, size_t length) {
+ fFont = NULL;
+ fTag = (LETag)kStaticTableTag;
fParent = NULL;
fStart = (const le_uint8*)data;
fLength = length;
@@ -276,97 +323,6 @@
* Open a new entry based on an existing table
*/
-/**
- * \def LE_UNBOUNDED_ARRAY
- * define an array with no *known* bound. Will trim to available size.
- * @internal
- */
-#define LE_UNBOUNDED_ARRAY LE_UINT32_MAX
-
-template<class T>
-class LEReferenceToArrayOf : public LETableReference {
-public:
- LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, size_t offset, le_uint32 count)
- : LETableReference(parent, offset, LE_UINTPTR_MAX, success), fCount(count) {
- LE_TRACE_TR("INFO: new RTAO by offset")
- if(LE_SUCCESS(success)) {
- if(count == LE_UNBOUNDED_ARRAY) { // not a known length
- count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
- }
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success);
- }
- if(LE_FAILURE(success)) {
- fCount=0;
- clear();
- }
- }
-
- LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, le_uint32 count)
- : LETableReference(parent, parent.ptrToOffset(array, success), LE_UINTPTR_MAX, success), fCount(count) {
-LE_TRACE_TR("INFO: new RTAO")
- if(LE_SUCCESS(success)) {
- if(count == LE_UNBOUNDED_ARRAY) { // not a known length
- count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
- }
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success);
- }
- if(LE_FAILURE(success)) clear();
- }
- LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, size_t offset, le_uint32 count)
- : LETableReference(parent, parent.ptrToOffset(array, success)+offset, LE_UINTPTR_MAX, success), fCount(count) {
-LE_TRACE_TR("INFO: new RTAO")
- if(LE_SUCCESS(success)) {
- if(count == LE_UNBOUNDED_ARRAY) { // not a known length
- count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
- }
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success);
- }
- if(LE_FAILURE(success)) clear();
- }
-
- LEReferenceToArrayOf() :LETableReference(), fCount(0) {}
-
- le_uint32 getCount() const { return fCount; }
-
- using LETableReference::getAlias;
-
- const T *getAlias(le_uint32 i, LEErrorCode &success) const {
- return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success)));
- }
-
- const T *getAliasTODO() const { LE_DEBUG_TR("getAliasTODO<>"); return (const T*)fStart; }
-
- const T& getObject(le_uint32 i, LEErrorCode &success) const {
- return *getAlias(i,success);
- }
-
- const T& operator()(le_uint32 i, LEErrorCode &success) const {
- return *getAlias(i,success);
- }
-
- size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const {
- if(LE_SUCCESS(success)&&i<getCount()) {
- return LETableVarSizer<T>::getSize()*i;
- } else {
- success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
- }
- return 0;
- }
-
- LEReferenceToArrayOf<T> &reparent(const LETableReference &base) {
- fParent = &base;
- return *this;
- }
-
- LEReferenceToArrayOf(const LETableReference& parent, LEErrorCode & success) : LETableReference(parent,0, LE_UINTPTR_MAX, success), fCount(0) {
- LE_TRACE_TR("INFO: null RTAO")
- }
-
-private:
- le_uint32 fCount;
-};
-
-
template<class T>
class LEReferenceTo : public LETableReference {
public:
@@ -404,14 +360,26 @@
verifyLength(0, LETableVarSizer<T>::getSize(), success);
if(LE_FAILURE(success)) clear();
}
+#if LE_ENABLE_RAW
inline LEReferenceTo(const le_uint8 *data, size_t length = LE_UINTPTR_MAX) : LETableReference(data, length) {}
inline LEReferenceTo(const T *data, size_t length = LE_UINTPTR_MAX) : LETableReference((const le_uint8*)data, length) {}
- inline LEReferenceTo() : LETableReference(NULL) {}
+#endif
+ inline LEReferenceTo(EStaticData staticData, const le_uint8 *data, size_t length) : LETableReference(staticData, data, length) {}
+ inline LEReferenceTo(EStaticData staticData, const T *data, size_t length) : LETableReference(staticData, (const le_uint8*)data, length) {}
+ inline LEReferenceTo() : LETableReference() {}
+
+#if LE_ENABLE_RAW
inline LEReferenceTo<T>& operator=(const T* other) {
setRaw(other);
return *this;
}
+#endif
+
+ LEReferenceTo<T>& setTo(LETableReference::EStaticData staticData, const T* other, size_t length) {
+ LETableReference::setTo(staticData, other, length);
+ return *this;
+ }
LEReferenceTo<T> &reparent(const LETableReference &base) {
fParent = &base;
@@ -430,11 +398,135 @@
}
const T *operator->() const { return getAlias(); }
+ const T *operator*() const { return getAlias(); }
const T *getAlias() const { return (const T*)fStart; }
- const T *getAliasTODO() const { LE_DEBUG_TR("getAliasTODO<>"); return (const T*)fStart; }
+#if LE_ENABLE_RAW
+ const T *getAliasRAW() const { LE_DEBUG_TR("getAliasRAW<>"); return (const T*)fStart; }
+#endif
+
};
+/**
+ * \def LE_UNBOUNDED_ARRAY
+ * define an array with no *known* bound. Will trim to available size.
+ * @internal
+ */
+#define LE_UNBOUNDED_ARRAY LE_UINT32_MAX
+
+template<class T>
+class LEReferenceToArrayOf : public LETableReference {
+public:
+ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, size_t offset, le_uint32 count)
+ : LETableReference(parent, offset, LE_UINTPTR_MAX, success), fCount(count) {
+ _TRTRACE("INFO: new RTAO by offset")
+ if(LE_SUCCESS(success)) {
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ }
+ if(LE_FAILURE(success)) {
+ fCount=0;
+ clear();
+ }
+ }
+
+ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, le_uint32 count)
+ : LETableReference(parent, parent.ptrToOffset(array, success), LE_UINTPTR_MAX, success), fCount(count) {
+_TRTRACE("INFO: new RTAO")
+ if(LE_SUCCESS(success)) {
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ }
+ if(LE_FAILURE(success)) clear();
+ }
+ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, size_t offset, le_uint32 count)
+ : LETableReference(parent, parent.ptrToOffset(array, success)+offset, LE_UINTPTR_MAX, success), fCount(count) {
+_TRTRACE("INFO: new RTAO")
+ if(LE_SUCCESS(success)) {
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ }
+ if(LE_FAILURE(success)) clear();
+ }
+
+ LEReferenceToArrayOf() :LETableReference(), fCount(0) {}
+
+ le_uint32 getCount() const { return fCount; }
+
+ const T *getAlias() const { return (const T*)fStart; }
+
+ const T *getAlias(le_uint32 i, LEErrorCode &success) const {
+ return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success)));
+ }
+
+#ifndef LE_ENABLE_RAW
+ const T *getAliasRAW() const { LE_DEBUG_TR("getAliasRAW<>"); return (const T*)fStart; }
+#endif
+
+ const T& getObject(le_uint32 i, LEErrorCode &success) const {
+ return *getAlias(i,success);
+ }
+
+ /**
+ * by-value array accessor for integral types.
+ */
+ const T operator[](le_uint32 i) const {
+ LEErrorCode success = LE_NO_ERROR;
+ const T *ret = getAlias(i, success);
+ if(LE_FAILURE(success) || ret==NULL) {
+#if LE_ASSERT_BAD_FONT
+ LE_DEBUG_TR3("Range error, out of bounds? (%p) #%d", NULL, i);
+#endif
+ return T(0); // will not work for all types.
+ }
+ return *ret;
+ }
+
+ const LEReferenceTo<T> getReference(le_uint32 i, LEErrorCode &success) const {
+ if(LE_FAILURE(success)) return LEReferenceTo<T>();
+ return LEReferenceTo<T>(*this, success, getAlias(i,success));
+ }
+
+ const T& operator()(le_uint32 i, LEErrorCode &success) const {
+ return *getAlias(i,success);
+ }
+
+ size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const {
+ if(LE_SUCCESS(success)&&i<getCount()) {
+ return LETableVarSizer<T>::getSize()*i;
+ } else {
+ LE_DEBUG_TR3("getOffsetFor failed (%p) index=%d",NULL, i);
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ }
+ return 0;
+ }
+
+ LEReferenceToArrayOf<T> &reparent(const LETableReference &base) {
+ fParent = &base;
+ return *this;
+ }
+
+ LEReferenceToArrayOf(const LETableReference& parent, LEErrorCode & success) : LETableReference(parent,0, LE_UINTPTR_MAX, success), fCount(0) {
+ _TRTRACE("INFO: null RTAO")
+ }
+
+private:
+ le_uint32 fCount;
+};
+
+
+
+
+#ifdef _TRTRACE
+#undef _TRTRACE
+#endif
+
U_NAMESPACE_END
#endif
--- a/jdk/src/share/native/sun/font/layout/LETypes.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LETypes.h Tue Jan 28 11:21:43 2014 -0800
@@ -337,6 +337,20 @@
typedef struct LEPoint LEPoint;
#endif
+/**
+ * \def LE_TRACE
+ * @internal
+ */
+#ifndef LE_TRACE
+# define LE_TRACE 0
+#endif
+
+#if LE_TRACE
+# include <stdio.h>
+# define _LETRACE printf("\n%s:%d: LE: ", __FILE__, __LINE__),printf
+#else
+# define _LETRACE 0&&
+#endif
#ifndef U_HIDE_INTERNAL_API
@@ -553,7 +567,7 @@
LE_CALT_FEATURE_TAG = 0x63616C74UL, /**< 'calt' */
LE_CASE_FEATURE_TAG = 0x63617365UL, /**< 'case' */
LE_CCMP_FEATURE_TAG = 0x63636D70UL, /**< 'ccmp' */
- LE_CJCT_FEATURE_TAG = 0x636A6374UL, /**< 'cjct' */
+ LE_CJCT_FEATURE_TAG = 0x636A6374UL, /**< 'cjct' */
LE_CLIG_FEATURE_TAG = 0x636C6967UL, /**< 'clig' */
LE_CPSP_FEATURE_TAG = 0x63707370UL, /**< 'cpsp' */
LE_CSWH_FEATURE_TAG = 0x63737768UL, /**< 'cswh' */
@@ -701,6 +715,12 @@
LE_FEATURE_ENUM_MAX = LE_CHAR_FILTER_FEATURE_ENUM
};
+
+/**
+ * Flags for typographic features.
+ * @internal
+ * @{
+ */
#define LE_Kerning_FEATURE_FLAG (1 << LE_Kerning_FEATURE_ENUM)
#define LE_Ligatures_FEATURE_FLAG (1 << LE_Ligatures_FEATURE_ENUM)
#define LE_NoCanon_FEATURE_FLAG (1 << LE_NoCanon_FEATURE_ENUM)
@@ -727,6 +747,9 @@
#define LE_SS07_FEATURE_FLAG (1 << LE_SS07_FEATURE_ENUM)
#define LE_CHAR_FILTER_FEATURE_FLAG (1 << LE_CHAR_FILTER_FEATURE_ENUM)
+/**
+ * @}
+ */
#define LE_DEFAULT_FEATURE_FLAG (LE_Kerning_FEATURE_FLAG | LE_Ligatures_FEATURE_FLAG) /**< default features */
@@ -768,7 +791,7 @@
*
* @stable ICU 2.4
*/
-#ifndef LE_FAILURE
+#ifndef LE_SUCCESS
#define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code))
#endif
@@ -781,4 +804,4 @@
#define LE_FAILURE(code) (U_FAILURE((UErrorCode)code))
#endif
-#endif /* __LETYPES_H */
+#endif
--- a/jdk/src/share/native/sun/font/layout/LayoutEngine.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LayoutEngine.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -156,7 +156,7 @@
CanonMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success);
virtual ~CanonMarkFilter();
- virtual le_bool accept(LEGlyphID glyph) const;
+ virtual le_bool accept(LEGlyphID glyph, LEErrorCode &success) const;
};
CanonMarkFilter::CanonMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success)
@@ -169,9 +169,8 @@
// nothing to do?
}
-le_bool CanonMarkFilter::accept(LEGlyphID glyph) const
+le_bool CanonMarkFilter::accept(LEGlyphID glyph, LEErrorCode &success) const
{
- LEErrorCode success = LE_NO_ERROR;
le_int32 glyphClass = classDefTable->getGlyphClass(classDefTable, glyph, success);
if(LE_FAILURE(success)) return false;
return glyphClass != 0;
@@ -207,7 +206,7 @@
fGlyphStorage = new LEGlyphStorage();
if (fGlyphStorage == NULL) {
success = LE_MEMORY_ALLOCATION_ERROR;
-}
+ }
}
le_int32 LayoutEngine::getGlyphCount() const
@@ -263,7 +262,9 @@
return count;
}
- LEReferenceTo<GlyphSubstitutionTableHeader> canonGSUBTable((GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable);
+ LEReferenceTo<GlyphSubstitutionTableHeader> canonGSUBTable(LETableReference::kStaticData,
+ (GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable,
+ CanonShaping::glyphSubstitutionTableLen);
LETag scriptTag = OpenTypeLayoutEngine::getScriptTag(fScriptCode);
LETag langSysTag = OpenTypeLayoutEngine::getLangSysTag(fLanguageCode);
le_int32 i, dir = 1, out = 0, outCharCount = count;
@@ -300,7 +301,7 @@
CanonShaping::reorderMarks(&chars[offset], count, rightToLeft, reordered, fakeGlyphStorage);
inChars = reordered;
- }
+ }
fakeGlyphStorage.allocateAuxData(success);
@@ -323,7 +324,8 @@
LE_DELETE_ARRAY(reordered);
}
- outCharCount = canonGSUBTable->process(canonGSUBTable, fakeGlyphStorage, rightToLeft, scriptTag, langSysTag, (const GlyphDefinitionTableHeader*)NULL, substitutionFilter, canonFeatureMap, canonFeatureMapCount, FALSE, success);
+ const LEReferenceTo<GlyphDefinitionTableHeader> noGDEF; // empty gdef header
+ outCharCount = canonGSUBTable->process(canonGSUBTable, fakeGlyphStorage, rightToLeft, scriptTag, langSysTag, noGDEF, substitutionFilter, canonFeatureMap, canonFeatureMapCount, FALSE, success);
if (LE_FAILURE(success)) {
delete substitutionFilter;
@@ -403,10 +405,13 @@
LEPoint advance;
glyphStorage.setPosition(i, x, y, success);
+ _LETRACE("g#%-4d (%.2f, %.2f)", i, x, y);
fFontInstance->getGlyphAdvance(glyphStorage[i], advance);
x += advance.fX;
y += advance.fY;
+
+
}
glyphStorage.setPosition(glyphCount, x, y, success);
@@ -424,7 +429,7 @@
return;
}
- LEReferenceTo<GlyphDefinitionTableHeader> gdefTable((GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable,
+ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(LETableReference::kStaticData, (GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable,
CanonShaping::glyphDefinitionTableLen);
CanonMarkFilter filter(gdefTable, success);
@@ -464,9 +469,10 @@
glyphStorage.getGlyphPosition(p + 1, next, ignore, success);
xAdvance = next - prev;
+ _LETRACE("p#%d (%.2f,%.2f)", p, xAdvance, 0);
glyphStorage.adjustPosition(p, xAdjust, 0, success);
- if (markFilter->accept(glyphStorage[p])) {
+ if (markFilter->accept(glyphStorage[p], success)) {
xAdjust -= xAdvance;
}
@@ -506,9 +512,13 @@
glyphStorage.getGlyphPosition(p + 1, next, ignore, success);
xAdvance = next - prev;
+
+ _LETRACE("p#%d (%.2f,%.2f)", p, xAdvance, 0);
+
+
glyphStorage.adjustPosition(p, xAdjust, 0, success);
- if (markFilter->accept(chars[c])) {
+ if (markFilter->accept(chars[c], success)) {
xAdjust -= xAdvance;
}
@@ -662,8 +672,10 @@
break;
}
} else {
- MorphTableHeader2 *morxTable = (MorphTableHeader2 *)fontInstance->getFontTable(morxTableTag);
- if (morxTable != NULL && SWAPL(morxTable->version)==0x00020000) {
+ LEReferenceTo<MorphTableHeader2> morxTable(fontInstance, morxTableTag, success);
+ if (LE_SUCCESS(success) &&
+ morxTable.isValid() &&
+ SWAPL(morxTable->version)==0x00020000) {
result = new GXLayoutEngine2(fontInstance, scriptCode, languageCode, morxTable, typoFlags, success);
} else {
LEReferenceTo<MorphTableHeader> mortTable(fontInstance, mortTableTag, success);
@@ -686,21 +698,20 @@
break;
}
- case arabScriptCode:
- //case hebrScriptCode:
- result = new UnicodeArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
- break;
+ case arabScriptCode:
+ result = new UnicodeArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
+ break;
- //case hebrScriptCode:
- // return new HebrewOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags);
+ //case hebrScriptCode:
+ // return new HebrewOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags);
- case thaiScriptCode:
- result = new ThaiLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
- break;
+ case thaiScriptCode:
+ result = new ThaiLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
+ break;
- case hangScriptCode:
- result = new HangulOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
- break;
+ case hangScriptCode:
+ result = new HangulOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
+ break;
default:
result = new LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
@@ -711,9 +722,9 @@
}
if (result && LE_FAILURE(success)) {
- delete result;
- result = NULL;
- }
+ delete result;
+ result = NULL;
+ }
if (result == NULL) {
success = LE_MEMORY_ALLOCATION_ERROR;
--- a/jdk/src/share/native/sun/font/layout/LayoutEngine.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LayoutEngine.h Tue Jan 28 11:21:43 2014 -0800
@@ -156,8 +156,8 @@
* @param fontInstance - the font for the text
* @param scriptCode - the script for the text
* @param languageCode - the language for the text
- * @param typoFlags - the typographic control flags for the text. Set bit 1 if kerning
- * is desired, set bit 2 if ligature formation is desired. Others are reserved.
+ * @param typoFlags - the typographic control flags for the text (a bitfield). Use kTypoFlagKern
+ * if kerning is desired, kTypoFlagLiga if ligature formation is desired. Others are reserved.
* @param success - set to an error code if the operation fails
*
* @see LEFontInstance
--- a/jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -105,7 +105,7 @@
LEReferenceToArrayOf<le_uint16> componentTable(stHeader, success, componentOffset, LE_UNBOUNDED_ARRAY);
if(LE_FAILURE(success)) {
currGlyph+= dir;
- return nextStateIndex; // get out! bad font
+ return nextStateIndex; // get out! bad font
}
do {
--- a/jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -49,14 +49,20 @@
return 0;
}
- if (coverageIndex >= 0) {
+ LEReferenceToArrayOf<Offset> ligSetTableOffsetArrayRef(base, success, ligSetTableOffsetArray, SWAPW(ligSetCount));
+
+ if (coverageIndex >= 0 && LE_SUCCESS(success) && (le_uint32)coverageIndex < ligSetTableOffsetArrayRef.getCount()) {
Offset ligSetTableOffset = SWAPW(ligSetTableOffsetArray[coverageIndex]);
- const LigatureSetTable *ligSetTable = (const LigatureSetTable *) ((char *) this + ligSetTableOffset);
+ LEReferenceTo<LigatureSetTable> ligSetTable(base, success, ligSetTableOffset);
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 ligCount = SWAPW(ligSetTable->ligatureCount);
- for (le_uint16 lig = 0; lig < ligCount; lig += 1) {
+ LEReferenceTo<Offset> ligatureTableOffsetArray(base, success, ligSetTable->ligatureTableOffsetArray, ligCount);
+ for (le_uint16 lig = 0; LE_SUCCESS(success) && lig < ligCount; lig += 1) {
Offset ligTableOffset = SWAPW(ligSetTable->ligatureTableOffsetArray[lig]);
- const LigatureTable *ligTable = (const LigatureTable *) ((char *)ligSetTable + ligTableOffset);
+ LEReferenceTo<LigatureTable> ligTable(ligSetTable, success, ligTableOffset);
+ if(LE_FAILURE(success)) { return 0; }
le_uint16 compCount = SWAPW(ligTable->compCount) - 1;
le_int32 startPosition = glyphIterator->getCurrStreamPosition();
TTGlyphID ligGlyph = SWAPW(ligTable->ligGlyph);
@@ -72,7 +78,7 @@
}
}
- if (comp == compCount && (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, ligGlyph)))) {
+ if (comp == compCount && (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, ligGlyph), success))) {
GlyphIterator tempIterator(*glyphIterator);
TTGlyphID deletedGlyph = tempIterator.ignoresMarks()? 0xFFFE : 0xFFFF;
--- a/jdk/src/share/native/sun/font/layout/LookupProcessor.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LookupProcessor.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -60,9 +60,11 @@
LEReferenceTo<LookupSubtable> lookupSubtable = lookupTable->getLookupSubtable(lookupTable, subtable, success);
delta = applySubtable(lookupSubtable, lookupType, glyphIterator, fontInstance, success);
-
- if (delta > 0 || LE_FAILURE(success)) {
- return 1;
+ if (delta > 0 && LE_FAILURE(success)) {
+#if LE_TRACE
+ _LETRACE("Posn #%d, type %X, applied subtable #%d/%d - %s\n", startPosition, lookupType, subtable, subtableCount, u_errorName((UErrorCode)success));
+#endif
+ return 1;
}
glyphIterator->setCurrStreamPosition(startPosition);
@@ -86,7 +88,7 @@
}
GlyphIterator glyphIterator(glyphStorage, glyphPositionAdjustments,
- rightToLeft, 0, 0, glyphDefinitionTableHeader);
+ rightToLeft, 0, 0, glyphDefinitionTableHeader, success);
le_int32 newGlyphCount = glyphCount;
for (le_uint16 order = 0; order < lookupOrderCount && LE_SUCCESS(success); order += 1) {
@@ -94,6 +96,7 @@
FeatureMask selectMask = lookupSelectArray[lookup];
if (selectMask != 0) {
+ _LETRACE("Processing order#%d/%d", order, lookupOrderCount);
const LEReferenceTo<LookupTable> lookupTable = lookupListTable->getLookupTable(lookupListTable, lookup, success);
if (!lookupTable.isValid() ||LE_FAILURE(success) ) {
continue;
@@ -103,8 +106,11 @@
glyphIterator.reset(lookupFlags, selectMask);
while (glyphIterator.findFeatureTag()) {
- applyLookupTable(lookupTable, &glyphIterator, fontInstance, success); // TODO
+ applyLookupTable(lookupTable, &glyphIterator, fontInstance, success);
if (LE_FAILURE(success)) {
+#if LE_TRACE
+ _LETRACE("Failure for lookup 0x%x - %s\n", lookup, u_errorName((UErrorCode)success));
+#endif
return 0;
}
}
@@ -138,7 +144,7 @@
le_int32 LookupProcessor::selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success)
{
le_uint16 lookupCount = featureTable.isValid()? SWAPW(featureTable->lookupCount) : 0;
- le_int32 store = order;
+ le_uint32 store = (le_uint32)order;
LEReferenceToArrayOf<le_uint16> lookupListIndexArray(featureTable, success, featureTable->lookupListIndexArray, lookupCount);
@@ -147,6 +153,9 @@
if (lookupListIndex >= lookupSelectCount) {
continue;
}
+ if (store >= lookupOrderCount) {
+ continue;
+ }
lookupSelectArray[lookupListIndex] |= featureMask;
lookupOrderArray[store++] = lookupListIndex;
@@ -246,7 +255,7 @@
if (requiredFeatureIndex != 0xFFFF) {
requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success);
- featureReferences += SWAPW(featureTable->lookupCount);
+ featureReferences += SWAPW(requiredFeatureTable->lookupCount);
}
lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);
@@ -254,6 +263,7 @@
success = LE_MEMORY_ALLOCATION_ERROR;
return;
}
+ lookupOrderCount = featureReferences;
for (le_int32 f = 0; f < featureMapCount; f += 1) {
FeatureMap fm = featureMap[f];
--- a/jdk/src/share/native/sun/font/layout/Lookups.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/Lookups.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -65,7 +65,7 @@
if(LE_FAILURE(success)) return 0;
- return coverageTable->getGlyphCoverage(glyphID);
+ return coverageTable->getGlyphCoverage(coverageTable, glyphID, success);
}
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/MarkArrays.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkArrays.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -38,20 +38,28 @@
U_NAMESPACE_BEGIN
-le_int32 MarkArray::getMarkClass(LEGlyphID glyphID, le_int32 coverageIndex, const LEFontInstance *fontInstance,
- LEPoint &anchor) const
+le_int32 MarkArray::getMarkClass(const LETableReference &base, LEGlyphID glyphID,
+ le_int32 coverageIndex, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const
{
le_int32 markClass = -1;
- if (coverageIndex >= 0) {
+ if ( coverageIndex >= 0 && LE_SUCCESS(success) ) {
le_uint16 mCount = SWAPW(markCount);
-
if (coverageIndex < mCount) {
+ LEReferenceToArrayOf<MarkRecord> markRecordArrayRef(base, success, markRecordArray, mCount);
+ if(LE_FAILURE(success)) {
+ return markClass;
+ }
const MarkRecord *markRecord = &markRecordArray[coverageIndex];
Offset anchorTableOffset = SWAPW(markRecord->markAnchorTableOffset);
- const AnchorTable *anchorTable = (AnchorTable *) ((char *) this + anchorTableOffset);
+ LEReferenceTo<AnchorTable> anchorTable(base, success, anchorTableOffset);
- anchorTable->getAnchor(glyphID, fontInstance, anchor);
+ if(LE_FAILURE(success)) {
+ return markClass;
+ }
+
+ anchorTable->getAnchor(anchorTable, glyphID, fontInstance, anchor, success);
markClass = SWAPW(markRecord->markClass);
}
--- a/jdk/src/share/native/sun/font/layout/MarkArrays.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkArrays.h Tue Jan 28 11:21:43 2014 -0800
@@ -54,8 +54,9 @@
le_uint16 markCount;
MarkRecord markRecordArray[ANY_NUMBER];
- le_int32 getMarkClass(LEGlyphID glyphID, le_int32 coverageIndex, const LEFontInstance *fontInstance,
- LEPoint &anchor) const;
+ le_int32 getMarkClass(const LETableReference &base, LEGlyphID glyphID,
+ le_int32 coverageIndex, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const;
};
LE_VAR_ARRAY(MarkArray, markRecordArray)
--- a/jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -66,11 +66,11 @@
}
LEPoint markAnchor;
- const MarkArray *markArray = (const MarkArray *) ((char *) this + SWAPW(markArrayOffset));
- le_int32 markClass = markArray->getMarkClass(markGlyph, markCoverage, fontInstance, markAnchor);
+ LEReferenceTo<MarkArray> markArray(base, success, (const MarkArray *) ((char *) this + SWAPW(markArrayOffset)));
+ le_int32 markClass = markArray->getMarkClass(markArray, markGlyph, markCoverage, fontInstance, markAnchor, success);
le_uint16 mcCount = SWAPW(classCount);
- if (markClass < 0 || markClass >= mcCount) {
+ if (markClass < 0 || markClass >= mcCount || LE_FAILURE(success)) {
// markGlyph isn't in the mark array or its
// mark class is too big. The table is mal-formed!
return 0;
@@ -80,7 +80,8 @@
GlyphIterator baseIterator(*glyphIterator, (le_uint16) (lfIgnoreMarks /*| lfIgnoreLigatures*/));
LEGlyphID baseGlyph = findBaseGlyph(&baseIterator);
le_int32 baseCoverage = getBaseCoverage(base, (LEGlyphID) baseGlyph, success);
- const BaseArray *baseArray = (const BaseArray *) ((char *) this + SWAPW(baseArrayOffset));
+ LEReferenceTo<BaseArray> baseArray(base, success, (const BaseArray *) ((char *) this + SWAPW(baseArrayOffset)));
+ if(LE_FAILURE(success)) return 0;
le_uint16 baseCount = SWAPW(baseArray->baseRecordCount);
if (baseCoverage < 0 || baseCoverage >= baseCount) {
@@ -89,19 +90,23 @@
// table is mal-formed...
return 0;
}
+ LEReferenceTo<BaseRecord> baseRecord(base, success, &baseArray->baseRecordArray[baseCoverage * mcCount]);
+ if( LE_FAILURE(success) ) { return 0; }
+ LEReferenceToArrayOf<Offset> baseAnchorTableOffsetArray(base, success, &(baseRecord->baseAnchorTableOffsetArray[0]), markClass+1);
- const BaseRecord *baseRecord = &baseArray->baseRecordArray[baseCoverage * mcCount];
+ if( LE_FAILURE(success) ) { return 0; }
Offset anchorTableOffset = SWAPW(baseRecord->baseAnchorTableOffsetArray[markClass]);
- const AnchorTable *anchorTable = (const AnchorTable *) ((char *) baseArray + anchorTableOffset);
- LEPoint baseAnchor, markAdvance, pixels;
-
- if (anchorTableOffset == 0) {
+ if (anchorTableOffset <= 0) {
// this means the table is mal-formed...
glyphIterator->setCurrGlyphBaseOffset(baseIterator.getCurrStreamPosition());
return 0;
}
- anchorTable->getAnchor(baseGlyph, fontInstance, baseAnchor);
+ LEReferenceTo<AnchorTable> anchorTable(baseArray, success, anchorTableOffset);
+ LEPoint baseAnchor, markAdvance, pixels;
+
+
+ anchorTable->getAnchor(anchorTable, baseGlyph, fontInstance, baseAnchor, success);
fontInstance->getGlyphAdvance(markGlyph, pixels);
fontInstance->pixelsToUnits(pixels, markAdvance);
@@ -109,6 +114,8 @@
float anchorDiffX = baseAnchor.fX - markAnchor.fX;
float anchorDiffY = baseAnchor.fY - markAnchor.fY;
+ _LETRACE("Offset: (%.2f, %.2f) glyph 0x%X", anchorDiffX, anchorDiffY, markGlyph);
+
glyphIterator->setCurrGlyphBaseOffset(baseIterator.getCurrStreamPosition());
if (glyphIterator->isRightToLeft()) {
@@ -132,7 +139,6 @@
gi.next();
}
// end of JK patch
-
fontInstance->pixelsToUnits(pixels, baseAdvance);
glyphIterator->setCurrGlyphPositionAdjustment(anchorDiffX - baseAdvance.fX, anchorDiffY - baseAdvance.fY, -markAdvance.fX, -markAdvance.fY);
--- a/jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -65,8 +65,11 @@
}
LEPoint markAnchor;
- const MarkArray *markArray = (const MarkArray *) ((char *) this + SWAPW(markArrayOffset));
- le_int32 markClass = markArray->getMarkClass(markGlyph, markCoverage, fontInstance, markAnchor);
+ LEReferenceTo<MarkArray> markArray(base, success, SWAPW(markArrayOffset));
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ le_int32 markClass = markArray->getMarkClass(markArray, markGlyph, markCoverage, fontInstance, markAnchor, success);
le_uint16 mcCount = SWAPW(classCount);
if (markClass < 0 || markClass >= mcCount) {
@@ -79,7 +82,7 @@
GlyphIterator ligatureIterator(*glyphIterator, (le_uint16) (lfIgnoreMarks /*| lfIgnoreBaseGlyphs*/));
LEGlyphID ligatureGlyph = findLigatureGlyph(&ligatureIterator);
le_int32 ligatureCoverage = getBaseCoverage(base, (LEGlyphID) ligatureGlyph, success);
- const LigatureArray *ligatureArray = (const LigatureArray *) ((char *) this + SWAPW(baseArrayOffset));
+ LEReferenceTo<LigatureArray> ligatureArray(base, success, SWAPW(baseArrayOffset));
le_uint16 ligatureCount = SWAPW(ligatureArray->ligatureCount);
if (ligatureCoverage < 0 || ligatureCoverage >= ligatureCount) {
@@ -91,7 +94,7 @@
le_int32 markPosition = glyphIterator->getCurrStreamPosition();
Offset ligatureAttachOffset = SWAPW(ligatureArray->ligatureAttachTableOffsetArray[ligatureCoverage]);
- const LigatureAttachTable *ligatureAttachTable = (const LigatureAttachTable *) ((char *) ligatureArray + ligatureAttachOffset);
+ LEReferenceTo<LigatureAttachTable> ligatureAttachTable(ligatureArray, success, ligatureAttachOffset);
le_int32 componentCount = SWAPW(ligatureAttachTable->componentCount);
le_int32 component = ligatureIterator.getMarkComponent(markPosition);
@@ -100,12 +103,14 @@
component = componentCount - 1;
}
- const ComponentRecord *componentRecord = &ligatureAttachTable->componentRecordArray[component * mcCount];
+ LEReferenceTo<ComponentRecord> componentRecord(base, success, &ligatureAttachTable->componentRecordArray[component * mcCount]);
+ LEReferenceToArrayOf<Offset> ligatureAnchorTableOffsetArray(base, success, &(componentRecord->ligatureAnchorTableOffsetArray[0]), markClass+1);
+ if( LE_FAILURE(success) ) { return 0; }
Offset anchorTableOffset = SWAPW(componentRecord->ligatureAnchorTableOffsetArray[markClass]);
- const AnchorTable *anchorTable = (const AnchorTable *) ((char *) ligatureAttachTable + anchorTableOffset);
+ LEReferenceTo<AnchorTable> anchorTable(ligatureAttachTable, success, anchorTableOffset);
LEPoint ligatureAnchor, markAdvance, pixels;
- anchorTable->getAnchor(ligatureGlyph, fontInstance, ligatureAnchor);
+ anchorTable->getAnchor(anchorTable, ligatureGlyph, fontInstance, ligatureAnchor, success);
fontInstance->getGlyphAdvance(markGlyph, pixels);
fontInstance->pixelsToUnits(pixels, markAdvance);
--- a/jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -66,8 +66,11 @@
}
LEPoint markAnchor;
- const MarkArray *markArray = (const MarkArray *) ((char *) this + SWAPW(markArrayOffset));
- le_int32 markClass = markArray->getMarkClass(markGlyph, markCoverage, fontInstance, markAnchor);
+ LEReferenceTo<MarkArray> markArray(base, success, SWAPW(markArrayOffset));
+ if(LE_FAILURE(success)) {
+ return 0;
+ }
+ le_int32 markClass = markArray->getMarkClass(markArray, markGlyph, markCoverage, fontInstance, markAnchor, success);
le_uint16 mcCount = SWAPW(classCount);
if (markClass < 0 || markClass >= mcCount) {
@@ -79,7 +82,8 @@
GlyphIterator mark2Iterator(*glyphIterator);
LEGlyphID mark2Glyph = findMark2Glyph(&mark2Iterator);
le_int32 mark2Coverage = getBaseCoverage(base, (LEGlyphID) mark2Glyph, success);
- const Mark2Array *mark2Array = (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset));
+ LEReferenceTo<Mark2Array> mark2Array(base, success, (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset)));
+ if(LE_FAILURE(success)) return 0;
le_uint16 mark2Count = SWAPW(mark2Array->mark2RecordCount);
if (mark2Coverage < 0 || mark2Coverage >= mark2Count) {
@@ -89,9 +93,11 @@
return 0;
}
- const Mark2Record *mark2Record = &mark2Array->mark2RecordArray[mark2Coverage * mcCount];
+ LEReferenceTo<Mark2Record> mark2Record(base, success, &mark2Array->mark2RecordArray[mark2Coverage * mcCount]);
+ if(LE_FAILURE(success)) return 0;
Offset anchorTableOffset = SWAPW(mark2Record->mark2AnchorTableOffsetArray[markClass]);
- const AnchorTable *anchorTable = (const AnchorTable *) ((char *) mark2Array + anchorTableOffset);
+ LEReferenceTo<AnchorTable> anchorTable(mark2Array, success, anchorTableOffset);
+ if(LE_FAILURE(success)) return 0;
LEPoint mark2Anchor, markAdvance, pixels;
if (anchorTableOffset == 0) {
@@ -99,7 +105,7 @@
return 0;
}
- anchorTable->getAnchor(mark2Glyph, fontInstance, mark2Anchor);
+ anchorTable->getAnchor(anchorTable, mark2Glyph, fontInstance, mark2Anchor, success);
fontInstance->getGlyphAdvance(markGlyph, pixels);
fontInstance->pixelsToUnits(pixels, markAdvance);
@@ -107,6 +113,8 @@
float anchorDiffX = mark2Anchor.fX - markAnchor.fX;
float anchorDiffY = mark2Anchor.fY - markAnchor.fY;
+ _LETRACE("Offset: (%.2f, %.2f) glyph 0x%X mark2 0x%X", anchorDiffX, anchorDiffY, markGlyph, mark2Glyph);
+
glyphIterator->setCurrGlyphBaseOffset(mark2Iterator.getCurrStreamPosition());
if (glyphIterator->isRightToLeft()) {
--- a/jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -54,9 +54,10 @@
// FIXME: is this always the right thing to do?
// FIXME: should this only be done for a non-zero
// glyphCount?
- if (filter != NULL && filter->accept(glyph)) {
+ if (filter != NULL && filter->accept(glyph, success)) {
return 0;
}
+ if(LE_FAILURE(success)) return 0;
le_int32 coverageIndex = getGlyphCoverage(base, glyph, success);
le_uint16 seqCount = SWAPW(sequenceCount);
@@ -67,7 +68,7 @@
if (coverageIndex >= 0 && coverageIndex < seqCount) {
Offset sequenceTableOffset = SWAPW(sequenceTableOffsetArray[coverageIndex]);
- const SequenceTable *sequenceTable = (const SequenceTable *) ((char *) this + sequenceTableOffset);
+ LEReferenceTo<SequenceTable> sequenceTable(base, success, sequenceTableOffset);
le_uint16 glyphCount = SWAPW(sequenceTable->glyphCount);
if (glyphCount == 0) {
@@ -76,7 +77,7 @@
} else if (glyphCount == 1) {
TTGlyphID substitute = SWAPW(sequenceTable->substituteArray[0]);
- if (filter != NULL && ! filter->accept(LE_SET_GLYPH(glyph, substitute))) {
+ if (filter != NULL && ! filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
return 0;
}
@@ -89,7 +90,7 @@
for (le_int32 i = 0; i < glyphCount; i += 1) {
TTGlyphID substitute = SWAPW(sequenceTable->substituteArray[i]);
- if (! filter->accept(substitute)) {
+ if (! filter->accept(substitute, success)) {
return 0;
}
}
--- a/jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -470,6 +470,7 @@
void OpenTypeLayoutEngine::adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse,
LEGlyphStorage &glyphStorage, LEErrorCode &success)
{
+ _LETRACE("OTLE::adjustGPOS");
if (LE_FAILURE(success)) {
return;
}
@@ -510,14 +511,17 @@
if (!fGPOSTable.isEmpty()) {
if (fScriptTagV2 != nullScriptTag &&
fGPOSTable->coversScriptAndLanguage(fGPOSTable, fScriptTagV2,fLangSysTag,success)) {
+ _LETRACE("OTLE::process [0]");
fGPOSTable->process(fGPOSTable, glyphStorage, adjustments, reverse, fScriptTagV2, fLangSysTag,
fGDEFTable, success, fFontInstance, fFeatureMap, fFeatureMapCount, fFeatureOrder);
} else {
+ _LETRACE("OTLE::process [1]");
fGPOSTable->process(fGPOSTable, glyphStorage, adjustments, reverse, fScriptTag, fLangSysTag,
fGDEFTable, success, fFontInstance, fFeatureMap, fFeatureMapCount, fFeatureOrder);
}
} else if (fTypoFlags & LE_Kerning_FEATURE_FLAG) { /* kerning enabled */
+ _LETRACE("OTLE::kerning");
LETableReference kernTable(fFontInstance, LE_KERN_TABLE_TAG, success);
KernTable kt(kernTable, success);
kt.process(glyphStorage, success);
@@ -546,6 +550,7 @@
xPlacement = fFontInstance->xUnitsToPoints(xPlacement);
yPlacement = fFontInstance->yUnitsToPoints(yPlacement);
+ _LETRACE("OTLE GPOS: #%d, (%.2f,%.2f)", i, xPlacement, yPlacement);
glyphStorage.adjustPosition(i, xAdjust + xPlacement, -(yAdjust + yPlacement), success);
xAdjust += fFontInstance->xUnitsToPoints(xAdvance);
--- a/jdk/src/share/native/sun/font/layout/OpenTypeUtilities.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/OpenTypeUtilities.h Tue Jan 28 11:21:43 2014 -0800
@@ -46,15 +46,14 @@
public:
static le_int8 highBit(le_int32 value);
static Offset getTagOffset(LETag tag, const LEReferenceToArrayOf<TagAndOffsetRecord> &records, LEErrorCode &success);
- /**
- * @deprecated TODO remove
- */
+#if LE_ENABLE_RAW
static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const GlyphRangeRecord *records, le_int32 recordCount) {
LEErrorCode success = LE_NO_ERROR;
LETableReference recordRef0((const le_uint8*)records);
LEReferenceToArrayOf<GlyphRangeRecord> recordRef(recordRef0, success, (size_t)0, recordCount);
return getGlyphRangeIndex(glyphID, recordRef, success);
}
+#endif
static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const LEReferenceToArrayOf<GlyphRangeRecord> &records, LEErrorCode &success);
static le_int32 search(le_uint16 value, const le_uint16 array[], le_int32 count);
static le_int32 search(le_uint32 value, const le_uint32 array[], le_int32 count);
--- a/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -76,19 +76,17 @@
{
LEGlyphID firstGlyph = glyphIterator->getCurrGlyphID();
le_int32 coverageIndex = getGlyphCoverage(base, firstGlyph, success);
-
- if (LE_FAILURE(success)) {
- return 0;
- }
GlyphIterator tempIterator(*glyphIterator);
- if (coverageIndex >= 0 && glyphIterator->next()) {
+ LEReferenceToArrayOf<Offset> pairSetTableOffsetArrayRef(base, success, pairSetTableOffsetArray, SWAPW(pairSetCount));
+
+ if (LE_SUCCESS(success) && coverageIndex >= 0 && glyphIterator->next() && (le_uint32)coverageIndex < pairSetTableOffsetArrayRef.getCount()) {
Offset pairSetTableOffset = SWAPW(pairSetTableOffsetArray[coverageIndex]);
- LEReferenceTo<PairSetTable> pairSetTable(base, success, ((char *) this + pairSetTableOffset));
- if (LE_FAILURE(success)) {
- return 0;
- }
+ LEReferenceTo<PairSetTable> pairSetTable(base, success, pairSetTableOffset);
+ if( LE_FAILURE(success) ) return 0;
le_uint16 pairValueCount = SWAPW(pairSetTable->pairValueCount);
+ LEReferenceTo<PairValueRecord> pairValueRecordArray(pairSetTable, success, pairSetTable->pairValueRecordArray);
+ if( LE_FAILURE(success) ) return 0;
le_int16 valueRecord1Size = ValueRecord::getSize(SWAPW(valueFormat1));
le_int16 valueRecord2Size = ValueRecord::getSize(SWAPW(valueFormat2));
le_int16 recordSize = sizeof(PairValueRecord) - sizeof(ValueRecord) + valueRecord1Size + valueRecord2Size;
@@ -96,21 +94,22 @@
LEReferenceTo<PairValueRecord> pairValueRecord;
if (pairValueCount != 0) {
- pairValueRecord = findPairValueRecord(base, (TTGlyphID) LE_GET_GLYPH(secondGlyph), pairSetTable->pairValueRecordArray, pairValueCount, recordSize, success);
+ pairValueRecord = findPairValueRecord((TTGlyphID) LE_GET_GLYPH(secondGlyph), pairValueRecordArray, pairValueCount, recordSize, success);
}
- if (pairValueRecord.isEmpty()) {
+ if (pairValueRecord.isEmpty() || LE_FAILURE(success)) {
return 0;
}
if (valueFormat1 != 0) {
- pairValueRecord->valueRecord1.adjustPosition(SWAPW(valueFormat1), (char *) this, tempIterator, fontInstance);
+ pairValueRecord->valueRecord1.adjustPosition(SWAPW(valueFormat1), base, tempIterator, fontInstance, success);
}
if (valueFormat2 != 0) {
- const ValueRecord *valueRecord2 = (const ValueRecord *) ((char *) &pairValueRecord->valueRecord1 + valueRecord1Size);
-
- valueRecord2->adjustPosition(SWAPW(valueFormat2), (char *) this, *glyphIterator, fontInstance);
+ LEReferenceTo<ValueRecord> valueRecord2(base, success, ((char *) &pairValueRecord->valueRecord1 + valueRecord1Size));
+ if(LE_SUCCESS(success)) {
+ valueRecord2->adjustPosition(SWAPW(valueFormat2), base, *glyphIterator, fontInstance, success);
+ }
}
// back up glyphIterator so second glyph can be
@@ -135,26 +134,28 @@
if (coverageIndex >= 0 && glyphIterator->next()) {
LEGlyphID secondGlyph = glyphIterator->getCurrGlyphID();
- const ClassDefinitionTable *classDef1 = (const ClassDefinitionTable *) ((char *) this + SWAPW(classDef1Offset));
- const ClassDefinitionTable *classDef2 = (const ClassDefinitionTable *) ((char *) this + SWAPW(classDef2Offset));
- le_int32 class1 = classDef1->getGlyphClass(firstGlyph);
- le_int32 class2 = classDef2->getGlyphClass(secondGlyph);
+ const LEReferenceTo<ClassDefinitionTable> classDef1(base, success, SWAPW(classDef1Offset));
+ const LEReferenceTo<ClassDefinitionTable> classDef2(base, success, SWAPW(classDef2Offset));
+ le_int32 class1 = classDef1->getGlyphClass(classDef1, firstGlyph, success);
+ le_int32 class2 = classDef2->getGlyphClass(classDef2, secondGlyph, success);
le_int16 valueRecord1Size = ValueRecord::getSize(SWAPW(valueFormat1));
le_int16 valueRecord2Size = ValueRecord::getSize(SWAPW(valueFormat2));
le_int16 class2RecordSize = valueRecord1Size + valueRecord2Size;
le_int16 class1RecordSize = class2RecordSize * SWAPW(class2Count);
- const Class1Record *class1Record = (const Class1Record *) ((char *) class1RecordArray + (class1RecordSize * class1));
- const Class2Record *class2Record = (const Class2Record *) ((char *) class1Record->class2RecordArray + (class2RecordSize * class2));
-
+ const LEReferenceTo<Class1Record> class1Record(base, success, (const Class1Record *) ((char *) class1RecordArray + (class1RecordSize * class1)));
+ const LEReferenceTo<Class2Record> class2Record(base, success, (const Class2Record *) ((char *) class1Record->class2RecordArray + (class2RecordSize * class2)));
- if (valueFormat1 != 0) {
- class2Record->valueRecord1.adjustPosition(SWAPW(valueFormat1), (char *) this, tempIterator, fontInstance);
- }
-
- if (valueFormat2 != 0) {
- const ValueRecord *valueRecord2 = (const ValueRecord *) ((char *) &class2Record->valueRecord1 + valueRecord1Size);
-
- valueRecord2->adjustPosition(SWAPW(valueFormat2), (const char *) this, *glyphIterator, fontInstance);
+ if( LE_SUCCESS(success) ) {
+ if (valueFormat1 != 0) {
+ class2Record->valueRecord1.adjustPosition(SWAPW(valueFormat1), base, tempIterator, fontInstance, success);
+ }
+ if (valueFormat2 != 0) {
+ const LEReferenceTo<ValueRecord> valueRecord2(base, success, ((char *) &class2Record->valueRecord1) + valueRecord1Size);
+ LEReferenceTo<PairPositioningFormat2Subtable> thisRef(base, success, this);
+ if(LE_SUCCESS(success)) {
+ valueRecord2->adjustPosition(SWAPW(valueFormat2), thisRef, *glyphIterator, fontInstance, success);
+ }
+ }
}
// back up glyphIterator so second glyph can be
@@ -166,23 +167,24 @@
return 0;
}
-LEReferenceTo<PairValueRecord> PairPositioningFormat1Subtable::findPairValueRecord(const LETableReference &base, TTGlyphID glyphID, const PairValueRecord *records, le_uint16 recordCount, le_uint16 recordSize, LEErrorCode &success) const
+LEReferenceTo<PairValueRecord>
+PairPositioningFormat1Subtable::findPairValueRecord(TTGlyphID glyphID, LEReferenceTo<PairValueRecord>& records,
+ le_uint16 recordCount,
+ le_uint16 recordSize, LEErrorCode &success) const
{
#if 1
// The OpenType spec. says that the ValueRecord table is
// sorted by secondGlyph. Unfortunately, there are fonts
// around that have an unsorted ValueRecord table.
- LEReferenceTo<PairValueRecord> record(base, success, records);
- record.verifyLength(0, recordSize, success);
+ LEReferenceTo<PairValueRecord> record(records);
for(le_int32 r = 0; r < recordCount; r += 1) {
- if (LE_FAILURE(success)) return (const PairValueRecord*)NULL;
- if (SWAPW(record->secondGlyph) == glyphID) {
- return record;
- }
+ if(LE_FAILURE(success)) return LEReferenceTo<PairValueRecord>();
+ if (SWAPW(record->secondGlyph) == glyphID) {
+ return record;
+ }
- record = LEReferenceTo<PairValueRecord>(base, success, ((const char*)record.getAlias())+ recordSize);
- record.verifyLength(0, recordSize, success);
+ record.addOffset(recordSize, success);
}
#else
#error dead code - not updated.
@@ -211,7 +213,7 @@
}
#endif
- return (const PairValueRecord*)NULL;
+ return LEReferenceTo<PairValueRecord>();
}
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.h Tue Jan 28 11:21:43 2014 -0800
@@ -77,9 +77,8 @@
le_uint32 process(const LEReferenceTo<PairPositioningFormat1Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const;
private:
- LEReferenceTo<PairValueRecord> findPairValueRecord(const LETableReference &base, TTGlyphID glyphID, const PairValueRecord *records,
+ LEReferenceTo<PairValueRecord> findPairValueRecord(TTGlyphID glyphID, LEReferenceTo<PairValueRecord> &records,
le_uint16 recordCount, le_uint16 recordSize, LEErrorCode &success) const;
-
};
LE_VAR_ARRAY(PairPositioningFormat1Subtable, pairSetTableOffsetArray)
--- a/jdk/src/share/native/sun/font/layout/ScriptAndLanguage.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ScriptAndLanguage.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -106,7 +106,8 @@
}
} else {
LEReferenceToArrayOf<ScriptRecord> scriptRecordArrayRef(base, success, &scriptRecordArray[0], count);
- scriptTableOffset = OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArrayRef, success); // TODO
+
+ scriptTableOffset = OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArrayRef, success);
}
if (scriptTableOffset != 0) {
--- a/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -126,13 +126,13 @@
linaScriptTag, /* 'lina' (LINA) */
mandScriptTag, /* 'mand' (MANDAIC) */
mayaScriptTag, /* 'maya' (MAYA) */
- meroScriptTag, /* 'mero' (MERO) */
+ meroScriptTag, /* 'mero' (MEROITIC_HIEROGLYPHS) */
nkooScriptTag, /* 'nko ' (NKO) */
orkhScriptTag, /* 'orkh' (OLD_TURKIC) */
permScriptTag, /* 'perm' (PERM) */
phagScriptTag, /* 'phag' (PHAGS_PA) */
phnxScriptTag, /* 'phnx' (PHOENICIAN) */
- plrdScriptTag, /* 'plrd' (PLRD) */
+ plrdScriptTag, /* 'plrd' (MIAO/POLLARD) */
roroScriptTag, /* 'roro' (RORO) */
saraScriptTag, /* 'sara' (SARA) */
syreScriptTag, /* 'syre' (SYRE) */
@@ -158,7 +158,7 @@
mteiScriptTag, /* 'mtei' (MEETEI_MAYEK) */
armiScriptTag, /* 'armi' (IMPERIAL_ARAMAIC) */
avstScriptTag, /* 'avst' (AVESTAN) */
- cakmScriptTag, /* 'cakm' (CAKM) */
+ cakmScriptTag, /* 'cakm' (CHAKMA) */
koreScriptTag, /* 'kore' (KORE) */
kthiScriptTag, /* 'kthi' (KAITHI) */
maniScriptTag, /* 'mani' (MANI) */
@@ -181,7 +181,7 @@
kpelScriptTag, /* 'kpel' (KPEL) */
lomaScriptTag, /* 'loma' (LOMA) */
mendScriptTag, /* 'mend' (MEND) */
- mercScriptTag, /* 'merc' (MERC) */
+ mercScriptTag, /* 'merc' (MEROITIC_CURSIVE) */
narbScriptTag, /* 'narb' (NARB) */
nbatScriptTag, /* 'nbat' (NBAT) */
palmScriptTag, /* 'palm' (PALM) */
--- a/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.h Tue Jan 28 11:21:43 2014 -0800
@@ -140,13 +140,13 @@
const LETag linaScriptTag = 0x6C696E61; /* 'lina' (LINA) */
const LETag mandScriptTag = 0x6D616E64; /* 'mand' (MANDAIC) */
const LETag mayaScriptTag = 0x6D617961; /* 'maya' (MAYA) */
-const LETag meroScriptTag = 0x6D65726F; /* 'mero' (MERO) */
+const LETag meroScriptTag = 0x6D65726F; /* 'mero' (MEROITIC_HIEROGLYPHS) */
const LETag nkooScriptTag = 0x6E6B6F20; /* 'nko ' (NKO) */
const LETag orkhScriptTag = 0x6F726B68; /* 'orkh' (OLD_TURKIC) */
const LETag permScriptTag = 0x7065726D; /* 'perm' (PERM) */
const LETag phagScriptTag = 0x70686167; /* 'phag' (PHAGS_PA) */
const LETag phnxScriptTag = 0x70686E78; /* 'phnx' (PHOENICIAN) */
-const LETag plrdScriptTag = 0x706C7264; /* 'plrd' (PLRD) */
+const LETag plrdScriptTag = 0x706C7264; /* 'plrd' (MIAO) */
const LETag roroScriptTag = 0x726F726F; /* 'roro' (RORO) */
const LETag saraScriptTag = 0x73617261; /* 'sara' (SARA) */
const LETag syreScriptTag = 0x73797265; /* 'syre' (SYRE) */
@@ -172,7 +172,7 @@
const LETag mteiScriptTag = 0x6D746569; /* 'mtei' (MEETEI_MAYEK) */
const LETag armiScriptTag = 0x61726D69; /* 'armi' (IMPERIAL_ARAMAIC) */
const LETag avstScriptTag = 0x61767374; /* 'avst' (AVESTAN) */
-const LETag cakmScriptTag = 0x63616B6D; /* 'cakm' (CAKM) */
+const LETag cakmScriptTag = 0x63616B6D; /* 'cakm' (CHAKMA) */
const LETag koreScriptTag = 0x6B6F7265; /* 'kore' (KORE) */
const LETag kthiScriptTag = 0x6B746869; /* 'kthi' (KAITHI) */
const LETag maniScriptTag = 0x6D616E69; /* 'mani' (MANI) */
@@ -195,7 +195,7 @@
const LETag kpelScriptTag = 0x6B70656C; /* 'kpel' (KPEL) */
const LETag lomaScriptTag = 0x6C6F6D61; /* 'loma' (LOMA) */
const LETag mendScriptTag = 0x6D656E64; /* 'mend' (MEND) */
-const LETag mercScriptTag = 0x6D657263; /* 'merc' (MERC) */
+const LETag mercScriptTag = 0x6D657263; /* 'merc' (MEROITIC_CURSIVE) */
const LETag narbScriptTag = 0x6E617262; /* 'narb' (NARB) */
const LETag nbatScriptTag = 0x6E626174; /* 'nbat' (NBAT) */
const LETag palmScriptTag = 0x70616C6D; /* 'palm' (PALM) */
--- a/jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -65,17 +65,18 @@
for (glyph = 0; glyph < glyphCount; glyph += 1) {
LEGlyphID thisGlyph = glyphStorage[glyph];
+ // lookupSegment already range checked by lookupSegment() function.
const LookupSegment *lookupSegment = segmentArrayLookupTable->lookupSegment(segmentArrayLookupTable, segments, thisGlyph, success);
- if (lookupSegment != NULL) {
+ if (lookupSegment != NULL&& LE_SUCCESS(success)) {
TTGlyphID firstGlyph = SWAPW(lookupSegment->firstGlyph);
+ TTGlyphID lastGlyph = SWAPW(lookupSegment->lastGlyph);
le_int16 offset = SWAPW(lookupSegment->value);
-
- if (offset != 0) {
- TTGlyphID *glyphArray = (TTGlyphID *) ((char *) subtableHeader.getAliasTODO() + offset);
- TTGlyphID newGlyph = SWAPW(glyphArray[LE_GET_GLYPH(thisGlyph) - firstGlyph]);
-
- glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph);
+ TTGlyphID thisGlyphId= LE_GET_GLYPH(thisGlyph);
+ LEReferenceToArrayOf<TTGlyphID> glyphArray(subtableHeader, success, offset, lastGlyph - firstGlyph + 1);
+ if (offset != 0 && thisGlyphId <= lastGlyph && thisGlyphId >= firstGlyph && LE_SUCCESS(success) ) {
+ TTGlyphID newGlyph = SWAPW(glyphArray[thisGlyphId]);
+ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph);
}
}
}
--- a/jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -75,7 +75,7 @@
}
if (coverageIndex >= 0) {
- valueRecord.adjustPosition(SWAPW(valueFormat), (const char *) this, *glyphIterator, fontInstance);
+ valueRecord.adjustPosition(SWAPW(valueFormat), base, *glyphIterator, fontInstance, success);
return 1;
}
@@ -92,7 +92,7 @@
}
if (coverageIndex >= 0) {
- valueRecordArray[0].adjustPosition(coverageIndex, SWAPW(valueFormat), (const char *) this, *glyphIterator, fontInstance);
+ valueRecordArray[0].adjustPosition(coverageIndex, SWAPW(valueFormat), base, *glyphIterator, fontInstance, success);
return 1;
}
--- a/jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -76,7 +76,7 @@
if (coverageIndex >= 0) {
TTGlyphID substitute = ((TTGlyphID) LE_GET_GLYPH(glyph)) + SWAPW(deltaGlyphID);
- if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute))) {
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
glyphIterator->setCurrGlyphID(substitute);
}
@@ -97,7 +97,7 @@
if (coverageIndex >= 0) {
TTGlyphID substitute = SWAPW(substituteArray[coverageIndex]);
- if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute))) {
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
glyphIterator->setCurrGlyphID(substitute);
}
--- a/jdk/src/share/native/sun/font/layout/TibetanReordering.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/TibetanReordering.h Tue Jan 28 11:21:43 2014 -0800
@@ -39,7 +39,7 @@
*/
#ifndef __TIBETANREORDERING_H
-#define __TIBETANORDERING_H
+#define __TIBETANREORDERING_H
/**
* \file
--- a/jdk/src/share/native/sun/font/layout/ValueRecords.cpp Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ValueRecords.cpp Tue Jan 28 11:21:43 2014 -0800
@@ -59,8 +59,8 @@
return SWAPW(value);
}
-void ValueRecord::adjustPosition(ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const
+void ValueRecord::adjustPosition(ValueFormat valueFormat, const LETableReference& base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const
{
float xPlacementAdjustment = 0;
float yPlacementAdjustment = 0;
@@ -118,8 +118,8 @@
Offset dtOffset = getFieldValue(valueFormat, vrfXPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xPlacementAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -129,8 +129,8 @@
Offset dtOffset = getFieldValue(valueFormat, vrfYPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
yPlacementAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
@@ -140,8 +140,8 @@
Offset dtOffset = getFieldValue(valueFormat, vrfXAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xAdvanceAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -151,10 +151,10 @@
Offset dtOffset = getFieldValue(valueFormat, vrfYAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
- yAdvanceAdjustment += fontInstance->yPixelsToUnits(yAdj);
+ yAdvanceAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
}
}
@@ -163,8 +163,8 @@
xPlacementAdjustment, yPlacementAdjustment, xAdvanceAdjustment, yAdvanceAdjustment);
}
-void ValueRecord::adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const
+void ValueRecord::adjustPosition(le_int16 index, ValueFormat valueFormat, const LETableReference& base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const
{
float xPlacementAdjustment = 0;
float yPlacementAdjustment = 0;
@@ -222,8 +222,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfXPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xPlacementAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -233,8 +233,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfYPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
yPlacementAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
@@ -244,8 +244,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfXAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xAdvanceAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -255,8 +255,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfYAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
yAdvanceAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
--- a/jdk/src/share/native/sun/font/layout/ValueRecords.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ValueRecords.h Tue Jan 28 11:21:43 2014 -0800
@@ -53,10 +53,10 @@
le_int16 getFieldValue(ValueFormat valueFormat, ValueRecordField field) const;
le_int16 getFieldValue(le_int16 index, ValueFormat valueFormat, ValueRecordField field) const;
- void adjustPosition(ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const;
- void adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const;
+ void adjustPosition(ValueFormat valueFormat, const LETableReference &base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const;
+ void adjustPosition(le_int16 index, ValueFormat valueFormat, const LETableReference &base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const;
static le_int16 getSize(ValueFormat valueFormat);
--- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c Tue Jan 28 11:21:43 2014 -0800
@@ -215,6 +215,11 @@
Output[0] = LinearInterp(rest, y0, y1);
}
+// To prevent out of bounds indexing
+cmsINLINE cmsFloat32Number fclamp(cmsFloat32Number v)
+{
+ return v < 0.0f ? 0.0f : (v > 1.0f ? 1.0f : v);
+}
// Floating-point version of 1D interpolation
static
@@ -227,13 +232,15 @@
int cell0, cell1;
const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table;
+ val2 = fclamp(Value[0]);
+
// if last value...
- if (Value[0] == 1.0) {
+ if (val2 == 1.0) {
Output[0] = LutTable[p -> Domain[0]];
return;
}
- val2 = p -> Domain[0] * Value[0];
+ val2 *= p -> Domain[0];
cell0 = (int) floor(val2);
cell1 = (int) ceil(val2);
@@ -292,13 +299,15 @@
cmsUInt32Number OutChan;
const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table;
+ val2 = fclamp(Value[0]);
+
// if last value...
- if (Value[0] == 1.0) {
+ if (val2 == 1.0) {
Output[0] = LutTable[p -> Domain[0]];
return;
}
- val2 = p -> Domain[0] * Value[0];
+ val2 *= p -> Domain[0];
cell0 = (int) floor(val2);
cell1 = (int) ceil(val2);
@@ -339,8 +348,8 @@
dxy;
TotalOut = p -> nOutputs;
- px = Input[0] * p->Domain[0];
- py = Input[1] * p->Domain[1];
+ px = fclamp(Input[0]) * p->Domain[0];
+ py = fclamp(Input[1]) * p->Domain[1];
x0 = (int) _cmsQuickFloor(px); fx = px - (cmsFloat32Number) x0;
y0 = (int) _cmsQuickFloor(py); fy = py - (cmsFloat32Number) y0;
@@ -454,20 +463,9 @@
TotalOut = p -> nOutputs;
// We need some clipping here
- px = Input[0];
- py = Input[1];
- pz = Input[2];
-
- if (px < 0) px = 0;
- if (px > 1) px = 1;
- if (py < 0) py = 0;
- if (py > 1) py = 1;
- if (pz < 0) pz = 0;
- if (pz > 1) pz = 1;
-
- px *= p->Domain[0];
- py *= p->Domain[1];
- pz *= p->Domain[2];
+ px = fclamp(Input[0]) * p->Domain[0];
+ py = fclamp(Input[1]) * p->Domain[1];
+ pz = fclamp(Input[2]) * p->Domain[2];
x0 = (int) _cmsQuickFloor(px); fx = px - (cmsFloat32Number) x0;
y0 = (int) _cmsQuickFloor(py); fy = py - (cmsFloat32Number) y0;
@@ -609,20 +607,9 @@
TotalOut = p -> nOutputs;
// We need some clipping here
- px = Input[0];
- py = Input[1];
- pz = Input[2];
-
- if (px < 0) px = 0;
- if (px > 1) px = 1;
- if (py < 0) py = 0;
- if (py > 1) py = 1;
- if (pz < 0) pz = 0;
- if (pz > 1) pz = 1;
-
- px *= p->Domain[0];
- py *= p->Domain[1];
- pz *= p->Domain[2];
+ px = fclamp(Input[0]) * p->Domain[0];
+ py = fclamp(Input[1]) * p->Domain[1];
+ pz = fclamp(Input[2]) * p->Domain[2];
x0 = (int) _cmsQuickFloor(px); rx = (px - (cmsFloat32Number) x0);
y0 = (int) _cmsQuickFloor(py); ry = (py - (cmsFloat32Number) y0);
@@ -1039,8 +1026,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
-
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1127,7 +1113,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1214,7 +1200,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1299,7 +1285,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1384,7 +1370,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
--- a/jdk/src/share/native/sun/management/Flag.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/management/Flag.c Tue Jan 28 11:21:43 2014 -0800
@@ -36,6 +36,7 @@
static jobject envvar_origin = NULL;
static jobject config_file_origin = NULL;
static jobject ergo_origin = NULL;
+static jobject attach_origin = NULL;
static jobject other_origin = NULL;
JNIEXPORT jint JNICALL
@@ -74,6 +75,7 @@
envvar_origin = find_origin_constant(env, "ENVIRON_VAR");
config_file_origin = find_origin_constant(env, "CONFIG_FILE");
ergo_origin = find_origin_constant(env, "ERGONOMIC");
+ attach_origin = find_origin_constant(env, "ATTACH_ON_DEMAND");
other_origin = find_origin_constant(env, "OTHER");
}
@@ -154,6 +156,9 @@
case JMM_VMGLOBAL_ORIGIN_ERGONOMIC:
origin = ergo_origin;
break;
+ case JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND:
+ origin = attach_origin;
+ break;
case JMM_VMGLOBAL_ORIGIN_OTHER:
origin = other_origin;
break;
--- a/jdk/src/share/native/sun/misc/MessageUtils.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/misc/MessageUtils.c Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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,6 +25,7 @@
#include <stdlib.h>
#include <jni.h>
+#include <jni_util.h>
#include <jlong.h>
#include <stdio.h>
#include <jvm.h>
@@ -35,7 +36,7 @@
printToFile(JNIEnv *env, jstring s, FILE *file)
{
char *sConverted;
- int length;
+ int length = 0;
int i;
const jchar *sAsArray;
@@ -45,8 +46,20 @@
}
sAsArray = (*env)->GetStringChars(env, s, NULL);
+ if (!sAsArray)
+ return;
length = (*env)->GetStringLength(env, s);
+ if (length == 0) {
+ (*env)->ReleaseStringChars(env, s, sAsArray);
+ return;
+ }
sConverted = (char *) malloc(length + 1);
+ if (!sConverted) {
+ (*env)->ReleaseStringChars(env, s, sAsArray);
+ JNU_ThrowOutOfMemoryError(env, NULL);
+ return;
+ }
+
for(i = 0; i < length; i++) {
sConverted[i] = (0x7f & sAsArray[i]);
}
--- a/jdk/src/share/native/sun/misc/VM.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/misc/VM.c Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -33,84 +33,6 @@
#include "sun_misc_VM.h"
-typedef jintArray (JNICALL *GET_THREAD_STATE_VALUES_FN)(JNIEnv *, jint);
-typedef jobjectArray (JNICALL *GET_THREAD_STATE_NAMES_FN)(JNIEnv *, jint, jintArray);
-
-static GET_THREAD_STATE_VALUES_FN GetThreadStateValues_fp = NULL;
-static GET_THREAD_STATE_NAMES_FN GetThreadStateNames_fp = NULL;
-
-static void get_thread_state_info(JNIEnv *env, jint state,
- jobjectArray stateValues,
- jobjectArray stateNames) {
- char errmsg[128];
- jintArray values;
- jobjectArray names;
-
- values = (*GetThreadStateValues_fp)(env, state);
- if (values == NULL) {
- sprintf(errmsg, "Mismatched VM version: Thread state (%d) "
- "not supported", state);
- JNU_ThrowInternalError(env, errmsg);
- return;
- }
- /* state is also used as the index in the array */
- (*env)->SetObjectArrayElement(env, stateValues, state, values);
-
- names = (*GetThreadStateNames_fp)(env, state, values);
- if (names == NULL) {
- sprintf(errmsg, "Mismatched VM version: Thread state (%d) "
- "not supported", state);
- JNU_ThrowInternalError(env, errmsg);
- return;
- }
- (*env)->SetObjectArrayElement(env, stateNames, state, names);
-}
-
-JNIEXPORT void JNICALL
-Java_sun_misc_VM_getThreadStateValues(JNIEnv *env, jclass cls,
- jobjectArray values,
- jobjectArray names)
-{
- char errmsg[128];
-
- // check if the number of Thread.State enum constants
- // matches the number of states defined in jvm.h
- jsize len1 = (*env)->GetArrayLength(env, values);
- jsize len2 = (*env)->GetArrayLength(env, names);
- if (len1 != JAVA_THREAD_STATE_COUNT || len2 != JAVA_THREAD_STATE_COUNT) {
- sprintf(errmsg, "Mismatched VM version: JAVA_THREAD_STATE_COUNT = %d "
- " but JDK expects %d / %d",
- JAVA_THREAD_STATE_COUNT, len1, len2);
- JNU_ThrowInternalError(env, errmsg);
- return;
- }
-
- if (GetThreadStateValues_fp == NULL) {
- GetThreadStateValues_fp = (GET_THREAD_STATE_VALUES_FN)
- JDK_FindJvmEntry("JVM_GetThreadStateValues");
- if (GetThreadStateValues_fp == NULL) {
- JNU_ThrowInternalError(env,
- "Mismatched VM version: JVM_GetThreadStateValues not found");
- return;
- }
-
- GetThreadStateNames_fp = (GET_THREAD_STATE_NAMES_FN)
- JDK_FindJvmEntry("JVM_GetThreadStateNames");
- if (GetThreadStateNames_fp == NULL) {
- JNU_ThrowInternalError(env,
- "Mismatched VM version: JVM_GetThreadStateNames not found");
- return ;
- }
- }
-
- get_thread_state_info(env, JAVA_THREAD_STATE_NEW, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_RUNNABLE, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_BLOCKED, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_WAITING, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_TIMED_WAITING, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_TERMINATED, values, names);
-}
-
JNIEXPORT jobject JNICALL
Java_sun_misc_VM_latestUserDefinedLoader(JNIEnv *env, jclass cls) {
return JVM_LatestUserDefinedLoader(env);
--- a/jdk/src/share/native/sun/misc/Version.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/share/native/sun/misc/Version.c Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 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
@@ -34,44 +34,13 @@
char jdk_special_version = '\0';
static void setStaticIntField(JNIEnv* env, jclass cls, const char* name, jint value)
{
- char errmsg[100];
jfieldID fid;
fid = (*env)->GetStaticFieldID(env, cls, name, "I");
if (fid != 0) {
(*env)->SetStaticIntField(env, cls, fid, value);
- } else {
- sprintf(errmsg, "Static int field %s not found", name);
- JNU_ThrowInternalError(env, errmsg);
}
}
-static void setStaticBooleanField(JNIEnv* env, jclass cls, const char* name, jboolean value)
-{
- char errmsg[100];
- jfieldID fid;
- fid = (*env)->GetStaticFieldID(env, cls, name, "Z");
- if (fid != 0) {
- (*env)->SetStaticBooleanField(env, cls, fid, value);
- } else {
- sprintf(errmsg, "Static boolean field %s not found", name);
- JNU_ThrowInternalError(env, errmsg);
- }
-}
-
-static void setStaticStringField(JNIEnv* env, jclass cls, const char* name, jstring value)
-{
- char errmsg[100];
- jfieldID fid;
- fid = (*env)->GetStaticFieldID(env, cls, name, "Ljava/lang/String");
- if (fid != 0) {
- (*env)->SetStaticObjectField(env, cls, fid, value);
- } else {
- sprintf(errmsg, "Static String field %s not found", name);
- JNU_ThrowInternalError(env, errmsg);
- }
-}
-
-
typedef void (JNICALL *GetJvmVersionInfo_fp)(JNIEnv*, jvm_version_info*, size_t);
JNIEXPORT jboolean JNICALL
@@ -82,6 +51,7 @@
if (!JDK_InitJvmHandle()) {
JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup");
+ return JNI_FALSE;
}
func_p = (GetJvmVersionInfo_fp) JDK_FindJvmEntry("JVM_GetVersionInfo");
if (func_p == NULL) {
@@ -90,10 +60,15 @@
(*func_p)(env, &info, sizeof(info));
setStaticIntField(env, cls, "jvm_major_version", JVM_VERSION_MAJOR(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_update_version", info.update_version);
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
jvm_special_version = info.special_update_version;
return JNI_TRUE;
@@ -116,10 +91,15 @@
JDK_GetVersionInfo0(&info, sizeof(info));
setStaticIntField(env, cls, "jdk_major_version", JDK_VERSION_MAJOR(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_update_version", info.update_version);
+ CHECK_EXCEPTION(env);
jdk_special_version = info.special_update_version;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/classes/sun/net/PortConfig.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package sun.net;
+
+import java.security.AccessController;
+
+/**
+ * Determines the ephemeral port range in use on this system.
+ * If this cannot be determined, then the default settings
+ * of the OS are returned.
+ */
+
+public final class PortConfig {
+
+ private static int defaultUpper, defaultLower;
+ private final static int upper, lower;
+
+ private PortConfig() {}
+
+ static {
+ AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("net");
+ String os = System.getProperty("os.name");
+ if (os.startsWith("Linux")) {
+ defaultLower = 32768;
+ defaultUpper = 61000;
+ } else if (os.startsWith("SunOS")) {
+ defaultLower = 32768;
+ defaultUpper = 65535;
+ } else if (os.contains("OS X")) {
+ defaultLower = 49152;
+ defaultUpper = 65535;
+ } else {
+ throw new InternalError(
+ "sun.net.PortConfig: unknown OS");
+ }
+ return null;
+ }
+ });
+
+ int v = getLower0();
+ if (v == -1) {
+ v = defaultLower;
+ }
+ lower = v;
+
+ v = getUpper0();
+ if (v == -1) {
+ v = defaultUpper;
+ }
+ upper = v;
+ }
+
+ static native int getLower0();
+ static native int getUpper0();
+
+ public static int getLower() {
+ return lower;
+ }
+
+ public static int getUpper() {
+ return upper;
+ }
+}
--- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -187,6 +187,10 @@
SctpNet.throwAlreadyBoundException();
InetSocketAddress isa = (local == null) ?
new InetSocketAddress(0) : Net.checkAddress(local);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkListen(isa.getPort());
+ }
Net.bind(fd, isa.getAddress(), isa.getPort());
InetSocketAddress boundIsa = Net.localAddress(fd);
port = boundIsa.getPort();
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Tue Jan 28 11:21:43 2014 -0800
@@ -375,11 +375,12 @@
UnixPath dir = UnixPath.toUnixPath(obj);
dir.checkWrite();
- int mode = UnixFileModeAttribute
- .toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
+ int mode = UnixFileModeAttribute.toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
try {
mkdir(dir, mode);
} catch (UnixException x) {
+ if (x.errno() == EISDIR)
+ throw new FileAlreadyExistsException(dir.toString());
x.rethrowAsIOException(dir);
}
}
--- a/jdk/src/solaris/native/java/net/net_util_md.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/solaris/native/java/net/net_util_md.c Tue Jan 28 11:21:43 2014 -0800
@@ -138,8 +138,7 @@
* of the parameter is assumed to be an 'int'. If the parameter
* cannot be obtained return -1
*/
-static int
-getParam(char *driver, char *param)
+int net_getParam(char *driver, char *param)
{
struct strioctl stri;
char buf [64];
@@ -166,7 +165,7 @@
/*
* Iterative way to find the max value that SO_SNDBUF or SO_RCVBUF
- * for Solaris versions that do not support the ioctl() in getParam().
+ * for Solaris versions that do not support the ioctl() in net_getParam().
* Ugly, but only called once (for each sotype).
*
* As an optimization, we make a guess using the default values for Solaris
@@ -1359,7 +1358,7 @@
* If that fails, we use the search algorithm in findMaxBuf()
*/
if (!init_tcp_max_buf && sotype == SOCK_STREAM) {
- tcp_max_buf = getParam("/dev/tcp", "tcp_max_buf");
+ tcp_max_buf = net_getParam("/dev/tcp", "tcp_max_buf");
if (tcp_max_buf == -1) {
tcp_max_buf = findMaxBuf(fd, opt, SOCK_STREAM);
if (tcp_max_buf == -1) {
@@ -1368,7 +1367,7 @@
}
init_tcp_max_buf = 1;
} else if (!init_udp_max_buf && sotype == SOCK_DGRAM) {
- udp_max_buf = getParam("/dev/udp", "udp_max_buf");
+ udp_max_buf = net_getParam("/dev/udp", "udp_max_buf");
if (udp_max_buf == -1) {
udp_max_buf = findMaxBuf(fd, opt, SOCK_DGRAM);
if (udp_max_buf == -1) {
--- a/jdk/src/solaris/native/java/net/net_util_md.h Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/solaris/native/java/net/net_util_md.h Tue Jan 28 11:21:43 2014 -0800
@@ -81,6 +81,9 @@
int getDefaultIPv6Interface(struct in6_addr *target_addr);
#endif
+#ifdef __solaris__
+extern int net_getParam(char *driver, char *param);
+#endif
/* needed from libsocket on Solaris 8 */
--- a/jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Tue Jan 28 11:21:43 2014 -0800
@@ -577,8 +577,8 @@
SplashUnlock(splash);
rc = poll(pfd, 2, timeout);
SplashLock(splash);
- if (splash->isVisible>0 && SplashTime() >= splash->time +
- splash->frames[splash->currentFrame].delay) {
+ if (splash->isVisible > 0 && splash->currentFrame >= 0 &&
+ SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) {
SplashNextFrame(splash);
SplashUpdateShape(splash);
SplashRedrawWindow(splash);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/net/portconfig.c Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+
+#if defined(_ALLBSD_SOURCE)
+#include <sys/sysctl.h>
+#endif
+
+#include "jni.h"
+#include "net_util.h"
+#include "sun_net_PortConfig.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct portrange {
+ int lower;
+ int higher;
+};
+
+static int getPortRange(struct portrange *range)
+{
+#ifdef __linux__
+ {
+ FILE *f;
+ int ret;
+
+ f = fopen("/proc/sys/net/ipv4/ip_local_port_range", "r");
+ if (f != NULL) {
+ ret = fscanf(f, "%d %d", &range->lower, &range->higher);
+ fclose(f);
+ return ret == 2 ? 0 : -1;
+ }
+ return -1;
+ }
+
+#elif defined(__solaris__)
+ {
+ range->higher = net_getParam("/dev/tcp", "tcp_largest_anon_port");
+ range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port");
+ return 0;
+ }
+#elif defined(_ALLBSD_SOURCE)
+ {
+ int ret;
+ size_t size = sizeof(range->lower);
+ ret = sysctlbyname(
+ "net.inet.ip.portrange.first", &range->lower, &size, 0, 0
+ );
+ if (ret == -1) {
+ return -1;
+ }
+ size = sizeof(range->higher);
+ ret = sysctlbyname(
+ "net.inet.ip.portrange.last", &range->higher, &size, 0, 0
+ );
+ return ret;
+ }
+#else
+ return -1;
+#endif
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getLower0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getLower0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ if (getPortRange(&range) < 0) {
+ return -1;
+ }
+ return range.lower;
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getUpper0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getUpper0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ if (getPortRange(&range) < 0) {
+ return -1;
+ }
+ return range.higher;
+}
+
+#ifdef __cplusplus
+}
+#endif
--- a/jdk/src/windows/bin/java_md.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/windows/bin/java_md.c Tue Jan 28 11:21:43 2014 -0800
@@ -1475,7 +1475,7 @@
// expand the arguments that require expansion, the java method will strip
// out the indicator character.
- inArray = NewPlatformStringArray(env, nargv, argc);
+ NULL_CHECK0(inArray = NewPlatformStringArray(env, nargv, argc));
outArray = (*env)->CallStaticObjectMethod(env, cls, mid, inArray);
for (i = 0; i < argc; i++) {
JLI_MemFree(nargv[i]);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/classes/sun/net/PortConfig.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+package sun.net;
+
+import java.security.AccessController;
+
+/**
+ * Determines the ephemeral port range in use on this system.
+ * If this cannot be determined, then the default settings
+ * of the OS are returned.
+ */
+
+public final class PortConfig {
+
+ private static int defaultUpper, defaultLower;
+ private final static int upper, lower;
+
+ static {
+ AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("net");
+ return null;
+ }
+ });
+
+ int v = getLower0();
+ if (v == -1) {
+ v = defaultLower;
+ }
+ lower = v;
+
+ v = getUpper0();
+ if (v == -1) {
+ v = defaultUpper;
+ }
+ upper = v;
+ }
+
+ static native int getLower0();
+ static native int getUpper0();
+
+ public static int getLower() {
+ return lower;
+ }
+
+ public static int getUpper() {
+ return upper;
+ }
+}
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -31,6 +31,9 @@
import java.net.*;
import java.util.concurrent.*;
import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import sun.misc.Unsafe;
/**
@@ -300,6 +303,19 @@
}
}
+ private void doPrivilegedBind(final SocketAddress sa) throws IOException {
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws IOException {
+ bind(sa);
+ return null;
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (IOException) e.getException();
+ }
+ }
+
@Override
<A> Future<Void> implConnect(SocketAddress remote,
A attachment,
@@ -330,7 +346,12 @@
throw new ConnectionPendingException();
if (localAddress == null) {
try {
- bind(new InetSocketAddress(0));
+ SocketAddress any = new InetSocketAddress(0);
+ if (sm == null) {
+ bind(any);
+ } else {
+ doPrivilegedBind(any);
+ }
} catch (IOException x) {
bindException = x;
}
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Tue Jan 28 11:21:43 2014 -0800
@@ -493,6 +493,14 @@
try {
CreateDirectory(dir.getPathForWin32Calls(), sd.address());
} catch (WindowsException x) {
+ // convert ERROR_ACCESS_DENIED to FileAlreadyExistsException if we can
+ // verify that the directory exists
+ if (x.lastError() == ERROR_ACCESS_DENIED) {
+ try {
+ if (WindowsFileAttributes.get(dir, false).isDirectory())
+ throw new FileAlreadyExistsException(dir.toString());
+ } catch (WindowsException ignore) { }
+ }
x.rethrowAsIOException(dir);
} finally {
sd.release();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/native/sun/net/portconfig.c Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2013, 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. 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.
+ */
+
+#include <windows.h>
+#include "jni.h"
+#include "net_util.h"
+#include "sun_net_PortConfig.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct portrange {
+ int lower;
+ int higher;
+};
+
+static int getPortRange(struct portrange *range)
+{
+ OSVERSIONINFO ver;
+ ver.dwOSVersionInfoSize = sizeof(ver);
+ GetVersionEx(&ver);
+
+ /* Check for major version 5 or less = Windows XP/2003 or older */
+ if (ver.dwMajorVersion <= 5) {
+ LONG ret;
+ HKEY hKey;
+ range->lower = 1024;
+ range->higher = 4999;
+
+ /* check registry to see if upper limit was raised */
+ ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
+ 0, KEY_READ, (PHKEY)&hKey
+ );
+ if (ret == ERROR_SUCCESS) {
+ DWORD maxuserport;
+ ULONG ulType;
+ DWORD dwLen = sizeof(maxuserport);
+ ret = RegQueryValueEx(hKey, "MaxUserPort", NULL, &ulType,
+ (LPBYTE)&maxuserport, &dwLen);
+ RegCloseKey(hKey);
+ if (ret == ERROR_SUCCESS) {
+ range->higher = maxuserport;
+ }
+ }
+ } else {
+ /* There doesn't seem to be an API to access this. "MaxUserPort"
+ * is affected, but is not sufficient to determine.
+ * so we just use the defaults, which are less likely to change
+ */
+ range->lower = 49152;
+ range->higher = 65535;
+ }
+ return 0;
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getLower0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getLower0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ getPortRange(&range);
+ return range.lower;
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getUpper0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getUpper0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ getPortRange(&range);
+ return range.higher;
+}
+#ifdef __cplusplus
+}
+#endif
--- a/jdk/src/windows/native/sun/security/krb5/NativeCreds.c Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/src/windows/native/sun/security/krb5/NativeCreds.c Tue Jan 28 11:21:43 2014 -0800
@@ -388,7 +388,7 @@
jobject ticketFlags, startTime, endTime, krbCreds = NULL;
jobject authTime, renewTillTime, hostAddresses = NULL;
KERB_EXTERNAL_TICKET *msticket;
- int found_in_cache = 0;
+ int found = 0;
FILETIME Now, EndTime, LocalEndTime;
int i, netypes;
@@ -476,7 +476,7 @@
if (CompareFileTime(&Now, &LocalEndTime) < 0) {
for (i=0; i<netypes; i++) {
if (etypes[i] == msticket->SessionKey.KeyType) {
- found_in_cache = 1;
+ found = 1;
if (native_debug) {
printf("LSA: Valid etype found: %d\n", etypes[i]);
}
@@ -486,7 +486,7 @@
}
}
- if (!found_in_cache) {
+ if (!found) {
if (native_debug) {
printf("LSA: MS TGT in cache is invalid/not supported; request new ticket\n");
}
@@ -529,6 +529,14 @@
// got the native MS Kerberos TGT
msticket = &(pTicketResponse->Ticket);
+
+ if (msticket->SessionKey.KeyType != etypes[i]) {
+ if (native_debug) {
+ printf("LSA: Response etype is %d for %d. Retry.\n", msticket->SessionKey.KeyType, etypes[i]);
+ }
+ continue;
+ }
+ found = 1;
break;
}
}
@@ -583,6 +591,10 @@
} KERB_CRYPTO_KEY, *PKERB_CRYPTO_KEY;
*/
+ if (!found) {
+ break;
+ }
+
// Build a com.sun.security.krb5.Ticket
ticket = BuildTicket(env, msticket->EncodedTicket,
msticket->EncodedTicketSize);
--- a/jdk/test/ProblemList.txt Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/ProblemList.txt Tue Jan 28 11:21:43 2014 -0800
@@ -123,11 +123,6 @@
# 8029415
java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java generic-all
-# 8030656
-java/lang/reflect/Parameter/GetAnnotatedTypeTest.java generic-all
-java/lang/reflect/Parameter/WithParameters.java generic-all
-java/lang/reflect/Parameter/BadClassFiles.java generic-all
-
############################################################################
# jdk_management
@@ -150,12 +145,6 @@
# 6988950
demo/jvmti/compiledMethodLoad/CompiledMethodLoadTest.java generic-all
-# 7027502
-demo/jvmti/hprof/MonitorTest.java generic-all
-
-# 8027973
-javax/xml/jaxp/transform/jdk8004476/XSLTExFuncTest.java windows-all
-
############################################################################
# jdk_net
@@ -283,3 +272,10 @@
# jdk_util
############################################################################
+
+# svc_tools
+
+# 8031482
+sun/tools/jcmd/TestJcmdSanity.java windows-all
+
+############################################################################
--- a/jdk/test/TEST.groups Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/TEST.groups Tue Jan 28 11:21:43 2014 -0800
@@ -379,7 +379,6 @@
java/util/ResourceBundle/Control/Bug6530694.java \
java/text/Bidi/BidiConformance.java \
java/text/Bidi/BidiEmbeddingTest.java \
- java/text/Bidi/Bug6665028.java \
java/text/Bidi/Bug7042148.java \
java/text/Bidi/Bug7051769.java \
javax/crypto/Cipher/CipherStreamClose.java \
--- a/jdk/test/com/sun/jdi/BadHandshakeTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/com/sun/jdi/BadHandshakeTest.java Tue Jan 28 11:21:43 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
@@ -85,7 +85,7 @@
success.set(line.contains("Listening for transport dt_socket at address:"));
return true;
},
- 1500,
+ Integer.MAX_VALUE,
TimeUnit.MILLISECONDS
);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/CheckOrigin.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2013, 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 8028994
+ * @author Staffan Larsen
+ * @library /lib/testlibrary
+ * @run main CheckOrigin
+ */
+
+import com.sun.management.HotSpotDiagnosticMXBean;
+import com.sun.management.VMOption;
+import com.sun.management.VMOption.Origin;
+import com.sun.tools.attach.VirtualMachine;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.lang.management.ManagementFactory;
+import java.util.Map;
+import jdk.testlibrary.ProcessTools;
+import sun.tools.attach.HotSpotVirtualMachine;
+
+public class CheckOrigin {
+
+ private static HotSpotDiagnosticMXBean mbean;
+
+ public static void main(String... args) throws Exception {
+ if (args.length == 0) {
+ // start a process that has options set in a number of different ways
+
+ File flagsFile = File.createTempFile("CheckOriginFlags", null);
+ try (PrintWriter pw =
+ new PrintWriter(new FileWriter(flagsFile))) {
+ pw.println("+PrintSafepointStatistics");
+ }
+
+ ProcessBuilder pb = ProcessTools.
+ createJavaProcessBuilder(
+ "-XX:+PrintGCDetails",
+ "-XX:Flags=" + flagsFile.getAbsolutePath(),
+ "-cp", System.getProperty("test.class.path") + File.pathSeparator + getToolsJarPath(),
+ "CheckOrigin",
+ "-runtests");
+
+ Map<String, String> env = pb.environment();
+ env.put("_JAVA_OPTIONS", "-XX:+PrintOopAddress");
+
+ pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
+ pb.redirectError(ProcessBuilder.Redirect.INHERIT);
+ Process p = pb.start();
+ int exit = p.waitFor();
+ System.out.println("sub process exit == " + exit);
+ if (exit != 0) {
+ throw new Exception("Unexpected exit code from subprocess == " + exit);
+ }
+ } else {
+ mbean =
+ ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class);
+
+ // set a few more options
+ mbean.setVMOption("HeapDumpOnOutOfMemoryError", "true");
+ setOptionUsingAttach("HeapDumpPath", "/a/sample/path");
+
+ // check the origin field for all the options we set
+ checkOrigin("ManagementServer", Origin.DEFAULT);
+ checkOrigin("PrintGCDetails", Origin.VM_CREATION);
+ checkOrigin("PrintOopAddress", Origin.ENVIRON_VAR);
+ checkOrigin("PrintSafepointStatistics", Origin.CONFIG_FILE);
+ checkOrigin("HeapDumpOnOutOfMemoryError", Origin.MANAGEMENT);
+ checkOrigin("NewSize", Origin.ERGONOMIC);
+ checkOrigin("HeapDumpPath", Origin.ATTACH_ON_DEMAND);
+ }
+ }
+
+ private static void checkOrigin(String option, Origin origin) throws Exception
+ {
+ Origin o = mbean.getVMOption(option).getOrigin();
+ if (!o.equals(origin)) {
+ throw new Exception("Option '" + option + "' should have origin '" + origin + "' but had '" + o + "'");
+ }
+ System.out.println("Option '" + option + "' verified origin = '" + origin + "'");
+ }
+
+ // use attach to set a manageable vm option
+ private static void setOptionUsingAttach(String option, String value) throws Exception {
+ HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(ProcessTools.getProcessId()+"");
+ InputStream in = vm.setFlag(option, value);
+ System.out.println("Result from setting '" + option + "' to '" + value + "' using attach:");
+ drain(vm, in);
+ System.out.println("-- end -- ");
+ }
+
+ // Read the stream from the target VM until EOF, print to output, then detach
+ private static void drain(VirtualMachine vm, InputStream in) throws Exception {
+ byte b[] = new byte[256];
+ int n;
+ do {
+ n = in.read(b);
+ if (n > 0) {
+ String s = new String(b, 0, n, "UTF-8");
+ System.out.print(s);
+ }
+ } while (n > 0);
+ in.close();
+ vm.detach();
+ }
+
+ private static String getToolsJarPath() {
+ return System.getProperty("java.home") +
+ "/../lib/tools.jar".replace("/", File.separator);
+ }
+}
--- a/jdk/test/demo/jvmti/Context.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/demo/jvmti/Context.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -167,11 +167,16 @@
turn.notifyAll();
}
/* If we've had all our turns, break out of this loop */
- if ( thread_turns == turns_taken ) {
+ if (thread_turns == turns_taken) {
+ System.out.println("Loop end: thread got " + turns_taken
+ + " turns, expected " + thread_turns);
break;
}
}
- } catch (InterruptedException intEx) { /* skip */ }
+ } catch (InterruptedException intEx) {
+ System.out.println("Got an InterruptedException:" + intEx);
+ /* skip */
+ }
/* Make sure we got all our turns */
if ( thread_turns != turns_taken ) {
--- a/jdk/test/demo/jvmti/hprof/StackMapTableTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/demo/jvmti/hprof/StackMapTableTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2009, 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
@@ -27,7 +27,7 @@
* @summary Test jvmti hprof and java_crw_demo with StackMapTable attributes
*
* @compile ../DemoRun.java
- * @compile -source 7 -g:lines HelloWorld.java
+ * @compile -g:lines HelloWorld.java
* @build StackMapTableTest
* @run main StackMapTableTest HelloWorld
*/
--- a/jdk/test/java/lang/Long/Unsigned.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/lang/Long/Unsigned.java Tue Jan 28 11:21:43 2014 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4504839 4215269 6322074
+ * @bug 4504839 4215269 6322074 8030814
* @summary Basic tests for unsigned operations
* @author Joseph D. Darcy
*/
@@ -310,6 +310,55 @@
}
}
+ // test case known at one time to fail
+ errors += testUnsignedOverflow("1234567890abcdef1", 16, true);
+
+ // largest value with guard = 91 = 13*7; radix = 13
+ errors += testUnsignedOverflow("196a78a44c3bba320c", 13, false);
+
+ // smallest value with guard = 92 = 23*2*2; radix = 23
+ errors += testUnsignedOverflow("137060c6g1c1dg0", 23, false);
+
+ // guard in [92,98]: no overflow
+
+ // one less than smallest guard value to overflow: guard = 99 = 11*3*3, radix = 33
+ errors += testUnsignedOverflow("b1w8p7j5q9r6f", 33, false);
+
+ // smallest guard value to overflow: guard = 99 = 11*3*3, radix = 33
+ errors += testUnsignedOverflow("b1w8p7j5q9r6g", 33, true);
+
+ // test overflow of overflow
+ BigInteger maxUnsignedLong =
+ BigInteger.ONE.shiftLeft(64).subtract(BigInteger.ONE);
+ for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
+ BigInteger quotient = maxUnsignedLong.divide(BigInteger.valueOf(radix));
+ for (int addend = 2; addend <= radix; addend++) {
+ BigInteger b = quotient.multiply(BigInteger.valueOf(radix + addend));
+ errors += testUnsignedOverflow(b.toString(radix), radix, b.compareTo(maxUnsignedLong) > 0);
+ }
+ }
+
+ return errors;
+ }
+
+ // test for missing or unexpected unsigned overflow exception
+ private static int testUnsignedOverflow(String s, int radix, boolean exception) {
+ int errors = 0;
+ long result;
+ try {
+ result = Long.parseUnsignedLong(s, radix);
+ if (exception) {
+ System.err.printf("Unexpected result %d for Long.parseUnsignedLong(%s,%d)\n",
+ result, s, radix);
+ errors++;
+ }
+ } catch (NumberFormatException nfe) {
+ if (!exception) {
+ System.err.printf("Unexpected exception %s for Long.parseUnsignedLong(%s,%d)\n",
+ nfe.toString(), s, radix);
+ errors++;
+ }
+ }
return errors;
}
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java Tue Jan 28 11:21:43 2014 -0800
@@ -38,6 +38,9 @@
import java.io.*;
import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -58,6 +61,15 @@
/* used for Mac OS X only */
static final String cfUserTextEncoding = System.getenv("__CF_USER_TEXT_ENCODING");
+ /**
+ * Returns the number of milliseconds since time given by
+ * startNanoTime, which must have been previously returned from a
+ * call to {@link System.nanoTime()}.
+ */
+ private static long millisElapsedSince(long startNanoTime) {
+ return TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanoTime);
+ }
+
private static String commandOutput(Reader r) throws Throwable {
StringBuilder sb = new StringBuilder();
int c;
@@ -515,18 +527,9 @@
}
}
- private static void copy(String src, String dst) {
- system("/bin/cp", "-fp", src, dst);
- }
-
- private static void system(String... command) {
- try {
- ProcessBuilder pb = new ProcessBuilder(command);
- ProcessResults r = run(pb.start());
- equal(r.exitValue(), 0);
- equal(r.out(), "");
- equal(r.err(), "");
- } catch (Throwable t) { unexpected(t); }
+ private static void copy(String src, String dst) throws IOException {
+ Files.copy(Paths.get(src), Paths.get(dst),
+ StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES);
}
private static String javaChildOutput(ProcessBuilder pb, String...args) {
@@ -2232,40 +2235,66 @@
//----------------------------------------------------------------
// Check that Process.waitFor(timeout, TimeUnit.MILLISECONDS)
- // interrupt works as expected.
+ // interrupt works as expected, if interrupted while waiting.
//----------------------------------------------------------------
try {
List<String> childArgs = new ArrayList<String>(javaChildArgs);
childArgs.add("sleep");
final Process p = new ProcessBuilder(childArgs).start();
final long start = System.nanoTime();
- final CountDownLatch ready = new CountDownLatch(1);
- final CountDownLatch done = new CountDownLatch(1);
+ final CountDownLatch aboutToWaitFor = new CountDownLatch(1);
final Thread thread = new Thread() {
public void run() {
try {
- final boolean result;
- try {
- ready.countDown();
- result = p.waitFor(30000, TimeUnit.MILLISECONDS);
- } catch (InterruptedException e) {
- return;
- }
+ aboutToWaitFor.countDown();
+ boolean result = p.waitFor(30L * 1000L, TimeUnit.MILLISECONDS);
fail("waitFor() wasn't interrupted, its return value was: " + result);
- } catch (Throwable t) {
- unexpected(t);
- } finally {
- done.countDown();
- }
+ } catch (InterruptedException success) {
+ } catch (Throwable t) { unexpected(t); }
}
};
thread.start();
- ready.await();
+ aboutToWaitFor.await();
Thread.sleep(1000);
thread.interrupt();
- done.await();
+ thread.join(10L * 1000L);
+ check(millisElapsedSince(start) < 10L * 1000L);
+ check(!thread.isAlive());
+ p.destroy();
+ } catch (Throwable t) { unexpected(t); }
+
+ //----------------------------------------------------------------
+ // Check that Process.waitFor(timeout, TimeUnit.MILLISECONDS)
+ // interrupt works as expected, if interrupted before waiting.
+ //----------------------------------------------------------------
+ try {
+ List<String> childArgs = new ArrayList<String>(javaChildArgs);
+ childArgs.add("sleep");
+ final Process p = new ProcessBuilder(childArgs).start();
+ final long start = System.nanoTime();
+ final CountDownLatch threadStarted = new CountDownLatch(1);
+
+ final Thread thread = new Thread() {
+ public void run() {
+ try {
+ threadStarted.countDown();
+ do { Thread.yield(); }
+ while (!Thread.currentThread().isInterrupted());
+ boolean result = p.waitFor(30L * 1000L, TimeUnit.MILLISECONDS);
+ fail("waitFor() wasn't interrupted, its return value was: " + result);
+ } catch (InterruptedException success) {
+ } catch (Throwable t) { unexpected(t); }
+ }
+ };
+
+ thread.start();
+ threadStarted.await();
+ thread.interrupt();
+ thread.join(10L * 1000L);
+ check(millisElapsedSince(start) < 10L * 1000L);
+ check(!thread.isAlive());
p.destroy();
} catch (Throwable t) { unexpected(t); }
@@ -2441,7 +2470,7 @@
static void check(boolean cond, String m) {if (cond) pass(); else fail(m);}
static void equal(Object x, Object y) {
if (x == null ? y == null : x.equals(y)) pass();
- else fail(x + " not equal to " + y);}
+ else fail(">'" + x + "'<" + " not equal to " + "'" + y + "'");}
public static void main(String[] args) throws Throwable {
try {realMain(args);} catch (Throwable t) {unexpected(t);}
--- a/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Tue Jan 28 11:21:43 2014 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6741606 7146431 8000450 8019830
+ * @bug 6741606 7146431 8000450 8019830 8022945
* @summary Make sure all restricted packages listed in the package.access
* property in the java.security file are blocked
* @run main/othervm CheckPackageAccess
@@ -56,6 +56,7 @@
"com.sun.istack.internal.",
"com.sun.jmx.",
"com.sun.media.sound.",
+ "com.sun.naming.internal.",
"com.sun.proxy.",
"com.sun.corba.se.",
"com.sun.org.apache.bcel.internal.",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/ObjectMethodInInterfaceTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,46 @@
+/*
+ * 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 8031502
+ * @summary JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
+ * @compile ObjectMethodInInterfaceTest.java
+ * @run main/othervm -Djava.lang.invoke.MethodHandle.COMPILE_THRESHOLD=0 test.java.lang.invoke.ObjectMethodInInterfaceTest
+ */
+package test.java.lang.invoke;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+
+public class ObjectMethodInInterfaceTest {
+ public static void main(String[] args) throws Throwable {
+ MethodHandle mh = MethodHandles.lookup().findVirtual(CharSequence.class, "toString", MethodType.methodType(String.class));
+ MethodType mt = MethodType.methodType(Object.class, CharSequence.class);
+ mh = mh.asType(mt);
+
+ Object res = mh.invokeExact((CharSequence)"123");
+
+ System.out.println("TEST PASSED");
+ }
+}
--- a/jdk/test/java/lang/management/ThreadMXBean/ThreadBlockedCount.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/lang/management/ThreadMXBean/ThreadBlockedCount.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,7 +27,6 @@
* @summary Basic unit test of ThreadInfo.getBlockedCount()
* @author Alexei Guibadoulline and Mandy Chung
* @author Jaroslav Bachorik
- *
* @run main ThreadBlockedCount
*/
@@ -35,7 +34,7 @@
import java.util.concurrent.Phaser;
public class ThreadBlockedCount {
- final static long EXPECTED_BLOCKED_COUNT = 3;
+ final static long EXPECTED_BLOCKED_COUNT = 3;
final static int DEPTH = 10;
private static final ThreadMXBean mbean
= ManagementFactory.getThreadMXBean();
@@ -47,13 +46,20 @@
private static final Object blockedObj1 = new Object();
private static final Object blockedObj2 = new Object();
private static final Object blockedObj3 = new Object();
- private static volatile boolean testOk = false;
+ private static volatile boolean testOk = true;
private static BlockingThread blocking;
private static BlockedThread blocked;
-
+ public static void main(String args[]) throws Exception {
+ // real run
+ runTest();
+ if (!testOk) {
+ throw new RuntimeException("TEST FAILED.");
+ }
+ System.out.println("Test passed.");
+ }
- public static void main(String args[]) throws Exception {
+ private static void runTest() throws Exception {
final Phaser p = new Phaser(2);
blocking = new BlockingThread(p);
@@ -73,11 +79,6 @@
e.printStackTrace(System.err);
throw e;
}
-
- if (!testOk) {
- throw new RuntimeException("TEST FAILED.");
- }
- System.out.println("Test passed.");
}
@@ -90,6 +91,7 @@
}
public void run() {
+ int accumulator = 0;
p.arriveAndAwaitAdvance(); // #1
// Enter lock a without blocking
@@ -99,7 +101,7 @@
// Block to enter blockedObj1
// blockedObj1 should be owned by BlockingThread
synchronized (blockedObj1) {
- System.out.println("BlockedThread entered lock blockedObj1.");
+ accumulator++; // filler
}
}
@@ -111,7 +113,7 @@
// Block to enter blockedObj2
// blockedObj2 should be owned by BlockingThread
synchronized (blockedObj2) {
- System.out.println("BlockedThread entered lock blockedObj2.");
+ accumulator++; // filler
}
}
@@ -123,11 +125,12 @@
// Block to enter blockedObj3
// blockedObj3 should be owned by BlockingThread
synchronized (blockedObj3) {
- System.out.println("BlockedThread entered lock blockedObj3.");
+ accumulator++; // filler
}
}
// wait for the main thread to check the blocked count
+ System.out.println("Acquired " + accumulator + " monitors");
p.arriveAndAwaitAdvance(); // #5
// ... and we can leave now
} // run()
@@ -197,7 +200,7 @@
long count = -1;
for (int i = 0; i < 100; i++) {
count = getBlockedCount();
- if (count == EXPECTED_BLOCKED_COUNT) {
+ if (count >= EXPECTED_BLOCKED_COUNT) {
return true;
}
try {
@@ -209,7 +212,7 @@
}
}
System.err.println("TEST FAILED: Blocked thread has " + count +
- " blocked counts. Expected " +
+ " blocked counts. Expected at least " +
EXPECTED_BLOCKED_COUNT);
return false;
}
--- a/jdk/test/java/lang/reflect/OldenCompilingWithDefaults.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/lang/reflect/OldenCompilingWithDefaults.java Tue Jan 28 11:21:43 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,7 +25,6 @@
* @test
* @bug 8009267
* @summary Verify uses of isAnnotationPresent compile under older source versions
- * @compile -source 1.5 -target 1.5 OldenCompilingWithDefaults.java
* @compile -source 1.6 -target 1.6 OldenCompilingWithDefaults.java
* @compile -source 1.7 -target 1.7 OldenCompilingWithDefaults.java
* @compile OldenCompilingWithDefaults.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/Socks/SocksIPv6Test.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,178 @@
+/*
+ * 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
+ * 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 7100957
+ * @summary Java doesn't correctly handle the SOCKS protocol when used over IPv6.
+ * @run testng SocksIPv6Test
+ */
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Authenticator;
+import java.net.InetSocketAddress;
+import java.net.URL;
+import java.net.Proxy;
+import java.lang.Override;
+import java.net.InetAddress;
+import java.net.Inet6Address;
+import java.net.ServerSocket;
+import java.net.SocketException;
+import java.net.NetworkInterface;
+import java.net.UnknownHostException;
+import java.util.Collections;
+import java.util.List;
+import com.sun.net.httpserver.*;
+import java.io.BufferedWriter;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.*;
+
+public class SocksIPv6Test {
+
+ private HttpServer server;
+ private SocksServer socks;
+ private String response = "Hello.";
+ private static boolean shouldRun = false;
+
+ @BeforeClass
+ public void setUp() throws Exception {
+ shouldRun = ensureInet6AddressFamily() && ensureIPv6OnLoopback();
+
+ server = HttpServer.create(new InetSocketAddress(0), 0);
+ server.createContext("/", ex -> {
+ ex.sendResponseHeaders(200, response.length());
+ try (BufferedWriter writer = new BufferedWriter(
+ new OutputStreamWriter(ex.getResponseBody(), "UTF-8"))) {
+ writer.write(response);
+ }
+ ex.close();
+ });
+ server.start();
+
+ socks = new SocksServer(0, false);
+ socks.addUser("user", "pass");
+ socks.start();
+
+ Authenticator.setDefault(new Authenticator() {
+ @Override
+ protected java.net.PasswordAuthentication getPasswordAuthentication() {
+ return new java.net.PasswordAuthentication(
+ "user", "pass".toCharArray());
+ }
+ });
+ }
+
+ private boolean ensureIPv6OnLoopback() throws Exception {
+ boolean ipv6 = false;
+
+ List<NetworkInterface> nics = Collections.list(NetworkInterface.getNetworkInterfaces());
+ for (NetworkInterface nic : nics) {
+ if (!nic.isLoopback()) {
+ continue;
+ }
+ List<InetAddress> addrs = Collections.list(nic.getInetAddresses());
+ for (InetAddress addr : addrs) {
+ if (addr instanceof Inet6Address) {
+ ipv6 = true;
+ break;
+ }
+ }
+ }
+ if (!ipv6)
+ System.out.println("IPv6 is not enabled on loopback. Skipping test suite.");
+ return ipv6;
+ }
+
+ private boolean ensureInet6AddressFamily() throws IOException {
+ try (ServerSocket s = new ServerSocket()) {
+ s.bind(new InetSocketAddress("::1", 0));
+ return true;
+ } catch (SocketException e) {
+ System.out.println("Inet 6 address family is not available. Skipping test suite.");
+ }
+ return false;
+ }
+
+ @Test(groups = "unit")
+ public void testSocksOverIPv6() throws Exception {
+ if (!shouldRun) return;
+
+ Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("::1",
+ socks.getPort()));
+ URL url = new URL("http://[::1]:" + server.getAddress().getPort());
+ java.net.URLConnection conn = url.openConnection(proxy);
+ String actual = "";
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()))) {
+ actual = reader.readLine();
+ }
+ assertEquals(actual, response);
+ }
+
+ @Test(groups = "unit")
+ public void testSocksOverIPv6Hostname() throws Exception {
+ if (!shouldRun) return;
+
+ String ipv6Hostname = InetAddress.getByName("::1").getHostName();
+ String ipv4Hostname = InetAddress.getByName("127.0.0.1").getHostName();
+
+ if (ipv6Hostname.equals(InetAddress.getByName("::1").getHostAddress())) {
+ System.out.println("Unable to get the hostname of the IPv6 loopback "
+ + "address. Skipping test case.");
+ return;
+ }
+
+ if (ipv6Hostname.equals(ipv4Hostname)) {
+ System.out.println("IPv6 and IPv4 loopback addresses map to the"
+ + " same hostname. Skipping test case.");
+ return;
+ }
+
+ Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(ipv6Hostname,
+ socks.getPort()));
+ URL url = new URL("http://" + ipv6Hostname + ":" + server.getAddress().getPort());
+ java.net.URLConnection conn = url.openConnection(proxy);
+ String actual = "";
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()))) {
+ actual = reader.readLine();
+ }
+ assertEquals(actual, response);
+ }
+
+ @AfterClass
+ public void tearDown() {
+ if (server != null) {
+ server.stop(1);
+ }
+ if (socks != null) {
+ socks.terminate();
+ }
+ }
+}
--- a/jdk/test/java/net/Socks/SocksServer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/net/Socks/SocksServer.java Tue Jan 28 11:21:43 2014 -0800
@@ -89,6 +89,7 @@
return;
}
tout.write(b);
+ tout.flush();
} catch (IOException e) {
// actually exit from the thread
return;
@@ -99,8 +100,8 @@
ClientHandler(Socket s) throws IOException {
client = s;
- in = client.getInputStream();
- out = client.getOutputStream();
+ in = new BufferedInputStream(client.getInputStream());
+ out = new BufferedOutputStream(client.getOutputStream());
}
private void readBuf(InputStream is, byte[] buf) throws IOException {
@@ -230,8 +231,8 @@
out.write(port & 0xff);
out.write(buf);
out.flush();
- InputStream in2 = dest.getInputStream();
- OutputStream out2 = dest.getOutputStream();
+ InputStream in2 = new BufferedInputStream(dest.getInputStream());
+ OutputStream out2 = new BufferedOutputStream(dest.getOutputStream());
Tunnel tunnel = new Tunnel(in2, out);
tunnel.start();
@@ -246,6 +247,7 @@
return;
}
out2.write(b);
+ out2.flush();
} catch (IOException ex) {
}
} while (!client.isClosed());
@@ -323,8 +325,8 @@
out.write((addr.getPort() >> 0) & 0xff);
out.flush();
- InputStream in2 = dest.getInputStream();
- OutputStream out2 = dest.getOutputStream();
+ InputStream in2 = new BufferedInputStream(dest.getInputStream());
+ OutputStream out2 = new BufferedOutputStream(dest.getOutputStream());
Tunnel tunnel = new Tunnel(in2, out);
tunnel.start();
@@ -340,6 +342,7 @@
return;
}
out2.write(b);
+ out2.flush();
} catch(IOException ioe) {
}
} while (!client.isClosed());
@@ -384,6 +387,7 @@
return;
}
out2.write(b);
+ out2.flush();
} catch(IOException ioe) {
}
} while (!client.isClosed());
@@ -410,14 +414,7 @@
{
byte[] buf = new byte[4];
readBuf(in, buf);
- int i = 0;
- StringBuffer sb = new StringBuffer();
- for (i = 0; i < 4; i++) {
- sb.append(buf[i]&0xff);
- if (i < 3)
- sb.append('.');
- }
- addr = sb.toString();
+ addr = InetAddress.getByAddress(buf).getHostAddress();
}
break;
case DOMAIN_NAME:
@@ -432,14 +429,7 @@
{
byte[] buf = new byte[16];
readBuf(in, buf);
- int i = 0;
- StringBuffer sb = new StringBuffer();
- for (i = 0; i<16; i++) {
- sb.append(Integer.toHexString(buf[i]&0xff));
- if (i < 15)
- sb.append(':');
- }
- addr = sb.toString();
+ addr = InetAddress.getByAddress(buf).getHostAddress();
}
break;
}
--- a/jdk/test/java/net/ipv6tests/UdpTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/net/ipv6tests/UdpTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -147,6 +147,7 @@
final InetAddress ia6 = ia6addr;
final int port = s1.getLocalPort();
+ s1.setSoTimeout(10000);
runAfter (2000, new Runnable () {
public void run () {
try {
@@ -157,7 +158,7 @@
});
t1 = System.currentTimeMillis();
s1.receive (new DatagramPacket (new byte [128], 128));
- checkTime (System.currentTimeMillis() - t1, 2000);
+ checkTime (System.currentTimeMillis() - t1, 4000);
s1.close ();
s2.close ();
System.out.println ("Test2: OK");
--- a/jdk/test/java/nio/file/Files/Misc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/nio/file/Files/Misc.java Tue Jan 28 11:21:43 2014 -0800
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 4313887 6838333 8005566
+ * @bug 4313887 6838333 8005566 8032220
* @summary Unit test for miscellenous methods in java.nio.file.Files
* @library ..
*/
@@ -76,6 +76,11 @@
createDirectories(file.resolve("y"));
throw new RuntimeException("failure expected");
} catch (IOException x) { }
+
+ // the root directory always exists
+ Path root = Paths.get("/");
+ Files.createDirectories(root);
+ Files.createDirectories(root.toAbsolutePath());
}
/**
--- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java Tue Jan 28 11:21:43 2014 -0800
@@ -88,6 +88,17 @@
TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT);
rmid.addOptions(new String[]{
"-Djava.nio.channels.spi.SelectorProvider=RmidViaInheritedChannel$RmidSelectorProvider"});
+ if (System.getProperty("os.name").startsWith("Windows") &&
+ System.getProperty("os.version").startsWith("5."))
+ {
+ /* Windows XP/2003 or older
+ * Need to expand ephemeral range to include RMI test ports
+ */
+ rmid.addOptions(new String[]{
+ "-Djdk.net.ephemeralPortRange.low=1024",
+ "-Djdk.net.ephemeralPortRange.high=64000"
+ });
+ }
rmid.start();
/*
--- a/jdk/test/java/rmi/registry/readTest/readTest.sh Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/rmi/registry/readTest/readTest.sh Tue Jan 28 11:21:43 2014 -0800
@@ -29,6 +29,10 @@
# @run shell readTest.sh
OS=`uname -s`
+VER=`uname -r`
+ARGS=""
+REGARGS=""
+
case "$OS" in
SunOS | Linux | Darwin )
PS=":"
@@ -39,11 +43,19 @@
PS=";"
FS="\\"
FILEURL="file:/"
+ if [ "$VER" -eq "5" ]; then
+ ARGS="-Djdk.net.ephemeralPortRange.low=1024 -Djdk.net.ephemeralPortRange.high=65000"
+ REGARGS="-J-Djdk.net.ephemeralPortRange.low=1024 -J-Djdk.net.ephemeralPortRange.high=65000"
+ fi
;;
CYGWIN* )
PS=";"
FS="/"
FILEURL="file:/"
+ if [ "$VER" -eq "5" ]; then
+ ARGS="-Djdk.net.ephemeralPortRange.low=1024 -Djdk.net.ephemeralPortRange.high=65000"
+ REGARGS="-J-Djdk.net.ephemeralPortRange.low=1024 -J-Djdk.net.ephemeralPortRange.high=65000"
+ fi
;;
* )
echo "Unrecognized system!"
@@ -61,8 +73,8 @@
#start rmiregistry without any local classes on classpath
cd rmi_tmp
# NOTE: This RMI Registry port must match TestLibrary.READTEST_REGISTRY_PORT
-${TESTJAVA}${FS}bin${FS}rmiregistry -J-Djava.rmi.server.useCodebaseOnly=false \
- ${TESTTOOLVMOPTS} 64005 > ..${FS}${RMIREG_OUT} 2>&1 &
+${TESTJAVA}${FS}bin${FS}rmiregistry ${REGARGS} -J-Djava.rmi.server.useCodebaseOnly=false \
+ ${TESTTOOLVMOPTS} 60005 > ..${FS}${RMIREG_OUT} 2>&1 &
RMIREG_PID=$!
# allow some time to start
sleep 3
@@ -74,10 +86,10 @@
;;
* )
CODEBASE=`pwd`
- ;;
+ ;;
esac
# trailing / after code base is important for rmi codebase property.
-${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp $TEST_CLASSPATH -Djava.rmi.server.codebase=${FILEURL}$CODEBASE/ readTest > OUT.TXT 2>&1 &
+${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp $TEST_CLASSPATH ${ARGS} -Djava.rmi.server.codebase=${FILEURL}$CODEBASE/ readTest > OUT.TXT 2>&1 &
TEST_PID=$!
#bulk of testcase - let it run for a while
sleep 5
@@ -100,7 +112,7 @@
result2=$?
if [ $result1 -eq 0 -a $result2 -eq 0 ]
-then
+then
echo "Passed"
exitCode=0;
else
@@ -108,6 +120,6 @@
exitCode=1
fi
rm -rf OUT.TXT ${RMIREG_OUT} rmi_tmp
-exit ${exitCode}
+exit ${exitCode}
--- a/jdk/test/java/rmi/testlibrary/TestLibrary.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/rmi/testlibrary/TestLibrary.java Tue Jan 28 11:21:43 2014 -0800
@@ -86,13 +86,13 @@
* FIXED_PORT_MIN or above FIXED_PORT_MAX, then adjust
* FIXED_PORT_MIN/MAX appropriately.
*/
- public final static int FIXED_PORT_MIN = 64001;
- public final static int FIXED_PORT_MAX = 64010;
- public final static int RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT = 64001;
- public final static int RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT = 64002;
- public final static int INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT = 64003;
- public final static int INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT = 64004;
- public final static int READTEST_REGISTRY_PORT = 64005;
+ public final static int FIXED_PORT_MIN = 60001;
+ public final static int FIXED_PORT_MAX = 60010;
+ public final static int RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT = 60001;
+ public final static int RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT = 60002;
+ public final static int INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT = 60003;
+ public final static int INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT = 60004;
+ public final static int READTEST_REGISTRY_PORT = 60005;
private final static int MAX_SERVER_SOCKET_TRIES = 2*(FIXED_PORT_MAX-FIXED_PORT_MIN+1);
static void mesg(Object mesg) {
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,6 +21,12 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6852744
@@ -234,6 +240,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
X509CertSelector selector = generateSelector(args[0]);
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,6 +21,12 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6852744
@@ -277,6 +283,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
X509CertSelector selector = generateSelector(args[0]);
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,6 +21,12 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6852744
@@ -283,6 +289,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
X509CertSelector selector = generateSelector(args[0]);
--- a/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -21,12 +21,19 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 5072953
* @summary Verify that the URL for an OCSP responder can be extracted from a
* certificate's AuthorityInfoAccess extension when OCSP certifiate
* validation has been enabled.
+ * @run main/othervm AIACheck
*/
import java.io.*;
@@ -51,6 +58,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
X509Certificate aiaCert = loadCertificate("AIACert.pem");
X509Certificate rootCert = loadCertificate("RootCert.pem");
--- a/jdk/test/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,16 +21,24 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6383095
* @summary CRL revoked certificate failures masked by OCSP failures
- *
+ * @run main/othervm FailoverToCRL
+ * @author Xuelei Fan
+ */
+
+/*
* Note that the certificate validity is from Mar 16 14:55:35 2009 GMT to
* Dec 1 14:55:35 2028 GMT, please update it with newer certificate if
* expires.
- *
- * @author Xuelei Fan
*/
/*
@@ -229,6 +237,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLOneLevel
* @author Xuelei Fan
*/
@@ -158,6 +165,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLOneLevelRevoked
* @author Xuelei Fan
*/
@@ -159,6 +166,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLTwoLevel
* @author Xuelei Fan
*/
@@ -210,6 +217,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLTwoLevelRevoked
* @author Xuelei Fan
*/
@@ -211,6 +218,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/PKIXBuilderParameters/InvalidParameters.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/PKIXBuilderParameters/InvalidParameters.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, 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
@@ -21,16 +21,17 @@
* questions.
*/
-/**
+/*
* @test
* @test 4422738
- * @compile -source 1.4 InvalidParameters.java
+ * @compile InvalidParameters.java
* @run main InvalidParameters
* @summary Make sure PKIXBuilderParameters(Set) detects invalid
* parameters and throws correct exceptions
*/
import java.security.InvalidAlgorithmParameterException;
import java.security.cert.PKIXBuilderParameters;
+import java.security.cert.TrustAnchor;
import java.util.Collections;
import java.util.Set;
@@ -53,8 +54,10 @@
// make sure Set of invalid objects throws ClassCastException
try {
+ @SuppressWarnings("unchecked") // Knowingly do something bad
+ Set<TrustAnchor> badSet = (Set<TrustAnchor>) (Set) Collections.singleton(new String());
PKIXBuilderParameters p =
- new PKIXBuilderParameters(Collections.singleton(new String()), null);
+ new PKIXBuilderParameters(badSet, null);
throw new Exception("should have thrown ClassCastException");
} catch (ClassCastException cce) { }
}
--- a/jdk/test/java/security/cert/PKIXParameters/InvalidParameters.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/security/cert/PKIXParameters/InvalidParameters.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, 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
@@ -24,7 +24,7 @@
/**
* @test
* @test 4422738
- * @compile -source 1.4 InvalidParameters.java
+ * @compile InvalidParameters.java
* @run main InvalidParameters
* @summary Make sure PKIXParameters(Set) and setTrustAnchors() detects invalid
* parameters and throws correct exceptions
@@ -64,12 +64,14 @@
} catch (NullPointerException npe) { }
// make sure Set of invalid objects throws ClassCastException
+ @SuppressWarnings("unchecked") // Knowingly do something bad
+ Set<TrustAnchor> badSet = (Set<TrustAnchor>) (Set) Collections.singleton(new String());
try {
- PKIXParameters p = new PKIXParameters(Collections.singleton(new String()));
+ PKIXParameters p = new PKIXParameters(badSet);
throw new Exception("should have thrown ClassCastException");
} catch (ClassCastException cce) { }
try {
- params.setTrustAnchors(Collections.singleton(new String()));
+ params.setTrustAnchors(badSet);
throw new Exception("should have thrown ClassCastException");
} catch (ClassCastException cce) { }
}
--- a/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh Tue Jan 28 11:21:43 2014 -0800
@@ -32,10 +32,7 @@
STATUS=0
echo "Locale providers: default"
-# TODO: The purpose of ja-JP is to make sure the fallback for generic
-# names works. Remove ja-JP when adding generic names to localized
-# resources.
-if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US ja-JP; then
+if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US; then
STATUS=1
fi
--- a/jdk/test/java/util/Locale/Bug4175998Test.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/Locale/Bug4175998Test.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 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
@@ -20,13 +20,15 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
/*
- @test
- @summary test ISO639-2 language codes
- @compile -encoding ascii -source 5 Bug4175998Test.java
- @run main Bug4175998Test
- @bug 4175998
-*/
+ * @test
+ * @summary test ISO639-2 language codes
+ * @compile -encoding ascii Bug4175998Test.java
+ * @run main Bug4175998Test
+ * @bug 4175998
+ */
+
/*
*
*
@@ -731,7 +733,7 @@
pon pon Pohnpeian
por por Portuguese
pra pra Prakrit languages
-pro pro Provençal, Old (to 1500)
+pro pro Proven\u00E7al, Old (to 1500)
pus pus Pushto
qaa-qtz qaa-qtz Reserved for local use
que que Quechua
--- a/jdk/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 CancelledProducerConsumerLoops.java
* @run main/timeout=7000 CancelledProducerConsumerLoops
* @summary Checks for responsiveness of blocking queues to cancellation.
* Runs under the assumption that ITERS computations require more than
--- a/jdk/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MultipleProducersSingleConsumerLoops.java
* @run main/timeout=3600 MultipleProducersSingleConsumerLoops
* @summary multiple producers and single consumer using blocking queues
*/
--- a/jdk/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 ProducerConsumerLoops.java
* @run main/timeout=3600 ProducerConsumerLoops
* @summary multiple producers and consumers using blocking queues
*/
--- a/jdk/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 SingleProducerMultipleConsumerLoops.java
* @run main/timeout=600 SingleProducerMultipleConsumerLoops
* @summary check ordering for blocking queues with 1 producer and multiple consumers
*/
--- a/jdk/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MapCheck.java
* @run main/timeout=240 MapCheck
* @summary Times and checks basic map operations
*/
--- a/jdk/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MapLoops.java
* @run main/timeout=1600 MapLoops
* @summary Exercise multithreaded maps, by default ConcurrentHashMap.
* Multithreaded hash table test. Each thread does a random walk
--- a/jdk/test/java/util/concurrent/Exchanger/ExchangeLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/Exchanger/ExchangeLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 ExchangeLoops.java
* @run main/timeout=720 ExchangeLoops
* @summary checks to make sure a pipeline of exchangers passes data.
*/
--- a/jdk/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4965960
- * @compile -source 1.5 ExecutorCompletionServiceLoops.java
* @run main/timeout=3600 ExecutorCompletionServiceLoops
* @summary Exercise ExecutorCompletionServiceLoops
*/
--- a/jdk/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 CancelledFutureLoops.java
* @run main/timeout=2000 CancelledFutureLoops
* @summary Checks for responsiveness of futures to cancellation.
* Runs under the assumption that ITERS computations require more than
--- a/jdk/test/java/util/concurrent/atomic/VMSupportsCS8.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/atomic/VMSupportsCS8.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 4992443 4994819
- * @compile -source 1.5 VMSupportsCS8.java
* @run main VMSupportsCS8
* @summary Checks that the value of VMSupportsCS8 matches system properties.
*/
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 CancelledLockLoops.java
* @run main/timeout=2800 CancelledLockLoops
* @summary tests lockInterruptibly.
* Checks for responsiveness of locks to interrupts. Runs under that
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 LockOncePerThreadLoops.java
* @run main/timeout=15000 LockOncePerThreadLoops
* @summary Checks for missed signals by locking and unlocking each of an array of locks once per thread
*/
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 SimpleReentrantLockLoops.java
* @run main/timeout=4500 SimpleReentrantLockLoops
* @summary multiple threads using a single lock
*/
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658 5031862
- * @compile -source 1.5 TimeoutLockLoops.java
* @run main TimeoutLockLoops
* @summary Checks for responsiveness of locks to timeouts.
* Runs under the assumption that ITERS computations require more than
--- a/jdk/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java Tue Jan 28 11:21:43 2014 -0800
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MapLoops.java
* @run main/timeout=4700 MapLoops
* @summary Exercise multithreaded maps, by default ConcurrentHashMap.
* Multithreaded hash table test. Each thread does a random walk
--- a/jdk/test/java/util/logging/ParentLoggersTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/logging/ParentLoggersTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -63,7 +63,9 @@
static final String LOGGER_NAME_1 = PARENT_NAME_1 + ".myLogger";
static final String LOGGER_NAME_2 = PARENT_NAME_2 + ".myBar.myLogger";
- static final List<String> initialLoggerNames = new ArrayList<String>();
+ static final List<String> initialLoggerNames = new ArrayList<>();
+ static final List<Logger> createdLoggers = new ArrayList<>();
+
public static void main(String args[]) throws Exception {
// cache the initial set of loggers before this test begins
// to add any loggers
@@ -74,7 +76,7 @@
if (!defaultLoggers.contains(logger)) {
initialLoggerNames.add(logger);
}
- };
+ }
String tstSrc = System.getProperty(TST_SRC_PROP);
File fname = new File(tstSrc, LM_PROP_FNAME);
@@ -92,7 +94,7 @@
}
public static List<String> getDefaultLoggerNames() {
- List<String> expectedLoggerNames = new ArrayList<String>();
+ List<String> expectedLoggerNames = new ArrayList<>();
// LogManager always creates two loggers:
expectedLoggerNames.add(""); // root logger: ""
@@ -106,56 +108,43 @@
*/
public static boolean checkLoggers() {
String failMsg = "# checkLoggers: getLoggerNames() returned unexpected loggers";
- Vector<String> expectedLoggerNames = new Vector<String>(getDefaultLoggerNames());
+ List<String> expectedLoggerNames = new ArrayList<>(getDefaultLoggerNames());
// Create the logger LOGGER_NAME_1
- Logger.getLogger(LOGGER_NAME_1);
- expectedLoggerNames.addElement(PARENT_NAME_1);
- expectedLoggerNames.addElement(LOGGER_NAME_1);
+ createdLoggers.add(Logger.getLogger(LOGGER_NAME_1));
+ expectedLoggerNames.add(PARENT_NAME_1);
+ expectedLoggerNames.add(LOGGER_NAME_1);
// Create the logger LOGGER_NAME_2
- Logger.getLogger(LOGGER_NAME_2);
- expectedLoggerNames.addElement(PARENT_NAME_2);
- expectedLoggerNames.addElement(LOGGER_NAME_2);
+ createdLoggers.add(Logger.getLogger(LOGGER_NAME_2));
+ expectedLoggerNames.add(PARENT_NAME_2);
+ expectedLoggerNames.add(LOGGER_NAME_2);
+
Enumeration<String> returnedLoggersEnum = logMgr.getLoggerNames();
- Vector<String> returnedLoggerNames = new Vector<String>(0);
+ List<String> returnedLoggerNames = new ArrayList<>(0);
while (returnedLoggersEnum.hasMoreElements()) {
String logger = returnedLoggersEnum.nextElement();
if (!initialLoggerNames.contains(logger)) {
// filter out the loggers that have been added before this test runs
- returnedLoggerNames.addElement(logger);
+ returnedLoggerNames.add(logger);
}
- };
-
+ }
+ System.out.println(returnedLoggerNames);
return checkNames(expectedLoggerNames, returnedLoggerNames, failMsg);
}
// Returns boolean values: PASSED or FAILED
- private static boolean checkNames(Vector<String> expNames,
- Vector<String> retNames,
+ private static boolean checkNames(List<String> expNames,
+ List<String> retNames,
String failMsg) {
boolean status = PASSED;
if (expNames.size() != retNames.size()) {
status = FAILED;
- } else {
- boolean checked[] = new boolean[retNames.size()];
- for (int i = 0; i < expNames.size(); i++) {
- int j = 0;
- for (; j < retNames.size(); j++) {
- if (!checked[j] &&
- expNames.elementAt(i).equals(retNames.elementAt(j))) {
- checked[j] = true;
- break;
- }
- }
- if (j >= retNames.size()) {
- status = FAILED;
- break;
- }
- }
+ } else if (!new HashSet<>(expNames).equals(new HashSet<>(retNames))) {
+ status = FAILED;
}
if (!status) {
printFailMsg(expNames, retNames, failMsg);
@@ -163,25 +152,25 @@
return status;
}
- private static void printFailMsg(Vector<String> expNames,
- Vector<String> retNames,
+ private static void printFailMsg(List<String> expNames,
+ List<String> retNames,
String failMsg) {
out.println();
out.println(failMsg);
- if (expNames.size() == 0) {
+ if (expNames.isEmpty()) {
out.println("# there are NO expected logger names");
} else {
out.println("# expected logger names (" + expNames.size() + "):");
for (int i = 0; i < expNames.size(); i++) {
- out.println(" expNames[" + i + "] = " + expNames.elementAt(i));
+ out.println(" expNames[" + i + "] = " + expNames.get(i));
}
}
- if (retNames.size() == 0) {
+ if (retNames.isEmpty()) {
out.println("# there are NO returned logger names");
} else {
out.println("# returned logger names (" + retNames.size() + "):");
for (int i = 0; i < retNames.size(); i++) {
- out.println(" retNames[" + i + "] = " + retNames.elementAt(i));
+ out.println(" retNames[" + i + "] = " + retNames.get(i));
}
}
}
--- a/jdk/test/java/util/logging/TestLogConfigurationDeadLock.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/logging/TestLogConfigurationDeadLock.java Tue Jan 28 11:21:43 2014 -0800
@@ -196,7 +196,8 @@
if (ids.length == 1) {
throw new RuntimeException("Found 1 deadlocked thread: "+ids[0]);
} else if (ids.length > 0) {
- ThreadInfo[] infos = ManagementFactory.getThreadMXBean().getThreadInfo(ids);
+ ThreadInfo[] infos = ManagementFactory.getThreadMXBean()
+ .getThreadInfo(ids, Integer.MAX_VALUE);
System.err.println("Found "+ids.length+" deadlocked threads: ");
for (ThreadInfo inf : infos) {
System.err.println(inf.toString());
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/logging/TestLogConfigurationDeadLockWithConf.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,340 @@
+/*
+ * 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.io.File;
+import java.io.PrintStream;
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.security.Permission;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
+
+
+/**
+ * @test
+ * @bug 8027670 8029281
+ * @summary Deadlock in drainLoggerRefQueueBounded / readConfiguration
+ * caused by synchronization issues in Logger and LogManager.
+ * @run main/othervm TestLogConfigurationDeadLockWithConf
+ * @author danielfuchs
+ */
+// This test is a best effort to try & detect issues. The test itself will run
+// for 8secs. This is usually sufficient to detect issues.
+// However to get a greater confidence it is recommended to run this test in a loop:
+// e.g. use something like:
+// $ while jtreg -jdk:$JDK -verbose:all \
+// test/java/util/logging/TestLogConfigurationDeadLockWithConf.java ; \
+// do echo Running test again ; done
+// and let it run for a few hours...
+//
+public class TestLogConfigurationDeadLockWithConf {
+
+ static volatile Exception thrown = null;
+ static volatile boolean goOn = true;
+
+ static final int READERS = 2;
+ static final int LOGGERS = 2;
+ static final long TIME = 4 * 1000; // 4 sec.
+ static final long STEP = 1 * 1000; // message every 1 sec.
+ static final int LCOUNT = 50; // 50 loggers created in a row...
+ static final AtomicLong nextLogger = new AtomicLong(0);
+ static final AtomicLong readCount = new AtomicLong(0);
+ static final AtomicLong checkCount = new AtomicLong(0);
+
+ /**
+ * This test will run both with and without a security manager.
+ *
+ * The test starts a number of threads that will call
+ * LogManager.readConfiguration() concurrently (ReadConf), then starts
+ * a number of threads that will create new loggers concurrently
+ * (AddLogger), and then two additional threads: one (Stopper) that
+ * will stop the test after 4secs (TIME ms), and one DeadlockDetector
+ * that will attempt to detect deadlocks.
+ * If after 4secs no deadlock was detected and no exception was thrown
+ * then the test is considered a success and passes.
+ *
+ * This procedure is done twice: once without a security manager and once
+ * again with a security manager - which means the test takes ~8secs to
+ * run.
+ *
+ * Note that 8sec may not be enough to detect issues if there are some.
+ * This is a best effort test.
+ *
+ * @param args the command line arguments
+ * @throws java.lang.Exception if the test fails.
+ */
+ public static void main(String[] args) throws Exception {
+ File config = new File(System.getProperty("test.src", "."),
+ "deadlockconf.properties");
+ if (!config.canRead()) {
+ System.err.println("Can't read config file: test cannot execute.");
+ System.err.println("Please check your test environment: ");
+ System.err.println("\t -Dtest.src=" + System.getProperty("test.src", "."));
+ System.err.println("\t config file is: " + config.getAbsolutePath());
+ throw new RuntimeException("Can't read config file: "
+ + config.getAbsolutePath());
+ }
+
+ System.setProperty("java.util.logging.config.file",
+ config.getAbsolutePath());
+
+ // test without security
+ System.out.println("No security");
+ test();
+
+ // test with security
+ System.out.println("\nWith security");
+ Policy.setPolicy(new Policy() {
+ @Override
+ public boolean implies(ProtectionDomain domain, Permission permission) {
+ if (super.implies(domain, permission)) return true;
+ // System.out.println("Granting " + permission);
+ return true; // all permissions
+ }
+ });
+ System.setSecurityManager(new SecurityManager());
+ test();
+ }
+
+ static Random rand = new Random(System.currentTimeMillis());
+ private static int getBarCount() {
+ return rand.nextInt(10);
+ }
+
+ /**
+ * Starts all threads, wait 4secs, then stops all threads.
+ * @throws Exception if a deadlock was detected or an error occurred.
+ */
+ public static void test() throws Exception {
+ goOn = true;
+ thrown = null;
+ long sNextLogger = nextLogger.get();
+ long sReadCount = readCount.get();
+ long sCheckCount = checkCount.get();
+ List<Thread> threads = new ArrayList<>();
+ for (int i = 0; i<READERS; i++) {
+ threads.add(new ReadConf());
+ }
+ for (int i = 0; i<LOGGERS; i++) {
+ threads.add(new AddLogger());
+ }
+ DeadlockDetector detector = new DeadlockDetector();
+ threads.add(detector);
+ threads.add(0, new Stopper(TIME));
+ for (Thread t : threads) {
+ t.start();
+ }
+
+ // wait for the detector to finish.
+ detector.join();
+
+ final PrintStream out = thrown == null ? System.out : System.err;
+
+ // Try to wait for all threads to finish.
+ // This is a best effort: if some threads are in deadlock we can't
+ // obviously wait for them, and other threads may have joined in
+ // the deadlock since we last checked.
+ // However, all threads which are succeptible of deadlocking
+ // extend DeamonThread.
+ for (Thread t : threads) {
+ if (t == detector) {
+ continue;
+ }
+ if (detector.deadlocked.contains(t.getId())) {
+ out.println("Skipping deadlocked thread "
+ + t.getClass().getSimpleName() + ": " + t);
+ continue; // don't wait for deadlocked thread: they won't terminate
+ }
+ try {
+ if (detector.deadlocked.isEmpty()) {
+ t.join();
+ } else {
+ if (t instanceof DaemonThread) {
+ // Some other threads may have join the deadlock.
+ // don't wait forever.
+ t.join(100);
+ } else {
+ // Those threads that don't extend DaemonThread
+ // should be safe from deadlock.
+ out.println("Waiting for "
+ + t.getClass().getSimpleName() + ": " + t);
+ t.join();
+ }
+ }
+ } catch (Exception x) {
+ fail(x);
+ }
+ }
+ out.println("All threads joined.");
+
+ final String status = thrown == null ? "Passed" : "FAILED";
+
+ out.println(status + ": " + (nextLogger.get() - sNextLogger)
+ + " loggers created by " + LOGGERS + " Thread(s),");
+ out.println("\t LogManager.readConfiguration() called "
+ + (readCount.get() - sReadCount) + " times by " + READERS
+ + " Thread(s).");
+ out.println("\t ThreadMXBean.findDeadlockedThreads called "
+ + (checkCount.get() -sCheckCount) + " times by 1 Thread.");
+
+ if (thrown != null) {
+ out.println("\t Error is: "+thrown.getMessage());
+ throw thrown;
+ }
+ }
+
+ static class DaemonThread extends Thread {
+ public DaemonThread() {
+ this.setDaemon(true);
+ }
+ }
+
+ final static class ReadConf extends DaemonThread {
+ @Override
+ public void run() {
+ while (goOn) {
+ try {
+ LogManager.getLogManager().readConfiguration();
+ readCount.incrementAndGet();
+ Thread.sleep(1);
+ } catch (Exception x) {
+ fail(x);
+ }
+ }
+ }
+ }
+
+ final static class AddLogger extends DaemonThread {
+ @Override
+ public void run() {
+ try {
+ while (goOn) {
+ Logger l;
+ int barcount = getBarCount();
+ for (int i=0; i < LCOUNT ; i++) {
+ l = Logger.getLogger("foo.bar"+barcount+".l"+nextLogger.incrementAndGet());
+ l.fine("I'm fine");
+ if (!goOn) break;
+ Thread.sleep(1);
+ }
+ }
+ } catch (InterruptedException | RuntimeException x ) {
+ fail(x);
+ }
+ }
+ }
+
+ final static class DeadlockDetector extends Thread {
+
+ final Set<Long> deadlocked = Collections.synchronizedSet(new HashSet<Long>());
+
+ static List<Long> asList(long... ids) {
+ final List<Long> list = new ArrayList<>(ids.length);
+ for (long id : ids) {
+ list.add(id);
+ }
+ return list;
+ }
+
+ @Override
+ public void run() {
+ while(goOn) {
+ try {
+ long[] ids = ManagementFactory.getThreadMXBean().findDeadlockedThreads();
+ checkCount.incrementAndGet();
+ ids = ids == null ? new long[0] : ids;
+ if (ids.length > 0) {
+ deadlocked.addAll(asList(ids));
+ }
+ if (ids.length == 1) {
+ throw new RuntimeException("Found 1 deadlocked thread: "+ids[0]);
+ } else if (ids.length > 0) {
+ ThreadInfo[] infos = ManagementFactory.getThreadMXBean().getThreadInfo(ids, Integer.MAX_VALUE);
+ System.err.println("Found "+ids.length+" deadlocked threads: ");
+ for (ThreadInfo inf : infos) {
+ System.err.println(inf.toString());
+ }
+ throw new RuntimeException("Found "+ids.length+" deadlocked threads");
+ }
+ Thread.sleep(100);
+ } catch(InterruptedException | RuntimeException x) {
+ fail(x);
+ }
+ }
+ }
+
+ }
+
+ static final class Stopper extends Thread {
+ long start;
+ long time;
+
+ static final Logger logger = Logger.getLogger("remaining");
+
+ Stopper(long time) {
+ start = System.currentTimeMillis();
+ this.time = time;
+ }
+
+ @Override
+ public void run() {
+ try {
+ long rest, previous;
+ previous = time;
+ while (goOn && (rest = start - System.currentTimeMillis() + time) > 0) {
+ if (previous == time || previous - rest >= STEP) {
+ logger.log(Level.INFO,
+ "{0}ms remaining...", String.valueOf(rest));
+ previous = rest == time ? rest -1 : rest;
+ System.gc();
+ }
+ if (goOn == false) break;
+ Thread.sleep(Math.min(rest, 100));
+ }
+ System.out.println(System.currentTimeMillis() - start
+ + " ms elapsed ("+time+ " requested)");
+ goOn = false;
+ } catch(InterruptedException | RuntimeException x) {
+ fail(x);
+ }
+ }
+
+ }
+
+ static void fail(Exception x) {
+ x.printStackTrace();
+ if (thrown == null) {
+ thrown = x;
+ }
+ goOn = false;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/logging/deadlockconf.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,22 @@
+# This file is used by TestLogConfigurationDeadLockWithConf
+handlers= java.util.logging.ConsoleHandler
+.level= INFO
+java.util.logging.ConsoleHandler.level = INFO
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+
+foo.bar0.level = INFO
+foo.bar1.level = INFO
+foo.bar2.level = INFO
+foo.bar3.level = INFO
+foo.bar4.level = INFO
+
+# We leave foo.bar5 out so that we have at least
+# one logger whose parent won't be in the configuration
+# file
+#foo.bar5.level = INFO
+
+foo.bar6.level = INFO
+foo.bar7.level = INFO
+foo.bar8.level = INFO
+foo.bar9.level = INFO
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -29,7 +29,6 @@
package org.openjdk.tests.java.util.stream;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.DoubleStream;
import java.util.stream.DoubleStreamTestDataProvider;
import java.util.stream.IntStream;
@@ -47,45 +46,41 @@
@Test(dataProvider = "StreamTestData<Integer>", dataProviderClass = StreamTestDataProvider.class)
public void testOps(String name, TestData.OfRef<Integer> data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(Stream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
@Test(dataProvider = "IntStreamTestData", dataProviderClass = IntStreamTestDataProvider.class)
public void testOps(String name, TestData.OfInt data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(IntStream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
@Test(dataProvider = "LongStreamTestData", dataProviderClass = LongStreamTestDataProvider.class)
public void testOps(String name, TestData.OfLong data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(LongStream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
@Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class)
public void testOps(String name, TestData.OfDouble data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(DoubleStream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
}
--- a/jdk/test/javax/imageio/metadata/GetObjectMinValue.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/javax/imageio/metadata/GetObjectMinValue.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -24,14 +24,12 @@
/*
* @test
* @bug 4429875 7186799
- * @compile -source 1.4 GetObjectMinValue.java
+ * @compile GetObjectMinValue.java
* @run main GetObjectMinValue
* @summary Tests the getObject{Min,Max}Value method of
* IIOMetadataFormatImpl for an inclusive range
*/
-// Compiled with -source 1.4 to work around javac bug 5041233
-
import javax.imageio.metadata.IIOMetadataFormatImpl;
import javax.imageio.ImageTypeSpecifier;
@@ -79,13 +77,13 @@
}
public void addObjectValue(String elementName,
- Class classType, Object defaultValue,
+ Class<?> classType, Integer defaultValue,
Comparable minValue, Comparable maxValue,
boolean minInclusive, boolean maxInclusive) {
- super.addObjectValue(elementName,
- classType, defaultValue,
- minValue, maxValue,
- minInclusive, maxInclusive);
+ super.<Integer>addObjectValue(elementName,
+ (Class<Integer>)classType, defaultValue,
+ (Comparable<? super Integer>) minValue, (Comparable<? super Integer>) maxValue,
+ minInclusive, maxInclusive);
}
public boolean canNodeAppear(String elementName,
--- a/jdk/test/javax/management/monitor/StartStopTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/javax/management/monitor/StartStopTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,6 +27,8 @@
* @summary Test that tasks are cancelled properly when
* monitors are started and stopped in a loop.
* @author Luis-Miguel Alventosa
+ * @library /lib/testlibrary
+ * @run build jdk.testlibrary.Utils
* @run clean StartStopTest
* @run build StartStopTest
* @run main/othervm/timeout=300 StartStopTest 1
@@ -52,14 +54,15 @@
import javax.management.monitor.MonitorNotification;
import javax.management.monitor.StringMonitor;
+import jdk.testlibrary.Utils;
+
public class StartStopTest {
-
static int maxPoolSize;
static final AtomicInteger counter = new AtomicInteger();
// MBean class
public class ObservedObject implements ObservedObjectMBean {
- public boolean called = false;
+ volatile public boolean called = false;
public Integer getInteger() {
task("Integer");
return 0;
@@ -142,7 +145,7 @@
for (int i = 0; i < nTasks; i++)
monitor[i].start();
echo(">>> MONITORS started");
- Thread.sleep(500);
+ doSleep(500);
echo(">>> Check FLAGS true");
for (int i = 0; i < nTasks; i++)
if (!monitored[i].called) {
@@ -154,7 +157,7 @@
for (int i = 0; i < nTasks; i++)
monitor[i].stop();
echo(">>> MONITORS stopped");
- Thread.sleep(500);
+ doSleep(500);
echo(">>> Set FLAGS to false");
for (int i = 0; i < nTasks; i++)
monitored[i].called = false;
@@ -208,4 +211,8 @@
echo(">>> Happy Bye, Bye!");
}
}
+
+ private static void doSleep(long ms) throws Exception {
+ Thread.sleep(Math.round(ms * Utils.TIMEOUT_FACTOR));
+ }
}
--- a/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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,7 +25,7 @@
* @test
* @bug 4933700
* @summary Tests that default devices return MidiDeviceTransmitter/Receiver and returned objects return correct MidiDevice
- * @compile -source 1.7 TestAllDevices.java
+ * @compile TestAllDevices.java
* @run main TestAllDevices
* @author Alex Menkov
*/
--- a/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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,7 +25,7 @@
* @test
* @bug 6944033
* @summary Tests that PCM_FLOAT encoding is supported
- * @compile -source 1.7 PCM_FLOAT_support.java
+ * @compile PCM_FLOAT_support.java
* @run main PCM_FLOAT_support
* @author Alex Menkov
*
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/JcmdBase.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/JcmdBase.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,34 +26,91 @@
import java.util.Arrays;
/**
- * Super class for tests which need to attach jcmd to the current process.
+ * Helper class for starting jcmd process.
+ * <pre>
+ * - jcmd will send diagnostic requests to the current java process:
+ * jcmd pid_to_current_process PerfCounter.print
+ * - jcmd will be run without sending request to any JVM
+ * jcmd -h
+ * </pre>
*/
-public class JcmdBase {
+public final class JcmdBase {
private static ProcessBuilder processBuilder = new ProcessBuilder();
+ private JcmdBase() {
+ // Private constructor to prevent class instantiation
+ }
+
/**
- * Attach jcmd to the current process
+ * Sends the diagnostic command request to the current process
+ *
+ * @see #jcmd(boolean, String[], String[])
+ */
+ public final static OutputAnalyzer jcmd(String... jcmdArgs)
+ throws Exception {
+ return jcmd(true, null, jcmdArgs);
+ }
+
+ /**
+ * Sends the diagnostic command request to the current process.
+ * jcmd will be run with specified {@code vmArgs}.
*
- * @param toolArgs
- * jcmd command line parameters, e.g. VM.flags
- * @return jcmd output
+ * @see #jcmd(boolean, String[], String[])
+ */
+ public final static OutputAnalyzer jcmd(String[] vmArgs,
+ String[] jcmdArgs) throws Exception {
+ return jcmd(true, vmArgs, jcmdArgs);
+ }
+
+ /**
+ * Runs jcmd without sending request to any JVM
+ *
+ * @see #jcmd(boolean, String[], String[])
+ */
+ public final static OutputAnalyzer jcmdNoPid(String[] vmArgs,
+ String[] jcmdArgs) throws Exception {
+ return jcmd(false, vmArgs, jcmdArgs);
+ }
+
+ /**
+ * If {@code requestToCurrentProcess} is {@code true}
+ * sends a diagnostic command request to the current process.
+ * If {@code requestToCurrentProcess} is {@code false}
+ * runs jcmd without sending request to any JVM.
+ *
+ * @param requestToCurrentProcess
+ * Defines if jcmd will send request to the current process
+ * @param vmArgs
+ * jcmd will be run with VM arguments specified,
+ * e.g. -XX:+UsePerfData
+ * @param jcmdArgs
+ * jcmd will be run with option or command and its arguments
+ * specified, e.g. VM.flags
+ * @return The output from {@link OutputAnalyzer} object
* @throws Exception
*/
- public final static OutputAnalyzer jcmd(String... toolArgs)
- throws Exception {
+ private static final OutputAnalyzer jcmd(boolean requestToCurrentProcess,
+ String[] vmArgs, String[] jcmdArgs) throws Exception {
JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd");
- launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
- for (String toolArg : toolArgs) {
- launcher.addToolArg(toolArg);
+ if (vmArgs != null) {
+ for (String vmArg : vmArgs) {
+ launcher.addVMArg(vmArg);
+ }
+ }
+ if (requestToCurrentProcess) {
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+ }
+ if (jcmdArgs != null) {
+ for (String toolArg : jcmdArgs) {
+ launcher.addToolArg(toolArg);
+ }
}
processBuilder.command(launcher.getCommand());
System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
System.out.println(output.getOutput());
- output.shouldHaveExitValue(0);
-
return output;
}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Tue Jan 28 11:21:43 2014 -0800
@@ -23,7 +23,11 @@
package jdk.testlibrary;
+import static jdk.testlibrary.Asserts.*;
+
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -394,4 +398,99 @@
public int getExitValue() {
return exitValue;
}
+
+ /**
+ * Get the contents of the output buffer (stdout and stderr) as list of strings.
+ * Output will be split by system property 'line.separator'.
+ *
+ * @return Contents of the output buffer as list of strings
+ */
+ public List<String> asLines() {
+ List<String> l = new ArrayList<>();
+ String[] a = getOutput().split(Utils.NEW_LINE);
+ for (String string : a) {
+ l.add(string);
+ }
+ return l;
+ }
+
+ /**
+ * Check if there is a line matching {@code pattern} and return its index
+ *
+ * @param pattern Matching pattern
+ * @return Index of first matching line
+ */
+ private int indexOf(List<String> lines, String pattern) {
+ for (int i = 0; i < lines.size(); i++) {
+ if (lines.get(i).matches(pattern)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * @see #shouldMatchByLine(String, String, String)
+ */
+ public int shouldMatchByLine(String pattern) {
+ return shouldMatchByLine(null, null, pattern);
+ }
+
+ /**
+ * @see #shouldMatchByLine(String, String, String)
+ */
+ public int shouldMatchByLineFrom(String from, String pattern) {
+ return shouldMatchByLine(from, null, pattern);
+ }
+
+ /**
+ * @see #shouldMatchByLine(String, String, String)
+ */
+ public int shouldMatchByLineTo(String to, String pattern) {
+ return shouldMatchByLine(null, to, pattern);
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer match the
+ * {@code pattern} line by line. The whole output could be matched or
+ * just a subset of it.
+ *
+ * @param from
+ * The line from where output will be matched.
+ * Set {@code from} to null for matching from the first line.
+ * @param to
+ * The line until where output will be matched.
+ * Set {@code to} to null for matching until the last line.
+ * @param pattern
+ * Matching pattern
+ * @return Count of lines which match the {@code pattern}
+ */
+ public int shouldMatchByLine(String from, String to, String pattern) {
+ List<String> lines = asLines();
+
+ int fromIndex = 0;
+ if (from != null) {
+ fromIndex = indexOf(lines, from);
+ assertGreaterThan(fromIndex, -1,
+ "The line/pattern '" + from + "' from where the output should match can not be found");
+ }
+
+ int toIndex = lines.size();
+ if (to != null) {
+ toIndex = indexOf(lines, to);
+ assertGreaterThan(toIndex, -1,
+ "The line/pattern '" + to + "' until where the output should match can not be found");
+ }
+
+ List<String> subList = lines.subList(fromIndex, toIndex);
+ int matchedCount = 0;
+ for (String line : subList) {
+ assertTrue(line.matches(pattern),
+ "The line '" + line + "' does not match pattern '" + pattern + "'");
+ matchedCount++;
+ }
+
+ return matchedCount;
+ }
+
}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Tue Jan 28 11:21:43 2014 -0800
@@ -32,6 +32,7 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.concurrent.CountDownLatch;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -39,6 +40,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
+import java.util.function.Consumer;
import sun.management.VMManagement;
@@ -70,9 +72,37 @@
public static Process startProcess(String name,
ProcessBuilder processBuilder)
throws IOException {
+ return startProcess(name, processBuilder, null);
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * <p>It is possible to monitor the in-streams via the provided {@code consumer}
+ * @param name The process name
+ * @param consumer {@linkplain Consumer} instance to process the in-streams
+ * @param processBuilder The process builder
+ * @return Returns the initialized process
+ * @throws IOException
+ */
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder,
+ Consumer<String> consumer)
+ throws IOException {
Process p = null;
try {
- p = startProcess(name, processBuilder, null, -1, TimeUnit.NANOSECONDS);
+ p = startProcess(
+ name,
+ processBuilder,
+ line -> {
+ if (consumer != null) {
+ consumer.accept(line);
+ }
+ return false;
+ },
+ -1,
+ TimeUnit.NANOSECONDS
+ );
} catch (InterruptedException | TimeoutException e) {
// can't ever happen
}
@@ -111,25 +141,28 @@
stdout.addPump(new LineForwarder(name, System.out));
stderr.addPump(new LineForwarder(name, System.err));
- final Phaser phs = new Phaser(1);
+ CountDownLatch latch = new CountDownLatch(1);
if (linePredicate != null) {
- stdout.addPump(new StreamPumper.LinePump() {
+ StreamPumper.LinePump pump = new StreamPumper.LinePump() {
@Override
protected void processLine(String line) {
- if (linePredicate.test(line)) {
- if (phs.getRegisteredParties() > 0) {
- phs.arriveAndDeregister();
- }
+ if (latch.getCount() > 0 && linePredicate.test(line)) {
+ latch.countDown();
}
}
- });
+ };
+ stdout.addPump(pump);
+ stderr.addPump(pump);
}
Future<Void> stdoutTask = stdout.process();
Future<Void> stderrTask = stderr.process();
try {
if (timeout > -1) {
- phs.awaitAdvanceInterruptibly(0, timeout, unit);
+ long realTimeout = Math.round(timeout * Utils.TIMEOUT_FACTOR);
+ if (!latch.await(realTimeout, unit)) {
+ throw new TimeoutException();
+ }
}
} catch (TimeoutException | InterruptedException e) {
System.err.println("Failed to start a process (thread dump follows)");
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java Tue Jan 28 11:21:43 2014 -0800
@@ -25,6 +25,9 @@
import static jdk.testlibrary.Asserts.assertTrue;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
@@ -56,6 +59,15 @@
*/
public static final String JAVA_OPTIONS = System.getProperty("test.java.opts", "").trim();
+ /**
+ * Returns the value of 'test.timeout.factor' system property
+ * converted to {@code double}.
+ */
+ public static final double TIMEOUT_FACTOR;
+ static {
+ String toFactor = System.getProperty("test.timeout.factor", "1.0");
+ TIMEOUT_FACTOR = Double.parseDouble(toFactor);
+ }
private Utils() {
// Private constructor to prevent class instantiation
@@ -203,7 +215,6 @@
* @throws Exception If multiple matching jvms are found.
*/
public static int tryFindJvmPid(String key) throws Throwable {
- ProcessBuilder pb = null;
OutputAnalyzer output = null;
try {
JDKToolLauncher jcmdLauncher = JDKToolLauncher.create("jcmd");
@@ -229,4 +240,24 @@
throw t;
}
}
+
+ /**
+ * Returns file content as a list of strings
+ *
+ * @param file File to operate on
+ * @return List of strings
+ * @throws IOException
+ */
+ public static List<String> fileAsList(File file) throws IOException {
+ assertTrue(file.exists() && file.isFile(),
+ file.getAbsolutePath() + " does not exist or not a file");
+ List<String> output = new ArrayList<>();
+ try (BufferedReader reader = new BufferedReader(new FileReader(file.getAbsolutePath()))) {
+ while (reader.ready()) {
+ output.add(reader.readLine().replace(NEW_LINE, ""));
+ }
+ }
+ return output;
+ }
+
}
--- a/jdk/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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 @@
*
* @author Daniel Fuchs
*
- * @run compile -XDignore.symbol.file=true -source 1.6 -g LocalRMIServerSocketFactoryTest.java
+ * @run compile -XDignore.symbol.file=true -g LocalRMIServerSocketFactoryTest.java
* @run main LocalRMIServerSocketFactoryTest
*/
@@ -44,6 +44,7 @@
private static final SynchronousQueue<Exception> queue =
new SynchronousQueue<Exception>();
+ private static volatile boolean isRunning = true;
static final class Result extends Exception {
@@ -91,19 +92,23 @@
Thread t = new Thread() {
public void run() {
- while (true) {
+ while (isRunning) {
Exception error = Result.SUCCESS;
try {
System.err.println("Accepting: ");
final Socket ss = s.accept();
System.err.println(ss.getInetAddress() + " accepted");
} catch (Exception x) {
- x.printStackTrace();
+ if (isRunning) {
+ x.printStackTrace();
+ }
error = x;
} finally {
try {
- // wait for the client to get the exception.
- queue.put(error);
+ if (isRunning) {
+ // wait for the client to get the exception.
+ queue.put(error);
+ }
} catch (Exception x) {
// too bad!
System.err.println("Could't send result to client!");
@@ -114,32 +119,38 @@
}
}
};
- t.setDaemon(true);
- t.start();
+
+ try {
+ t.start();
- System.err.println("new Socket((String)null, port)");
- final Socket s1 = new Socket((String) null, port);
- checkError("new Socket((String)null, port)");
- s1.close();
- System.err.println("new Socket((String)null, port): PASSED");
+ System.err.println("new Socket((String)null, port)");
+ final Socket s1 = new Socket((String) null, port);
+ checkError("new Socket((String)null, port)");
+ s1.close();
+ System.err.println("new Socket((String)null, port): PASSED");
+
+ System.err.println("new Socket(InetAddress.getByName(null), port)");
+ final Socket s2 = new Socket(InetAddress.getByName(null), port);
+ checkError("new Socket(InetAddress.getByName(null), port)");
+ s2.close();
+ System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
- System.err.println("new Socket(InetAddress.getByName(null), port)");
- final Socket s2 = new Socket(InetAddress.getByName(null), port);
- checkError("new Socket(InetAddress.getByName(null), port)");
- s2.close();
- System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
+ System.err.println("new Socket(localhost, port)");
+ final Socket s3 = new Socket("localhost", port);
+ checkError("new Socket(localhost, port)");
+ s3.close();
+ System.err.println("new Socket(localhost, port): PASSED");
- System.err.println("new Socket(localhost, port)");
- final Socket s3 = new Socket("localhost", port);
- checkError("new Socket(localhost, port)");
- s3.close();
- System.err.println("new Socket(localhost, port): PASSED");
-
- System.err.println("new Socket(127.0.0.1, port)");
- final Socket s4 = new Socket("127.0.0.1", port);
- checkError("new Socket(127.0.0.1, port)");
- s4.close();
- System.err.println("new Socket(127.0.0.1, port): PASSED");
-
+ System.err.println("new Socket(127.0.0.1, port)");
+ final Socket s4 = new Socket("127.0.0.1", port);
+ checkError("new Socket(127.0.0.1, port)");
+ s4.close();
+ System.err.println("new Socket(127.0.0.1, port): PASSED");
+ }
+ finally {
+ isRunning = false;
+ s.close();
+ t.join();
+ }
}
}
--- a/jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -91,6 +91,12 @@
return;
}
+ if (getPlatform() == null) {
+ System.out.println("Test not designed to run on this operating " +
+ "system (" + OSNAME + "), skipping...");
+ return;
+ }
+
final FileSystem FS = FileSystems.getDefault();
Path libjvmPath = findLibjvm(FS);
@@ -223,8 +229,7 @@
break;
}
default: {
- System.out.println("Test not designed to run on this operating " +
- "system (" + OSNAME + "), skipping...");
+ platform = null;
}
}
--- a/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Tue Jan 28 11:21:43 2014 -0800
@@ -34,12 +34,13 @@
OS=`uname -s`
UMASK=`umask`
-if [[ $OS == CYGWIN_NT* ]] ; then
+case $OS in
+CYGWIN_NT*)
OS="Windows_NT"
if [ -z "$SystemRoot" ] ; then
- SystemRoot=$SYSTEMROOT
+ SystemRoot=$SYSTEMROOT
fi
-fi
+esac
case $OS in
SunOS | Linux | Darwin)
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopDoSomething.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/startstop/JMXStartStopDoSomething.java Tue Jan 28 11:21:43 2014 -0800
@@ -21,37 +21,20 @@
* questions.
*/
-import java.io.File;
+import java.io.IOException;
+import jdk.testlibrary.ProcessTools;
public class JMXStartStopDoSomething {
-
- private static final String lockFileName = "JMXStartStop.lck";
-
- public static void doSomething() {
- try {
- File lockFile = new File(lockFileName);
- lockFile.createNewFile();
-
- while(lockFile.exists()) {
- long datetime = lockFile.lastModified();
- long epoch = System.currentTimeMillis()/1000;
-
- // Don't allow test app to run more than an hour
- if (epoch - datetime > 3600) {
- System.err.println("Lock is too old. Aborting");
- return;
- }
- Thread.sleep(500);
- }
-
- } catch (Throwable e) {
- System.err.println("Something bad happens:" +e);
- }
+ public static void doSomething() throws IOException{
+ int r = System.in.read();
+ System.out.println("read: " + r);
}
public static void main(String args[]) throws Exception {
- System.err.println("main enter");
+ System.out.println("pid:" + ProcessTools.getProcessId());
+ System.out.println("main enter");
+ System.out.flush();
doSomething();
- System.err.println("main exit");
+ System.out.println("main exit");
}
}
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -22,45 +22,60 @@
*/
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilenameFilter;
import java.io.IOException;
-import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.net.ConnectException;
+import java.rmi.NoSuchObjectException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
-import java.util.Properties;
+import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Consumer;
import javax.management.*;
import javax.management.remote.*;
+import javax.net.ssl.SSLHandshakeException;
-import sun.management.AgentConfigurationError;
-import sun.management.jmxremote.ConnectorBootstrap;
-
-public class JMXStartStopTest {
+import jdk.testlibrary.ProcessTools;
+import jdk.testlibrary.JDKToolLauncher;
- static boolean verbose = false;
+/**
+ * @test
+ * @bug 7110104
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.ProcessTools
+ * @build jdk.testlibrary.JDKToolLauncher
+ * @build jdk.testlibrary.Utils
+ * @build JMXStartStopTest JMXStartStopDoSomething
+ * @run main/othervm JMXStartStopTest
+ * @summary Makes sure that enabling/disabling the management agent through
+ * JCMD achieves the desired results
+ */
+public class JMXStartStopTest {
+ private static final String TEST_JDK = System.getProperty("test.jdk");
+ private static final String TEST_SRC = System.getProperty("test.src");
- static void dbg_print(String msg){
+ private static final boolean verbose = false;
+
+ private static void dbg_print(String msg){
if (verbose) {
- System.err.println("DBG: " +msg);
+ System.out.println("DBG: " +msg);
}
}
- static void dbg_print(String msg, Throwable ex){
- if (verbose) {
- System.err.println("DBG: " + msg + " " + ex.getMessage() );
- ex.printStackTrace(System.err);
- }
- }
-
- public static int listMBeans(MBeanServerConnection server, ObjectName pattern, QueryExp query)
+ private static int listMBeans(MBeanServerConnection server,
+ ObjectName pattern,
+ QueryExp query)
throws Exception {
Set names = server.queryNames(pattern,query);
@@ -72,10 +87,9 @@
MBeanAttributeInfo[] attrs = info.getAttributes();
if (attrs == null)
continue;
-
- for (int j=0; j<attrs.length; j++) {
- if (attrs[j].isReadable()) {
- Object o = server.getAttribute(name,attrs[j].getName());
+ for (MBeanAttributeInfo attr : attrs) {
+ if (attr.isReadable()) {
+ Object o = server.getAttribute(name, attr.getName());
}
}
}
@@ -83,11 +97,10 @@
}
- public void run_local(String strPid)
+ private static void testConnectLocal(int pid)
throws Exception {
String jmxUrlStr = null;
- int pid = Integer.parseInt(strPid);
try {
jmxUrlStr = sun.management.ConnectorAddressLink.importFrom(pid);
@@ -106,8 +119,8 @@
int count = listMBeans(conn,pattern,null);
if (count == 0)
- throw new Exception("Expected at least one matching "+ "MBean for "+pattern);
-
+ throw new Exception("Expected at least one matching "+
+ "MBean for "+pattern);
} catch (IOException e) {
dbg_print("Cannot find process : " + pid);
@@ -115,20 +128,40 @@
}
}
- public void run(String args[]) throws Exception {
+ private static void testNoConnect(int port) throws Exception {
+ testNoConnect(port, 0);
+ }
+
+ private static void testNoConnect(int port, int rmiPort) throws Exception {
+ try {
+ testConnect(port, rmiPort);
+ throw new Exception("Didn't expect the management agent running");
+ } catch (Exception e) {
+ Throwable t = e;
+ while (t != null) {
+ if (t instanceof NoSuchObjectException ||
+ t instanceof ConnectException ||
+ t instanceof SSLHandshakeException) {
+ break;
+ }
+ t = t.getCause();
+ }
+ if (t == null) {
+ throw new Exception("Unexpected exception", e);
+ }
+ }
+ }
+
+ private static void testConnect(int port) throws Exception {
+ testConnect(port, 0);
+ }
+
+ private static void testConnect(int port, int rmiPort) throws Exception {
dbg_print("RmiRegistry lookup...");
- int port = 4567;
- if (args != null && args.length > 0) {
- port = Integer.parseInt(args[0]);
- }
dbg_print("Using port: " + port);
- int rmiPort = 0;
- if (args != null && args.length > 1) {
- rmiPort = Integer.parseInt(args[1]);
- }
dbg_print("Using rmi port: " + rmiPort);
Registry registry = LocateRegistry.getRegistry(port);
@@ -140,8 +173,13 @@
}
String jmxUrlStr = (rmiPort != 0) ?
- String.format("service:jmx:rmi://localhost:%d/jndi/rmi://localhost:%d/jmxrmi", rmiPort, port) :
- String.format("service:jmx:rmi:///jndi/rmi://localhost:%d/jmxrmi",port);
+ String.format(
+ "service:jmx:rmi://localhost:%d/jndi/rmi://localhost:%d/jmxrmi",
+ rmiPort,
+ port) :
+ String.format(
+ "service:jmx:rmi:///jndi/rmi://localhost:%d/jmxrmi",
+ port);
JMXServiceURL url = new JMXServiceURL(jmxUrlStr);
Map m = new HashMap();
@@ -153,29 +191,632 @@
int count = listMBeans(conn,pattern,null);
if (count == 0)
- throw new Exception("Expected at least one matching "+ "MBean for "+pattern);
+ throw new Exception("Expected at least one matching " +
+ "MBean for " + pattern);
+ }
+
+ private static class Failure {
+ private final Throwable cause;
+ private final String msg;
+
+ public Failure(Throwable cause, String msg) {
+ this.cause = cause;
+ this.msg = msg;
+ }
+
+ public Failure(String msg) {
+ this(null, msg);
+ }
+
+ public Throwable getCause() {
+ return cause;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 97 * hash + Objects.hashCode(this.cause);
+ hash = 97 * hash + Objects.hashCode(this.msg);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Failure other = (Failure) obj;
+ if (!Objects.equals(this.cause, other.cause)) {
+ return false;
+ }
+ if (!Objects.equals(this.msg, other.msg)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ if (cause != null) {
+ return msg + "\n" + cause;
+ } else {
+ return msg;
+ }
+ }
+ }
+
+ private static List<Failure> failures = new ArrayList<>();
+
+ public static void main(String args[]) throws Exception {
+ for (int i=0;i<3;i++) {
+ System.out.println("=== PASS " + i + " ===");
+ for (Method m : JMXStartStopTest.class.getDeclaredMethods()) {
+ if (m.getName().startsWith("test_")) {
+ try {
+ m.invoke(null);
+ System.out.println("=== PASSED\n");
+ } catch (Throwable e) {
+ failures.add(new Failure(e, m.getName() + " failed"));
+ }
+ }
+ }
+
+ if (!failures.isEmpty()) {
+ for(Failure f : failures) {
+ System.err.println(f.getMsg());
+ f.getCause().printStackTrace(System.err);
+ }
+ throw new Error();
+ }
+ }
+ }
+
+ /**
+ * Retrieves the PID of the test application using JCMD
+ * @return The PID of the test application
+ * @throws InterruptedException
+ * @throws IOException
+ */
+ private static String getPID() throws InterruptedException, IOException {
+ final AtomicReference<String> pid = new AtomicReference<>();
+ jcmd(
+ null,
+ line -> {
+ if (line.endsWith("JMXStartStopDoSomething")) {
+ pid.set(line.split(" ")[0]);
+ }
+ }
+ );
+ return pid.get();
+ }
+
+ private static class Something {
+ private Process p;
+ private final ProcessBuilder pb;
+ private final String name;
+ private final AtomicBoolean started = new AtomicBoolean(false);
+ private volatile int pid = -1;
+
+ public Something(ProcessBuilder pb, String name) {
+ this.pb = pb;
+ this.name = name;
+ }
+
+ public synchronized void start() throws InterruptedException, IOException, TimeoutException {
+ if (started.compareAndSet(false, true)) {
+ try {
+ p = ProcessTools.startProcess(
+ "JMXStartStopDoSomething",
+ pb,
+ (line) -> {
+ if (line.toLowerCase().startsWith("pid:")) {
+ pid = Integer.parseInt(line.split("\\:")[1]);
+ }
+ return line.equals("main enter");
+ },
+ 5,
+ TimeUnit.SECONDS
+ );
+ } catch (TimeoutException e) {
+ p.destroy();
+ p.waitFor();
+ throw e;
+ }
+ }
+ }
+
+ public int getPid() {
+ return pid;
+ }
+
+ public synchronized void stop()
+ throws IOException, InterruptedException {
+ if (started.compareAndSet(true, false)) {
+ p.getOutputStream().write(0);
+ p.getOutputStream().flush();
+ int ec = p.waitFor();
+ if (ec != 0) {
+ StringBuilder msg = new StringBuilder();
+ msg.append("Test application '").append(name);
+ msg.append("' failed with exit code: ");
+ msg.append(ec);
+
+ failures.add(new Failure(msg.toString()));
+ }
+ }
+ }
+ }
+
+ /**
+ * Runs the test application "JMXStartStopDoSomething"
+ * @param name Test run name
+ * @param args Additional arguments
+ * @return Returns a {@linkplain Something} instance representing the run
+ * @throws IOException
+ * @throws InterruptedException
+ * @throws TimeoutException
+ */
+ private static Something doSomething(String name, String ... args)
+ throws Exception {
+ List<String> pbArgs = new ArrayList<>(Arrays.asList(
+ "-cp",
+ System.getProperty("test.class.path")
+ ));
+ pbArgs.addAll(Arrays.asList(args));
+ pbArgs.add("JMXStartStopDoSomething");
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+ pbArgs.toArray(new String[pbArgs.size()])
+ );
+ Something s = new Something(pb, name);
+ s.start();
+ return s;
+ }
+
+ /**
+ * Run the "jcmd" command
+ *
+ * @param command Command with parameters; space separated string
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static void jcmd(String ... command) throws IOException, InterruptedException {
+ if (command.length == 0) {
+ jcmd(null, (Consumer<String>)null);
+ } else {
+ jcmd(null, command);
+ }
+ }
+
+ /**
+ * Run the "jcmd" command
+ *
+ * @param c {@linkplain Consumer} instance; may be null
+ * @param command Command with parameters; space separated string
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static void jcmd(Consumer<String> c, String ... command) throws IOException, InterruptedException {
+ jcmd("JMXStartStopDoSomething", c, command);
+ }
+
+ /**
+ * Run the "jcmd" command
+ * @param target The target application name (or PID)
+ * @param c {@linkplain Consumer} instance; may be null
+ * @param command Command with parameters; space separated string
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static void jcmd(String target, final Consumer<String> c, String ... command) throws IOException, InterruptedException {
+ dbg_print("[jcmd] " + (command.length > 0 ? command[0] : "list"));
+
+ JDKToolLauncher l = JDKToolLauncher.createUsingTestJDK("jcmd");
+ l.addToolArg(target);
+ for(String cmd : command) {
+ l.addToolArg(cmd);
+ }
+ Process p = ProcessTools.startProcess(
+ "jcmd",
+ new ProcessBuilder(l.getCommand()),
+ c
+ );
+
+ p.waitFor();
+ dbg_print("[jcmd] --------");
+ }
+
+ private static final String CMD_STOP = "ManagementAgent.stop";
+ private static final String CMD_START= "ManagementAgent.start";
+ private static final String CMD_START_LOCAL = "ManagementAgent.start_local";
+ private static final int port1 = 50234;
+ private static final int port2 = 50235;
+
+ private static void test_01() throws Exception {
+ // Run an app with JMX enabled stop it and
+ // restart on other port
+
+ System.out.println("**** Test one ****");
+
+ Something s = doSomething(
+ "test_01",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false");
+
+ try {
+ testConnect(port1);
+
+ jcmd(CMD_STOP);
+ testNoConnect(port1);
+
+ jcmd(CMD_START, "jmxremote.port=" + port2);
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_02() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd
+
+ System.out.println("**** Test two ****");
+
+ Something s = doSomething("test_02");
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ testConnect(port1);
+ } finally {
+ s.stop();
+ }
}
+ private static void test_03() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd on one port than on other one
- public static void main(String args[]) {
- JMXStartStopTest manager = new JMXStartStopTest();
+ System.out.println("**** Test three ****");
+
+ Something s = doSomething("test_03");
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ // Second agent shouldn't start
+ jcmd(CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ // First agent should connect
+ testConnect(port1);
+
+ // Second agent should not connect
+ testNoConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_04() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd on one port, specify rmi port explicitly
+
+ System.out.println("**** Test four ****");
+
+ Something s = doSomething("test_04");
+
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.rmi.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ testConnect(port1, port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_05() throws Exception {
+ // Run an app without JMX enabled, it will enable local server
+ // but should leave remote server disabled
+
+ System.out.println("**** Test five ****");
+
+ Something s = doSomething("test_05");
try {
- if (args!=null && args[0].equals("local")) {
- manager.run_local(args[1]);
- } else {
- manager.run(args);
+ jcmd(CMD_START_LOCAL);
+
+ testNoConnect(port1);
+ testConnectLocal(s.getPid());
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_06() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd on one port, specify rmi port explicitly
+ // attempt to start it again
+ // 1) with the same port
+ // 2) with other port
+ // 3) attempt to stop it twice
+ // Check for valid messages in the output
+
+ System.out.println("**** Test six ****");
+
+ Something s = doSomething("test_06");
+
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ testConnect(port1, port2);
+
+ final boolean[] checks = new boolean[3];
+ jcmd(
+ line -> {
+ if (line.equals("java.lang.RuntimeException: Invalid agent state")) {
+ checks[0] = true;
+ }
+ },
+ CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ jcmd(
+ line -> {
+ if (line.equals("java.lang.RuntimeException: Invalid agent state")) {
+ checks[1] = true;
+ }
+ },
+ CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ jcmd(CMD_STOP);
+ jcmd(CMD_STOP);
+
+ jcmd(
+ line -> {
+ if (line.contains("Port already in use: 22")) {
+ checks[2] = true;
+ }
+ },
+ CMD_START,
+ "jmxremote.port=22",
+ "jmxremote.rmi.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+ if (!checks[0]) {
+ throw new Exception("Starting agent on port " + port1 + " should " +
+ "report an invalid agent state");
}
- } catch (RuntimeException r) {
- dbg_print("No connection: ", r);
- System.out.print("NO_CONN");
- System.exit(1);
- } catch (Throwable t) {
- dbg_print("No connection: ", t);
- System.out.print("NO_CONN");
- System.exit(2);
+ if (!checks[1]) {
+ throw new Exception("Starting agent on poprt " + port2 + " should " +
+ "report an invalid agent state");
+ }
+ if (!checks[2]) {
+ throw new Exception("Starting agent on port 22 should " +
+ "report port in use");
+ }
+ } finally {
+ s.stop();
}
- System.out.print("OK_CONN");
- System.exit(0);
+ }
+
+ private static void test_07() throws Exception {
+ // Run an app without JMX enabled, but with some properties set
+ // in command line.
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test seven ****");
+
+ Something s = doSomething(
+ "test_07",
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=true");
+
+ try {
+ testNoConnect(port1);
+ jcmd(
+ CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false"
+ );
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
}
+ private static void test_08() throws Exception {
+ // Run an app with JMX enabled and with some properties set
+ // in command line.
+ // stop JMX agent and then start it again with different property values
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test eight ****");
+
+ Something s = doSomething(
+ "test_08",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=true");
+
+ try {
+ testNoConnect(port1);
+
+ jcmd(CMD_STOP);
+
+ testNoConnect(port1);
+
+ jcmd(
+ CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false"
+ );
+
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_09() throws Exception {
+ // Run an app with JMX enabled and with some properties set
+ // in command line.
+ // stop JMX agent and then start it again with different property values
+ // specifing some property in management config file and some of them
+ // in command line
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test nine ****");
+
+ Something s = doSomething("test_09",
+ "-Dcom.sun.management.config.file=" +
+ TEST_SRC + File.separator + "management_cl.properties",
+ "-Dcom.sun.management.jmxremote.authenticate=false"
+ );
+
+ try {
+ testNoConnect(port1);
+
+ jcmd(CMD_STOP);
+
+ testNoConnect(port1);
+
+ jcmd(CMD_START,
+ "config.file=" + TEST_SRC + File.separator +
+ "management_jcmd.properties",
+ "jmxremote.authenticate=false",
+ "jmxremote.port=" + port2
+ );
+
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_10() throws Exception {
+ // Run an app with JMX enabled and with some properties set
+ // in command line.
+ // stop JMX agent and then start it again with different property values
+ // stop JMX agent again and then start it without property value
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test ten ****");
+
+ Something s = doSomething(
+ "test_10",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=true");
+
+ try {
+ testNoConnect(port1);
+
+ jcmd(CMD_STOP);
+ jcmd(CMD_START,
+ "jmxremote.ssl=false",
+ "jmxremote.port=" + port1
+ );
+ testConnect(port1);
+
+ jcmd(CMD_STOP);
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1
+ );
+
+ testNoConnect(port1);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_11() throws Exception {
+ // Run an app with JMX enabled
+ // stop remote agent
+ // make sure local agent is not affected
+
+ System.out.println("**** Test eleven ****");
+
+ Something s = doSomething(
+ "test_11",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false");
+ try {
+ testConnect(port1);
+ jcmd(CMD_STOP);
+ testConnectLocal(s.getPid());
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_12() throws Exception {
+ // Run an app with JMX disabled
+ // start local agent only
+
+ System.out.println("**** Test twelve ****");
+
+ Something s = doSomething("test_12");
+
+ try {
+ testNoConnect(port1);
+ jcmd(CMD_START + "_local");
+
+ testConnectLocal(s.getPid());
+
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_13() throws Exception {
+ // Run an app with -javaagent make sure it works as expected -
+ // system properties are ignored
+
+ System.out.println("**** Test fourteen ****");
+
+ String agent = TEST_JDK + "/jre/lib/management-agent.jar";
+ if (!new File(agent).exists()) {
+ agent = TEST_JDK + "/lib/management-agent.jar";
+ }
+
+ Something s = doSomething("test_14",
+ "-javaagent:" + agent + "=com.sun.management.jmxremote.port=" +
+ port1 + ",com.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false"
+ );
+
+ try {
+ testNoConnect(port1);
+ } finally {
+ s.stop();
+ }
+ }
}
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,579 +0,0 @@
-#!/bin/sh
-
-# Copyright (c) 2011, 2012, 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 7110104
-# @build JMXStartStopTest JMXStartStopDoSomething
-# @run shell JMXStartStopTest.sh --jtreg --no-compile
-# @summary No word Failed expected in the test output
-
-_server=no
-_jtreg=no
-_compile=yes
-_testsuite="01,02,03,04,05,06,07,08,09,10,11,12,13"
-_port_one=50234
-_port_two=50235
-
-
-_testclasses=".classes"
-_testsrc=`pwd`
-
-_logname=".classes/output.txt"
-_lockFileName="JMXStartStop.lck"
-
-_compile(){
-
- if [ ! -d ${_testclasses} ]
- then
- mkdir -p ${_testclasses}
- fi
-
- rm -f ${_testclasses}/JMXStartStopTest.class
-
- # Compile testcase
- ${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d ${_testclasses} \
- JMXStartStopDoSomething.java JMXStartStopTest.java
-
- if [ ! -f ${_testclasses}/JMXStartStopTest.class ]
- then
- echo "ERROR: Can't compile"
- exit -1
- fi
-}
-
-_app_start(){
- ${TESTJAVA}/bin/java ${TESTVMOPTS} $* -cp ${_testclasses} JMXStartStopDoSomething >> ${_logname} 2>&1 &
-
- x=0
- while [ ! -f ${_lockFileName} ]
- do
- if [ $x -gt 20 ]
- then
- echo "ERROR: Test app not started"
- if [ "${_jtreg}" = "yes" ]
- then
- exit -1
- fi
- fi
-
- echo "Waiting JMXStartStopDoSomething to start: $x"
- x=`expr $x + 1`
- sleep 1
- done
-}
-
-_get_pid(){
- ${COMPILEJAVA}/bin/jps ${TESTTOOLVMOPTS} | sed -n "/JMXStartStopDoSomething/s/ .*//p"
-}
-
-_app_stop(){
- rm ${_lockFileName}
-
- # wait until VM is actually shuts down
- while true
- do
- npid=`_get_pid`
- if [ "${npid}" = "" ]
- then
- break
- fi
- sleep 1
- done
-}
-
-_exit_on_jtreg(){
- # Stop on first failed test under jtreg
- if [ "${_jtreg}" = "yes" ]
- then
- _app_stop
- exit -1
- fi
-}
-
-_testme(){
- ${TESTJAVA}/bin/java ${TESTVMOPTS} -cp ${_testclasses} JMXStartStopTest $*
-}
-
-
-_jcmd(){
- ${TESTJAVA}/bin/jcmd ${TESTTOOLVMOPTS} JMXStartStopDoSomething $* > /dev/null 2>/dev/null
-}
-
-_echo(){
- echo "$*"
- echo "$*" >> ${_logname}
-}
-
-# ============= TESTS ======================================
-
-test_01(){
-# Run an app with JMX enabled stop it and
-# restart on other port
-
- _echo "**** Test one ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$1 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=false
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.start jmxremote.port=$2
-
- res3=`_testme $2`
-
- if [ "${res1}" = "OK_CONN" -a "${res2}" = "NO_CONN" -a "${res3}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(OK):${res1} r2(NO):${res2} r3(OK):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_02(){
-# Run an app without JMX enabled
-# start JMX by jcmd
-
- _echo "**** Test two ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
- res1=`_testme $1`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(OK):${res1}"
- _exit_on_jtreg
- fi
- _app_stop
-}
-
-test_03(){
-# Run an app without JMX enabled
-# start JMX by jcmd on one port than on other one
-
- _echo "**** Test three ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
-# Second agent shouldn't start
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
-# First agent should connect
- res1=`_testme $1`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed $1"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
-#Second agent shouldn't connect
- res1=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" ]
- then
- _echo "Passed $2"
- else
- _echo "Failed r1(OK):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_04(){
-# Run an app without JMX enabled
-# start JMX by jcmd on one port, specify rmi port explicitly
-
- _echo "**** Test four ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.rmi.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
-# First agent should connect
- res1=`_testme $1 $2`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed $1 $2"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_05(){
-# Run an app without JMX enabled, it will enable local server
-# but should leave remote server disabled
-
- _echo "**** Test five ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote=1
-
- # First agent should connect
- res1=`_testme $1`
-
- if [ "${res1}" = "NO_CONN" ]
- then
- _echo "Passed $1 $2"
- else
- _echo "Failed r1(OK):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_06(){
-# Run an app without JMX enabled
-# start JMX by jcmd on one port, specify rmi port explicitly
-# attempt to start it again
-# 1) with the same port
-# 2) with other port
-# 3) attempt to stop it twice
-# Check for valid messages in the output
-
- _echo "**** Test six ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
- # First agent should connect
- res1=`_testme $1 $2`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed $1 $2"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- _jcmd ManagementAgent.stop
-
- _jcmd ManagementAgent.stop
-
- _jcmd ManagementAgent.start jmxremote.port=22 jmxremote.rmi.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- _app_stop
-}
-
-test_07(){
-# Run an app without JMX enabled, but with some properties set
-# in command line.
-# make sure these properties overriden corectly
-
- _echo "**** Test seven ****"
-
- _app_start -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=true
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- res2=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "OK_CONN" ]
- then
- echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(OK):${res2}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_08(){
-# Run an app with JMX enabled and with some properties set
-# in command line.
-# stop JMX agent and then start it again with different property values
-# make sure these properties overriden corectly
-
- _echo "**** Test eight ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$1 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=true
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- res3=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "NO_CONN" -a "${res3}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(NO):${res2} r3(OK):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_09(){
-# Run an app with JMX enabled and with some properties set
-# in command line.
-# stop JMX agent and then start it again with different property values
-# specifing some property in management config file and some of them
-# in command line
-# make sure these properties overriden corectly
-
- _echo "**** Test nine ****"
-
- _app_start -Dcom.sun.management.config.file=${_testsrc}/management_cl.properties \
- -Dcom.sun.management.jmxremote.authenticate=false
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.start config.file=${_testsrc}/management_jcmd.properties \
- jmxremote.authenticate=false jmxremote.port=$2
-
- res3=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "NO_CONN" -a "${res3}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(NO):${res2} r3(OK):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_10(){
-# Run an app with JMX enabled and with some properties set
-# in command line.
-# stop JMX agent and then start it again with different property values
-# stop JMX agent again and then start it without property value
-# make sure these properties overriden corectly
-
- _echo "**** Test ten ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$1 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=true
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
- _jcmd ManagementAgent.start jmxremote.ssl=false jmxremote.port=$1
-
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.stop
- _jcmd ManagementAgent.start jmxremote.port=$1
-
- res3=`_testme $1`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "OK_CONN" -a "${res3}" = "NO_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(OK):${res2} r3(NO):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_11(){
-# Run an app with JMX enabled
-# stop remote agent
-# make sure local agent is not affected
-
- _echo "**** Test eleven ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$2 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=false
-
- res1=`_testme $2`
-
- _jcmd ManagementAgent.stop
-
- pid=`${COMPILEJAVA}/bin/jps ${TESTTOOLVMOPTS} | sed -n "/JMXStartStopDoSomething/s/ .*//p"`
- res2=`_testme local ${pid}`
-
- if [ "${res1}" = "OK_CONN" -a "${res2}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(OK):${res1} r2(OK):${res2}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_12(){
-# Run an app with JMX disabled
-# start local agent only
-
- _echo "**** Test twelve ****"
-
- _app_start
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.start_local
-
- pid=`_get_pid`
- if [ "x${pid}" = "x" ]
- then
- res2="NO_CONN"
- else
- res2=`_testme local ${pid}`
- fi
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(OK):${res2}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_13(){
-# Run an app with -javaagent make sure it works as expected - system properties are ignored
-
- _echo "**** Test thirteen ****"
-
- AGENT="${TESTJAVA}/jre/lib/management-agent.jar"
- if [ ! -f ${AGENT} ]
- then
- AGENT="${TESTJAVA}/lib/management-agent.jar"
- fi
-
- _app_start -javaagent:${AGENT}=com.sun.management.jmxremote.port=$1,com.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
-
- res1=`_testme $1`
-
- if [ "${res1}" = "NO_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-# ============= MAIN =======================================
-
-if [ "x${TESTJAVA}" = "x" ]
-then
- echo "TESTJAVA env have to be set"
- exit
-fi
-
-if [ ! -x "${TESTJAVA}/bin/jcmd" ]
-then
- echo "${TESTJAVA}/bin/jcmd"
- echo "Doesn't exist or not an executable"
- exit
-fi
-
-
-#------------------------------------------------------------------------------
-# reading parameters
-
-for parm in "$@"
-do
- case $parm in
- --jtreg) _jtreg=yes ;;
- --no-compile) _compile=no ;;
- --testsuite=*) _testsuite=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;;
- --port-one=*) _port_one=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;;
- --port-two=*) _port_two=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;;
- *)
- echo "Undefined parameter $parm. Try --help for help"
- exit
- ;;
- esac
-done
-
-if [ "${COMPILEJAVA}" = "" ]
-then
- COMPILEJAVA=${TESTJAVA}
-fi
-
-if [ ${_compile} = "yes" ]
-then
- _compile
-fi
-
-if [ ${_jtreg} = "yes" ]
-then
- _testclasses=${TESTCLASSES}
- _testsrc=${TESTSRC}
- _logname="JMXStartStopTest_output.txt"
-fi
-
-rm -f ${_logname}
-
-# Local mode tests
-for i in `echo ${_testsuite} | sed -e "s/,/ /g"`
-do
- test_${i} ${_port_one} ${_port_two}
-done
-
-
--- a/jdk/test/sun/security/ec/TestEC.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ec/TestEC.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -59,6 +59,10 @@
public class TestEC {
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
ProvidersSnapshot snapshot = ProvidersSnapshot.create();
try {
main0(args);
--- a/jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Tue Jan 28 11:21:43 2014 -0800
@@ -48,6 +48,10 @@
}
public void main(Provider p) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (p.getService("KeyFactory", "EC") == null) {
System.out.println("Provider does not support EC, skipping");
return;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,449 @@
+/*
+ * 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.
+ */
+
+// This test case relies on static security property, no way to re-use
+// security property in samevm/agentvm mode.
+
+/**
+ * @test
+ *
+ * @bug 8030829
+ * @summary Add MD5 to jdk.certpath.disabledAlgorithms security property
+ *
+ * @run main/othervm CPBuilderWithMD5 trustAnchor_SHA1withRSA_1024 0 true
+ * @run main/othervm CPBuilderWithMD5 trustAnchor_SHA1withRSA_512 0 true
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_1024_1024 1 true
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_1024_512 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_512_1024 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_512_512 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_MD5withRSA_1024_1024 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_MD5withRSA_1024_512 1 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_1024_1024 2 true
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_1024_512 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_512_1024 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_512_512 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_MD5withRSA_1024_1024 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_MD5withRSA_1024_512 2 false
+ *
+ * @author Xuelei Fan
+ */
+
+/*
+ * The generate.sh was designed to generate MD2 signed certificates. The
+ * certificates used in this test are generated by an updated generate.sh that
+ * replacing MD2 with MD5 algorithm.
+ */
+import java.io.*;
+import java.net.SocketException;
+import java.util.*;
+import java.security.Security;
+import java.security.cert.*;
+import sun.security.util.DerInputStream;
+
+public class CPBuilderWithMD5 {
+
+ // SHA1withRSA 1024
+ static String trustAnchor_SHA1withRSA_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICPjCCAaegAwIBAgIBADANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA4NTFaFw0zNDEyMDgxMTA4NTFa\n" +
+ "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" +
+ "AQUAA4GNADCBiQKBgQDn3JSHACqi/bcohVy7eFqDs3L5ehnXmF9Jrg4rMRUeNrxA\n" +
+ "61F8bJ9JXx4j8WyqmT0TtokgXuqGxbsXRQVVw4AdXLF2PwCs/y+Y+AwU59uDHA3J\n" +
+ "AMk4VvjV9MB2Ea6YzuLnbbj/TNrfxB6LZ7KBvh0fYGt2T40yMvOvilU/f6e3zQID\n" +
+ "AQABo4GJMIGGMB0GA1UdDgQWBBSIxINDFVm8GpUz3v+BbWNmDEKP7TBHBgNVHSME\n" +
+ "QDA+gBSIxINDFVm8GpUz3v+BbWNmDEKP7aEjpCEwHzELMAkGA1UEBhMCVVMxEDAO\n" +
+ "BgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQw\n" +
+ "DQYJKoZIhvcNAQEFBQADgYEAt0mYDXTpInrGvEOylIL2gx65A/bpdz9iDQsSs5sZ\n" +
+ "r3m0v9zJnzR8lRqN4GbaD1vrFdkUrIoObcvXjXitnf5QqDzmc9BbIYj83Ft8QSUj\n" +
+ "jCMy04EGT/7ATss4SiFEu6sJpmOBjsgH6wYuobR27wl/01XOu2CXUo3OOjgAoPBs\n" +
+ "QoQ=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512
+ static String trustAnchor_SHA1withRSA_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIBuTCCAWOgAwIBAgIBADANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA4NTFaFw0zNDEyMDgxMTA4NTFa\n" +
+ "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMFwwDQYJKoZIhvcNAQEB\n" +
+ "BQADSwAwSAJBANLqQkOpH7rBTo/a2ccYjJxvNib/Lxm6UXO1uAd/0AUzPWzJsOpB\n" +
+ "u2zyD26UYc0GNyXCkWMZ44FrtSQ8VI146j8CAwEAAaOBiTCBhjAdBgNVHQ4EFgQU\n" +
+ "5PVLxBY//smN31jHb/MAmCEz5NIwRwYDVR0jBEAwPoAU5PVLxBY//smN31jHb/MA\n" +
+ "mCEz5NKhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlggEAMA8G\n" +
+ "A1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0GCSqGSIb3DQEBBQUAA0EAzF9E\n" +
+ "dXYPLqziCRY45IHCUtxaLjLQmwsjEu91TV4xyuuozGEumcqH7m6Hg6Ohnd1FGfsN\n" +
+ "X+vt1tdaDIu9+OzGjQ==\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 1024
+ static String intermediate_SHA1withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICUDCCAbmgAwIBAgIBAzANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBSIxINDFVm8GpUz3v+BbWNmDEKP7aEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEFBQADgYEA0673aIUF2k20jkpR\n" +
+ "4USN9UkbfX57Uazhl4n765EeAiteWnTzKztISeH1GTrCw7bSl1r07aaflsnbKOHC\n" +
+ "RrL2RxbxNwQARvuuCxr664vXnsGrt86xA5F2iNF22uDM/5HA5sIfBmEk5xXSLrgH\n" +
+ "I7jOaYqAA1b8C+4DU2Z5ZgO4LOA=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 512
+ static String intermediate_SHA1withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICDzCCAbmgAwIBAgIBBDANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBTk9UvEFj/+yY3fWMdv8wCYITPk0qEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEFBQADQQAihshnF7RWZ13tUGsH\n" +
+ "iM4i8HmBjw2+pwW/cs0E8BcycYEy3beWMcL1Np2yfOa/7K5ZvGPhe/piwzTel+Kt\n" +
+ "5VLm\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 1024
+ static String intermediate_SHA1withRSA_512_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICDDCCAXWgAwIBAgIBBTANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAK4h/iW3wt+ugR5ObWiFSl394UU/\n" +
+ "lWNm+N6UAgsBRhSzZz/Iof7xZTQI+usNXzOrTnU3+uZsMgokpjkrko1osxUCAwEA\n" +
+ "AaOBiTCBhjAdBgNVHQ4EFgQU88OD48Osuh7lJiLnhfMhrySqW8QwRwYDVR0jBEAw\n" +
+ "PoAUiMSDQxVZvBqVM97/gW1jZgxCj+2hI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" +
+ "VQQKEwdFeGFtcGxlggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0G\n" +
+ "CSqGSIb3DQEBBQUAA4GBAAHN8XUTT6asa1MvpfqAvKTH6tNrMOmzoFsUamPxSrUB\n" +
+ "tnBv/fa/E9+1QvQwl3g6luVXBkQf2/nVD0195IdkEuD/C6psuGKerXmiaRMv5Wcs\n" +
+ "B+8bTzhNxMzHKPZDJ8Tf/RD3XpPvtxw0T+I5xud68FH/WDhJtu7TiXPAhs7srtHt\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 512
+ static String intermediate_SHA1withRSA_512_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIByzCCAXWgAwIBAgIBBjANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAK4h/iW3wt+ugR5ObWiFSl394UU/\n" +
+ "lWNm+N6UAgsBRhSzZz/Iof7xZTQI+usNXzOrTnU3+uZsMgokpjkrko1osxUCAwEA\n" +
+ "AaOBiTCBhjAdBgNVHQ4EFgQU88OD48Osuh7lJiLnhfMhrySqW8QwRwYDVR0jBEAw\n" +
+ "PoAU5PVLxBY//smN31jHb/MAmCEz5NKhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" +
+ "VQQKEwdFeGFtcGxlggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0G\n" +
+ "CSqGSIb3DQEBBQUAA0EASLN+1/pfo+9ty5EaYkoPu4QeYGr+5wmXyDceiaED/Lok\n" +
+ "RdV0ZH0qwD4kiarlJssNOgMCk+2EzgvXcIhEMDa5hA==\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 1024
+ static String intermediate_MD5withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICUDCCAbmgAwIBAgIBBzANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBSIxINDFVm8GpUz3v+BbWNmDEKP7aEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEEBQADgYEAerx2je3FBVn2eoPs\n" +
+ "nTzLKILezqCTCO7mXWiyBidRhh4RGdM8JggMN5SRmuwRurxfYFgPfqmAenWtEFqO\n" +
+ "xZrTXQUvIrrEgpzqkfppFnkCh4kDsX4roD5Nho3J4MTBQkqE0r676Yq6Rp6cywCq\n" +
+ "CHQQztRGY7n/ZYRNJ3uzvuoT1tk=\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 512
+ static String intermediate_MD5withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICDzCCAbmgAwIBAgIBCDANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MTBaFw0zMzA5MTQxMTA5MTBa\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBTk9UvEFj/+yY3fWMdv8wCYITPk0qEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEEBQADQQA3XGQPNin8cDIsJ4vx\n" +
+ "tTxUO6XVJoWOdTsjwzlMrPmLvjJNZeXLtQe3pQu0vjgyUpQ59VYLW3qKN/LF3UH0\n" +
+ "Ep7V\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 1024
+ static String endentiry_SHA1withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICNzCCAaCgAwIBAgIBAjANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBQIsaDZL94kLug/A1N4EkNOA4z47DANBgkqhkiG\n" +
+ "9w0BAQUFAAOBgQB2RkWHOaL4WTOGoeTS4J4o9FW+4UXihbocdI/64rMExERjDkE/\n" +
+ "Jh31TEmatnP1gPrF1AfmqQPubqVSbRtCHrZF+Ilk6L6YeyRNzKvsLiMUtgrLYLas\n" +
+ "Vop0DFZxR02xHgaJdoJkcWBjNadb9zG7eZtt8OOOJ4lRwg02aLTy+WDqPA==\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 512
+ static String endentiry_SHA1withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIB9jCCAaCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBTzw4Pjw6y6HuUmIueF8yGvJKpbxDANBgkqhkiG\n" +
+ "9w0BAQUFAANBAIapvjECUm4YD4O99G0v2SM17cKQzjZtSWkScS7FSk4sxS+dP3hM\n" +
+ "Qb2UpoRl6CGynhOVVy2G/VJN8BEqOfywj8k=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 1024
+ static String endentiry_SHA1withRSA_512_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIB8zCCAVygAwIBAgIBBDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTBcMA0GCSqGSIb3\n" +
+ "DQEBAQUAA0sAMEgCQQCngiNTE+qngHcfj2jUpdc82gCw+TFRjR7oMSdp7b/3NwpD\n" +
+ "E+11z9WspoXTDzvbKcGUH9svFl691NyY0ZUmf+4RAgMBAAGjTzBNMAsGA1UdDwQE\n" +
+ "AwID6DAdBgNVHQ4EFgQUK+oVsFTQbz08evgQZ5Sd82c2y4UwHwYDVR0jBBgwFoAU\n" +
+ "CLGg2S/eJC7oPwNTeBJDTgOM+OwwDQYJKoZIhvcNAQEFBQADgYEAMd/8XnjRz5jK\n" +
+ "nbss9DDQQC2mUuCbV/tGdke7eQ1DtBVZLBU6wDgisGr52sUXmyZIPmSVKpQqwCG5\n" +
+ "8cY5uQhaNwPtPmMMKXzX32zN9NhVkiDNceL+zHs3vdjD1i/QiUTST+NKfLYVb6dF\n" +
+ "YMG65lxe3gMVxMweiHSZSukmk1k3gUA=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 512
+ static String endentiry_SHA1withRSA_512_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIBsjCCAVygAwIBAgIBBTANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTBcMA0GCSqGSIb3\n" +
+ "DQEBAQUAA0sAMEgCQQCngiNTE+qngHcfj2jUpdc82gCw+TFRjR7oMSdp7b/3NwpD\n" +
+ "E+11z9WspoXTDzvbKcGUH9svFl691NyY0ZUmf+4RAgMBAAGjTzBNMAsGA1UdDwQE\n" +
+ "AwID6DAdBgNVHQ4EFgQUK+oVsFTQbz08evgQZ5Sd82c2y4UwHwYDVR0jBBgwFoAU\n" +
+ "88OD48Osuh7lJiLnhfMhrySqW8QwDQYJKoZIhvcNAQEFBQADQQB4xFWtC6ijDBIe\n" +
+ "/Gkf3B9+ycmP52pTPNiPwMS6u1a5vTRXMn5xRDexWfxJKJVZ2s9UR1jheZvWgPC8\n" +
+ "VUWO8bbG\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 1024
+ static String endentiry_MD5withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICNzCCAaCgAwIBAgIBBjANBgkqhkiG9w0BAQQFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBQIsaDZL94kLug/A1N4EkNOA4z47DANBgkqhkiG\n" +
+ "9w0BAQQFAAOBgQBCVn9/JQxsRTaKIKSrgB+KtEreat+33k3SXuJICuRxcmvjOXIx\n" +
+ "wSdq+mRCA+DpIPSNtgnDAUyipnyxRxpdmRRUHuRYpkALq4a5QtTJK0Y/CEMfsd2J\n" +
+ "Yd2zKcfynDLW6LVeNdtjlY7fTemJnbA/WImNhwyW55V9vbnk3J04EZN8jw==\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 512
+ static String endentiry_MD5withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIB9jCCAaCgAwIBAgIBBzANBgkqhkiG9w0BAQQFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTNaFw0zMzA5MTQxMTA5MTNaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBTzw4Pjw6y6HuUmIueF8yGvJKpbxDANBgkqhkiG\n" +
+ "9w0BAQQFAANBAAbZwmkqb6sfiiIxuLnj6PjhJsXGfvPomkkbLu5CapAMhen/p6ZG\n" +
+ "6vh69TbIsBR9UHu7qDyTl5Xax7bmYeW+sDQ=\n" +
+ "-----END CERTIFICATE-----";
+
+ static HashMap<String, String> certmap = new HashMap<String, String>();
+ static {
+ certmap.put("trustAnchor_SHA1withRSA_1024",
+ trustAnchor_SHA1withRSA_1024);
+ certmap.put("trustAnchor_SHA1withRSA_512",
+ trustAnchor_SHA1withRSA_512);
+ certmap.put("intermediate_SHA1withRSA_1024_1024",
+ intermediate_SHA1withRSA_1024_1024);
+ certmap.put("intermediate_SHA1withRSA_1024_512",
+ intermediate_SHA1withRSA_1024_512);
+ certmap.put("intermediate_SHA1withRSA_512_1024",
+ intermediate_SHA1withRSA_512_1024);
+ certmap.put("intermediate_SHA1withRSA_512_512",
+ intermediate_SHA1withRSA_512_512);
+ certmap.put("intermediate_MD5withRSA_1024_1024",
+ intermediate_MD5withRSA_1024_1024);
+ certmap.put("intermediate_MD5withRSA_1024_512",
+ intermediate_MD5withRSA_1024_512);
+ certmap.put("endentiry_SHA1withRSA_1024_1024",
+ endentiry_SHA1withRSA_1024_1024);
+ certmap.put("endentiry_SHA1withRSA_1024_512",
+ endentiry_SHA1withRSA_1024_512);
+ certmap.put("endentiry_SHA1withRSA_512_1024",
+ endentiry_SHA1withRSA_512_1024);
+ certmap.put("endentiry_SHA1withRSA_512_512",
+ endentiry_SHA1withRSA_512_512);
+ certmap.put("endentiry_MD5withRSA_1024_1024",
+ endentiry_MD5withRSA_1024_1024);
+ certmap.put("endentiry_MD5withRSA_1024_512",
+ endentiry_MD5withRSA_1024_512);
+ }
+
+ private static Set<TrustAnchor> generateTrustAnchors()
+ throws CertificateException {
+ // generate certificate from cert string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ HashSet<TrustAnchor> anchors = new HashSet<TrustAnchor>();
+
+ ByteArrayInputStream is =
+ new ByteArrayInputStream(trustAnchor_SHA1withRSA_1024.getBytes());
+ Certificate cert = cf.generateCertificate(is);
+ TrustAnchor anchor = new TrustAnchor((X509Certificate)cert, null);
+ anchors.add(anchor);
+
+ is = new ByteArrayInputStream(trustAnchor_SHA1withRSA_512.getBytes());
+ cert = cf.generateCertificate(is);
+ anchor = new TrustAnchor((X509Certificate)cert, null);
+ anchors.add(anchor);
+
+ return anchors;
+ }
+
+ private static CertStore generateCertificateStore() throws Exception {
+ Collection entries = new HashSet();
+
+ // generate certificate from certificate string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+ for (String key : certmap.keySet()) {
+ String certStr = certmap.get(key);
+ ByteArrayInputStream is =
+ new ByteArrayInputStream(certStr.getBytes());;
+ Certificate cert = cf.generateCertificate(is);
+ entries.add(cert);
+ }
+
+ return CertStore.getInstance("Collection",
+ new CollectionCertStoreParameters(entries));
+ }
+
+ private static X509CertSelector generateSelector(String name)
+ throws Exception {
+ X509CertSelector selector = new X509CertSelector();
+
+ String certStr = certmap.get(name);
+ if (certStr == null) {
+ return null;
+ }
+
+ // generate certificate from certificate string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());
+ X509Certificate target = (X509Certificate)cf.generateCertificate(is);
+
+ selector.setCertificate(target);
+
+ return selector;
+ }
+
+ private static boolean match(String name, Certificate cert)
+ throws Exception {
+ X509CertSelector selector = new X509CertSelector();
+
+ String certStr = certmap.get(name);
+ if (certStr == null) {
+ return false;
+ }
+
+ // generate certificate from certificate string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());
+ X509Certificate target = (X509Certificate)cf.generateCertificate(is);
+
+ return target.equals(cert);
+ }
+
+ public static void main(String args[]) throws Exception {
+ CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
+
+ X509CertSelector selector = generateSelector(args[0]);
+ if (selector == null) {
+ // no target certificate, ignore it
+ return;
+ }
+
+ Set<TrustAnchor> anchors = generateTrustAnchors();
+ CertStore certs = generateCertificateStore();
+
+ PKIXBuilderParameters params =
+ new PKIXBuilderParameters(anchors, selector);
+ params.addCertStore(certs);
+ params.setRevocationEnabled(false);
+ params.setDate(new Date(114, 9, 1)); // 2014-09-01
+
+ boolean success = Boolean.valueOf(args[2]);
+ try {
+ PKIXCertPathBuilderResult result =
+ (PKIXCertPathBuilderResult)builder.build(params);
+ if (!success) {
+ throw new Exception("expected algorithm disabled exception");
+ }
+
+ int length = Integer.parseInt(args[1]);
+ List<? extends Certificate> path =
+ result.getCertPath().getCertificates();
+ if (length != path.size()) {
+ throw new Exception("unexpected certification path length");
+ }
+
+ if (!path.isEmpty()) { // the target is not a trust anchor
+ if (!match(args[0], path.get(0))) {
+ throw new Exception("unexpected certificate");
+ }
+ }
+ } catch (CertPathBuilderException cpbe) {
+ if (success) {
+ throw new Exception("unexpected exception", cpbe);
+ } else {
+ System.out.println("Get the expected exception " + cpbe);
+ }
+ }
+ }
+
+}
--- a/jdk/test/sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -21,15 +21,23 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/*
* @test
* @bug 7167988
* @summary PKIX CertPathBuilder in reverse mode doesn't work if more than
* one trust anchor is specified
+ * @run main/othervm ReverseBuild
*/
import java.io.*;
import java.util.*;
import java.security.cert.*;
+import java.security.Security;
import sun.security.provider.certpath.SunCertPathBuilderParameters;
@@ -279,6 +287,9 @@
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
// generate certificate from cert string
CertificateFactory cf = CertificateFactory.getInstance("X.509");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/MD2InTrustAnchor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/MD2InTrustAnchor.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -23,13 +23,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 7113275
* @summary compatibility issue with MD2 trust anchor and old X509TrustManager
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @run main/othervm MD2InTrustAnchor PKIX TLSv1.1
* @run main/othervm MD2InTrustAnchor SunX509 TLSv1.1
* @run main/othervm MD2InTrustAnchor PKIX TLSv1.2
@@ -40,6 +42,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -283,6 +286,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/TrustTrustedCert.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/TrustTrustedCert.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -23,13 +23,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 7113275
* @summary compatibility issue with MD2 trust anchor and old X509TrustManager
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @run main/othervm TrustTrustedCert PKIX TLSv1.1
* @run main/othervm TrustTrustedCert SunX509 TLSv1.1
* @run main/othervm TrustTrustedCert PKIX TLSv1.2
@@ -336,6 +338,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/SSLEngineBadBufferArrayAccess.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/SSLEngineBadBufferArrayAccess.java Tue Jan 28 11:21:43 2014 -0800
@@ -148,14 +148,14 @@
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" };
for (String protocol : protocols) {
- log("Testing " + protocol);
/*
* Run the tests with direct and indirect buffers.
*/
- SSLEngineBadBufferArrayAccess test =
- new SSLEngineBadBufferArrayAccess(protocol);
- test.runTest(true);
- test.runTest(false);
+ log("Testing " + protocol + ":true");
+ new SSLEngineBadBufferArrayAccess(protocol).runTest(true);
+
+ log("Testing " + protocol + ":false");
+ new SSLEngineBadBufferArrayAccess(protocol).runTest(false);
}
System.out.println("Test Passed.");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509KeyManager/PreferredKey.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509KeyManager/PreferredKey.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 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
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/*
* @test
* @bug 6302644
* @summary X509KeyManager implementation for NewSunX509 doesn't return most
* preferable key
+ * @run main/othervm PreferredKey
*/
import java.io.*;
import java.net.*;
@@ -49,6 +56,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
KeyStore ks;
KeyManagerFactory kmf;
X509KeyManager km;
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/BasicConstraints.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/BasicConstraints.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -21,14 +21,16 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 7166570
* @summary JSSE certificate validation has started to fail for
* certificate chains
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @run main/othervm BasicConstraints PKIX
* @run main/othervm BasicConstraints SunX509
*/
@@ -37,6 +39,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.*;
@@ -454,6 +457,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/PKIXExtendedTM.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/PKIXExtendedTM.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -21,21 +21,23 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
/*
* @test
* @bug 6916074
* @summary Add support for TLS 1.2
* @run main/othervm PKIXExtendedTM
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
import java.net.*;
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -791,6 +793,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SelfIssuedCert.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SelfIssuedCert.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -21,15 +21,17 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 6822460
* @summary support self-issued certificate
* @run main/othervm SelfIssuedCert PKIX
* @run main/othervm SelfIssuedCert SunX509
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -37,6 +39,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -302,6 +305,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SunX509ExtendedTM.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SunX509ExtendedTM.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -21,20 +21,23 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 6916074
* @summary Add support for TLS 1.2
* @run main/othervm SunX509ExtendedTM
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
import java.net.*;
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -792,6 +795,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/CriticalSubjectAltName.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/CriticalSubjectAltName.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, 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
@@ -21,18 +21,21 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 6668231
* @summary Presence of a critical subjectAltName causes JSSE's SunX509 to
* fail trusted checks
* @run main/othervm CriticalSubjectAltName
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
- *
* @author Xuelei Fan
- *
+ */
+
+/*
* This test depends on binary keystore, crisubn.jks and trusted.jks. Because
* JAVA keytool cannot generate X509 certificate with SubjectAltName extension,
* the certificates are generated with openssl toolkits and then imported into
@@ -47,6 +50,7 @@
import java.io.*;
import java.net.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.cert.Certificate;
public class CriticalSubjectAltName implements HostnameVerifier {
@@ -154,6 +158,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
String keyFilename =
System.getProperty("test.src", "./") + "/" + pathToStores +
"/" + keyStoreFile;
--- a/jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLSocketSNISensitive.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLSocketSNISensitive.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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,6 +44,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -431,6 +432,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/EmptyCertificateAuthorities.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/EmptyCertificateAuthorities.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -23,15 +23,16 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 4873188
* @summary Support TLS 1.1
* @run main/othervm EmptyCertificateAuthorities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
- *
* @author Xuelei Fan
*/
@@ -228,6 +229,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
String keyFilename =
System.getProperty("test.src", ".") + "/" + pathToStores +
"/" + keyStoreFile;
--- a/jdk/test/sun/security/ssl/sanity/ciphersuites/CipherSuitesInOrder.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/sanity/ciphersuites/CipherSuitesInOrder.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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,12 +35,28 @@
import java.util.*;
import javax.net.ssl.*;
+import java.security.Security;
public class CipherSuitesInOrder {
// supported ciphersuites
private final static List<String> supportedCipherSuites =
Arrays.<String>asList(
+ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
+ "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
+
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
"TLS_RSA_WITH_AES_256_CBC_SHA256",
@@ -75,21 +91,6 @@
"TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
"TLS_ECDH_RSA_WITH_RC4_128_SHA",
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
- "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
- "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
-
"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
--- a/jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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,10 +28,15 @@
* @author Andreas Sterbenz
* @run main/othervm/timeout=300 ClientJSSEServerJSSE
*/
+import java.security.Security;
public class ClientJSSEServerJSSE {
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CipherTest.main(new JSSEFactory(), args);
}
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @bug 6766775
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @run main/othervm DNSIdentities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -743,6 +746,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @bug 6766775
* @run main/othervm IPAddressIPIdentities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -744,6 +747,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @bug 6766775
* @run main/othervm IPIdentities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -743,6 +746,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @bug 6766775
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @run main/othervm Identities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -743,6 +746,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java Tue Jan 28 11:21:43 2014 -0800
@@ -239,13 +239,13 @@
" -J-Djava.security.egd=file:/dev/./urandom" +
" -debug -keystore " + TSKS + " -storepass changeit" +
" -tsa http://localhost:" + port + "/%d" +
- " -signedjar new.jar " + JAR + " old";
+ " -signedjar new_%d.jar " + JAR + " old";
} else {
cmd = System.getProperty("java.home") + "/bin/jarsigner" +
" -J-Djava.security.egd=file:/dev/./urandom" +
" -debug -keystore " + TSKS + " -storepass changeit" +
" -tsa http://localhost:" + port + "/%d" +
- " -signedjar new.jar " + JAR + " old";
+ " -signedjar new_%d.jar " + JAR + " old";
}
try {
@@ -280,7 +280,7 @@
static void jarsigner(String cmd, int path, boolean expected)
throws Exception {
System.err.println("Test " + path);
- Process p = Runtime.getRuntime().exec(String.format(cmd, path));
+ Process p = Runtime.getRuntime().exec(String.format(cmd, path, path));
BufferedReader reader = new BufferedReader(
new InputStreamReader(p.getErrorStream()));
while (true) {
@@ -288,9 +288,25 @@
if (s == null) break;
System.err.println(s);
}
+
+ // Will not see noTimestamp warning
+ boolean seeWarning = false;
+ reader = new BufferedReader(
+ new InputStreamReader(p.getInputStream()));
+ while (true) {
+ String s = reader.readLine();
+ if (s == null) break;
+ System.err.println(s);
+ if (s.indexOf("Warning:") >= 0) {
+ seeWarning = true;
+ }
+ }
int result = p.waitFor();
if (expected && result != 0 || !expected && result == 0) {
throw new Exception("Failed");
}
+ if (seeWarning) {
+ throw new Exception("See warning");
+ }
}
}
--- a/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh Tue Jan 28 11:21:43 2014 -0800
@@ -139,7 +139,6 @@
# 16 and 32 already covered in the first part
# ==========================================================
-$KT -genkeypair -alias expiring -dname CN=expiring -startdate -1m
$KT -genkeypair -alias expired -dname CN=expired -startdate -10m
$KT -genkeypair -alias notyetvalid -dname CN=notyetvalid -startdate +1m
$KT -genkeypair -alias badku -dname CN=badku -ext KU=cRLSign -validity 365
@@ -154,9 +153,6 @@
$KT -importcert -alias badchain
$KT -delete -alias ca
-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar expiring
-[ $? = 2 ] || exit $LINENO
-
$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar expired
[ $? = 4 ] || exit $LINENO
--- a/jdk/test/sun/security/tools/jarsigner/ts.sh Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/security/tools/jarsigner/ts.sh Tue Jan 28 11:21:43 2014 -0800
@@ -22,7 +22,7 @@
#
# @test
-# @bug 6543842 6543440 6939248 8009636
+# @bug 6543842 6543440 6939248 8009636 8024302
# @summary checking response of timestamp
#
# @run shell/timeout=600 ts.sh
@@ -53,7 +53,7 @@
JAR="${TESTJAVA}${FS}bin${FS}jar"
JAVA="${TESTJAVA}${FS}bin${FS}java"
JAVAC="${TESTJAVA}${FS}bin${FS}javac"
-KT="${TESTJAVA}${FS}bin${FS}keytool -keystore tsks -storepass changeit -keypass changeit -keyalg rsa"
+KT="${TESTJAVA}${FS}bin${FS}keytool -keystore tsks -storepass changeit -keypass changeit -keyalg rsa -validity 200"
rm tsks
echo Nothing > A
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/tools/jarsigner/warnings.sh Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,119 @@
+#
+# Copyright (c) 2013, 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 8024302
+# @bug 8026037
+# @summary Clarify jar verifications
+#
+
+if [ "${TESTJAVA}" = "" ] ; then
+ JAVAC_CMD=`which javac`
+ TESTJAVA=`dirname $JAVAC_CMD`/..
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+ Windows_* )
+ FS="\\"
+ ;;
+ * )
+ FS="/"
+ ;;
+esac
+
+KS=warnings.jks
+JFILE=warnings.jar
+
+KT="$TESTJAVA${FS}bin${FS}keytool -storepass changeit -keypass changeit \
+ -keystore $KS"
+JAR=$TESTJAVA${FS}bin${FS}jar
+JARSIGNER="$TESTJAVA${FS}bin${FS}jarsigner -keystore $KS -storepass changeit"
+
+rm $KS 2> /dev/null
+
+LANG=C
+export LANG
+
+echo 12345 > file
+
+ERR=""
+
+# Normal signer expiring on 2100-01-01
+$KT -alias s1 -dname CN=s1 -genkey -startdate 2000/01/01 -validity 36525 || ERR="$ERR keytool s1,"
+# Cert expiring soon, informational warning
+$KT -alias s2 -dname CN=s2 -genkey -validity 100 || ERR="$ERR keytool s2,"
+# Cert expired, severe warning
+$KT -alias s3 -dname CN=s3 -genkey -startdate -200d -validity 100 || ERR="$ERR keytool s3,"
+
+# noTimestamp is informatiional warning and includes a date
+$JAR cvf $JFILE file
+$JARSIGNER $JFILE s1 > output1 || ERR="$ERR jarsigner s1,"
+$JARSIGNER -strict $JFILE s1 >> output1 || ERR="$ERR jarsigner s1 strict,"
+$JARSIGNER -verify $JFILE s1 >> output1 || ERR="$ERR jarsigner s1,"
+$JARSIGNER -verify -strict $JFILE s1 >> output1 || ERR="$ERR jarsigner s1 strict,"
+
+cat output1 | grep Warning || ERR="$ERR s1 warning,"
+cat output1 | grep Error && ERR="$ERR s1 error,"
+cat output1 | grep timestamp | grep 2100-01-01 || ERR="$ERR s1 timestamp,"
+cat output1 | grep "with signer errors" && ERR="$ERR s1 err,"
+
+# hasExpiringCert is informatiional warning
+$JAR cvf $JFILE file
+$JARSIGNER $JFILE s2 > output2 || ERR="$ERR jarsigner s2,"
+$JARSIGNER -strict $JFILE s2 >> output2 || ERR="$ERR jarsigner s2 strict,"
+$JARSIGNER -verify $JFILE s2 >> output2 || ERR="$ERR jarsigner s2,"
+$JARSIGNER -verify -strict $JFILE s2 >> output2 || ERR="$ERR jarsigner s2 strict,"
+
+cat output2 | grep Warning || ERR="$ERR s2 warning,"
+cat output2 | grep Error && ERR="$ERR s2 error,"
+cat output2 | grep timestamp || ERR="$ERR s2 timestamp,"
+cat output2 | grep "will expire" || ERR="$ERR s2 expiring,"
+cat output2 | grep "with signer errors" && ERR="$ERR s2 err,"
+
+# hasExpiredCert is severe warning
+$JAR cvf $JFILE file
+$JARSIGNER $JFILE s3 > output3 || ERR="$ERR jarsigner s3,"
+$JARSIGNER -strict $JFILE s3 > output3s && ERR="$ERR jarsigner s3 strict,"
+$JARSIGNER -verify $JFILE s3 >> output3 || ERR="$ERR jarsigner s3,"
+$JARSIGNER -verify -strict $JFILE s3 >> output3s && ERR="$ERR jarsigner s3 strict,"
+
+# warning without -strict
+cat output3 | grep Warning || ERR="$ERR s3 warning,"
+cat output3 | grep Error && ERR="$ERR s3 error,"
+cat output3 | grep "with signer errors" && ERR="$ERR s3 err,"
+
+# error with -strict
+cat output3s | grep Warning || ERR="$ERR s3s warning,"
+cat output3s | grep Error || ERR="$ERR s3s error,"
+cat output3s | grep "with signer errors" || ERR="$ERR s3 err,"
+
+if [ "$ERR" = "" ]; then
+ exit 0
+else
+ echo "ERR is $ERR"
+ exit 1
+fi
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jcmd/TestJcmdDefaults.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2011, 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 static jdk.testlibrary.Asserts.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import jdk.testlibrary.JcmdBase;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.Utils;
+
+/**
+ * Unit test for jcmd utility. Tests jcmd options which do not send
+ * requests to a specific JVM process.
+ */
+/*
+ * @test
+ * @bug 7104647
+ * @library /lib/testlibrary
+ * @run main TestJcmdDefaults
+ */
+public class TestJcmdDefaults {
+
+ private static final String TEST_SRC = System.getProperty("test.src").trim();
+ private static final String[] VM_ARGS = new String[] { "-XX:+UsePerfData" };
+ private static final String JCMD_LIST_REGEX = "^\\d+\\s*.*";
+
+ public static void main(String[] args) throws Exception {
+ testJcmdUsage("-h");
+ testJcmdUsage("-help");
+ testJcmdDefaults();
+ testJcmdDefaults("-l");
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData -h
+ * jcmd -J-XX:+UsePerfData -help
+ */
+ private static void testJcmdUsage(String... jcmdArgs) throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmdNoPid(VM_ARGS, jcmdArgs);
+
+ assertNotEquals(output.getExitValue(), 0);
+ verifyOutputAgainstFile(output);
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData
+ * jcmd -J-XX:+UsePerfData -l
+ */
+ private static void testJcmdDefaults(String... jcmdArgs) throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmdNoPid(VM_ARGS, jcmdArgs);
+
+ output.shouldHaveExitValue(0);
+ output.shouldContain("sun.tools.jcmd.JCmd");
+ matchListedProcesses(output);
+ }
+
+ /**
+ * Verifies the listed processes match a certain pattern.
+ *
+ * The output should look like:
+ * 12246 sun.tools.jcmd.JCmd
+ * 24428 com.sun.javatest.regtest.MainWrapper /tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/TestJcmdDefaults.jta
+ *
+ * @param output The generated output from the jcmd.
+ * @throws Exception
+ */
+ private static void matchListedProcesses(OutputAnalyzer output) throws Exception {
+ int matchedCount = output.shouldMatchByLine(JCMD_LIST_REGEX);
+ assertGreaterThan(matchedCount , 0,
+ "Found no lines matching pattern: " + JCMD_LIST_REGEX);
+ }
+
+ private static void verifyOutputAgainstFile(OutputAnalyzer output) throws IOException {
+ File file = new File(TEST_SRC, "usage.out");
+ List<String> fileOutput = Utils.fileAsList(file);
+ List<String> outputAsLines = output.asLines();
+ assertTrue(outputAsLines.containsAll(fileOutput),
+ "The ouput should contain all content of " + file.getAbsolutePath());
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jcmd/TestJcmdSanity.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2011, 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 static jdk.testlibrary.Asserts.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import jdk.testlibrary.JcmdBase;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+import jdk.testlibrary.Utils;
+
+/**
+ * Unit test for jcmd utility. The test will send different diagnostic command
+ * requests to the current java process.
+ */
+/*
+ * @test
+ * @bug 7104647 7154822
+ * @library /lib/testlibrary
+ * @run main TestJcmdSanity
+ */
+public class TestJcmdSanity {
+
+ private static final String TEST_SRC = System.getProperty("test.src").trim();
+ private static final String[] VM_ARGS = new String[] { "-XX:+UsePerfData" };
+ private static final String JCMD_COMMAND_REGEX = "(\\w|\\.)*";
+ private static final String PERF_COUNTER_REGEX = "(\\w|\\.)*\\=.*";
+
+ public static void main(String[] args) throws Exception {
+ testJcmdPidHelp();
+ testJcmdPidHelpHelp();
+ testJcmdPid_f();
+ testJcmdPidPerfCounterPrint();
+ testJcmdPidBigScript();
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid help
+ */
+ private static void testJcmdPidHelp() throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"help"});
+
+ output.shouldHaveExitValue(0);
+ output.shouldNotContain("Exception");
+ output.shouldContain(Integer.toString(ProcessTools.getProcessId()) + ":");
+ matchJcmdCommands(output);
+ output.shouldContain("For more information about a specific command use 'help <command>'.");
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid help help
+ */
+ private static void testJcmdPidHelpHelp() throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"help", "help"});
+
+ output.shouldHaveExitValue(0);
+ verifyOutputAgainstFile(output);
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid PerfCounter.print
+ */
+ private static void testJcmdPidPerfCounterPrint() throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"PerfCounter.print"});
+
+ output.shouldHaveExitValue(0);
+ matchPerfCounters(output);
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid -f dcmd-script.txt
+ */
+ private static void testJcmdPid_f() throws Exception {
+ File scrpitFile = new File(TEST_SRC, "dcmd-script.txt");
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"-f", scrpitFile.getAbsolutePath()});
+
+ output.shouldHaveExitValue(0);
+ verifyOutputAgainstFile(output);
+ }
+
+ /**
+ * Tests that it possible send a file over 1024 bytes large via jcmd -f.
+ *
+ * jcmd -J-XX:+UsePerfData pid -f dcmd-big-script.txt
+ */
+ private static void testJcmdPidBigScript() throws Exception {
+ File scrpitFile = new File(TEST_SRC, "dcmd-big-script.txt");
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"-f", scrpitFile.getAbsolutePath()});
+
+ output.shouldHaveExitValue(0);
+ output.shouldNotContain("Exception");
+ output.shouldContain(System.getProperty("java.vm.name").trim());
+ }
+
+ /**
+ * Verifies the listed jcmd commands match a certain pattern.
+ *
+ * The output of the jcmd commands should look like:
+ * VM.uptime
+ * VM.flags
+ * VM.system_properties
+ *
+ * @param output The generated output from the jcmd.
+ * @throws Exception
+ */
+ private static void matchJcmdCommands(OutputAnalyzer output) throws Exception {
+ int matchedCount = output.shouldMatchByLine(JCMD_COMMAND_REGEX,
+ "help",
+ JCMD_COMMAND_REGEX);
+ assertGreaterThan(matchedCount , 0,
+ "Found no lines matching pattern: " + JCMD_COMMAND_REGEX);
+ }
+
+ /**
+ * Verifies the generated output from the PerfCounter.print command
+ * matches a certain pattern.
+ *
+ * The output of perf counters should look like:
+ * java.property.java.vm.name="Java HotSpot(TM) 64-Bit Server VM"
+ * java.threads.daemon=7
+ * sun.rt.javaCommand="com.sun.javatest.regtest.MainWrapper /tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/TestJcmdSanity.jta"
+ *
+ * @param output The generated output from the PerfCounter.print command.
+ * @throws Exception
+ */
+ private static void matchPerfCounters(OutputAnalyzer output) throws Exception {
+ int matchedCount = output.shouldMatchByLineFrom(PERF_COUNTER_REGEX,
+ PERF_COUNTER_REGEX);
+ assertGreaterThan(matchedCount , 0,
+ "Found no lines matching pattern: " + PERF_COUNTER_REGEX);
+ }
+
+ private static void verifyOutputAgainstFile(OutputAnalyzer output) throws IOException {
+ File file = new File(TEST_SRC, "help_help.out");
+ List<String> fileOutput = Utils.fileAsList(file);
+ List<String> outputAsLines = output.asLines();
+ assertTrue(outputAsLines.containsAll(fileOutput),
+ "The ouput should contain all content of " + file.getAbsolutePath());
+ }
+
+}
--- a/jdk/test/sun/tools/jcmd/help_help.out Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/tools/jcmd/help_help.out Tue Jan 28 11:21:43 2014 -0800
@@ -1,7 +1,7 @@
help
For more information about a specific command use 'help <command>'. With no argument this will show a list of available commands. 'help all' will show help for all commands.
-Impact: Low
+Impact: Low
Syntax : help [options] [<command name>]
--- a/jdk/test/sun/tools/jcmd/jcmd-Defaults.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 2011, 2012, 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 7104647
-# @run shell jcmd-Defaults.sh
-# @summary Test that output of 'jcmd' and 'jcmd -l' match a specific pattern
-
-JCMD="${TESTJAVA}/bin/jcmd"
-
-${JCMD} -J-XX:+UsePerfData 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk
-
-${JCMD} -J-XX:+UsePerfData -l 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk
--- a/jdk/test/sun/tools/jcmd/jcmd-big-script.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2012, 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 7154822
-# @summary test if we can send a file over 1024 bytes large via jcmd -f
-# @author David Buck
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-big-script.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-failed=0;
-
-# -f <script>
-rm -f jcmd.out 2>/dev/null
-set +e # even if jcmd fails, we do not want abort the script yet.
-${JCMD} -J-XX:+UsePerfData $appJavaPid -f ${TESTSRC}/dcmd-big-script.txt > jcmd.out 2>&1
-status="$?"
-set -e
-if [ "$status" != 0 ]; then
- echo "jcmd command returned non-zero exit code (status=$status). Failed."
- failed=1;
-fi
-cat jcmd.out
-set +e # if the test passes, grep will "fail" with an exit code of 1
-grep Exception jcmd.out > /dev/null 2>&1
-status="$?"
-set -e
-if [ "$status" = 0 ]; then
- echo "Output of \"jcmd [pid] -f dcmd-big-script.txt\" contains string \"Exception\". Failed."
- failed=1;
-fi
-
-# clean up
-rm -f jcmd.out 2>/dev/null
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd-f.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2011, 2012, 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 7104647
-# @summary Unit test for jcmd utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-f.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# -f <script>
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData $appJavaPid -f ${TESTSRC}/dcmd-script.txt | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1
-echo jcmd.out
-diff -w jcmd.out ${TESTSRC}/help_help.out
-if [ $? != 0 ]; then
- echo "Output of jcmd [pid] -f dcmd-script.txt differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- failed=1;
-fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd-help-help.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2011, 2012, 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 7104647
-# @summary Unit test for jcmd utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-help-help.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# help help
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData $appJavaPid help help | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1
-echo jcmd.out
-diff -w jcmd.out ${TESTSRC}/help_help.out
-if [ $? != 0 ]; then
- echo "Output of jcmd [pid] help help differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- failed=1;
-fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd-help.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-#
-# Copyright (c) 2011, 2012, 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 7104647
-# @run shell jcmd-help.sh
-# @summary Test that output of 'jcmd -h' matches the usage.out file
-
-JCMD="${TESTJAVA}/bin/jcmd"
-
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData -h > jcmd.out 2>&1
-
-diff -w jcmd.out ${TESTSRC}/usage.out
-if [ $? != 0 ]
-then
- echo "Output of jcmd -h differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- exit 1
-fi
-
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData -help > jcmd.out 2>&1
-
-diff -w jcmd.out ${TESTSRC}/usage.out
-if [ $? != 0 ]
-then
- echo "Output of jcmd -help differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- exit 1
-fi
-
-rm -f jcmd.out 2>/dev/null
-exit 0
--- a/jdk/test/sun/tools/jcmd/jcmd-pid.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2011, 2012, 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 7104647
-# @summary Unit test for jcmd utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-pid.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# help command
-${JCMD} -J-XX:+UsePerfData $appJavaPid help 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output1.awk
-if [ $? != 0 ]; then failed=1; fi
-
-# PerfCounter.list option
-${JCMD} -J-XX:+UsePerfData $appJavaPid PerfCounter.print 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output2.awk
-if [ $? != 0 ]; then failed=1; fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd_Output1.awk Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-#
-BEGIN {
- totallines=0; matched=0; current=0
- }
-
-# match on a main class name followed by arbitrary arguments
-/^[0-9]+ [a-z|A-Z][a-z|A-Z|0-9|\.]*($| .*$)/ {
- current=1;
- }
-
-# or match on a path name to a jar or war file followed by arbitraty arguments
-# - note, jar files ending with ".jar" is only a convention, not a requirement.
-#Theoretically, any valid file name could occur here.
-/^[0-9]+ .*\.(jar|war)($| .*$)/ {
- current=1;
-}
-
-# or match on the condition that the class name is not available
-/^[0-9]+ -- .*$/ {
- current=1;
- }
-
-# or match an empty class name
-/^[0-9]+ $/ {
- current=1;
- }
-
- { totallines++; matched+=current; current=0; print $0 }
-
-END {
- if ((totallines > 0) && (matched == totallines)) {
- exit 0
- }
- else {
- exit 1
- }
- }
--- a/jdk/test/sun/tools/jcmd/jcmd_pid_Output1.awk Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-
-# section 0 = [PID]:
-# section 1 = "The following commands are available:"
-# section 2 = <list of commands, one command per line>
-# section 3 = blank line
-# section 4 = "For more information about a specific command use 'help <command>'."
-
-BEGIN {
- totallines=0; matched=0; section=0;
-}
-
-# match the first line (PID of the JVM followed by ':')
-/^[0-9]+:/{
- if(section==0) {
- matched++;
- section=1;
- }
-}
-
-/^The following commands are available:$/{
- if(section==1) {
- matched++;
- section=2;
- }
-}
-
-# match a command name
-/^[a-z|A-Z][a-z|A-Z|0-9|\.|_]*$/{
- if(section==2) {
- matched++;
- }
-}
-
-/^$/{
- if(section==2) {
- matched++;
- section=4;
- }
-}
-
-/^For more information about a specific command use 'help <command>'\.$/{
- if(section==4) {
- matched++;
- section=5;
- }
-}
-
-{ totallines++; print $0 }
-
-END {
- if ((totallines > 0) && (matched == totallines)) {
- exit 0
- }
- else {
- exit 1
- }
-}
--- a/jdk/test/sun/tools/jcmd/jcmd_pid_Output2.awk Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#
-BEGIN {
- totallines=0; matched=0
- }
-
-# match on counter name followed '=' and an arbitrary value
-/^[a-z|A-Z][a-z|A-Z|0-9|\.|_]*=.*$/ {
- matched++;
- }
-
-# or match the first line (PID of the JVM followed by ':')
-/^[0-9]+:/ {
- matched++;
- }
-
- { totallines++; print $0 }
-
-END {
- if ((totallines > 0) && (matched == totallines)) {
- exit 0
- }
- else {
- exit 1
- }
-}
--- a/jdk/test/sun/tools/jcmd/usage.out Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/tools/jcmd/usage.out Tue Jan 28 11:21:43 2014 -0800
@@ -1,15 +1,15 @@
Usage: jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
- or: jcmd -l
- or: jcmd -h
+ or: jcmd -l
+ or: jcmd -h
- command must be a valid jcmd command for the selected jvm.
+ command must be a valid jcmd command for the selected jvm.
Use the command "help" to see which commands are available.
If the pid is 0, commands will be sent to all Java processes.
The main class argument will be used to match (either partially
or fully) the class used to start Java.
If no options are given, lists Java processes (same as -p).
- PerfCounter.print display the counters exposed by this process
+ PerfCounter.print display the counters exposed by this process
-f read and execute commands from the file
-l list JVM processes on the local machine
-h this help
--- a/jdk/test/sun/tools/jmap/Basic.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 2011, 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 6321286
-# @summary Unit test for jmap utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell Basic.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# -histo[:live] option
-${JMAP} -J-XX:+UsePerfData -histo $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-${JMAP} -J-XX:+UsePerfData -histo:live $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-# -dump option
-DUMPFILE="java_pid${appJavaPid}.hprof"
-${JMAP} -J-XX:+UsePerfData -dump:format=b,file=${DUMPFILE} $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-# check that heap dump is parsable
-${JHAT} -parseonly true ${DUMPFILE}
-if [ $? != 0 ]; then failed=1; fi
-
-# dump file is large so remove it
-rm ${DUMPFILE}
-
-# -dump:live option
-${JMAP} -J-XX:+UsePerfData -dump:live,format=b,file=${DUMPFILE} $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-# check that heap dump is parsable
-${JHAT} -parseonly true ${DUMPFILE}
-if [ $? != 0 ]; then failed=1; fi
-
-# dump file is large so remove it
-rm -f ${DUMPFILE}
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jmap/BasicJMapTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,99 @@
+/*
+ * 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
+ * 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.io.File;
+import java.util.Arrays;
+
+import static jdk.testlibrary.Asserts.*;
+import jdk.testlibrary.JDKToolLauncher;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+
+/*
+ * @test
+ * @bug 6321286
+ * @summary Unit test for jmap utility
+ * @library /lib/testlibrary
+ * @run main BasicJMapTest
+ */
+public class BasicJMapTest {
+
+ private static ProcessBuilder processBuilder = new ProcessBuilder();
+
+ public static void main(String[] args) throws Exception {
+ testHisto();
+ testHistoLive();
+ testDump();
+ testDumpLive();
+ }
+
+ private static void testHisto() throws Exception {
+ OutputAnalyzer output = jmap("-histo");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testHistoLive() throws Exception {
+ OutputAnalyzer output = jmap("-histo:live");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testDump() throws Exception {
+ File dump = new File("java_pid$" + ProcessTools.getProcessId() + ".hprof");
+ OutputAnalyzer output = jmap("-dump:format=b,file=" + dump.getName());
+ output.shouldHaveExitValue(0);
+ output.shouldContain("Heap dump file created");
+ verifyDumpFile(dump);
+ }
+
+ private static void testDumpLive() throws Exception {
+ File dump = new File("java_pid$" + ProcessTools.getProcessId() + ".hprof");
+ OutputAnalyzer output = jmap("-dump:live,format=b,file=" + dump.getName());
+ output.shouldHaveExitValue(0);
+ output.shouldContain("Heap dump file created");
+ verifyDumpFile(dump);
+ }
+
+ private static void verifyDumpFile(File dump) {
+ assertTrue(dump.exists() && dump.isFile(), "Could not create dump file");
+ dump.delete();
+ }
+
+ private static OutputAnalyzer jmap(String... toolArgs) throws Exception {
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jmap");
+ launcher.addVMArg("-XX:+UsePerfData");
+ if (toolArgs != null) {
+ for (String toolArg : toolArgs) {
+ launcher.addToolArg(toolArg);
+ }
+ }
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+
+ processBuilder.command(launcher.getCommand());
+ System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
+ OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
+ System.out.println(output.getOutput());
+
+ return output;
+ }
+
+}
--- a/jdk/test/sun/tools/jstack/Basic.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 2011, 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 6260070
-# @summary Unit test for jstack utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell Basic.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# normal
-$JSTACK -J-XX:+UsePerfData $appJavaPid 2>&1
-if [ $? != 0 ]; then failed=1; fi
-
-# long
-$JSTACK -J-XX:+UsePerfData -l $appJavaPid 2>&1
-if [ $? != 0 ]; then failed=1; fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jstack/BasicJStackTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,74 @@
+/*
+ * 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
+ * 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.util.Arrays;
+
+import jdk.testlibrary.JDKToolLauncher;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+
+/*
+ * @test
+ * @bug 6260070
+ * @summary Unit test for jstack utility
+ * @library /lib/testlibrary
+ * @run main BasicJStackTest
+ */
+public class BasicJStackTest {
+
+ private static ProcessBuilder processBuilder = new ProcessBuilder();
+
+ public static void main(String[] args) throws Exception {
+ testJstackNoArgs();
+ testJstack_l();
+ }
+
+ private static void testJstackNoArgs() throws Exception {
+ OutputAnalyzer output = jstack();
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testJstack_l() throws Exception {
+ OutputAnalyzer output = jstack("-l");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static OutputAnalyzer jstack(String... toolArgs) throws Exception {
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jstack");
+ launcher.addVMArg("-XX:+UsePerfData");
+ if (toolArgs != null) {
+ for (String toolArg : toolArgs) {
+ launcher.addToolArg(toolArg);
+ }
+ }
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+
+ processBuilder.command(launcher.getCommand());
+ System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
+ OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
+ System.out.println(output.getOutput());
+
+ return output;
+ }
+
+}
--- a/jdk/test/sun/util/resources/TimeZone/Bug6317929.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/sun/util/resources/TimeZone/Bug6317929.java Tue Jan 28 11:21:43 2014 -0800
@@ -130,12 +130,12 @@
"(New South Wales)\"");
tzLocale = locales2Test[1];
if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals
- ("Eastern Normalzeit (Neus\u00fcdwales)"))
+ ("\u00D6stliche Normalzeit (New South Wales)"))
throw new RuntimeException("\n" + tzLocale + ": LONG, " +
"non-daylight saving name for " +
"Australia/Currie should be " +
- "\"Eastern Normalzeit " +
- "(Neus\u00fcdwales)\"");
+ "\"\u00D6stliche Normalzeit " +
+ "(New South Wales)\"");
tzLocale = locales2Test[2];
if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals
("Hora est\u00e1ndar Oriental (Nueva Gales del Sur)"))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Central Summer Time (Northern Territory)
+ACT.generic.long=Central Time (Northern Territory)
+ACT.standard.long=Central Standard Time (Northern Territory)
+AET.daylight.long=Eastern Summer Time (New South Wales)
+AET.generic.long=Eastern Time (New South Wales)
+AET.standard.long=Eastern Standard Time (New South Wales)
+AGT.generic.long=Argentine Time
+ART.generic.long=Eastern European Time
+AST.generic.long=Alaska Time
+Africa/Abidjan.generic.long=Greenwich Mean Time
+Africa/Accra.generic.long=Ghana Mean Time
+Africa/Addis_Ababa.generic.long=Eastern Africa Time
+Africa/Algiers.generic.long=Central European Time
+Africa/Asmara.generic.long=Eastern Africa Time
+Africa/Asmera.generic.long=Eastern Africa Time
+Africa/Bamako.generic.long=Greenwich Mean Time
+Africa/Bangui.generic.long=Western African Time
+Africa/Banjul.generic.long=Greenwich Mean Time
+Africa/Bissau.generic.long=Greenwich Mean Time
+Africa/Blantyre.generic.long=Central Africa Time
+Africa/Brazzaville.generic.long=Western African Time
+Africa/Bujumbura.generic.long=Central Africa Time
+Africa/Cairo.generic.long=Eastern European Time
+Africa/Casablanca.generic.long=Western European Time
+Africa/Ceuta.generic.long=Central European Time
+Africa/Conakry.generic.long=Greenwich Mean Time
+Africa/Dakar.generic.long=Greenwich Mean Time
+Africa/Dar_es_Salaam.generic.long=Eastern Africa Time
+Africa/Djibouti.generic.long=Eastern Africa Time
+Africa/Douala.generic.long=Western African Time
+Africa/El_Aaiun.generic.long=Western European Time
+Africa/Freetown.generic.long=Sierra Leone Time
+Africa/Gaborone.generic.long=Central Africa Time
+Africa/Harare.generic.long=Central Africa Time
+Africa/Johannesburg.generic.long=South Africa Time
+Africa/Juba.generic.long=Eastern Africa Time
+Africa/Kampala.generic.long=Eastern Africa Time
+Africa/Khartoum.generic.long=Eastern Africa Time
+Africa/Kigali.generic.long=Central Africa Time
+Africa/Kinshasa.generic.long=Western African Time
+Africa/Lagos.generic.long=Western African Time
+Africa/Libreville.generic.long=Western African Time
+Africa/Lome.generic.long=Greenwich Mean Time
+Africa/Luanda.generic.long=Western African Time
+Africa/Lubumbashi.generic.long=Central Africa Time
+Africa/Lusaka.generic.long=Central Africa Time
+Africa/Malabo.generic.long=Western African Time
+Africa/Maputo.generic.long=Central Africa Time
+Africa/Maseru.generic.long=South Africa Time
+Africa/Mbabane.generic.long=South Africa Time
+Africa/Mogadishu.generic.long=Eastern Africa Time
+Africa/Monrovia.generic.long=Greenwich Mean Time
+Africa/Nairobi.generic.long=Eastern Africa Time
+Africa/Ndjamena.generic.long=Western African Time
+Africa/Niamey.generic.long=Western African Time
+Africa/Nouakchott.generic.long=Greenwich Mean Time
+Africa/Ouagadougou.generic.long=Greenwich Mean Time
+Africa/Porto-Novo.generic.long=Western African Time
+Africa/Sao_Tome.generic.long=Greenwich Mean Time
+Africa/Timbuktu.generic.long=Greenwich Mean Time
+Africa/Tripoli.generic.long=Eastern European Time
+Africa/Tunis.generic.long=Central European Time
+Africa/Windhoek.generic.long=Western African Time
+America/Adak.generic.long=Hawaii-Aleutian Time
+America/Anchorage.generic.long=Alaska Time
+America/Anguilla.generic.long=Atlantic Time
+America/Antigua.generic.long=Atlantic Time
+America/Araguaina.generic.long=Brasilia Time
+America/Argentina/Buenos_Aires.generic.long=Argentine Time
+America/Argentina/Catamarca.generic.long=Argentine Time
+America/Argentina/ComodRivadavia.generic.long=Argentine Time
+America/Argentina/Cordoba.generic.long=Argentine Time
+America/Argentina/Jujuy.generic.long=Argentine Time
+America/Argentina/La_Rioja.generic.long=Argentine Time
+America/Argentina/Mendoza.generic.long=Argentine Time
+America/Argentina/Rio_Gallegos.generic.long=Argentine Time
+America/Argentina/Salta.generic.long=Argentine Time
+America/Argentina/San_Juan.generic.long=Argentine Time
+America/Argentina/San_Luis.generic.long=Argentine Time
+America/Argentina/Tucuman.generic.long=Argentine Time
+America/Argentina/Ushuaia.generic.long=Argentine Time
+America/Aruba.generic.long=Atlantic Time
+America/Asuncion.generic.long=Paraguay Time
+America/Atikokan.generic.long=Eastern Time
+America/Atka.generic.long=Hawaii-Aleutian Time
+America/Bahia.generic.long=Brasilia Time
+America/Bahia_Banderas.generic.long=Central Time
+America/Barbados.generic.long=Atlantic Time
+America/Belem.generic.long=Brasilia Time
+America/Belize.generic.long=Central Time
+America/Blanc-Sablon.generic.long=Atlantic Time
+America/Boa_Vista.generic.long=Amazon Time
+America/Bogota.generic.long=Colombia Time
+America/Boise.generic.long=Mountain Time
+America/Buenos_Aires.generic.long=Argentine Time
+America/Cambridge_Bay.generic.long=Mountain Time
+America/Campo_Grande.generic.long=Amazon Time
+America/Cancun.generic.long=Central Time
+America/Caracas.generic.long=Venezuela Time
+America/Catamarca.generic.long=Argentine Time
+America/Cayenne.generic.long=French Guiana Time
+America/Cayman.generic.long=Eastern Time
+America/Chicago.generic.long=Central Time
+America/Chihuahua.generic.long=Mountain Time
+America/Coral_Harbour.generic.long=Eastern Time
+America/Cordoba.generic.long=Argentine Time
+America/Costa_Rica.generic.long=Central Time
+America/Creston.generic.long=Mountain Time
+America/Cuiaba.generic.long=Amazon Time
+America/Curacao.generic.long=Atlantic Time
+America/Danmarkshavn.generic.long=Greenwich Mean Time
+America/Dawson.generic.long=Pacific Time
+America/Dawson_Creek.generic.long=Mountain Time
+America/Denver.generic.long=Mountain Time
+America/Detroit.generic.long=Eastern Time
+America/Dominica.generic.long=Atlantic Time
+America/Edmonton.generic.long=Mountain Time
+America/Eirunepe.generic.long=Acre Time
+America/El_Salvador.generic.long=Central Time
+America/Ensenada.generic.long=Pacific Time
+America/Fort_Wayne.generic.long=Eastern Time
+America/Fortaleza.generic.long=Brasilia Time
+America/Glace_Bay.generic.long=Atlantic Time
+America/Godthab.generic.long=Western Greenland Time
+America/Goose_Bay.generic.long=Atlantic Time
+America/Grand_Turk.generic.long=Eastern Time
+America/Grenada.generic.long=Atlantic Time
+America/Guadeloupe.generic.long=Atlantic Time
+America/Guatemala.generic.long=Central Time
+America/Guayaquil.generic.long=Ecuador Time
+America/Guyana.generic.long=Guyana Time
+America/Halifax.generic.long=Atlantic Time
+America/Havana.generic.long=Cuba Time
+America/Hermosillo.generic.long=Mountain Time
+America/Indiana/Indianapolis.generic.long=Eastern Time
+America/Indiana/Knox.generic.long=Central Time
+America/Indiana/Marengo.generic.long=Eastern Time
+America/Indiana/Petersburg.generic.long=Eastern Time
+America/Indiana/Tell_City.generic.long=Central Time
+America/Indiana/Vevay.generic.long=Eastern Time
+America/Indiana/Vincennes.generic.long=Eastern Time
+America/Indiana/Winamac.generic.long=Eastern Time
+America/Indianapolis.generic.long=Eastern Time
+America/Inuvik.generic.long=Mountain Time
+America/Iqaluit.generic.long=Eastern Time
+America/Jamaica.generic.long=Eastern Time
+America/Jujuy.generic.long=Argentine Time
+America/Juneau.generic.long=Alaska Time
+America/Kentucky/Louisville.generic.long=Eastern Time
+America/Kentucky/Monticello.generic.long=Eastern Time
+America/Knox_IN.generic.long=Central Time
+America/Kralendijk.generic.long=Atlantic Time
+America/La_Paz.generic.long=Bolivia Time
+America/Lima.generic.long=Peru Time
+America/Los_Angeles.generic.long=Pacific Time
+America/Louisville.generic.long=Eastern Time
+America/Lower_Princes.generic.long=Atlantic Time
+America/Maceio.generic.long=Brasilia Time
+America/Managua.generic.long=Central Time
+America/Manaus.generic.long=Amazon Time
+America/Marigot.generic.long=Atlantic Time
+America/Martinique.generic.long=Atlantic Time
+America/Matamoros.generic.long=Central Time
+America/Mazatlan.generic.long=Mountain Time
+America/Mendoza.generic.long=Argentine Time
+America/Menominee.generic.long=Central Time
+America/Merida.generic.long=Central Time
+America/Metlakatla.daylight.long=Metlakatla Daylight Time
+America/Metlakatla.generic.long=Metlakatla Time
+America/Metlakatla.standard.long=Metlakatla Standard Time
+America/Mexico_City.generic.long=Central Time
+America/Miquelon.generic.long=Pierre & Miquelon Time
+America/Moncton.generic.long=Atlantic Time
+America/Monterrey.generic.long=Central Time
+America/Montevideo.generic.long=Uruguay Time
+America/Montreal.generic.long=Eastern Time
+America/Montserrat.generic.long=Atlantic Time
+America/Nassau.generic.long=Eastern Time
+America/New_York.generic.long=Eastern Time
+America/Nipigon.generic.long=Eastern Time
+America/Nome.generic.long=Alaska Time
+America/Noronha.generic.long=Fernando de Noronha Time
+America/North_Dakota/Beulah.generic.long=Central Time
+America/North_Dakota/Center.generic.long=Central Time
+America/North_Dakota/New_Salem.generic.long=Central Time
+America/Ojinaga.generic.long=Mountain Time
+America/Panama.generic.long=Eastern Time
+America/Pangnirtung.generic.long=Eastern Time
+America/Paramaribo.generic.long=Suriname Time
+America/Phoenix.generic.long=Mountain Time
+America/Port-au-Prince.generic.long=Eastern Time
+America/Port_of_Spain.generic.long=Atlantic Time
+America/Porto_Acre.generic.long=Acre Time
+America/Porto_Velho.generic.long=Amazon Time
+America/Puerto_Rico.generic.long=Atlantic Time
+America/Rainy_River.generic.long=Central Time
+America/Rankin_Inlet.generic.long=Central Time
+America/Recife.generic.long=Brasilia Time
+America/Regina.generic.long=Central Time
+America/Resolute.generic.long=Central Time
+America/Rio_Branco.generic.long=Acre Time
+America/Rosario.generic.long=Argentine Time
+America/Santa_Isabel.generic.long=Pacific Time
+America/Santarem.generic.long=Brasilia Time
+America/Santiago.generic.long=Chile Time
+America/Santo_Domingo.generic.long=Atlantic Time
+America/Sao_Paulo.generic.long=Brasilia Time
+America/Scoresbysund.generic.long=Eastern Greenland Time
+America/Shiprock.generic.long=Mountain Time
+America/Sitka.generic.long=Alaska Time
+America/St_Barthelemy.generic.long=Atlantic Time
+America/St_Johns.generic.long=Newfoundland Time
+America/St_Kitts.generic.long=Atlantic Time
+America/St_Lucia.generic.long=Atlantic Time
+America/St_Thomas.generic.long=Atlantic Time
+America/St_Vincent.generic.long=Atlantic Time
+America/Swift_Current.generic.long=Central Time
+America/Tegucigalpa.generic.long=Central Time
+America/Thule.generic.long=Atlantic Time
+America/Thunder_Bay.generic.long=Eastern Time
+America/Tijuana.generic.long=Pacific Time
+America/Toronto.generic.long=Eastern Time
+America/Tortola.generic.long=Atlantic Time
+America/Vancouver.generic.long=Pacific Time
+America/Virgin.generic.long=Atlantic Time
+America/Whitehorse.generic.long=Pacific Time
+America/Winnipeg.generic.long=Central Time
+America/Yakutat.generic.long=Alaska Time
+America/Yellowknife.generic.long=Mountain Time
+Antarctica/Casey.daylight.long=Western Summer Time (Australia)
+Antarctica/Casey.generic.long=Western Time (Australia)
+Antarctica/Casey.standard.long=Western Standard Time (Australia)
+Antarctica/Davis.generic.long=Davis Time
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville Time
+Antarctica/Macquarie.daylight.long=Macquarie Island Summer Time
+Antarctica/Macquarie.generic.long=Macquarie Island Time
+Antarctica/Macquarie.standard.long=Macquarie Island Time
+Antarctica/Mawson.generic.long=Mawson Time
+Antarctica/McMurdo.generic.long=New Zealand Time
+Antarctica/Palmer.generic.long=Chile Time
+Antarctica/Rothera.generic.long=Rothera Time
+Antarctica/South_Pole.generic.long=New Zealand Time
+Antarctica/Syowa.generic.long=Syowa Time
+Antarctica/Vostok.generic.long=Vostok Time
+Arctic/Longyearbyen.generic.long=Central European Time
+Asia/Aden.generic.long=Arabia Time
+Asia/Almaty.generic.long=Alma-Ata Time
+Asia/Amman.generic.long=Arabia Time
+Asia/Anadyr.generic.long=Anadyr Time
+Asia/Aqtau.generic.long=Aqtau Time
+Asia/Aqtobe.generic.long=Aqtobe Time
+Asia/Ashgabat.generic.long=Turkmenistan Time
+Asia/Ashkhabad.generic.long=Turkmenistan Time
+Asia/Baghdad.generic.long=Arabia Time
+Asia/Bahrain.generic.long=Arabia Time
+Asia/Baku.generic.long=Azerbaijan Time
+Asia/Bangkok.generic.long=Indochina Time
+Asia/Beirut.generic.long=Eastern European Time
+Asia/Bishkek.generic.long=Kirgizstan Time
+Asia/Brunei.generic.long=Brunei Time
+Asia/Calcutta.generic.long=India Time
+Asia/Choibalsan.generic.long=Choibalsan Time
+Asia/Chongqing.generic.long=China Time
+Asia/Chungking.generic.long=China Time
+Asia/Colombo.generic.long=India Time
+Asia/Dacca.generic.long=Bangladesh Time
+Asia/Damascus.generic.long=Eastern European Time
+Asia/Dhaka.generic.long=Bangladesh Time
+Asia/Dili.generic.long=Timor-Leste Time
+Asia/Dubai.generic.long=Gulf Time
+Asia/Dushanbe.generic.long=Tajikistan Time
+Asia/Gaza.generic.long=Eastern European Time
+Asia/Harbin.generic.long=China Time
+Asia/Hebron.generic.long=Eastern European Time
+Asia/Ho_Chi_Minh.generic.long=Indochina Time
+Asia/Hong_Kong.generic.long=Hong Kong Time
+Asia/Hovd.generic.long=Hovd Time
+Asia/Irkutsk.generic.long=Irkutsk Time
+Asia/Istanbul.generic.long=Eastern European Time
+Asia/Jakarta.generic.long=West Indonesia Time
+Asia/Jayapura.generic.long=East Indonesia Time
+Asia/Jerusalem.generic.long=Israel Time
+Asia/Kabul.generic.long=Afghanistan Time
+Asia/Kamchatka.generic.long=Petropavlovsk-Kamchatski Time
+Asia/Karachi.generic.long=Pakistan Time
+Asia/Kashgar.generic.long=China Time
+Asia/Kathmandu.generic.long=Nepal Time
+Asia/Katmandu.generic.long=Nepal Time
+Asia/Khandyga.daylight.long=Khandyga Summer Time
+Asia/Khandyga.generic.long=Khandyga Time
+Asia/Khandyga.standard.long=Khandyga Time
+Asia/Kolkata.generic.long=India Time
+Asia/Krasnoyarsk.generic.long=Krasnoyarsk Time
+Asia/Kuala_Lumpur.generic.long=Malaysia Time
+Asia/Kuching.generic.long=Malaysia Time
+Asia/Kuwait.generic.long=Arabia Time
+Asia/Macao.generic.long=China Time
+Asia/Macau.generic.long=China Time
+Asia/Magadan.generic.long=Magadan Time
+Asia/Makassar.generic.long=Central Indonesia Time
+Asia/Manila.generic.long=Philippines Time
+Asia/Muscat.generic.long=Gulf Time
+Asia/Nicosia.generic.long=Eastern European Time
+Asia/Novokuznetsk.generic.long=Novosibirsk Time
+Asia/Novosibirsk.generic.long=Novosibirsk Time
+Asia/Omsk.generic.long=Omsk Time
+Asia/Oral.generic.long=Oral Time
+Asia/Phnom_Penh.generic.long=Indochina Time
+Asia/Pontianak.generic.long=West Indonesia Time
+Asia/Pyongyang.generic.long=Korea Time
+Asia/Qatar.generic.long=Arabia Time
+Asia/Qyzylorda.generic.long=Qyzylorda Time
+Asia/Rangoon.generic.long=Myanmar Time
+Asia/Saigon.generic.long=Indochina Time
+Asia/Sakhalin.generic.long=Sakhalin Time
+Asia/Samarkand.generic.long=Uzbekistan Time
+Asia/Seoul.generic.long=Korea Time
+Asia/Shanghai.generic.long=China Time
+Asia/Singapore.generic.long=Singapore Time
+Asia/Taipei.generic.long=China Time
+Asia/Tashkent.generic.long=Uzbekistan Time
+Asia/Tbilisi.generic.long=Georgia Time
+Asia/Tehran.generic.long=Iran Time
+Asia/Tel_Aviv.generic.long=Israel Time
+Asia/Thimbu.generic.long=Bhutan Time
+Asia/Thimphu.generic.long=Bhutan Time
+Asia/Tokyo.generic.long=Japan Time
+Asia/Ujung_Pandang.generic.long=Central Indonesia Time
+Asia/Ulaanbaatar.generic.long=Ulaanbaatar Time
+Asia/Ulan_Bator.generic.long=Ulaanbaatar Time
+Asia/Urumqi.generic.long=China Time
+Asia/Ust-Nera.daylight.long=Ust-Nera Summer Time
+Asia/Ust-Nera.generic.long=Ust-Nera Time
+Asia/Ust-Nera.standard.long=Ust-Nera Time
+Asia/Vientiane.generic.long=Indochina Time
+Asia/Vladivostok.generic.long=Vladivostok Time
+Asia/Yakutsk.generic.long=Yakutsk Time
+Asia/Yekaterinburg.generic.long=Yekaterinburg Time
+Asia/Yerevan.generic.long=Armenia Time
+Atlantic/Azores.generic.long=Azores Time
+Atlantic/Bermuda.generic.long=Atlantic Time
+Atlantic/Canary.generic.long=Western European Time
+Atlantic/Cape_Verde.generic.long=Cape Verde Time
+Atlantic/Faeroe.generic.long=Western European Time
+Atlantic/Faroe.generic.long=Western European Time
+Atlantic/Jan_Mayen.generic.long=Central European Time
+Atlantic/Madeira.generic.long=Western European Time
+Atlantic/Reykjavik.generic.long=Greenwich Mean Time
+Atlantic/South_Georgia.generic.long=South Georgia Time
+Atlantic/St_Helena.generic.long=Greenwich Mean Time
+Atlantic/Stanley.generic.long=Falkland Is. Time
+Australia/ACT.daylight.long=Eastern Summer Time (New South Wales)
+Australia/ACT.generic.long=Eastern Time (New South Wales)
+Australia/ACT.standard.long=Eastern Standard Time (New South Wales)
+Australia/Adelaide.daylight.long=Central Summer Time (South Australia)
+Australia/Adelaide.generic.long=Central Time (South Australia)
+Australia/Adelaide.standard.long=Central Standard Time (South Australia)
+Australia/Brisbane.daylight.long=Eastern Summer Time (Queensland)
+Australia/Brisbane.generic.long=Eastern Time (Queensland)
+Australia/Brisbane.standard.long=Eastern Standard Time (Queensland)
+Australia/Broken_Hill.daylight.long=Central Summer Time (South Australia/New South Wales)
+Australia/Broken_Hill.generic.long=Central Time (South Australia/New South Wales)
+Australia/Broken_Hill.standard.long=Central Standard Time (South Australia/New South Wales)
+Australia/Canberra.daylight.long=Eastern Summer Time (New South Wales)
+Australia/Canberra.generic.long=Eastern Time (New South Wales)
+Australia/Canberra.standard.long=Eastern Standard Time (New South Wales)
+Australia/Currie.daylight.long=Eastern Summer Time (New South Wales)
+Australia/Currie.generic.long=Eastern Time (New South Wales)
+Australia/Currie.standard.long=Eastern Standard Time (New South Wales)
+Australia/Darwin.daylight.long=Central Summer Time (Northern Territory)
+Australia/Darwin.generic.long=Central Time (Northern Territory)
+Australia/Darwin.standard.long=Central Standard Time (Northern Territory)
+Australia/Eucla.daylight.long=Central Western Summer Time (Australia)
+Australia/Eucla.generic.long=Central Western Time (Australia)
+Australia/Eucla.standard.long=Central Western Standard Time (Australia)
+Australia/Hobart.daylight.long=Eastern Summer Time (Tasmania)
+Australia/Hobart.generic.long=Eastern Time (Tasmania)
+Australia/Hobart.standard.long=Eastern Standard Time (Tasmania)
+Australia/LHI.generic.long=Lord Howe Time
+Australia/Lindeman.daylight.long=Eastern Summer Time (Queensland)
+Australia/Lindeman.generic.long=Eastern Time (Queensland)
+Australia/Lindeman.standard.long=Eastern Standard Time (Queensland)
+Australia/Lord_Howe.generic.long=Lord Howe Time
+Australia/Melbourne.daylight.long=Eastern Summer Time (Victoria)
+Australia/Melbourne.generic.long=Eastern Time (Victoria)
+Australia/Melbourne.standard.long=Eastern Standard Time (Victoria)
+Australia/NSW.daylight.long=Eastern Summer Time (New South Wales)
+Australia/NSW.generic.long=Eastern Time (New South Wales)
+Australia/NSW.standard.long=Eastern Standard Time (New South Wales)
+Australia/North.daylight.long=Central Summer Time (Northern Territory)
+Australia/North.generic.long=Central Time (Northern Territory)
+Australia/North.standard.long=Central Standard Time (Northern Territory)
+Australia/Perth.daylight.long=Western Summer Time (Australia)
+Australia/Perth.generic.long=Western Time (Australia)
+Australia/Perth.standard.long=Western Standard Time (Australia)
+Australia/Queensland.daylight.long=Eastern Summer Time (Queensland)
+Australia/Queensland.generic.long=Eastern Time (Queensland)
+Australia/Queensland.standard.long=Eastern Standard Time (Queensland)
+Australia/South.daylight.long=Central Summer Time (South Australia)
+Australia/South.generic.long=Central Time (South Australia)
+Australia/South.standard.long=Central Standard Time (South Australia)
+Australia/Sydney.daylight.long=Eastern Summer Time (New South Wales)
+Australia/Sydney.generic.long=Eastern Time (New South Wales)
+Australia/Sydney.standard.long=Eastern Standard Time (New South Wales)
+Australia/Tasmania.daylight.long=Eastern Summer Time (Tasmania)
+Australia/Tasmania.generic.long=Eastern Time (Tasmania)
+Australia/Tasmania.standard.long=Eastern Standard Time (Tasmania)
+Australia/Victoria.daylight.long=Eastern Summer Time (Victoria)
+Australia/Victoria.generic.long=Eastern Time (Victoria)
+Australia/Victoria.standard.long=Eastern Standard Time (Victoria)
+Australia/West.daylight.long=Western Summer Time (Australia)
+Australia/West.generic.long=Western Time (Australia)
+Australia/West.standard.long=Western Standard Time (Australia)
+Australia/Yancowinna.daylight.long=Central Summer Time (South Australia/New South Wales)
+Australia/Yancowinna.generic.long=Central Time (South Australia/New South Wales)
+Australia/Yancowinna.standard.long=Central Standard Time (South Australia/New South Wales)
+BET.generic.long=Brasilia Time
+BST.generic.long=Bangladesh Time
+Brazil/Acre.generic.long=Acre Time
+Brazil/DeNoronha.generic.long=Fernando de Noronha Time
+Brazil/East.generic.long=Brasilia Time
+Brazil/West.generic.long=Amazon Time
+CAT.generic.long=Central Africa Time
+CET.generic.long=Central European Time
+CNT.generic.long=Newfoundland Time
+CST.generic.long=Central Time
+CST6CDT.generic.long=Central Time
+CTT.generic.long=China Time
+Canada/Atlantic.generic.long=Atlantic Time
+Canada/Central.generic.long=Central Time
+Canada/East-Saskatchewan.generic.long=Central Time
+Canada/Eastern.generic.long=Eastern Time
+Canada/Mountain.generic.long=Mountain Time
+Canada/Newfoundland.generic.long=Newfoundland Time
+Canada/Pacific.generic.long=Pacific Time
+Canada/Saskatchewan.generic.long=Central Time
+Canada/Yukon.generic.long=Pacific Time
+Chile/Continental.generic.long=Chile Time
+Chile/EasterIsland.generic.long=Easter Is. Time
+Cuba.generic.long=Cuba Time
+EAT.generic.long=Eastern Africa Time
+ECT.generic.long=Central European Time
+EET.generic.long=Eastern European Time
+EST.generic.long=Eastern Time
+EST5EDT.generic.long=Eastern Time
+Egypt.generic.long=Eastern European Time
+Eire.generic.long=Irish Time
+Etc/Greenwich.generic.long=Greenwich Mean Time
+Etc/UCT.generic.long=Coordinated Universal Time
+Etc/UTC.generic.long=Coordinated Universal Time
+Etc/Universal.generic.long=Coordinated Universal Time
+Etc/Zulu.generic.long=Coordinated Universal Time
+Europe/Amsterdam.generic.long=Central European Time
+Europe/Andorra.generic.long=Central European Time
+Europe/Athens.generic.long=Eastern European Time
+Europe/Belfast.generic.long=British Time
+Europe/Belgrade.generic.long=Central European Time
+Europe/Berlin.generic.long=Central European Time
+Europe/Bratislava.generic.long=Central European Time
+Europe/Brussels.generic.long=Central European Time
+Europe/Bucharest.generic.long=Eastern European Time
+Europe/Budapest.generic.long=Central European Time
+Europe/Busingen.generic.long=Central European Time
+Europe/Chisinau.generic.long=Eastern European Time
+Europe/Copenhagen.generic.long=Central European Time
+Europe/Dublin.generic.long=Irish Time
+Europe/Gibraltar.generic.long=Central European Time
+Europe/Guernsey.generic.long=British Time
+Europe/Helsinki.generic.long=Eastern European Time
+Europe/Isle_of_Man.generic.long=British Time
+Europe/Istanbul.generic.long=Eastern European Time
+Europe/Jersey.generic.long=British Time
+Europe/Kaliningrad.daylight.long=Further-eastern European Summer Time
+Europe/Kaliningrad.generic.long=Further-eastern European Time
+Europe/Kaliningrad.standard.long=Further-eastern European Time
+Europe/Kiev.generic.long=Eastern European Time
+Europe/Lisbon.generic.long=Western European Time
+Europe/Ljubljana.generic.long=Central European Time
+Europe/London.generic.long=British Time
+Europe/Luxembourg.generic.long=Central European Time
+Europe/Madrid.generic.long=Central European Time
+Europe/Malta.generic.long=Central European Time
+Europe/Mariehamn.generic.long=Eastern European Time
+Europe/Minsk.daylight.long=Further-eastern European Summer Time
+Europe/Minsk.generic.long=Further-eastern European Time
+Europe/Minsk.standard.long=Further-eastern European Time
+Europe/Monaco.generic.long=Central European Time
+Europe/Moscow.generic.long=Moscow Time
+Europe/Nicosia.generic.long=Eastern European Time
+Europe/Oslo.generic.long=Central European Time
+Europe/Paris.generic.long=Central European Time
+Europe/Podgorica.generic.long=Central European Time
+Europe/Prague.generic.long=Central European Time
+Europe/Riga.generic.long=Eastern European Time
+Europe/Rome.generic.long=Central European Time
+Europe/Samara.generic.long=Samara Time
+Europe/San_Marino.generic.long=Central European Time
+Europe/Sarajevo.generic.long=Central European Time
+Europe/Simferopol.generic.long=Eastern European Time
+Europe/Skopje.generic.long=Central European Time
+Europe/Sofia.generic.long=Eastern European Time
+Europe/Stockholm.generic.long=Central European Time
+Europe/Tallinn.generic.long=Eastern European Time
+Europe/Tirane.generic.long=Central European Time
+Europe/Tiraspol.generic.long=Eastern European Time
+Europe/Uzhgorod.generic.long=Eastern European Time
+Europe/Vaduz.generic.long=Central European Time
+Europe/Vatican.generic.long=Central European Time
+Europe/Vienna.generic.long=Central European Time
+Europe/Vilnius.generic.long=Eastern European Time
+Europe/Volgograd.generic.long=Volgograd Time
+Europe/Warsaw.generic.long=Central European Time
+Europe/Zagreb.generic.long=Central European Time
+Europe/Zaporozhye.generic.long=Eastern European Time
+Europe/Zurich.generic.long=Central European Time
+GB-Eire.generic.long=British Time
+GB.generic.long=British Time
+GMT.generic.long=Greenwich Mean Time
+Greenwich.generic.long=Greenwich Mean Time
+HST.generic.long=Hawaii Time
+Hongkong.generic.long=Hong Kong Time
+IET.generic.long=Eastern Time
+IST.generic.long=India Time
+Iceland.generic.long=Greenwich Mean Time
+Indian/Antananarivo.generic.long=Eastern Africa Time
+Indian/Chagos.generic.long=Indian Ocean Territory Time
+Indian/Christmas.generic.long=Christmas Island Time
+Indian/Cocos.generic.long=Cocos Islands Time
+Indian/Comoro.generic.long=Eastern Africa Time
+Indian/Kerguelen.generic.long=French Southern & Antarctic Lands Time
+Indian/Mahe.generic.long=Seychelles Time
+Indian/Maldives.generic.long=Maldives Time
+Indian/Mauritius.generic.long=Mauritius Time
+Indian/Mayotte.generic.long=Eastern Africa Time
+Indian/Reunion.generic.long=Reunion Time
+Iran.generic.long=Iran Time
+Israel.generic.long=Israel Time
+JST.generic.long=Japan Time
+Jamaica.generic.long=Eastern Time
+Japan.generic.long=Japan Time
+Kwajalein.generic.long=Marshall Islands Time
+Libya.generic.long=Eastern European Time
+MET.generic.long=Middle Europe Time
+MIT.generic.long=West Samoa Time
+MST.generic.long=Mountain Time
+MST7MDT.generic.long=Mountain Time
+Mexico/BajaNorte.generic.long=Pacific Time
+Mexico/BajaSur.generic.long=Mountain Time
+Mexico/General.generic.long=Central Time
+NET.generic.long=Armenia Time
+NST.generic.long=New Zealand Time
+NZ-CHAT.generic.long=Chatham Time
+NZ.generic.long=New Zealand Time
+Navajo.generic.long=Mountain Time
+PLT.generic.long=Pakistan Time
+PNT.generic.long=Mountain Time
+PRC.generic.long=China Time
+PRT.generic.long=Atlantic Time
+PST.generic.long=Pacific Time
+PST8PDT.generic.long=Pacific Time
+Pacific/Apia.generic.long=West Samoa Time
+Pacific/Auckland.generic.long=New Zealand Time
+Pacific/Chatham.generic.long=Chatham Time
+Pacific/Chuuk.daylight.long=Chuuk Summer Time
+Pacific/Chuuk.generic.long=Chuuk Time
+Pacific/Chuuk.standard.long=Chuuk Time
+Pacific/Easter.generic.long=Easter Is. Time
+Pacific/Efate.generic.long=Vanuatu Time
+Pacific/Enderbury.generic.long=Phoenix Is. Time
+Pacific/Fakaofo.generic.long=Tokelau Time
+Pacific/Fiji.generic.long=Fiji Time
+Pacific/Funafuti.generic.long=Tuvalu Time
+Pacific/Galapagos.generic.long=Galapagos Time
+Pacific/Gambier.generic.long=Gambier Time
+Pacific/Guadalcanal.generic.long=Solomon Is. Time
+Pacific/Guam.generic.long=Chamorro Time
+Pacific/Honolulu.generic.long=Hawaii Time
+Pacific/Johnston.generic.long=Hawaii Time
+Pacific/Kiritimati.generic.long=Line Is. Time
+Pacific/Kosrae.generic.long=Kosrae Time
+Pacific/Kwajalein.generic.long=Marshall Islands Time
+Pacific/Majuro.generic.long=Marshall Islands Time
+Pacific/Marquesas.generic.long=Marquesas Time
+Pacific/Midway.generic.long=Samoa Time
+Pacific/Nauru.generic.long=Nauru Time
+Pacific/Niue.generic.long=Niue Time
+Pacific/Norfolk.generic.long=Norfolk Time
+Pacific/Noumea.generic.long=New Caledonia Time
+Pacific/Pago_Pago.generic.long=Samoa Time
+Pacific/Palau.generic.long=Palau Time
+Pacific/Pitcairn.generic.long=Pitcairn Time
+Pacific/Pohnpei.daylight.long=Pohnpei Summer Time
+Pacific/Pohnpei.generic.long=Ponape Time
+Pacific/Pohnpei.standard.long=Pohnpei Time
+Pacific/Ponape.daylight.long=Pohnpei Summer Time
+Pacific/Ponape.generic.long=Ponape Time
+Pacific/Ponape.standard.long=Pohnpei Time
+Pacific/Port_Moresby.generic.long=Papua New Guinea Time
+Pacific/Rarotonga.generic.long=Cook Is. Time
+Pacific/Saipan.generic.long=Chamorro Time
+Pacific/Samoa.generic.long=Samoa Time
+Pacific/Tahiti.generic.long=Tahiti Time
+Pacific/Tarawa.generic.long=Gilbert Is. Time
+Pacific/Tongatapu.generic.long=Tonga Time
+Pacific/Truk.daylight.long=Chuuk Summer Time
+Pacific/Truk.generic.long=Chuuk Time
+Pacific/Truk.standard.long=Chuuk Time
+Pacific/Wake.generic.long=Wake Time
+Pacific/Wallis.generic.long=Wallis & Futuna Time
+Pacific/Yap.daylight.long=Chuuk Summer Time
+Pacific/Yap.generic.long=Chuuk Time
+Pacific/Yap.standard.long=Chuuk Time
+Poland.generic.long=Central European Time
+Portugal.generic.long=Western European Time
+ROK.generic.long=Korea Time
+SST.generic.long=Solomon Is. Time
+Singapore.generic.long=Singapore Time
+SystemV/AST4.generic.long=Atlantic Time
+SystemV/AST4ADT.generic.long=Atlantic Time
+SystemV/CST6.generic.long=Central Time
+SystemV/CST6CDT.generic.long=Central Time
+SystemV/EST5.generic.long=Eastern Time
+SystemV/EST5EDT.generic.long=Eastern Time
+SystemV/HST10.generic.long=Hawaii Time
+SystemV/MST7.generic.long=Mountain Time
+SystemV/MST7MDT.generic.long=Mountain Time
+SystemV/PST8.generic.long=Pacific Time
+SystemV/PST8PDT.generic.long=Pacific Time
+SystemV/YST9.generic.long=Alaska Time
+SystemV/YST9YDT.generic.long=Alaska Time
+Turkey.generic.long=Eastern European Time
+UCT.generic.long=Coordinated Universal Time
+US/Alaska.generic.long=Alaska Time
+US/Aleutian.generic.long=Hawaii-Aleutian Time
+US/Arizona.generic.long=Mountain Time
+US/Central.generic.long=Central Time
+US/East-Indiana.generic.long=Eastern Time
+US/Eastern.generic.long=Eastern Time
+US/Hawaii.generic.long=Hawaii Time
+US/Indiana-Starke.generic.long=Central Time
+US/Michigan.generic.long=Eastern Time
+US/Mountain.generic.long=Mountain Time
+US/Pacific-New.generic.long=Pacific Time
+US/Pacific.generic.long=Pacific Time
+US/Samoa.generic.long=Samoa Time
+UTC.generic.long=Coordinated Universal Time
+Universal.generic.long=Coordinated Universal Time
+VST.generic.long=Indochina Time
+W-SU.generic.long=Moscow Time
+WET.generic.long=Western European Time
+Zulu.generic.long=Coordinated Universal Time
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNamesTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2013 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 8025051
+ * @summary Test time zone names across all locales
+ * @run main TimeZoneNamesTest
+ */
+
+import sun.util.locale.provider.TimeZoneNameUtility;
+import java.util.TimeZone;
+import java.util.Locale;
+import java.util.Properties;
+import java.io.IOException;
+import java.io.FileInputStream;
+
+public class TimeZoneNamesTest {
+ // name type to test. Possible: long, short.
+ static String requestedTestType = "long";
+ // test Standard/DST (false) or Generic (true) TZ names
+ static boolean testGeneric = false;
+
+ public static void testGenericTZName( Locale locale, String timezoneName,
+ int nameType, String expectedName ) throws RuntimeException {
+ if (testGeneric) {
+ String genericName = TimeZoneNameUtility.retrieveGenericDisplayName(timezoneName, nameType, locale);
+ //Check for equality
+ if (!genericName.equals(expectedName))
+ throw new RuntimeException( "Time zone ("+timezoneName+") name is incorrect for locale \""+locale.getDisplayName()
+ +"\" nameType: Generic"+"("+nameType+") Should be: " +expectedName+" Observed: "+genericName);
+ }
+ }
+
+ public static void testTZName( Locale locale, String timezoneName, boolean isDaylight,
+ int nameType, String expectedName ) throws RuntimeException {
+ if (!testGeneric) {
+ //Construct time zone objects
+ TimeZone zone = TimeZone.getTimeZone(timezoneName);
+ //Get name from JDK
+ String name = zone.getDisplayName(isDaylight, nameType, locale);
+ //Check for equality
+ if (!name.equals(expectedName))
+ throw new RuntimeException( "Time zone ("+timezoneName+") name is incorrect for locale: \""+locale.getDisplayName()
+ +"\" nameType:"+requestedTestType+" DST:"+isDaylight+" Should be: " +expectedName+" Observed: "+name);
+ }
+ }
+
+ public static boolean testPropertyEntry( Locale locale, String entry, String value ) {
+ boolean result = true;
+ String[] params = entry.split("\\.");
+ if (params.length != 3) {
+ System.out.println("Incorrect property file entry="+entry+" "+params.length);
+ result = false;
+ } else {
+ boolean isDaylight = true;
+ int nameType = TimeZone.LONG;
+
+ if (params[2].equals("short"))
+ nameType = TimeZone.SHORT;
+
+ if (params[1].equals("standard"))
+ isDaylight = false;
+
+ // Names with non-requested tz name type are ignored
+ if (requestedTestType.equals(params[2])) {
+ try {
+ if (params[1].equals("generic"))
+ testGenericTZName( locale, params[0], nameType, value );
+ else
+ testTZName( locale, params[0], isDaylight, nameType, value );
+ } catch (RuntimeException e) {
+ System.out.println( "Test FAILED: "+e );
+ result = false;
+ }
+ }
+ }
+ return result;
+ }
+
+ public static boolean testPropertyFile( String propFile, String shortName, Locale locale ) throws RuntimeException {
+ boolean result = true;
+ Properties property = new Properties();
+ try {
+ property.load( new FileInputStream(propFile) );
+ } catch (IOException e) {
+ throw new RuntimeException("Property file "+propFile+" is not found", e);
+ }
+ for (String key: property.stringPropertyNames()) {
+ result &= testPropertyEntry(locale, key, property.getProperty(key) );
+ }
+ return result;
+ }
+
+ // Locale to test, file with names data, test long/short names, test generic names (true/false)
+ static Object[][] testTargets = {
+ { Locale.ROOT,"TimeZoneNames.properties","long",false},
+ { Locale.ROOT,"TimeZoneNames_short.properties","short",false},
+ { Locale.ROOT,"TimeZoneNames.properties","long",true},
+ { Locale.ROOT,"TimeZoneNames_short.properties","short",true},
+
+ { new Locale("de"),"TimeZoneNames_de.properties","long",false},
+ { new Locale("de"),"TimeZoneNames_de_short.properties","short",false},
+ { new Locale("de"),"TimeZoneNames_de.properties","long",true},
+ { new Locale("de"),"TimeZoneNames_de_short.properties","short",true},
+
+ { new Locale("es"),"TimeZoneNames_es.properties","long",false},
+ { new Locale("es"),"TimeZoneNames_es_short.properties","short",false},
+ { new Locale("es"),"TimeZoneNames_es.properties","long",true},
+ { new Locale("es"),"TimeZoneNames_es_short.properties","short",true},
+
+ { new Locale("fr"),"TimeZoneNames_fr.properties","long",false},
+ { new Locale("fr"),"TimeZoneNames_fr_short.properties","short",false},
+ { new Locale("fr"),"TimeZoneNames_fr.properties","long",true},
+ { new Locale("fr"),"TimeZoneNames_fr_short.properties","short",true},
+
+ { new Locale("it"),"TimeZoneNames_it.properties","long",false},
+ { new Locale("it"),"TimeZoneNames_it_short.properties","short",false},
+ { new Locale("it"),"TimeZoneNames_it.properties","long",true},
+ { new Locale("it"),"TimeZoneNames_it_short.properties","short",true},
+
+ { new Locale("ja"),"TimeZoneNames_ja.properties","long",false},
+ { new Locale("ja"),"TimeZoneNames_ja_short.properties","short",false},
+ { new Locale("ja"),"TimeZoneNames_ja.properties","long",true},
+ { new Locale("ja"),"TimeZoneNames_ja_short.properties","short",true},
+
+ { new Locale("ko"),"TimeZoneNames_ko.properties","long",false},
+ { new Locale("ko"),"TimeZoneNames_ko_short.properties","short",false},
+ { new Locale("ko"),"TimeZoneNames_ko.properties","long",true},
+ { new Locale("ko"),"TimeZoneNames_ko_short.properties","short",true},
+
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR.properties","long",false},
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR_short.properties","short",false},
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR.properties","long",true},
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR_short.properties","short",true},
+
+ { new Locale("sv"),"TimeZoneNames_sv.properties","long",false},
+ { new Locale("sv"),"TimeZoneNames_sv_short.properties","short",false},
+ { new Locale("sv"),"TimeZoneNames_sv.properties","long",true},
+ { new Locale("sv"),"TimeZoneNames_sv_short.properties","short",true},
+
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN.properties","long",false},
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN_short.properties","short",false},
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN.properties","long",true},
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN_short.properties","short",true},
+
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW.properties","long",false},
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW_short.properties","short",false},
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW.properties","long",true},
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW_short.properties","short",true}
+ };
+
+ public static void main(String[] args) {
+ boolean result = true;
+
+ for (Object [] test: testTargets) {
+ Locale testLocale = (Locale) test[0];
+ String testFile = (String) test[1];
+ requestedTestType = (String) test[2];
+ testGeneric = (Boolean) test[3];
+ result &= testPropertyFile( System.getProperty("test.src",".")+"/"+testFile, testFile, testLocale);
+ }
+ if (!result)
+ throw new RuntimeException("Some time zones has unexpected names. Please, check test output.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Zentrale Sommerzeit (Northern Territory)
+ACT.generic.long=Zentrale Zeitzone (Northern Territory)
+ACT.standard.long=Zentrale Normalzeit (Northern Territory)
+AET.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+AET.generic.long=\u00D6stliche Zeitzone (New South Wales)
+AET.standard.long=\u00D6stliche Normalzeit (New South Wales)
+AGT.generic.long=Argentinische Zeit
+ART.generic.long=Osteurop\u00E4ische Zeit
+AST.generic.long=Zeitzone f\u00FCr Alaska
+Africa/Abidjan.generic.long=Greenwich Zeit
+Africa/Accra.generic.long=Ghanaische Normalzeit
+Africa/Addis_Ababa.generic.long=Ostafrikanische Zeit
+Africa/Algiers.generic.long=Mitteleurop\u00E4ische Zeit
+Africa/Asmara.generic.long=Ostafrikanische Zeit
+Africa/Asmera.generic.long=Ostafrikanische Zeit
+Africa/Bamako.generic.long=Greenwich Zeit
+Africa/Bangui.generic.long=Westafrikanische Zeit
+Africa/Banjul.generic.long=Greenwich Zeit
+Africa/Bissau.generic.long=Greenwich Zeit
+Africa/Blantyre.generic.long=Zentralafrikanische Zeit
+Africa/Brazzaville.generic.long=Westafrikanische Zeit
+Africa/Bujumbura.generic.long=Zentralafrikanische Zeit
+Africa/Cairo.generic.long=Osteurop\u00E4ische Zeit
+Africa/Casablanca.generic.long=Westeurop\u00E4ische Zeit
+Africa/Ceuta.generic.long=Mitteleurop\u00E4ische Zeit
+Africa/Conakry.generic.long=Greenwich Zeit
+Africa/Dakar.generic.long=Greenwich Zeit
+Africa/Dar_es_Salaam.generic.long=Ostafrikanische Zeit
+Africa/Djibouti.generic.long=Ostafrikanische Zeit
+Africa/Douala.generic.long=Westafrikanische Zeit
+Africa/El_Aaiun.generic.long=Westeurop\u00E4ische Zeit
+Africa/Freetown.generic.long=Sierra Leone Zeit
+Africa/Gaborone.generic.long=Zentralafrikanische Zeit
+Africa/Harare.generic.long=Zentralafrikanische Zeit
+Africa/Johannesburg.generic.long=Zeitzone f\u00FCr S\u00FCdafrika
+Africa/Juba.generic.long=Ostafrikanische Zeit
+Africa/Kampala.generic.long=Ostafrikanische Zeit
+Africa/Khartoum.generic.long=Ostafrikanische Zeit
+Africa/Kigali.generic.long=Zentralafrikanische Zeit
+Africa/Kinshasa.generic.long=Westafrikanische Zeit
+Africa/Lagos.generic.long=Westafrikanische Zeit
+Africa/Libreville.generic.long=Westafrikanische Zeit
+Africa/Lome.generic.long=Greenwich Zeit
+Africa/Luanda.generic.long=Westafrikanische Zeit
+Africa/Lubumbashi.generic.long=Zentralafrikanische Zeit
+Africa/Lusaka.generic.long=Zentralafrikanische Zeit
+Africa/Malabo.generic.long=Westafrikanische Zeit
+Africa/Maputo.generic.long=Zentralafrikanische Zeit
+Africa/Maseru.generic.long=Zeitzone f\u00FCr S\u00FCdafrika
+Africa/Mbabane.generic.long=Zeitzone f\u00FCr S\u00FCdafrika
+Africa/Mogadishu.generic.long=Ostafrikanische Zeit
+Africa/Monrovia.generic.long=Greenwich Zeit
+Africa/Nairobi.generic.long=Ostafrikanische Zeit
+Africa/Ndjamena.generic.long=Westafrikanische Zeit
+Africa/Niamey.generic.long=Westafrikanische Zeit
+Africa/Nouakchott.generic.long=Greenwich Zeit
+Africa/Ouagadougou.generic.long=Greenwich Zeit
+Africa/Porto-Novo.generic.long=Westafrikanische Zeit
+Africa/Sao_Tome.generic.long=Greenwich Zeit
+Africa/Timbuktu.generic.long=Greenwich Zeit
+Africa/Tripoli.generic.long=Osteurop\u00e4ische Zeit
+Africa/Tunis.generic.long=Mitteleurop\u00E4ische Zeit
+Africa/Windhoek.generic.long=Westafrikanische Zeit
+America/Adak.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen
+America/Anchorage.generic.long=Zeitzone f\u00FCr Alaska
+America/Anguilla.generic.long=Zeitzone Atlantik
+America/Antigua.generic.long=Zeitzone Atlantik
+America/Araguaina.generic.long=Brasilianische Zeit
+America/Argentina/Buenos_Aires.generic.long=Argentinische Zeit
+America/Argentina/Catamarca.generic.long=Argentinische Zeit
+America/Argentina/ComodRivadavia.generic.long=Argentinische Zeit
+America/Argentina/Cordoba.generic.long=Argentinische Zeit
+America/Argentina/Jujuy.generic.long=Argentinische Zeit
+America/Argentina/La_Rioja.generic.long=Argentinische Zeit
+America/Argentina/Mendoza.generic.long=Argentinische Zeit
+America/Argentina/Rio_Gallegos.generic.long=Argentinische Zeit
+America/Argentina/Salta.generic.long=Argentinische Zeit
+America/Argentina/San_Juan.generic.long=Argentinische Zeit
+America/Argentina/San_Luis.generic.long=Argentinische Zeit
+America/Argentina/Tucuman.generic.long=Argentinische Zeit
+America/Argentina/Ushuaia.generic.long=Argentinische Zeit
+America/Aruba.generic.long=Zeitzone Atlantik
+America/Asuncion.generic.long=Paraguay Zeit
+America/Atikokan.generic.long=\u00D6stliche Zeitzone
+America/Atka.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen
+America/Bahia.generic.long=Brasilianische Zeit
+America/Bahia_Banderas.generic.long=Zentrale Zeitzone
+America/Barbados.generic.long=Zeitzone Atlantik
+America/Belem.generic.long=Brasilianische Zeit
+America/Belize.generic.long=Zentrale Zeitzone
+America/Blanc-Sablon.generic.long=Zeitzone Atlantik
+America/Boa_Vista.generic.long=Amazonas Normalzeit
+America/Bogota.generic.long=Kolumbianische Zeit
+America/Boise.generic.long=Zeitzone Mountain
+America/Buenos_Aires.generic.long=Argentinische Zeit
+America/Cambridge_Bay.generic.long=Zeitzone Mountain
+America/Campo_Grande.generic.long=Amazonas Normalzeit
+America/Cancun.generic.long=Zentrale Zeitzone
+America/Caracas.generic.long=Venezuelanische Zeit
+America/Catamarca.generic.long=Argentinische Zeit
+America/Cayenne.generic.long=Franz\u00F6sisch-Guiana Zeit
+America/Cayman.generic.long=\u00D6stliche Zeitzone
+America/Chicago.generic.long=Zentrale Zeitzone
+America/Chihuahua.generic.long=Zeitzone Mountain
+America/Coral_Harbour.generic.long=\u00D6stliche Zeitzone
+America/Cordoba.generic.long=Argentinische Zeit
+America/Costa_Rica.generic.long=Zentrale Zeitzone
+America/Creston.generic.long=Zeitzone Mountain
+America/Cuiaba.generic.long=Amazonas Normalzeit
+America/Curacao.generic.long=Zeitzone Atlantik
+America/Danmarkshavn.generic.long=Greenwich Zeit
+America/Dawson.generic.long=Zeitzone Pazifik
+America/Dawson_Creek.generic.long=Zeitzone Mountain
+America/Denver.generic.long=Zeitzone Mountain
+America/Detroit.generic.long=\u00D6stliche Zeitzone
+America/Dominica.generic.long=Zeitzone Atlantik
+America/Edmonton.generic.long=Zeitzone Mountain
+America/Eirunepe.generic.long=Acre Normalzeit
+America/El_Salvador.generic.long=Zentrale Zeitzone
+America/Ensenada.generic.long=Zeitzone Pazifik
+America/Fort_Wayne.generic.long=\u00D6stliche Zeitzone
+America/Fortaleza.generic.long=Brasilianische Zeit
+America/Glace_Bay.generic.long=Zeitzone Atlantik
+America/Godthab.generic.long=Westgr\u00F6nl\u00E4ndische Zeit
+America/Goose_Bay.generic.long=Zeitzone Atlantik
+America/Grand_Turk.generic.long=\u00D6stliche Zeitzone
+America/Grenada.generic.long=Zeitzone Atlantik
+America/Guadeloupe.generic.long=Zeitzone Atlantik
+America/Guatemala.generic.long=Zentrale Zeitzone
+America/Guayaquil.generic.long=Ecuadorianische Zeit
+America/Guyana.generic.long=Guyanische Zeit
+America/Halifax.generic.long=Zeitzone Atlantik
+America/Havana.generic.long=Kubanische Normalzeit
+America/Hermosillo.generic.long=Zeitzone Mountain
+America/Indiana/Indianapolis.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Knox.generic.long=Zentrale Zeitzone
+America/Indiana/Marengo.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Petersburg.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Tell_City.generic.long=Zentrale Zeitzone
+America/Indiana/Vevay.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Vincennes.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Winamac.generic.long=\u00D6stliche Zeitzone
+America/Indianapolis.generic.long=\u00D6stliche Zeitzone
+America/Inuvik.generic.long=Zeitzone Mountain
+America/Iqaluit.generic.long=\u00D6stliche Zeitzone
+America/Jamaica.generic.long=\u00D6stliche Zeitzone
+America/Jujuy.generic.long=Argentinische Zeit
+America/Juneau.generic.long=Zeitzone f\u00FCr Alaska
+America/Kentucky/Louisville.generic.long=\u00D6stliche Zeitzone
+America/Kentucky/Monticello.generic.long=\u00D6stliche Zeitzone
+America/Knox_IN.generic.long=Zentrale Zeitzone
+America/Kralendijk.generic.long=Zeitzone Atlantik
+America/La_Paz.generic.long=Bolivianische Zeit
+America/Lima.generic.long=Peruanische Zeit
+America/Los_Angeles.generic.long=Zeitzone Pazifik
+America/Louisville.generic.long=\u00D6stliche Zeitzone
+America/Lower_Princes.generic.long=Zeitzone Atlantik
+America/Maceio.generic.long=Brasilianische Zeit
+America/Managua.generic.long=Zentrale Zeitzone
+America/Manaus.generic.long=Amazonas Normalzeit
+America/Marigot.generic.long=Zeitzone Atlantik
+America/Martinique.generic.long=Zeitzone Atlantik
+America/Matamoros.generic.long=Zentrale Zeitzone
+America/Mazatlan.generic.long=Zeitzone Mountain
+America/Mendoza.generic.long=Argentinische Zeit
+America/Menominee.generic.long=Zentrale Zeitzone
+America/Merida.generic.long=Zentrale Zeitzone
+America/Metlakatla.daylight.long=Metlakatla Sommerzeit
+America/Metlakatla.generic.long=Metlakatla Normalzeit
+America/Metlakatla.standard.long=Metlakatla Normalzeit
+America/Mexico_City.generic.long=Zentrale Zeitzone
+America/Miquelon.generic.long=Zeitzone f\u00FCr St. Pierre und Miquelon
+America/Moncton.generic.long=Zeitzone Atlantik
+America/Monterrey.generic.long=Zentrale Zeitzone
+America/Montevideo.generic.long=Uruguayanische Zeit
+America/Montreal.generic.long=\u00D6stliche Zeitzone
+America/Montserrat.generic.long=Zeitzone Atlantik
+America/Nassau.generic.long=\u00D6stliche Zeitzone
+America/New_York.generic.long=\u00D6stliche Zeitzone
+America/Nipigon.generic.long=\u00D6stliche Zeitzone
+America/Nome.generic.long=Zeitzone f\u00FCr Alaska
+America/Noronha.generic.long=Fernando de Noronha Zeit
+America/North_Dakota/Beulah.generic.long=Zentrale Zeitzone
+America/North_Dakota/Center.generic.long=Zentrale Zeitzone
+America/North_Dakota/New_Salem.generic.long=Zentrale Zeitzone
+America/Ojinaga.generic.long=Zeitzone Mountain
+America/Panama.generic.long=\u00D6stliche Zeitzone
+America/Pangnirtung.generic.long=\u00D6stliche Zeitzone
+America/Paramaribo.generic.long=Suriname Zeit
+America/Phoenix.generic.long=Zeitzone Mountain
+America/Port-au-Prince.generic.long=\u00D6stliche Zeitzone
+America/Port_of_Spain.generic.long=Zeitzone Atlantik
+America/Porto_Acre.generic.long=Acre Normalzeit
+America/Porto_Velho.generic.long=Amazonas Normalzeit
+America/Puerto_Rico.generic.long=Zeitzone Atlantik
+America/Rainy_River.generic.long=Zentrale Zeitzone
+America/Rankin_Inlet.generic.long=Zentrale Zeitzone
+America/Recife.generic.long=Brasilianische Zeit
+America/Regina.generic.long=Zentrale Zeitzone
+America/Resolute.generic.long=Zentrale Zeitzone
+America/Rio_Branco.generic.long=Acre Normalzeit
+America/Rosario.generic.long=Argentinische Zeit
+America/Santa_Isabel.generic.long=Zeitzone Pazifik
+America/Santarem.generic.long=Brasilianische Zeit
+America/Santiago.generic.long=Chilenische Zeit
+America/Santo_Domingo.generic.long=Zeitzone Atlantik
+America/Sao_Paulo.generic.long=Brasilianische Zeit
+America/Scoresbysund.generic.long=Ostgr\u00F6nl\u00E4ndische Zeit
+America/Shiprock.generic.long=Zeitzone Mountain
+America/Sitka.generic.long=Zeitzone f\u00FCr Alaska
+America/St_Barthelemy.generic.long=Zeitzone Atlantik
+America/St_Johns.generic.long=Zeitzone f\u00FCr Neufundland
+America/St_Kitts.generic.long=Zeitzone Atlantik
+America/St_Lucia.generic.long=Zeitzone Atlantik
+America/St_Thomas.generic.long=Zeitzone Atlantik
+America/St_Vincent.generic.long=Zeitzone Atlantik
+America/Swift_Current.generic.long=Zentrale Zeitzone
+America/Tegucigalpa.generic.long=Zentrale Zeitzone
+America/Thule.generic.long=Zeitzone Atlantik
+America/Thunder_Bay.generic.long=\u00D6stliche Zeitzone
+America/Tijuana.generic.long=Zeitzone Pazifik
+America/Toronto.generic.long=\u00D6stliche Zeitzone
+America/Tortola.generic.long=Zeitzone Atlantik
+America/Vancouver.generic.long=Zeitzone Pazifik
+America/Virgin.generic.long=Zeitzone Atlantik
+America/Whitehorse.generic.long=Zeitzone Pazifik
+America/Winnipeg.generic.long=Zentrale Zeitzone
+America/Yakutat.generic.long=Zeitzone f\u00FCr Alaska
+America/Yellowknife.generic.long=Zeitzone Mountain
+Antarctica/Casey.daylight.long=Westliche Sommerzeit (Australien)
+Antarctica/Casey.generic.long=Westliche Zeitzone (Australien)
+Antarctica/Casey.standard.long=Westliche Normalzeit (Australien)
+Antarctica/Davis.generic.long=Davis Zeit
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville Zeit
+Antarctica/Macquarie.daylight.long=Macquarieinsel Sommerzeit
+Antarctica/Macquarie.generic.long=Macquarieinsel Zeit
+Antarctica/Macquarie.standard.long=Macquarieinsel Zeit
+Antarctica/Mawson.generic.long=Mawson Zeit
+Antarctica/McMurdo.generic.long=Zeitzone f\u00FCr Neuseeland
+Antarctica/Palmer.generic.long=Chilenische Zeit
+Antarctica/Rothera.generic.long=Rothera Zeit
+Antarctica/South_Pole.generic.long=Zeitzone f\u00FCr Neuseeland
+Antarctica/Syowa.generic.long=Syowa Zeit
+Antarctica/Vostok.generic.long=Vostok Zeit
+Arctic/Longyearbyen.generic.long=Mitteleurop\u00E4ische Zeit
+Asia/Aden.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Almaty.generic.long=Alma Ata Zeit
+Asia/Amman.generic.long=Zeitzone f\u00fcr Arabische Halbinsel
+Asia/Anadyr.generic.long=Anadyr Zeit
+Asia/Aqtau.generic.long=Aqtau Zeit
+Asia/Aqtobe.generic.long=Aqtobe Zeit
+Asia/Ashgabat.generic.long=Turkmenische Zeit
+Asia/Ashkhabad.generic.long=Turkmenische Zeit
+Asia/Baghdad.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Bahrain.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Baku.generic.long=Aserbaidschanische Zeit
+Asia/Bangkok.generic.long=Indochina Zeit
+Asia/Beirut.generic.long=Osteurop\u00E4ische Zeit
+Asia/Bishkek.generic.long=Kirgisische Zeit
+Asia/Brunei.generic.long=Brunei Zeit
+Asia/Calcutta.generic.long=Zeitzone f\u00FCr Indien
+Asia/Choibalsan.generic.long=Choibalsan Zeit
+Asia/Chongqing.generic.long=Zeitzone f\u00FCr China
+Asia/Chungking.generic.long=Zeitzone f\u00FCr China
+Asia/Colombo.generic.long=Zeitzone f\u00FCr Indien
+Asia/Dacca.generic.long=Bangladesch Zeit
+Asia/Damascus.generic.long=Osteurop\u00E4ische Zeit
+Asia/Dhaka.generic.long=Bangladesch Zeit
+Asia/Dili.generic.long=Timor-Leste Normalzeit
+Asia/Dubai.generic.long=Zeitzone f\u00FCr Persischen Golf
+Asia/Dushanbe.generic.long=Tadschikische Zeit
+Asia/Gaza.generic.long=Osteurop\u00E4ische Zeit
+Asia/Harbin.generic.long=Zeitzone f\u00FCr China
+Asia/Hebron.generic.long=Osteurop\u00E4ische Zeit
+Asia/Ho_Chi_Minh.generic.long=Indochina Zeit
+Asia/Hong_Kong.generic.long=Hongkong Zeit
+Asia/Hovd.generic.long=Hovd Zeit
+Asia/Irkutsk.generic.long=Irkutsk Zeit
+Asia/Istanbul.generic.long=Osteurop\u00E4ische Zeit
+Asia/Jakarta.generic.long=Westindonesische Zeit
+Asia/Jayapura.generic.long=Ostindonesische Zeit
+Asia/Jerusalem.generic.long=Zeitzone f\u00FCr Israel
+Asia/Kabul.generic.long=Afghanistanische Zeit
+Asia/Kamchatka.generic.long=Petropawlowsk-Kamtschatkische Zeit
+Asia/Karachi.generic.long=Pakistanische Zeit
+Asia/Kashgar.generic.long=Zeitzone f\u00FCr China
+Asia/Kathmandu.generic.long=Nepalesische Zeit
+Asia/Katmandu.generic.long=Nepalesische Zeit
+Asia/Khandyga.daylight.long=Chandyga Sommerzeit
+Asia/Khandyga.generic.long=Chandyga Zeit
+Asia/Khandyga.standard.long=Chandyga Zeit
+Asia/Kolkata.generic.long=Zeitzone f\u00FCr Indien
+Asia/Krasnoyarsk.generic.long=Krasnojarsker Zeit
+Asia/Kuala_Lumpur.generic.long=Malaysische Zeit
+Asia/Kuching.generic.long=Malaysische Zeit
+Asia/Kuwait.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Macao.generic.long=Zeitzone f\u00FCr China
+Asia/Macau.generic.long=Zeitzone f\u00FCr China
+Asia/Magadan.generic.long=Magadanische Zeit
+Asia/Makassar.generic.long=Zentralindonesische Zeit
+Asia/Manila.generic.long=Philippinische Zeit
+Asia/Muscat.generic.long=Zeitzone f\u00FCr Persischen Golf
+Asia/Nicosia.generic.long=Osteurop\u00E4ische Zeit
+Asia/Novokuznetsk.generic.long=Nowosibirsker Zeit
+Asia/Novosibirsk.generic.long=Nowosibirsker Zeit
+Asia/Omsk.generic.long=Omsk Zeit
+Asia/Oral.generic.long=Oral Zeit
+Asia/Phnom_Penh.generic.long=Indochina Zeit
+Asia/Pontianak.generic.long=Westindonesische Zeit
+Asia/Pyongyang.generic.long=Zeitzone f\u00FCr Korea
+Asia/Qatar.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Qyzylorda.generic.long=Qyzylorda Zeit
+Asia/Rangoon.generic.long=Myanmar Zeit
+Asia/Saigon.generic.long=Indochina Zeit
+Asia/Sakhalin.generic.long=Sakhalin Zeit
+Asia/Samarkand.generic.long=Usbekistan Zeit
+Asia/Seoul.generic.long=Zeitzone f\u00FCr Korea
+Asia/Shanghai.generic.long=Zeitzone f\u00FCr China
+Asia/Singapore.generic.long=Singapur Zeit
+Asia/Taipei.generic.long=Zeitzone f\u00FCr China
+Asia/Tashkent.generic.long=Usbekistan Zeit
+Asia/Tbilisi.generic.long=Georgische Zeit
+Asia/Tehran.generic.long=Iranische Zeit
+Asia/Tel_Aviv.generic.long=Zeitzone f\u00FCr Israel
+Asia/Thimbu.generic.long=Bhutanische Zeit
+Asia/Thimphu.generic.long=Bhutanische Zeit
+Asia/Tokyo.generic.long=Zeitzone f\u00FCr Japan
+Asia/Ujung_Pandang.generic.long=Zentralindonesische Zeit
+Asia/Ulaanbaatar.generic.long=Ulaanbaatar Zeit
+Asia/Ulan_Bator.generic.long=Ulaanbaatar Zeit
+Asia/Urumqi.generic.long=Zeitzone f\u00FCr China
+Asia/Ust-Nera.daylight.long=Ust-Nera Sommerzeit
+Asia/Ust-Nera.generic.long=Ust-Nera Zeit
+Asia/Ust-Nera.standard.long=Ust-Nera Zeit
+Asia/Vientiane.generic.long=Indochina Zeit
+Asia/Vladivostok.generic.long=Wladiwostok Zeit
+Asia/Yakutsk.generic.long=Jakutsk Zeit
+Asia/Yekaterinburg.generic.long=Jekaterinburger Zeit
+Asia/Yerevan.generic.long=Armenische Zeit
+Atlantic/Azores.generic.long=Azoren Zeit
+Atlantic/Bermuda.generic.long=Zeitzone Atlantik
+Atlantic/Canary.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Cape_Verde.generic.long=Kap Verde Zeit
+Atlantic/Faeroe.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Faroe.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Jan_Mayen.generic.long=Mitteleurop\u00E4ische Zeit
+Atlantic/Madeira.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Reykjavik.generic.long=Greenwich Zeit
+Atlantic/South_Georgia.generic.long=Zeitzone f\u00FCr S\u00FCdgeorgien
+Atlantic/St_Helena.generic.long=Greenwich Zeit
+Atlantic/Stanley.generic.long=Falkland Inseln Zeit
+Australia/ACT.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/ACT.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/ACT.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Adelaide.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien)
+Australia/Adelaide.generic.long=Zentrale Zeitzone (S\u00FCdaustralien)
+Australia/Adelaide.standard.long=Zentrale Normalzeit (S\u00FCdaustralien)
+Australia/Brisbane.daylight.long=\u00D6stliche Sommerzeit (Queensland)
+Australia/Brisbane.generic.long=\u00D6stliche Zeitzone (Queensland)
+Australia/Brisbane.standard.long=\u00D6stliche Normalzeit (Queensland)
+Australia/Broken_Hill.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)
+Australia/Broken_Hill.generic.long=Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)
+Australia/Broken_Hill.standard.long=Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)
+Australia/Canberra.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/Canberra.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/Canberra.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Currie.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/Currie.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/Currie.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Darwin.daylight.long=Zentrale Sommerzeit (Northern Territory)
+Australia/Darwin.generic.long=Zentrale Zeitzone (Northern Territory)
+Australia/Darwin.standard.long=Zentrale Normalzeit (Northern Territory)
+Australia/Eucla.daylight.long=Zentral-Westliche Sommerzeit (Australien)
+Australia/Eucla.generic.long=Zentral-Westliche Normalzeit (Australien)
+Australia/Eucla.standard.long=Zentral-Westliche Normalzeit (Australien)
+Australia/Hobart.daylight.long=\u00D6stliche Sommerzeit (Tasmanien)
+Australia/Hobart.generic.long=\u00D6stliche Zeitzone (Tasmanien)
+Australia/Hobart.standard.long=\u00D6stliche Normalzeit (Tasmanien)
+Australia/LHI.generic.long=Lord-Howe Normalzeit
+Australia/Lindeman.daylight.long=\u00D6stliche Sommerzeit (Queensland)
+Australia/Lindeman.generic.long=\u00D6stliche Zeitzone (Queensland)
+Australia/Lindeman.standard.long=\u00D6stliche Normalzeit (Queensland)
+Australia/Lord_Howe.generic.long=Lord-Howe Normalzeit
+Australia/Melbourne.daylight.long=\u00D6stliche Sommerzeit (Victoria)
+Australia/Melbourne.generic.long=\u00D6stliche Zeitzone (Victoria)
+Australia/Melbourne.standard.long=\u00D6stliche Normalzeit (Victoria)
+Australia/NSW.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/NSW.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/NSW.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/North.daylight.long=Zentrale Sommerzeit (Northern Territory)
+Australia/North.generic.long=Zentrale Zeitzone (Northern Territory)
+Australia/North.standard.long=Zentrale Normalzeit (Northern Territory)
+Australia/Perth.daylight.long=Westliche Sommerzeit (Australien)
+Australia/Perth.generic.long=Westliche Zeitzone (Australien)
+Australia/Perth.standard.long=Westliche Normalzeit (Australien)
+Australia/Queensland.daylight.long=\u00D6stliche Sommerzeit (Queensland)
+Australia/Queensland.generic.long=\u00D6stliche Zeitzone (Queensland)
+Australia/Queensland.standard.long=\u00D6stliche Normalzeit (Queensland)
+Australia/South.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien)
+Australia/South.generic.long=Zentrale Zeitzone (S\u00FCdaustralien)
+Australia/South.standard.long=Zentrale Normalzeit (S\u00FCdaustralien)
+Australia/Sydney.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/Sydney.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/Sydney.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Tasmania.daylight.long=\u00D6stliche Sommerzeit (Tasmanien)
+Australia/Tasmania.generic.long=\u00D6stliche Zeitzone (Tasmanien)
+Australia/Tasmania.standard.long=\u00D6stliche Normalzeit (Tasmanien)
+Australia/Victoria.daylight.long=\u00D6stliche Sommerzeit (Victoria)
+Australia/Victoria.generic.long=\u00D6stliche Zeitzone (Victoria)
+Australia/Victoria.standard.long=\u00D6stliche Normalzeit (Victoria)
+Australia/West.daylight.long=Westliche Sommerzeit (Australien)
+Australia/West.generic.long=Westliche Zeitzone (Australien)
+Australia/West.standard.long=Westliche Normalzeit (Australien)
+Australia/Yancowinna.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)
+Australia/Yancowinna.generic.long=Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)
+Australia/Yancowinna.standard.long=Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)
+BET.generic.long=Brasilianische Zeit
+BST.generic.long=Bangladesch Zeit
+Brazil/Acre.generic.long=Acre Normalzeit
+Brazil/DeNoronha.generic.long=Fernando de Noronha Zeit
+Brazil/East.generic.long=Brasilianische Zeit
+Brazil/West.generic.long=Amazonas Normalzeit
+CAT.generic.long=Zentralafrikanische Zeit
+CET.generic.long=Mitteleurop\u00e4ische Zeit
+CNT.generic.long=Zeitzone f\u00FCr Neufundland
+CST.generic.long=Zentrale Zeitzone
+CST6CDT.generic.long=Zentrale Zeitzone
+CTT.generic.long=Zeitzone f\u00FCr China
+Canada/Atlantic.generic.long=Zeitzone Atlantik
+Canada/Central.generic.long=Zentrale Zeitzone
+Canada/East-Saskatchewan.generic.long=Zentrale Zeitzone
+Canada/Eastern.generic.long=\u00D6stliche Zeitzone
+Canada/Mountain.generic.long=Zeitzone Mountain
+Canada/Newfoundland.generic.long=Zeitzone f\u00FCr Neufundland
+Canada/Pacific.generic.long=Zeitzone Pazifik
+Canada/Saskatchewan.generic.long=Zentrale Zeitzone
+Canada/Yukon.generic.long=Zeitzone Pazifik
+Chile/Continental.generic.long=Chilenische Zeit
+Chile/EasterIsland.generic.long=Osterinseln Zeit
+Cuba.generic.long=Kubanische Normalzeit
+EAT.generic.long=Ostafrikanische Zeit
+ECT.generic.long=Mitteleurop\u00E4ische Zeit
+EET.generic.long=Osteurop\u00e4ische Zeit
+EST.generic.long=\u00d6stliche Zeitzone
+EST5EDT.generic.long=\u00d6stliche Zeitzone
+Egypt.generic.long=Osteurop\u00E4ische Zeit
+Eire.generic.long=Irische Zeit
+Etc/Greenwich.generic.long=Greenwich Zeit
+Etc/UCT.generic.long=Koordinierte Universalzeit
+Etc/UTC.generic.long=Koordinierte Universalzeit
+Etc/Universal.generic.long=Koordinierte Universalzeit
+Etc/Zulu.generic.long=Koordinierte Universalzeit
+Europe/Amsterdam.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Andorra.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Athens.generic.long=Osteurop\u00E4ische Zeit
+Europe/Belfast.generic.long=Britische Zeit
+Europe/Belgrade.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Berlin.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Bratislava.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Brussels.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Bucharest.generic.long=Osteurop\u00E4ische Zeit
+Europe/Budapest.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Busingen.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Chisinau.generic.long=Osteurop\u00E4ische Zeit
+Europe/Copenhagen.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Dublin.generic.long=Irische Zeit
+Europe/Gibraltar.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Guernsey.generic.long=Britische Zeit
+Europe/Helsinki.generic.long=Osteurop\u00E4ische Zeit
+Europe/Isle_of_Man.generic.long=Britische Zeit
+Europe/Istanbul.generic.long=Osteurop\u00E4ische Zeit
+Europe/Jersey.generic.long=Britische Zeit
+Europe/Kaliningrad.daylight.long=Kaliningrader Sommerzeit
+Europe/Kaliningrad.generic.long=Kaliningrader Zeit
+Europe/Kaliningrad.standard.long=Kaliningrader Zeit
+Europe/Kiev.generic.long=Osteurop\u00E4ische Zeit
+Europe/Lisbon.generic.long=Westeurop\u00E4ische Zeit
+Europe/Ljubljana.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/London.generic.long=Britische Zeit
+Europe/Luxembourg.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Madrid.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Malta.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Mariehamn.generic.long=Osteurop\u00E4ische Zeit
+Europe/Minsk.daylight.long=Kaliningrader Sommerzeit
+Europe/Minsk.generic.long=Kaliningrader Zeit
+Europe/Minsk.standard.long=Kaliningrader Zeit
+Europe/Monaco.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Moscow.generic.long=Zeitzone f\u00FCr Moskau
+Europe/Nicosia.generic.long=Osteurop\u00E4ische Zeit
+Europe/Oslo.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Paris.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Podgorica.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Prague.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Riga.generic.long=Osteurop\u00E4ische Zeit
+Europe/Rome.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Samara.generic.long=Samarische Zeit
+Europe/San_Marino.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Sarajevo.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Simferopol.generic.long=Osteurop\u00E4ische Zeit
+Europe/Skopje.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Sofia.generic.long=Osteurop\u00E4ische Zeit
+Europe/Stockholm.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Tallinn.generic.long=Osteurop\u00E4ische Zeit
+Europe/Tirane.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Tiraspol.generic.long=Osteurop\u00E4ische Zeit
+Europe/Uzhgorod.generic.long=Osteurop\u00E4ische Zeit
+Europe/Vaduz.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Vatican.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Vienna.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Vilnius.generic.long=Osteurop\u00E4ische Zeit
+Europe/Volgograd.generic.long=Wolgograder Zeit
+Europe/Warsaw.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Zagreb.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Zaporozhye.generic.long=Osteurop\u00E4ische Zeit
+Europe/Zurich.generic.long=Mitteleurop\u00E4ische Zeit
+GB-Eire.generic.long=Britische Zeit
+GB.generic.long=Britische Zeit
+GMT.generic.long=Greenwich Zeit
+Greenwich.generic.long=Greenwich Zeit
+HST.generic.long=Zeitzone f\u00fcr Hawaii
+Hongkong.generic.long=Hongkong Zeit
+IET.generic.long=\u00D6stliche Zeitzone
+IST.generic.long=Zeitzone f\u00FCr Indien
+Iceland.generic.long=Greenwich Zeit
+Indian/Antananarivo.generic.long=Ostafrikanische Zeit
+Indian/Chagos.generic.long=Indischer Ozean Territorium Zeit
+Indian/Christmas.generic.long=Weihnachtsinseln Zeit
+Indian/Cocos.generic.long=Kokos-Inseln Zeit
+Indian/Comoro.generic.long=Ostafrikanische Zeit
+Indian/Kerguelen.generic.long=Franz\u00F6sisch S\u00FCd- u. Antarktische Landzeit
+Indian/Mahe.generic.long=Seychellen Zeit
+Indian/Maldives.generic.long=Maledivische Zeit
+Indian/Mauritius.generic.long=Mauritius Zeit
+Indian/Mayotte.generic.long=Ostafrikanische Zeit
+Indian/Reunion.generic.long=R\u00E9union Zeit
+Iran.generic.long=Iranische Zeit
+Israel.generic.long=Zeitzone f\u00FCr Israel
+JST.generic.long=Zeitzone f\u00FCr Japan
+Jamaica.generic.long=\u00D6stliche Zeitzone
+Japan.generic.long=Zeitzone f\u00FCr Japan
+Kwajalein.generic.long=Marshallinseln Zeit
+Libya.generic.long=Osteurop\u00e4ische Zeit
+MET.generic.long=MET
+MIT.generic.long=West Samoa Zeit
+MST.generic.long=Zeitzone Mountain
+MST7MDT.generic.long=Zeitzone Mountain
+Mexico/BajaNorte.generic.long=Zeitzone Pazifik
+Mexico/BajaSur.generic.long=Zeitzone Mountain
+Mexico/General.generic.long=Zentrale Zeitzone
+NET.generic.long=Armenische Zeit
+NST.generic.long=Zeitzone f\u00FCr Neuseeland
+NZ-CHAT.generic.long=Zeitzone f\u00FCr Chatham-Inseln
+NZ.generic.long=Zeitzone f\u00FCr Neuseeland
+Navajo.generic.long=Zeitzone Mountain
+PLT.generic.long=Pakistanische Zeit
+PNT.generic.long=Zeitzone Mountain
+PRC.generic.long=Zeitzone f\u00FCr China
+PRT.generic.long=Zeitzone Atlantik
+PST.generic.long=Zeitzone Pazifik
+PST8PDT.generic.long=Zeitzone Pazifik
+Pacific/Apia.generic.long=West Samoa Zeit
+Pacific/Auckland.generic.long=Zeitzone f\u00FCr Neuseeland
+Pacific/Chatham.generic.long=Zeitzone f\u00FCr Chatham-Inseln
+Pacific/Chuuk.daylight.long=Chuuk Sommerzeit
+Pacific/Chuuk.generic.long=Chuuk Zeit
+Pacific/Chuuk.standard.long=Chuuk Zeit
+Pacific/Easter.generic.long=Osterinseln Zeit
+Pacific/Efate.generic.long=Vanuatu Zeit
+Pacific/Enderbury.generic.long=Phoenix Inseln Zeit
+Pacific/Fakaofo.generic.long=Tokelau Zeit
+Pacific/Fiji.generic.long=Fidschi Zeit
+Pacific/Funafuti.generic.long=Tuvalu Zeit
+Pacific/Galapagos.generic.long=Galapagos Zeit
+Pacific/Gambier.generic.long=Gambier Zeit
+Pacific/Guadalcanal.generic.long=Salomoninseln Zeit
+Pacific/Guam.generic.long=Zeitzone f\u00FCr die Marianen
+Pacific/Honolulu.generic.long=Zeitzone f\u00FCr Hawaii
+Pacific/Johnston.generic.long=Zeitzone f\u00FCr Hawaii
+Pacific/Kiritimati.generic.long=Line Inseln Zeit
+Pacific/Kosrae.generic.long=Kosrae Zeit
+Pacific/Kwajalein.generic.long=Marshallinseln Zeit
+Pacific/Majuro.generic.long=Marshallinseln Zeit
+Pacific/Marquesas.generic.long=Marquesas Zeit
+Pacific/Midway.generic.long=Zeitzone f\u00FCr Samoa
+Pacific/Nauru.generic.long=Nauru Zeit
+Pacific/Niue.generic.long=Niue Zeit
+Pacific/Norfolk.generic.long=Norfolk Zeit
+Pacific/Noumea.generic.long=Neukaledonische Zeit
+Pacific/Pago_Pago.generic.long=Zeitzone f\u00FCr Samoa
+Pacific/Palau.generic.long=Palau Zeit
+Pacific/Pitcairn.generic.long=Zeitzone f\u00FCr Pitcairn
+Pacific/Pohnpei.daylight.long=Pohnpei Sommerzeit
+Pacific/Pohnpei.generic.long=Pohnpei-Inseln Zeit
+Pacific/Pohnpei.standard.long=Pohnpei Zeit
+Pacific/Ponape.daylight.long=Pohnpei Sommerzeit
+Pacific/Ponape.generic.long=Pohnpei-Inseln Zeit
+Pacific/Ponape.standard.long=Pohnpei Zeit
+Pacific/Port_Moresby.generic.long=Papua-Neuguinea Zeit
+Pacific/Rarotonga.generic.long=Cook-Inseln Zeit
+Pacific/Saipan.generic.long=Zeitzone f\u00FCr die Marianen
+Pacific/Samoa.generic.long=Zeitzone f\u00FCr Samoa
+Pacific/Tahiti.generic.long=Tahiti Zeit
+Pacific/Tarawa.generic.long=Gilbert-Inseln Zeit
+Pacific/Tongatapu.generic.long=Tonga Zeit
+Pacific/Truk.daylight.long=Chuuk Sommerzeit
+Pacific/Truk.generic.long=Chuuk Zeit
+Pacific/Truk.standard.long=Chuuk Zeit
+Pacific/Wake.generic.long=Wake Zeit
+Pacific/Wallis.generic.long=Wallis u. Futuna Zeit
+Pacific/Yap.daylight.long=Chuuk Sommerzeit
+Pacific/Yap.generic.long=Chuuk Zeit
+Pacific/Yap.standard.long=Chuuk Zeit
+Poland.generic.long=Mitteleurop\u00E4ische Zeit
+Portugal.generic.long=Westeurop\u00E4ische Zeit
+ROK.generic.long=Zeitzone f\u00FCr Korea
+SST.generic.long=Salomoninseln Zeit
+Singapore.generic.long=Singapur Zeit
+SystemV/AST4.generic.long=Zeitzone Atlantik
+SystemV/AST4ADT.generic.long=Zeitzone Atlantik
+SystemV/CST6.generic.long=Zentrale Zeitzone
+SystemV/CST6CDT.generic.long=Zentrale Zeitzone
+SystemV/EST5.generic.long=\u00D6stliche Zeitzone
+SystemV/EST5EDT.generic.long=\u00D6stliche Zeitzone
+SystemV/HST10.generic.long=Zeitzone f\u00FCr Hawaii
+SystemV/MST7.generic.long=Zeitzone Mountain
+SystemV/MST7MDT.generic.long=Zeitzone Mountain
+SystemV/PST8.generic.long=Zeitzone Pazifik
+SystemV/PST8PDT.generic.long=Zeitzone Pazifik
+SystemV/YST9.generic.long=Zeitzone f\u00FCr Alaska
+SystemV/YST9YDT.generic.long=Zeitzone f\u00FCr Alaska
+Turkey.generic.long=Osteurop\u00E4ische Zeit
+UCT.generic.long=Koordinierte Universalzeit
+US/Alaska.generic.long=Zeitzone f\u00FCr Alaska
+US/Aleutian.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen
+US/Arizona.generic.long=Zeitzone Mountain
+US/Central.generic.long=Zentrale Zeitzone
+US/East-Indiana.generic.long=\u00D6stliche Zeitzone
+US/Eastern.generic.long=\u00D6stliche Zeitzone
+US/Hawaii.generic.long=Zeitzone f\u00FCr Hawaii
+US/Indiana-Starke.generic.long=Zentrale Zeitzone
+US/Michigan.generic.long=\u00D6stliche Zeitzone
+US/Mountain.generic.long=Zeitzone Mountain
+US/Pacific-New.generic.long=Zeitzone Pazifik
+US/Pacific.generic.long=Zeitzone Pazifik
+US/Samoa.generic.long=Zeitzone f\u00FCr Samoa
+UTC.generic.long=Koordinierte Universalzeit
+Universal.generic.long=Koordinierte Universalzeit
+VST.generic.long=Indochina Zeit
+W-SU.generic.long=Zeitzone f\u00FCr Moskau
+WET.generic.long=Westeurop\u00e4ische Zeit
+Zulu.generic.long=Koordinierte Universalzeit
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=MESZ
+Africa/Algiers.generic.short=MEZ
+Africa/Algiers.standard.short=MEZ
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=OESZ
+Africa/Cairo.generic.short=OEZ
+Africa/Cairo.standard.short=OEZ
+Africa/Casablanca.daylight.short=WESZ
+Africa/Casablanca.generic.short=WEZ
+Africa/Casablanca.standard.short=WEZ
+Africa/Ceuta.daylight.short=MESZ
+Africa/Ceuta.generic.short=MEZ
+Africa/Ceuta.standard.short=MEZ
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WESZ
+Africa/El_Aaiun.generic.short=WEZ
+Africa/El_Aaiun.standard.short=WEZ
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=OESZ
+Africa/Tripoli.generic.short=OEZ
+Africa/Tripoli.standard.short=OEZ
+Africa/Tunis.daylight.short=MESZ
+Africa/Tunis.generic.short=MEZ
+Africa/Tunis.standard.short=MEZ
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=MESZ
+Arctic/Longyearbyen.generic.short=MEZ
+Arctic/Longyearbyen.standard.short=MEZ
+ART.daylight.short=OESZ
+ART.generic.short=OEZ
+ART.standard.short=OEZ
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=OESZ
+Asia/Beirut.generic.short=OEZ
+Asia/Beirut.standard.short=OEZ
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=OESZ
+Asia/Damascus.generic.short=OEZ
+Asia/Damascus.standard.short=OEZ
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=OESZ
+Asia/Gaza.generic.short=OEZ
+Asia/Gaza.standard.short=OEZ
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=OESZ
+Asia/Hebron.generic.short=OEZ
+Asia/Hebron.standard.short=OEZ
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=OESZ
+Asia/Istanbul.generic.short=OEZ
+Asia/Istanbul.standard.short=OEZ
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=OESZ
+Asia/Nicosia.generic.short=OEZ
+Asia/Nicosia.standard.short=OEZ
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WESZ
+Atlantic/Canary.generic.short=WEZ
+Atlantic/Canary.standard.short=WEZ
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WESZ
+Atlantic/Faeroe.generic.short=WEZ
+Atlantic/Faeroe.standard.short=WEZ
+Atlantic/Faroe.daylight.short=WESZ
+Atlantic/Faroe.generic.short=WEZ
+Atlantic/Faroe.standard.short=WEZ
+Atlantic/Jan_Mayen.daylight.short=MESZ
+Atlantic/Jan_Mayen.generic.short=MEZ
+Atlantic/Jan_Mayen.standard.short=MEZ
+Atlantic/Madeira.daylight.short=WESZ
+Atlantic/Madeira.generic.short=WEZ
+Atlantic/Madeira.standard.short=WEZ
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=MESZ
+CET.generic.short=MEZ
+CET.standard.short=MEZ
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=MESZ
+ECT.generic.short=MEZ
+ECT.standard.short=MEZ
+EET.daylight.short=OESZ
+EET.generic.short=OEZ
+EET.standard.short=OEZ
+Egypt.daylight.short=OESZ
+Egypt.generic.short=OEZ
+Egypt.standard.short=OEZ
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=MESZ
+Europe/Amsterdam.generic.short=MEZ
+Europe/Amsterdam.standard.short=MEZ
+Europe/Andorra.daylight.short=MESZ
+Europe/Andorra.generic.short=MEZ
+Europe/Andorra.standard.short=MEZ
+Europe/Athens.daylight.short=OESZ
+Europe/Athens.generic.short=OEZ
+Europe/Athens.standard.short=OEZ
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=MESZ
+Europe/Belgrade.generic.short=MEZ
+Europe/Belgrade.standard.short=MEZ
+Europe/Berlin.daylight.short=MESZ
+Europe/Berlin.generic.short=MEZ
+Europe/Berlin.standard.short=MEZ
+Europe/Bratislava.daylight.short=MESZ
+Europe/Bratislava.generic.short=MEZ
+Europe/Bratislava.standard.short=MEZ
+Europe/Brussels.daylight.short=MESZ
+Europe/Brussels.generic.short=MEZ
+Europe/Brussels.standard.short=MEZ
+Europe/Bucharest.daylight.short=OESZ
+Europe/Bucharest.generic.short=OEZ
+Europe/Bucharest.standard.short=OEZ
+Europe/Budapest.daylight.short=MESZ
+Europe/Budapest.generic.short=MEZ
+Europe/Budapest.standard.short=MEZ
+Europe/Busingen.daylight.short=MESZ
+Europe/Busingen.generic.short=MEZ
+Europe/Busingen.standard.short=MEZ
+Europe/Chisinau.daylight.short=OESZ
+Europe/Chisinau.generic.short=OEZ
+Europe/Chisinau.standard.short=OEZ
+Europe/Copenhagen.daylight.short=MESZ
+Europe/Copenhagen.generic.short=MEZ
+Europe/Copenhagen.standard.short=MEZ
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=MESZ
+Europe/Gibraltar.generic.short=MEZ
+Europe/Gibraltar.standard.short=MEZ
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=OESZ
+Europe/Helsinki.generic.short=OEZ
+Europe/Helsinki.standard.short=OEZ
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=OESZ
+Europe/Istanbul.generic.short=OEZ
+Europe/Istanbul.standard.short=OEZ
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=OESZ
+Europe/Kiev.generic.short=OEZ
+Europe/Kiev.standard.short=OEZ
+Europe/Lisbon.daylight.short=WESZ
+Europe/Lisbon.generic.short=WEZ
+Europe/Lisbon.standard.short=WEZ
+Europe/Ljubljana.daylight.short=MESZ
+Europe/Ljubljana.generic.short=MEZ
+Europe/Ljubljana.standard.short=MEZ
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=MESZ
+Europe/Luxembourg.generic.short=MEZ
+Europe/Luxembourg.standard.short=MEZ
+Europe/Madrid.daylight.short=MESZ
+Europe/Madrid.generic.short=MEZ
+Europe/Madrid.standard.short=MEZ
+Europe/Malta.daylight.short=MESZ
+Europe/Malta.generic.short=MEZ
+Europe/Malta.standard.short=MEZ
+Europe/Mariehamn.daylight.short=OESZ
+Europe/Mariehamn.generic.short=OEZ
+Europe/Mariehamn.standard.short=OEZ
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=MESZ
+Europe/Monaco.generic.short=MEZ
+Europe/Monaco.standard.short=MEZ
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=OESZ
+Europe/Nicosia.generic.short=OEZ
+Europe/Nicosia.standard.short=OEZ
+Europe/Oslo.daylight.short=MESZ
+Europe/Oslo.generic.short=MEZ
+Europe/Oslo.standard.short=MEZ
+Europe/Paris.daylight.short=MESZ
+Europe/Paris.generic.short=MEZ
+Europe/Paris.standard.short=MEZ
+Europe/Podgorica.daylight.short=MESZ
+Europe/Podgorica.generic.short=MEZ
+Europe/Podgorica.standard.short=MEZ
+Europe/Prague.daylight.short=MESZ
+Europe/Prague.generic.short=MEZ
+Europe/Prague.standard.short=MEZ
+Europe/Riga.daylight.short=OESZ
+Europe/Riga.generic.short=OEZ
+Europe/Riga.standard.short=OEZ
+Europe/Rome.daylight.short=MESZ
+Europe/Rome.generic.short=MEZ
+Europe/Rome.standard.short=MEZ
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=MESZ
+Europe/San_Marino.generic.short=MEZ
+Europe/San_Marino.standard.short=MEZ
+Europe/Sarajevo.daylight.short=MESZ
+Europe/Sarajevo.generic.short=MEZ
+Europe/Sarajevo.standard.short=MEZ
+Europe/Simferopol.daylight.short=OESZ
+Europe/Simferopol.generic.short=OEZ
+Europe/Simferopol.standard.short=OEZ
+Europe/Skopje.daylight.short=MESZ
+Europe/Skopje.generic.short=MEZ
+Europe/Skopje.standard.short=MEZ
+Europe/Sofia.daylight.short=OESZ
+Europe/Sofia.generic.short=OEZ
+Europe/Sofia.standard.short=OEZ
+Europe/Stockholm.daylight.short=MESZ
+Europe/Stockholm.generic.short=MEZ
+Europe/Stockholm.standard.short=MEZ
+Europe/Tallinn.daylight.short=OESZ
+Europe/Tallinn.generic.short=OEZ
+Europe/Tallinn.standard.short=OEZ
+Europe/Tirane.daylight.short=MESZ
+Europe/Tirane.generic.short=MEZ
+Europe/Tirane.standard.short=MEZ
+Europe/Tiraspol.daylight.short=OESZ
+Europe/Tiraspol.generic.short=OEZ
+Europe/Tiraspol.standard.short=OEZ
+Europe/Uzhgorod.daylight.short=OESZ
+Europe/Uzhgorod.generic.short=OEZ
+Europe/Uzhgorod.standard.short=OEZ
+Europe/Vaduz.daylight.short=MESZ
+Europe/Vaduz.generic.short=MEZ
+Europe/Vaduz.standard.short=MEZ
+Europe/Vatican.daylight.short=MESZ
+Europe/Vatican.generic.short=MEZ
+Europe/Vatican.standard.short=MEZ
+Europe/Vienna.daylight.short=MESZ
+Europe/Vienna.generic.short=MEZ
+Europe/Vienna.standard.short=MEZ
+Europe/Vilnius.daylight.short=OESZ
+Europe/Vilnius.generic.short=OEZ
+Europe/Vilnius.standard.short=OEZ
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=MESZ
+Europe/Warsaw.generic.short=MEZ
+Europe/Warsaw.standard.short=MEZ
+Europe/Zagreb.daylight.short=MESZ
+Europe/Zagreb.generic.short=MEZ
+Europe/Zagreb.standard.short=MEZ
+Europe/Zaporozhye.daylight.short=OESZ
+Europe/Zaporozhye.generic.short=OEZ
+Europe/Zaporozhye.standard.short=OEZ
+Europe/Zurich.daylight.short=MESZ
+Europe/Zurich.generic.short=MEZ
+Europe/Zurich.standard.short=MEZ
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=OESZ
+Libya.generic.short=OEZ
+Libya.standard.short=OEZ
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=MESZ
+Poland.generic.short=MEZ
+Poland.standard.short=MEZ
+Portugal.daylight.short=WESZ
+Portugal.generic.short=WEZ
+Portugal.standard.short=WEZ
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=OESZ
+Turkey.generic.short=OEZ
+Turkey.standard.short=OEZ
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WESZ
+WET.generic.short=WEZ
+WET.standard.short=WEZ
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Hora de verano Central (territorio del Norte)
+ACT.generic.long=Hora Central (Territorio Septentrional)
+ACT.standard.long=Hora est\u00E1ndar Central (territorio del Norte)
+AET.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+AET.generic.long=Hora Oriental (Nueva Gales del Sur)
+AET.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+AGT.generic.long=Hora de Argentina
+ART.generic.long=Hora de Europa Oriental
+AST.generic.long=Hora de Alaska
+Africa/Abidjan.generic.long=Hora del Meridiano de Greenwich
+Africa/Accra.generic.long=Hora central de Ghana
+Africa/Addis_Ababa.generic.long=Hora de \u00C1frica Oriental
+Africa/Algiers.generic.long=Hora de Europa Central
+Africa/Asmara.generic.long=Hora de \u00C1frica Oriental
+Africa/Asmera.generic.long=Hora de \u00C1frica Oriental
+Africa/Bamako.generic.long=Hora del Meridiano de Greenwich
+Africa/Bangui.generic.long=Hora de \u00C1frica Occidental
+Africa/Banjul.generic.long=Hora del Meridiano de Greenwich
+Africa/Bissau.generic.long=Hora del Meridiano de Greenwich
+Africa/Blantyre.generic.long=Hora de \u00C1frica Central
+Africa/Brazzaville.generic.long=Hora de \u00C1frica Occidental
+Africa/Bujumbura.generic.long=Hora de \u00C1frica Central
+Africa/Cairo.generic.long=Hora de Europa Oriental
+Africa/Casablanca.generic.long=Hora de Europa Occidental
+Africa/Ceuta.generic.long=Hora de Europa Central
+Africa/Conakry.generic.long=Hora del Meridiano de Greenwich
+Africa/Dakar.generic.long=Hora del Meridiano de Greenwich
+Africa/Dar_es_Salaam.generic.long=Hora de \u00C1frica Oriental
+Africa/Djibouti.generic.long=Hora de \u00C1frica Oriental
+Africa/Douala.generic.long=Hora de \u00C1frica Occidental
+Africa/El_Aaiun.generic.long=Hora de Europa Occidental
+Africa/Freetown.generic.long=Horario de Sierra Leona
+Africa/Gaborone.generic.long=Hora de \u00C1frica Central
+Africa/Harare.generic.long=Hora de \u00C1frica Central
+Africa/Johannesburg.generic.long=Hora de Sud\u00E1frica
+Africa/Juba.generic.long=Hora de \u00C1frica Oriental
+Africa/Kampala.generic.long=Hora de \u00C1frica Oriental
+Africa/Khartoum.generic.long=Hora de \u00C1frica Oriental
+Africa/Kigali.generic.long=Hora de \u00C1frica Central
+Africa/Kinshasa.generic.long=Hora de \u00C1frica Occidental
+Africa/Lagos.generic.long=Hora de \u00C1frica Occidental
+Africa/Libreville.generic.long=Hora de \u00C1frica Occidental
+Africa/Lome.generic.long=Hora del Meridiano de Greenwich
+Africa/Luanda.generic.long=Hora de \u00C1frica Occidental
+Africa/Lubumbashi.generic.long=Hora de \u00C1frica Central
+Africa/Lusaka.generic.long=Hora de \u00C1frica Central
+Africa/Malabo.generic.long=Hora de \u00C1frica Occidental
+Africa/Maputo.generic.long=Hora de \u00C1frica Central
+Africa/Maseru.generic.long=Hora de Sud\u00E1frica
+Africa/Mbabane.generic.long=Hora de Sud\u00E1frica
+Africa/Mogadishu.generic.long=Hora de \u00C1frica Oriental
+Africa/Monrovia.generic.long=Hora del Meridiano de Greenwich
+Africa/Nairobi.generic.long=Hora de \u00C1frica Oriental
+Africa/Ndjamena.generic.long=Hora de \u00C1frica Occidental
+Africa/Niamey.generic.long=Hora de \u00C1frica Occidental
+Africa/Nouakchott.generic.long=Hora del Meridiano de Greenwich
+Africa/Ouagadougou.generic.long=Hora del Meridiano de Greenwich
+Africa/Porto-Novo.generic.long=Hora de \u00C1frica Occidental
+Africa/Sao_Tome.generic.long=Hora del Meridiano de Greenwich
+Africa/Timbuktu.generic.long=Hora del Meridiano de Greenwich
+Africa/Tripoli.generic.long=Hora de Europa Oriental
+Africa/Tunis.generic.long=Hora de Europa Central
+Africa/Windhoek.generic.long=Hora de \u00C1frica Occidental
+America/Adak.generic.long=Hora de Hawaii-Aleutian
+America/Anchorage.generic.long=Hora de Alaska
+America/Anguilla.generic.long=Hora del Atl\u00E1ntico
+America/Antigua.generic.long=Hora del Atl\u00E1ntico
+America/Araguaina.generic.long=Hora de Brasil
+America/Argentina/Buenos_Aires.generic.long=Hora de Argentina
+America/Argentina/Catamarca.generic.long=Hora de Argentina
+America/Argentina/ComodRivadavia.generic.long=Hora de Argentina
+America/Argentina/Cordoba.generic.long=Hora de Argentina
+America/Argentina/Jujuy.generic.long=Hora de Argentina
+America/Argentina/La_Rioja.generic.long=Hora de Argentina
+America/Argentina/Mendoza.generic.long=Hora de Argentina
+America/Argentina/Rio_Gallegos.generic.long=Hora de Argentina
+America/Argentina/Salta.generic.long=Hora de Argentina
+America/Argentina/San_Juan.generic.long=Hora de Argentina
+America/Argentina/San_Luis.generic.long=Hora de Argentina
+America/Argentina/Tucuman.generic.long=Hora de Argentina
+America/Argentina/Ushuaia.generic.long=Hora de Argentina
+America/Aruba.generic.long=Hora del Atl\u00E1ntico
+America/Asuncion.generic.long=Hora de Paraguay
+America/Atikokan.generic.long=Hora Oriental
+America/Atka.generic.long=Hora de Hawaii-Aleutian
+America/Bahia.generic.long=Hora de Brasil
+America/Bahia_Banderas.generic.long=Hora Central
+America/Barbados.generic.long=Hora del Atl\u00E1ntico
+America/Belem.generic.long=Hora de Brasil
+America/Belize.generic.long=Hora Central
+America/Blanc-Sablon.generic.long=Hora del Atl\u00E1ntico
+America/Boa_Vista.generic.long=Hora est\u00E1ndar de Amazonia
+America/Bogota.generic.long=Hora de Colombia
+America/Boise.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Buenos_Aires.generic.long=Hora de Argentina
+America/Cambridge_Bay.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Campo_Grande.generic.long=Hora est\u00E1ndar de Amazonia
+America/Cancun.generic.long=Hora Central
+America/Caracas.generic.long=Hora de Venezuela
+America/Catamarca.generic.long=Hora de Argentina
+America/Cayenne.generic.long=Hora de la Guayana Francesa
+America/Cayman.generic.long=Hora Oriental
+America/Chicago.generic.long=Hora Central
+America/Chihuahua.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Coral_Harbour.generic.long=Hora Oriental
+America/Cordoba.generic.long=Hora de Argentina
+America/Costa_Rica.generic.long=Hora Central
+America/Creston.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Cuiaba.generic.long=Hora est\u00E1ndar de Amazonia
+America/Curacao.generic.long=Hora del Atl\u00E1ntico
+America/Danmarkshavn.generic.long=Hora del Meridiano de Greenwich
+America/Dawson.generic.long=Hora del Pac\u00EDfico
+America/Dawson_Creek.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Denver.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Detroit.generic.long=Hora Oriental
+America/Dominica.generic.long=Hora del Atl\u00E1ntico
+America/Edmonton.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Eirunepe.generic.long=Hora de Acre
+America/El_Salvador.generic.long=Hora Central
+America/Ensenada.generic.long=Hora del Pac\u00EDfico
+America/Fort_Wayne.generic.long=Hora Oriental
+America/Fortaleza.generic.long=Hora de Brasil
+America/Glace_Bay.generic.long=Hora del Atl\u00E1ntico
+America/Godthab.generic.long=Hora de Groenlandia Occidental
+America/Goose_Bay.generic.long=Hora del Atl\u00E1ntico
+America/Grand_Turk.generic.long=Hora Oriental
+America/Grenada.generic.long=Hora del Atl\u00E1ntico
+America/Guadeloupe.generic.long=Hora del Atl\u00E1ntico
+America/Guatemala.generic.long=Hora Central
+America/Guayaquil.generic.long=Hora de Ecuador
+America/Guyana.generic.long=Hora de Guyana
+America/Halifax.generic.long=Hora del Atl\u00E1ntico
+America/Havana.generic.long=Hora de Cuba
+America/Hermosillo.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Indiana/Indianapolis.generic.long=Hora Oriental
+America/Indiana/Knox.generic.long=Hora Central
+America/Indiana/Marengo.generic.long=Hora Oriental
+America/Indiana/Petersburg.generic.long=Hora Oriental
+America/Indiana/Tell_City.generic.long=Hora Central
+America/Indiana/Vevay.generic.long=Hora Oriental
+America/Indiana/Vincennes.generic.long=Hora Oriental
+America/Indiana/Winamac.generic.long=Hora Oriental
+America/Indianapolis.generic.long=Hora Oriental
+America/Inuvik.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Iqaluit.generic.long=Hora Oriental
+America/Jamaica.generic.long=Hora Oriental
+America/Jujuy.generic.long=Hora de Argentina
+America/Juneau.generic.long=Hora de Alaska
+America/Kentucky/Louisville.generic.long=Hora Oriental
+America/Kentucky/Monticello.generic.long=Hora Oriental
+America/Knox_IN.generic.long=Hora Central
+America/Kralendijk.generic.long=Hora del Atl\u00E1ntico
+America/La_Paz.generic.long=Hora de Bolivia
+America/Lima.generic.long=Hora de Per\u00FA
+America/Los_Angeles.generic.long=Hora del Pac\u00EDfico
+America/Louisville.generic.long=Hora Oriental
+America/Lower_Princes.generic.long=Hora del Atl\u00E1ntico
+America/Maceio.generic.long=Hora de Brasil
+America/Managua.generic.long=Hora Central
+America/Manaus.generic.long=Hora est\u00E1ndar de Amazonia
+America/Marigot.generic.long=Hora del Atl\u00E1ntico
+America/Martinique.generic.long=Hora del Atl\u00E1ntico
+America/Matamoros.generic.long=Hora Central
+America/Mazatlan.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Mendoza.generic.long=Hora de Argentina
+America/Menominee.generic.long=Hora Central
+America/Merida.generic.long=Hora Central
+America/Metlakatla.daylight.long=Hora de verano de Metlakatla
+America/Metlakatla.generic.long=Metlakatla Time
+America/Metlakatla.standard.long=Hora de Metlakatla
+America/Mexico_City.generic.long=Hora Central
+America/Miquelon.generic.long=Hora de San Pedro y Miquel\u00F3n
+America/Moncton.generic.long=Hora del Atl\u00E1ntico
+America/Monterrey.generic.long=Hora Central
+America/Montevideo.generic.long=Hora de Uruguay
+America/Montreal.generic.long=Hora Oriental
+America/Montserrat.generic.long=Hora del Atl\u00E1ntico
+America/Nassau.generic.long=Hora Oriental
+America/New_York.generic.long=Hora Oriental
+America/Nipigon.generic.long=Hora Oriental
+America/Nome.generic.long=Hora de Alaska
+America/Noronha.generic.long=Hora de Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Hora Central
+America/North_Dakota/Center.generic.long=Hora Central
+America/North_Dakota/New_Salem.generic.long=Hora Central
+America/Ojinaga.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Panama.generic.long=Hora Oriental
+America/Pangnirtung.generic.long=Hora Oriental
+America/Paramaribo.generic.long=Hora de Surinam
+America/Phoenix.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Port-au-Prince.generic.long=Hora Oriental
+America/Port_of_Spain.generic.long=Hora del Atl\u00E1ntico
+America/Porto_Acre.generic.long=Hora de Acre
+America/Porto_Velho.generic.long=Hora est\u00E1ndar de Amazonia
+America/Puerto_Rico.generic.long=Hora del Atl\u00E1ntico
+America/Rainy_River.generic.long=Hora Central
+America/Rankin_Inlet.generic.long=Hora Central
+America/Recife.generic.long=Hora de Brasil
+America/Regina.generic.long=Hora Central
+America/Resolute.generic.long=Hora Central
+America/Rio_Branco.generic.long=Hora de Acre
+America/Rosario.generic.long=Hora de Argentina
+America/Santa_Isabel.generic.long=Hora del Pac\u00EDfico
+America/Santarem.generic.long=Hora de Brasil
+America/Santiago.generic.long=Hora de Chile
+America/Santo_Domingo.generic.long=Hora del Atl\u00E1ntico
+America/Sao_Paulo.generic.long=Hora de Brasil
+America/Scoresbysund.generic.long=Hora de Groenlandia Oriental
+America/Shiprock.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Sitka.generic.long=Hora de Alaska
+America/St_Barthelemy.generic.long=Hora del Atl\u00E1ntico
+America/St_Johns.generic.long=Hora de Terranova
+America/St_Kitts.generic.long=Hora del Atl\u00E1ntico
+America/St_Lucia.generic.long=Hora del Atl\u00E1ntico
+America/St_Thomas.generic.long=Hora del Atl\u00E1ntico
+America/St_Vincent.generic.long=Hora del Atl\u00E1ntico
+America/Swift_Current.generic.long=Hora Central
+America/Tegucigalpa.generic.long=Hora Central
+America/Thule.generic.long=Hora del Atl\u00E1ntico
+America/Thunder_Bay.generic.long=Hora Oriental
+America/Tijuana.generic.long=Hora del Pac\u00EDfico
+America/Toronto.generic.long=Hora Oriental
+America/Tortola.generic.long=Hora del Atl\u00E1ntico
+America/Vancouver.generic.long=Hora del Pac\u00EDfico
+America/Virgin.generic.long=Hora del Atl\u00E1ntico
+America/Whitehorse.generic.long=Hora del Pac\u00EDfico
+America/Winnipeg.generic.long=Hora Central
+America/Yakutat.generic.long=Hora de Alaska
+America/Yellowknife.generic.long=Hora de las Monta\u00F1as Rocosas
+Antarctica/Casey.daylight.long=Hora de verano Occidental (Australia)
+Antarctica/Casey.generic.long=Hora Occidental (Australia)
+Antarctica/Casey.standard.long=Hora est\u00E1ndar Occidental (Australia)
+Antarctica/Davis.generic.long=Hora de Davis
+Antarctica/DumontDUrville.generic.long=Hora de Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Hora de verano de Isla Macquarie
+Antarctica/Macquarie.generic.long=Hora de Isla Macquarie
+Antarctica/Macquarie.standard.long=Hora de Isla Macquarie
+Antarctica/Mawson.generic.long=Hora de Mawson
+Antarctica/McMurdo.generic.long=Hora de Nueva Zelanda
+Antarctica/Palmer.generic.long=Hora de Chile
+Antarctica/Rothera.generic.long=Hora de Rothera
+Antarctica/South_Pole.generic.long=Hora de Nueva Zelanda
+Antarctica/Syowa.generic.long=Hora de Syowa
+Antarctica/Vostok.generic.long=Hora de Vostok
+Arctic/Longyearbyen.generic.long=Hora de Europa Central
+Asia/Aden.generic.long=Hora de Arabia
+Asia/Almaty.generic.long=Hora de Alma-Ata
+Asia/Amman.generic.long=Hora de Arabia
+Asia/Anadyr.generic.long=Hora de Anadyr
+Asia/Aqtau.generic.long=Hora de Aqtau
+Asia/Aqtobe.generic.long=Hora de Aqtobe
+Asia/Ashgabat.generic.long=Hora de Turkmenist\u00E1n
+Asia/Ashkhabad.generic.long=Hora de Turkmenist\u00E1n
+Asia/Baghdad.generic.long=Hora de Arabia
+Asia/Bahrain.generic.long=Hora de Arabia
+Asia/Baku.generic.long=Hora de Azerbaiy\u00E1n
+Asia/Bangkok.generic.long=Hora de Indochina
+Asia/Beirut.generic.long=Hora de Europa Oriental
+Asia/Bishkek.generic.long=Hora de Kirguizist\u00E1n
+Asia/Brunei.generic.long=Hora de Brunei
+Asia/Calcutta.generic.long=Hora de India
+Asia/Choibalsan.generic.long=Hora de Choibalsan
+Asia/Chongqing.generic.long=Hora de China
+Asia/Chungking.generic.long=Hora de China
+Asia/Colombo.generic.long=Hora de India
+Asia/Dacca.generic.long=Hora de Bangladesh
+Asia/Damascus.generic.long=Hora de Europa Oriental
+Asia/Dhaka.generic.long=Hora de Bangladesh
+Asia/Dili.generic.long=Hora de Timor Leste
+Asia/Dubai.generic.long=Hora del Golfo
+Asia/Dushanbe.generic.long=Hora de Tajikist\u00E1n
+Asia/Gaza.generic.long=Hora de Europa Oriental
+Asia/Harbin.generic.long=Hora de China
+Asia/Hebron.generic.long=Hora de Europa Oriental
+Asia/Ho_Chi_Minh.generic.long=Hora de Indochina
+Asia/Hong_Kong.generic.long=Hora de Hong Kong
+Asia/Hovd.generic.long=Hora de Hovd
+Asia/Irkutsk.generic.long=Hora de Irkutsk
+Asia/Istanbul.generic.long=Hora de Europa Oriental
+Asia/Jakarta.generic.long=Hora de Indonesia Occidental
+Asia/Jayapura.generic.long=Hora de Indonesia Oriental
+Asia/Jerusalem.generic.long=Hora de Israel
+Asia/Kabul.generic.long=Hora de Afganist\u00E1n
+Asia/Kamchatka.generic.long=Hora de Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Hora de Pakist\u00E1n
+Asia/Kashgar.generic.long=Hora de China
+Asia/Kathmandu.generic.long=Hora de Nepal
+Asia/Katmandu.generic.long=Hora de Nepal
+Asia/Khandyga.daylight.long=Hora de verano de Khandyga
+Asia/Khandyga.generic.long=Hora de Khandyga
+Asia/Khandyga.standard.long=Hora de Khandyga
+Asia/Kolkata.generic.long=Hora de India
+Asia/Krasnoyarsk.generic.long=Hora de Krasnoyarsk
+Asia/Kuala_Lumpur.generic.long=Hora de Malasia
+Asia/Kuching.generic.long=Hora de Malasia
+Asia/Kuwait.generic.long=Hora de Arabia
+Asia/Macao.generic.long=Hora de China
+Asia/Macau.generic.long=Hora de China
+Asia/Magadan.generic.long=Hora de Magad\u00E1n
+Asia/Makassar.generic.long=Hora de Indonesia Central
+Asia/Manila.generic.long=Hora de Filipinas
+Asia/Muscat.generic.long=Hora del Golfo
+Asia/Nicosia.generic.long=Hora de Europa Oriental
+Asia/Novokuznetsk.generic.long=Hora de Novosibirsk
+Asia/Novosibirsk.generic.long=Hora de Novosibirsk
+Asia/Omsk.generic.long=Hora de Omsk
+Asia/Oral.generic.long=Hora de Uralsk
+Asia/Phnom_Penh.generic.long=Hora de Indochina
+Asia/Pontianak.generic.long=Hora de Indonesia Occidental
+Asia/Pyongyang.generic.long=Hora de Corea
+Asia/Qatar.generic.long=Hora de Arabia
+Asia/Qyzylorda.generic.long=Hora de Qyzylorda
+Asia/Rangoon.generic.long=Hora de Myanmar
+Asia/Saigon.generic.long=Hora de Indochina
+Asia/Sakhalin.generic.long=Hora de Sajalin
+Asia/Samarkand.generic.long=Hora de Uzbekist\u00E1n
+Asia/Seoul.generic.long=Hora de Corea
+Asia/Shanghai.generic.long=Hora de China
+Asia/Singapore.generic.long=Hora de Singapur
+Asia/Taipei.generic.long=Hora de China
+Asia/Tashkent.generic.long=Hora de Uzbekist\u00E1n
+Asia/Tbilisi.generic.long=Hora de Georgia
+Asia/Tehran.generic.long=Hora de Ir\u00E1n
+Asia/Tel_Aviv.generic.long=Hora de Israel
+Asia/Thimbu.generic.long=Hora de But\u00E1n
+Asia/Thimphu.generic.long=Hora de But\u00E1n
+Asia/Tokyo.generic.long=Hora de Jap\u00F3n
+Asia/Ujung_Pandang.generic.long=Hora de Indonesia Central
+Asia/Ulaanbaatar.generic.long=Hora de Ulan Bator
+Asia/Ulan_Bator.generic.long=Hora de Ulan Bator
+Asia/Urumqi.generic.long=Hora de China
+Asia/Ust-Nera.daylight.long=Hora de verano de Ust-Nera
+Asia/Ust-Nera.generic.long=Hora de Ust-Nera
+Asia/Ust-Nera.standard.long=Hora de Ust-Nera
+Asia/Vientiane.generic.long=Hora de Indochina
+Asia/Vladivostok.generic.long=Hora de Vladivostok
+Asia/Yakutsk.generic.long=Hora de Yakutsk
+Asia/Yekaterinburg.generic.long=Hora de Ekaterinburgo
+Asia/Yerevan.generic.long=Hora de Armenia
+Atlantic/Azores.generic.long=Hora de Azores
+Atlantic/Bermuda.generic.long=Hora del Atl\u00E1ntico
+Atlantic/Canary.generic.long=Hora de Europa Occidental
+Atlantic/Cape_Verde.generic.long=Hora de Cabo Verde
+Atlantic/Faeroe.generic.long=Hora de Europa Occidental
+Atlantic/Faroe.generic.long=Hora de Europa Occidental
+Atlantic/Jan_Mayen.generic.long=Hora de Europa Central
+Atlantic/Madeira.generic.long=Hora de Europa Occidental
+Atlantic/Reykjavik.generic.long=Hora del Meridiano de Greenwich
+Atlantic/South_Georgia.generic.long=Hora de Georgia del Sur
+Atlantic/St_Helena.generic.long=Hora del Meridiano de Greenwich
+Atlantic/Stanley.generic.long=Hora de las islas Malvinas
+Australia/ACT.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/ACT.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/ACT.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Adelaide.daylight.long=Hora de verano Central (Sur de Australia)
+Australia/Adelaide.generic.long=Hora Central (Australia del Sur)
+Australia/Adelaide.standard.long=Hora est\u00E1ndar Central (Sur de Australia)
+Australia/Brisbane.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland)
+Australia/Brisbane.generic.long=Hora Oriental (Queensland)
+Australia/Brisbane.standard.long=Hora est\u00E1ndar del Este (Queensland)
+Australia/Broken_Hill.daylight.long=Hora de verano Central (Sur de Australia/Nueva Gales del Sur)
+Australia/Broken_Hill.generic.long=Hora Central (Australia del Sur/Nueva Gales del Sur)
+Australia/Broken_Hill.standard.long=Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)
+Australia/Canberra.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/Canberra.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/Canberra.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Currie.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/Currie.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/Currie.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Darwin.daylight.long=Hora de verano Central (territorio del Norte)
+Australia/Darwin.generic.long=Hora Central (Territorio Septentrional)
+Australia/Darwin.standard.long=Hora est\u00E1ndar Central (territorio del Norte)
+Australia/Eucla.daylight.long=Hora est\u00E1ndar de verano de Australia Central y Occidental
+Australia/Eucla.generic.long=Hora de Australia Central y Occidental
+Australia/Eucla.standard.long=Hora est\u00E1ndar de Australia Central y Occidental
+Australia/Hobart.daylight.long=Hora de verano del Este (Tasmania)
+Australia/Hobart.generic.long=Hora Oriental (Tasmania)
+Australia/Hobart.standard.long=Hora est\u00E1ndar del Este (Tasmania)
+Australia/LHI.generic.long=Hora de Lord Howe
+Australia/Lindeman.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland)
+Australia/Lindeman.generic.long=Hora Oriental (Queensland)
+Australia/Lindeman.standard.long=Hora est\u00E1ndar del Este (Queensland)
+Australia/Lord_Howe.generic.long=Hora de Lord Howe
+Australia/Melbourne.daylight.long=Hora de verano del Este (Victoria)
+Australia/Melbourne.generic.long=Hora Oriental (Victoria)
+Australia/Melbourne.standard.long=Hora est\u00E1ndar del Este (Victoria)
+Australia/NSW.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/NSW.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/NSW.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/North.daylight.long=Hora de verano Central (territorio del Norte)
+Australia/North.generic.long=Hora Central (Territorio Septentrional)
+Australia/North.standard.long=Hora est\u00E1ndar Central (territorio del Norte)
+Australia/Perth.daylight.long=Hora de verano Occidental (Australia)
+Australia/Perth.generic.long=Hora Occidental (Australia)
+Australia/Perth.standard.long=Hora est\u00E1ndar Occidental (Australia)
+Australia/Queensland.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland)
+Australia/Queensland.generic.long=Hora Oriental (Queensland)
+Australia/Queensland.standard.long=Hora est\u00E1ndar del Este (Queensland)
+Australia/South.daylight.long=Hora de verano Central (Sur de Australia)
+Australia/South.generic.long=Hora Central (Australia del Sur)
+Australia/South.standard.long=Hora est\u00E1ndar Central (Sur de Australia)
+Australia/Sydney.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/Sydney.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/Sydney.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Tasmania.daylight.long=Hora de verano del Este (Tasmania)
+Australia/Tasmania.generic.long=Hora Oriental (Tasmania)
+Australia/Tasmania.standard.long=Hora est\u00E1ndar del Este (Tasmania)
+Australia/Victoria.daylight.long=Hora de verano del Este (Victoria)
+Australia/Victoria.generic.long=Hora Oriental (Victoria)
+Australia/Victoria.standard.long=Hora est\u00E1ndar del Este (Victoria)
+Australia/West.daylight.long=Hora de verano Occidental (Australia)
+Australia/West.generic.long=Hora Occidental (Australia)
+Australia/West.standard.long=Hora est\u00E1ndar Occidental (Australia)
+Australia/Yancowinna.daylight.long=Hora de verano Central (Sur de Australia/Nueva Gales del Sur)
+Australia/Yancowinna.generic.long=Hora Central (Australia del Sur/Nueva Gales del Sur)
+Australia/Yancowinna.standard.long=Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)
+BET.generic.long=Hora de Brasil
+BST.generic.long=Hora de Bangladesh
+Brazil/Acre.generic.long=Hora de Acre
+Brazil/DeNoronha.generic.long=Hora de Fernando de Noronha
+Brazil/East.generic.long=Hora de Brasil
+Brazil/West.generic.long=Hora est\u00E1ndar de Amazonia
+CAT.generic.long=Hora de \u00C1frica Central
+CET.generic.long=Hora de Europa Central
+CNT.generic.long=Hora de Terranova
+CST.generic.long=Hora Central
+CST6CDT.generic.long=Hora Central
+CTT.generic.long=Hora de China
+Canada/Atlantic.generic.long=Hora del Atl\u00E1ntico
+Canada/Central.generic.long=Hora Central
+Canada/East-Saskatchewan.generic.long=Hora Central
+Canada/Eastern.generic.long=Hora Oriental
+Canada/Mountain.generic.long=Hora de las Monta\u00F1as Rocosas
+Canada/Newfoundland.generic.long=Hora de Terranova
+Canada/Pacific.generic.long=Hora del Pac\u00EDfico
+Canada/Saskatchewan.generic.long=Hora Central
+Canada/Yukon.generic.long=Hora del Pac\u00EDfico
+Chile/Continental.generic.long=Hora de Chile
+Chile/EasterIsland.generic.long=Hora de la Isla de Pascua
+Cuba.generic.long=Hora de Cuba
+EAT.generic.long=Hora de \u00C1frica Oriental
+ECT.generic.long=Hora de Europa Central
+EET.generic.long=Hora de Europa Oriental
+EST.generic.long=Hora Oriental
+EST5EDT.generic.long=Hora Oriental
+Egypt.generic.long=Hora de Europa Oriental
+Eire.generic.long=Hora de Irlanda
+Etc/Greenwich.generic.long=Hora del Meridiano de Greenwich
+Etc/UCT.generic.long=Hora Universal Coordinada
+Etc/UTC.generic.long=Hora Universal Coordinada
+Etc/Universal.generic.long=Hora Universal Coordinada
+Etc/Zulu.generic.long=Hora Universal Coordinada
+Europe/Amsterdam.generic.long=Hora de Europa Central
+Europe/Andorra.generic.long=Hora de Europa Central
+Europe/Athens.generic.long=Hora de Europa Oriental
+Europe/Belfast.generic.long=Hora de Gran Breta\u00F1a
+Europe/Belgrade.generic.long=Hora de Europa Central
+Europe/Berlin.generic.long=Hora de Europa Central
+Europe/Bratislava.generic.long=Hora de Europa Central
+Europe/Brussels.generic.long=Hora de Europa Central
+Europe/Bucharest.generic.long=Hora de Europa Oriental
+Europe/Budapest.generic.long=Hora de Europa Central
+Europe/Busingen.generic.long=Hora de Europa Central
+Europe/Chisinau.generic.long=Hora de Europa Oriental
+Europe/Copenhagen.generic.long=Hora de Europa Central
+Europe/Dublin.generic.long=Hora de Irlanda
+Europe/Gibraltar.generic.long=Hora de Europa Central
+Europe/Guernsey.generic.long=Hora de Gran Breta\u00F1a
+Europe/Helsinki.generic.long=Hora de Europa Oriental
+Europe/Isle_of_Man.generic.long=Hora de Gran Breta\u00F1a
+Europe/Istanbul.generic.long=Hora de Europa Oriental
+Europe/Jersey.generic.long=Hora de Gran Breta\u00F1a
+Europe/Kaliningrad.daylight.long=Hora de verano de Europa m\u00E1s Oriental
+Europe/Kaliningrad.generic.long=Hora de Europa m\u00E1s Oriental
+Europe/Kaliningrad.standard.long=Hora de Europa m\u00E1s Oriental
+Europe/Kiev.generic.long=Hora de Europa Oriental
+Europe/Lisbon.generic.long=Hora de Europa Occidental
+Europe/Ljubljana.generic.long=Hora de Europa Central
+Europe/London.generic.long=Hora de Gran Breta\u00F1a
+Europe/Luxembourg.generic.long=Hora de Europa Central
+Europe/Madrid.generic.long=Hora de Europa Central
+Europe/Malta.generic.long=Hora de Europa Central
+Europe/Mariehamn.generic.long=Hora de Europa Oriental
+Europe/Minsk.daylight.long=Hora de verano de Europa m\u00E1s Oriental
+Europe/Minsk.generic.long=Hora de Europa m\u00E1s Oriental
+Europe/Minsk.standard.long=Hora de Europa m\u00E1s Oriental
+Europe/Monaco.generic.long=Hora de Europa Central
+Europe/Moscow.generic.long=Hora de Mosc\u00FA
+Europe/Nicosia.generic.long=Hora de Europa Oriental
+Europe/Oslo.generic.long=Hora de Europa Central
+Europe/Paris.generic.long=Hora de Europa Central
+Europe/Podgorica.generic.long=Hora de Europa Central
+Europe/Prague.generic.long=Hora de Europa Central
+Europe/Riga.generic.long=Hora de Europa Oriental
+Europe/Rome.generic.long=Hora de Europa Central
+Europe/Samara.generic.long=Hora de Samara
+Europe/San_Marino.generic.long=Hora de Europa Central
+Europe/Sarajevo.generic.long=Hora de Europa Central
+Europe/Simferopol.generic.long=Hora de Europa Oriental
+Europe/Skopje.generic.long=Hora de Europa Central
+Europe/Sofia.generic.long=Hora de Europa Oriental
+Europe/Stockholm.generic.long=Hora de Europa Central
+Europe/Tallinn.generic.long=Hora de Europa Oriental
+Europe/Tirane.generic.long=Hora de Europa Central
+Europe/Tiraspol.generic.long=Hora de Europa Oriental
+Europe/Uzhgorod.generic.long=Hora de Europa Oriental
+Europe/Vaduz.generic.long=Hora de Europa Central
+Europe/Vatican.generic.long=Hora de Europa Central
+Europe/Vienna.generic.long=Hora de Europa Central
+Europe/Vilnius.generic.long=Hora de Europa Oriental
+Europe/Volgograd.generic.long=Hora de Volgogrado
+Europe/Warsaw.generic.long=Hora de Europa Central
+Europe/Zagreb.generic.long=Hora de Europa Central
+Europe/Zaporozhye.generic.long=Hora de Europa Oriental
+Europe/Zurich.generic.long=Hora de Europa Central
+GB-Eire.generic.long=Hora de Gran Breta\u00F1a
+GB.generic.long=Hora de Gran Breta\u00F1a
+GMT.generic.long=Hora del Meridiano de Greenwich
+Greenwich.generic.long=Hora del Meridiano de Greenwich
+HST.generic.long=Hora de Hawaii
+Hongkong.generic.long=Hora de Hong Kong
+IET.generic.long=Hora Oriental
+IST.generic.long=Hora de India
+Iceland.generic.long=Hora del Meridiano de Greenwich
+Indian/Antananarivo.generic.long=Hora de \u00C1frica Oriental
+Indian/Chagos.generic.long=Hora del Territorio del Oc\u00E9ano \u00CDndico
+Indian/Christmas.generic.long=Hora de la isla de Christmas
+Indian/Cocos.generic.long=Hora de las islas Cocos
+Indian/Comoro.generic.long=Hora de \u00C1frica Oriental
+Indian/Kerguelen.generic.long=Hora de los Territorios Franceses del Sur y de la Ant\u00E1rtida
+Indian/Mahe.generic.long=Hora de Seychelles
+Indian/Maldives.generic.long=Hora de Maldivas
+Indian/Mauritius.generic.long=Hora de Mauricio
+Indian/Mayotte.generic.long=Hora de \u00C1frica Oriental
+Indian/Reunion.generic.long=Hora de Reuni\u00F3n
+Iran.generic.long=Hora de Ir\u00E1n
+Israel.generic.long=Hora de Israel
+JST.generic.long=Hora de Jap\u00F3n
+Jamaica.generic.long=Hora Oriental
+Japan.generic.long=Hora de Jap\u00F3n
+Kwajalein.generic.long=Hora de Islas Marshall
+Libya.generic.long=Hora de Europa Oriental
+MET.generic.long=MET
+MIT.generic.long=Hora de Samoa Occidental
+MST.generic.long=Hora de las Monta\u00f1as Rocosas
+MST7MDT.generic.long=Hora de las Monta\u00f1as Rocosas
+Mexico/BajaNorte.generic.long=Hora del Pac\u00EDfico
+Mexico/BajaSur.generic.long=Hora de las Monta\u00F1as Rocosas
+Mexico/General.generic.long=Hora Central
+NET.generic.long=Hora de Armenia
+NST.generic.long=Hora de Nueva Zelanda
+NZ-CHAT.generic.long=Hora de Chatam
+NZ.generic.long=Hora de Nueva Zelanda
+Navajo.generic.long=Hora de las Monta\u00F1as Rocosas
+PLT.generic.long=Hora de Pakist\u00E1n
+PNT.generic.long=Hora de las Monta\u00F1as Rocosas
+PRC.generic.long=Hora de China
+PRT.generic.long=Hora del Atl\u00E1ntico
+PST.generic.long=Hora del Pac\u00EDfico
+PST8PDT.generic.long=Hora del Pac\u00edfico
+Pacific/Apia.generic.long=Hora de Samoa Occidental
+Pacific/Auckland.generic.long=Hora de Nueva Zelanda
+Pacific/Chatham.generic.long=Hora de Chatam
+Pacific/Chuuk.daylight.long=Hora de verano de Chuuk
+Pacific/Chuuk.generic.long=Hora de Chuuk
+Pacific/Chuuk.standard.long=Hora de Chuuk
+Pacific/Easter.generic.long=Hora de la Isla de Pascua
+Pacific/Efate.generic.long=Hora de Vanuatu
+Pacific/Enderbury.generic.long=Hora de la isla Phoenix
+Pacific/Fakaofo.generic.long=Hora de Tokelau
+Pacific/Fiji.generic.long=Hora de Fiji
+Pacific/Funafuti.generic.long=Hora de Tuvalu
+Pacific/Galapagos.generic.long=Hora de Gal\u00E1pagos
+Pacific/Gambier.generic.long=Hora de Gambier
+Pacific/Guadalcanal.generic.long=Hora de las Islas Solomon
+Pacific/Guam.generic.long=Hora de Chamorro
+Pacific/Honolulu.generic.long=Hora de Hawaii
+Pacific/Johnston.generic.long=Hora de Hawaii
+Pacific/Kiritimati.generic.long=Hora de las islas Line
+Pacific/Kosrae.generic.long=Hora de Kosrae
+Pacific/Kwajalein.generic.long=Hora de Islas Marshall
+Pacific/Majuro.generic.long=Hora de Islas Marshall
+Pacific/Marquesas.generic.long=Hora de Marquesas
+Pacific/Midway.generic.long=Hora de Samoa
+Pacific/Nauru.generic.long=Hora de Nauru
+Pacific/Niue.generic.long=Hora de Niue
+Pacific/Norfolk.generic.long=Hora de Norfolk
+Pacific/Noumea.generic.long=Hora de Nueva Caledonia
+Pacific/Pago_Pago.generic.long=Hora de Samoa
+Pacific/Palau.generic.long=Hora de Palau
+Pacific/Pitcairn.generic.long=Hora de Islas Pitcairn
+Pacific/Pohnpei.daylight.long=Hora de verano de Pohnpei
+Pacific/Pohnpei.generic.long=Hora de Pohnpei
+Pacific/Pohnpei.standard.long=Hora de Pohnpei
+Pacific/Ponape.daylight.long=Hora de verano de Pohnpei
+Pacific/Ponape.generic.long=Hora de Pohnpei
+Pacific/Ponape.standard.long=Hora de Pohnpei
+Pacific/Port_Moresby.generic.long=Hora de Pap\u00FAa-Nueva Guinea
+Pacific/Rarotonga.generic.long=Hora de las islas Cook
+Pacific/Saipan.generic.long=Hora de Chamorro
+Pacific/Samoa.generic.long=Hora de Samoa
+Pacific/Tahiti.generic.long=Hora de Tahit\u00ED
+Pacific/Tarawa.generic.long=Hora de las islas Gilbert
+Pacific/Tongatapu.generic.long=Hora de Tonga
+Pacific/Truk.daylight.long=Hora de verano de Chuuk
+Pacific/Truk.generic.long=Hora de Chuuk
+Pacific/Truk.standard.long=Hora de Chuuk
+Pacific/Wake.generic.long=Hora de Wake
+Pacific/Wallis.generic.long=Hora de Wallis y Futuna
+Pacific/Yap.daylight.long=Hora de verano de Chuuk
+Pacific/Yap.generic.long=Hora de Chuuk
+Pacific/Yap.standard.long=Hora de Chuuk
+Poland.generic.long=Hora de Europa Central
+Portugal.generic.long=Hora de Europa Occidental
+ROK.generic.long=Hora de Corea
+SST.generic.long=Hora de las Islas Solomon
+Singapore.generic.long=Hora de Singapur
+SystemV/AST4.generic.long=Hora del Atl\u00E1ntico
+SystemV/AST4ADT.generic.long=Hora del Atl\u00E1ntico
+SystemV/CST6.generic.long=Hora Central
+SystemV/CST6CDT.generic.long=Hora Central
+SystemV/EST5.generic.long=Hora Oriental
+SystemV/EST5EDT.generic.long=Hora Oriental
+SystemV/HST10.generic.long=Hora de Hawaii
+SystemV/MST7.generic.long=Hora de las Monta\u00F1as Rocosas
+SystemV/MST7MDT.generic.long=Hora de las Monta\u00F1as Rocosas
+SystemV/PST8.generic.long=Hora del Pac\u00EDfico
+SystemV/PST8PDT.generic.long=Hora del Pac\u00EDfico
+SystemV/YST9.generic.long=Hora de Alaska
+SystemV/YST9YDT.generic.long=Hora de Alaska
+Turkey.generic.long=Hora de Europa Oriental
+UCT.generic.long=Hora Universal Coordinada
+US/Alaska.generic.long=Hora de Alaska
+US/Aleutian.generic.long=Hora de Hawaii-Aleutian
+US/Arizona.generic.long=Hora de las Monta\u00F1as Rocosas
+US/Central.generic.long=Hora Central
+US/East-Indiana.generic.long=Hora Oriental
+US/Eastern.generic.long=Hora Oriental
+US/Hawaii.generic.long=Hora de Hawaii
+US/Indiana-Starke.generic.long=Hora Central
+US/Michigan.generic.long=Hora Oriental
+US/Mountain.generic.long=Hora de las Monta\u00F1as Rocosas
+US/Pacific-New.generic.long=Hora del Pac\u00EDfico
+US/Pacific.generic.long=Hora del Pac\u00EDfico
+US/Samoa.generic.long=Hora de Samoa
+UTC.generic.long=Hora Universal Coordinada
+Universal.generic.long=Hora Universal Coordinada
+VST.generic.long=Hora de Indochina
+W-SU.generic.long=Hora de Mosc\u00FA
+WET.generic.long=Hora de Europa Occidental
+Zulu.generic.long=Hora Universal Coordinada
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)
+ACT.generic.long=Centre (Territoire du Nord)
+ACT.standard.long=Heure standard d'Australie centrale (Territoire du Nord)
+AET.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+AET.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+AET.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+AGT.generic.long=Heure d'Argentine
+ART.generic.long=Heure d'Europe de l'Est
+AST.generic.long=Alaska
+Africa/Abidjan.generic.long=Heure de Greenwich
+Africa/Accra.generic.long=Heure du Ghana
+Africa/Addis_Ababa.generic.long=Heure d'Afrique de l'Est
+Africa/Algiers.generic.long=Heure d'Europe centrale
+Africa/Asmara.generic.long=Heure d'Afrique de l'Est
+Africa/Asmera.generic.long=Heure d'Afrique de l'Est
+Africa/Bamako.generic.long=Heure de Greenwich
+Africa/Bangui.generic.long=Heure d'Afrique de l'Ouest
+Africa/Banjul.generic.long=Heure de Greenwich
+Africa/Bissau.generic.long=Heure de Greenwich
+Africa/Blantyre.generic.long=Heure d'Afrique centrale
+Africa/Brazzaville.generic.long=Heure d'Afrique de l'Ouest
+Africa/Bujumbura.generic.long=Heure d'Afrique centrale
+Africa/Cairo.generic.long=Heure d'Europe de l'Est
+Africa/Casablanca.generic.long=Heure d'Europe de l'Ouest
+Africa/Ceuta.generic.long=Heure d'Europe centrale
+Africa/Conakry.generic.long=Heure de Greenwich
+Africa/Dakar.generic.long=Heure de Greenwich
+Africa/Dar_es_Salaam.generic.long=Heure d'Afrique de l'Est
+Africa/Djibouti.generic.long=Heure d'Afrique de l'Est
+Africa/Douala.generic.long=Heure d'Afrique de l'Ouest
+Africa/El_Aaiun.generic.long=Heure d'Europe de l'Ouest
+Africa/Freetown.generic.long=Heure de Sierra Leone
+Africa/Gaborone.generic.long=Heure d'Afrique centrale
+Africa/Harare.generic.long=Heure d'Afrique centrale
+Africa/Johannesburg.generic.long=Afrique du Sud
+Africa/Juba.generic.long=Heure d'Afrique de l'Est
+Africa/Kampala.generic.long=Heure d'Afrique de l'Est
+Africa/Khartoum.generic.long=Heure d'Afrique de l'Est
+Africa/Kigali.generic.long=Heure d'Afrique centrale
+Africa/Kinshasa.generic.long=Heure d'Afrique de l'Ouest
+Africa/Lagos.generic.long=Heure d'Afrique de l'Ouest
+Africa/Libreville.generic.long=Heure d'Afrique de l'Ouest
+Africa/Lome.generic.long=Heure de Greenwich
+Africa/Luanda.generic.long=Heure d'Afrique de l'Ouest
+Africa/Lubumbashi.generic.long=Heure d'Afrique centrale
+Africa/Lusaka.generic.long=Heure d'Afrique centrale
+Africa/Malabo.generic.long=Heure d'Afrique de l'Ouest
+Africa/Maputo.generic.long=Heure d'Afrique centrale
+Africa/Maseru.generic.long=Afrique du Sud
+Africa/Mbabane.generic.long=Afrique du Sud
+Africa/Mogadishu.generic.long=Heure d'Afrique de l'Est
+Africa/Monrovia.generic.long=Heure de Greenwich
+Africa/Nairobi.generic.long=Heure d'Afrique de l'Est
+Africa/Ndjamena.generic.long=Heure d'Afrique de l'Ouest
+Africa/Niamey.generic.long=Heure d'Afrique de l'Ouest
+Africa/Nouakchott.generic.long=Heure de Greenwich
+Africa/Ouagadougou.generic.long=Heure de Greenwich
+Africa/Porto-Novo.generic.long=Heure d'Afrique de l'Ouest
+Africa/Sao_Tome.generic.long=Heure de Greenwich
+Africa/Timbuktu.generic.long=Heure de Greenwich
+Africa/Tripoli.generic.long=Heure d'Europe de l'Est
+Africa/Tunis.generic.long=Heure d'Europe centrale
+Africa/Windhoek.generic.long=Heure d'Afrique de l'Ouest
+America/Adak.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes
+America/Anchorage.generic.long=Alaska
+America/Anguilla.generic.long=Atlantique
+America/Antigua.generic.long=Atlantique
+America/Araguaina.generic.long=Heure du Br\u00E9sil
+America/Argentina/Buenos_Aires.generic.long=Heure d'Argentine
+America/Argentina/Catamarca.generic.long=Heure d'Argentine
+America/Argentina/ComodRivadavia.generic.long=Heure d'Argentine
+America/Argentina/Cordoba.generic.long=Heure d'Argentine
+America/Argentina/Jujuy.generic.long=Heure d'Argentine
+America/Argentina/La_Rioja.generic.long=Heure d'Argentine
+America/Argentina/Mendoza.generic.long=Heure d'Argentine
+America/Argentina/Rio_Gallegos.generic.long=Heure d'Argentine
+America/Argentina/Salta.generic.long=Heure d'Argentine
+America/Argentina/San_Juan.generic.long=Heure d'Argentine
+America/Argentina/San_Luis.generic.long=Heure d'Argentine
+America/Argentina/Tucuman.generic.long=Heure d'Argentine
+America/Argentina/Ushuaia.generic.long=Heure d'Argentine
+America/Aruba.generic.long=Atlantique
+America/Asuncion.generic.long=Heure du Paraguay
+America/Atikokan.generic.long=C\u00F4te Est
+America/Atka.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes
+America/Bahia.generic.long=Heure du Br\u00E9sil
+America/Bahia_Banderas.generic.long=Centre
+America/Barbados.generic.long=Atlantique
+America/Belem.generic.long=Heure du Br\u00E9sil
+America/Belize.generic.long=Centre
+America/Blanc-Sablon.generic.long=Atlantique
+America/Boa_Vista.generic.long=Heure d'Amazonie
+America/Bogota.generic.long=Heure de Colombie
+America/Boise.generic.long=Rocheuses
+America/Buenos_Aires.generic.long=Heure d'Argentine
+America/Cambridge_Bay.generic.long=Rocheuses
+America/Campo_Grande.generic.long=Heure d'Amazonie
+America/Cancun.generic.long=Centre
+America/Caracas.generic.long=Heure du Venezuela
+America/Catamarca.generic.long=Heure d'Argentine
+America/Cayenne.generic.long=Heure de Guyane fran\u00E7aise
+America/Cayman.generic.long=C\u00F4te Est
+America/Chicago.generic.long=Centre
+America/Chihuahua.generic.long=Rocheuses
+America/Coral_Harbour.generic.long=C\u00F4te Est
+America/Cordoba.generic.long=Heure d'Argentine
+America/Costa_Rica.generic.long=Centre
+America/Creston.generic.long=Rocheuses
+America/Cuiaba.generic.long=Heure d'Amazonie
+America/Curacao.generic.long=Atlantique
+America/Danmarkshavn.generic.long=Heure de Greenwich
+America/Dawson.generic.long=Pacifique
+America/Dawson_Creek.generic.long=Rocheuses
+America/Denver.generic.long=Rocheuses
+America/Detroit.generic.long=C\u00F4te Est
+America/Dominica.generic.long=Atlantique
+America/Edmonton.generic.long=Rocheuses
+America/Eirunepe.generic.long=Heure de l'Acre
+America/El_Salvador.generic.long=Centre
+America/Ensenada.generic.long=Pacifique
+America/Fort_Wayne.generic.long=C\u00F4te Est
+America/Fortaleza.generic.long=Heure du Br\u00E9sil
+America/Glace_Bay.generic.long=Atlantique
+America/Godthab.generic.long=Heure du Groenland de l'Ouest
+America/Goose_Bay.generic.long=Atlantique
+America/Grand_Turk.generic.long=C\u00F4te Est
+America/Grenada.generic.long=Atlantique
+America/Guadeloupe.generic.long=Atlantique
+America/Guatemala.generic.long=Centre
+America/Guayaquil.generic.long=Heure de l'Equateur
+America/Guyana.generic.long=Heure de Guyana
+America/Halifax.generic.long=Atlantique
+America/Havana.generic.long=Heure de Cuba
+America/Hermosillo.generic.long=Rocheuses
+America/Indiana/Indianapolis.generic.long=C\u00F4te Est
+America/Indiana/Knox.generic.long=Centre
+America/Indiana/Marengo.generic.long=C\u00F4te Est
+America/Indiana/Petersburg.generic.long=C\u00F4te Est
+America/Indiana/Tell_City.generic.long=Centre
+America/Indiana/Vevay.generic.long=C\u00F4te Est
+America/Indiana/Vincennes.generic.long=C\u00F4te Est
+America/Indiana/Winamac.generic.long=C\u00F4te Est
+America/Indianapolis.generic.long=C\u00F4te Est
+America/Inuvik.generic.long=Rocheuses
+America/Iqaluit.generic.long=C\u00F4te Est
+America/Jamaica.generic.long=C\u00F4te Est
+America/Jujuy.generic.long=Heure d'Argentine
+America/Juneau.generic.long=Alaska
+America/Kentucky/Louisville.generic.long=C\u00F4te Est
+America/Kentucky/Monticello.generic.long=C\u00F4te Est
+America/Knox_IN.generic.long=Centre
+America/Kralendijk.generic.long=Atlantique
+America/La_Paz.generic.long=Heure de Bolivie
+America/Lima.generic.long=Heure du P\u00E9rou
+America/Los_Angeles.generic.long=Pacifique
+America/Louisville.generic.long=C\u00F4te Est
+America/Lower_Princes.generic.long=Atlantique
+America/Maceio.generic.long=Heure du Br\u00E9sil
+America/Managua.generic.long=Centre
+America/Manaus.generic.long=Heure d'Amazonie
+America/Marigot.generic.long=Atlantique
+America/Martinique.generic.long=Atlantique
+America/Matamoros.generic.long=Centre
+America/Mazatlan.generic.long=Rocheuses
+America/Mendoza.generic.long=Heure d'Argentine
+America/Menominee.generic.long=Centre
+America/Merida.generic.long=Centre
+America/Metlakatla.daylight.long=Heure avanc\u00E9e de Metlakatla
+America/Metlakatla.generic.long=Heure de Metlakatla
+America/Metlakatla.standard.long=Heure normale de Metlakatla
+America/Mexico_City.generic.long=Centre
+America/Miquelon.generic.long=Saint-Pierre-et-Miquelon
+America/Moncton.generic.long=Atlantique
+America/Monterrey.generic.long=Centre
+America/Montevideo.generic.long=Heure de l'Uruguay
+America/Montreal.generic.long=C\u00F4te Est
+America/Montserrat.generic.long=Atlantique
+America/Nassau.generic.long=C\u00F4te Est
+America/New_York.generic.long=C\u00F4te Est
+America/Nipigon.generic.long=C\u00F4te Est
+America/Nome.generic.long=Alaska
+America/Noronha.generic.long=Heure de Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Centre
+America/North_Dakota/Center.generic.long=Centre
+America/North_Dakota/New_Salem.generic.long=Centre
+America/Ojinaga.generic.long=Rocheuses
+America/Panama.generic.long=C\u00F4te Est
+America/Pangnirtung.generic.long=C\u00F4te Est
+America/Paramaribo.generic.long=Heure du Surinam
+America/Phoenix.generic.long=Rocheuses
+America/Port-au-Prince.generic.long=C\u00F4te Est
+America/Port_of_Spain.generic.long=Atlantique
+America/Porto_Acre.generic.long=Heure de l'Acre
+America/Porto_Velho.generic.long=Heure d'Amazonie
+America/Puerto_Rico.generic.long=Atlantique
+America/Rainy_River.generic.long=Centre
+America/Rankin_Inlet.generic.long=Centre
+America/Recife.generic.long=Heure du Br\u00E9sil
+America/Regina.generic.long=Centre
+America/Resolute.generic.long=Centre
+America/Rio_Branco.generic.long=Heure de l'Acre
+America/Rosario.generic.long=Heure d'Argentine
+America/Santa_Isabel.generic.long=Pacifique
+America/Santarem.generic.long=Heure du Br\u00E9sil
+America/Santiago.generic.long=Heure du Chili
+America/Santo_Domingo.generic.long=Atlantique
+America/Sao_Paulo.generic.long=Heure du Br\u00E9sil
+America/Scoresbysund.generic.long=Heure du Groenland de l'Est
+America/Shiprock.generic.long=Rocheuses
+America/Sitka.generic.long=Alaska
+America/St_Barthelemy.generic.long=Atlantique
+America/St_Johns.generic.long=Terre-Neuve
+America/St_Kitts.generic.long=Atlantique
+America/St_Lucia.generic.long=Atlantique
+America/St_Thomas.generic.long=Atlantique
+America/St_Vincent.generic.long=Atlantique
+America/Swift_Current.generic.long=Centre
+America/Tegucigalpa.generic.long=Centre
+America/Thule.generic.long=Atlantique
+America/Thunder_Bay.generic.long=C\u00F4te Est
+America/Tijuana.generic.long=Pacifique
+America/Toronto.generic.long=C\u00F4te Est
+America/Tortola.generic.long=Atlantique
+America/Vancouver.generic.long=Pacifique
+America/Virgin.generic.long=Atlantique
+America/Whitehorse.generic.long=Pacifique
+America/Winnipeg.generic.long=Centre
+America/Yakutat.generic.long=Alaska
+America/Yellowknife.generic.long=Rocheuses
+Antarctica/Casey.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie)
+Antarctica/Casey.generic.long=Ouest (Australie)
+Antarctica/Casey.standard.long=Heure normale de l'Ouest (Australie)
+Antarctica/Davis.generic.long=Heure de Davis
+Antarctica/DumontDUrville.generic.long=Heure de Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Heure d'\u00E9t\u00E9 de l'Ile Macquarie
+Antarctica/Macquarie.generic.long=Heure de l'Ile Macquarie
+Antarctica/Macquarie.standard.long=Heure de l'Ile Macquarie
+Antarctica/Mawson.generic.long=Heure de Mawson
+Antarctica/McMurdo.generic.long=Nouvelle-Z\u00E9lande
+Antarctica/Palmer.generic.long=Heure du Chili
+Antarctica/Rothera.generic.long=Heure de Rothera
+Antarctica/South_Pole.generic.long=Nouvelle-Z\u00E9lande
+Antarctica/Syowa.generic.long=Heure de Syowa
+Antarctica/Vostok.generic.long=Heure de Vostok
+Arctic/Longyearbyen.generic.long=Heure d'Europe centrale
+Asia/Aden.generic.long=Arabie
+Asia/Almaty.generic.long=Heure d'Alma-Ata
+Asia/Amman.generic.long=Arabie
+Asia/Anadyr.generic.long=Heure d'Anadyr
+Asia/Aqtau.generic.long=Heure d'Aqtau
+Asia/Aqtobe.generic.long=Heure d'Aqtobe
+Asia/Ashgabat.generic.long=Heure du Turkm\u00E9nistan
+Asia/Ashkhabad.generic.long=Heure du Turkm\u00E9nistan
+Asia/Baghdad.generic.long=Arabie
+Asia/Bahrain.generic.long=Arabie
+Asia/Baku.generic.long=Heure d'Azerba\u00EFdjan
+Asia/Bangkok.generic.long=Heure d'Indochine
+Asia/Beirut.generic.long=Heure d'Europe de l'Est
+Asia/Bishkek.generic.long=Heure du Kirghizistan
+Asia/Brunei.generic.long=Heure du Brunei
+Asia/Calcutta.generic.long=Inde
+Asia/Choibalsan.generic.long=Heure de Choibalsan
+Asia/Chongqing.generic.long=Chine
+Asia/Chungking.generic.long=Chine
+Asia/Colombo.generic.long=Inde
+Asia/Dacca.generic.long=Heure du Bangladesh
+Asia/Damascus.generic.long=Heure d'Europe de l'Est
+Asia/Dhaka.generic.long=Heure du Bangladesh
+Asia/Dili.generic.long=Heure de Timor-Leste
+Asia/Dubai.generic.long=Golfe
+Asia/Dushanbe.generic.long=Heure du Tadjikistan
+Asia/Gaza.generic.long=Heure d'Europe de l'Est
+Asia/Harbin.generic.long=Chine
+Asia/Hebron.generic.long=Heure d'Europe de l'Est
+Asia/Ho_Chi_Minh.generic.long=Heure d'Indochine
+Asia/Hong_Kong.generic.long=Heure de Hong-Kong
+Asia/Hovd.generic.long=Heure de Hovd
+Asia/Irkutsk.generic.long=Heure d'Irkutsk
+Asia/Istanbul.generic.long=Heure d'Europe de l'Est
+Asia/Jakarta.generic.long=Heure de l'Indon\u00E9sie occidentale
+Asia/Jayapura.generic.long=Heure d'Indon\u00E9sie orientale
+Asia/Jerusalem.generic.long=Isra\u00EBl
+Asia/Kabul.generic.long=Heure d'Afghanistan
+Asia/Kamchatka.generic.long=Heure de Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Heure du Pakistan
+Asia/Kashgar.generic.long=Chine
+Asia/Kathmandu.generic.long=Heure du N\u00E9pal
+Asia/Katmandu.generic.long=Heure du N\u00E9pal
+Asia/Khandyga.daylight.long=Heure d'\u00E9t\u00E9 de Khandyga
+Asia/Khandyga.generic.long=Heure de Khandyga
+Asia/Khandyga.standard.long=Heure de Khandyga
+Asia/Kolkata.generic.long=Inde
+Asia/Krasnoyarsk.generic.long=Heure de Krasno\u00EFarsk
+Asia/Kuala_Lumpur.generic.long=Heure de Malaisie
+Asia/Kuching.generic.long=Heure de Malaisie
+Asia/Kuwait.generic.long=Arabie
+Asia/Macao.generic.long=Chine
+Asia/Macau.generic.long=Chine
+Asia/Magadan.generic.long=Heure de Magadan
+Asia/Makassar.generic.long=Heure d'Indon\u00E9sie centrale
+Asia/Manila.generic.long=Heure des Philippines
+Asia/Muscat.generic.long=Golfe
+Asia/Nicosia.generic.long=Heure d'Europe de l'Est
+Asia/Novokuznetsk.generic.long=Heure de Novossibirsk
+Asia/Novosibirsk.generic.long=Heure de Novossibirsk
+Asia/Omsk.generic.long=Heure d'Omsk
+Asia/Oral.generic.long=Heure d'Oral
+Asia/Phnom_Penh.generic.long=Heure d'Indochine
+Asia/Pontianak.generic.long=Heure de l'Indon\u00E9sie occidentale
+Asia/Pyongyang.generic.long=Cor\u00E9e
+Asia/Qatar.generic.long=Arabie
+Asia/Qyzylorda.generic.long=Heure de Kyzylorda
+Asia/Rangoon.generic.long=Heure de Myanmar
+Asia/Saigon.generic.long=Heure d'Indochine
+Asia/Sakhalin.generic.long=Heure de Sakhalin
+Asia/Samarkand.generic.long=Heure de l'Ouzb\u00E9kistan
+Asia/Seoul.generic.long=Cor\u00E9e
+Asia/Shanghai.generic.long=Chine
+Asia/Singapore.generic.long=Heure de Singapour
+Asia/Taipei.generic.long=Chine
+Asia/Tashkent.generic.long=Heure de l'Ouzb\u00E9kistan
+Asia/Tbilisi.generic.long=Heure de G\u00E9orgie
+Asia/Tehran.generic.long=Heure d'Iran
+Asia/Tel_Aviv.generic.long=Isra\u00EBl
+Asia/Thimbu.generic.long=Heure du Bhoutan
+Asia/Thimphu.generic.long=Heure du Bhoutan
+Asia/Tokyo.generic.long=Japon
+Asia/Ujung_Pandang.generic.long=Heure d'Indon\u00E9sie centrale
+Asia/Ulaanbaatar.generic.long=Heure de l'Ulaanbaatar
+Asia/Ulan_Bator.generic.long=Heure de l'Ulaanbaatar
+Asia/Urumqi.generic.long=Chine
+Asia/Ust-Nera.daylight.long=Heure d'\u00E9t\u00E9 d'Ust-Nera
+Asia/Ust-Nera.generic.long=Heure d'Ust-Nera
+Asia/Ust-Nera.standard.long=Heure d'Ust-Nera
+Asia/Vientiane.generic.long=Heure d'Indochine
+Asia/Vladivostok.generic.long=Heure de Vladivostok
+Asia/Yakutsk.generic.long=Heure du Iakoutsk
+Asia/Yekaterinburg.generic.long=Heure de Yekaterinburg
+Asia/Yerevan.generic.long=Heure d'Arm\u00E9nie
+Atlantic/Azores.generic.long=Heure des A\u00E7ores
+Atlantic/Bermuda.generic.long=Atlantique
+Atlantic/Canary.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Cape_Verde.generic.long=Heure de Cap-Vert
+Atlantic/Faeroe.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Faroe.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Jan_Mayen.generic.long=Heure d'Europe centrale
+Atlantic/Madeira.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Reykjavik.generic.long=Heure de Greenwich
+Atlantic/South_Georgia.generic.long=G\u00E9orgie du Sud
+Atlantic/St_Helena.generic.long=Heure de Greenwich
+Atlantic/Stanley.generic.long=Heure des \u00EEles Falkland
+Australia/ACT.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/ACT.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/ACT.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Adelaide.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)
+Australia/Adelaide.generic.long=Centre (Australie-M\u00E9ridionale)
+Australia/Adelaide.standard.long=Heure standard d'Australie centrale (Australie du sud)
+Australia/Brisbane.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)
+Australia/Brisbane.generic.long=C\u00F4te Est (Queensland)
+Australia/Brisbane.standard.long=Heure standard d'Australie orientale (Queensland)
+Australia/Broken_Hill.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+Australia/Broken_Hill.generic.long=Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)
+Australia/Broken_Hill.standard.long=Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+Australia/Canberra.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/Canberra.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/Canberra.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Currie.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/Currie.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/Currie.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Darwin.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)
+Australia/Darwin.generic.long=Centre (Territoire du Nord)
+Australia/Darwin.standard.long=Heure standard d'Australie centrale (Territoire du Nord)
+Australia/Eucla.daylight.long=Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre)
+Australia/Eucla.generic.long=Heure de l'Australie occidentale (centre)
+Australia/Eucla.standard.long=Heure standard de l'Australie occidentale (centre)
+Australia/Hobart.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)
+Australia/Hobart.generic.long=C\u00F4te Est (Tasmanie)
+Australia/Hobart.standard.long=Heure standard d'Australie orientale (Tasmanie)
+Australia/LHI.generic.long=Heure de Lord Howe
+Australia/Lindeman.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)
+Australia/Lindeman.generic.long=C\u00F4te Est (Queensland)
+Australia/Lindeman.standard.long=Heure standard d'Australie orientale (Queensland)
+Australia/Lord_Howe.generic.long=Heure de Lord Howe
+Australia/Melbourne.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)
+Australia/Melbourne.generic.long=C\u00F4te Est (Victoria)
+Australia/Melbourne.standard.long=Heure standard d'Australie orientale (Victoria)
+Australia/NSW.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/NSW.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/NSW.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/North.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)
+Australia/North.generic.long=Centre (Territoire du Nord)
+Australia/North.standard.long=Heure standard d'Australie centrale (Territoire du Nord)
+Australia/Perth.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie)
+Australia/Perth.generic.long=Ouest (Australie)
+Australia/Perth.standard.long=Heure normale de l'Ouest (Australie)
+Australia/Queensland.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)
+Australia/Queensland.generic.long=C\u00F4te Est (Queensland)
+Australia/Queensland.standard.long=Heure standard d'Australie orientale (Queensland)
+Australia/South.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)
+Australia/South.generic.long=Centre (Australie-M\u00E9ridionale)
+Australia/South.standard.long=Heure standard d'Australie centrale (Australie du sud)
+Australia/Sydney.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/Sydney.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/Sydney.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Tasmania.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)
+Australia/Tasmania.generic.long=C\u00F4te Est (Tasmanie)
+Australia/Tasmania.standard.long=Heure standard d'Australie orientale (Tasmanie)
+Australia/Victoria.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)
+Australia/Victoria.generic.long=C\u00F4te Est (Victoria)
+Australia/Victoria.standard.long=Heure standard d'Australie orientale (Victoria)
+Australia/West.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie)
+Australia/West.generic.long=Ouest (Australie)
+Australia/West.standard.long=Heure normale de l'Ouest (Australie)
+Australia/Yancowinna.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+Australia/Yancowinna.generic.long=Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)
+Australia/Yancowinna.standard.long=Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+BET.generic.long=Heure du Br\u00E9sil
+BST.generic.long=Heure du Bangladesh
+Brazil/Acre.generic.long=Heure de l'Acre
+Brazil/DeNoronha.generic.long=Heure de Fernando de Noronha
+Brazil/East.generic.long=Heure du Br\u00E9sil
+Brazil/West.generic.long=Heure d'Amazonie
+CAT.generic.long=Heure d'Afrique centrale
+CET.generic.long=Heure d'Europe centrale
+CNT.generic.long=Terre-Neuve
+CST.generic.long=Centre
+CST6CDT.generic.long=Centre
+CTT.generic.long=Chine
+Canada/Atlantic.generic.long=Atlantique
+Canada/Central.generic.long=Centre
+Canada/East-Saskatchewan.generic.long=Centre
+Canada/Eastern.generic.long=C\u00F4te Est
+Canada/Mountain.generic.long=Rocheuses
+Canada/Newfoundland.generic.long=Terre-Neuve
+Canada/Pacific.generic.long=Pacifique
+Canada/Saskatchewan.generic.long=Centre
+Canada/Yukon.generic.long=Pacifique
+Chile/Continental.generic.long=Heure du Chili
+Chile/EasterIsland.generic.long=Heure de l'Ile de P\u00E2ques
+Cuba.generic.long=Heure de Cuba
+EAT.generic.long=Heure d'Afrique de l'Est
+ECT.generic.long=Heure d'Europe centrale
+EET.generic.long=Heure d'Europe de l'Est
+EST.generic.long=C\u00f4te Est
+EST5EDT.generic.long=C\u00f4te Est
+Egypt.generic.long=Heure d'Europe de l'Est
+Eire.generic.long=Heure irlandaise
+Etc/Greenwich.generic.long=Heure de Greenwich
+Etc/UCT.generic.long=Temps universel coordonn\u00E9
+Etc/UTC.generic.long=Temps universel coordonn\u00E9
+Etc/Universal.generic.long=Temps universel coordonn\u00E9
+Etc/Zulu.generic.long=Temps universel coordonn\u00E9
+Europe/Amsterdam.generic.long=Heure d'Europe centrale
+Europe/Andorra.generic.long=Heure d'Europe centrale
+Europe/Athens.generic.long=Heure d'Europe de l'Est
+Europe/Belfast.generic.long=Heure britannique
+Europe/Belgrade.generic.long=Heure d'Europe centrale
+Europe/Berlin.generic.long=Heure d'Europe centrale
+Europe/Bratislava.generic.long=Heure d'Europe centrale
+Europe/Brussels.generic.long=Heure d'Europe centrale
+Europe/Bucharest.generic.long=Heure d'Europe de l'Est
+Europe/Budapest.generic.long=Heure d'Europe centrale
+Europe/Busingen.generic.long=Heure d'Europe centrale
+Europe/Chisinau.generic.long=Heure d'Europe de l'Est
+Europe/Copenhagen.generic.long=Heure d'Europe centrale
+Europe/Dublin.generic.long=Heure irlandaise
+Europe/Gibraltar.generic.long=Heure d'Europe centrale
+Europe/Guernsey.generic.long=Heure britannique
+Europe/Helsinki.generic.long=Heure d'Europe de l'Est
+Europe/Isle_of_Man.generic.long=Heure britannique
+Europe/Istanbul.generic.long=Heure d'Europe de l'Est
+Europe/Jersey.generic.long=Heure britannique
+Europe/Kaliningrad.daylight.long=Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3
+Europe/Kaliningrad.generic.long=Heure d'Europe de l'Est UTC+3
+Europe/Kaliningrad.standard.long=Heure d'Europe de l'Est UTC+3
+Europe/Kiev.generic.long=Heure d'Europe de l'Est
+Europe/Lisbon.generic.long=Heure d'Europe de l'Ouest
+Europe/Ljubljana.generic.long=Heure d'Europe centrale
+Europe/London.generic.long=Heure britannique
+Europe/Luxembourg.generic.long=Heure d'Europe centrale
+Europe/Madrid.generic.long=Heure d'Europe centrale
+Europe/Malta.generic.long=Heure d'Europe centrale
+Europe/Mariehamn.generic.long=Heure d'Europe de l'Est
+Europe/Minsk.daylight.long=Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3
+Europe/Minsk.generic.long=Heure d'Europe de l'Est UTC+3
+Europe/Minsk.standard.long=Heure d'Europe de l'Est UTC+3
+Europe/Monaco.generic.long=Heure d'Europe centrale
+Europe/Moscow.generic.long=Moscou
+Europe/Nicosia.generic.long=Heure d'Europe de l'Est
+Europe/Oslo.generic.long=Heure d'Europe centrale
+Europe/Paris.generic.long=Heure d'Europe centrale
+Europe/Podgorica.generic.long=Heure d'Europe centrale
+Europe/Prague.generic.long=Heure d'Europe centrale
+Europe/Riga.generic.long=Heure d'Europe de l'Est
+Europe/Rome.generic.long=Heure d'Europe centrale
+Europe/Samara.generic.long=Heure de Samara
+Europe/San_Marino.generic.long=Heure d'Europe centrale
+Europe/Sarajevo.generic.long=Heure d'Europe centrale
+Europe/Simferopol.generic.long=Heure d'Europe de l'Est
+Europe/Skopje.generic.long=Heure d'Europe centrale
+Europe/Sofia.generic.long=Heure d'Europe de l'Est
+Europe/Stockholm.generic.long=Heure d'Europe centrale
+Europe/Tallinn.generic.long=Heure d'Europe de l'Est
+Europe/Tirane.generic.long=Heure d'Europe centrale
+Europe/Tiraspol.generic.long=Heure d'Europe de l'Est
+Europe/Uzhgorod.generic.long=Heure d'Europe de l'Est
+Europe/Vaduz.generic.long=Heure d'Europe centrale
+Europe/Vatican.generic.long=Heure d'Europe centrale
+Europe/Vienna.generic.long=Heure d'Europe centrale
+Europe/Vilnius.generic.long=Heure d'Europe de l'Est
+Europe/Volgograd.generic.long=Heure de Volgograd
+Europe/Warsaw.generic.long=Heure d'Europe centrale
+Europe/Zagreb.generic.long=Heure d'Europe centrale
+Europe/Zaporozhye.generic.long=Heure d'Europe de l'Est
+Europe/Zurich.generic.long=Heure d'Europe centrale
+GB-Eire.generic.long=Heure britannique
+GB.generic.long=Heure britannique
+GMT.generic.long=Heure de Greenwich
+Greenwich.generic.long=Heure de Greenwich
+HST.generic.long=Hawa\u00ef
+Hongkong.generic.long=Heure de Hong-Kong
+IET.generic.long=C\u00F4te Est
+IST.generic.long=Inde
+Iceland.generic.long=Heure de Greenwich
+Indian/Antananarivo.generic.long=Heure d'Afrique de l'Est
+Indian/Chagos.generic.long=Heure de l'oc\u00E9an Indien
+Indian/Christmas.generic.long=Heure de l'Ile Christmas
+Indian/Cocos.generic.long=Heure des Iles Cocos
+Indian/Comoro.generic.long=Heure d'Afrique de l'Est
+Indian/Kerguelen.generic.long=Heure des Terres australes antarctiques fran\u00E7aises
+Indian/Mahe.generic.long=Heure des Seychelles
+Indian/Maldives.generic.long=Heure des Maldives
+Indian/Mauritius.generic.long=Heure de Maurice
+Indian/Mayotte.generic.long=Heure d'Afrique de l'Est
+Indian/Reunion.generic.long=Heure de la R\u00E9union
+Iran.generic.long=Heure d'Iran
+Israel.generic.long=Isra\u00EBl
+JST.generic.long=Japon
+Jamaica.generic.long=C\u00F4te Est
+Japan.generic.long=Japon
+Kwajalein.generic.long=Heure des Iles Marshall
+Libya.generic.long=Heure d'Europe de l'Est
+MET.generic.long=MET
+MIT.generic.long=Heure des Samoas occidentales
+MST.generic.long=Rocheuses
+MST7MDT.generic.long=Rocheuses
+Mexico/BajaNorte.generic.long=Pacifique
+Mexico/BajaSur.generic.long=Rocheuses
+Mexico/General.generic.long=Centre
+NET.generic.long=Heure d'Arm\u00E9nie
+NST.generic.long=Nouvelle-Z\u00E9lande
+NZ-CHAT.generic.long=Chatham
+NZ.generic.long=Nouvelle-Z\u00E9lande
+Navajo.generic.long=Rocheuses
+PLT.generic.long=Heure du Pakistan
+PNT.generic.long=Rocheuses
+PRC.generic.long=Chine
+PRT.generic.long=Atlantique
+PST.generic.long=Pacifique
+PST8PDT.generic.long=Pacifique
+Pacific/Apia.generic.long=Heure des Samoas occidentales
+Pacific/Auckland.generic.long=Nouvelle-Z\u00E9lande
+Pacific/Chatham.generic.long=Chatham
+Pacific/Chuuk.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk
+Pacific/Chuuk.generic.long=Heure de Chuuk
+Pacific/Chuuk.standard.long=Heure de Chuuk
+Pacific/Easter.generic.long=Heure de l'Ile de P\u00E2ques
+Pacific/Efate.generic.long=Heure du Vanuatu
+Pacific/Enderbury.generic.long=Heure de l'Ile de Phoenix
+Pacific/Fakaofo.generic.long=Heure de Tokelau
+Pacific/Fiji.generic.long=Heure de Fidji
+Pacific/Funafuti.generic.long=Heure de Tuvalu
+Pacific/Galapagos.generic.long=Heure des Galapagos
+Pacific/Gambier.generic.long=Heure de Gambi
+Pacific/Guadalcanal.generic.long=Heure des Iles Salomon
+Pacific/Guam.generic.long=Chamorro
+Pacific/Honolulu.generic.long=Hawa\u00EF
+Pacific/Johnston.generic.long=Hawa\u00EF
+Pacific/Kiritimati.generic.long=Heure de l'Ile de Line
+Pacific/Kosrae.generic.long=Heure de Kusaie
+Pacific/Kwajalein.generic.long=Heure des Iles Marshall
+Pacific/Majuro.generic.long=Heure des Iles Marshall
+Pacific/Marquesas.generic.long=Heure des Marquises
+Pacific/Midway.generic.long=Samoa
+Pacific/Nauru.generic.long=Heure de Nauru
+Pacific/Niue.generic.long=Heure de Niue
+Pacific/Norfolk.generic.long=Heure de Norfolk
+Pacific/Noumea.generic.long=Heure de Nouvelle-Cal\u00E9donie
+Pacific/Pago_Pago.generic.long=Samoa
+Pacific/Palau.generic.long=Heure de Palaos
+Pacific/Pitcairn.generic.long=Pitcairn
+Pacific/Pohnpei.daylight.long=Heure d'\u00E9t\u00E9 de Pohnpei
+Pacific/Pohnpei.generic.long=Ponape
+Pacific/Pohnpei.standard.long=Heure de Pohnpei
+Pacific/Ponape.daylight.long=Heure d'\u00E9t\u00E9 de Pohnpei
+Pacific/Ponape.generic.long=Ponape
+Pacific/Ponape.standard.long=Heure de Pohnpei
+Pacific/Port_Moresby.generic.long=Heure de Papouasie-Nouvelle-Guin\u00E9e
+Pacific/Rarotonga.generic.long=Heure des Iles Cook
+Pacific/Saipan.generic.long=Chamorro
+Pacific/Samoa.generic.long=Samoa
+Pacific/Tahiti.generic.long=Heure de Tahiti
+Pacific/Tarawa.generic.long=Heure de Kiribati
+Pacific/Tongatapu.generic.long=Heure de Tonga
+Pacific/Truk.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk
+Pacific/Truk.generic.long=Heure de Chuuk
+Pacific/Truk.standard.long=Heure de Chuuk
+Pacific/Wake.generic.long=Heure de Wake
+Pacific/Wallis.generic.long=Heure de Wallis-et-Futuna
+Pacific/Yap.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk
+Pacific/Yap.generic.long=Heure de Chuuk
+Pacific/Yap.standard.long=Heure de Chuuk
+Poland.generic.long=Heure d'Europe centrale
+Portugal.generic.long=Heure d'Europe de l'Ouest
+ROK.generic.long=Cor\u00E9e
+SST.generic.long=Heure des Iles Salomon
+Singapore.generic.long=Heure de Singapour
+SystemV/AST4.generic.long=Atlantique
+SystemV/AST4ADT.generic.long=Atlantique
+SystemV/CST6.generic.long=Centre
+SystemV/CST6CDT.generic.long=Centre
+SystemV/EST5.generic.long=C\u00F4te Est
+SystemV/EST5EDT.generic.long=C\u00F4te Est
+SystemV/HST10.generic.long=Hawa\u00EF
+SystemV/MST7.generic.long=Rocheuses
+SystemV/MST7MDT.generic.long=Rocheuses
+SystemV/PST8.generic.long=Pacifique
+SystemV/PST8PDT.generic.long=Pacifique
+SystemV/YST9.generic.long=Alaska
+SystemV/YST9YDT.generic.long=Alaska
+Turkey.generic.long=Heure d'Europe de l'Est
+UCT.generic.long=Temps universel coordonn\u00E9
+US/Alaska.generic.long=Alaska
+US/Aleutian.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes
+US/Arizona.generic.long=Rocheuses
+US/Central.generic.long=Centre
+US/East-Indiana.generic.long=C\u00F4te Est
+US/Eastern.generic.long=C\u00F4te Est
+US/Hawaii.generic.long=Hawa\u00EF
+US/Indiana-Starke.generic.long=Centre
+US/Michigan.generic.long=C\u00F4te Est
+US/Mountain.generic.long=Rocheuses
+US/Pacific-New.generic.long=Pacifique
+US/Pacific.generic.long=Pacifique
+US/Samoa.generic.long=Samoa
+UTC.generic.long=Temps universel coordonn\u00E9
+Universal.generic.long=Temps universel coordonn\u00E9
+VST.generic.long=Heure d'Indochine
+W-SU.generic.long=Moscou
+WET.generic.long=Heure d'Europe de l'Ouest
+Zulu.generic.long=Temps universel coordonn\u00E9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Ora estiva centrale (Territori del Nord)
+ACT.generic.long=Ora fuso centrale (Territori del Nord)
+ACT.standard.long=Ora standard centrale (Territori del Nord)
+AET.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+AET.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+AET.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+AGT.generic.long=Ora dell'Argentina
+ART.generic.long=Ora dell'Europa orientale
+AST.generic.long=Ora Alaska
+Africa/Abidjan.generic.long=Ora media di Greenwich
+Africa/Accra.generic.long=Ora media del Ghana
+Africa/Addis_Ababa.generic.long=Ora dell'Africa orientale
+Africa/Algiers.generic.long=Ora dell'Europa centrale
+Africa/Asmara.generic.long=Ora dell'Africa orientale
+Africa/Asmera.generic.long=Ora dell'Africa orientale
+Africa/Bamako.generic.long=Ora media di Greenwich
+Africa/Bangui.generic.long=Ora dell'Africa occidentale
+Africa/Banjul.generic.long=Ora media di Greenwich
+Africa/Bissau.generic.long=Ora media di Greenwich
+Africa/Blantyre.generic.long=Ora dell'Africa centrale
+Africa/Brazzaville.generic.long=Ora dell'Africa occidentale
+Africa/Bujumbura.generic.long=Ora dell'Africa centrale
+Africa/Cairo.generic.long=Ora dell'Europa orientale
+Africa/Casablanca.generic.long=Ora dell'Europa occidentale
+Africa/Ceuta.generic.long=Ora dell'Europa centrale
+Africa/Conakry.generic.long=Ora media di Greenwich
+Africa/Dakar.generic.long=Ora media di Greenwich
+Africa/Dar_es_Salaam.generic.long=Ora dell'Africa orientale
+Africa/Djibouti.generic.long=Ora dell'Africa orientale
+Africa/Douala.generic.long=Ora dell'Africa occidentale
+Africa/El_Aaiun.generic.long=Ora dell'Europa occidentale
+Africa/Freetown.generic.long=Ora della Sierra Leone
+Africa/Gaborone.generic.long=Ora dell'Africa centrale
+Africa/Harare.generic.long=Ora dell'Africa centrale
+Africa/Johannesburg.generic.long=Ora Sudafrica
+Africa/Juba.generic.long=Ora dell'Africa orientale
+Africa/Kampala.generic.long=Ora dell'Africa orientale
+Africa/Khartoum.generic.long=Ora dell'Africa orientale
+Africa/Kigali.generic.long=Ora dell'Africa centrale
+Africa/Kinshasa.generic.long=Ora dell'Africa occidentale
+Africa/Lagos.generic.long=Ora dell'Africa occidentale
+Africa/Libreville.generic.long=Ora dell'Africa occidentale
+Africa/Lome.generic.long=Ora media di Greenwich
+Africa/Luanda.generic.long=Ora dell'Africa occidentale
+Africa/Lubumbashi.generic.long=Ora dell'Africa centrale
+Africa/Lusaka.generic.long=Ora dell'Africa centrale
+Africa/Malabo.generic.long=Ora dell'Africa occidentale
+Africa/Maputo.generic.long=Ora dell'Africa centrale
+Africa/Maseru.generic.long=Ora Sudafrica
+Africa/Mbabane.generic.long=Ora Sudafrica
+Africa/Mogadishu.generic.long=Ora dell'Africa orientale
+Africa/Monrovia.generic.long=Ora media di Greenwich
+Africa/Nairobi.generic.long=Ora dell'Africa orientale
+Africa/Ndjamena.generic.long=Ora dell'Africa occidentale
+Africa/Niamey.generic.long=Ora dell'Africa occidentale
+Africa/Nouakchott.generic.long=Ora media di Greenwich
+Africa/Ouagadougou.generic.long=Ora media di Greenwich
+Africa/Porto-Novo.generic.long=Ora dell'Africa occidentale
+Africa/Sao_Tome.generic.long=Ora media di Greenwich
+Africa/Timbuktu.generic.long=Ora media di Greenwich
+Africa/Tripoli.generic.long=Ora dell'Europa orientale
+Africa/Tunis.generic.long=Ora dell'Europa centrale
+Africa/Windhoek.generic.long=Ora dell'Africa occidentale
+America/Adak.generic.long=Ora Hawaii-Aleutine
+America/Anchorage.generic.long=Ora Alaska
+America/Anguilla.generic.long=Fuso dell'Atlantico
+America/Antigua.generic.long=Fuso dell'Atlantico
+America/Araguaina.generic.long=Ora di Brasilia
+America/Argentina/Buenos_Aires.generic.long=Ora dell'Argentina
+America/Argentina/Catamarca.generic.long=Ora dell'Argentina
+America/Argentina/ComodRivadavia.generic.long=Ora dell'Argentina
+America/Argentina/Cordoba.generic.long=Ora dell'Argentina
+America/Argentina/Jujuy.generic.long=Ora dell'Argentina
+America/Argentina/La_Rioja.generic.long=Ora dell'Argentina
+America/Argentina/Mendoza.generic.long=Ora dell'Argentina
+America/Argentina/Rio_Gallegos.generic.long=Ora dell'Argentina
+America/Argentina/Salta.generic.long=Ora dell'Argentina
+America/Argentina/San_Juan.generic.long=Ora dell'Argentina
+America/Argentina/San_Luis.generic.long=Ora dell'Argentina
+America/Argentina/Tucuman.generic.long=Ora dell'Argentina
+America/Argentina/Ushuaia.generic.long=Ora dell'Argentina
+America/Aruba.generic.long=Fuso dell'Atlantico
+America/Asuncion.generic.long=Ora del Paraguay
+America/Atikokan.generic.long=Fuso orientale
+America/Atka.generic.long=Ora Hawaii-Aleutine
+America/Bahia.generic.long=Ora di Brasilia
+America/Bahia_Banderas.generic.long=Ora fuso centrale
+America/Barbados.generic.long=Fuso dell'Atlantico
+America/Belem.generic.long=Ora di Brasilia
+America/Belize.generic.long=Ora fuso centrale
+America/Blanc-Sablon.generic.long=Fuso dell'Atlantico
+America/Boa_Vista.generic.long=Ora dell'Amazzonia
+America/Bogota.generic.long=Ora della Colombia
+America/Boise.generic.long=Ora fuso occidentale
+America/Buenos_Aires.generic.long=Ora dell'Argentina
+America/Cambridge_Bay.generic.long=Ora fuso occidentale
+America/Campo_Grande.generic.long=Ora dell'Amazzonia
+America/Cancun.generic.long=Ora fuso centrale
+America/Caracas.generic.long=Ora del Venezuela
+America/Catamarca.generic.long=Ora dell'Argentina
+America/Cayenne.generic.long=Ora della Guyana Francese
+America/Cayman.generic.long=Fuso orientale
+America/Chicago.generic.long=Ora fuso centrale
+America/Chihuahua.generic.long=Ora fuso occidentale
+America/Coral_Harbour.generic.long=Fuso orientale
+America/Cordoba.generic.long=Ora dell'Argentina
+America/Costa_Rica.generic.long=Ora fuso centrale
+America/Creston.generic.long=Ora fuso occidentale
+America/Cuiaba.generic.long=Ora dell'Amazzonia
+America/Curacao.generic.long=Fuso dell'Atlantico
+America/Danmarkshavn.generic.long=Ora media di Greenwich
+America/Dawson.generic.long=Fuso del Pacifico
+America/Dawson_Creek.generic.long=Ora fuso occidentale
+America/Denver.generic.long=Ora fuso occidentale
+America/Detroit.generic.long=Fuso orientale
+America/Dominica.generic.long=Fuso dell'Atlantico
+America/Edmonton.generic.long=Ora fuso occidentale
+America/Eirunepe.generic.long=Ora di Acre
+America/El_Salvador.generic.long=Ora fuso centrale
+America/Ensenada.generic.long=Fuso del Pacifico
+America/Fort_Wayne.generic.long=Fuso orientale
+America/Fortaleza.generic.long=Ora di Brasilia
+America/Glace_Bay.generic.long=Fuso dell'Atlantico
+America/Godthab.generic.long=Ora della Groenlandia occidentale
+America/Goose_Bay.generic.long=Fuso dell'Atlantico
+America/Grand_Turk.generic.long=Fuso orientale
+America/Grenada.generic.long=Fuso dell'Atlantico
+America/Guadeloupe.generic.long=Fuso dell'Atlantico
+America/Guatemala.generic.long=Ora fuso centrale
+America/Guayaquil.generic.long=Ora dell'Ecuador
+America/Guyana.generic.long=Ora della Guyana
+America/Halifax.generic.long=Fuso dell'Atlantico
+America/Havana.generic.long=Ora di Cuba
+America/Hermosillo.generic.long=Ora fuso occidentale
+America/Indiana/Indianapolis.generic.long=Fuso orientale
+America/Indiana/Knox.generic.long=Ora fuso centrale
+America/Indiana/Marengo.generic.long=Fuso orientale
+America/Indiana/Petersburg.generic.long=Fuso orientale
+America/Indiana/Tell_City.generic.long=Ora fuso centrale
+America/Indiana/Vevay.generic.long=Fuso orientale
+America/Indiana/Vincennes.generic.long=Fuso orientale
+America/Indiana/Winamac.generic.long=Fuso orientale
+America/Indianapolis.generic.long=Fuso orientale
+America/Inuvik.generic.long=Ora fuso occidentale
+America/Iqaluit.generic.long=Fuso orientale
+America/Jamaica.generic.long=Fuso orientale
+America/Jujuy.generic.long=Ora dell'Argentina
+America/Juneau.generic.long=Ora Alaska
+America/Kentucky/Louisville.generic.long=Fuso orientale
+America/Kentucky/Monticello.generic.long=Fuso orientale
+America/Knox_IN.generic.long=Ora fuso centrale
+America/Kralendijk.generic.long=Fuso dell'Atlantico
+America/La_Paz.generic.long=Ora della Bolivia
+America/Lima.generic.long=Ora del Per\u00F9
+America/Los_Angeles.generic.long=Fuso del Pacifico
+America/Louisville.generic.long=Fuso orientale
+America/Lower_Princes.generic.long=Fuso dell'Atlantico
+America/Maceio.generic.long=Ora di Brasilia
+America/Managua.generic.long=Ora fuso centrale
+America/Manaus.generic.long=Ora dell'Amazzonia
+America/Marigot.generic.long=Fuso dell'Atlantico
+America/Martinique.generic.long=Fuso dell'Atlantico
+America/Matamoros.generic.long=Ora fuso centrale
+America/Mazatlan.generic.long=Ora fuso occidentale
+America/Mendoza.generic.long=Ora dell'Argentina
+America/Menominee.generic.long=Ora fuso centrale
+America/Merida.generic.long=Ora fuso centrale
+America/Metlakatla.daylight.long=Ora legale di Metlakatla
+America/Metlakatla.generic.long=Ora di Metlakatla
+America/Metlakatla.standard.long=Ora standard di Metlakatla
+America/Mexico_City.generic.long=Ora fuso centrale
+America/Miquelon.generic.long=Ora Saint-Pierre e Miquelon
+America/Moncton.generic.long=Fuso dell'Atlantico
+America/Monterrey.generic.long=Ora fuso centrale
+America/Montevideo.generic.long=Ora dell'Uruguay
+America/Montreal.generic.long=Fuso orientale
+America/Montserrat.generic.long=Fuso dell'Atlantico
+America/Nassau.generic.long=Fuso orientale
+America/New_York.generic.long=Fuso orientale
+America/Nipigon.generic.long=Fuso orientale
+America/Nome.generic.long=Ora Alaska
+America/Noronha.generic.long=Ora di Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Ora fuso centrale
+America/North_Dakota/Center.generic.long=Ora fuso centrale
+America/North_Dakota/New_Salem.generic.long=Ora fuso centrale
+America/Ojinaga.generic.long=Ora fuso occidentale
+America/Panama.generic.long=Fuso orientale
+America/Pangnirtung.generic.long=Fuso orientale
+America/Paramaribo.generic.long=Ora di Suriname
+America/Phoenix.generic.long=Ora fuso occidentale
+America/Port-au-Prince.generic.long=Fuso orientale
+America/Port_of_Spain.generic.long=Fuso dell'Atlantico
+America/Porto_Acre.generic.long=Ora di Acre
+America/Porto_Velho.generic.long=Ora dell'Amazzonia
+America/Puerto_Rico.generic.long=Fuso dell'Atlantico
+America/Rainy_River.generic.long=Ora fuso centrale
+America/Rankin_Inlet.generic.long=Ora fuso centrale
+America/Recife.generic.long=Ora di Brasilia
+America/Regina.generic.long=Ora fuso centrale
+America/Resolute.generic.long=Ora fuso centrale
+America/Rio_Branco.generic.long=Ora di Acre
+America/Rosario.generic.long=Ora dell'Argentina
+America/Santa_Isabel.generic.long=Fuso del Pacifico
+America/Santarem.generic.long=Ora di Brasilia
+America/Santiago.generic.long=Ora del Cile
+America/Santo_Domingo.generic.long=Fuso dell'Atlantico
+America/Sao_Paulo.generic.long=Ora di Brasilia
+America/Scoresbysund.generic.long=Ora della Groenlandia orientale
+America/Shiprock.generic.long=Ora fuso occidentale
+America/Sitka.generic.long=Ora Alaska
+America/St_Barthelemy.generic.long=Fuso dell'Atlantico
+America/St_Johns.generic.long=Ora Terranova
+America/St_Kitts.generic.long=Fuso dell'Atlantico
+America/St_Lucia.generic.long=Fuso dell'Atlantico
+America/St_Thomas.generic.long=Fuso dell'Atlantico
+America/St_Vincent.generic.long=Fuso dell'Atlantico
+America/Swift_Current.generic.long=Ora fuso centrale
+America/Tegucigalpa.generic.long=Ora fuso centrale
+America/Thule.generic.long=Fuso dell'Atlantico
+America/Thunder_Bay.generic.long=Fuso orientale
+America/Tijuana.generic.long=Fuso del Pacifico
+America/Toronto.generic.long=Fuso orientale
+America/Tortola.generic.long=Fuso dell'Atlantico
+America/Vancouver.generic.long=Fuso del Pacifico
+America/Virgin.generic.long=Fuso dell'Atlantico
+America/Whitehorse.generic.long=Fuso del Pacifico
+America/Winnipeg.generic.long=Ora fuso centrale
+America/Yakutat.generic.long=Ora Alaska
+America/Yellowknife.generic.long=Ora fuso occidentale
+Antarctica/Casey.daylight.long=Ora estiva dell'Australia occidentale
+Antarctica/Casey.generic.long=Ora Australia occidentale
+Antarctica/Casey.standard.long=Ora standard dell'Australia occidentale
+Antarctica/Davis.generic.long=Ora di Davis
+Antarctica/DumontDUrville.generic.long=Ora di Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Ora estiva dell'Isola Macquarie
+Antarctica/Macquarie.generic.long=Ora dell'Isola Macquarie
+Antarctica/Macquarie.standard.long=Ora dell'Isola Macquarie
+Antarctica/Mawson.generic.long=Ora di Mawson
+Antarctica/McMurdo.generic.long=Ora Nuova Zelanda
+Antarctica/Palmer.generic.long=Ora del Cile
+Antarctica/Rothera.generic.long=Ora di Rothera
+Antarctica/South_Pole.generic.long=Ora Nuova Zelanda
+Antarctica/Syowa.generic.long=Ora di Syowa
+Antarctica/Vostok.generic.long=Ora di Vostok
+Arctic/Longyearbyen.generic.long=Ora dell'Europa centrale
+Asia/Aden.generic.long=Ora Arabia Saudita
+Asia/Almaty.generic.long=Ora di Alma-Ata
+Asia/Amman.generic.long=Ora Arabia Saudita
+Asia/Anadyr.generic.long=Ora di Anadyr
+Asia/Aqtau.generic.long=Ora di Aqtau
+Asia/Aqtobe.generic.long=Ora di Aqtobe
+Asia/Ashgabat.generic.long=Ora del Turkmenistan
+Asia/Ashkhabad.generic.long=Ora del Turkmenistan
+Asia/Baghdad.generic.long=Ora Arabia Saudita
+Asia/Bahrain.generic.long=Ora Arabia Saudita
+Asia/Baku.generic.long=Ora dell'Azerbaigian
+Asia/Bangkok.generic.long=Ora dell'Indocina
+Asia/Beirut.generic.long=Ora dell'Europa orientale
+Asia/Bishkek.generic.long=Ora del Kirghizistan
+Asia/Brunei.generic.long=Ora del Brunei
+Asia/Calcutta.generic.long=Ora India
+Asia/Choibalsan.generic.long=Ora di Choibalsan
+Asia/Chongqing.generic.long=Ora Cina
+Asia/Chungking.generic.long=Ora Cina
+Asia/Colombo.generic.long=Ora India
+Asia/Dacca.generic.long=Ora del Bangladesh
+Asia/Damascus.generic.long=Ora dell'Europa orientale
+Asia/Dhaka.generic.long=Ora del Bangladesh
+Asia/Dili.generic.long=Ora di Timor Est
+Asia/Dubai.generic.long=Ora del golfo
+Asia/Dushanbe.generic.long=Ora del Tagikistan
+Asia/Gaza.generic.long=Ora dell'Europa orientale
+Asia/Harbin.generic.long=Ora Cina
+Asia/Hebron.generic.long=Ora dell'Europa orientale
+Asia/Ho_Chi_Minh.generic.long=Ora dell'Indocina
+Asia/Hong_Kong.generic.long=Ora di Hong Kong
+Asia/Hovd.generic.long=Ora di Hovd
+Asia/Irkutsk.generic.long=Ora di Irkutsk
+Asia/Istanbul.generic.long=Ora dell'Europa orientale
+Asia/Jakarta.generic.long=Ora dell'Indonesia occidentale
+Asia/Jayapura.generic.long=Ora dell'Indonesia orientale
+Asia/Jerusalem.generic.long=Ora Israele
+Asia/Kabul.generic.long=Ora dell'Afghanistan
+Asia/Kamchatka.generic.long=Ora di Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Ora del Pakistan
+Asia/Kashgar.generic.long=Ora Cina
+Asia/Kathmandu.generic.long=Ora del Nepal
+Asia/Katmandu.generic.long=Ora del Nepal
+Asia/Khandyga.daylight.long=Ora estiva di Khandyga
+Asia/Khandyga.generic.long=Ora di Khandyga
+Asia/Khandyga.standard.long=Ora di Khandyga
+Asia/Kolkata.generic.long=Ora India
+Asia/Krasnoyarsk.generic.long=Ora di Krasnojarsk
+Asia/Kuala_Lumpur.generic.long=Ora della Malaysia
+Asia/Kuching.generic.long=Ora della Malaysia
+Asia/Kuwait.generic.long=Ora Arabia Saudita
+Asia/Macao.generic.long=Ora Cina
+Asia/Macau.generic.long=Ora Cina
+Asia/Magadan.generic.long=Ora di Magadan
+Asia/Makassar.generic.long=Ora dell'Indonesia centrale
+Asia/Manila.generic.long=Ora delle Filippine
+Asia/Muscat.generic.long=Ora del golfo
+Asia/Nicosia.generic.long=Ora dell'Europa orientale
+Asia/Novokuznetsk.generic.long=Ora di Novosibirsk
+Asia/Novosibirsk.generic.long=Ora di Novosibirsk
+Asia/Omsk.generic.long=Ora di Omsk
+Asia/Oral.generic.long=Ora di Oral
+Asia/Phnom_Penh.generic.long=Ora dell'Indocina
+Asia/Pontianak.generic.long=Ora dell'Indonesia occidentale
+Asia/Pyongyang.generic.long=Ora Corea
+Asia/Qatar.generic.long=Ora Arabia Saudita
+Asia/Qyzylorda.generic.long=Ora di Qyzylorda
+Asia/Rangoon.generic.long=Ora della Birmania/Myanmar
+Asia/Saigon.generic.long=Ora dell'Indocina
+Asia/Sakhalin.generic.long=Ora di Sakhalin
+Asia/Samarkand.generic.long=Ora dell'Uzbekistan
+Asia/Seoul.generic.long=Ora Corea
+Asia/Shanghai.generic.long=Ora Cina
+Asia/Singapore.generic.long=Ora di Singapore
+Asia/Taipei.generic.long=Ora Cina
+Asia/Tashkent.generic.long=Ora dell'Uzbekistan
+Asia/Tbilisi.generic.long=Ora della Georgia
+Asia/Tehran.generic.long=Ora Iran
+Asia/Tel_Aviv.generic.long=Ora Israele
+Asia/Thimbu.generic.long=Ora del Bhutan
+Asia/Thimphu.generic.long=Ora del Bhutan
+Asia/Tokyo.generic.long=Ora Giappone
+Asia/Ujung_Pandang.generic.long=Ora dell'Indonesia centrale
+Asia/Ulaanbaatar.generic.long=Ora di Ulaanbaatar
+Asia/Ulan_Bator.generic.long=Ora di Ulaanbaatar
+Asia/Urumqi.generic.long=Ora Cina
+Asia/Ust-Nera.daylight.long=Ora estiva di Ust-Nera
+Asia/Ust-Nera.generic.long=Ora di Ust-Nera
+Asia/Ust-Nera.standard.long=Ora di Ust-Nera
+Asia/Vientiane.generic.long=Ora dell'Indocina
+Asia/Vladivostok.generic.long=Ora di Vladivostok
+Asia/Yakutsk.generic.long=Ora di Yakutsk
+Asia/Yekaterinburg.generic.long=Ora di Ekaterinburg
+Asia/Yerevan.generic.long=Ora dell'Armenia
+Atlantic/Azores.generic.long=Ora delle Azzorre
+Atlantic/Bermuda.generic.long=Fuso dell'Atlantico
+Atlantic/Canary.generic.long=Ora dell'Europa occidentale
+Atlantic/Cape_Verde.generic.long=Ora di Capo Verde
+Atlantic/Faeroe.generic.long=Ora dell'Europa occidentale
+Atlantic/Faroe.generic.long=Ora dell'Europa occidentale
+Atlantic/Jan_Mayen.generic.long=Ora dell'Europa centrale
+Atlantic/Madeira.generic.long=Ora dell'Europa occidentale
+Atlantic/Reykjavik.generic.long=Ora media di Greenwich
+Atlantic/South_Georgia.generic.long=Ora Georgia del Sud
+Atlantic/St_Helena.generic.long=Ora media di Greenwich
+Atlantic/Stanley.generic.long=Ora delle Falkland
+Australia/ACT.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/ACT.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/ACT.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Adelaide.daylight.long=Ora estiva centrale (Australia del Sud)
+Australia/Adelaide.generic.long=Ora fuso centrale (Australia del Sud)
+Australia/Adelaide.standard.long=Ora standard centrale (Australia del Sud)
+Australia/Brisbane.daylight.long=Ora estiva orientale (Queensland)
+Australia/Brisbane.generic.long=Ora fuso orientale (Queensland)
+Australia/Brisbane.standard.long=Ora standard orientale (Queensland)
+Australia/Broken_Hill.daylight.long=Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Broken_Hill.generic.long=Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Broken_Hill.standard.long=Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Canberra.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Canberra.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/Canberra.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Currie.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Currie.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/Currie.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Darwin.daylight.long=Ora estiva centrale (Territori del Nord)
+Australia/Darwin.generic.long=Ora fuso centrale (Territori del Nord)
+Australia/Darwin.standard.long=Ora standard centrale (Territori del Nord)
+Australia/Eucla.daylight.long=Ora estiva Australia centro-occidentale
+Australia/Eucla.generic.long=Ora Australia centro-occidentale
+Australia/Eucla.standard.long=Ora standard Australia centro-occidentale
+Australia/Hobart.daylight.long=Ora estiva orientale (Tasmania)
+Australia/Hobart.generic.long=Ora fuso orientale (Tasmania)
+Australia/Hobart.standard.long=Ora standard orientale (Tasmania)
+Australia/LHI.generic.long=Ora di Lord Howe
+Australia/Lindeman.daylight.long=Ora estiva orientale (Queensland)
+Australia/Lindeman.generic.long=Ora fuso orientale (Queensland)
+Australia/Lindeman.standard.long=Ora standard orientale (Queensland)
+Australia/Lord_Howe.generic.long=Ora di Lord Howe
+Australia/Melbourne.daylight.long=Ora estiva orientale (Victoria)
+Australia/Melbourne.generic.long=Ora fuso orientale (Victoria)
+Australia/Melbourne.standard.long=Ora standard orientale (Victoria)
+Australia/NSW.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/NSW.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/NSW.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/North.daylight.long=Ora estiva centrale (Territori del Nord)
+Australia/North.generic.long=Ora fuso centrale (Territori del Nord)
+Australia/North.standard.long=Ora standard centrale (Territori del Nord)
+Australia/Perth.daylight.long=Ora estiva dell'Australia occidentale
+Australia/Perth.generic.long=Ora Australia occidentale
+Australia/Perth.standard.long=Ora standard dell'Australia occidentale
+Australia/Queensland.daylight.long=Ora estiva orientale (Queensland)
+Australia/Queensland.generic.long=Ora fuso orientale (Queensland)
+Australia/Queensland.standard.long=Ora standard orientale (Queensland)
+Australia/South.daylight.long=Ora estiva centrale (Australia del Sud)
+Australia/South.generic.long=Ora fuso centrale (Australia del Sud)
+Australia/South.standard.long=Ora standard centrale (Australia del Sud)
+Australia/Sydney.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Sydney.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/Sydney.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Tasmania.daylight.long=Ora estiva orientale (Tasmania)
+Australia/Tasmania.generic.long=Ora fuso orientale (Tasmania)
+Australia/Tasmania.standard.long=Ora standard orientale (Tasmania)
+Australia/Victoria.daylight.long=Ora estiva orientale (Victoria)
+Australia/Victoria.generic.long=Ora fuso orientale (Victoria)
+Australia/Victoria.standard.long=Ora standard orientale (Victoria)
+Australia/West.daylight.long=Ora estiva dell'Australia occidentale
+Australia/West.generic.long=Ora Australia occidentale
+Australia/West.standard.long=Ora standard dell'Australia occidentale
+Australia/Yancowinna.daylight.long=Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Yancowinna.generic.long=Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Yancowinna.standard.long=Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)
+BET.generic.long=Ora di Brasilia
+BST.generic.long=Ora del Bangladesh
+Brazil/Acre.generic.long=Ora di Acre
+Brazil/DeNoronha.generic.long=Ora di Fernando de Noronha
+Brazil/East.generic.long=Ora di Brasilia
+Brazil/West.generic.long=Ora dell'Amazzonia
+CAT.generic.long=Ora dell'Africa centrale
+CET.generic.long=Ora dell'Europa centrale
+CNT.generic.long=Ora Terranova
+CST.generic.long=Ora fuso centrale
+CST6CDT.generic.long=Ora fuso centrale
+CTT.generic.long=Ora Cina
+Canada/Atlantic.generic.long=Fuso dell'Atlantico
+Canada/Central.generic.long=Ora fuso centrale
+Canada/East-Saskatchewan.generic.long=Ora fuso centrale
+Canada/Eastern.generic.long=Fuso orientale
+Canada/Mountain.generic.long=Ora fuso occidentale
+Canada/Newfoundland.generic.long=Ora Terranova
+Canada/Pacific.generic.long=Fuso del Pacifico
+Canada/Saskatchewan.generic.long=Ora fuso centrale
+Canada/Yukon.generic.long=Fuso del Pacifico
+Chile/Continental.generic.long=Ora del Cile
+Chile/EasterIsland.generic.long=Ora dell'Isola di Pasqua
+Cuba.generic.long=Ora di Cuba
+EAT.generic.long=Ora dell'Africa orientale
+ECT.generic.long=Ora dell'Europa centrale
+EET.generic.long=Ora dell'Europa orientale
+EST.generic.long=Fuso orientale
+EST5EDT.generic.long=Fuso orientale
+Egypt.generic.long=Ora dell'Europa orientale
+Eire.generic.long=Ora irlandese
+Etc/Greenwich.generic.long=Ora media di Greenwich
+Etc/UCT.generic.long=Tempo universale coordinato
+Etc/UTC.generic.long=Tempo universale coordinato
+Etc/Universal.generic.long=Tempo universale coordinato
+Etc/Zulu.generic.long=Tempo universale coordinato
+Europe/Amsterdam.generic.long=Ora dell'Europa centrale
+Europe/Andorra.generic.long=Ora dell'Europa centrale
+Europe/Athens.generic.long=Ora dell'Europa orientale
+Europe/Belfast.generic.long=Ora britannica
+Europe/Belgrade.generic.long=Ora dell'Europa centrale
+Europe/Berlin.generic.long=Ora dell'Europa centrale
+Europe/Bratislava.generic.long=Ora dell'Europa centrale
+Europe/Brussels.generic.long=Ora dell'Europa centrale
+Europe/Bucharest.generic.long=Ora dell'Europa orientale
+Europe/Budapest.generic.long=Ora dell'Europa centrale
+Europe/Busingen.generic.long=Ora dell'Europa centrale
+Europe/Chisinau.generic.long=Ora dell'Europa orientale
+Europe/Copenhagen.generic.long=Ora dell'Europa centrale
+Europe/Dublin.generic.long=Ora irlandese
+Europe/Gibraltar.generic.long=Ora dell'Europa centrale
+Europe/Guernsey.generic.long=Ora britannica
+Europe/Helsinki.generic.long=Ora dell'Europa orientale
+Europe/Isle_of_Man.generic.long=Ora britannica
+Europe/Istanbul.generic.long=Ora dell'Europa orientale
+Europe/Jersey.generic.long=Ora britannica
+Europe/Kaliningrad.daylight.long=Ora estiva dei paesi europei pi\u00F9 orientali
+Europe/Kaliningrad.generic.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Kaliningrad.standard.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Kiev.generic.long=Ora dell'Europa orientale
+Europe/Lisbon.generic.long=Ora dell'Europa occidentale
+Europe/Ljubljana.generic.long=Ora dell'Europa centrale
+Europe/London.generic.long=Ora britannica
+Europe/Luxembourg.generic.long=Ora dell'Europa centrale
+Europe/Madrid.generic.long=Ora dell'Europa centrale
+Europe/Malta.generic.long=Ora dell'Europa centrale
+Europe/Mariehamn.generic.long=Ora dell'Europa orientale
+Europe/Minsk.daylight.long=Ora estiva dei paesi europei pi\u00F9 orientali
+Europe/Minsk.generic.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Minsk.standard.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Monaco.generic.long=Ora dell'Europa centrale
+Europe/Moscow.generic.long=Ora Mosca
+Europe/Nicosia.generic.long=Ora dell'Europa orientale
+Europe/Oslo.generic.long=Ora dell'Europa centrale
+Europe/Paris.generic.long=Ora dell'Europa centrale
+Europe/Podgorica.generic.long=Ora dell'Europa centrale
+Europe/Prague.generic.long=Ora dell'Europa centrale
+Europe/Riga.generic.long=Ora dell'Europa orientale
+Europe/Rome.generic.long=Ora dell'Europa centrale
+Europe/Samara.generic.long=Ora di Samara
+Europe/San_Marino.generic.long=Ora dell'Europa centrale
+Europe/Sarajevo.generic.long=Ora dell'Europa centrale
+Europe/Simferopol.generic.long=Ora dell'Europa orientale
+Europe/Skopje.generic.long=Ora dell'Europa centrale
+Europe/Sofia.generic.long=Ora dell'Europa orientale
+Europe/Stockholm.generic.long=Ora dell'Europa centrale
+Europe/Tallinn.generic.long=Ora dell'Europa orientale
+Europe/Tirane.generic.long=Ora dell'Europa centrale
+Europe/Tiraspol.generic.long=Ora dell'Europa orientale
+Europe/Uzhgorod.generic.long=Ora dell'Europa orientale
+Europe/Vaduz.generic.long=Ora dell'Europa centrale
+Europe/Vatican.generic.long=Ora dell'Europa centrale
+Europe/Vienna.generic.long=Ora dell'Europa centrale
+Europe/Vilnius.generic.long=Ora dell'Europa orientale
+Europe/Volgograd.generic.long=Ora di Volgograd
+Europe/Warsaw.generic.long=Ora dell'Europa centrale
+Europe/Zagreb.generic.long=Ora dell'Europa centrale
+Europe/Zaporozhye.generic.long=Ora dell'Europa orientale
+Europe/Zurich.generic.long=Ora dell'Europa centrale
+GB-Eire.generic.long=Ora britannica
+GB.generic.long=Ora britannica
+GMT.generic.long=Ora media di Greenwich
+Greenwich.generic.long=Ora media di Greenwich
+HST.generic.long=Ora Hawaii
+Hongkong.generic.long=Ora di Hong Kong
+IET.generic.long=Fuso orientale
+IST.generic.long=Ora India
+Iceland.generic.long=Ora media di Greenwich
+Indian/Antananarivo.generic.long=Ora dell'Africa orientale
+Indian/Chagos.generic.long=Ora del Territorio Britannico dell'Oceano Indiano
+Indian/Christmas.generic.long=Ora dell'Isola Christmas
+Indian/Cocos.generic.long=Ora delle Isole Cocos
+Indian/Comoro.generic.long=Ora dell'Africa orientale
+Indian/Kerguelen.generic.long=Ora delle Terre Australi e Antartiche Francesi
+Indian/Mahe.generic.long=Ora delle Seychelles
+Indian/Maldives.generic.long=Ora delle Maldive
+Indian/Mauritius.generic.long=Ora di Mauritius
+Indian/Mayotte.generic.long=Ora dell'Africa orientale
+Indian/Reunion.generic.long=Ora di Reunion
+Iran.generic.long=Ora Iran
+Israel.generic.long=Ora Israele
+JST.generic.long=Ora Giappone
+Jamaica.generic.long=Fuso orientale
+Japan.generic.long=Ora Giappone
+Kwajalein.generic.long=Ora delle Isole Marshall
+Libya.generic.long=Ora dell'Europa orientale
+MET.generic.long=MET
+MIT.generic.long=Ora di Samoa occidentale
+MST.generic.long=Ora fuso occidentale
+MST7MDT.generic.long=Ora fuso occidentale
+Mexico/BajaNorte.generic.long=Fuso del Pacifico
+Mexico/BajaSur.generic.long=Ora fuso occidentale
+Mexico/General.generic.long=Ora fuso centrale
+NET.generic.long=Ora dell'Armenia
+NST.generic.long=Ora Nuova Zelanda
+NZ-CHAT.generic.long=Ora Chatham
+NZ.generic.long=Ora Nuova Zelanda
+Navajo.generic.long=Ora fuso occidentale
+PLT.generic.long=Ora del Pakistan
+PNT.generic.long=Ora fuso occidentale
+PRC.generic.long=Ora Cina
+PRT.generic.long=Fuso dell'Atlantico
+PST.generic.long=Fuso del Pacifico
+PST8PDT.generic.long=Fuso del Pacifico
+Pacific/Apia.generic.long=Ora di Samoa occidentale
+Pacific/Auckland.generic.long=Ora Nuova Zelanda
+Pacific/Chatham.generic.long=Ora Chatham
+Pacific/Chuuk.daylight.long=Ora estiva di Chuuk
+Pacific/Chuuk.generic.long=Ora di Chuuk
+Pacific/Chuuk.standard.long=Ora di Chuuk
+Pacific/Easter.generic.long=Ora dell'Isola di Pasqua
+Pacific/Efate.generic.long=Ora di Vanuatu
+Pacific/Enderbury.generic.long=Ora delle Isole Phoenix
+Pacific/Fakaofo.generic.long=Ora di Tokelau
+Pacific/Fiji.generic.long=Ora di Figi
+Pacific/Funafuti.generic.long=Ora di Tuvalu
+Pacific/Galapagos.generic.long=Ora delle Galapagos
+Pacific/Gambier.generic.long=Ora di Gambier
+Pacific/Guadalcanal.generic.long=Ora delle Isole Salomone
+Pacific/Guam.generic.long=Ora Chamorro
+Pacific/Honolulu.generic.long=Ora Hawaii
+Pacific/Johnston.generic.long=Ora Hawaii
+Pacific/Kiritimati.generic.long=Ora delle Line Islands
+Pacific/Kosrae.generic.long=Ora di Kosrae
+Pacific/Kwajalein.generic.long=Ora delle Isole Marshall
+Pacific/Majuro.generic.long=Ora delle Isole Marshall
+Pacific/Marquesas.generic.long=Ora delle Isole Marchesi
+Pacific/Midway.generic.long=Ora Samoa
+Pacific/Nauru.generic.long=Ora di Nauru
+Pacific/Niue.generic.long=Ora di Niue
+Pacific/Norfolk.generic.long=Ora di Norfolk
+Pacific/Noumea.generic.long=Ora della Nuova Caledonia
+Pacific/Pago_Pago.generic.long=Ora Samoa
+Pacific/Palau.generic.long=Ora di Palau
+Pacific/Pitcairn.generic.long=Ora Pitcairn
+Pacific/Pohnpei.daylight.long=Ora estiva di Pohnpei
+Pacific/Pohnpei.generic.long=Ora Ponape
+Pacific/Pohnpei.standard.long=Ora di Pohnpei
+Pacific/Ponape.daylight.long=Ora estiva di Pohnpei
+Pacific/Ponape.generic.long=Ora Ponape
+Pacific/Ponape.standard.long=Ora di Pohnpei
+Pacific/Port_Moresby.generic.long=Ora di Papua Nuova Guinea
+Pacific/Rarotonga.generic.long=Ora delle Isole Cook
+Pacific/Saipan.generic.long=Ora Chamorro
+Pacific/Samoa.generic.long=Ora Samoa
+Pacific/Tahiti.generic.long=Ora di Tahiti
+Pacific/Tarawa.generic.long=Ora delle Isole Gilbert
+Pacific/Tongatapu.generic.long=Ora di Tonga
+Pacific/Truk.daylight.long=Ora estiva di Chuuk
+Pacific/Truk.generic.long=Ora di Chuuk
+Pacific/Truk.standard.long=Ora di Chuuk
+Pacific/Wake.generic.long=Ora di Wake
+Pacific/Wallis.generic.long=Ora di Wallis e Futuna
+Pacific/Yap.daylight.long=Ora estiva di Chuuk
+Pacific/Yap.generic.long=Ora di Chuuk
+Pacific/Yap.standard.long=Ora di Chuuk
+Poland.generic.long=Ora dell'Europa centrale
+Portugal.generic.long=Ora dell'Europa occidentale
+ROK.generic.long=Ora Corea
+SST.generic.long=Ora delle Isole Salomone
+Singapore.generic.long=Ora di Singapore
+SystemV/AST4.generic.long=Fuso dell'Atlantico
+SystemV/AST4ADT.generic.long=Fuso dell'Atlantico
+SystemV/CST6.generic.long=Ora fuso centrale
+SystemV/CST6CDT.generic.long=Ora fuso centrale
+SystemV/EST5.generic.long=Fuso orientale
+SystemV/EST5EDT.generic.long=Fuso orientale
+SystemV/HST10.generic.long=Ora Hawaii
+SystemV/MST7.generic.long=Ora fuso occidentale
+SystemV/MST7MDT.generic.long=Ora fuso occidentale
+SystemV/PST8.generic.long=Fuso del Pacifico
+SystemV/PST8PDT.generic.long=Fuso del Pacifico
+SystemV/YST9.generic.long=Ora Alaska
+SystemV/YST9YDT.generic.long=Ora Alaska
+Turkey.generic.long=Ora dell'Europa orientale
+UCT.generic.long=Tempo universale coordinato
+US/Alaska.generic.long=Ora Alaska
+US/Aleutian.generic.long=Ora Hawaii-Aleutine
+US/Arizona.generic.long=Ora fuso occidentale
+US/Central.generic.long=Ora fuso centrale
+US/East-Indiana.generic.long=Fuso orientale
+US/Eastern.generic.long=Fuso orientale
+US/Hawaii.generic.long=Ora Hawaii
+US/Indiana-Starke.generic.long=Ora fuso centrale
+US/Michigan.generic.long=Fuso orientale
+US/Mountain.generic.long=Ora fuso occidentale
+US/Pacific-New.generic.long=Fuso del Pacifico
+US/Pacific.generic.long=Fuso del Pacifico
+US/Samoa.generic.long=Ora Samoa
+UTC.generic.long=Tempo universale coordinato
+Universal.generic.long=Tempo universale coordinato
+VST.generic.long=Ora dell'Indocina
+W-SU.generic.long=Ora Mosca
+WET.generic.long=Ora dell'Europa occidentale
+Zulu.generic.long=Tempo universale coordinato
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+ACT.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+ACT.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+AET.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+AET.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+AET.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+AGT.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+ART.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+AST.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+Africa/Abidjan.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Accra.generic.long=\u30AC\u30FC\u30CA\u6A19\u6E96\u6642
+Africa/Addis_Ababa.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Algiers.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Asmara.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Asmera.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Bamako.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Bangui.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Banjul.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Bissau.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Blantyre.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Brazzaville.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Bujumbura.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Cairo.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Casablanca.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Ceuta.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Conakry.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Dakar.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Dar_es_Salaam.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Djibouti.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Douala.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/El_Aaiun.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Freetown.generic.long=\u30B7\u30A8\u30E9\u30EC\u30AA\u30CD\u6642\u9593
+Africa/Gaborone.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Harare.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Johannesburg.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Juba.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Kampala.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Khartoum.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Kigali.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Kinshasa.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lagos.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Libreville.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lome.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Luanda.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lubumbashi.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lusaka.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Malabo.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Maputo.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Maseru.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Mbabane.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Mogadishu.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Monrovia.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Nairobi.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Ndjamena.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Niamey.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Nouakchott.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Ouagadougou.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Porto-Novo.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Sao_Tome.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Timbuktu.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Tripoli.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+Africa/Tunis.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Windhoek.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+America/Adak.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593
+America/Anchorage.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Anguilla.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Antigua.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Araguaina.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Argentina/Buenos_Aires.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Catamarca.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/ComodRivadavia.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Cordoba.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Jujuy.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/La_Rioja.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Mendoza.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Rio_Gallegos.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Salta.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/San_Juan.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/San_Luis.generic.long=\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593
+America/Argentina/Tucuman.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Ushuaia.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Aruba.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Asuncion.generic.long=\u30D1\u30E9\u30B0\u30A2\u30A4\u6642\u9593
+America/Atikokan.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Atka.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593
+America/Bahia.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Bahia_Banderas.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Barbados.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Belem.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Belize.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Boa_Vista.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Bogota.generic.long=\u30B3\u30ED\u30F3\u30D3\u30A2\u6642\u9593
+America/Boise.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Buenos_Aires.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Cambridge_Bay.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Campo_Grande.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Cancun.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Caracas.generic.long=\u30D9\u30CD\u30BA\u30A8\u30E9\u6642\u9593
+America/Catamarca.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Cayenne.generic.long=\u30D5\u30E9\u30F3\u30B9\u9818\u30AE\u30A2\u30CA\u6642\u9593
+America/Cayman.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Chicago.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Chihuahua.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Coral_Harbour.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Cordoba.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Costa_Rica.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Creston.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Cuiaba.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Curacao.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Danmarkshavn.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+America/Dawson.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Dawson_Creek.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Denver.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Detroit.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Dominica.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Edmonton.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Eirunepe.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+America/El_Salvador.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Fort_Wayne.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Fortaleza.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Godthab.generic.long=\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593
+America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Grand_Turk.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Grenada.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Guatemala.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Guayaquil.generic.long=\u30A8\u30AF\u30A2\u30C9\u30EB\u6642\u9593
+America/Guyana.generic.long=\u30AC\u30A4\u30A2\u30CA\u6642\u9593
+America/Halifax.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Havana.generic.long=\u30AD\u30E5\u30FC\u30D0\u6642\u9593
+America/Hermosillo.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Indiana/Indianapolis.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Knox.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Indiana/Marengo.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Petersburg.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Tell_City.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Indiana/Vevay.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Vincennes.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Winamac.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indianapolis.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Inuvik.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Iqaluit.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Jamaica.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Jujuy.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Juneau.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Kentucky/Louisville.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Kentucky/Monticello.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Knox_IN.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/La_Paz.generic.long=\u30DC\u30EA\u30D3\u30A2\u6642\u9593
+America/Lima.generic.long=\u30DA\u30EB\u30FC\u6642\u9593
+America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Louisville.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Maceio.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Managua.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Manaus.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Marigot.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Martinique.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Matamoros.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Mazatlan.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Mendoza.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Menominee.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Merida.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Metlakatla.daylight.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u590F\u6642\u9593
+America/Metlakatla.generic.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6642\u9593
+America/Metlakatla.standard.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6A19\u6E96\u6642\u9593
+America/Mexico_City.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Miquelon.generic.long=\u30D4\u30A8\u30FC\u30EB\u30FB\u30DF\u30AF\u30ED\u30F3\u6642\u9593
+America/Moncton.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Monterrey.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Montevideo.generic.long=\u30A6\u30EB\u30B0\u30A2\u30A4\u6642\u9593
+America/Montreal.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Montserrat.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Nassau.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/New_York.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Nipigon.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Nome.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Noronha.generic.long=\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593
+America/North_Dakota/Beulah.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/North_Dakota/Center.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/North_Dakota/New_Salem.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Ojinaga.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Panama.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Pangnirtung.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Paramaribo.generic.long=\u30B9\u30EA\u30CA\u30E0\u6642\u9593
+America/Phoenix.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Port-au-Prince.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Porto_Acre.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+America/Porto_Velho.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Rainy_River.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Rankin_Inlet.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Recife.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Regina.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Resolute.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Rio_Branco.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+America/Rosario.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Santarem.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Santiago.generic.long=\u30C1\u30EA\u6642\u9593
+America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Sao_Paulo.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Scoresbysund.generic.long=\u6771\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593
+America/Shiprock.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Sitka.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Johns.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593
+America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Swift_Current.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Tegucigalpa.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Thule.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Thunder_Bay.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Toronto.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Tortola.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Virgin.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Winnipeg.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Yakutat.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Yellowknife.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Antarctica/Casey.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Antarctica/Casey.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Antarctica/Davis.generic.long=\u30C7\u30FC\u30D3\u30B9\u6642\u9593
+Antarctica/DumontDUrville.generic.long=\u30C7\u30E5\u30E2\u30F3\u30FB\u30C7\u30E5\u30EB\u30D3\u30EB\u6642\u9593
+Antarctica/Macquarie.daylight.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593
+Antarctica/Macquarie.generic.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593
+Antarctica/Macquarie.standard.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593
+Antarctica/Mawson.generic.long=\u30E2\u30FC\u30BD\u30F3\u6642\u9593
+Antarctica/McMurdo.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Antarctica/Palmer.generic.long=\u30C1\u30EA\u6642\u9593
+Antarctica/Rothera.generic.long=\u30ED\u30BC\u30E9\u6642\u9593
+Antarctica/South_Pole.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Antarctica/Syowa.generic.long=\u662D\u548C\u57FA\u5730\u6642\u9593
+Antarctica/Vostok.generic.long=\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593
+Arctic/Longyearbyen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Aden.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Almaty.generic.long=\u30A2\u30EB\u30DE\u30A2\u30BF\u6642\u9593
+Asia/Amman.generic.long=\u30a2\u30e9\u30d3\u30a2\u6642\u9593
+Asia/Anadyr.generic.long=\u30A2\u30CA\u30C7\u30A3\u30EA\u6642\u9593
+Asia/Aqtau.generic.long=\u30A2\u30AF\u30BF\u30A6\u6642\u9593
+Asia/Aqtobe.generic.long=\u30A2\u30AF\u30C8\u30D9\u6642\u9593
+Asia/Ashgabat.generic.long=\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Ashkhabad.generic.long=\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Baghdad.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Bahrain.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Baku.generic.long=\u30A2\u30BC\u30EB\u30D0\u30A4\u30B8\u30E3\u30F3\u6642\u9593
+Asia/Bangkok.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Beirut.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Bishkek.generic.long=\u30AD\u30EB\u30AE\u30B9\u6642\u9593
+Asia/Brunei.generic.long=\u30D6\u30EB\u30CD\u30A4\u6642\u9593
+Asia/Calcutta.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Asia/Choibalsan.generic.long=\u30C1\u30E7\u30A4\u30D0\u30EB\u30B5\u30F3\u6642\u9593
+Asia/Chongqing.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Chungking.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Colombo.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Asia/Dacca.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593
+Asia/Damascus.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Dhaka.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593
+Asia/Dili.generic.long=\u6771\u30C6\u30A3\u30E2\u30FC\u30EB\u6642\u9593
+Asia/Dubai.generic.long=\u6E7E\u5CB8\u6642\u9593
+Asia/Dushanbe.generic.long=\u30BF\u30B8\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Gaza.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Harbin.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Hebron.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Ho_Chi_Minh.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Hong_Kong.generic.long=\u9999\u6E2F\u6642\u9593
+Asia/Hovd.generic.long=\u30DB\u30D6\u30C9\u6642\u9593
+Asia/Irkutsk.generic.long=\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593
+Asia/Istanbul.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Jakarta.generic.long=\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Jayapura.generic.long=\u6771\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Jerusalem.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593
+Asia/Kabul.generic.long=\u30A2\u30D5\u30AC\u30CB\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Kamchatka.generic.long=\u30DA\u30C8\u30ED\u30D1\u30D6\u30ED\u30D5\u30B9\u30AF\u30FB\u30AB\u30E0\u30C1\u30E3\u30C4\u30AD\u30FC\u6642\u9593
+Asia/Karachi.generic.long=\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Kashgar.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Kathmandu.generic.long=\u30CD\u30D1\u30FC\u30EB\u6642\u9593
+Asia/Katmandu.generic.long=\u30CD\u30D1\u30FC\u30EB\u6642\u9593
+Asia/Khandyga.daylight.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u590F\u6642\u9593
+Asia/Khandyga.generic.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593
+Asia/Khandyga.standard.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593
+Asia/Kolkata.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Asia/Krasnoyarsk.generic.long=\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593
+Asia/Kuala_Lumpur.generic.long=\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593
+Asia/Kuching.generic.long=\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593
+Asia/Kuwait.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Macao.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Macau.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Magadan.generic.long=\u30DE\u30AC\u30C0\u30F3\u6642\u9593
+Asia/Makassar.generic.long=\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Manila.generic.long=\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593
+Asia/Muscat.generic.long=\u6E7E\u5CB8\u6642\u9593
+Asia/Nicosia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Novokuznetsk.generic.long=\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593
+Asia/Novosibirsk.generic.long=\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593
+Asia/Omsk.generic.long=\u30AA\u30E0\u30B9\u30AF\u6642\u9593
+Asia/Oral.generic.long=\u30AA\u30E9\u30EB\u6642\u9593
+Asia/Phnom_Penh.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Pontianak.generic.long=\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Pyongyang.generic.long=\u97D3\u56FD\u6642\u9593
+Asia/Qatar.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Qyzylorda.generic.long=\u30AF\u30BA\u30ED\u30EB\u30C0\u6642\u9593
+Asia/Rangoon.generic.long=\u30DF\u30E3\u30F3\u30DE\u30FC\u6642\u9593
+Asia/Saigon.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Sakhalin.generic.long=\u30B5\u30CF\u30EA\u30F3\u6642\u9593
+Asia/Samarkand.generic.long=\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Seoul.generic.long=\u97D3\u56FD\u6642\u9593
+Asia/Shanghai.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Singapore.generic.long=\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593
+Asia/Taipei.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Tashkent.generic.long=\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Tbilisi.generic.long=\u30B0\u30EB\u30B8\u30A2\u6642\u9593
+Asia/Tehran.generic.long=\u30A4\u30E9\u30F3\u6642\u9593
+Asia/Tel_Aviv.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593
+Asia/Thimbu.generic.long=\u30D6\u30FC\u30BF\u30F3\u6642\u9593
+Asia/Thimphu.generic.long=\u30D6\u30FC\u30BF\u30F3\u6642\u9593
+Asia/Tokyo.generic.long=\u65E5\u672C\u6642\u9593
+Asia/Ujung_Pandang.generic.long=\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Ulaanbaatar.generic.long=\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593
+Asia/Ulan_Bator.generic.long=\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593
+Asia/Urumqi.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Ust-Nera.daylight.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u590F\u6642\u9593
+Asia/Ust-Nera.generic.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593
+Asia/Ust-Nera.standard.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593
+Asia/Vientiane.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Vladivostok.generic.long=\u30A6\u30E9\u30B8\u30AA\u30B9\u30C8\u30AF\u6642\u9593
+Asia/Yakutsk.generic.long=\u30E4\u30AF\u30FC\u30C4\u30AF\u6642\u9593
+Asia/Yekaterinburg.generic.long=\u30A8\u30AB\u30C6\u30EA\u30F3\u30D6\u30EB\u30AF\u6642\u9593
+Asia/Yerevan.generic.long=\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593
+Atlantic/Azores.generic.long=\u30A2\u30BE\u30EC\u30B9\u6642\u9593
+Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+Atlantic/Canary.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Cape_Verde.generic.long=\u30AB\u30FC\u30DC\u30D9\u30EB\u30C7\u6642\u9593
+Atlantic/Faeroe.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Faroe.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Jan_Mayen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Madeira.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Reykjavik.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Atlantic/South_Georgia.generic.long=\u5357\u30B8\u30E7\u30FC\u30B8\u30A2\u6642\u9593
+Atlantic/St_Helena.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Atlantic/Stanley.generic.long=\u30D5\u30A9\u30FC\u30AF\u30E9\u30F3\u30C9\u8AF8\u5CF6\u6642\u9593
+Australia/ACT.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/ACT.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/ACT.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Adelaide.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Adelaide.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Adelaide.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Brisbane.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Brisbane.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Brisbane.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Broken_Hill.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Broken_Hill.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Canberra.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Canberra.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Canberra.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Currie.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Currie.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Currie.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Darwin.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Darwin.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Darwin.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Hobart.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Hobart.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Hobart.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/LHI.generic.long=\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593
+Australia/Lindeman.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Lindeman.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Lindeman.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Lord_Howe.generic.long=\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593
+Australia/Melbourne.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Melbourne.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Melbourne.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/NSW.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/NSW.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/NSW.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/North.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/North.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/North.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Perth.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Perth.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Perth.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Queensland.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Queensland.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Queensland.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/South.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/South.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/South.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Sydney.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Sydney.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Sydney.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Tasmania.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Tasmania.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Tasmania.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Victoria.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Victoria.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Victoria.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/West.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/West.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/West.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Yancowinna.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Yancowinna.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Yancowinna.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+BET.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+BST.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593
+Brazil/Acre.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+Brazil/DeNoronha.generic.long=\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593
+Brazil/East.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+Brazil/West.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+CAT.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+CET.generic.long=\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+CNT.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593
+CST.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+CST6CDT.generic.long=\u4e2d\u90e8\u6a19\u6e96\u6642
+CTT.generic.long=\u4E2D\u56FD\u6642\u9593
+Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+Canada/Central.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+Canada/East-Saskatchewan.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+Canada/Eastern.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+Canada/Mountain.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+Canada/Newfoundland.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593
+Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+Canada/Saskatchewan.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+Chile/Continental.generic.long=\u30C1\u30EA\u6642\u9593
+Chile/EasterIsland.generic.long=\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593
+Cuba.generic.long=\u30AD\u30E5\u30FC\u30D0\u6642\u9593
+EAT.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+ECT.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+EET.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+EST.generic.long=\u6771\u90e8\u6a19\u6e96\u6642
+EST5EDT.generic.long=\u6771\u90e8\u6a19\u6e96\u6642
+Egypt.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Eire.generic.long=\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593
+Etc/Greenwich.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Etc/UCT.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Etc/UTC.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Etc/Universal.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Etc/Zulu.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Europe/Amsterdam.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Andorra.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Athens.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Belfast.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Belgrade.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Berlin.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Bratislava.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Brussels.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Bucharest.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Budapest.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Busingen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Chisinau.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Copenhagen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Dublin.generic.long=\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593
+Europe/Gibraltar.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Guernsey.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Helsinki.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Isle_of_Man.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Istanbul.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Jersey.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Kaliningrad.daylight.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593
+Europe/Kaliningrad.generic.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Kaliningrad.standard.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Kiev.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Lisbon.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Ljubljana.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/London.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Luxembourg.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Madrid.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Malta.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Mariehamn.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Minsk.daylight.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593
+Europe/Minsk.generic.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Minsk.standard.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Monaco.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Moscow.generic.long=\u30E2\u30B9\u30AF\u30EF\u6642\u9593
+Europe/Nicosia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Oslo.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Paris.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Podgorica.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Prague.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Riga.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Rome.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Samara.generic.long=\u30B5\u30DE\u30E9\u6642\u9593
+Europe/San_Marino.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Sarajevo.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Simferopol.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Skopje.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Sofia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Stockholm.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Tallinn.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Tirane.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Tiraspol.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Uzhgorod.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vaduz.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vatican.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vienna.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vilnius.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Volgograd.generic.long=\u30DC\u30EB\u30B4\u30B0\u30E9\u30FC\u30C9\u6642\u9593
+Europe/Warsaw.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Zagreb.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Zaporozhye.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Zurich.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+GB-Eire.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+GB.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+GMT.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Greenwich.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+HST.generic.long=\u30cf\u30ef\u30a4\u6642\u9593
+Hongkong.generic.long=\u9999\u6E2F\u6642\u9593
+IET.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+IST.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Iceland.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Indian/Antananarivo.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Indian/Chagos.generic.long=\u30A4\u30F3\u30C9\u6D0B\u5730\u57DF\u6642\u9593
+Indian/Christmas.generic.long=\u30AF\u30EA\u30B9\u30DE\u30B9\u5CF6\u6642\u9593
+Indian/Cocos.generic.long=\u30B3\u30B3\u30B9\u8AF8\u5CF6\u6642\u9593
+Indian/Comoro.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Indian/Kerguelen.generic.long=\u30D5\u30E9\u30F3\u30B9\u9818\u5357\u65B9\u304A\u3088\u3073\u5357\u6975\u5927\u9678\u6642\u9593
+Indian/Mahe.generic.long=\u30BB\u30FC\u30B7\u30A7\u30EB\u6642\u9593
+Indian/Maldives.generic.long=\u30E2\u30EB\u30B8\u30D6\u6642\u9593
+Indian/Mauritius.generic.long=\u30E2\u30FC\u30EA\u30B7\u30E3\u30B9\u6642\u9593
+Indian/Mayotte.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Indian/Reunion.generic.long=\u30EC\u30E6\u30CB\u30AA\u30F3\u6642\u9593
+Iran.generic.long=\u30A4\u30E9\u30F3\u6642\u9593
+Israel.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593
+JST.generic.long=\u65E5\u672C\u6642\u9593
+Jamaica.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+Japan.generic.long=\u65E5\u672C\u6642\u9593
+Kwajalein.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593
+Libya.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+MET.generic.long=MET
+MIT.generic.long=\u897F\u30B5\u30E2\u30A2\u6642\u9593
+MST.generic.long=\u5c71\u5730\u6a19\u6e96\u6642
+MST7MDT.generic.long=\u5c71\u5730\u6a19\u6e96\u6642
+Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+Mexico/BajaSur.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+Mexico/General.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+NET.generic.long=\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593
+NST.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+NZ-CHAT.generic.long=\u30C1\u30E3\u30BF\u30E0\u6642\u9593
+NZ.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Navajo.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+PLT.generic.long=\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+PNT.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+PRC.generic.long=\u4E2D\u56FD\u6642\u9593
+PRT.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+PST.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+PST8PDT.generic.long=\u592a\u5e73\u6d0b\u6a19\u6e96\u6642
+Pacific/Apia.generic.long=\u897F\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Auckland.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Pacific/Chatham.generic.long=\u30C1\u30E3\u30BF\u30E0\u6642\u9593
+Pacific/Chuuk.daylight.long=Chuuk Time
+Pacific/Chuuk.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Chuuk.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Easter.generic.long=\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593
+Pacific/Efate.generic.long=\u30D0\u30CC\u30A2\u30C4\u6642\u9593
+Pacific/Enderbury.generic.long=\u30D5\u30A7\u30CB\u30C3\u30AF\u30B9\u8AF8\u5CF6\u6642\u9593
+Pacific/Fakaofo.generic.long=\u30C8\u30B1\u30E9\u30A6\u6642\u9593
+Pacific/Fiji.generic.long=\u30D5\u30A3\u30B8\u30FC\u6642\u9593
+Pacific/Funafuti.generic.long=\u30C4\u30D0\u30EB\u6642\u9593
+Pacific/Galapagos.generic.long=\u30AC\u30E9\u30D1\u30B4\u30B9\u6642\u9593
+Pacific/Gambier.generic.long=\u30AC\u30F3\u30D3\u30A8\u6642\u9593
+Pacific/Guadalcanal.generic.long=\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593
+Pacific/Guam.generic.long=\u30C1\u30E3\u30E2\u30ED\u6642\u9593
+Pacific/Honolulu.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+Pacific/Johnston.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+Pacific/Kiritimati.generic.long=\u30E9\u30A4\u30F3\u8AF8\u5CF6\u6642\u9593
+Pacific/Kosrae.generic.long=\u30B3\u30B9\u30E9\u30A8\u6642\u9593
+Pacific/Kwajalein.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593
+Pacific/Majuro.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593
+Pacific/Marquesas.generic.long=\u30DE\u30EB\u30AD\u30FC\u30BA\u6642\u9593
+Pacific/Midway.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Nauru.generic.long=\u30CA\u30A6\u30EB\u6642\u9593
+Pacific/Niue.generic.long=\u30CB\u30A6\u30A8\u6642\u9593
+Pacific/Norfolk.generic.long=\u30CE\u30FC\u30D5\u30A9\u30FC\u30AF\u6642\u9593
+Pacific/Noumea.generic.long=\u30CB\u30E5\u30FC\u30AB\u30EC\u30C9\u30CB\u30A2\u6642\u9593
+Pacific/Pago_Pago.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Palau.generic.long=\u30D1\u30E9\u30AA\u6642\u9593
+Pacific/Pitcairn.generic.long=\u30D4\u30C8\u30B1\u30A2\u30F3\u6642\u9593
+Pacific/Pohnpei.daylight.long=\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593
+Pacific/Pohnpei.generic.long=\u30DD\u30CA\u30DA\u6642\u9593
+Pacific/Pohnpei.standard.long=\u30DD\u30F3\u30DA\u30A4\u6642\u9593
+Pacific/Ponape.daylight.long=\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593
+Pacific/Ponape.generic.long=\u30DD\u30CA\u30DA\u6642\u9593
+Pacific/Ponape.standard.long=\u30DD\u30F3\u30DA\u30A4\u6642\u9593
+Pacific/Port_Moresby.generic.long=\u30D1\u30D7\u30A2\u30CB\u30E5\u30FC\u30AE\u30CB\u30A2\u6642\u9593
+Pacific/Rarotonga.generic.long=\u30AF\u30C3\u30AF\u8AF8\u5CF6\u6642\u9593
+Pacific/Saipan.generic.long=\u30C1\u30E3\u30E2\u30ED\u6642\u9593
+Pacific/Samoa.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Tahiti.generic.long=\u30BF\u30D2\u30C1\u6642\u9593
+Pacific/Tarawa.generic.long=\u30AE\u30EB\u30D0\u30FC\u30C8\u8AF8\u5CF6\u6642\u9593
+Pacific/Tongatapu.generic.long=\u30C8\u30F3\u30AC\u6642\u9593
+Pacific/Truk.daylight.long=Chuuk Time
+Pacific/Truk.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Truk.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Wake.generic.long=\u30A6\u30A7\u30FC\u30AF\u6642\u9593
+Pacific/Wallis.generic.long=\u30A6\u30A9\u30EA\u30B9\u30FB\u30D5\u30C4\u30CA\u6642\u9593
+Pacific/Yap.daylight.long=Chuuk Time
+Pacific/Yap.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Yap.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Poland.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Portugal.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+ROK.generic.long=\u97D3\u56FD\u6642\u9593
+SST.generic.long=\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593
+Singapore.generic.long=\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593
+SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+SystemV/CST6.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+SystemV/CST6CDT.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+SystemV/EST5.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+SystemV/EST5EDT.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+SystemV/HST10.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+SystemV/MST7.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+SystemV/MST7MDT.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+SystemV/YST9.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+SystemV/YST9YDT.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+Turkey.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+UCT.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+US/Alaska.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+US/Aleutian.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593
+US/Arizona.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+US/Central.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+US/East-Indiana.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+US/Eastern.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+US/Hawaii.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+US/Indiana-Starke.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+US/Michigan.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+US/Mountain.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+US/Pacific.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+US/Samoa.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+UTC.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Universal.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+VST.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+W-SU.generic.long=\u30E2\u30B9\u30AF\u30EF\u6642\u9593
+WET.generic.long=\u897f\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+Zulu.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)
+ACT.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+ACT.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+AET.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+AET.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+AET.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+AGT.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+ART.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+AST.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+Africa/Abidjan.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Accra.generic.long=\uAC00\uB098 \uD45C\uC900\uC2DC
+Africa/Addis_Ababa.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Algiers.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Asmara.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Asmera.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Bamako.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Bangui.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Banjul.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Bissau.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Blantyre.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Brazzaville.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Bujumbura.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Cairo.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Casablanca.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Ceuta.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Conakry.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Dakar.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Dar_es_Salaam.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Djibouti.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Douala.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/El_Aaiun.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Freetown.generic.long=\uC2DC\uC5D0\uB77C\uB9AC\uC628 \uD45C\uC900\uC2DC
+Africa/Gaborone.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Harare.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Johannesburg.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Juba.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Kampala.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Khartoum.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Kigali.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Kinshasa.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lagos.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Libreville.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lome.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Luanda.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lubumbashi.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lusaka.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Malabo.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Maputo.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Maseru.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Mbabane.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Mogadishu.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Monrovia.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Nairobi.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Ndjamena.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Niamey.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Nouakchott.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Ouagadougou.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Porto-Novo.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Sao_Tome.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Timbuktu.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Tripoli.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+Africa/Tunis.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Windhoek.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+America/Adak.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC
+America/Anchorage.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Anguilla.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Antigua.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Araguaina.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Argentina/Buenos_Aires.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Catamarca.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/ComodRivadavia.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Cordoba.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Jujuy.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/La_Rioja.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Mendoza.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Rio_Gallegos.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Salta.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/San_Juan.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/San_Luis.generic.long=\uc544\ub974\ud5e8\ud2f0\ub098 \ud45c\uc900\uc2dc
+America/Argentina/Tucuman.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Ushuaia.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Aruba.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Asuncion.generic.long=\uD30C\uB77C\uACFC\uC774 \uD45C\uC900\uC2DC
+America/Atikokan.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Atka.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC
+America/Bahia.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Bahia_Banderas.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Barbados.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Belem.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Belize.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Blanc-Sablon.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Boa_Vista.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Bogota.generic.long=\uCF5C\uB86C\uBE44\uC544 \uD45C\uC900\uC2DC
+America/Boise.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Buenos_Aires.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Cambridge_Bay.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Campo_Grande.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Cancun.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Caracas.generic.long=\uBCA0\uB124\uC218\uC5D8\uB77C \uD45C\uC900\uC2DC
+America/Catamarca.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Cayenne.generic.long=\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098 \uD45C\uC900\uC2DC
+America/Cayman.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Chicago.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Chihuahua.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Coral_Harbour.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Cordoba.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Costa_Rica.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Creston.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Cuiaba.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Curacao.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Danmarkshavn.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+America/Dawson.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Dawson_Creek.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Denver.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Detroit.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Dominica.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Edmonton.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Eirunepe.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+America/El_Salvador.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Ensenada.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Fort_Wayne.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Fortaleza.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Glace_Bay.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Godthab.generic.long=\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC
+America/Goose_Bay.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Grand_Turk.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Grenada.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Guadeloupe.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Guatemala.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Guayaquil.generic.long=\uC5D0\uCF70\uB3C4\uB974 \uD45C\uC900\uC2DC
+America/Guyana.generic.long=\uAC00\uC774\uC544\uB098 \uD45C\uC900\uC2DC
+America/Halifax.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Havana.generic.long=\uCFE0\uBC14 \uD45C\uC900\uC2DC
+America/Hermosillo.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Indiana/Indianapolis.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Knox.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Marengo.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Petersburg.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Tell_City.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Vevay.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Vincennes.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Winamac.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indianapolis.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Inuvik.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Iqaluit.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Jamaica.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Jujuy.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Juneau.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Kentucky/Louisville.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Kentucky/Monticello.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Knox_IN.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Kralendijk.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/La_Paz.generic.long=\uBCFC\uB9AC\uBE44\uC544 \uD45C\uC900\uC2DC
+America/Lima.generic.long=\uD398\uB8E8 \uD45C\uC900\uC2DC
+America/Los_Angeles.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Louisville.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Lower_Princes.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Maceio.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Managua.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Manaus.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Marigot.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Martinique.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Matamoros.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Mazatlan.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Mendoza.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Menominee.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Merida.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Metlakatla.daylight.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+America/Metlakatla.generic.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC
+America/Metlakatla.standard.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC
+America/Mexico_City.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Miquelon.generic.long=\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871 \uD45C\uC900\uC2DC
+America/Moncton.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Monterrey.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Montevideo.generic.long=\uC6B0\uB8E8\uACFC\uC774 \uD45C\uC900\uC2DC
+America/Montreal.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Montserrat.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Nassau.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/New_York.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Nipigon.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Nome.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Noronha.generic.long=\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC
+America/North_Dakota/Beulah.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/North_Dakota/Center.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/North_Dakota/New_Salem.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Ojinaga.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Panama.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Pangnirtung.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Paramaribo.generic.long=\uC218\uB9AC\uB0A8 \uD45C\uC900\uC2DC
+America/Phoenix.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Port-au-Prince.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Port_of_Spain.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Porto_Acre.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+America/Porto_Velho.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Puerto_Rico.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Rainy_River.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Rankin_Inlet.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Recife.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Regina.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Resolute.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Rio_Branco.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+America/Rosario.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Santa_Isabel.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Santarem.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Santiago.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC
+America/Santo_Domingo.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Sao_Paulo.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Scoresbysund.generic.long=\uB3D9\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC
+America/Shiprock.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Sitka.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/St_Barthelemy.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Johns.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC
+America/St_Kitts.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Lucia.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Thomas.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Vincent.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Swift_Current.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Tegucigalpa.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Thule.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Thunder_Bay.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Tijuana.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Toronto.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Tortola.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Vancouver.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Virgin.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Whitehorse.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Winnipeg.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Yakutat.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Yellowknife.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+Antarctica/Casey.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Antarctica/Casey.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Antarctica/Casey.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Antarctica/Davis.generic.long=\uB370\uC774\uBE44\uC2A4 \uD45C\uC900\uC2DC
+Antarctica/DumontDUrville.generic.long=\uB450\uBAAC\uD2B8\uC6B0\uB974\uBE4C \uD45C\uC900\uC2DC
+Antarctica/Macquarie.daylight.long=\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Antarctica/Macquarie.generic.long=\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC
+Antarctica/Macquarie.standard.long=\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC
+Antarctica/Mawson.generic.long=\uB9C8\uC2A8 \uD45C\uC900\uC2DC
+Antarctica/McMurdo.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Antarctica/Palmer.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC
+Antarctica/Rothera.generic.long=\uB85C\uB354\uB77C \uD45C\uC900\uC2DC
+Antarctica/South_Pole.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Antarctica/Syowa.generic.long=\uC1FC\uC640 \uD45C\uC900\uC2DC
+Antarctica/Vostok.generic.long=\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC
+Arctic/Longyearbyen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Aden.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Almaty.generic.long=\uC54C\uB9C8\uC544\uD0C0 \uD45C\uC900\uC2DC
+Asia/Amman.generic.long=\uc544\ub77c\ube44\uc544 \ud45c\uc900\uc2dc
+Asia/Anadyr.generic.long=\uC544\uB098\uB514\uB9AC \uD45C\uC900\uC2DC
+Asia/Aqtau.generic.long=\uC544\uD06C\uD0C0\uC6B0 \uD45C\uC900\uC2DC
+Asia/Aqtobe.generic.long=\uC544\uD06C\uD1A0\uBCA0 \uD45C\uC900\uC2DC
+Asia/Ashgabat.generic.long=\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Ashkhabad.generic.long=\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Baghdad.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Bahrain.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Baku.generic.long=\uC544\uC81C\uB974\uBC14\uC774\uC794 \uD45C\uC900\uC2DC
+Asia/Bangkok.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Beirut.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Bishkek.generic.long=\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Brunei.generic.long=\uBE0C\uB8E8\uB098\uC774 \uD45C\uC900\uC2DC
+Asia/Calcutta.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Asia/Choibalsan.generic.long=\uCD08\uC774\uBC1C\uC0B0 \uD45C\uC900\uC2DC
+Asia/Chongqing.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Chungking.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Colombo.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Asia/Dacca.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC
+Asia/Damascus.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Dhaka.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC
+Asia/Dili.generic.long=\uB3D9\uD2F0\uBAA8\uB974 \uD45C\uC900\uC2DC
+Asia/Dubai.generic.long=\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC
+Asia/Dushanbe.generic.long=\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Gaza.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Harbin.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Hebron.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Ho_Chi_Minh.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Hong_Kong.generic.long=\uD64D\uCF69 \uD45C\uC900\uC2DC
+Asia/Hovd.generic.long=\uD638\uBE0C\uB4DC \uD45C\uC900\uC2DC
+Asia/Irkutsk.generic.long=\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC
+Asia/Istanbul.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Jakarta.generic.long=\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Jayapura.generic.long=\uB3D9\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Jerusalem.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC
+Asia/Kabul.generic.long=\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Kamchatka.generic.long=\uD398\uD2B8\uB85C\uD30C\uBE0C\uB85C\uD504\uC2A4\uD06C-\uCE84\uCC28\uCE20\uD0A4 \uD45C\uC900\uC2DC
+Asia/Karachi.generic.long=\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Kashgar.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Kathmandu.generic.long=\uB124\uD314 \uD45C\uC900\uC2DC
+Asia/Katmandu.generic.long=\uB124\uD314 \uD45C\uC900\uC2DC
+Asia/Khandyga.daylight.long=\uD55C\uB514\uAC00 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Asia/Khandyga.generic.long=\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC
+Asia/Khandyga.standard.long=\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC
+Asia/Kolkata.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Asia/Krasnoyarsk.generic.long=\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Kuala_Lumpur.generic.long=\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Kuching.generic.long=\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Kuwait.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Macao.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Macau.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Magadan.generic.long=\uB9C8\uAC00\uB2E8 \uD45C\uC900\uC2DC
+Asia/Makassar.generic.long=\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Manila.generic.long=\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC
+Asia/Muscat.generic.long=\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC
+Asia/Nicosia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Novokuznetsk.generic.long=\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Novosibirsk.generic.long=\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Omsk.generic.long=\uC634\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Oral.generic.long=\uC624\uB7F4 \uD45C\uC900\uC2DC
+Asia/Phnom_Penh.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Pontianak.generic.long=\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Pyongyang.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC
+Asia/Qatar.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Qyzylorda.generic.long=\uD0A4\uC9C8\uB85C\uB974\uB2E4 \uD45C\uC900\uC2DC
+Asia/Rangoon.generic.long=\uBBF8\uC580\uB9C8 \uD45C\uC900\uC2DC
+Asia/Saigon.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Sakhalin.generic.long=\uC0AC\uD560\uB9B0 \uD45C\uC900\uC2DC
+Asia/Samarkand.generic.long=\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Seoul.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC
+Asia/Shanghai.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Singapore.generic.long=\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC
+Asia/Taipei.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Tashkent.generic.long=\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Tbilisi.generic.long=\uADF8\uB8E8\uC9C0\uC57C \uD45C\uC900\uC2DC
+Asia/Tehran.generic.long=\uC774\uB780 \uD45C\uC900\uC2DC
+Asia/Tel_Aviv.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC
+Asia/Thimbu.generic.long=\uBD80\uD0C4 \uD45C\uC900\uC2DC
+Asia/Thimphu.generic.long=\uBD80\uD0C4 \uD45C\uC900\uC2DC
+Asia/Tokyo.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC
+Asia/Ujung_Pandang.generic.long=\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Ulaanbaatar.generic.long=\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC
+Asia/Ulan_Bator.generic.long=\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC
+Asia/Urumqi.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Ust-Nera.daylight.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Asia/Ust-Nera.generic.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC
+Asia/Ust-Nera.standard.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC
+Asia/Vientiane.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Vladivostok.generic.long=\uBE14\uB77C\uB514\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC
+Asia/Yakutsk.generic.long=\uC57C\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC
+Asia/Yekaterinburg.generic.long=\uC608\uCE74\uD14C\uB9B0\uBD80\uB974\uD06C \uD45C\uC900\uC2DC
+Asia/Yerevan.generic.long=\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC
+Atlantic/Azores.generic.long=\uC544\uC870\uB808\uC2A4 \uD45C\uC900\uC2DC
+Atlantic/Bermuda.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+Atlantic/Canary.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Cape_Verde.generic.long=\uCF00\uC774\uD504\uBCA0\uB974\uB370 \uD45C\uC900\uC2DC
+Atlantic/Faeroe.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Faroe.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Jan_Mayen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Madeira.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Reykjavik.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Atlantic/South_Georgia.generic.long=\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uD45C\uC900\uC2DC
+Atlantic/St_Helena.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Atlantic/Stanley.generic.long=\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Australia/ACT.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/ACT.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/ACT.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Adelaide.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Adelaide.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Adelaide.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Brisbane.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)
+Australia/Brisbane.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Brisbane.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Broken_Hill.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Broken_Hill.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Broken_Hill.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Canberra.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Canberra.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Canberra.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Currie.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Currie.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Currie.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Darwin.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Darwin.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Darwin.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Eucla.daylight.long=\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Eucla.generic.long=\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Eucla.standard.long=\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Hobart.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Hobart.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Hobart.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/LHI.generic.long=\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC
+Australia/Lindeman.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)
+Australia/Lindeman.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Lindeman.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Lord_Howe.generic.long=\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC
+Australia/Melbourne.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Melbourne.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Melbourne.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/NSW.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/NSW.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/NSW.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/North.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/North.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/North.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Perth.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Perth.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Perth.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Queensland.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)
+Australia/Queensland.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Queensland.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/South.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/South.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/South.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Sydney.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Sydney.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Sydney.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Tasmania.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Tasmania.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Tasmania.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Victoria.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Victoria.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Victoria.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/West.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/West.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/West.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Yancowinna.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Yancowinna.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Yancowinna.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+BET.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+BST.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC
+Brazil/Acre.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+Brazil/DeNoronha.generic.long=\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC
+Brazil/East.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+Brazil/West.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+CAT.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+CET.generic.long=\uc911\uc559 \uc720\ub7fd \ud45c\uc900\uc2dc
+CNT.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC
+CST.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+CST6CDT.generic.long=\uc911\ubd80 \ud45c\uc900\uc2dc
+CTT.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Canada/Atlantic.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+Canada/Central.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+Canada/East-Saskatchewan.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+Canada/Eastern.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+Canada/Mountain.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+Canada/Newfoundland.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC
+Canada/Pacific.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+Canada/Saskatchewan.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+Canada/Yukon.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+Chile/Continental.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC
+Chile/EasterIsland.generic.long=\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC
+Cuba.generic.long=\uCFE0\uBC14 \uD45C\uC900\uC2DC
+EAT.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+ECT.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+EET.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+EST.generic.long=\ub3d9\ubd80 \ud45c\uc900\uc2dc
+EST5EDT.generic.long=\ub3d9\ubd80 \ud45c\uc900\uc2dc
+Egypt.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Eire.generic.long=\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC
+Etc/Greenwich.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Etc/UCT.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Etc/UTC.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Etc/Universal.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Etc/Zulu.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Europe/Amsterdam.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Andorra.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Athens.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Belfast.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Belgrade.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Berlin.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Bratislava.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Brussels.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Bucharest.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Budapest.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Busingen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Chisinau.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Copenhagen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Dublin.generic.long=\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC
+Europe/Gibraltar.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Guernsey.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Helsinki.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Isle_of_Man.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Istanbul.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Jersey.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Kaliningrad.daylight.long=\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Europe/Kaliningrad.generic.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Kaliningrad.standard.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Kiev.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Lisbon.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Ljubljana.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/London.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Luxembourg.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Madrid.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Malta.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Mariehamn.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Minsk.daylight.long=\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Europe/Minsk.generic.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Minsk.standard.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Monaco.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Moscow.generic.long=\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC
+Europe/Nicosia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Oslo.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Paris.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Podgorica.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Prague.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Riga.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Rome.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Samara.generic.long=\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC
+Europe/San_Marino.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Sarajevo.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Simferopol.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Skopje.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Sofia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Stockholm.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Tallinn.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Tirane.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Tiraspol.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Uzhgorod.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vaduz.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vatican.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vienna.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vilnius.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Volgograd.generic.long=\uBCFC\uACE0\uADF8\uB77C\uB4DC \uD45C\uC900\uC2DC
+Europe/Warsaw.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Zagreb.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Zaporozhye.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Zurich.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+GB-Eire.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+GB.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+GMT.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Greenwich.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+HST.generic.long=\ud558\uc640\uc774 \ud45c\uc900\uc2dc
+Hongkong.generic.long=\uD64D\uCF69 \uD45C\uC900\uC2DC
+IET.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+IST.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Iceland.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Indian/Antananarivo.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Indian/Chagos.generic.long=\uC778\uB3C4\uC591 \uC2DD\uBBFC\uC9C0 \uD45C\uC900\uC2DC
+Indian/Christmas.generic.long=\uD06C\uB9AC\uC2A4\uB9C8\uC2A4 \uC12C \uD45C\uC900\uC2DC
+Indian/Cocos.generic.long=\uCF54\uCF54\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Indian/Comoro.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Indian/Kerguelen.generic.long=\uD504\uB791\uC2A4\uB839 \uB0A8\uBD80 \uBC0F \uB0A8\uADF9 \uB300\uB959 \uD45C\uC900\uC2DC
+Indian/Mahe.generic.long=\uC138\uC774\uC178 \uD45C\uC900\uC2DC
+Indian/Maldives.generic.long=\uBAB0\uB514\uBE0C \uD45C\uC900\uC2DC
+Indian/Mauritius.generic.long=\uBAA8\uB9AC\uC154\uC2A4 \uD45C\uC900\uC2DC
+Indian/Mayotte.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Indian/Reunion.generic.long=\uB808\uC704\uB2C8\uC639 \uD45C\uC900\uC2DC
+Iran.generic.long=\uC774\uB780 \uD45C\uC900\uC2DC
+Israel.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC
+JST.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC
+Jamaica.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+Japan.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC
+Kwajalein.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Libya.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+MET.generic.long=MET
+MIT.generic.long=\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+MST.generic.long=\uc0b0\uc9c0 \ud45c\uc900\uc2dc
+MST7MDT.generic.long=\uc0b0\uc9c0 \ud45c\uc900\uc2dc
+Mexico/BajaNorte.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+Mexico/BajaSur.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+Mexico/General.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+NET.generic.long=\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC
+NST.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+NZ-CHAT.generic.long=\uCC44\uD140 \uD45C\uC900\uC2DC
+NZ.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Navajo.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+PLT.generic.long=\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+PNT.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+PRC.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+PRT.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+PST.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+PST8PDT.generic.long=\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc
+Pacific/Apia.generic.long=\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Auckland.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Pacific/Chatham.generic.long=\uCC44\uD140 \uD45C\uC900\uC2DC
+Pacific/Chuuk.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Chuuk.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Chuuk.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Easter.generic.long=\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC
+Pacific/Efate.generic.long=\uBC14\uB204\uC544\uD22C \uD45C\uC900\uC2DC
+Pacific/Enderbury.generic.long=\uD53C\uB2C9\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Fakaofo.generic.long=\uD1A0\uCF08\uB77C\uC6B0 \uD45C\uC900\uC2DC
+Pacific/Fiji.generic.long=\uD53C\uC9C0 \uD45C\uC900\uC2DC
+Pacific/Funafuti.generic.long=\uD22C\uBC1C\uB8E8 \uD45C\uC900\uC2DC
+Pacific/Galapagos.generic.long=\uAC08\uB77C\uD30C\uACE0\uC2A4 \uD45C\uC900\uC2DC
+Pacific/Gambier.generic.long=\uC7A0\uBE44\uC544 \uD45C\uC900\uC2DC
+Pacific/Guadalcanal.generic.long=\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Guam.generic.long=\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC
+Pacific/Honolulu.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+Pacific/Johnston.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+Pacific/Kiritimati.generic.long=\uB77C\uC778 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Kosrae.generic.long=\uCF54\uC2A4\uB808 \uD45C\uC900\uC2DC
+Pacific/Kwajalein.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Majuro.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Marquesas.generic.long=\uB9C8\uD0A4\uC800\uC2A4 \uD45C\uC900\uC2DC
+Pacific/Midway.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Nauru.generic.long=\uB098\uC6B0\uB8E8 \uD45C\uC900\uC2DC
+Pacific/Niue.generic.long=\uB2C8\uC6B0\uC5D0 \uD45C\uC900\uC2DC
+Pacific/Norfolk.generic.long=\uB178\uD37D \uD45C\uC900\uC2DC
+Pacific/Noumea.generic.long=\uB274 \uCE7C\uB808\uB3C4\uB2C8\uC544 \uD45C\uC900\uC2DC
+Pacific/Pago_Pago.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Palau.generic.long=\uD314\uB77C\uC6B0 \uD45C\uC900\uC2DC
+Pacific/Pitcairn.generic.long=\uD54F\uCF00\uC5B8 \uD45C\uC900\uC2DC
+Pacific/Pohnpei.daylight.long=\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Pohnpei.generic.long=\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC
+Pacific/Pohnpei.standard.long=\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC
+Pacific/Ponape.daylight.long=\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Ponape.generic.long=\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC
+Pacific/Ponape.standard.long=\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC
+Pacific/Port_Moresby.generic.long=\uD30C\uD478\uC544 \uB274\uAE30\uB2C8\uC544 \uD45C\uC900\uC2DC
+Pacific/Rarotonga.generic.long=\uCFE1 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Saipan.generic.long=\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC
+Pacific/Samoa.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Tahiti.generic.long=\uD0C0\uD788\uD2F0 \uD45C\uC900\uC2DC
+Pacific/Tarawa.generic.long=\uAE38\uBC84\uD2B8 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Tongatapu.generic.long=\uD1B5\uAC00 \uD45C\uC900\uC2DC
+Pacific/Truk.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Truk.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Truk.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Wake.generic.long=\uC6E8\uC774\uD06C \uD45C\uC900\uC2DC
+Pacific/Wallis.generic.long=\uC6D4\uB9AC\uC2A4 \uD478\uD22C\uB098 \uD45C\uC900\uC2DC
+Pacific/Yap.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Yap.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Yap.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Poland.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Portugal.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+ROK.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC
+SST.generic.long=\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Singapore.generic.long=\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC
+SystemV/AST4.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+SystemV/AST4ADT.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+SystemV/CST6.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+SystemV/CST6CDT.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+SystemV/EST5.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+SystemV/EST5EDT.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+SystemV/HST10.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+SystemV/MST7.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+SystemV/MST7MDT.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+SystemV/PST8.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+SystemV/PST8PDT.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+SystemV/YST9.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+SystemV/YST9YDT.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+Turkey.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+UCT.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+US/Alaska.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+US/Aleutian.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC
+US/Arizona.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+US/Central.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+US/East-Indiana.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+US/Eastern.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+US/Hawaii.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+US/Indiana-Starke.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+US/Michigan.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+US/Mountain.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+US/Pacific-New.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+US/Pacific.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+US/Samoa.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+UTC.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Universal.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+VST.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+W-SU.generic.long=\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC
+WET.generic.long=\uc11c\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+Zulu.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)
+ACT.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte)
+ACT.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)
+AET.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+AET.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+AET.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+AGT.generic.long=Hor\u00E1rio da Argentina
+ART.generic.long=Hor\u00E1rio da Europa Oriental
+AST.generic.long=Hor\u00E1rio do Alasca
+Africa/Abidjan.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Accra.generic.long=Fuso Hor\u00E1rio do Meridiano de Gana
+Africa/Addis_Ababa.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Algiers.generic.long=Hor\u00E1rio da Europa Central
+Africa/Asmara.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Asmera.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Bamako.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Bangui.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Banjul.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Bissau.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Blantyre.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Brazzaville.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Bujumbura.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Cairo.generic.long=Hor\u00E1rio da Europa Oriental
+Africa/Casablanca.generic.long=Hor\u00E1rio da Europa Ocidental
+Africa/Ceuta.generic.long=Hor\u00E1rio da Europa Central
+Africa/Conakry.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Dakar.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Dar_es_Salaam.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Djibouti.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Douala.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/El_Aaiun.generic.long=Hor\u00E1rio da Europa Ocidental
+Africa/Freetown.generic.long=Hor\u00E1rio de Serra Leoa
+Africa/Gaborone.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Harare.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Johannesburg.generic.long=Hor\u00E1rio da \u00C1frica do Sul
+Africa/Juba.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Kampala.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Khartoum.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Kigali.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Kinshasa.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Lagos.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Libreville.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Lome.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Luanda.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Lubumbashi.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Lusaka.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Malabo.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Maputo.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Maseru.generic.long=Hor\u00E1rio da \u00C1frica do Sul
+Africa/Mbabane.generic.long=Hor\u00E1rio da \u00C1frica do Sul
+Africa/Mogadishu.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Monrovia.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Nairobi.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Ndjamena.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Niamey.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Nouakchott.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Ouagadougou.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Porto-Novo.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Sao_Tome.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Timbuktu.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Tripoli.generic.long=Hor\u00e1rio da Europa Oriental
+Africa/Tunis.generic.long=Hor\u00E1rio da Europa Central
+Africa/Windhoek.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+America/Adak.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas
+America/Anchorage.generic.long=Hor\u00E1rio do Alasca
+America/Anguilla.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Antigua.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Araguaina.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Argentina/Buenos_Aires.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Catamarca.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/ComodRivadavia.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Cordoba.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Jujuy.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/La_Rioja.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Mendoza.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Rio_Gallegos.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Salta.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/San_Juan.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/San_Luis.generic.long=Hor\u00e1rio da Argentina
+America/Argentina/Tucuman.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Ushuaia.generic.long=Hor\u00E1rio da Argentina
+America/Aruba.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Asuncion.generic.long=Hor\u00E1rio do Paraguai
+America/Atikokan.generic.long=Hor\u00E1rio do Leste
+America/Atka.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas
+America/Bahia.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Bahia_Banderas.generic.long=Hor\u00E1rio Central
+America/Barbados.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Belem.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Belize.generic.long=Hor\u00E1rio Central
+America/Blanc-Sablon.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Boa_Vista.generic.long=Hor\u00E1rio do Amazonas
+America/Bogota.generic.long=Hor\u00E1rio da Col\u00F4mbia
+America/Boise.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Buenos_Aires.generic.long=Hor\u00E1rio da Argentina
+America/Cambridge_Bay.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Campo_Grande.generic.long=Hor\u00E1rio do Amazonas
+America/Cancun.generic.long=Hor\u00E1rio Central
+America/Caracas.generic.long=Hor\u00E1rio da Venezuela
+America/Catamarca.generic.long=Hor\u00E1rio da Argentina
+America/Cayenne.generic.long=Hor\u00E1rio da Guiana Francesa
+America/Cayman.generic.long=Hor\u00E1rio do Leste
+America/Chicago.generic.long=Hor\u00E1rio Central
+America/Chihuahua.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Coral_Harbour.generic.long=Hor\u00E1rio do Leste
+America/Cordoba.generic.long=Hor\u00E1rio da Argentina
+America/Costa_Rica.generic.long=Hor\u00E1rio Central
+America/Creston.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Cuiaba.generic.long=Hor\u00E1rio do Amazonas
+America/Curacao.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Danmarkshavn.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+America/Dawson.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Dawson_Creek.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Denver.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Detroit.generic.long=Hor\u00E1rio do Leste
+America/Dominica.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Edmonton.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Eirunepe.generic.long=Fuso hor\u00e1rio do Acre
+America/El_Salvador.generic.long=Hor\u00E1rio Central
+America/Ensenada.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Fort_Wayne.generic.long=Hor\u00E1rio do Leste
+America/Fortaleza.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Glace_Bay.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Godthab.generic.long=Hor\u00E1rio da Groenl\u00E2ndia Ocidental
+America/Goose_Bay.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Grand_Turk.generic.long=Hor\u00E1rio do Leste
+America/Grenada.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Guadeloupe.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Guatemala.generic.long=Hor\u00E1rio Central
+America/Guayaquil.generic.long=Hor\u00E1rio do Equador
+America/Guyana.generic.long=Hor\u00E1rios da Guiana
+America/Halifax.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Havana.generic.long=Hor\u00E1rio de Cuba
+America/Hermosillo.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Indiana/Indianapolis.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Knox.generic.long=Hor\u00E1rio Central
+America/Indiana/Marengo.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Petersburg.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Tell_City.generic.long=Hor\u00E1rio Central
+America/Indiana/Vevay.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Vincennes.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Winamac.generic.long=Hor\u00E1rio do Leste
+America/Indianapolis.generic.long=Hor\u00E1rio do Leste
+America/Inuvik.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Iqaluit.generic.long=Hor\u00E1rio do Leste
+America/Jamaica.generic.long=Hor\u00E1rio do Leste
+America/Jujuy.generic.long=Hor\u00E1rio da Argentina
+America/Juneau.generic.long=Hor\u00E1rio do Alasca
+America/Kentucky/Louisville.generic.long=Hor\u00E1rio do Leste
+America/Kentucky/Monticello.generic.long=Hor\u00E1rio do Leste
+America/Knox_IN.generic.long=Hor\u00E1rio Central
+America/Kralendijk.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/La_Paz.generic.long=Hor\u00E1rio da Bol\u00EDvia
+America/Lima.generic.long=Hor\u00E1rio do Peru
+America/Los_Angeles.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Louisville.generic.long=Hor\u00E1rio do Leste
+America/Lower_Princes.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Maceio.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Managua.generic.long=Hor\u00E1rio Central
+America/Manaus.generic.long=Hor\u00E1rio do Amazonas
+America/Marigot.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Martinique.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Matamoros.generic.long=Hor\u00E1rio Central
+America/Mazatlan.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Mendoza.generic.long=Hor\u00E1rio da Argentina
+America/Menominee.generic.long=Hor\u00E1rio Central
+America/Merida.generic.long=Hor\u00E1rio Central
+America/Metlakatla.daylight.long=Hor\u00E1rio de Luz Natural de Metlakatla
+America/Metlakatla.generic.long=Hor\u00E1rio de Metlakatla
+America/Metlakatla.standard.long=Hor\u00E1rio Padr\u00E3o de Metlakatla
+America/Mexico_City.generic.long=Hor\u00E1rio Central
+America/Miquelon.generic.long=Hor\u00E1rio de Saint Pierre e Miquelon
+America/Moncton.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Monterrey.generic.long=Hor\u00E1rio Central
+America/Montevideo.generic.long=Hor\u00E1rio do Uruguai
+America/Montreal.generic.long=Hor\u00E1rio do Leste
+America/Montserrat.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Nassau.generic.long=Hor\u00E1rio do Leste
+America/New_York.generic.long=Hor\u00E1rio do Leste
+America/Nipigon.generic.long=Hor\u00E1rio do Leste
+America/Nome.generic.long=Hor\u00E1rio do Alasca
+America/Noronha.generic.long=Hor\u00E1rio de Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Hor\u00E1rio Central
+America/North_Dakota/Center.generic.long=Hor\u00E1rio Central
+America/North_Dakota/New_Salem.generic.long=Hor\u00E1rio Central
+America/Ojinaga.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Panama.generic.long=Hor\u00E1rio do Leste
+America/Pangnirtung.generic.long=Hor\u00E1rio do Leste
+America/Paramaribo.generic.long=Hor\u00E1rio do Suriname
+America/Phoenix.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Port-au-Prince.generic.long=Hor\u00E1rio do Leste
+America/Port_of_Spain.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Porto_Acre.generic.long=Fuso hor\u00e1rio do Acre
+America/Porto_Velho.generic.long=Hor\u00E1rio do Amazonas
+America/Puerto_Rico.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Rainy_River.generic.long=Hor\u00E1rio Central
+America/Rankin_Inlet.generic.long=Hor\u00E1rio Central
+America/Recife.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Regina.generic.long=Hor\u00E1rio Central
+America/Resolute.generic.long=Hor\u00E1rio Central
+America/Rio_Branco.generic.long=Fuso hor\u00e1rio do Acre
+America/Rosario.generic.long=Hor\u00E1rio da Argentina
+America/Santa_Isabel.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Santarem.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Santiago.generic.long=Hor\u00E1rio do Chile
+America/Santo_Domingo.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Sao_Paulo.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Scoresbysund.generic.long=Hor\u00E1rio da Groenl\u00E2ndia Oriental
+America/Shiprock.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Sitka.generic.long=Hor\u00E1rio do Alasca
+America/St_Barthelemy.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Johns.generic.long=Hor\u00E1rio de Terra Nova
+America/St_Kitts.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Lucia.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Thomas.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Vincent.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Swift_Current.generic.long=Hor\u00E1rio Central
+America/Tegucigalpa.generic.long=Hor\u00E1rio Central
+America/Thule.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Thunder_Bay.generic.long=Hor\u00E1rio do Leste
+America/Tijuana.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Toronto.generic.long=Hor\u00E1rio do Leste
+America/Tortola.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Vancouver.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Virgin.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Whitehorse.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Winnipeg.generic.long=Hor\u00E1rio Central
+America/Yakutat.generic.long=Hor\u00E1rio do Alasca
+America/Yellowknife.generic.long=Hor\u00E1rio das Montanhas Rochosas
+Antarctica/Casey.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)
+Antarctica/Casey.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia)
+Antarctica/Casey.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)
+Antarctica/Davis.generic.long=Hor\u00E1rio de Davis
+Antarctica/DumontDUrville.generic.long=Fuso Hor\u00E1rio de Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie
+Antarctica/Macquarie.generic.long=Fuso Hor\u00E1rio da Ilha de Macquarie
+Antarctica/Macquarie.standard.long=Fuso Hor\u00E1rio da Ilha de Macquarie
+Antarctica/Mawson.generic.long=Hor\u00E1rio de Mawson
+Antarctica/McMurdo.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Antarctica/Palmer.generic.long=Hor\u00E1rio do Chile
+Antarctica/Rothera.generic.long=Hor\u00E1rio de Rothera
+Antarctica/South_Pole.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Antarctica/Syowa.generic.long=Hor\u00E1rio de Syowa
+Antarctica/Vostok.generic.long=Hor\u00E1rio de Vostok
+Arctic/Longyearbyen.generic.long=Hor\u00E1rio da Europa Central
+Asia/Aden.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Almaty.generic.long=Hor\u00E1rio de Alma-Ata
+Asia/Amman.generic.long=Hor\u00e1rio da Ar\u00e1bia
+Asia/Anadyr.generic.long=Hor\u00E1rio de Anadyr
+Asia/Aqtau.generic.long=Hor\u00E1rio de Aqtau
+Asia/Aqtobe.generic.long=Hor\u00E1rio de Aqtobe
+Asia/Ashgabat.generic.long=Hor\u00E1rio do Turcomenist\u00E3o
+Asia/Ashkhabad.generic.long=Hor\u00E1rio do Turcomenist\u00E3o
+Asia/Baghdad.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Bahrain.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Baku.generic.long=Hor\u00E1rio do Azerbaij\u00E3o
+Asia/Bangkok.generic.long=Hor\u00E1rio da Indochina
+Asia/Beirut.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Bishkek.generic.long=Hor\u00E1rio do Quirguist\u00E3o
+Asia/Brunei.generic.long=Hor\u00E1rio de Brunei
+Asia/Calcutta.generic.long=Hor\u00E1rio da \u00CDndia
+Asia/Choibalsan.generic.long=Hor\u00E1rio de Choibalsan
+Asia/Chongqing.generic.long=Hor\u00E1rio da China
+Asia/Chungking.generic.long=Hor\u00E1rio da China
+Asia/Colombo.generic.long=Hor\u00E1rio da \u00CDndia
+Asia/Dacca.generic.long=Hor\u00E1rio de Bangladesh
+Asia/Damascus.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Dhaka.generic.long=Hor\u00E1rio de Bangladesh
+Asia/Dili.generic.long=Hor\u00E1rio do Timor-Leste
+Asia/Dubai.generic.long=Hor\u00E1rio do Golfo
+Asia/Dushanbe.generic.long=Hor\u00E1rio do Tadjiquist\u00E3o
+Asia/Gaza.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Harbin.generic.long=Hor\u00E1rio da China
+Asia/Hebron.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Ho_Chi_Minh.generic.long=Hor\u00E1rio da Indochina
+Asia/Hong_Kong.generic.long=Hor\u00E1rio de Hong Kong
+Asia/Hovd.generic.long=Hor\u00E1rio de Hovd
+Asia/Irkutsk.generic.long=Hor\u00E1rio de Irkutsk
+Asia/Istanbul.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Jakarta.generic.long=Hor\u00E1rio da Indon\u00E9sia Ocidental
+Asia/Jayapura.generic.long=Hor\u00E1rio da Indon\u00E9sia Oriental
+Asia/Jerusalem.generic.long=Hor\u00E1rio de Israel
+Asia/Kabul.generic.long=Hor\u00E1rio do Afeganist\u00E3o
+Asia/Kamchatka.generic.long=Hor\u00E1rio de Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Hor\u00E1rio do Paquist\u00E3o
+Asia/Kashgar.generic.long=Hor\u00E1rio da China
+Asia/Kathmandu.generic.long=Hor\u00E1rio do Nepal
+Asia/Katmandu.generic.long=Hor\u00E1rio do Nepal
+Asia/Khandyga.daylight.long=Hor\u00E1rio de Ver\u00E3o de Khandyga
+Asia/Khandyga.generic.long=Hor\u00E1rio de Khandyga
+Asia/Khandyga.standard.long=Hor\u00E1rio de Khandyga
+Asia/Kolkata.generic.long=Hor\u00E1rio da \u00CDndia
+Asia/Krasnoyarsk.generic.long=Hor\u00E1rio de Krasnoyarsk
+Asia/Kuala_Lumpur.generic.long=Hor\u00E1rio da Mal\u00E1sia
+Asia/Kuching.generic.long=Hor\u00E1rio da Mal\u00E1sia
+Asia/Kuwait.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Macao.generic.long=Hor\u00E1rio da China
+Asia/Macau.generic.long=Hor\u00E1rio da China
+Asia/Magadan.generic.long=Hor\u00E1rio de Magadan
+Asia/Makassar.generic.long=Hor\u00E1rio da Indon\u00E9sia Central
+Asia/Manila.generic.long=Hor\u00E1rio das Filipinas
+Asia/Muscat.generic.long=Hor\u00E1rio do Golfo
+Asia/Nicosia.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Novokuznetsk.generic.long=Hor\u00E1rio de Novosibirsk
+Asia/Novosibirsk.generic.long=Hor\u00E1rio de Novosibirsk
+Asia/Omsk.generic.long=Hor\u00E1rio de Omsk
+Asia/Oral.generic.long=Hor\u00E1rio de Uralsk
+Asia/Phnom_Penh.generic.long=Hor\u00E1rio da Indochina
+Asia/Pontianak.generic.long=Hor\u00E1rio da Indon\u00E9sia Ocidental
+Asia/Pyongyang.generic.long=Hor\u00E1rio da Coreia
+Asia/Qatar.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Qyzylorda.generic.long=Hor\u00E1rio de Qyzylorda
+Asia/Rangoon.generic.long=Hor\u00E1rio de Mianmar
+Asia/Saigon.generic.long=Hor\u00E1rio da Indochina
+Asia/Sakhalin.generic.long=Hor\u00E1rio de Sakhalin
+Asia/Samarkand.generic.long=Hor\u00E1rio do Uzbequist\u00E3o
+Asia/Seoul.generic.long=Hor\u00E1rio da Coreia
+Asia/Shanghai.generic.long=Hor\u00E1rio da China
+Asia/Singapore.generic.long=Hor\u00E1rio de Cingapura
+Asia/Taipei.generic.long=Hor\u00E1rio da China
+Asia/Tashkent.generic.long=Hor\u00E1rio do Uzbequist\u00E3o
+Asia/Tbilisi.generic.long=Hor\u00E1rio da Ge\u00F3rgia
+Asia/Tehran.generic.long=Hor\u00E1rio do Ir\u00E3
+Asia/Tel_Aviv.generic.long=Hor\u00E1rio de Israel
+Asia/Thimbu.generic.long=Hor\u00E1rio do But\u00E3o
+Asia/Thimphu.generic.long=Hor\u00E1rio do But\u00E3o
+Asia/Tokyo.generic.long=Hor\u00E1rio do Jap\u00E3o
+Asia/Ujung_Pandang.generic.long=Hor\u00E1rio da Indon\u00E9sia Central
+Asia/Ulaanbaatar.generic.long=Hor\u00E1rio de Ulaanbaatar
+Asia/Ulan_Bator.generic.long=Hor\u00E1rio de Ulaanbaatar
+Asia/Urumqi.generic.long=Hor\u00E1rio da China
+Asia/Ust-Nera.daylight.long=Hor\u00E1rio de Ver\u00E3o de Ust-Nera
+Asia/Ust-Nera.generic.long=Hor\u00E1rio de Ust-Nera
+Asia/Ust-Nera.standard.long=Hor\u00E1rio de Ust-Nera
+Asia/Vientiane.generic.long=Hor\u00E1rio da Indochina
+Asia/Vladivostok.generic.long=Hor\u00E1rio de Vladivostok
+Asia/Yakutsk.generic.long=Hor\u00E1rio de Yakutsk
+Asia/Yekaterinburg.generic.long=Hor\u00E1rio de Yekaterinburg
+Asia/Yerevan.generic.long=Hor\u00E1rio da Arm\u00EAnia
+Atlantic/Azores.generic.long=Hor\u00E1rio de A\u00E7ores
+Atlantic/Bermuda.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+Atlantic/Canary.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Cape_Verde.generic.long=Hor\u00E1rio de Cabo Verde
+Atlantic/Faeroe.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Faroe.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Jan_Mayen.generic.long=Hor\u00E1rio da Europa Central
+Atlantic/Madeira.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Reykjavik.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Atlantic/South_Georgia.generic.long=Hor\u00E1rio da Ge\u00F3rgia do Sul
+Atlantic/St_Helena.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Atlantic/Stanley.generic.long=Hor\u00E1rio das Ilhas Malvinas
+Australia/ACT.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/ACT.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/ACT.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Adelaide.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/Adelaide.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul)
+Australia/Adelaide.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/Brisbane.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)
+Australia/Brisbane.generic.long=Hor\u00E1rio do Leste (Queensland)
+Australia/Brisbane.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)
+Australia/Broken_Hill.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Broken_Hill.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Broken_Hill.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Canberra.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/Canberra.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/Canberra.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Currie.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/Currie.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/Currie.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Darwin.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/Darwin.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte)
+Australia/Darwin.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/Eucla.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)
+Australia/Eucla.generic.long=Hor\u00E1rio Ocidental Central (Austr\u00E1lia)
+Australia/Eucla.standard.long=Fuso Hor\u00E1rio Ocidental Central (Austr\u00E1lia)
+Australia/Hobart.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)
+Australia/Hobart.generic.long=Hor\u00E1rio do Leste (Tasm\u00E2nia)
+Australia/Hobart.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)
+Australia/LHI.generic.long=Hor\u00E1rio de Lord Howe
+Australia/Lindeman.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)
+Australia/Lindeman.generic.long=Hor\u00E1rio do Leste (Queensland)
+Australia/Lindeman.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)
+Australia/Lord_Howe.generic.long=Hor\u00E1rio de Lord Howe
+Australia/Melbourne.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)
+Australia/Melbourne.generic.long=Hor\u00E1rio do Leste (Victoria)
+Australia/Melbourne.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)
+Australia/NSW.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/NSW.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/NSW.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/North.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/North.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte)
+Australia/North.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/Perth.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)
+Australia/Perth.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia)
+Australia/Perth.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)
+Australia/Queensland.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)
+Australia/Queensland.generic.long=Hor\u00E1rio do Leste (Queensland)
+Australia/Queensland.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)
+Australia/South.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/South.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul)
+Australia/South.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/Sydney.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/Sydney.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/Sydney.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Tasmania.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)
+Australia/Tasmania.generic.long=Hor\u00E1rio do Leste (Tasm\u00E2nia)
+Australia/Tasmania.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)
+Australia/Victoria.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)
+Australia/Victoria.generic.long=Hor\u00E1rio do Leste (Victoria)
+Australia/Victoria.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)
+Australia/West.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)
+Australia/West.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia)
+Australia/West.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)
+Australia/Yancowinna.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Yancowinna.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Yancowinna.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+BET.generic.long=Hor\u00E1rio de Bras\u00EDlia
+BST.generic.long=Hor\u00E1rio de Bangladesh
+Brazil/Acre.generic.long=Fuso hor\u00e1rio do Acre
+Brazil/DeNoronha.generic.long=Hor\u00E1rio de Fernando de Noronha
+Brazil/East.generic.long=Hor\u00E1rio de Bras\u00EDlia
+Brazil/West.generic.long=Hor\u00E1rio do Amazonas
+CAT.generic.long=Hor\u00E1rio da \u00C1frica Central
+CET.generic.long=Hor\u00e1rio da Europa Central
+CNT.generic.long=Hor\u00E1rio de Terra Nova
+CST.generic.long=Hor\u00E1rio Central
+CST6CDT.generic.long=Hor\u00e1rio Central
+CTT.generic.long=Hor\u00E1rio da China
+Canada/Atlantic.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+Canada/Central.generic.long=Hor\u00E1rio Central
+Canada/East-Saskatchewan.generic.long=Hor\u00E1rio Central
+Canada/Eastern.generic.long=Hor\u00E1rio do Leste
+Canada/Mountain.generic.long=Hor\u00E1rio das Montanhas Rochosas
+Canada/Newfoundland.generic.long=Hor\u00E1rio de Terra Nova
+Canada/Pacific.generic.long=Hor\u00E1rio do Pac\u00EDfico
+Canada/Saskatchewan.generic.long=Hor\u00E1rio Central
+Canada/Yukon.generic.long=Hor\u00E1rio do Pac\u00EDfico
+Chile/Continental.generic.long=Hor\u00E1rio do Chile
+Chile/EasterIsland.generic.long=Hor\u00E1rio da Ilha de P\u00E1scoa
+Cuba.generic.long=Hor\u00E1rio de Cuba
+EAT.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+ECT.generic.long=Hor\u00E1rio da Europa Central
+EET.generic.long=Hor\u00e1rio da Europa Oriental
+EST.generic.long=Hor\u00e1rio do Leste
+EST5EDT.generic.long=Hor\u00e1rio do Leste
+Egypt.generic.long=Hor\u00E1rio da Europa Oriental
+Eire.generic.long=Hor\u00E1rio da Rep\u00FAblica da Irlanda
+Etc/Greenwich.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Etc/UCT.generic.long=Hor\u00E1rio Universal Coordenado
+Etc/UTC.generic.long=Hor\u00E1rio Universal Coordenado
+Etc/Universal.generic.long=Hor\u00E1rio Universal Coordenado
+Etc/Zulu.generic.long=Hor\u00E1rio Universal Coordenado
+Europe/Amsterdam.generic.long=Hor\u00E1rio da Europa Central
+Europe/Andorra.generic.long=Hor\u00E1rio da Europa Central
+Europe/Athens.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Belfast.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Belgrade.generic.long=Hor\u00E1rio da Europa Central
+Europe/Berlin.generic.long=Hor\u00E1rio da Europa Central
+Europe/Bratislava.generic.long=Hor\u00E1rio da Europa Central
+Europe/Brussels.generic.long=Hor\u00E1rio da Europa Central
+Europe/Bucharest.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Budapest.generic.long=Hor\u00E1rio da Europa Central
+Europe/Busingen.generic.long=Hor\u00E1rio da Europa Central
+Europe/Chisinau.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Copenhagen.generic.long=Hor\u00E1rio da Europa Central
+Europe/Dublin.generic.long=Hor\u00E1rio da Rep\u00FAblica da Irlanda
+Europe/Gibraltar.generic.long=Hor\u00E1rio da Europa Central
+Europe/Guernsey.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Helsinki.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Isle_of_Man.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Istanbul.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Jersey.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Kaliningrad.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu
+Europe/Kaliningrad.generic.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Kaliningrad.standard.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Kiev.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Lisbon.generic.long=Hor\u00E1rio da Europa Ocidental
+Europe/Ljubljana.generic.long=Hor\u00E1rio da Europa Central
+Europe/London.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Luxembourg.generic.long=Hor\u00E1rio da Europa Central
+Europe/Madrid.generic.long=Hor\u00E1rio da Europa Central
+Europe/Malta.generic.long=Hor\u00E1rio da Europa Central
+Europe/Mariehamn.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Minsk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu
+Europe/Minsk.generic.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Minsk.standard.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Monaco.generic.long=Hor\u00E1rio da Europa Central
+Europe/Moscow.generic.long=Hor\u00E1rio de Moscou
+Europe/Nicosia.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Oslo.generic.long=Hor\u00E1rio da Europa Central
+Europe/Paris.generic.long=Hor\u00E1rio da Europa Central
+Europe/Podgorica.generic.long=Hor\u00E1rio da Europa Central
+Europe/Prague.generic.long=Hor\u00E1rio da Europa Central
+Europe/Riga.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Rome.generic.long=Hor\u00E1rio da Europa Central
+Europe/Samara.generic.long=Hor\u00E1rio de Samara
+Europe/San_Marino.generic.long=Hor\u00E1rio da Europa Central
+Europe/Sarajevo.generic.long=Hor\u00E1rio da Europa Central
+Europe/Simferopol.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Skopje.generic.long=Hor\u00E1rio da Europa Central
+Europe/Sofia.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Stockholm.generic.long=Hor\u00E1rio da Europa Central
+Europe/Tallinn.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Tirane.generic.long=Hor\u00E1rio da Europa Central
+Europe/Tiraspol.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Uzhgorod.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Vaduz.generic.long=Hor\u00E1rio da Europa Central
+Europe/Vatican.generic.long=Hor\u00E1rio da Europa Central
+Europe/Vienna.generic.long=Hor\u00E1rio da Europa Central
+Europe/Vilnius.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Volgograd.generic.long=Hor\u00E1rio de Volgogrado
+Europe/Warsaw.generic.long=Hor\u00E1rio da Europa Central
+Europe/Zagreb.generic.long=Hor\u00E1rio da Europa Central
+Europe/Zaporozhye.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Zurich.generic.long=Hor\u00E1rio da Europa Central
+GB-Eire.generic.long=Hor\u00E1rio do Reino Unido
+GB.generic.long=Hor\u00E1rio do Reino Unido
+GMT.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Greenwich.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+HST.generic.long=Hor\u00e1rio do Hava\u00ed
+Hongkong.generic.long=Hor\u00E1rio de Hong Kong
+IET.generic.long=Hor\u00E1rio do Leste
+IST.generic.long=Hor\u00E1rio da \u00CDndia
+Iceland.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Indian/Antananarivo.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Indian/Chagos.generic.long=Hor\u00E1rio do Territ\u00F3rio do Oceano \u00CDndico
+Indian/Christmas.generic.long=Hor\u00E1rio da Ilha Christmas
+Indian/Cocos.generic.long=Hor\u00E1rio das Ilhas Cocos
+Indian/Comoro.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Indian/Kerguelen.generic.long=Hor\u00E1rio do Territ\u00F3rio Franc\u00EAs no Sul da Ant\u00E1rtica
+Indian/Mahe.generic.long=Hor\u00E1rio de Seychelles
+Indian/Maldives.generic.long=Hor\u00E1rio das Maldivas
+Indian/Mauritius.generic.long=Hor\u00E1rio de Maur\u00EDcio
+Indian/Mayotte.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Indian/Reunion.generic.long=Hor\u00E1rio das Ilhas Reuni\u00E3o
+Iran.generic.long=Hor\u00E1rio do Ir\u00E3
+Israel.generic.long=Hor\u00E1rio de Israel
+JST.generic.long=Hor\u00E1rio do Jap\u00E3o
+Jamaica.generic.long=Hor\u00E1rio do Leste
+Japan.generic.long=Hor\u00E1rio do Jap\u00E3o
+Kwajalein.generic.long=Hor\u00E1rio das Ilhas Marshall
+Libya.generic.long=Hor\u00e1rio da Europa Oriental
+MET.generic.long=MET
+MIT.generic.long=Fuso Hor\u00E1rio de Samoa Ocidental
+MST.generic.long=Hor\u00e1rio das Montanhas Rochosas
+MST7MDT.generic.long=Hor\u00e1rio das Montanhas Rochosas
+Mexico/BajaNorte.generic.long=Hor\u00E1rio do Pac\u00EDfico
+Mexico/BajaSur.generic.long=Hor\u00E1rio das Montanhas Rochosas
+Mexico/General.generic.long=Hor\u00E1rio Central
+NET.generic.long=Hor\u00E1rio da Arm\u00EAnia
+NST.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+NZ-CHAT.generic.long=Hor\u00E1rio de Chatham
+NZ.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Navajo.generic.long=Hor\u00E1rio das Montanhas Rochosas
+PLT.generic.long=Hor\u00E1rio do Paquist\u00E3o
+PNT.generic.long=Hor\u00E1rio das Montanhas Rochosas
+PRC.generic.long=Hor\u00E1rio da China
+PRT.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+PST.generic.long=Hor\u00E1rio do Pac\u00EDfico
+PST8PDT.generic.long=Hor\u00e1rio do Pac\u00edfico
+Pacific/Apia.generic.long=Fuso Hor\u00E1rio de Samoa Ocidental
+Pacific/Auckland.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Pacific/Chatham.generic.long=Hor\u00E1rio de Chatham
+Pacific/Chuuk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk
+Pacific/Chuuk.generic.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Chuuk.standard.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Easter.generic.long=Hor\u00E1rio da Ilha de P\u00E1scoa
+Pacific/Efate.generic.long=Hor\u00E1rio de Vanuatu
+Pacific/Enderbury.generic.long=Hor\u00E1rio da Ilha Phoenix
+Pacific/Fakaofo.generic.long=Hor\u00E1rio de Toquelau
+Pacific/Fiji.generic.long=Hor\u00E1rio de Fiji
+Pacific/Funafuti.generic.long=Hor\u00E1rio de Tuvalu
+Pacific/Galapagos.generic.long=Hor\u00E1rio de Gal\u00E1pagos
+Pacific/Gambier.generic.long=Hor\u00E1rio de Gambier
+Pacific/Guadalcanal.generic.long=Hor\u00E1rio das Ilhas Salom\u00E3o
+Pacific/Guam.generic.long=Hor\u00E1rio de Chamorro
+Pacific/Honolulu.generic.long=Hor\u00E1rio do Hava\u00ED
+Pacific/Johnston.generic.long=Hor\u00E1rio do Hava\u00ED
+Pacific/Kiritimati.generic.long=Hor\u00E1rio das Ilhas Line
+Pacific/Kosrae.generic.long=Hor\u00E1rio de Kosrae
+Pacific/Kwajalein.generic.long=Hor\u00E1rio das Ilhas Marshall
+Pacific/Majuro.generic.long=Hor\u00E1rio das Ilhas Marshall
+Pacific/Marquesas.generic.long=Hor\u00E1rio das Ilhas Marquesas
+Pacific/Midway.generic.long=Hor\u00E1rio da Samoa
+Pacific/Nauru.generic.long=Hor\u00E1rio de Nauru
+Pacific/Niue.generic.long=Hor\u00E1rio de Niue
+Pacific/Norfolk.generic.long=Hor\u00E1rio de Norfolk
+Pacific/Noumea.generic.long=Hor\u00E1rio da Nova Caled\u00F4nia
+Pacific/Pago_Pago.generic.long=Hor\u00E1rio da Samoa
+Pacific/Palau.generic.long=Hor\u00E1rio de Palau
+Pacific/Pitcairn.generic.long=Hor\u00E1rio de Pitcairn
+Pacific/Pohnpei.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei
+Pacific/Pohnpei.generic.long=Hor\u00E1rio de Ponape
+Pacific/Pohnpei.standard.long=Fuso Hor\u00E1rio de Pohnpei
+Pacific/Ponape.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei
+Pacific/Ponape.generic.long=Hor\u00E1rio de Ponape
+Pacific/Ponape.standard.long=Fuso Hor\u00E1rio de Pohnpei
+Pacific/Port_Moresby.generic.long=Hor\u00E1rio de Papua-Nova Guin\u00E9
+Pacific/Rarotonga.generic.long=Hor\u00E1rio das Ilhas Cook
+Pacific/Saipan.generic.long=Hor\u00E1rio de Chamorro
+Pacific/Samoa.generic.long=Hor\u00E1rio da Samoa
+Pacific/Tahiti.generic.long=Hor\u00E1rio do Tahiti
+Pacific/Tarawa.generic.long=Hor\u00E1rio das Ilhas Gilbert
+Pacific/Tongatapu.generic.long=Hor\u00E1rio de Tonga
+Pacific/Truk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk
+Pacific/Truk.generic.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Truk.standard.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Wake.generic.long=Hor\u00E1rio de Wake
+Pacific/Wallis.generic.long=Hor\u00E1rio das Ilhas Wallis e Futuna
+Pacific/Yap.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk
+Pacific/Yap.generic.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Yap.standard.long=Fuso Hor\u00E1rio de Chuuk
+Poland.generic.long=Hor\u00E1rio da Europa Central
+Portugal.generic.long=Hor\u00E1rio da Europa Ocidental
+ROK.generic.long=Hor\u00E1rio da Coreia
+SST.generic.long=Hor\u00E1rio das Ilhas Salom\u00E3o
+Singapore.generic.long=Hor\u00E1rio de Cingapura
+SystemV/AST4.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+SystemV/AST4ADT.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+SystemV/CST6.generic.long=Hor\u00E1rio Central
+SystemV/CST6CDT.generic.long=Hor\u00E1rio Central
+SystemV/EST5.generic.long=Hor\u00E1rio do Leste
+SystemV/EST5EDT.generic.long=Hor\u00E1rio do Leste
+SystemV/HST10.generic.long=Hor\u00E1rio do Hava\u00ED
+SystemV/MST7.generic.long=Hor\u00E1rio das Montanhas Rochosas
+SystemV/MST7MDT.generic.long=Hor\u00E1rio das Montanhas Rochosas
+SystemV/PST8.generic.long=Hor\u00E1rio do Pac\u00EDfico
+SystemV/PST8PDT.generic.long=Hor\u00E1rio do Pac\u00EDfico
+SystemV/YST9.generic.long=Hor\u00E1rio do Alasca
+SystemV/YST9YDT.generic.long=Hor\u00E1rio do Alasca
+Turkey.generic.long=Hor\u00E1rio da Europa Oriental
+UCT.generic.long=Hor\u00E1rio Universal Coordenado
+US/Alaska.generic.long=Hor\u00E1rio do Alasca
+US/Aleutian.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas
+US/Arizona.generic.long=Hor\u00E1rio das Montanhas Rochosas
+US/Central.generic.long=Hor\u00E1rio Central
+US/East-Indiana.generic.long=Hor\u00E1rio do Leste
+US/Eastern.generic.long=Hor\u00E1rio do Leste
+US/Hawaii.generic.long=Hor\u00E1rio do Hava\u00ED
+US/Indiana-Starke.generic.long=Hor\u00E1rio Central
+US/Michigan.generic.long=Hor\u00E1rio do Leste
+US/Mountain.generic.long=Hor\u00E1rio das Montanhas Rochosas
+US/Pacific-New.generic.long=Hor\u00E1rio do Pac\u00EDfico
+US/Pacific.generic.long=Hor\u00E1rio do Pac\u00EDfico
+US/Samoa.generic.long=Hor\u00E1rio da Samoa
+UTC.generic.long=Hor\u00E1rio Universal Coordenado
+Universal.generic.long=Hor\u00E1rio Universal Coordenado
+VST.generic.long=Hor\u00E1rio da Indochina
+W-SU.generic.long=Hor\u00E1rio de Moscou
+WET.generic.long=Hor\u00e1rio da Europa Ocidental
+Zulu.generic.long=Hor\u00E1rio Universal Coordenado
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=Central sommartid (Nordterritoriet)
+ACT.generic.long=Central tid (Nordterritoriet)
+ACT.standard.long=Central standardtid (Nordterritoriet)
+AET.daylight.long=\u00D6stlig sommartid (New South Wales)
+AET.generic.long=\u00D6stlig tid (New South Wales)
+AET.standard.long=\u00D6stlig standardtid (New South Wales)
+AGT.generic.long=Argentinsk tid
+ART.generic.long=\u00D6steuropeisk tid
+AST.generic.long=Alaskisk tid
+Africa/Abidjan.generic.long=Greenwichtid
+Africa/Accra.generic.long=Ghana, normaltid
+Africa/Addis_Ababa.generic.long=\u00D6stafrikansk tid
+Africa/Algiers.generic.long=Centraleuropeisk tid
+Africa/Asmara.generic.long=\u00D6stafrikansk tid
+Africa/Asmera.generic.long=\u00D6stafrikansk tid
+Africa/Bamako.generic.long=Greenwichtid
+Africa/Bangui.generic.long=V\u00E4stafrikansk tid
+Africa/Banjul.generic.long=Greenwichtid
+Africa/Bissau.generic.long=Greenwichtid
+Africa/Blantyre.generic.long=Centralafrikansk tid
+Africa/Brazzaville.generic.long=V\u00E4stafrikansk tid
+Africa/Bujumbura.generic.long=Centralafrikansk tid
+Africa/Cairo.generic.long=\u00D6steuropeisk tid
+Africa/Casablanca.generic.long=V\u00E4steuropeisk tid
+Africa/Ceuta.generic.long=Centraleuropeisk tid
+Africa/Conakry.generic.long=Greenwichtid
+Africa/Dakar.generic.long=Greenwichtid
+Africa/Dar_es_Salaam.generic.long=\u00D6stafrikansk tid
+Africa/Djibouti.generic.long=\u00D6stafrikansk tid
+Africa/Douala.generic.long=V\u00E4stafrikansk tid
+Africa/El_Aaiun.generic.long=V\u00E4steuropeisk tid
+Africa/Freetown.generic.long=Sierra Leone-tid
+Africa/Gaborone.generic.long=Centralafrikansk tid
+Africa/Harare.generic.long=Centralafrikansk tid
+Africa/Johannesburg.generic.long=Sydafrikansk tid
+Africa/Juba.generic.long=\u00D6stafrikansk tid
+Africa/Kampala.generic.long=\u00D6stafrikansk tid
+Africa/Khartoum.generic.long=\u00D6stafrikansk tid
+Africa/Kigali.generic.long=Centralafrikansk tid
+Africa/Kinshasa.generic.long=V\u00E4stafrikansk tid
+Africa/Lagos.generic.long=V\u00E4stafrikansk tid
+Africa/Libreville.generic.long=V\u00E4stafrikansk tid
+Africa/Lome.generic.long=Greenwichtid
+Africa/Luanda.generic.long=V\u00E4stafrikansk tid
+Africa/Lubumbashi.generic.long=Centralafrikansk tid
+Africa/Lusaka.generic.long=Centralafrikansk tid
+Africa/Malabo.generic.long=V\u00E4stafrikansk tid
+Africa/Maputo.generic.long=Centralafrikansk tid
+Africa/Maseru.generic.long=Sydafrikansk tid
+Africa/Mbabane.generic.long=Sydafrikansk tid
+Africa/Mogadishu.generic.long=\u00D6stafrikansk tid
+Africa/Monrovia.generic.long=Greenwichtid
+Africa/Nairobi.generic.long=\u00D6stafrikansk tid
+Africa/Ndjamena.generic.long=V\u00E4stafrikansk tid
+Africa/Niamey.generic.long=V\u00E4stafrikansk tid
+Africa/Nouakchott.generic.long=Greenwichtid
+Africa/Ouagadougou.generic.long=Greenwichtid
+Africa/Porto-Novo.generic.long=V\u00E4stafrikansk tid
+Africa/Sao_Tome.generic.long=Greenwichtid
+Africa/Timbuktu.generic.long=Greenwichtid
+Africa/Tripoli.generic.long=\u00d6steuropeisk tid
+Africa/Tunis.generic.long=Centraleuropeisk tid
+Africa/Windhoek.generic.long=V\u00E4stafrikansk tid
+America/Adak.generic.long=Hawaiiansk-aleutisk tid
+America/Anchorage.generic.long=Alaskisk tid
+America/Anguilla.generic.long=Atlantisk tid
+America/Antigua.generic.long=Atlantisk tid
+America/Araguaina.generic.long=Brasiliansk tid
+America/Argentina/Buenos_Aires.generic.long=Argentinsk tid
+America/Argentina/Catamarca.generic.long=Argentinsk tid
+America/Argentina/ComodRivadavia.generic.long=Argentinsk tid
+America/Argentina/Cordoba.generic.long=Argentinsk tid
+America/Argentina/Jujuy.generic.long=Argentinsk tid
+America/Argentina/La_Rioja.generic.long=Argentinsk tid
+America/Argentina/Mendoza.generic.long=Argentinsk tid
+America/Argentina/Rio_Gallegos.generic.long=Argentinsk tid
+America/Argentina/Salta.generic.long=Argentinsk tid
+America/Argentina/San_Juan.generic.long=Argentinsk tid
+America/Argentina/San_Luis.generic.long=Argentinsk tid
+America/Argentina/Tucuman.generic.long=Argentinsk tid
+America/Argentina/Ushuaia.generic.long=Argentinsk tid
+America/Aruba.generic.long=Atlantisk tid
+America/Asuncion.generic.long=Paraguayansk tid
+America/Atikokan.generic.long=\u00D6stlig tid
+America/Atka.generic.long=Hawaiiansk-aleutisk tid
+America/Bahia.generic.long=Brasiliansk tid
+America/Bahia_Banderas.generic.long=Central tid
+America/Barbados.generic.long=Atlantisk tid
+America/Belem.generic.long=Brasiliansk tid
+America/Belize.generic.long=Central tid
+America/Blanc-Sablon.generic.long=Atlantisk tid
+America/Boa_Vista.generic.long=Amazonas-tid
+America/Bogota.generic.long=Kolombiansk tid
+America/Boise.generic.long=Mountain-tid
+America/Buenos_Aires.generic.long=Argentinsk tid
+America/Cambridge_Bay.generic.long=Mountain-tid
+America/Campo_Grande.generic.long=Amazonas-tid
+America/Cancun.generic.long=Central tid
+America/Caracas.generic.long=Venezuelansk tid
+America/Catamarca.generic.long=Argentinsk tid
+America/Cayenne.generic.long=Franska Guyana-tid
+America/Cayman.generic.long=\u00D6stlig tid
+America/Chicago.generic.long=Central tid
+America/Chihuahua.generic.long=Mountain-tid
+America/Coral_Harbour.generic.long=\u00D6stlig tid
+America/Cordoba.generic.long=Argentinsk tid
+America/Costa_Rica.generic.long=Central tid
+America/Creston.generic.long=Mountain-tid
+America/Cuiaba.generic.long=Amazonas-tid
+America/Curacao.generic.long=Atlantisk tid
+America/Danmarkshavn.generic.long=Greenwichtid
+America/Dawson.generic.long=Stillahavet
+America/Dawson_Creek.generic.long=Mountain-tid
+America/Denver.generic.long=Mountain-tid
+America/Detroit.generic.long=\u00D6stlig tid
+America/Dominica.generic.long=Atlantisk tid
+America/Edmonton.generic.long=Mountain-tid
+America/Eirunepe.generic.long=Acre, normaltid
+America/El_Salvador.generic.long=Central tid
+America/Ensenada.generic.long=Stillahavet
+America/Fort_Wayne.generic.long=\u00D6stlig tid
+America/Fortaleza.generic.long=Brasiliansk tid
+America/Glace_Bay.generic.long=Atlantisk tid
+America/Godthab.generic.long=V\u00E4stgr\u00F6nl\u00E4ndsk tid
+America/Goose_Bay.generic.long=Atlantisk tid
+America/Grand_Turk.generic.long=\u00D6stlig tid
+America/Grenada.generic.long=Atlantisk tid
+America/Guadeloupe.generic.long=Atlantisk tid
+America/Guatemala.generic.long=Central tid
+America/Guayaquil.generic.long=Ecuadoriansk tid
+America/Guyana.generic.long=Guyansk tid
+America/Halifax.generic.long=Atlantisk tid
+America/Havana.generic.long=Kubansk tid
+America/Hermosillo.generic.long=Mountain-tid
+America/Indiana/Indianapolis.generic.long=\u00D6stlig tid
+America/Indiana/Knox.generic.long=Central tid
+America/Indiana/Marengo.generic.long=\u00D6stlig tid
+America/Indiana/Petersburg.generic.long=\u00D6stlig tid
+America/Indiana/Tell_City.generic.long=Central tid
+America/Indiana/Vevay.generic.long=\u00D6stlig tid
+America/Indiana/Vincennes.generic.long=\u00D6stlig tid
+America/Indiana/Winamac.generic.long=\u00D6stlig tid
+America/Indianapolis.generic.long=\u00D6stlig tid
+America/Inuvik.generic.long=Mountain-tid
+America/Iqaluit.generic.long=\u00D6stlig tid
+America/Jamaica.generic.long=\u00D6stlig tid
+America/Jujuy.generic.long=Argentinsk tid
+America/Juneau.generic.long=Alaskisk tid
+America/Kentucky/Louisville.generic.long=\u00D6stlig tid
+America/Kentucky/Monticello.generic.long=\u00D6stlig tid
+America/Knox_IN.generic.long=Central tid
+America/Kralendijk.generic.long=Atlantisk tid
+America/La_Paz.generic.long=Boliviansk tid
+America/Lima.generic.long=Peruansk tid
+America/Los_Angeles.generic.long=Stillahavet
+America/Louisville.generic.long=\u00D6stlig tid
+America/Lower_Princes.generic.long=Atlantisk tid
+America/Maceio.generic.long=Brasiliansk tid
+America/Managua.generic.long=Central tid
+America/Manaus.generic.long=Amazonas-tid
+America/Marigot.generic.long=Atlantisk tid
+America/Martinique.generic.long=Atlantisk tid
+America/Matamoros.generic.long=Central tid
+America/Mazatlan.generic.long=Mountain-tid
+America/Mendoza.generic.long=Argentinsk tid
+America/Menominee.generic.long=Central tid
+America/Merida.generic.long=Central tid
+America/Metlakatla.daylight.long=Metlakatla, sommartid
+America/Metlakatla.generic.long=Metlakatla-tid
+America/Metlakatla.standard.long=Metlakatla, normaltid
+America/Mexico_City.generic.long=Central tid
+America/Miquelon.generic.long=Saint-Pierre och Miquelons tid
+America/Moncton.generic.long=Atlantisk tid
+America/Monterrey.generic.long=Central tid
+America/Montevideo.generic.long=Uruguayansk tid
+America/Montreal.generic.long=\u00D6stlig tid
+America/Montserrat.generic.long=Atlantisk tid
+America/Nassau.generic.long=\u00D6stlig tid
+America/New_York.generic.long=\u00D6stlig tid
+America/Nipigon.generic.long=\u00D6stlig tid
+America/Nome.generic.long=Alaskisk tid
+America/Noronha.generic.long=Fernando de Noronha-tid
+America/North_Dakota/Beulah.generic.long=Central tid
+America/North_Dakota/Center.generic.long=Central tid
+America/North_Dakota/New_Salem.generic.long=Central tid
+America/Ojinaga.generic.long=Mountain-tid
+America/Panama.generic.long=\u00D6stlig tid
+America/Pangnirtung.generic.long=\u00D6stlig tid
+America/Paramaribo.generic.long=Surinamsk tid
+America/Phoenix.generic.long=Mountain-tid
+America/Port-au-Prince.generic.long=\u00D6stlig tid
+America/Port_of_Spain.generic.long=Atlantisk tid
+America/Porto_Acre.generic.long=Acre, normaltid
+America/Porto_Velho.generic.long=Amazonas-tid
+America/Puerto_Rico.generic.long=Atlantisk tid
+America/Rainy_River.generic.long=Central tid
+America/Rankin_Inlet.generic.long=Central tid
+America/Recife.generic.long=Brasiliansk tid
+America/Regina.generic.long=Central tid
+America/Resolute.generic.long=Central tid
+America/Rio_Branco.generic.long=Acre, normaltid
+America/Rosario.generic.long=Argentinsk tid
+America/Santa_Isabel.generic.long=Stillahavet
+America/Santarem.generic.long=Brasiliansk tid
+America/Santiago.generic.long=Chilensk tid
+America/Santo_Domingo.generic.long=Atlantisk tid
+America/Sao_Paulo.generic.long=Brasiliansk tid
+America/Scoresbysund.generic.long=\u00D6stgr\u00F6nl\u00E4ndsk tid
+America/Shiprock.generic.long=Mountain-tid
+America/Sitka.generic.long=Alaskisk tid
+America/St_Barthelemy.generic.long=Atlantisk tid
+America/St_Johns.generic.long=Newfoundl\u00E4ndsk tid
+America/St_Kitts.generic.long=Atlantisk tid
+America/St_Lucia.generic.long=Atlantisk tid
+America/St_Thomas.generic.long=Atlantisk tid
+America/St_Vincent.generic.long=Atlantisk tid
+America/Swift_Current.generic.long=Central tid
+America/Tegucigalpa.generic.long=Central tid
+America/Thule.generic.long=Atlantisk tid
+America/Thunder_Bay.generic.long=\u00D6stlig tid
+America/Tijuana.generic.long=Stillahavet
+America/Toronto.generic.long=\u00D6stlig tid
+America/Tortola.generic.long=Atlantisk tid
+America/Vancouver.generic.long=Stillahavet
+America/Virgin.generic.long=Atlantisk tid
+America/Whitehorse.generic.long=Stillahavet
+America/Winnipeg.generic.long=Central tid
+America/Yakutat.generic.long=Alaskisk tid
+America/Yellowknife.generic.long=Mountain-tid
+Antarctica/Casey.daylight.long=V\u00E4stlig sommartid (Australien)
+Antarctica/Casey.generic.long=V\u00E4stlig tid (Australien)
+Antarctica/Casey.standard.long=Western Standard Time (Australien)
+Antarctica/Davis.generic.long=Davis-tid
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville-tid
+Antarctica/Macquarie.daylight.long=Macquarie\u00F6n, sommartid
+Antarctica/Macquarie.generic.long=Macquarie\u00F6n, normaltid
+Antarctica/Macquarie.standard.long=Macquarie\u00F6n, normaltid
+Antarctica/Mawson.generic.long=Mawson-tid
+Antarctica/McMurdo.generic.long=Nyzeel\u00E4ndsk tid
+Antarctica/Palmer.generic.long=Chilensk tid
+Antarctica/Rothera.generic.long=Rothera-tid
+Antarctica/South_Pole.generic.long=Nyzeel\u00E4ndsk tid
+Antarctica/Syowa.generic.long=Syowa-tid
+Antarctica/Vostok.generic.long=Vostok-tid
+Arctic/Longyearbyen.generic.long=Centraleuropeisk tid
+Asia/Aden.generic.long=Arabisk tid
+Asia/Almaty.generic.long=Alma-Ata-tid
+Asia/Amman.generic.long=Arabisk tid
+Asia/Anadyr.generic.long=Anadyr-tid
+Asia/Aqtau.generic.long=Aqtau-tid
+Asia/Aqtobe.generic.long=Aqtobe-tid
+Asia/Ashgabat.generic.long=Turkmensk tid
+Asia/Ashkhabad.generic.long=Turkmensk tid
+Asia/Baghdad.generic.long=Arabisk tid
+Asia/Bahrain.generic.long=Arabisk tid
+Asia/Baku.generic.long=Azerbajdzjansk tid
+Asia/Bangkok.generic.long=Indokinesisk tid
+Asia/Beirut.generic.long=\u00D6steuropeisk tid
+Asia/Bishkek.generic.long=Kirgizisk tid
+Asia/Brunei.generic.long=Bruneisk tid
+Asia/Calcutta.generic.long=Indisk tid
+Asia/Choibalsan.generic.long=Choibalsan-tid
+Asia/Chongqing.generic.long=Kinesisk tid
+Asia/Chungking.generic.long=Kinesisk tid
+Asia/Colombo.generic.long=Indisk tid
+Asia/Dacca.generic.long=Bangladeshisk tid
+Asia/Damascus.generic.long=\u00D6steuropeisk tid
+Asia/Dhaka.generic.long=Bangladeshisk tid
+Asia/Dili.generic.long=\u00D6sttimor, normaltid
+Asia/Dubai.generic.long=Golfens tid
+Asia/Dushanbe.generic.long=Tadzjikisk tid
+Asia/Gaza.generic.long=\u00D6steuropeisk tid
+Asia/Harbin.generic.long=Kinesisk tid
+Asia/Hebron.generic.long=\u00D6steuropeisk tid
+Asia/Ho_Chi_Minh.generic.long=Indokinesisk tid
+Asia/Hong_Kong.generic.long=Hongkong-tid
+Asia/Hovd.generic.long=Hovd-tid
+Asia/Irkutsk.generic.long=Irkutsk-tid
+Asia/Istanbul.generic.long=\u00D6steuropeisk tid
+Asia/Jakarta.generic.long=V\u00E4stindonesisk tid
+Asia/Jayapura.generic.long=\u00D6stindonesisk tid
+Asia/Jerusalem.generic.long=Israelisk tid
+Asia/Kabul.generic.long=Afghansk tid
+Asia/Kamchatka.generic.long=Petropavlovsk-Kamtjatskij-tid
+Asia/Karachi.generic.long=Pakistansk tid
+Asia/Kashgar.generic.long=Kinesisk tid
+Asia/Kathmandu.generic.long=Nepalesisk tid
+Asia/Katmandu.generic.long=Nepalesisk tid
+Asia/Khandyga.daylight.long=Khandyga, sommartid
+Asia/Khandyga.generic.long=Khandyga, normaltid
+Asia/Khandyga.standard.long=Khandyga, normaltid
+Asia/Kolkata.generic.long=Indisk tid
+Asia/Krasnoyarsk.generic.long=Krasnojarsk-tid
+Asia/Kuala_Lumpur.generic.long=Malaysisk tid
+Asia/Kuching.generic.long=Malaysisk tid
+Asia/Kuwait.generic.long=Arabisk tid
+Asia/Macao.generic.long=Kinesisk tid
+Asia/Macau.generic.long=Kinesisk tid
+Asia/Magadan.generic.long=Magadan-tid
+Asia/Makassar.generic.long=Centralindonesisk tid
+Asia/Manila.generic.long=Filippinsk tid
+Asia/Muscat.generic.long=Golfens tid
+Asia/Nicosia.generic.long=\u00D6steuropeisk tid
+Asia/Novokuznetsk.generic.long=Sibirisk tid
+Asia/Novosibirsk.generic.long=Sibirisk tid
+Asia/Omsk.generic.long=Omsk-tid
+Asia/Oral.generic.long=Oral-tid
+Asia/Phnom_Penh.generic.long=Indokinesisk tid
+Asia/Pontianak.generic.long=V\u00E4stindonesisk tid
+Asia/Pyongyang.generic.long=Koreansk tid
+Asia/Qatar.generic.long=Arabisk tid
+Asia/Qyzylorda.generic.long=Qyzylorda-tid
+Asia/Rangoon.generic.long=Myanmar-tid
+Asia/Saigon.generic.long=Indokinesisk tid
+Asia/Sakhalin.generic.long=Sakhalin-tid
+Asia/Samarkand.generic.long=Uzbekisk tid
+Asia/Seoul.generic.long=Koreansk tid
+Asia/Shanghai.generic.long=Kinesisk tid
+Asia/Singapore.generic.long=Singapore-tid
+Asia/Taipei.generic.long=Kinesisk tid
+Asia/Tashkent.generic.long=Uzbekisk tid
+Asia/Tbilisi.generic.long=Georgisk tid
+Asia/Tehran.generic.long=Iransk tid
+Asia/Tel_Aviv.generic.long=Israelisk tid
+Asia/Thimbu.generic.long=Bhutanesisk tid
+Asia/Thimphu.generic.long=Bhutanesisk tid
+Asia/Tokyo.generic.long=Japansk tid
+Asia/Ujung_Pandang.generic.long=Centralindonesisk tid
+Asia/Ulaanbaatar.generic.long=Ulaanbaatar-tid
+Asia/Ulan_Bator.generic.long=Ulaanbaatar-tid
+Asia/Urumqi.generic.long=Kinesisk tid
+Asia/Ust-Nera.daylight.long=Ust-Nera, sommartid
+Asia/Ust-Nera.generic.long=Ust-Nera, normaltid
+Asia/Ust-Nera.standard.long=Ust-Nera, normaltid
+Asia/Vientiane.generic.long=Indokinesisk tid
+Asia/Vladivostok.generic.long=Vladivostok-tid
+Asia/Yakutsk.generic.long=Jakutsk-tid
+Asia/Yekaterinburg.generic.long=Jekaterinburg-tid
+Asia/Yerevan.generic.long=Armenisk tid
+Atlantic/Azores.generic.long=Azorerna-tid
+Atlantic/Bermuda.generic.long=Atlantisk tid
+Atlantic/Canary.generic.long=V\u00E4steuropeisk tid
+Atlantic/Cape_Verde.generic.long=Kap Verde-tid
+Atlantic/Faeroe.generic.long=V\u00E4steuropeisk tid
+Atlantic/Faroe.generic.long=V\u00E4steuropeisk tid
+Atlantic/Jan_Mayen.generic.long=Centraleuropeisk tid
+Atlantic/Madeira.generic.long=V\u00E4steuropeisk tid
+Atlantic/Reykjavik.generic.long=Greenwichtid
+Atlantic/South_Georgia.generic.long=Sydgeorgisk tid
+Atlantic/St_Helena.generic.long=Greenwichtid
+Atlantic/Stanley.generic.long=Falklands\u00F6arna-tid
+Australia/ACT.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/ACT.generic.long=\u00D6stlig tid (New South Wales)
+Australia/ACT.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Adelaide.daylight.long=Central sommartid (South Australia)
+Australia/Adelaide.generic.long=Central tid (Sydaustralien)
+Australia/Adelaide.standard.long=Central standardtid (Sydaustralien)
+Australia/Brisbane.daylight.long=\u00D6stlig sommartid (Queensland)
+Australia/Brisbane.generic.long=\u00D6stlig tid (Queensland)
+Australia/Brisbane.standard.long=\u00D6stlig standardtid (Queensland)
+Australia/Broken_Hill.daylight.long=Central sommartid (South Australia/New South Wales)
+Australia/Broken_Hill.generic.long=Central tid (Sydaustralien/New South Wales)
+Australia/Broken_Hill.standard.long=Central standardtid (Sydaustralien/New South Wales)
+Australia/Canberra.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/Canberra.generic.long=\u00D6stlig tid (New South Wales)
+Australia/Canberra.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Currie.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/Currie.generic.long=\u00D6stlig tid (New South Wales)
+Australia/Currie.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Darwin.daylight.long=Central sommartid (Nordterritoriet)
+Australia/Darwin.generic.long=Central tid (Nordterritoriet)
+Australia/Darwin.standard.long=Central standardtid (Nordterritoriet)
+Australia/Eucla.daylight.long=Central v\u00E4stlig sommartid (Australien)
+Australia/Eucla.generic.long=Central v\u00E4stlig tid (Australien)
+Australia/Eucla.standard.long=Central v\u00E4stlig normaltid (Australien)
+Australia/Hobart.daylight.long=\u00D6stlig sommartid (Tasmanien)
+Australia/Hobart.generic.long=\u00D6stlig tid (Tasmania)
+Australia/Hobart.standard.long=\u00D6stlig standardtid (Tasmania)
+Australia/LHI.generic.long=Lord Howe-tid
+Australia/Lindeman.daylight.long=\u00D6stlig sommartid (Queensland)
+Australia/Lindeman.generic.long=\u00D6stlig tid (Queensland)
+Australia/Lindeman.standard.long=\u00D6stlig standardtid (Queensland)
+Australia/Lord_Howe.generic.long=Lord Howe-tid
+Australia/Melbourne.daylight.long=\u00D6stlig sommartid (Victoria)
+Australia/Melbourne.generic.long=\u00D6stlig tid (Victoria)
+Australia/Melbourne.standard.long=\u00D6stlig standardtid (Victoria)
+Australia/NSW.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/NSW.generic.long=\u00D6stlig tid (New South Wales)
+Australia/NSW.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/North.daylight.long=Central sommartid (Nordterritoriet)
+Australia/North.generic.long=Central tid (Nordterritoriet)
+Australia/North.standard.long=Central standardtid (Nordterritoriet)
+Australia/Perth.daylight.long=V\u00E4stlig sommartid (Australien)
+Australia/Perth.generic.long=V\u00E4stlig tid (Australien)
+Australia/Perth.standard.long=Western Standard Time (Australien)
+Australia/Queensland.daylight.long=\u00D6stlig sommartid (Queensland)
+Australia/Queensland.generic.long=\u00D6stlig tid (Queensland)
+Australia/Queensland.standard.long=\u00D6stlig standardtid (Queensland)
+Australia/South.daylight.long=Central sommartid (South Australia)
+Australia/South.generic.long=Central tid (Sydaustralien)
+Australia/South.standard.long=Central standardtid (Sydaustralien)
+Australia/Sydney.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/Sydney.generic.long=\u00D6stlig tid (New South Wales)
+Australia/Sydney.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Tasmania.daylight.long=\u00D6stlig sommartid (Tasmanien)
+Australia/Tasmania.generic.long=\u00D6stlig tid (Tasmania)
+Australia/Tasmania.standard.long=\u00D6stlig standardtid (Tasmania)
+Australia/Victoria.daylight.long=\u00D6stlig sommartid (Victoria)
+Australia/Victoria.generic.long=\u00D6stlig tid (Victoria)
+Australia/Victoria.standard.long=\u00D6stlig standardtid (Victoria)
+Australia/West.daylight.long=V\u00E4stlig sommartid (Australien)
+Australia/West.generic.long=V\u00E4stlig tid (Australien)
+Australia/West.standard.long=Western Standard Time (Australien)
+Australia/Yancowinna.daylight.long=Central sommartid (South Australia/New South Wales)
+Australia/Yancowinna.generic.long=Central tid (Sydaustralien/New South Wales)
+Australia/Yancowinna.standard.long=Central standardtid (Sydaustralien/New South Wales)
+BET.generic.long=Brasiliansk tid
+BST.generic.long=Bangladeshisk tid
+Brazil/Acre.generic.long=Acre, normaltid
+Brazil/DeNoronha.generic.long=Fernando de Noronha-tid
+Brazil/East.generic.long=Brasiliansk tid
+Brazil/West.generic.long=Amazonas-tid
+CAT.generic.long=Centralafrikansk tid
+CET.generic.long=Centraleuropeisk tid
+CNT.generic.long=Newfoundl\u00E4ndsk tid
+CST.generic.long=Central tid
+CST6CDT.generic.long=Central tid
+CTT.generic.long=Kinesisk tid
+Canada/Atlantic.generic.long=Atlantisk tid
+Canada/Central.generic.long=Central tid
+Canada/East-Saskatchewan.generic.long=Central tid
+Canada/Eastern.generic.long=\u00D6stlig tid
+Canada/Mountain.generic.long=Mountain-tid
+Canada/Newfoundland.generic.long=Newfoundl\u00E4ndsk tid
+Canada/Pacific.generic.long=Stillahavet
+Canada/Saskatchewan.generic.long=Central tid
+Canada/Yukon.generic.long=Stillahavet
+Chile/Continental.generic.long=Chilensk tid
+Chile/EasterIsland.generic.long=P\u00E5sk\u00F6n-tid
+Cuba.generic.long=Kubansk tid
+EAT.generic.long=\u00D6stafrikansk tid
+ECT.generic.long=Centraleuropeisk tid
+EET.generic.long=\u00d6steuropeisk tid
+EST.generic.long=\u00d6stlig tid
+EST5EDT.generic.long=\u00d6stlig tid
+Egypt.generic.long=\u00D6steuropeisk tid
+Eire.generic.long=Irl\u00E4ndsk tid
+Etc/Greenwich.generic.long=Greenwichtid
+Etc/UCT.generic.long=UTC (koordinerad v\u00E4rldstid)
+Etc/UTC.generic.long=UTC (koordinerad v\u00E4rldstid)
+Etc/Universal.generic.long=UTC (koordinerad v\u00E4rldstid)
+Etc/Zulu.generic.long=UTC (koordinerad v\u00E4rldstid)
+Europe/Amsterdam.generic.long=Centraleuropeisk tid
+Europe/Andorra.generic.long=Centraleuropeisk tid
+Europe/Athens.generic.long=\u00D6steuropeisk tid
+Europe/Belfast.generic.long=Brittisk tid
+Europe/Belgrade.generic.long=Centraleuropeisk tid
+Europe/Berlin.generic.long=Centraleuropeisk tid
+Europe/Bratislava.generic.long=Centraleuropeisk tid
+Europe/Brussels.generic.long=Centraleuropeisk tid
+Europe/Bucharest.generic.long=\u00D6steuropeisk tid
+Europe/Budapest.generic.long=Centraleuropeisk tid
+Europe/Busingen.generic.long=Centraleuropeisk tid
+Europe/Chisinau.generic.long=\u00D6steuropeisk tid
+Europe/Copenhagen.generic.long=Centraleuropeisk tid
+Europe/Dublin.generic.long=Irl\u00E4ndsk tid
+Europe/Gibraltar.generic.long=Centraleuropeisk tid
+Europe/Guernsey.generic.long=Brittisk tid
+Europe/Helsinki.generic.long=\u00D6steuropeisk tid
+Europe/Isle_of_Man.generic.long=Brittisk tid
+Europe/Istanbul.generic.long=\u00D6steuropeisk tid
+Europe/Jersey.generic.long=Brittisk tid
+Europe/Kaliningrad.daylight.long=\u00D6steuropeisk sommartid
+Europe/Kaliningrad.generic.long=Kaliningradtid
+Europe/Kaliningrad.standard.long=Kaliningradtid
+Europe/Kiev.generic.long=\u00D6steuropeisk tid
+Europe/Lisbon.generic.long=V\u00E4steuropeisk tid
+Europe/Ljubljana.generic.long=Centraleuropeisk tid
+Europe/London.generic.long=Brittisk tid
+Europe/Luxembourg.generic.long=Centraleuropeisk tid
+Europe/Madrid.generic.long=Centraleuropeisk tid
+Europe/Malta.generic.long=Centraleuropeisk tid
+Europe/Mariehamn.generic.long=\u00D6steuropeisk tid
+Europe/Minsk.daylight.long=\u00D6steuropeisk sommartid
+Europe/Minsk.generic.long=Kaliningradtid
+Europe/Minsk.standard.long=Kaliningradtid
+Europe/Monaco.generic.long=Centraleuropeisk tid
+Europe/Moscow.generic.long=Moskvas tid
+Europe/Nicosia.generic.long=\u00D6steuropeisk tid
+Europe/Oslo.generic.long=Centraleuropeisk tid
+Europe/Paris.generic.long=Centraleuropeisk tid
+Europe/Podgorica.generic.long=Centraleuropeisk tid
+Europe/Prague.generic.long=Centraleuropeisk tid
+Europe/Riga.generic.long=\u00D6steuropeisk tid
+Europe/Rome.generic.long=Centraleuropeisk tid
+Europe/Samara.generic.long=Samara-tid
+Europe/San_Marino.generic.long=Centraleuropeisk tid
+Europe/Sarajevo.generic.long=Centraleuropeisk tid
+Europe/Simferopol.generic.long=\u00D6steuropeisk tid
+Europe/Skopje.generic.long=Centraleuropeisk tid
+Europe/Sofia.generic.long=\u00D6steuropeisk tid
+Europe/Stockholm.generic.long=Centraleuropeisk tid
+Europe/Tallinn.generic.long=\u00D6steuropeisk tid
+Europe/Tirane.generic.long=Centraleuropeisk tid
+Europe/Tiraspol.generic.long=\u00D6steuropeisk tid
+Europe/Uzhgorod.generic.long=\u00D6steuropeisk tid
+Europe/Vaduz.generic.long=Centraleuropeisk tid
+Europe/Vatican.generic.long=Centraleuropeisk tid
+Europe/Vienna.generic.long=Centraleuropeisk tid
+Europe/Vilnius.generic.long=\u00D6steuropeisk tid
+Europe/Volgograd.generic.long=Volgograd, normaltid
+Europe/Warsaw.generic.long=Centraleuropeisk tid
+Europe/Zagreb.generic.long=Centraleuropeisk tid
+Europe/Zaporozhye.generic.long=\u00D6steuropeisk tid
+Europe/Zurich.generic.long=Centraleuropeisk tid
+GB-Eire.generic.long=Brittisk tid
+GB.generic.long=Brittisk tid
+GMT.generic.long=Greenwichtid
+Greenwich.generic.long=Greenwichtid
+HST.generic.long=Hawaiiansk tid
+Hongkong.generic.long=Hongkong-tid
+IET.generic.long=\u00D6stlig tid
+IST.generic.long=Indisk tid
+Iceland.generic.long=Greenwichtid
+Indian/Antananarivo.generic.long=\u00D6stafrikansk tid
+Indian/Chagos.generic.long=Indiska Ocean\u00F6arna-tid
+Indian/Christmas.generic.long=Jul\u00F6n-tid
+Indian/Cocos.generic.long=Kokos\u00F6arna-tid
+Indian/Comoro.generic.long=\u00D6stafrikansk tid
+Indian/Kerguelen.generic.long=Franska s\u00F6dra och antarktiska \u00F6arna-tid
+Indian/Mahe.generic.long=Seychellisk tid
+Indian/Maldives.generic.long=Maldivisk tid
+Indian/Mauritius.generic.long=Mauritiansk tid
+Indian/Mayotte.generic.long=\u00D6stafrikansk tid
+Indian/Reunion.generic.long=Reunion-tid
+Iran.generic.long=Iransk tid
+Israel.generic.long=Israelisk tid
+JST.generic.long=Japansk tid
+Jamaica.generic.long=\u00D6stlig tid
+Japan.generic.long=Japansk tid
+Kwajalein.generic.long=Marshall\u00F6arna-tid
+Libya.generic.long=\u00d6steuropeisk tid
+MET.generic.long=MET
+MIT.generic.long=V\u00E4stsamoansk tid
+MST.generic.long=Mountain-tid
+MST7MDT.generic.long=Mountain-tid
+Mexico/BajaNorte.generic.long=Stillahavet
+Mexico/BajaSur.generic.long=Mountain-tid
+Mexico/General.generic.long=Central tid
+NET.generic.long=Armenisk tid
+NST.generic.long=Nyzeel\u00E4ndsk tid
+NZ-CHAT.generic.long=Chathams tid
+NZ.generic.long=Nyzeel\u00E4ndsk tid
+Navajo.generic.long=Mountain-tid
+PLT.generic.long=Pakistansk tid
+PNT.generic.long=Mountain-tid
+PRC.generic.long=Kinesisk tid
+PRT.generic.long=Atlantisk tid
+PST.generic.long=Stillahavet
+PST8PDT.generic.long=Stillahavet
+Pacific/Apia.generic.long=V\u00E4stsamoansk tid
+Pacific/Auckland.generic.long=Nyzeel\u00E4ndsk tid
+Pacific/Chatham.generic.long=Chathams tid
+Pacific/Chuuk.daylight.long=Chuuk, sommartid
+Pacific/Chuuk.generic.long=Chuuk, normaltid
+Pacific/Chuuk.standard.long=Chuuk, normaltid
+Pacific/Easter.generic.long=P\u00E5sk\u00F6n-tid
+Pacific/Efate.generic.long=Vanuatu-tid
+Pacific/Enderbury.generic.long=Phoenix\u00F6arna-tid
+Pacific/Fakaofo.generic.long=Tokelau-tid
+Pacific/Fiji.generic.long=Fijiansk tid
+Pacific/Funafuti.generic.long=Tuvalu-tid
+Pacific/Galapagos.generic.long=Galapagos-tid
+Pacific/Gambier.generic.long=Gambier\u00F6arna-tid
+Pacific/Guadalcanal.generic.long=Salomon\u00F6arna-tid
+Pacific/Guam.generic.long=Chamorros tid
+Pacific/Honolulu.generic.long=Hawaiiansk tid
+Pacific/Johnston.generic.long=Hawaiiansk tid
+Pacific/Kiritimati.generic.long=Line Islands-tid
+Pacific/Kosrae.generic.long=Kosrae-tid
+Pacific/Kwajalein.generic.long=Marshall\u00F6arna-tid
+Pacific/Majuro.generic.long=Marshall\u00F6arna-tid
+Pacific/Marquesas.generic.long=Marquesas\u00F6arna-tid
+Pacific/Midway.generic.long=Samoansk tid
+Pacific/Nauru.generic.long=Nauruansk tid
+Pacific/Niue.generic.long=Niue-tid
+Pacific/Norfolk.generic.long=Norfolk-tid
+Pacific/Noumea.generic.long=Nya Kaledonien-tid
+Pacific/Pago_Pago.generic.long=Samoansk tid
+Pacific/Palau.generic.long=Palau-tid
+Pacific/Pitcairn.generic.long=Pitcairn-tid
+Pacific/Pohnpei.daylight.long=Pohnpei, sommartid
+Pacific/Pohnpei.generic.long=Ponape-tid
+Pacific/Pohnpei.standard.long=Pohnpei, normaltid
+Pacific/Ponape.daylight.long=Pohnpei, sommartid
+Pacific/Ponape.generic.long=Ponape-tid
+Pacific/Ponape.standard.long=Pohnpei, normaltid
+Pacific/Port_Moresby.generic.long=Papua Nya Guinea-tid
+Pacific/Rarotonga.generic.long=Cook\u00F6arna-tid
+Pacific/Saipan.generic.long=Chamorros tid
+Pacific/Samoa.generic.long=Samoansk tid
+Pacific/Tahiti.generic.long=Tahiti-tid
+Pacific/Tarawa.generic.long=Gilbert\u00F6arna-tid
+Pacific/Tongatapu.generic.long=Tonga-tid
+Pacific/Truk.daylight.long=Chuuk, sommartid
+Pacific/Truk.generic.long=Chuuk, normaltid
+Pacific/Truk.standard.long=Chuuk, normaltid
+Pacific/Wake.generic.long=Wake-tid
+Pacific/Wallis.generic.long=Wallis- och Futuna\u00F6arna-tid
+Pacific/Yap.daylight.long=Chuuk, sommartid
+Pacific/Yap.generic.long=Chuuk, normaltid
+Pacific/Yap.standard.long=Chuuk, normaltid
+Poland.generic.long=Centraleuropeisk tid
+Portugal.generic.long=V\u00E4steuropeisk tid
+ROK.generic.long=Koreansk tid
+SST.generic.long=Salomon\u00F6arna-tid
+Singapore.generic.long=Singapore-tid
+SystemV/AST4.generic.long=Atlantisk tid
+SystemV/AST4ADT.generic.long=Atlantisk tid
+SystemV/CST6.generic.long=Central tid
+SystemV/CST6CDT.generic.long=Central tid
+SystemV/EST5.generic.long=\u00D6stlig tid
+SystemV/EST5EDT.generic.long=\u00D6stlig tid
+SystemV/HST10.generic.long=Hawaiiansk tid
+SystemV/MST7.generic.long=Mountain-tid
+SystemV/MST7MDT.generic.long=Mountain-tid
+SystemV/PST8.generic.long=Stillahavet
+SystemV/PST8PDT.generic.long=Stillahavet
+SystemV/YST9.generic.long=Alaskisk tid
+SystemV/YST9YDT.generic.long=Alaskisk tid
+Turkey.generic.long=\u00D6steuropeisk tid
+UCT.generic.long=UTC (koordinerad v\u00E4rldstid)
+US/Alaska.generic.long=Alaskisk tid
+US/Aleutian.generic.long=Hawaiiansk-aleutisk tid
+US/Arizona.generic.long=Mountain-tid
+US/Central.generic.long=Central tid
+US/East-Indiana.generic.long=\u00D6stlig tid
+US/Eastern.generic.long=\u00D6stlig tid
+US/Hawaii.generic.long=Hawaiiansk tid
+US/Indiana-Starke.generic.long=Central tid
+US/Michigan.generic.long=\u00D6stlig tid
+US/Mountain.generic.long=Mountain-tid
+US/Pacific-New.generic.long=Stillahavet
+US/Pacific.generic.long=Stillahavet
+US/Samoa.generic.long=Samoansk tid
+UTC.generic.long=UTC (koordinerad v\u00E4rldstid)
+Universal.generic.long=UTC (koordinerad v\u00E4rldstid)
+VST.generic.long=Indokinesisk tid
+W-SU.generic.long=Moskvas tid
+WET.generic.long=V\u00e4steuropeisk tid
+Zulu.generic.long=UTC (koordinerad v\u00E4rldstid)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)
+ACT.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)
+ACT.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)
+AET.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+AET.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+AET.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+AGT.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+ART.generic.long=\u4E1C\u6B27\u65F6\u95F4
+AST.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+Africa/Abidjan.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Accra.generic.long=\u52A0\u7EB3\u65F6\u95F4
+Africa/Addis_Ababa.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Algiers.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Africa/Asmara.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Asmera.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Bamako.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Bangui.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Banjul.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Bissau.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Blantyre.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Brazzaville.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Bujumbura.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Cairo.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Africa/Casablanca.generic.long=\u897F\u6B27\u65F6\u95F4
+Africa/Ceuta.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Africa/Conakry.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Dakar.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Dar_es_Salaam.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Djibouti.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Douala.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/El_Aaiun.generic.long=\u897F\u6B27\u65F6\u95F4
+Africa/Freetown.generic.long=\u585E\u62C9\u91CC\u6602\u65F6\u95F4
+Africa/Gaborone.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Harare.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Johannesburg.generic.long=\u5357\u975E\u65F6\u95F4
+Africa/Juba.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Kampala.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Khartoum.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Kigali.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Kinshasa.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Lagos.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Libreville.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Lome.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Luanda.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Lubumbashi.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Lusaka.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Malabo.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Maputo.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Maseru.generic.long=\u5357\u975E\u65F6\u95F4
+Africa/Mbabane.generic.long=\u5357\u975E\u65F6\u95F4
+Africa/Mogadishu.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Monrovia.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Nairobi.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Ndjamena.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Niamey.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Nouakchott.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Ouagadougou.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Porto-Novo.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Sao_Tome.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Timbuktu.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Tripoli.generic.long=\u4e1c\u6b27\u65f6\u95f4
+Africa/Tunis.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Africa/Windhoek.generic.long=\u897F\u975E\u65F6\u95F4
+America/Adak.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4
+America/Anchorage.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Anguilla.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Antigua.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Araguaina.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Argentina/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Catamarca.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/ComodRivadavia.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Cordoba.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Jujuy.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/La_Rioja.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Mendoza.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Rio_Gallegos.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Salta.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/San_Juan.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/San_Luis.generic.long=\u963f\u6839\u5ef7\u65f6\u95f4
+America/Argentina/Tucuman.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Ushuaia.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Aruba.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Asuncion.generic.long=\u5DF4\u62C9\u572D\u65F6\u95F4
+America/Atikokan.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Atka.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4
+America/Bahia.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Bahia_Banderas.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Barbados.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Belem.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Belize.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Boa_Vista.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Bogota.generic.long=\u54E5\u4F26\u6BD4\u4E9A\u65F6\u95F4
+America/Boise.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Cambridge_Bay.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Campo_Grande.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Cancun.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Caracas.generic.long=\u59D4\u5185\u745E\u62C9\u65F6\u95F4
+America/Catamarca.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Cayenne.generic.long=\u6CD5\u5C5E\u572D\u4E9A\u90A3\u65F6\u95F4
+America/Cayman.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Chicago.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Chihuahua.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Coral_Harbour.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Cordoba.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Costa_Rica.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Creston.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Cuiaba.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Curacao.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Danmarkshavn.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+America/Dawson.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Dawson_Creek.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Denver.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Detroit.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Dominica.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Edmonton.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Eirunepe.generic.long=Acre \u65f6\u95f4
+America/El_Salvador.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Fort_Wayne.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Fortaleza.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Godthab.generic.long=\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4
+America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Grand_Turk.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Grenada.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Guatemala.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Guayaquil.generic.long=\u5384\u74DC\u591A\u5C14\u65F6\u95F4
+America/Guyana.generic.long=\u572D\u4E9A\u90A3\u65F6\u95F4
+America/Halifax.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Havana.generic.long=\u53E4\u5DF4\u65F6\u95F4
+America/Hermosillo.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Indiana/Indianapolis.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Knox.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Indiana/Marengo.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Petersburg.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Tell_City.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Indiana/Vevay.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Vincennes.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Winamac.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indianapolis.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Inuvik.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Iqaluit.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Jamaica.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Jujuy.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Juneau.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Kentucky/Louisville.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Kentucky/Monticello.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Knox_IN.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/La_Paz.generic.long=\u73BB\u5229\u7EF4\u4E9A\u65F6\u95F4
+America/Lima.generic.long=\u79D8\u9C81\u65F6\u95F4
+America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Louisville.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Maceio.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Managua.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Manaus.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Marigot.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Martinique.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Matamoros.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Mazatlan.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Mendoza.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Menominee.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Merida.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Metlakatla.daylight.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u590F\u4EE4\u65F6
+America/Metlakatla.generic.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u65F6\u95F4
+America/Metlakatla.standard.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6807\u51C6\u65F6\u95F4
+America/Mexico_City.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Miquelon.generic.long=\u76AE\u57C3\u5C14\u548C\u5BC6\u514B\u9686\u5C9B\u65F6\u95F4
+America/Moncton.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Monterrey.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Montevideo.generic.long=\u4E4C\u62C9\u572D\u65F6\u95F4
+America/Montreal.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Montserrat.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Nassau.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/New_York.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Nipigon.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Nome.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Noronha.generic.long=\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4
+America/North_Dakota/Beulah.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/North_Dakota/Center.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/North_Dakota/New_Salem.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Ojinaga.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Panama.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Pangnirtung.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Paramaribo.generic.long=\u82CF\u5229\u5357\u65F6\u95F4
+America/Phoenix.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Port-au-Prince.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Porto_Acre.generic.long=Acre \u65f6\u95f4
+America/Porto_Velho.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Rainy_River.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Rankin_Inlet.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Recife.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Regina.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Resolute.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Rio_Branco.generic.long=Acre \u65f6\u95f4
+America/Rosario.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Santarem.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Santiago.generic.long=\u667A\u5229\u65F6\u95F4
+America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Sao_Paulo.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Scoresbysund.generic.long=\u4E1C\u683C\u6797\u5C9B\u65F6\u95F4
+America/Shiprock.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Sitka.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Johns.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4
+America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Swift_Current.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Tegucigalpa.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Thule.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Thunder_Bay.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Toronto.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Tortola.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Virgin.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Winnipeg.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Yakutat.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Yellowknife.generic.long=\u5C71\u5730\u65F6\u95F4
+Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Antarctica/Casey.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Antarctica/Casey.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Antarctica/Davis.generic.long=\u6234\u7EF4\u65AF\u65F6\u95F4
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville \u65F6\u95F4
+Antarctica/Macquarie.daylight.long=\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6
+Antarctica/Macquarie.generic.long=\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4
+Antarctica/Macquarie.standard.long=\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4
+Antarctica/Mawson.generic.long=\u83AB\u68EE\u65F6\u95F4
+Antarctica/McMurdo.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Antarctica/Palmer.generic.long=\u667A\u5229\u65F6\u95F4
+Antarctica/Rothera.generic.long=\u7F57\u745F\u62C9\u65F6\u95F4
+Antarctica/South_Pole.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Antarctica/Syowa.generic.long=Syowa \u65F6\u95F4
+Antarctica/Vostok.generic.long=\u83AB\u65AF\u6258\u514B\u65F6\u95F4
+Arctic/Longyearbyen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Asia/Aden.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Almaty.generic.long=Alma-Ata \u65F6\u95F4
+Asia/Amman.generic.long=\u963f\u62c9\u4f2f\u534a\u5c9b\u65f6\u95f4
+Asia/Anadyr.generic.long=\u963F\u90A3\u5E95\u6CB3\u65F6\u95F4
+Asia/Aqtau.generic.long=Aqtau \u65F6\u95F4
+Asia/Aqtobe.generic.long=Aqtobe \u65F6\u95F4
+Asia/Ashgabat.generic.long=\u571F\u5E93\u66FC\u65F6\u95F4
+Asia/Ashkhabad.generic.long=\u571F\u5E93\u66FC\u65F6\u95F4
+Asia/Baghdad.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Bahrain.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Baku.generic.long=\u4E9A\u585E\u62DC\u7136\u65F6\u95F4
+Asia/Bangkok.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Beirut.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Bishkek.generic.long=\u5409\u5C14\u5409\u65AF\u65AF\u5766\u65F6\u95F4
+Asia/Brunei.generic.long=\u6587\u83B1\u65F6\u95F4
+Asia/Calcutta.generic.long=\u5370\u5EA6\u65F6\u95F4
+Asia/Choibalsan.generic.long=Choibalsan \u65F6\u95F4
+Asia/Chongqing.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Chungking.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Colombo.generic.long=\u5370\u5EA6\u65F6\u95F4
+Asia/Dacca.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4
+Asia/Damascus.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Dhaka.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4
+Asia/Dili.generic.long=\u4E1C\u5E1D\u6C76\u65F6\u95F4
+Asia/Dubai.generic.long=\u6D77\u6E7E\u65F6\u95F4
+Asia/Dushanbe.generic.long=\u5854\u5409\u514B\u65AF\u5766\u65F6\u95F4
+Asia/Gaza.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Harbin.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Hebron.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Ho_Chi_Minh.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Hong_Kong.generic.long=\u9999\u6E2F\u65F6\u95F4
+Asia/Hovd.generic.long=\u79D1\u5E03\u591A\u65F6\u95F4
+Asia/Irkutsk.generic.long=\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4
+Asia/Istanbul.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Jakarta.generic.long=\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Jayapura.generic.long=\u4E1C\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Jerusalem.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4
+Asia/Kabul.generic.long=\u963F\u5BCC\u6C57\u65F6\u95F4
+Asia/Kamchatka.generic.long=\u5F7C\u5F97\u7F57\u5DF4\u752B\u6D1B\u592B\u65AF\u514B\u65F6\u95F4
+Asia/Karachi.generic.long=\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4
+Asia/Kashgar.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Kathmandu.generic.long=\u5C3C\u6CCA\u5C14\u65F6\u95F4
+Asia/Katmandu.generic.long=\u5C3C\u6CCA\u5C14\u65F6\u95F4
+Asia/Khandyga.daylight.long=\u6C49\u5FB7\u52A0\u590F\u4EE4\u65F6
+Asia/Khandyga.generic.long=\u6C49\u5FB7\u52A0\u65F6\u95F4
+Asia/Khandyga.standard.long=\u6C49\u5FB7\u52A0\u65F6\u95F4
+Asia/Kolkata.generic.long=\u5370\u5EA6\u65F6\u95F4
+Asia/Krasnoyarsk.generic.long=\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4
+Asia/Kuala_Lumpur.generic.long=\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4
+Asia/Kuching.generic.long=\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4
+Asia/Kuwait.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Macao.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Macau.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Magadan.generic.long=Magadan \u65F6\u95F4
+Asia/Makassar.generic.long=\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Manila.generic.long=\u83F2\u5F8B\u5BBE\u65F6\u95F4
+Asia/Muscat.generic.long=\u6D77\u6E7E\u65F6\u95F4
+Asia/Nicosia.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Novokuznetsk.generic.long=Novosibirsk \u65F6\u95F4
+Asia/Novosibirsk.generic.long=Novosibirsk \u65F6\u95F4
+Asia/Omsk.generic.long=\u9102\u6728\u65AF\u514B\u65F6\u95F4
+Asia/Oral.generic.long=Oral \u65F6\u95F4
+Asia/Phnom_Penh.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Pontianak.generic.long=\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Pyongyang.generic.long=\u97E9\u56FD\u65F6\u95F4
+Asia/Qatar.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Qyzylorda.generic.long=Qyzylorda \u65F6\u95F4
+Asia/Rangoon.generic.long=\u7F05\u7538\u65F6\u95F4
+Asia/Saigon.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Sakhalin.generic.long=\u5E93\u9875\u5C9B\u65F6\u95F4
+Asia/Samarkand.generic.long=\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4
+Asia/Seoul.generic.long=\u97E9\u56FD\u65F6\u95F4
+Asia/Shanghai.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Singapore.generic.long=\u65B0\u52A0\u5761\u65F6\u95F4
+Asia/Taipei.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Tashkent.generic.long=\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4
+Asia/Tbilisi.generic.long=\u4E54\u6CBB\u4E9A\u65F6\u95F4
+Asia/Tehran.generic.long=\u4F0A\u6717\u65F6\u95F4
+Asia/Tel_Aviv.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4
+Asia/Thimbu.generic.long=\u4E0D\u4E39\u65F6\u95F4
+Asia/Thimphu.generic.long=\u4E0D\u4E39\u65F6\u95F4
+Asia/Tokyo.generic.long=\u65E5\u672C\u65F6\u95F4
+Asia/Ujung_Pandang.generic.long=\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Ulaanbaatar.generic.long=\u5E93\u4F26\u65F6\u95F4
+Asia/Ulan_Bator.generic.long=\u5E93\u4F26\u65F6\u95F4
+Asia/Urumqi.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Ust-Nera.daylight.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u590F\u4EE4\u65F6
+Asia/Ust-Nera.generic.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4
+Asia/Ust-Nera.standard.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4
+Asia/Vientiane.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Vladivostok.generic.long=\u6D77\u53C2\u5D34\u65F6\u95F4
+Asia/Yakutsk.generic.long=\u4E9A\u5E93\u6B21\u514B\u65F6\u95F4
+Asia/Yekaterinburg.generic.long=Yekaterinburg \u65F6\u95F4
+Asia/Yerevan.generic.long=\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4
+Atlantic/Azores.generic.long=\u4E9A\u901F\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+Atlantic/Canary.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Cape_Verde.generic.long=\u4F5B\u5FB7\u89D2\u65F6\u95F4
+Atlantic/Faeroe.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Faroe.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Jan_Mayen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Atlantic/Madeira.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Reykjavik.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Atlantic/South_Georgia.generic.long=\u5357\u4E54\u6CBB\u4E9A\u5C9B\u65F6\u95F4
+Atlantic/St_Helena.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Atlantic/Stanley.generic.long=\u798F\u514B\u5170\u7FA4\u5C9B\u65F6\u95F4
+Australia/ACT.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/ACT.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/ACT.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Adelaide.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Adelaide.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Adelaide.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Brisbane.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)
+Australia/Brisbane.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Brisbane.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Broken_Hill.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Broken_Hill.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Canberra.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Canberra.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Canberra.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Currie.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Currie.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Currie.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Darwin.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)
+Australia/Darwin.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)
+Australia/Darwin.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)
+Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Hobart.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Hobart.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Hobart.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/LHI.generic.long=\u8C6A\u516C\u65F6\u95F4
+Australia/Lindeman.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)
+Australia/Lindeman.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Lindeman.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Lord_Howe.generic.long=\u8C6A\u516C\u65F6\u95F4
+Australia/Melbourne.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Melbourne.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Melbourne.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/NSW.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/NSW.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/NSW.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/North.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)
+Australia/North.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)
+Australia/North.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)
+Australia/Perth.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Perth.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Perth.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Queensland.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)
+Australia/Queensland.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Queensland.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/South.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/South.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/South.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Sydney.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Sydney.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Sydney.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Tasmania.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Tasmania.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Tasmania.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Victoria.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Victoria.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Victoria.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/West.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Australia/West.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/West.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Yancowinna.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Yancowinna.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Yancowinna.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+BET.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+BST.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4
+Brazil/Acre.generic.long=Acre \u65f6\u95f4
+Brazil/DeNoronha.generic.long=\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4
+Brazil/East.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+Brazil/West.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+CAT.generic.long=\u4E2D\u975E\u65F6\u95F4
+CET.generic.long=\u4e2d\u6b27\u65f6\u95f4
+CNT.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4
+CST.generic.long=\u4E2D\u90E8\u65F6\u95F4
+CST6CDT.generic.long=\u4e2d\u90e8\u65f6\u95f4
+CTT.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+Canada/Central.generic.long=\u4E2D\u90E8\u65F6\u95F4
+Canada/East-Saskatchewan.generic.long=\u4E2D\u90E8\u65F6\u95F4
+Canada/Eastern.generic.long=\u4E1C\u90E8\u65F6\u95F4
+Canada/Mountain.generic.long=\u5C71\u5730\u65F6\u95F4
+Canada/Newfoundland.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4
+Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+Canada/Saskatchewan.generic.long=\u4E2D\u90E8\u65F6\u95F4
+Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+Chile/Continental.generic.long=\u667A\u5229\u65F6\u95F4
+Chile/EasterIsland.generic.long=\u590D\u6D3B\u5C9B\u65F6\u95F4
+Cuba.generic.long=\u53E4\u5DF4\u65F6\u95F4
+EAT.generic.long=\u4E1C\u975E\u65F6\u95F4
+ECT.generic.long=\u4E2D\u6B27\u65F6\u95F4
+EET.generic.long=\u4e1c\u6b27\u65f6\u95f4
+EST.generic.long=\u4e1c\u90e8\u65f6\u95f4
+EST5EDT.generic.long=\u4e1c\u90e8\u65f6\u95f4
+Egypt.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Eire.generic.long=\u7231\u5C14\u5170\u65F6\u95F4
+Etc/Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Etc/UCT.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Etc/UTC.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Etc/Universal.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Etc/Zulu.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Europe/Amsterdam.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Andorra.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Athens.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Belfast.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Belgrade.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Berlin.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Bratislava.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Brussels.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Bucharest.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Budapest.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Busingen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Chisinau.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Copenhagen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Dublin.generic.long=\u7231\u5C14\u5170\u65F6\u95F4
+Europe/Gibraltar.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Guernsey.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Helsinki.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Isle_of_Man.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Istanbul.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Jersey.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Kaliningrad.daylight.long=\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6
+Europe/Kaliningrad.generic.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Kaliningrad.standard.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Kiev.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Lisbon.generic.long=\u897F\u6B27\u65F6\u95F4
+Europe/Ljubljana.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/London.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Luxembourg.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Madrid.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Malta.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Mariehamn.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Minsk.daylight.long=\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6
+Europe/Minsk.generic.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Minsk.standard.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Monaco.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Moscow.generic.long=\u83AB\u65AF\u79D1\u65F6\u95F4
+Europe/Nicosia.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Oslo.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Paris.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Podgorica.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Prague.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Riga.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Rome.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Samara.generic.long=\u6C99\u9A6C\u62C9\u65F6\u95F4
+Europe/San_Marino.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Sarajevo.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Simferopol.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Skopje.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Sofia.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Stockholm.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Tallinn.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Tirane.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Tiraspol.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Uzhgorod.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Vaduz.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Vatican.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Vienna.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Vilnius.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Volgograd.generic.long=\u4F0F\u5C14\u52A0\u683C\u52D2\u65F6\u95F4
+Europe/Warsaw.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Zagreb.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Zaporozhye.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Zurich.generic.long=\u4E2D\u6B27\u65F6\u95F4
+GB-Eire.generic.long=\u82F1\u56FD\u65F6\u95F4
+GB.generic.long=\u82F1\u56FD\u65F6\u95F4
+GMT.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+HST.generic.long=\u590f\u5a01\u5937\u65f6\u95f4
+Hongkong.generic.long=\u9999\u6E2F\u65F6\u95F4
+IET.generic.long=\u4E1C\u90E8\u65F6\u95F4
+IST.generic.long=\u5370\u5EA6\u65F6\u95F4
+Iceland.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Indian/Antananarivo.generic.long=\u4E1C\u975E\u65F6\u95F4
+Indian/Chagos.generic.long=\u5370\u5EA6\u6D0B\u5730\u5E26\u65F6\u95F4
+Indian/Christmas.generic.long=\u5723\u8BDE\u5C9B\u65F6\u95F4
+Indian/Cocos.generic.long=\u53EF\u53EF\u65AF\u7FA4\u5C9B\u65F6\u95F4
+Indian/Comoro.generic.long=\u4E1C\u975E\u65F6\u95F4
+Indian/Kerguelen.generic.long=\u6CD5\u5C5E\u5357\u6781\u65F6\u95F4
+Indian/Mahe.generic.long=\u585E\u5E2D\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Indian/Maldives.generic.long=\u9A6C\u5C14\u4EE3\u592B\u65F6\u95F4
+Indian/Mauritius.generic.long=\u6469\u91CC\u897F\u65AF\u65F6\u95F4
+Indian/Mayotte.generic.long=\u4E1C\u975E\u65F6\u95F4
+Indian/Reunion.generic.long=\u7559\u5C3C\u65FA\u5C9B\u65F6\u95F4
+Iran.generic.long=\u4F0A\u6717\u65F6\u95F4
+Israel.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4
+JST.generic.long=\u65E5\u672C\u65F6\u95F4
+Jamaica.generic.long=\u4E1C\u90E8\u65F6\u95F4
+Japan.generic.long=\u65E5\u672C\u65F6\u95F4
+Kwajalein.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Libya.generic.long=\u4e1c\u6b27\u65f6\u95f4
+MET.generic.long=MET
+MIT.generic.long=\u897F\u8428\u6469\u4E9A\u65F6\u95F4
+MST.generic.long=\u5c71\u5730\u65f6\u95f4
+MST7MDT.generic.long=\u5c71\u5730\u65f6\u95f4
+Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+Mexico/BajaSur.generic.long=\u5C71\u5730\u65F6\u95F4
+Mexico/General.generic.long=\u4E2D\u90E8\u65F6\u95F4
+NET.generic.long=\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4
+NST.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+NZ-CHAT.generic.long=\u67E5\u5854\u59C6\u65F6\u95F4
+NZ.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Navajo.generic.long=\u5C71\u5730\u65F6\u95F4
+PLT.generic.long=\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4
+PNT.generic.long=\u5C71\u5730\u65F6\u95F4
+PRC.generic.long=\u4E2D\u56FD\u65F6\u95F4
+PRT.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+PST.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+PST8PDT.generic.long=\u592a\u5e73\u6d0b\u65f6\u95f4
+Pacific/Apia.generic.long=\u897F\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Auckland.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Pacific/Chatham.generic.long=\u67E5\u5854\u59C6\u65F6\u95F4
+Pacific/Chuuk.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6
+Pacific/Chuuk.generic.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Chuuk.standard.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Easter.generic.long=\u590D\u6D3B\u5C9B\u65F6\u95F4
+Pacific/Efate.generic.long=\u74E6\u5974\u963F\u56FE\u65F6\u95F4
+Pacific/Enderbury.generic.long=\u83F2\u5C3C\u514B\u65AF\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Fakaofo.generic.long=\u6258\u514B\u52B3\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Fiji.generic.long=\u6590\u6D4E\u65F6\u95F4
+Pacific/Funafuti.generic.long=\u5410\u9C81\u74E6\u65F6\u95F4
+Pacific/Galapagos.generic.long=\u52A0\u62C9\u5DF4\u54E5\u65F6\u95F4
+Pacific/Gambier.generic.long=\u5188\u6BD4\u4E9A\u65F6\u95F4
+Pacific/Guadalcanal.generic.long=\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Guam.generic.long=\u67E5\u6469\u6D1B\u65F6\u95F4
+Pacific/Honolulu.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+Pacific/Johnston.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+Pacific/Kiritimati.generic.long=Line \u5C9B\u65F6\u95F4
+Pacific/Kosrae.generic.long=Kosrae \u65F6\u95F4
+Pacific/Kwajalein.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Majuro.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Marquesas.generic.long=\u9A6C\u514B\u8428\u65AF\u65F6\u95F4
+Pacific/Midway.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Nauru.generic.long=\u8BFA\u9C81\u65F6\u95F4
+Pacific/Niue.generic.long=\u7EBD\u5A01\u5C9B\u65F6\u95F4
+Pacific/Norfolk.generic.long=\u8BFA\u798F\u514B\u65F6\u95F4
+Pacific/Noumea.generic.long=\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9A\u65F6\u95F4
+Pacific/Pago_Pago.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Palau.generic.long=\u5E1B\u7409\u65F6\u95F4
+Pacific/Pitcairn.generic.long=\u76AE\u7279\u51EF\u6069\u65F6\u95F4
+Pacific/Pohnpei.daylight.long=\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6
+Pacific/Pohnpei.generic.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Pohnpei.standard.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Ponape.daylight.long=\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6
+Pacific/Ponape.generic.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Ponape.standard.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Port_Moresby.generic.long=\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u65F6\u95F4
+Pacific/Rarotonga.generic.long=\u5E93\u514B\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Saipan.generic.long=\u67E5\u6469\u6D1B\u65F6\u95F4
+Pacific/Samoa.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Tahiti.generic.long=\u5927\u6EAA\u5730\u5C9B\u65F6\u95F4
+Pacific/Tarawa.generic.long=\u5409\u4F2F\u7279\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Tongatapu.generic.long=\u4E1C\u52A0\u65F6\u95F4
+Pacific/Truk.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6
+Pacific/Truk.generic.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Truk.standard.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Wake.generic.long=\u5A01\u514B\u65F6\u95F4
+Pacific/Wallis.generic.long=\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7EB3\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Yap.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6
+Pacific/Yap.generic.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Yap.standard.long=\u4E18\u514B\u65F6\u95F4
+Poland.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Portugal.generic.long=\u897F\u6B27\u65F6\u95F4
+ROK.generic.long=\u97E9\u56FD\u65F6\u95F4
+SST.generic.long=\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4
+Singapore.generic.long=\u65B0\u52A0\u5761\u65F6\u95F4
+SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+SystemV/CST6.generic.long=\u4E2D\u90E8\u65F6\u95F4
+SystemV/CST6CDT.generic.long=\u4E2D\u90E8\u65F6\u95F4
+SystemV/EST5.generic.long=\u4E1C\u90E8\u65F6\u95F4
+SystemV/EST5EDT.generic.long=\u4E1C\u90E8\u65F6\u95F4
+SystemV/HST10.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+SystemV/MST7.generic.long=\u5C71\u5730\u65F6\u95F4
+SystemV/MST7MDT.generic.long=\u5C71\u5730\u65F6\u95F4
+SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+SystemV/YST9.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+SystemV/YST9YDT.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+Turkey.generic.long=\u4E1C\u6B27\u65F6\u95F4
+UCT.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+US/Alaska.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+US/Aleutian.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4
+US/Arizona.generic.long=\u5C71\u5730\u65F6\u95F4
+US/Central.generic.long=\u4E2D\u90E8\u65F6\u95F4
+US/East-Indiana.generic.long=\u4E1C\u90E8\u65F6\u95F4
+US/Eastern.generic.long=\u4E1C\u90E8\u65F6\u95F4
+US/Hawaii.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+US/Indiana-Starke.generic.long=\u4E2D\u90E8\u65F6\u95F4
+US/Michigan.generic.long=\u4E1C\u90E8\u65F6\u95F4
+US/Mountain.generic.long=\u5C71\u5730\u65F6\u95F4
+US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+US/Pacific.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+US/Samoa.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+UTC.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Universal.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+VST.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+W-SU.generic.long=\u83AB\u65AF\u79D1\u65F6\u95F4
+WET.generic.long=\u897f\u6b27\u65f6\u95f4
+Zulu.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,651 @@
+ACT.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+ACT.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)
+ACT.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+AET.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+AET.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+AET.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+AGT.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+ART.generic.long=\u6771\u6B50\u6642\u9593
+AST.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+Africa/Abidjan.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Accra.generic.long=\u8FE6\u7D0D\u6642\u9593
+Africa/Addis_Ababa.generic.long=\u6771\u975E\u6642\u9593
+Africa/Algiers.generic.long=\u4E2D\u6B50\u6642\u9593
+Africa/Asmara.generic.long=\u6771\u975E\u6642\u9593
+Africa/Asmera.generic.long=\u6771\u975E\u6642\u9593
+Africa/Bamako.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Bangui.generic.long=\u897F\u975E\u6642\u9593
+Africa/Banjul.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Bissau.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Blantyre.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Brazzaville.generic.long=\u897F\u975E\u6642\u9593
+Africa/Bujumbura.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Cairo.generic.long=\u6771\u6B50\u6642\u9593
+Africa/Casablanca.generic.long=\u897F\u6B50\u6642\u9593
+Africa/Ceuta.generic.long=\u4E2D\u6B50\u6642\u9593
+Africa/Conakry.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Dakar.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Dar_es_Salaam.generic.long=\u6771\u975E\u6642\u9593
+Africa/Djibouti.generic.long=\u6771\u975E\u6642\u9593
+Africa/Douala.generic.long=\u897F\u975E\u6642\u9593
+Africa/El_Aaiun.generic.long=\u897F\u6B50\u6642\u9593
+Africa/Freetown.generic.long=\u7345\u5B50\u5C71\u6642\u9593
+Africa/Gaborone.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Harare.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Johannesburg.generic.long=\u5357\u975E\u6642\u9593
+Africa/Juba.generic.long=\u6771\u975E\u6642\u9593
+Africa/Kampala.generic.long=\u6771\u975E\u6642\u9593
+Africa/Khartoum.generic.long=\u6771\u975E\u6642\u9593
+Africa/Kigali.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Kinshasa.generic.long=\u897F\u975E\u6642\u9593
+Africa/Lagos.generic.long=\u897F\u975E\u6642\u9593
+Africa/Libreville.generic.long=\u897F\u975E\u6642\u9593
+Africa/Lome.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Luanda.generic.long=\u897F\u975E\u6642\u9593
+Africa/Lubumbashi.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Lusaka.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Malabo.generic.long=\u897F\u975E\u6642\u9593
+Africa/Maputo.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Maseru.generic.long=\u5357\u975E\u6642\u9593
+Africa/Mbabane.generic.long=\u5357\u975E\u6642\u9593
+Africa/Mogadishu.generic.long=\u6771\u975E\u6642\u9593
+Africa/Monrovia.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Nairobi.generic.long=\u6771\u975E\u6642\u9593
+Africa/Ndjamena.generic.long=\u897F\u975E\u6642\u9593
+Africa/Niamey.generic.long=\u897F\u975E\u6642\u9593
+Africa/Nouakchott.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Ouagadougou.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Porto-Novo.generic.long=\u897F\u975E\u6642\u9593
+Africa/Sao_Tome.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Timbuktu.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Tripoli.generic.long=\u6771\u6b50\u6642\u9593
+Africa/Tunis.generic.long=\u4E2D\u6B50\u6642\u9593
+Africa/Windhoek.generic.long=\u897F\u975E\u6642\u9593
+America/Adak.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593
+America/Anchorage.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Anguilla.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Antigua.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Araguaina.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Argentina/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Catamarca.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/ComodRivadavia.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Cordoba.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Jujuy.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/La_Rioja.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Mendoza.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Rio_Gallegos.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Salta.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/San_Juan.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/San_Luis.generic.long=\u963f\u6839\u5ef7\u6642\u9593
+America/Argentina/Tucuman.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Ushuaia.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Aruba.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Asuncion.generic.long=\u5DF4\u62C9\u572D\u6642\u9593
+America/Atikokan.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Atka.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593
+America/Bahia.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Bahia_Banderas.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Barbados.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Belem.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Belize.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Boa_Vista.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Bogota.generic.long=\u54E5\u502B\u6BD4\u4E9E\u6642\u9593
+America/Boise.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Cambridge_Bay.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Campo_Grande.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Cancun.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Caracas.generic.long=\u59D4\u5167\u745E\u62C9\u6642\u9593
+America/Catamarca.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Cayenne.generic.long=\u6CD5\u5C6C\u572D\u4E9E\u90A3\u6642\u9593
+America/Cayman.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Chicago.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Chihuahua.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Coral_Harbour.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Cordoba.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Costa_Rica.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Creston.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Cuiaba.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Curacao.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Danmarkshavn.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+America/Dawson.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Dawson_Creek.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Denver.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Detroit.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Dominica.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Edmonton.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Eirunepe.generic.long=Acre \u6642\u9593
+America/El_Salvador.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Fort_Wayne.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Fortaleza.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Godthab.generic.long=\u897F\u683C\u9675\u862D\u6642\u9593
+America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Grand_Turk.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Grenada.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Guatemala.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Guayaquil.generic.long=\u5384\u74DC\u591A\u723E\u6642\u9593
+America/Guyana.generic.long=\u84CB\u4E9E\u90A3\u6642\u9593
+America/Halifax.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Havana.generic.long=\u53E4\u5DF4\u6642\u9593
+America/Hermosillo.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Indiana/Indianapolis.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Knox.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Indiana/Marengo.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Petersburg.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Tell_City.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Indiana/Vevay.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Vincennes.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Winamac.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indianapolis.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Inuvik.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Iqaluit.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Jamaica.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Jujuy.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Juneau.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Kentucky/Louisville.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Kentucky/Monticello.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Knox_IN.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/La_Paz.generic.long=\u73BB\u5229\u7DAD\u4E9E\u6642\u9593
+America/Lima.generic.long=\u7955\u9B6F\u6642\u9593
+America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Louisville.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Maceio.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Managua.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Manaus.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Marigot.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Martinique.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Matamoros.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Mazatlan.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Mendoza.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Menominee.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Merida.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Metlakatla.daylight.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u65E5\u5149\u7BC0\u7D04\u6642\u9593
+America/Metlakatla.generic.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6642\u9593
+America/Metlakatla.standard.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6A19\u6E96\u6642\u9593
+America/Mexico_City.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Miquelon.generic.long=\u8056\u5F7C\u5FB7\u8207\u5BC6\u555F\u5D19\u6642\u9593
+America/Moncton.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Monterrey.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Montevideo.generic.long=\u70CF\u62C9\u572D\u6642\u9593
+America/Montreal.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Montserrat.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Nassau.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/New_York.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Nipigon.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Nome.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Noronha.generic.long=\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593
+America/North_Dakota/Beulah.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/North_Dakota/Center.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/North_Dakota/New_Salem.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Ojinaga.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Panama.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Pangnirtung.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Paramaribo.generic.long=\u8607\u5229\u5357\u6642\u9593
+America/Phoenix.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Port-au-Prince.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Porto_Acre.generic.long=Acre \u6642\u9593
+America/Porto_Velho.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Rainy_River.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Rankin_Inlet.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Recife.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Regina.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Resolute.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Rio_Branco.generic.long=Acre \u6642\u9593
+America/Rosario.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Santarem.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Santiago.generic.long=\u667A\u5229\u6642\u9593
+America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Sao_Paulo.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Scoresbysund.generic.long=\u6771\u683C\u9675\u862D\u6642\u9593
+America/Shiprock.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Sitka.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Johns.generic.long=\u7D10\u82AC\u862D\u6642\u9593
+America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Swift_Current.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Tegucigalpa.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Thule.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Thunder_Bay.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Toronto.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Tortola.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Virgin.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Winnipeg.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Yakutat.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Yellowknife.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Antarctica/Casey.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Antarctica/Casey.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Antarctica/Davis.generic.long=\u81FA\u7DAD\u65AF\u6642\u9593
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville \u6642\u9593
+Antarctica/Macquarie.daylight.long=\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593
+Antarctica/Macquarie.generic.long=\u9EA5\u5938\u5229\u5CF6\u6642\u9593
+Antarctica/Macquarie.standard.long=\u9EA5\u5938\u5229\u5CF6\u6642\u9593
+Antarctica/Mawson.generic.long=\u83AB\u68EE\u6642\u9593
+Antarctica/McMurdo.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Antarctica/Palmer.generic.long=\u667A\u5229\u6642\u9593
+Antarctica/Rothera.generic.long=\u7F85\u897F\u62C9\u6642\u9593
+Antarctica/South_Pole.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Antarctica/Syowa.generic.long=\u5915\u6B50\u74E6 (Syowa) \u6642\u9593
+Antarctica/Vostok.generic.long=\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593
+Arctic/Longyearbyen.generic.long=\u4E2D\u6B50\u6642\u9593
+Asia/Aden.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Almaty.generic.long=\u963F\u62C9\u6728\u5716\u6642\u9593
+Asia/Amman.generic.long=\u963f\u62c9\u4f2f\u6642\u9593
+Asia/Anadyr.generic.long=\u963F\u90A3\u5E95\u6CB3\u6642\u9593
+Asia/Aqtau.generic.long=\u963F\u514B\u5957\u6642\u9593
+Asia/Aqtobe.generic.long=\u963F\u514B\u6258\u5225\u6642\u9593
+Asia/Ashgabat.generic.long=\u571F\u5EAB\u66FC\u6642\u9593
+Asia/Ashkhabad.generic.long=\u571F\u5EAB\u66FC\u6642\u9593
+Asia/Baghdad.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Bahrain.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Baku.generic.long=\u4E9E\u585E\u62DC\u7136\u6642\u9593
+Asia/Bangkok.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Beirut.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Bishkek.generic.long=\u5409\u723E\u5409\u65AF\u6642\u9593
+Asia/Brunei.generic.long=\u6C76\u840A\u6642\u9593
+Asia/Calcutta.generic.long=\u5370\u5EA6\u6642\u9593
+Asia/Choibalsan.generic.long=\u5DE7\u5DF4\u5C71 (Choibalsan) \u6642\u9593
+Asia/Chongqing.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Chungking.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Colombo.generic.long=\u5370\u5EA6\u6642\u9593
+Asia/Dacca.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593
+Asia/Damascus.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Dhaka.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593
+Asia/Dili.generic.long=\u6771\u5E1D\u6C76\u6642\u9593
+Asia/Dubai.generic.long=\u6CE2\u65AF\u7063\u6642\u9593
+Asia/Dushanbe.generic.long=\u5854\u5409\u514B\u6642\u9593
+Asia/Gaza.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Harbin.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Hebron.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Ho_Chi_Minh.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Hong_Kong.generic.long=\u9999\u6E2F\u6642\u9593
+Asia/Hovd.generic.long=\u4FAF\u5FB7 (Hovd) \u6642\u9593
+Asia/Irkutsk.generic.long=\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593
+Asia/Istanbul.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Jakarta.generic.long=\u897F\u5370\u5C3C\u6642\u9593
+Asia/Jayapura.generic.long=\u6771\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593
+Asia/Jerusalem.generic.long=\u4EE5\u8272\u5217\u6642\u9593
+Asia/Kabul.generic.long=\u963F\u5BCC\u6C57\u6642\u9593
+Asia/Kamchatka.generic.long=Petropavlovsk-Kamchatski \u6642\u9593
+Asia/Karachi.generic.long=\u5DF4\u57FA\u65AF\u5766\u6642\u9593
+Asia/Kashgar.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Kathmandu.generic.long=\u5C3C\u6CCA\u723E\u6642\u9593
+Asia/Katmandu.generic.long=\u5C3C\u6CCA\u723E\u6642\u9593
+Asia/Khandyga.daylight.long=\u6F22\u5730\u52A0 (Khandyga) \u590F\u4EE4\u6642\u9593
+Asia/Khandyga.generic.long=\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593
+Asia/Khandyga.standard.long=\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593
+Asia/Kolkata.generic.long=\u5370\u5EA6\u6642\u9593
+Asia/Krasnoyarsk.generic.long=\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593
+Asia/Kuala_Lumpur.generic.long=\u99AC\u4F86\u897F\u4E9E\u6642\u9593
+Asia/Kuching.generic.long=\u99AC\u4F86\u897F\u4E9E\u6642\u9593
+Asia/Kuwait.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Macao.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Macau.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Magadan.generic.long=\u99AC\u52A0\u4E39\u6642\u9593
+Asia/Makassar.generic.long=\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593
+Asia/Manila.generic.long=\u83F2\u5F8B\u8CD3\u6642\u9593
+Asia/Muscat.generic.long=\u6CE2\u65AF\u7063\u6642\u9593
+Asia/Nicosia.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Novokuznetsk.generic.long=\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593
+Asia/Novosibirsk.generic.long=\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593
+Asia/Omsk.generic.long=\u6B50\u59C6\u65AF\u514B (Omsk) \u6642\u9593
+Asia/Oral.generic.long=\u6B50\u4F5B\u6642\u9593
+Asia/Phnom_Penh.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Pontianak.generic.long=\u897F\u5370\u5C3C\u6642\u9593
+Asia/Pyongyang.generic.long=\u97D3\u570B\u6642\u9593
+Asia/Qatar.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Qyzylorda.generic.long=\u514B\u5B5C\u6D1B\u723E\u9054\u6642\u9593
+Asia/Rangoon.generic.long=\u7DEC\u7538\u6642\u9593
+Asia/Saigon.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Sakhalin.generic.long=\u5EAB\u9801\u5CF6\u6642\u9593
+Asia/Samarkand.generic.long=\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593
+Asia/Seoul.generic.long=\u97D3\u570B\u6642\u9593
+Asia/Shanghai.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Singapore.generic.long=\u65B0\u52A0\u5761\u6642\u9593
+Asia/Taipei.generic.long=\u53f0\u7063\u6642\u9593
+Asia/Tashkent.generic.long=\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593
+Asia/Tbilisi.generic.long=\u55AC\u6CBB\u4E9E\u6642\u9593
+Asia/Tehran.generic.long=\u4F0A\u6717\u6642\u9593
+Asia/Tel_Aviv.generic.long=\u4EE5\u8272\u5217\u6642\u9593
+Asia/Thimbu.generic.long=\u4E0D\u4E39\u6642\u9593
+Asia/Thimphu.generic.long=\u4E0D\u4E39\u6642\u9593
+Asia/Tokyo.generic.long=\u65E5\u672C\u6642\u9593
+Asia/Ujung_Pandang.generic.long=\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593
+Asia/Ulaanbaatar.generic.long=\u5EAB\u502B\u6642\u9593
+Asia/Ulan_Bator.generic.long=\u5EAB\u502B\u6642\u9593
+Asia/Urumqi.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Ust-Nera.daylight.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u590F\u4EE4\u6642\u9593
+Asia/Ust-Nera.generic.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593
+Asia/Ust-Nera.standard.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593
+Asia/Vientiane.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Vladivostok.generic.long=\u6D77\u53C3\u5D34\u6642\u9593
+Asia/Yakutsk.generic.long=\u4E9E\u5EAB\u6B21\u514B\u6642\u9593
+Asia/Yekaterinburg.generic.long=\u8449\u5361\u6377\u7433\u5821\u6642\u9593
+Asia/Yerevan.generic.long=\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593
+Atlantic/Azores.generic.long=\u4E9E\u901F\u723E\u7FA4\u5CF6\u6642\u9593
+Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+Atlantic/Canary.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Cape_Verde.generic.long=\u4F5B\u5FB7\u89D2\u6642\u9593
+Atlantic/Faeroe.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Faroe.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Jan_Mayen.generic.long=\u4E2D\u6B50\u6642\u9593
+Atlantic/Madeira.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Reykjavik.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Atlantic/South_Georgia.generic.long=\u5357\u55AC\u6CBB\u4E9E\u6642\u9593
+Atlantic/St_Helena.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Atlantic/Stanley.generic.long=\u798F\u514B\u862D\u7FA4\u5CF6\u6642\u9593
+Australia/ACT.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/ACT.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/ACT.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Adelaide.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)
+Australia/Adelaide.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/Adelaide.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/Brisbane.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Brisbane.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Brisbane.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Broken_Hill.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Broken_Hill.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Canberra.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Canberra.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Canberra.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Currie.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Currie.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Currie.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Darwin.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/Darwin.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)
+Australia/Darwin.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Hobart.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/Hobart.generic.long=\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)
+Australia/Hobart.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/LHI.generic.long=\u8C6A\u52F3\u7235\u5CF6\u6642\u9593
+Australia/Lindeman.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Lindeman.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Lindeman.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Lord_Howe.generic.long=\u8C6A\u52F3\u7235\u5CF6\u6642\u9593
+Australia/Melbourne.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/Melbourne.generic.long=\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)
+Australia/Melbourne.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/NSW.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/NSW.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/NSW.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/North.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/North.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)
+Australia/North.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/Perth.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Perth.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Perth.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Queensland.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Queensland.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Queensland.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/South.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)
+Australia/South.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/South.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/Sydney.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Sydney.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Sydney.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Tasmania.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/Tasmania.generic.long=\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)
+Australia/Tasmania.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/Victoria.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/Victoria.generic.long=\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)
+Australia/Victoria.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/West.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/West.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/West.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Yancowinna.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Yancowinna.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Yancowinna.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+BET.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+BST.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593
+Brazil/Acre.generic.long=Acre \u6642\u9593
+Brazil/DeNoronha.generic.long=\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593
+Brazil/East.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+Brazil/West.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+CAT.generic.long=\u4E2D\u975E\u6642\u9593
+CET.generic.long=\u4e2d\u6b50\u6642\u9593
+CNT.generic.long=\u7D10\u82AC\u862D\u6642\u9593
+CST.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+CST6CDT.generic.long=\u7f8e\u570b\u4e2d\u90e8\u6642\u9593
+CTT.generic.long=\u4E2D\u570B\u6642\u9593
+Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+Canada/Central.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+Canada/East-Saskatchewan.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+Canada/Eastern.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+Canada/Mountain.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+Canada/Newfoundland.generic.long=\u7D10\u82AC\u862D\u6642\u9593
+Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+Canada/Saskatchewan.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+Chile/Continental.generic.long=\u667A\u5229\u6642\u9593
+Chile/EasterIsland.generic.long=\u5FA9\u6D3B\u5CF6\u6642\u9593
+Cuba.generic.long=\u53E4\u5DF4\u6642\u9593
+EAT.generic.long=\u6771\u975E\u6642\u9593
+ECT.generic.long=\u4E2D\u6B50\u6642\u9593
+EET.generic.long=\u6771\u6b50\u6642\u9593
+EST.generic.long=\u7f8e\u570b\u6771\u90e8\u6642\u9593
+EST5EDT.generic.long=\u7f8e\u570b\u6771\u90e8\u6642\u9593
+Egypt.generic.long=\u6771\u6B50\u6642\u9593
+Eire.generic.long=\u611B\u723E\u862D\u6587\u6642\u9593
+Etc/Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Etc/UCT.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Etc/UTC.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Etc/Universal.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Etc/Zulu.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Europe/Amsterdam.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Andorra.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Athens.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Belfast.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Belgrade.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Berlin.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Bratislava.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Brussels.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Bucharest.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Budapest.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Busingen.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Chisinau.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Copenhagen.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Dublin.generic.long=\u611B\u723E\u862D\u6587\u6642\u9593
+Europe/Gibraltar.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Guernsey.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Helsinki.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Isle_of_Man.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Istanbul.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Jersey.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Kaliningrad.daylight.long=\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593
+Europe/Kaliningrad.generic.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Kaliningrad.standard.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Kiev.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Lisbon.generic.long=\u897F\u6B50\u6642\u9593
+Europe/Ljubljana.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/London.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Luxembourg.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Madrid.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Malta.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Mariehamn.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Minsk.daylight.long=\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593
+Europe/Minsk.generic.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Minsk.standard.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Monaco.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Moscow.generic.long=\u83AB\u65AF\u79D1\u6642\u9593
+Europe/Nicosia.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Oslo.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Paris.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Podgorica.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Prague.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Riga.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Rome.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Samara.generic.long=\u6C99\u99AC\u62C9\u6642\u9593
+Europe/San_Marino.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Sarajevo.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Simferopol.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Skopje.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Sofia.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Stockholm.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Tallinn.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Tirane.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Tiraspol.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Uzhgorod.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Vaduz.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Vatican.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Vienna.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Vilnius.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Volgograd.generic.long=\u4F0F\u723E\u52A0\u683C\u52D2\u6642\u9593
+Europe/Warsaw.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Zagreb.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Zaporozhye.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Zurich.generic.long=\u4E2D\u6B50\u6642\u9593
+GB-Eire.generic.long=\u82F1\u570B\u6642\u9593
+GB.generic.long=\u82F1\u570B\u6642\u9593
+GMT.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+HST.generic.long=\u590f\u5a01\u5937\u6642\u9593
+Hongkong.generic.long=\u9999\u6E2F\u6642\u9593
+IET.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+IST.generic.long=\u5370\u5EA6\u6642\u9593
+Iceland.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Indian/Antananarivo.generic.long=\u6771\u975E\u6642\u9593
+Indian/Chagos.generic.long=\u82F1\u5C6C\u5370\u5EA6\u6D0B\u5730\u5340
+Indian/Christmas.generic.long=\u8056\u8A95\u5CF6\u6642\u9593
+Indian/Cocos.generic.long=\u53EF\u53EF\u65AF\u7FA4\u5CF6\u6642\u9593
+Indian/Comoro.generic.long=\u6771\u975E\u6642\u9593
+Indian/Kerguelen.generic.long=\u6CD5\u570B\u5357\u534A\u7403\u53CA\u5357\u6975\u5C6C\u5730\u6642\u9593
+Indian/Mahe.generic.long=\u585E\u5E2D\u723E\u7FA4\u5CF6\u6642\u9593
+Indian/Maldives.generic.long=\u99AC\u723E\u5730\u592B\u6642\u9593
+Indian/Mauritius.generic.long=\u6469\u91CC\u897F\u65AF\u6642\u9593
+Indian/Mayotte.generic.long=\u6771\u975E\u6642\u9593
+Indian/Reunion.generic.long=\u7559\u5C3C\u65FA\u5CF6\u6642\u9593
+Iran.generic.long=\u4F0A\u6717\u6642\u9593
+Israel.generic.long=\u4EE5\u8272\u5217\u6642\u9593
+JST.generic.long=\u65E5\u672C\u6642\u9593
+Jamaica.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+Japan.generic.long=\u65E5\u672C\u6642\u9593
+Kwajalein.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593
+Libya.generic.long=\u6771\u6b50\u6642\u9593
+MET.generic.long=MET
+MIT.generic.long=\u897F\u85A9\u6469\u4E9E\u6642\u9593
+MST.generic.long=\u7f8e\u570b\u5c71\u5340\u6642\u9593
+MST7MDT.generic.long=\u7f8e\u570b\u5c71\u5340\u6642\u9593
+Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+Mexico/BajaSur.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+Mexico/General.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+NET.generic.long=\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593
+NST.generic.long=\u7D10\u897F\u862D\u6642\u9593
+NZ-CHAT.generic.long=\u67E5\u5766\u6642\u9593
+NZ.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Navajo.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+PLT.generic.long=\u5DF4\u57FA\u65AF\u5766\u6642\u9593
+PNT.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+PRC.generic.long=\u4E2D\u570B\u6642\u9593
+PRT.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+PST.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+PST8PDT.generic.long=\u592a\u5e73\u6d0b\u6642\u9593
+Pacific/Apia.generic.long=\u897F\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Auckland.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Pacific/Chatham.generic.long=\u67E5\u5766\u6642\u9593
+Pacific/Chuuk.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593
+Pacific/Chuuk.generic.long=\u695A\u514B\u6642\u9593
+Pacific/Chuuk.standard.long=\u695A\u514B\u6642\u9593
+Pacific/Easter.generic.long=\u5FA9\u6D3B\u5CF6\u6642\u9593
+Pacific/Efate.generic.long=\u74E6\u5974\u963F\u5716\u6642\u9593
+Pacific/Enderbury.generic.long=\u83F2\u5C3C\u514B\u65AF\u7FA4\u5CF6\u6642\u9593
+Pacific/Fakaofo.generic.long=\u6258\u514B\u52DE\u7FA4\u5CF6\u6642\u9593
+Pacific/Fiji.generic.long=\u6590\u6FDF\u6642\u9593
+Pacific/Funafuti.generic.long=\u5410\u74E6\u9B6F\u6642\u9593
+Pacific/Galapagos.generic.long=\u52A0\u62C9\u5DF4\u54E5\u6642\u9593
+Pacific/Gambier.generic.long=\u7518\u6BD4\u723E\u6642\u9593
+Pacific/Guadalcanal.generic.long=\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593
+Pacific/Guam.generic.long=\u67E5\u83AB\u7F85\u6642\u9593
+Pacific/Honolulu.generic.long=\u590F\u5A01\u5937\u6642\u9593
+Pacific/Johnston.generic.long=\u590F\u5A01\u5937\u6642\u9593
+Pacific/Kiritimati.generic.long=\u5217\u5DBC\u7FA4\u5CF6\u6642\u9593
+Pacific/Kosrae.generic.long=Kosrae \u6642\u9593
+Pacific/Kwajalein.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593
+Pacific/Majuro.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593
+Pacific/Marquesas.generic.long=\u99AC\u514B\u85A9\u65AF\u6642\u9593
+Pacific/Midway.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Nauru.generic.long=\u8AFE\u9B6F\u6642\u9593
+Pacific/Niue.generic.long=\u7D10\u5A01\u5CF6\u6642\u9593
+Pacific/Norfolk.generic.long=\u8AFE\u798F\u514B\u6642\u9593
+Pacific/Noumea.generic.long=\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9E\u6642\u9593
+Pacific/Pago_Pago.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Palau.generic.long=\u5E1B\u7409\u6642\u9593
+Pacific/Pitcairn.generic.long=\u76AE\u7279\u5EB7\u6642\u9593
+Pacific/Pohnpei.daylight.long=\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593
+Pacific/Pohnpei.generic.long=\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593
+Pacific/Pohnpei.standard.long=\u6CE2\u7D0D\u4F69\u6642\u9593
+Pacific/Ponape.daylight.long=\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593
+Pacific/Ponape.generic.long=\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593
+Pacific/Ponape.standard.long=\u6CE2\u7D0D\u4F69\u6642\u9593
+Pacific/Port_Moresby.generic.long=\u5DF4\u5E03\u4E9E\u65B0\u5E7E\u5167\u4E9E\u6642\u9593
+Pacific/Rarotonga.generic.long=\u5EAB\u514B\u7FA4\u5CF6\u6642\u9593
+Pacific/Saipan.generic.long=\u67E5\u83AB\u7F85\u6642\u9593
+Pacific/Samoa.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Tahiti.generic.long=\u5927\u6EAA\u5730\u6642\u9593
+Pacific/Tarawa.generic.long=\u5409\u4F2F\u7279\u7FA4\u5CF6\u6642\u9593
+Pacific/Tongatapu.generic.long=\u6771\u52A0\u6642\u9593
+Pacific/Truk.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593
+Pacific/Truk.generic.long=\u695A\u514B\u6642\u9593
+Pacific/Truk.standard.long=\u695A\u514B\u6642\u9593
+Pacific/Wake.generic.long=\u5A01\u514B\u6642\u9593
+Pacific/Wallis.generic.long=\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7D0D\u7FA4\u5CF6\u6642\u9593
+Pacific/Yap.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593
+Pacific/Yap.generic.long=\u695A\u514B\u6642\u9593
+Pacific/Yap.standard.long=\u695A\u514B\u6642\u9593
+Poland.generic.long=\u4E2D\u6B50\u6642\u9593
+Portugal.generic.long=\u897F\u6B50\u6642\u9593
+ROK.generic.long=\u97D3\u570B\u6642\u9593
+SST.generic.long=\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593
+Singapore.generic.long=\u65B0\u52A0\u5761\u6642\u9593
+SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+SystemV/CST6.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+SystemV/CST6CDT.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+SystemV/EST5.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+SystemV/EST5EDT.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+SystemV/HST10.generic.long=\u590F\u5A01\u5937\u6642\u9593
+SystemV/MST7.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+SystemV/MST7MDT.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+SystemV/YST9.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+SystemV/YST9YDT.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+Turkey.generic.long=\u6771\u6B50\u6642\u9593
+UCT.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+US/Alaska.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+US/Aleutian.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593
+US/Arizona.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+US/Central.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+US/East-Indiana.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+US/Eastern.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+US/Hawaii.generic.long=\u590F\u5A01\u5937\u6642\u9593
+US/Indiana-Starke.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+US/Michigan.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+US/Mountain.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+US/Pacific.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+US/Samoa.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+UTC.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Universal.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+VST.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+W-SU.generic.long=\u83AB\u65AF\u79D1\u6642\u9593
+WET.generic.long=\u897f\u6b50\u6642\u9593
+Zulu.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW_short.properties Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=TDT
+Asia/Taipei.generic.short=TT
+Asia/Taipei.standard.short=TST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- a/jdk/test/tools/jar/UpdateManifest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/jdk/test/tools/jar/UpdateManifest.java Tue Jan 28 11:21:43 2014 -0800
@@ -39,6 +39,8 @@
static PrintStream err = System.err;
static boolean debug = true;
+ static final Logger JAR_LOGGER = Logger.getLogger("java.util.jar");
+
public static void realMain(String[] args) throws Throwable {
if (args.length == 0) {
debug = false;
@@ -47,7 +49,7 @@
out = new PrintStream(new FileOutputStream(tmp));
err = out;
// Attributes.read() can log a message we don't care to see.
- Logger.getLogger("java.util.jar").setLevel(Level.OFF);
+ JAR_LOGGER.setLevel(Level.OFF);
}
try { testManifestExistence(); } catch (Throwable t) { unexpected(t); }
--- a/langtools/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -243,3 +243,4 @@
43a80d75d06ed22d6942f25f067587a3be3a129d jdk8-b119
b3d7e86a06474fe5100a7b15a95eaa10d41509a6 jdk8-b120
afe63d41c699e0e2ee910ef20c41b60603c852a1 jdk9-b00
+077c12d527fb5531c59666c1f84000fc1245a260 jdk9-b01
--- a/langtools/make/Makefile Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/make/Makefile Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/javadoc/AnnotationDesc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/javadoc/AnnotationDesc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/src/share/classes/com/sun/source/doctree/package-info.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/source/doctree/package-info.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/classfile/AccessFlags.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/classfile/AccessFlags.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/classfile/Dependencies.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Dependencies.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/classfile/MethodParameters_attribute.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/classfile/MethodParameters_attribute.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java Tue Jan 28 11:21:43 2014 -0800
@@ -115,12 +115,6 @@
boolean nodeprecated = configuration.nodeprecated;
performCopy(configuration.helpfile);
performCopy(configuration.stylesheetfile);
- copyResourceFile("background.gif");
- copyResourceFile("tab.gif");
- copyResourceFile("titlebar.gif");
- copyResourceFile("titlebar_end.gif");
- copyResourceFile("activetitlebar.gif");
- copyResourceFile("activetitlebar_end.gif");
// do early to reduce memory footprint
if (configuration.classuse) {
ClassUseWriter.generate(configuration, classtree);
@@ -314,16 +308,6 @@
return docletToStart.configuration.validOptions(options, reporter);
}
- /**
- * Copy a file in the resources directory to the destination directory.
- * @param resource The name of the resource file to copy
- */
- private void copyResourceFile(String resource) {
- DocPath p = DocPaths.RESOURCES.resolve(resource);
- DocFile f = DocFile.createFileForOutput(configuration, p);
- f.copyResource(p, false, false);
- }
-
private void performCopy(String filename) {
if (filename.isEmpty())
return;
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkOutputImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkOutputImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
Binary file langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/activetitlebar.gif has changed
Binary file langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/activetitlebar_end.gif has changed
Binary file langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/background.gif has changed
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties Tue Jan 28 11:21:43 2014 -0800
@@ -134,6 +134,7 @@
doclet.Groupname_already_used=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u304A\u3044\u3066\u3001\u3059\u3067\u306B\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
doclet.value_tag_invalid_reference={0}(@value\u30BF\u30B0\u306B\u3088\u308A\u53C2\u7167\u3055\u308C\u3066\u3044\u308B)\u306F\u4E0D\u660E\u306A\u53C2\u7167\u3067\u3059\u3002
doclet.value_tag_invalid_constant=@value\u30BF\u30B0({0}\u3092\u53C2\u7167\u3057\u3066\u3044\u308B)\u306F\u5B9A\u6570\u5185\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
+doclet.value_tag_invalid_use=@value\u30BF\u30B0\u306F\u3053\u3053\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
doclet.dest_dir_create=\u5B9B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4F5C\u6210\u4E2D: "{0}"
doclet.in={1}\u306E{0}
doclet.Use_Table_Summary=\u8868\u3001{0}\u306E\u30EA\u30B9\u30C8\u304A\u3088\u3073\u8AAC\u660E\u306E\u4F7F\u7528
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties Tue Jan 28 11:21:43 2014 -0800
@@ -134,6 +134,7 @@
doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4E2D, groupname \u5DF2\u4F7F\u7528: {0}
doclet.value_tag_invalid_reference={0} (\u7531 @value \u6807\u8BB0\u5F15\u7528) \u4E3A\u672A\u77E5\u5F15\u7528\u3002
doclet.value_tag_invalid_constant=@value \u6807\u8BB0 (\u5F15\u7528{0}) \u53EA\u80FD\u5728\u5E38\u91CF\u4E2D\u4F7F\u7528\u3002
+doclet.value_tag_invalid_use=\u6B64\u5904\u4E0D\u80FD\u4F7F\u7528 @value \u6807\u8BB0\u3002
doclet.dest_dir_create=\u6B63\u5728\u521B\u5EFA\u76EE\u6807\u76EE\u5F55: "{0}"
doclet.in={1}\u4E2D\u7684{0}
doclet.Use_Table_Summary=\u4F7F\u7528\u8868, \u5217\u8868{0}\u548C\u89E3\u91CA
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css Tue Jan 28 11:21:43 2014 -0800
@@ -2,16 +2,19 @@
/*
Overall document style
*/
+
+@import url('resources/fonts/dejavu.css');
+
body {
background-color:#ffffff;
color:#353833;
- font-family:Arial, Helvetica, sans-serif;
- font-size:76%;
+ font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+ font-size:14px;
margin:0;
}
a:link, a:visited {
text-decoration:none;
- color:#4c6b87;
+ color:#4A6782;
}
a:hover, a:focus {
text-decoration:none;
@@ -19,7 +22,7 @@
}
a:active {
text-decoration:none;
- color:#4c6b87;
+ color:#4A6782;
}
a[name] {
color:#353833;
@@ -29,41 +32,51 @@
color:#353833;
}
pre {
- font-size:1.3em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
}
h1 {
- font-size:1.8em;
+ font-size:20px;
}
h2 {
- font-size:1.5em;
+ font-size:18px;
}
h3 {
- font-size:1.4em;
+ font-size:16px;
+ font-style:italic;
}
h4 {
- font-size:1.3em;
+ font-size:13px;
}
h5 {
- font-size:1.2em;
+ font-size:12px;
}
h6 {
- font-size:1.1em;
+ font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
- font-size:1.2em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
}
dt code {
- font-size:1.2em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+ padding-top:4px;
}
table tr td dt code {
- font-size:1.2em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
vertical-align:top;
+ padding-top:4px;
}
sup {
- font-size:.6em;
+ font-size:8px;
}
/*
Document title and Copyright styles
@@ -76,10 +89,9 @@
.aboutLanguage {
float:right;
padding:0px 21px;
- font-size:.8em;
- font-style:italic;
+ font-size:11px;
z-index:200;
- margin-top:-7px;
+ margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
@@ -93,9 +105,6 @@
}
.tab {
background-color:#0066FF;
- background-image:url(resources/titlebar.gif);
- background-position:left top;
- background-repeat:no-repeat;
color:#ffffff;
padding:8px;
width:5em;
@@ -105,17 +114,15 @@
Navigation bar styles
*/
.bar {
- background-image:url(resources/background.gif);
- background-repeat:repeat-x;
+ background-color:#4D7A97;
color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
- font-size:1em;
+ font-size:11px;
margin:0;
}
.topNav {
- background-image:url(resources/background.gif);
- background-repeat:repeat-x;
+ background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
@@ -124,11 +131,11 @@
height:2.8em;
padding-top:10px;
overflow:hidden;
+ font-size:12px;
}
.bottomNav {
margin-top:10px;
- background-image:url(resources/background.gif);
- background-repeat:repeat-x;
+ background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
@@ -137,18 +144,20 @@
height:2.8em;
padding-top:10px;
overflow:hidden;
+ font-size:12px;
}
.subNav {
background-color:#dee3e9;
- border-bottom:1px solid #9eadc0;
float:left;
width:100%;
overflow:hidden;
+ font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
+ text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
@@ -158,34 +167,34 @@
ul.navList li{
list-style:none;
float:left;
- padding:3px 6px;
+ padding: 5px 6px;
+ text-transform:uppercase;
}
ul.subNavList li{
list-style:none;
float:left;
- font-size:90%;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
color:#FFFFFF;
text-decoration:none;
+ text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
color:#bb7a2a;
+ text-transform:uppercase;
}
.navBarCell1Rev {
- background-image:url(resources/tab.gif);
- background-color:#a88834;
- color:#FFFFFF;
+ background-color:#F8981D;
+ color:#253441;
margin: auto 5px;
- border:1px solid #c9aa44;
}
.skipNav {
position:absolute;
top:auto;
left:-9999px;
overflow:hidden;
- }
+}
/*
Page header and footer styles
*/
@@ -202,7 +211,7 @@
margin-right:15px;
}
.indexHeader h1 {
- font-size:1.3em;
+ font-size:13px;
}
.title {
color:#2c4557;
@@ -212,7 +221,7 @@
margin:5px 0 0 0;
}
.header ul {
- margin:0 0 25px 0;
+ margin:0 0 15px 0;
padding:0;
}
.footer ul {
@@ -220,24 +229,22 @@
}
.header ul li, .footer ul li {
list-style:none;
- font-size:1.2em;
+ font-size:13px;
}
/*
Heading styles
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
- border-top:1px solid #9eadc0;
- border-bottom:1px solid #9eadc0;
+ border:1px solid #d0d9e0;
margin:0 0 6px -8px;
- padding:2px 5px;
+ padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
- border-top:1px solid #9eadc0;
- border-bottom:1px solid #9eadc0;
+ border:1px solid #d0d9e0;
margin:0 0 6px -8px;
- padding:2px 5px;
+ padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
@@ -257,10 +264,10 @@
.indexContainer {
margin:10px;
position:relative;
- font-size:1.0em;
+ font-size:12px;
}
.indexContainer h2 {
- font-size:1.1em;
+ font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
@@ -269,15 +276,18 @@
}
.indexContainer ul li {
list-style:none;
+ padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
- font-size:1.1em;
+ font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
- margin:10px 0 10px 20px;
+ margin:5px 0 10px 0px;
+ font-size:14px;
+ font-family:'DejaVu Sans Mono',monospace;
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
@@ -316,25 +326,24 @@
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
- margin-bottom:25px;
+ margin-bottom:15px;
+ line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
- border:1px solid #9eadc0;
- background-color:#f9f9f9;
+ border:1px solid #ededed;
+ background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
background-color:#ffffff;
- border:1px solid #9eadc0;
- border-top:none;
+ border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
- border-bottom:1px solid #9eadc0;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
@@ -349,9 +358,10 @@
Table styles
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
- border-bottom:1px solid #9eadc0;
- margin:0 0 12px 0px;
width:100%;
+ border-left:1px solid #EEE;
+ border-right:1px solid #EEE;
+ border-bottom:1px solid #EEE;
}
.overviewSummary, .memberSummary {
padding:0px;
@@ -361,12 +371,15 @@
position:relative;
text-align:left;
background-repeat:no-repeat;
- color:#FFFFFF;
+ color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
+ padding-top:10px;
+ padding-left:1px;
margin:0px;
+ white-space:pre;
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
@@ -381,89 +394,98 @@
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
white-space:nowrap;
- padding-top:8px;
- padding-left:8px;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ padding-bottom:7px;
display:inline-block;
float:left;
- background-image:url(resources/titlebar.gif);
+ background-color:#F8981D;
+ border: none;
+ height:16px;
}
.memberSummary caption span.activeTableTab span {
white-space:nowrap;
- padding-top:8px;
- padding-left:8px;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
display:inline-block;
float:left;
- background-image:url(resources/activetitlebar.gif);
+ background-color:#F8981D;
+ height:16px;
}
.memberSummary caption span.tableTab span {
white-space:nowrap;
- padding-top:8px;
- padding-left:8px;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
display:inline-block;
float:left;
- background-image:url(resources/titlebar.gif);
+ background-color:#4D7A97;
+ height:16px;
}
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
+ padding-right:0px;
background-image:none;
float:none;
- display:inline-block;
+ display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
- width:10px;
- background-image:url(resources/titlebar_end.gif);
- background-repeat:no-repeat;
- background-position:top right;
+ display:none;
+ width:5px;
position:relative;
float:left;
+ background-color:#F8981D;
}
.memberSummary .activeTableTab .tabEnd {
- width:10px;
- margin-right:5px;
- background-image:url(resources/activetitlebar_end.gif);
- background-repeat:no-repeat;
- background-position:top right;
- position:relative;
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
float:left;
+ background-color:#F8981D;
}
.memberSummary .tableTab .tabEnd {
- width:10px;
- margin-right:5px;
- background-image:url(resources/titlebar_end.gif);
- background-repeat:no-repeat;
- background-position:top right;
+ display:none;
+ width:5px;
+ margin-right:3px;
position:relative;
+ background-color:#4D7A97;
float:left;
+
}
.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td {
text-align:left;
- padding:3px 3px 3px 7px;
+ padding:0px 0px 12px 10px;
+ width:100%;
}
th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
vertical-align:top;
- padding-right:3px;
+ padding-right:0px;
+ padding-top:8px;
+ padding-bottom:3px;
}
th.colFirst, th.colLast, th.colOne, .constantsSummary th {
background:#dee3e9;
- border-top:1px solid #9eadc0;
- border-bottom:1px solid #9eadc0;
text-align:left;
- padding:3px 3px 3px 7px;
+ padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
- border-left:1px solid #9eadc0;
white-space:nowrap;
+ font-size:13px;
}
td.colLast, th.colLast {
- border-right:1px solid #9eadc0;
+ font-size:13px;
}
td.colOne, th.colOne {
- border-right:1px solid #9eadc0;
- border-left:1px solid #9eadc0;
+ font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.overviewSummary td.colOne, .overviewSummary th.colOne,
@@ -471,19 +493,19 @@
.memberSummary td.colOne, .memberSummary th.colOne,
.typeSummary td.colFirst{
width:25%;
- vertical-align:middle;
+ vertical-align:top;
}
td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
font-weight:bold;
}
.tableSubHeadingColor {
- background-color: #EEEEFF;
+ background-color:#EEEEFF;
}
.altColor {
- background-color:#eeeeef;
+ background-color:#FFFFFF;
}
.rowColor {
- background-color:#ffffff;
+ background-color:#EEEEEF;
}
/*
Content styles
@@ -498,6 +520,24 @@
.docSummary {
padding:0;
}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ font-style:normal;
+}
+
+div.block {
+ font-size:14px;
+ font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+ padding-top:0px;
+}
+
+
+td.colLast a {
+ padding-bottom:3px;
+}
/*
Formatting effect styles
*/
@@ -508,11 +548,12 @@
h1.hidden {
visibility:hidden;
overflow:hidden;
- font-size:.9em;
+ font-size:10px;
}
.block {
display:block;
- margin:3px 0 0 0;
+ margin:3px 10px 2px 0px;
+ color:#474747;
}
.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
@@ -522,3 +563,12 @@
.deprecationComment, .emphasizedPhrase, .interfaceName {
font-style:italic;
}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+ font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+ padding-bottom:0px;
+}
Binary file langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/tab.gif has changed
Binary file langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/titlebar.gif has changed
Binary file langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/titlebar_end.gif has changed
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocPaths.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocPaths.java Tue Jan 28 11:21:43 2014 -0800
@@ -122,9 +122,7 @@
/** The name of the file for the overview frame. */
public static final DocPath PROFILE_OVERVIEW_FRAME = DocPath.create("profile-overview-frame.html");
- /** The name of the directory in which resources are generated.
- * Also the name of the sub-package from which resources are read.
- */
+ /** The name of the sub-package from which resources are read. */
public static final DocPath RESOURCES = DocPath.create("resources");
/** The name of the file for the serialized form info. */
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkOutput.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkOutput.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Tue Jan 28 11:21:43 2014 -0800
@@ -67,7 +67,10 @@
dc.tag.start.unmatched = \u7D42\u4E86\u30BF\u30B0\u304C\u3042\u308A\u307E\u305B\u3093: </{0}>
dc.tag.unknown = \u4E0D\u660E\u306A\u30BF\u30B0: {0}
dc.text.not.allowed = <{0}>\u8981\u7D20\u3067\u306F\u30C6\u30AD\u30B9\u30C8\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+dc.type.arg.not.allowed = \u578B\u5F15\u6570\u306F\u3053\u3053\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
dc.unexpected.comment=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30B3\u30E1\u30F3\u30C8\u306F\u3053\u3053\u3067\u306F\u5FC5\u8981\u3042\u308A\u307E\u305B\u3093
+dc.value.not.allowed.here='{@value}'\u306F\u3053\u3053\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+dc.value.not.a.constant=\u5024\u304C\u5B9A\u6570\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u305B\u3093
dc.main.ioerror=IO\u30A8\u30E9\u30FC: {0}
dc.main.no.files.given=\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
--- a/langtools/src/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Tue Jan 28 11:21:43 2014 -0800
@@ -67,7 +67,10 @@
dc.tag.start.unmatched = \u7F3A\u5C11\u7ED3\u675F\u6807\u8BB0: </{0}>
dc.tag.unknown = \u672A\u77E5\u6807\u8BB0: {0}
dc.text.not.allowed = <{0}> \u5143\u7D20\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u6587\u672C
+dc.type.arg.not.allowed = \u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u53C2\u6570
dc.unexpected.comment=\u6B64\u5904\u672A\u9884\u671F\u6587\u6863\u6CE8\u91CA
+dc.value.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528 '{@value}'
+dc.value.not.a.constant=\u503C\u4E0D\u5F15\u7528\u5E38\u91CF
dc.main.ioerror=IO \u9519\u8BEF: {0}
dc.main.no.files.given=\u672A\u6307\u5B9A\u6587\u4EF6
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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,16 +25,45 @@
package com.sun.tools.javac.code;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
import javax.lang.model.element.ElementVisitor;
+import javax.tools.JavaFileObject;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.Type.*;
-import com.sun.tools.javac.jvm.*;
-import com.sun.tools.javac.util.*;
+
+import com.sun.tools.javac.code.Symbol.ClassSymbol;
+import com.sun.tools.javac.code.Symbol.Completer;
+import com.sun.tools.javac.code.Symbol.CompletionFailure;
+import com.sun.tools.javac.code.Symbol.MethodSymbol;
+import com.sun.tools.javac.code.Symbol.OperatorSymbol;
+import com.sun.tools.javac.code.Symbol.PackageSymbol;
+import com.sun.tools.javac.code.Symbol.TypeSymbol;
+import com.sun.tools.javac.code.Symbol.VarSymbol;
+import com.sun.tools.javac.code.Type.BottomType;
+import com.sun.tools.javac.code.Type.ClassType;
+import com.sun.tools.javac.code.Type.ErrorType;
+import com.sun.tools.javac.code.Type.JCPrimitiveType;
+import com.sun.tools.javac.code.Type.JCVoidType;
+import com.sun.tools.javac.code.Type.MethodType;
+import com.sun.tools.javac.code.Type.UnknownType;
+import com.sun.tools.javac.jvm.ByteCodes;
+import com.sun.tools.javac.jvm.ClassReader;
+import com.sun.tools.javac.jvm.Target;
+import com.sun.tools.javac.util.Assert;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Convert;
+import com.sun.tools.javac.util.JavacMessages;
import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.Name;
+import com.sun.tools.javac.util.Names;
+
import static com.sun.tools.javac.code.Flags.*;
+import static com.sun.tools.javac.code.Kinds.PCK;
+import static com.sun.tools.javac.code.Kinds.TYP;
import static com.sun.tools.javac.jvm.ByteCodes.*;
import static com.sun.tools.javac.code.TypeTag.*;
@@ -75,7 +104,7 @@
public final JCVoidType voidType = new JCVoidType();
private final Names names;
- private final ClassReader reader;
+ private final Completer initialCompleter;
private final Target target;
/** A symbol for the root package.
@@ -308,7 +337,7 @@
* @param s The name of the class.
*/
private Type enterClass(String s) {
- return reader.enterClass(names.fromString(s)).type;
+ return enterClass(names.fromString(s)).type;
}
public void synthesizeEmptyInterfaceIfMissing(final Type type) {
@@ -328,7 +357,7 @@
}
public void synthesizeBoxTypeIfMissing(final Type type) {
- ClassSymbol sym = reader.enterClass(boxedName[type.getTag().ordinal()]);
+ ClassSymbol sym = enterClass(boxedName[type.getTag().ordinal()]);
final Completer completer = sym.completer;
if (completer != null) {
sym.completer = new Completer() {
@@ -390,6 +419,7 @@
// create the basic builtin symbols
rootPackage = new PackageSymbol(names.empty, null);
+ packages.put(names.empty, rootPackage);
final JavacMessages messages = JavacMessages.instance(context);
unnamedPackage = new PackageSymbol(names.empty, rootPackage) {
public String toString() {
@@ -440,6 +470,11 @@
Scope scope = new Scope(predefClass);
predefClass.members_field = scope;
+ // Get the initial completer for Symbols from the ClassReader
+ initialCompleter = ClassReader.instance(context).getCompleter();
+ rootPackage.completer = initialCompleter;
+ unnamedPackage.completer = initialCompleter;
+
// Enter symbols for basic types.
scope.enter(byteType.tsym);
scope.enter(shortType.tsym);
@@ -456,9 +491,6 @@
classes.put(predefClass.fullname, predefClass);
- reader = ClassReader.instance(context);
- reader.init(this);
-
// Enter predefined classes.
objectType = enterClass("java.lang.Object");
classType = enterClass("java.lang.Class");
@@ -484,7 +516,7 @@
cloneNotSupportedExceptionType = enterClass("java.lang.CloneNotSupportedException");
annotationType = enterClass("java.lang.annotation.Annotation");
classLoaderType = enterClass("java.lang.ClassLoader");
- enumSym = reader.enterClass(names.java_lang_Enum);
+ enumSym = enterClass(names.java_lang_Enum);
enumFinalFinalize =
new MethodSymbol(PROTECTED|FINAL|HYPOTHETICAL,
names.finalize,
@@ -719,4 +751,102 @@
enterBinop("&&", booleanType, booleanType, booleanType, bool_and);
enterBinop("||", booleanType, booleanType, booleanType, bool_or);
}
+
+ /** Define a new class given its name and owner.
+ */
+ public ClassSymbol defineClass(Name name, Symbol owner) {
+ ClassSymbol c = new ClassSymbol(0, name, owner);
+ if (owner.kind == PCK)
+ Assert.checkNull(classes.get(c.flatname), c);
+ c.completer = initialCompleter;
+ return c;
+ }
+
+ /** Create a new toplevel or member class symbol with given name
+ * and owner and enter in `classes' unless already there.
+ */
+ public ClassSymbol enterClass(Name name, TypeSymbol owner) {
+ Name flatname = TypeSymbol.formFlatName(name, owner);
+ ClassSymbol c = classes.get(flatname);
+ if (c == null) {
+ c = defineClass(name, owner);
+ classes.put(flatname, c);
+ } else if ((c.name != name || c.owner != owner) && owner.kind == TYP && c.owner.kind == PCK) {
+ // reassign fields of classes that might have been loaded with
+ // their flat names.
+ c.owner.members().remove(c);
+ c.name = name;
+ c.owner = owner;
+ c.fullname = ClassSymbol.formFullName(name, owner);
+ }
+ return c;
+ }
+
+ /**
+ * Creates a new toplevel class symbol with given flat name and
+ * given class (or source) file.
+ *
+ * @param flatName a fully qualified binary class name
+ * @param classFile the class file or compilation unit defining
+ * the class (may be {@code null})
+ * @return a newly created class symbol
+ * @throws AssertionError if the class symbol already exists
+ */
+ public ClassSymbol enterClass(Name flatName, JavaFileObject classFile) {
+ ClassSymbol cs = classes.get(flatName);
+ if (cs != null) {
+ String msg = Log.format("%s: completer = %s; class file = %s; source file = %s",
+ cs.fullname,
+ cs.completer,
+ cs.classfile,
+ cs.sourcefile);
+ throw new AssertionError(msg);
+ }
+ Name packageName = Convert.packagePart(flatName);
+ PackageSymbol owner = packageName.isEmpty()
+ ? unnamedPackage
+ : enterPackage(packageName);
+ cs = defineClass(Convert.shortName(flatName), owner);
+ cs.classfile = classFile;
+ classes.put(flatName, cs);
+ return cs;
+ }
+
+ /** Create a new member or toplevel class symbol with given flat name
+ * and enter in `classes' unless already there.
+ */
+ public ClassSymbol enterClass(Name flatname) {
+ ClassSymbol c = classes.get(flatname);
+ if (c == null)
+ return enterClass(flatname, (JavaFileObject)null);
+ else
+ return c;
+ }
+
+ /** Check to see if a package exists, given its fully qualified name.
+ */
+ public boolean packageExists(Name fullname) {
+ return enterPackage(fullname).exists();
+ }
+
+ /** Make a package, given its fully qualified name.
+ */
+ public PackageSymbol enterPackage(Name fullname) {
+ PackageSymbol p = packages.get(fullname);
+ if (p == null) {
+ Assert.check(!fullname.isEmpty(), "rootPackage missing!");
+ p = new PackageSymbol(
+ Convert.shortName(fullname),
+ enterPackage(Convert.packagePart(fullname)));
+ p.completer = initialCompleter;
+ packages.put(fullname, p);
+ }
+ return p;
+ }
+
+ /** Make a package, given its unqualified name and enclosing package.
+ */
+ public PackageSymbol enterPackage(Name name, PackageSymbol owner) {
+ return enterPackage(TypeSymbol.formFullName(name, owner));
+ }
}
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Tue Jan 28 11:21:43 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
@@ -3785,7 +3785,7 @@
* Return the class that boxes the given primitive.
*/
public ClassSymbol boxedClass(Type t) {
- return reader.enterClass(syms.boxedName[t.getTag().ordinal()]);
+ return syms.enterClass(syms.boxedName[t.getTag().ordinal()]);
}
/**
@@ -3805,7 +3805,7 @@
for (int i=0; i<syms.boxedName.length; i++) {
Name box = syms.boxedName[i];
if (box != null &&
- asSuper(t, reader.enterClass(box)) != null)
+ asSuper(t, syms.enterClass(box)) != null)
return syms.typeOfTag[i];
}
}
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Annotate.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Annotate.java Tue Jan 28 11:21:43 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
@@ -37,7 +37,6 @@
import static com.sun.tools.javac.code.TypeTag.ARRAY;
import static com.sun.tools.javac.code.TypeTag.CLASS;
import static com.sun.tools.javac.tree.JCTree.Tag.*;
-import javax.lang.model.type.ErrorType;
/** Enter annotations on symbols. Annotations accumulate in a queue,
* which is processed at the top level of any set of recursive calls
@@ -253,29 +252,11 @@
Type at = (a.annotationType.type != null ? a.annotationType.type
: attr.attribType(a.annotationType, env));
a.type = chk.checkType(a.annotationType.pos(), at, expected);
- if (a.type.isErroneous()) {
- // Need to make sure nested (anno)trees does not have null as .type
- attr.postAttr(a);
-
- if (typeAnnotation) {
- return new Attribute.TypeCompound(a.type, List.<Pair<MethodSymbol,Attribute>>nil(),
- new TypeAnnotationPosition());
- } else {
- return new Attribute.Compound(a.type, List.<Pair<MethodSymbol,Attribute>>nil());
- }
- }
- if ((a.type.tsym.flags() & Flags.ANNOTATION) == 0) {
+ boolean isError = a.type.isErroneous();
+ if ((a.type.tsym.flags() & Flags.ANNOTATION) == 0 && !isError) {
log.error(a.annotationType.pos(),
"not.annotation.type", a.type.toString());
-
- // Need to make sure nested (anno)trees does not have null as .type
- attr.postAttr(a);
-
- if (typeAnnotation) {
- return new Attribute.TypeCompound(a.type, List.<Pair<MethodSymbol,Attribute>>nil(), null);
- } else {
- return new Attribute.Compound(a.type, List.<Pair<MethodSymbol,Attribute>>nil());
- }
+ isError = true;
}
List<JCExpression> args = a.args;
if (args.length() == 1 && !args.head.hasTag(ASSIGN)) {
@@ -289,11 +270,13 @@
JCExpression t = tl.head;
if (!t.hasTag(ASSIGN)) {
log.error(t.pos(), "annotation.value.must.be.name.value");
+ enterAttributeValue(t.type = syms.errType, t, env);
continue;
}
JCAssign assign = (JCAssign)t;
if (!assign.lhs.hasTag(IDENT)) {
log.error(t.pos(), "annotation.value.must.be.name.value");
+ enterAttributeValue(t.type = syms.errType, t, env);
continue;
}
JCIdent left = (JCIdent)assign.lhs;
@@ -305,7 +288,7 @@
null);
left.sym = method;
left.type = method.type;
- if (method.owner != a.type.tsym)
+ if (method.owner != a.type.tsym && !isError)
log.error(left.pos(), "no.annotation.member", left.name, a.type);
Type result = method.type.getReturnType();
Attribute value = enterAttributeValue(result, assign.rhs, env);
@@ -389,7 +372,8 @@
enterAnnotation((JCAnnotation)tree, syms.errType, env);
return new Attribute.Error(((JCAnnotation)tree).annotationType.type);
}
- if (expected.isPrimitive() || types.isSameType(expected, syms.stringType)) {
+ if (expected.isPrimitive() ||
+ (types.isSameType(expected, syms.stringType) && !expected.hasTag(TypeTag.ERROR))) {
Type result = attr.attribExpr(tree, env, expected);
if (result.isErroneous())
return new Attribute.Error(result.getOriginalType());
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -850,9 +850,18 @@
}
public void visitClassDef(JCClassDecl tree) {
- // Local classes have not been entered yet, so we need to do it now:
- if ((env.info.scope.owner.kind & (VAR | MTH)) != 0)
+ // Local and anonymous classes have not been entered yet, so we need to
+ // do it now.
+ if ((env.info.scope.owner.kind & (VAR | MTH)) != 0) {
enter.classEnter(tree, env);
+ } else {
+ // If this class declaration is part of a class level annotation,
+ // as in @MyAnno(new Object() {}) class MyClass {}, enter it in
+ // order to simplify later steps and allow for sensible error
+ // messages.
+ if (env.tree.hasTag(NEWCLASS) && TreeInfo.isInAnnotation(env, tree))
+ enter.classEnter(tree, env);
+ }
ClassSymbol c = tree.sym;
if (c == null) {
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -285,7 +285,7 @@
boolean isPkgInfo = tree.sourcefile.isNameCompatible("package-info",
JavaFileObject.Kind.SOURCE);
if (tree.pid != null) {
- tree.packge = reader.enterPackage(TreeInfo.fullName(tree.pid));
+ tree.packge = syms.enterPackage(TreeInfo.fullName(tree.pid));
if (tree.packageAnnotations.nonEmpty()
|| pkginfoOpt == PkgInfo.ALWAYS
|| tree.docComments != null) {
@@ -326,7 +326,7 @@
q.flags_field |= EXISTS;
Name name = names.package_info;
- ClassSymbol c = reader.enterClass(name, tree.packge);
+ ClassSymbol c = syms.enterClass(name, tree.packge);
c.flatname = names.fromString(tree.packge + "." + name);
c.sourcefile = tree.sourcefile;
c.completer = null;
@@ -351,7 +351,7 @@
PackageSymbol packge = (PackageSymbol)owner;
for (Symbol q = packge; q != null && q.kind == PCK; q = q.owner)
q.flags_field |= EXISTS;
- c = reader.enterClass(tree.name, packge);
+ c = syms.enterClass(tree.name, packge);
packge.members().enterIfAbsent(c);
if ((tree.mods.flags & PUBLIC) != 0 && !classNameMatchesFileName(c, env)) {
log.error(tree.pos(),
@@ -365,13 +365,13 @@
}
if (owner.kind == TYP) {
// We are seeing a member class.
- c = reader.enterClass(tree.name, (TypeSymbol)owner);
+ c = syms.enterClass(tree.name, (TypeSymbol)owner);
if ((owner.flags_field & INTERFACE) != 0) {
tree.mods.flags |= PUBLIC | STATIC;
}
} else {
// We are seeing a local class.
- c = reader.defineClass(tree.name, owner);
+ c = syms.defineClass(tree.name, owner);
c.flatname = chk.localClassName(c);
if (!c.name.isEmpty())
chk.checkTransparentClass(tree.pos(), c, env.info.scope);
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -635,7 +635,7 @@
JCClassDecl makeEmptyClass(long flags, ClassSymbol owner, Name flatname,
boolean addToDefs) {
// Create class symbol.
- ClassSymbol c = reader.defineClass(names.empty, owner);
+ ClassSymbol c = syms.defineClass(names.empty, owner);
if (flatname != null) {
c.flatname = flatname;
} else {
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Tue Jan 28 11:21:43 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
@@ -519,7 +519,7 @@
try {
// Import-on-demand java.lang.
- importAll(tree.pos, reader.enterPackage(names.java_lang), env);
+ importAll(tree.pos, syms.enterPackage(names.java_lang), env);
// Process all import clauses.
memberEnter(tree.defs, env);
@@ -1173,7 +1173,7 @@
// name as a top-level package.
if (checkClash &&
c.owner.kind == PCK && c.owner != syms.unnamedPackage &&
- reader.packageExists(c.fullname)) {
+ syms.packageExists(c.fullname)) {
log.error(tree.pos, "clash.with.pkg.of.same.name", Kinds.kindName(sym), c);
}
if (c.owner.kind == PCK && (c.flags_field & PUBLIC) == 0 &&
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -269,7 +269,7 @@
* the one of its outer environment
*/
protected static boolean isStatic(Env<AttrContext> env) {
- return env.info.staticLevel > env.outer.info.staticLevel;
+ return env.outer != null && env.info.staticLevel > env.outer.info.staticLevel;
}
/** An environment is an "initializer" if it is a constructor or
@@ -2075,7 +2075,7 @@
else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
}
- if ((kind & PCK) != 0) return reader.enterPackage(name);
+ if ((kind & PCK) != 0) return syms.enterPackage(name);
else return bestSoFar;
}
@@ -2099,7 +2099,7 @@
Symbol bestSoFar = typeNotFound;
PackageSymbol pack = null;
if ((kind & PCK) != 0) {
- pack = reader.enterPackage(fullname);
+ pack = syms.enterPackage(fullname);
if (pack.exists()) return pack;
}
if ((kind & TYP) != 0) {
--- a/langtools/src/share/classes/com/sun/tools/javac/file/RegularFileObject.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/RegularFileObject.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -165,15 +165,6 @@
*/
public SourceCompleter sourceCompleter = null;
- /** A hashtable containing the encountered top-level and member classes,
- * indexed by flat names. The table does not contain local classes.
- */
- private Map<Name,ClassSymbol> classes;
-
- /** A hashtable containing the encountered packages.
- */
- private Map<Name, PackageSymbol> packages;
-
/** The current scope where type variables are entered.
*/
protected Scope typevars;
@@ -240,47 +231,21 @@
}
};
+ public Completer getCompleter() {
+ return thisCompleter;
+ }
/** Get the ClassReader instance for this invocation. */
public static ClassReader instance(Context context) {
ClassReader instance = context.get(classReaderKey);
if (instance == null)
- instance = new ClassReader(context, true);
+ instance = new ClassReader(context);
return instance;
}
- /** Initialize classes and packages, treating this as the definitive classreader. */
- public void init(Symtab syms) {
- init(syms, true);
- }
-
- /** Initialize classes and packages, optionally treating this as
- * the definitive classreader.
- */
- private void init(Symtab syms, boolean definitive) {
- if (classes != null) return;
-
- if (definitive) {
- Assert.check(packages == null || packages == syms.packages);
- packages = syms.packages;
- Assert.check(classes == null || classes == syms.classes);
- classes = syms.classes;
- } else {
- packages = new HashMap<>();
- classes = new HashMap<>();
- }
-
- packages.put(names.empty, syms.rootPackage);
- syms.rootPackage.completer = thisCompleter;
- syms.unnamedPackage.completer = thisCompleter;
- }
-
- /** Construct a new class reader, optionally treated as the
- * definitive classreader for this invocation.
- */
- protected ClassReader(Context context, boolean definitive) {
- if (definitive) context.put(classReaderKey, this);
-
+ /** Construct a new class reader. */
+ protected ClassReader(Context context) {
+ context.put(classReaderKey, this);
names = Names.instance(context);
syms = Symtab.instance(context);
types = Types.instance(context);
@@ -289,7 +254,6 @@
throw new AssertionError("FileManager initialization error");
diagFactory = JCDiagnostic.Factory.instance(context);
- init(syms, definitive);
log = Log.instance(context);
Options options = Options.instance(context);
@@ -573,7 +537,7 @@
// simplified to (buf[start] == '[')
return (buf[start] == '[' || buf[start + len - 1] == ';')
? (Object)sigToType(buf, start, len)
- : (Object)enterClass(names.fromUtf(internalize(buf, start,
+ : (Object)syms.enterClass(names.fromUtf(internalize(buf, start,
len)));
}
@@ -736,7 +700,7 @@
switch (c) {
case ';': { // end
- ClassSymbol t = enterClass(names.fromUtf(signatureBuffer,
+ ClassSymbol t = syms.enterClass(names.fromUtf(signatureBuffer,
startSbp,
sbp - startSbp));
@@ -750,7 +714,7 @@
}
case '<': // generic arguments
- ClassSymbol t = enterClass(names.fromUtf(signatureBuffer,
+ ClassSymbol t = syms.enterClass(names.fromUtf(signatureBuffer,
startSbp,
sbp - startSbp));
outer = new ClassType(outer, sigToTypes('>'), t) {
@@ -813,7 +777,7 @@
case '.':
//we have seen an enclosing non-generic class
if (outer != Type.noType) {
- t = enterClass(names.fromUtf(signatureBuffer,
+ t = syms.enterClass(names.fromUtf(signatureBuffer,
startSbp,
sbp - startSbp));
outer = new ClassType(outer, List.<Type>nil(), t);
@@ -1476,7 +1440,7 @@
int index = poolIdx[i];
int length = getChar(index + 1);
if (buf[index + length + 2] != ';')
- return enterClass(readName(i)).type;
+ return syms.enterClass(readName(i)).type;
return readType(i);
}
@@ -2240,7 +2204,7 @@
if (outer != null) { // we have a member class
if (name == names.empty)
name = names.one;
- ClassSymbol member = enterClass(name, outer);
+ ClassSymbol member = syms.enterClass(name, outer);
if ((flags & STATIC) == 0) {
((ClassType)member.type).setEnclosingType(outer.type);
if (member.erasure_field != null)
@@ -2324,77 +2288,6 @@
* Loading Classes
***********************************************************************/
- /** Define a new class given its name and owner.
- */
- public ClassSymbol defineClass(Name name, Symbol owner) {
- ClassSymbol c = new ClassSymbol(0, name, owner);
- if (owner.kind == PCK)
- Assert.checkNull(classes.get(c.flatname), c);
- c.completer = thisCompleter;
- return c;
- }
-
- /** Create a new toplevel or member class symbol with given name
- * and owner and enter in `classes' unless already there.
- */
- public ClassSymbol enterClass(Name name, TypeSymbol owner) {
- Name flatname = TypeSymbol.formFlatName(name, owner);
- ClassSymbol c = classes.get(flatname);
- if (c == null) {
- c = defineClass(name, owner);
- classes.put(flatname, c);
- } else if ((c.name != name || c.owner != owner) && owner.kind == TYP && c.owner.kind == PCK) {
- // reassign fields of classes that might have been loaded with
- // their flat names.
- c.owner.members().remove(c);
- c.name = name;
- c.owner = owner;
- c.fullname = ClassSymbol.formFullName(name, owner);
- }
- return c;
- }
-
- /**
- * Creates a new toplevel class symbol with given flat name and
- * given class (or source) file.
- *
- * @param flatName a fully qualified binary class name
- * @param classFile the class file or compilation unit defining
- * the class (may be {@code null})
- * @return a newly created class symbol
- * @throws AssertionError if the class symbol already exists
- */
- public ClassSymbol enterClass(Name flatName, JavaFileObject classFile) {
- ClassSymbol cs = classes.get(flatName);
- if (cs != null) {
- String msg = Log.format("%s: completer = %s; class file = %s; source file = %s",
- cs.fullname,
- cs.completer,
- cs.classfile,
- cs.sourcefile);
- throw new AssertionError(msg);
- }
- Name packageName = Convert.packagePart(flatName);
- PackageSymbol owner = packageName.isEmpty()
- ? syms.unnamedPackage
- : enterPackage(packageName);
- cs = defineClass(Convert.shortName(flatName), owner);
- cs.classfile = classFile;
- classes.put(flatName, cs);
- return cs;
- }
-
- /** Create a new member or toplevel class symbol with given flat name
- * and enter in `classes' unless already there.
- */
- public ClassSymbol enterClass(Name flatname) {
- ClassSymbol c = classes.get(flatname);
- if (c == null)
- return enterClass(flatname, (JavaFileObject)null);
- else
- return c;
- }
-
/** Completion for classes to be loaded. Before a class is loaded
* we make sure its enclosing class (if any) is loaded.
*/
@@ -2442,7 +2335,7 @@
for (Name name : Convert.enclosingCandidates(Convert.shortName(c.name))) {
Symbol encl = owner.members().lookup(name).sym;
if (encl == null)
- encl = classes.get(TypeSymbol.formFlatName(name, owner));
+ encl = syms.classes.get(TypeSymbol.formFlatName(name, owner));
if (encl != null)
encl.complete();
}
@@ -2584,17 +2477,18 @@
cachedCompletionFailure.setStackTrace(new StackTraceElement[0]);
}
+
/** Load a toplevel class with given fully qualified name
* The class is entered into `classes' only if load was successful.
*/
public ClassSymbol loadClass(Name flatname) throws CompletionFailure {
- boolean absent = classes.get(flatname) == null;
- ClassSymbol c = enterClass(flatname);
+ boolean absent = syms.classes.get(flatname) == null;
+ ClassSymbol c = syms.enterClass(flatname);
if (c.members_field == null && c.completer != null) {
try {
c.complete();
} catch (CompletionFailure ex) {
- if (absent) classes.remove(flatname);
+ if (absent) syms.classes.remove(flatname);
throw ex;
}
}
@@ -2605,33 +2499,6 @@
* Loading Packages
***********************************************************************/
- /** Check to see if a package exists, given its fully qualified name.
- */
- public boolean packageExists(Name fullname) {
- return enterPackage(fullname).exists();
- }
-
- /** Make a package, given its fully qualified name.
- */
- public PackageSymbol enterPackage(Name fullname) {
- PackageSymbol p = packages.get(fullname);
- if (p == null) {
- Assert.check(!fullname.isEmpty(), "rootPackage missing!");
- p = new PackageSymbol(
- Convert.shortName(fullname),
- enterPackage(Convert.packagePart(fullname)));
- p.completer = thisCompleter;
- packages.put(fullname, p);
- }
- return p;
- }
-
- /** Make a package, given its unqualified name and enclosing package.
- */
- public PackageSymbol enterPackage(Name name, PackageSymbol owner) {
- return enterPackage(TypeSymbol.formFullName(name, owner));
- }
-
/** Include class corresponding to given class file in package,
* unless (1) we already have one the same kind (.class or .java), or
* (2) we have one of the other kind, and the given class file
@@ -2655,7 +2522,7 @@
? p.package_info
: (ClassSymbol) p.members_field.lookup(classname).sym;
if (c == null) {
- c = enterClass(classname, p);
+ c = syms.enterClass(classname, p);
if (c.classfile == null) // only update the file if's it's newly created
c.classfile = file;
if (isPkgInfo) {
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -2189,9 +2189,9 @@
// Keep local variables if
// 1) we need them for debug information
// 2) it is an exception type and it contains type annotations
- if (!varDebugInfo &&
- (!var.sym.isExceptionParameter() ||
- var.sym.hasTypeAnnotations())) return;
+ boolean keepLocalVariables = varDebugInfo ||
+ (var.sym.isExceptionParameter() && var.sym.hasTypeAnnotations());
+ if (!keepLocalVariables) return;
if ((var.sym.flags() & Flags.SYNTHETIC) != 0) return;
if (varBuffer == null)
varBuffer = new LocalVar[20];
--- a/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Tue Jan 28 11:21:43 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
@@ -984,7 +984,7 @@
/** Enter a set of generated class files. */
private List<ClassSymbol> enterClassFiles(Map<String, JavaFileObject> classFiles) {
- ClassReader reader = ClassReader.instance(context);
+ Symtab symtab = Symtab.instance(context);
Names names = Names.instance(context);
List<ClassSymbol> list = List.nil();
@@ -996,14 +996,14 @@
ClassSymbol cs;
if (isPkgInfo(file, JavaFileObject.Kind.CLASS)) {
Name packageName = Convert.packagePart(name);
- PackageSymbol p = reader.enterPackage(packageName);
+ PackageSymbol p = symtab.enterPackage(packageName);
if (p.package_info == null)
- p.package_info = reader.enterClass(Convert.shortName(name), p);
+ p.package_info = symtab.enterClass(Convert.shortName(name), p);
cs = p.package_info;
if (cs.classfile == null)
cs.classfile = file;
} else
- cs = reader.enterClass(name, file);
+ cs = symtab.enterClass(name, file);
list = list.prepend(cs);
}
return list.reverse();
--- a/langtools/src/share/classes/com/sun/tools/javac/processing/JavacRoundEnvironment.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/processing/JavacRoundEnvironment.java Tue Jan 28 11:21:43 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
@@ -26,11 +26,8 @@
package com.sun.tools.javac.processing;
import java.lang.annotation.Annotation;
-import com.sun.tools.javac.tree.JCTree.*;
import javax.annotation.processing.*;
import javax.lang.model.element.*;
-import javax.lang.model.type.DeclaredType;
-import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.*;
import java.util.*;
@@ -114,58 +111,48 @@
*/
public Set<? extends Element> getElementsAnnotatedWith(TypeElement a) {
Set<Element> result = Collections.emptySet();
- Types typeUtil = processingEnv.getTypeUtils();
if (a.getKind() != ElementKind.ANNOTATION_TYPE)
throw new IllegalArgumentException(NOT_AN_ANNOTATION_TYPE + a);
- DeclaredType annotationTypeElement;
- TypeMirror tm = a.asType();
- if ( tm instanceof DeclaredType )
- annotationTypeElement = (DeclaredType) a.asType();
- else
- throw new AssertionError("Bad implementation type for " + tm);
-
- ElementScanner8<Set<Element>, DeclaredType> scanner =
- new AnnotationSetScanner(result, typeUtil);
+ ElementScanner8<Set<Element>, TypeElement> scanner =
+ new AnnotationSetScanner(result);
for (Element element : rootElements)
- result = scanner.scan(element, annotationTypeElement);
+ result = scanner.scan(element, a);
return result;
}
// Could be written as a local class inside getElementsAnnotatedWith
private class AnnotationSetScanner extends
- ElementScanner8<Set<Element>, DeclaredType> {
+ ElementScanner8<Set<Element>, TypeElement> {
// Insertion-order preserving set
Set<Element> annotatedElements = new LinkedHashSet<>();
- Types typeUtil;
- AnnotationSetScanner(Set<Element> defaultSet, Types typeUtil) {
+ AnnotationSetScanner(Set<Element> defaultSet) {
super(defaultSet);
- this.typeUtil = typeUtil;
}
@Override
- public Set<Element> visitType(TypeElement e, DeclaredType p) {
+ public Set<Element> visitType(TypeElement e, TypeElement p) {
// Type parameters are not considered to be enclosed by a type
scan(e.getTypeParameters(), p);
return scan(e.getEnclosedElements(), p);
}
@Override
- public Set<Element> visitExecutable(ExecutableElement e, DeclaredType p) {
+ public Set<Element> visitExecutable(ExecutableElement e, TypeElement p) {
// Type parameters are not considered to be enclosed by an executable
scan(e.getTypeParameters(), p);
return scan(e.getEnclosedElements(), p);
}
@Override
- public Set<Element> scan(Element e, DeclaredType p) {
+ public Set<Element> scan(Element e, TypeElement p) {
java.util.List<? extends AnnotationMirror> annotationMirrors =
processingEnv.getElementUtils().getAllAnnotationMirrors(e);
for (AnnotationMirror annotationMirror : annotationMirrors) {
- if (typeUtil.isSameType(annotationMirror.getAnnotationType(), p))
+ if (p.equals(annotationMirror.getAnnotationType().asElement()))
annotatedElements.add(e);
}
e.accept(this, p);
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Tue Jan 28 11:21:43 2014 -0800
@@ -72,21 +72,21 @@
compiler.err.already.defined.in.clinit={0} {1}\u306F\u3059\u3067\u306B{3} {4}\u306E{2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
# 0: string
-compiler.err.already.defined.single.import={0}\u306F\u5358\u4E00\u306E\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u5BA3\u8A00\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+compiler.err.already.defined.single.import=\u540C\u3058\u5358\u7D14\u540D\u306E\u578B\u304C{0}\u306E\u5358\u4E00\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u3088\u3063\u3066\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
# 0: string
-compiler.err.already.defined.static.single.import={0}\u306Fstatic\u306E\u5358\u4E00\u306E\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u5BA3\u8A00\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+compiler.err.already.defined.static.single.import=\u540C\u3058\u5358\u7D14\u540D\u306E\u578B\u304C{0}\u306Estatic\u5358\u4E00\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u3088\u3063\u3066\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
compiler.err.already.defined.this.unit={0}\u306F\u30B3\u30F3\u30D1\u30A4\u30EB\u5358\u4F4D\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
# 0: type, 1: list of name
-compiler.err.annotation.missing.default.value=\u6CE8\u91C8{0}\u306B\u306F\u5C5E\u6027{1}\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+compiler.err.annotation.missing.default.value=\u6CE8\u91C8@{0}\u306B\u306F\u8981\u7D20''{1}''\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u304C\u3042\u308A\u307E\u305B\u3093
# 0: type, 1: list of name
-compiler.err.annotation.missing.default.value.1=\u6CE8\u91C8{0}\u306B\u306F\u5C5E\u6027{1}\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+compiler.err.annotation.missing.default.value.1=\u6CE8\u91C8@{0}\u306B\u306F\u8981\u7D20{1}\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u304C\u3042\u308A\u307E\u305B\u3093
# 0: type
-compiler.err.annotation.not.valid.for.type=\u6CE8\u91C8\u306F\u578B{0}\u306E\u5024\u306B\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+compiler.err.annotation.not.valid.for.type=\u6CE8\u91C8\u306F\u578B{0}\u306E\u8981\u7D20\u306B\u5BFE\u3057\u3066\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
compiler.err.annotation.type.not.applicable=\u6CE8\u91C8\u578B\u306F\u3053\u306E\u7A2E\u985E\u306E\u5BA3\u8A00\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
@@ -112,7 +112,7 @@
# 0: type
compiler.err.array.req.but.found=\u914D\u5217\u304C\u8981\u6C42\u3055\u308C\u307E\u3057\u305F\u304C\u3001{0}\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
-compiler.err.attribute.value.must.be.constant=\u5C5E\u6027\u306E\u5024\u306F\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+compiler.err.attribute.value.must.be.constant=\u8981\u7D20\u5024\u306F\u5B9A\u6570\u5F0F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
# 0: statement type
compiler.err.bad.initializer={0}\u306E\u4E0D\u6B63\u306A\u521D\u671F\u5316\u5B50
@@ -223,62 +223,61 @@
# 0: symbol
compiler.err.cyclic.inheritance={0}\u3092\u542B\u3080\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
-compiler.err.cyclic.annotation.element=\u6CE8\u91C8\u306E\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
+# 0: symbol
+compiler.err.cyclic.annotation.element=\u8981\u7D20{0}\u306E\u578B\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
# 0: unused
compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5217\u6319\u578B\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3067\u306F\u3001\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u306E\u547C\u51FA\u3057\u306F\u3067\u304D\u307E\u305B\u3093
# 0: type
-compiler.err.no.superclass={0}\u306B\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093
+compiler.err.no.superclass={0}\u306B\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
compiler.err.concrete.inheritance.conflict={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3068{3}\u306E{2}\u306F\u540C\u3058\u30B7\u30B0\u30CD\u30C1\u30E3\u304B\u3089\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059
-compiler.err.default.allowed.in.intf.annotation.member=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F@interface\u30E1\u30F3\u30D0\u30FC\u5185\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
+compiler.err.default.allowed.in.intf.annotation.member=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u6CE8\u91C8\u578B\u306E\u5BA3\u8A00\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
# 0: symbol
compiler.err.doesnt.exist=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
-compiler.err.duplicate.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
-
# 0: type
-compiler.err.duplicate.annotation.invalid.repeated=\u6CE8\u91C8{0}\u3092\u7E70\u308A\u8FD4\u305B\u307E\u305B\u3093\n\u6709\u52B9\u306A\u5305\u542B\u3059\u308B\u6CE8\u91C8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+compiler.err.duplicate.annotation.invalid.repeated=\u6CE8\u91C8{0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093
# 0: name, 1: type
-compiler.err.duplicate.annotation.member.value={1}\u306E\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC\u306E\u5024{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
-
-# 0: type, 1: type
-compiler.err.duplicate.annotation.missing.container=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306E\u5BA3\u8A00\u306B\u306F\u6709\u52B9\u306A{1}\u6CE8\u91C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-
-# 0: type
-compiler.err.invalid.repeatable.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306F\u7121\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3055\u308C\u3066\u3044\u307E\u3059
+compiler.err.duplicate.annotation.member.value=\u6CE8\u91C8@{1}\u306B\u91CD\u8907\u3057\u305F\u8981\u7D20''{0}''\u304C\u3042\u308A\u307E\u3059\u3002
+
+# 0: name, 1: unused
+compiler.err.duplicate.annotation.missing.container={0}\u306F\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+
+# 0: type, 1: unused
+compiler.err.invalid.repeatable.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306F\u7121\u52B9\u306A@Repeatable\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3055\u308C\u3066\u3044\u307E\u3059
# 0: symbol or type
-compiler.err.invalid.repeatable.annotation.no.value=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5024\u8981\u7D20\u30E1\u30BD\u30C3\u30C9\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+compiler.err.invalid.repeatable.annotation.no.value={0}\u306F\u6709\u52B9\u306A@Repeatable\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5024\u8981\u7D20\u30E1\u30BD\u30C3\u30C9\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093
# 0: type, 1: number
-compiler.err.invalid.repeatable.annotation.multiple.values=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002{1}\u5024\u8981\u7D20\u30E1\u30BD\u30C3\u30C9\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059
+compiler.err.invalid.repeatable.annotation.multiple.values={0}\u306F\u6709\u52B9\u306A@Repeatable\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002{1}\u8981\u7D20\u30E1\u30BD\u30C3\u30C9''value''\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059
# 0: type
-compiler.err.invalid.repeatable.annotation.invalid.value=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093: \u5024\u8981\u7D20\u304C\u7121\u52B9\u3067\u3059
-
-# 0: symbol type, 1: type, 2: type
-compiler.err.invalid.repeatable.annotation.value.return=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: \u5305\u542B\u3059\u308B\u6CE8\u91C8{0}\u306E\u5024\u8981\u7D20\u306B\u306F\u578B{2}\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002{1}\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
+compiler.err.invalid.repeatable.annotation.invalid.value={0}\u306F\u6709\u52B9\u306A@Repeatable\u3067\u306F\u3042\u308A\u307E\u305B\u3093: \u5024\u8981\u7D20\u304C\u7121\u52B9\u3067\u3059
+
+# 0: symbol type, 1: unused, 2: type
+compiler.err.invalid.repeatable.annotation.value.return=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306F\u578B{2}\u306E\u8981\u7D20''value''\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
# 0: symbol or type, 1: symbol
-compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5305\u542B\u3059\u308B\u6CE8\u91C8{0}\u306B\u306F\u8981\u7D20{1}\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-
-# 0: symbol, 1: type, 2: symbol, 3: type
-compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u3059\u308B\u6CE8\u91C8{0}\u306B\u306F\u3001\u4FDD\u6709{3}\u3092\u542B\u3080\u5305\u542B\u3055\u308C\u305F\u6CE8\u91C8{2}\u3088\u308A\u77ED\u3044\u4FDD\u6709({1})\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B{0}\u306B\u306F\u8981\u7D20{1}\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+# 0: symbol, 1: unused, 2: symbol, 3: unused
+compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306E\u4FDD\u6709\u304C\u3001\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B({2})\u306E\u4FDD\u6709\u3088\u308A\u77ED\u304F\u306A\u3063\u3066\u3044\u307E\u3059
# 0: symbol, 1: symbol
-compiler.err.invalid.repeatable.annotation.not.documented=\u7E70\u308A\u8FD4\u3055\u308C\u305F\u6CE8\u91C8{1}\u306F@Documented\u3067\u3059\u304C\u3001\u5305\u542B\u3059\u308B\u6CE8\u91C8\u30BF\u30A4\u30D7{0}\u306F\u9055\u3044\u307E\u3059
+compiler.err.invalid.repeatable.annotation.not.documented=\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B({1})\u306F@Documented\u3067\u3059\u304C\u3001\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306F\u9055\u3044\u307E\u3059
# 0: symbol, 1: symbol
-compiler.err.invalid.repeatable.annotation.not.inherited=\u308A\u8FD4\u3055\u308C\u305F\u6CE8\u91C8\u30BF\u30A4\u30D7{1}\u306F@Inherited\u3067\u3059\u304C\u3001\u5305\u542B\u3059\u308B\u6CE8\u91C8\u30BF\u30A4\u30D7{0}\u306F\u9055\u3044\u307E\u3059
+compiler.err.invalid.repeatable.annotation.not.inherited=\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B({1})\u306F@Inherited\u3067\u3059\u304C\u3001\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306F\u9055\u3044\u307E\u3059
# 0: symbol, 1: symbol
-compiler.err.invalid.repeatable.annotation.incompatible.target=\u30B3\u30F3\u30C6\u30CA\u6CE8\u91C8{0}\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306F\u3001\u7E70\u308A\u8FD4\u3055\u308C\u305F\u6CE8\u91C8{1}\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u30B5\u30D6\u30BB\u30C3\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+compiler.err.invalid.repeatable.annotation.incompatible.target=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306F\u3001\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B({1})\u3088\u308A\u591A\u304F\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306B\u9069\u7528\u3055\u308C\u307E\u3059
# 0: symbol
compiler.err.invalid.repeatable.annotation.repeated.and.container.present=\u30B3\u30F3\u30C6\u30CA{0}\u306F\u542B\u307E\u308C\u3066\u3044\u308B\u8981\u7D20\u3068\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093
@@ -408,20 +407,24 @@
# 0: number
compiler.err.int.number.too.large=\u6574\u6570{0}\u304C\u5927\u304D\u3059\u304E\u307E\u3059
-compiler.err.intf.annotation.members.cant.have.params=@interface\u30E1\u30F3\u30D0\u30FC\u304C\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-
-compiler.err.intf.annotation.cant.have.type.params=@interface\u304C\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-
-compiler.err.intf.annotation.members.cant.have.type.params=@interface\u30E1\u30F3\u30D0\u30FC\u304C\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+compiler.err.intf.annotation.members.cant.have.params=\u6CE8\u91C8\u578B\u5BA3\u8A00\u5185\u306E\u8981\u7D20\u304C\u4EEE\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u5BA3\u8A00\u3067\u304D\u307E\u305B\u3093
+
+# 0: symbol
+compiler.err.intf.annotation.cant.have.type.params=\u6CE8\u91C8\u578B{0}\u306F\u6C4E\u7528\u306B\u3067\u304D\u307E\u305B\u3093
+
+compiler.err.intf.annotation.members.cant.have.type.params=\u6CE8\u91C8\u578B\u5BA3\u8A00\u5185\u306E\u8981\u7D20\u306F\u6C4E\u7528\u30E1\u30BD\u30C3\u30C9\u306B\u3067\u304D\u307E\u305B\u3093
# 0: symbol, 1: type
-compiler.err.intf.annotation.member.clash=@interface\u30E1\u30F3\u30D0\u30FC\u306F{1}\u306E\u30E1\u30BD\u30C3\u30C9''{0}''\u3068\u7AF6\u5408\u3057\u307E\u3059
+compiler.err.intf.annotation.member.clash=\u6CE8\u91C8\u578B{1}\u3067\u30E1\u30BD\u30C3\u30C9{0}\u3068\u540C\u3058\u540D\u524D\u306E\u8981\u7D20\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059
compiler.err.intf.expected.here=\u3053\u3053\u306B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304C\u5FC5\u8981\u3067\u3059
+compiler.err.intf.or.array.expected.here=\u3053\u3053\u306B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u307E\u305F\u306F\u914D\u5217\u578B\u304C\u5FC5\u8981\u3067\u3059
+
compiler.err.intf.meth.cant.have.body=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-compiler.err.invalid.annotation.member.type=\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059
+# 0: symbol
+compiler.err.invalid.annotation.member.type=\u6CE8\u91C8\u578B\u306E\u8981\u7D20{0}\u306E\u578B\u304C\u7121\u52B9\u3067\u3059
compiler.err.invalid.binary.number=2\u9032\u6570\u5B57\u306F\u5C11\u306A\u304F\u3068\u30821\u6841\u306E2\u9032\u6570\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
@@ -531,9 +534,6 @@
compiler.misc.incompatible.arg.types.in.mref=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u306F\u4E0D\u9069\u5408\u3067\u3059
-# 0: list of type, 1: message segment
-compiler.misc.bad.arg.types.in.lambda=\u63A8\u5B9A\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u3067\u306F\u30E9\u30E0\u30C0\u5F0F\u306E\u578B\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\n\u63A8\u5B9A\u578B: {0}
-
compiler.err.new.not.allowed.in.annotation=''new''\u306F\u6CE8\u91C8\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
compiler.err.no.annotation.member={1}\u306E\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC{0}\u304C\u3042\u308A\u307E\u305B\u3093
@@ -998,6 +998,9 @@
# 0: symbol
compiler.warn.missing.SVUID=\u76F4\u5217\u5316\u53EF\u80FD\u306A\u30AF\u30E9\u30B9{0}\u306B\u306F\u3001serialVersionUID\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
+compiler.warn.potentially.ambiguous.overload={1}\u5185\u306E{0}\u306F{3}\u5185\u306E{2}\u3068\u77DB\u76FE\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
+
# 0: message segment
compiler.warn.override.varargs.missing={0}\u3002\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306B\u306F''...''\u304C\u3042\u308A\u307E\u305B\u3093
@@ -1215,6 +1218,7 @@
# 0: symbol, 1: message segment
compiler.err.cant.access={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1}
+# 0: file name, 1: message segment
compiler.misc.bad.class.file.header=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306F\u4E0D\u6B63\u3067\u3059\n{1}\n\u524A\u9664\u3059\u308B\u304B\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u306E\u6B63\u3057\u3044\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u3042\u308B\u304B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
# 0: file name, 1: message segment
@@ -1244,6 +1248,12 @@
compiler.misc.class.file.not.found={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+# 0: classfile major version, 1: classfile minor version
+compiler.misc.invalid.default.interface=\u30D0\u30FC\u30B8\u30E7\u30F3{0}.{1}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
+
+# 0: classfile major version, 1: classfile minor version
+compiler.misc.invalid.static.interface=\u30D0\u30FC\u30B8\u30E7\u30F3{0}.{1}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306Bstatic\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
+
# 0: name
compiler.misc.file.doesnt.contain.class=\u30D5\u30A1\u30A4\u30EB\u306B\u30AF\u30E9\u30B9{0}\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
@@ -1362,9 +1372,6 @@
# 0: type, 1: list of type
compiler.misc.inferred.do.not.conform.to.eq.bounds=\u63A8\u8AD6\u578B\u304C\u7B49\u4FA1\u5236\u7D04\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u63A8\u8AD6: {0}\n\u7B49\u4FA1\u5236\u7D04: {1}
-# 0: list of type
-compiler.misc.cyclic.inference=\u63A8\u8AD6\u306E\u30EB\u30FC\u30D7\u306E\u305F\u3081\u3001\u63A8\u8AD6\u5909\u6570{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093
-
# 0: symbol
compiler.misc.diamond={0}<>
@@ -1374,6 +1381,9 @@
# 0: unused
compiler.misc.diamond.and.explicit.params=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u660E\u793A\u7684\u306A\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F''<>''\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+# 0: unused
+compiler.misc.mref.infer.and.explicit.params=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u660E\u793A\u7684\u306A\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306Fraw\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+
# 0: type, 1: list of type
compiler.misc.explicit.param.do.not.conform.to.bounds=\u660E\u793A\u7684\u306A\u578B\u5F15\u6570{0}\u306F\u3001\u5BA3\u8A00\u3055\u308C\u305F\u5883\u754C{1}\u306B\u9069\u5408\u3057\u307E\u305B\u3093
@@ -1574,6 +1584,8 @@
compiler.warn.underscore.as.identifier=\u8B58\u5225\u5B50\u3068\u3057\u3066''_''\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F\n(\u8B58\u5225\u5B50\u3068\u3057\u3066\u306E''_''\u306E\u4F7F\u7528\u306F\u3001Java SE 8\u3088\u308A\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059)
+compiler.err.underscore.as.identifier.in.lambda=''_''\u304C\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\n(\u30E9\u30E0\u30C0\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F''_''\u3092\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u7981\u6B62\u3055\u308C\u3066\u3044\u307E\u3059)
+
compiler.err.enum.as.identifier=\u30EA\u30EA\u30FC\u30B95\u304B\u3089''enum''\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u306A\u306E\u3067\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n(''enum''\u3092\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u306B\u306F-source 1.4\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
compiler.err.assert.as.identifier=\u30EA\u30EA\u30FC\u30B91.4\u304B\u3089''assert''\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u306A\u306E\u3067\u3001\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n(''assert''\u3092\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001-source 1.3\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
@@ -1585,11 +1597,12 @@
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=\u53D7\u53D6\u308A\u5074\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u6700\u4E0A\u4F4D\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093
# TODO 308: make a better error message
-compiler.err.cant.annotate.static.class=\u5305\u542B\u3059\u308Bstatic\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9\u306F\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+# 0: symbol
+compiler.err.cant.type.annotate.scoping.1=\u30B9\u30B3\u30FC\u30D7\u30FB\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30C8\u3092\u578B\u4F7F\u7528\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093: {0}
# TODO 308: make a better error message
-# 0: unused
-compiler.err.cant.annotate.nested.type=static\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30BF\u30A4\u30D7\u306E\u30B9\u30B3\u30FC\u30D7\u30FB\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30C8\u306B\u306F\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+# 0: list of symbol
+compiler.err.cant.type.annotate.scoping=\u30B9\u30B3\u30FC\u30D7\u30FB\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30C8\u3092\u578B\u4F7F\u7528\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093: {0}
# 0: type, 1: type
compiler.err.incorrect.receiver.name=\u53D7\u53D6\u308A\u5074\u306E\u540D\u524D\u304C\u3001\u5305\u542B\u3059\u308B\u30AF\u30E9\u30B9\u30FB\u30BF\u30A4\u30D7\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\n\u5FC5\u9808: {0}\n\u691C\u51FA: {1}
@@ -1618,7 +1631,10 @@
compiler.err.type.annotations.not.supported.in.source=\u30BF\u30A4\u30D7\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30BF\u30A4\u30D7\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
# 0: string
-compiler.err.foreach.not.supported.in.source=for-each\u30EB\u30FC\u30D7\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(for-each\u30EB\u30FC\u30D7\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 5\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+compiler.err.repeatable.annotations.not.supported.in.source=\u7E70\u8FD4\u3057\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u7E70\u8FD4\u3057\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+
+# 0: string
+compiler.err.foreach.not.supported.in.source=\u62E1\u5F35for\u30EB\u30FC\u30D7\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(for-each\u30EB\u30FC\u30D7\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 5\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
# 0: string
compiler.err.static.import.not.supported.in.source=static import\u5BA3\u8A00\u306F -source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(static import\u5BA3\u8A00\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 5\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Tue Jan 28 11:21:43 2014 -0800
@@ -72,21 +72,21 @@
compiler.err.already.defined.in.clinit=\u5DF2\u5728{3} {4}\u7684{2}\u4E2D\u5B9A\u4E49\u4E86{0} {1}
# 0: string
-compiler.err.already.defined.single.import=\u5DF2\u5728 single-type \u5BFC\u5165\u4E2D\u5B9A\u4E49{0}
+compiler.err.already.defined.single.import={0}\u7684 single-type-import \u5DF2\u5B9A\u4E49\u5177\u6709\u76F8\u540C\u7B80\u540D\u7684\u7C7B\u578B
# 0: string
-compiler.err.already.defined.static.single.import=\u5DF2\u5728\u9759\u6001 single-type \u5BFC\u5165\u4E2D\u5B9A\u4E49{0}
+compiler.err.already.defined.static.single.import={0}\u7684\u9759\u6001 single-type-import \u5DF2\u5B9A\u4E49\u5177\u6709\u76F8\u540C\u7B80\u540D\u7684\u7C7B\u578B
compiler.err.already.defined.this.unit=\u5DF2\u5728\u8BE5\u7F16\u8BD1\u5355\u5143\u4E2D\u5B9A\u4E49{0}
# 0: type, 1: list of name
-compiler.err.annotation.missing.default.value=\u5BF9\u4E8E\u5C5E\u6027{1}, \u6CE8\u91CA{0}\u7F3A\u5C11\u503C
+compiler.err.annotation.missing.default.value=\u5BF9\u4E8E\u5143\u7D20 ''{1}'', \u6CE8\u91CA @{0} \u7F3A\u5C11\u9ED8\u8BA4\u503C
# 0: type, 1: list of name
-compiler.err.annotation.missing.default.value.1=\u5BF9\u4E8E\u5C5E\u6027{1}, \u6CE8\u91CA{0}\u7F3A\u5C11\u503C
+compiler.err.annotation.missing.default.value.1=\u5BF9\u4E8E\u5143\u7D20{1}, \u6CE8\u91CA @{0} \u7F3A\u5C11\u9ED8\u8BA4\u503C
# 0: type
-compiler.err.annotation.not.valid.for.type=\u5BF9\u4E8E\u7C7B\u578B\u4E3A{0}\u7684\u503C, \u6CE8\u91CA\u65E0\u6548
+compiler.err.annotation.not.valid.for.type=\u6CE8\u91CA\u5BF9\u4E8E\u7C7B\u578B{0}\u7684\u5143\u7D20\u65E0\u6548
compiler.err.annotation.type.not.applicable=\u6CE8\u91CA\u7C7B\u578B\u4E0D\u9002\u7528\u4E8E\u8BE5\u7C7B\u578B\u7684\u58F0\u660E
@@ -112,7 +112,7 @@
# 0: type
compiler.err.array.req.but.found=\u9700\u8981\u6570\u7EC4, \u4F46\u627E\u5230{0}
-compiler.err.attribute.value.must.be.constant=\u5C5E\u6027\u503C\u5FC5\u987B\u4E3A\u5E38\u91CF
+compiler.err.attribute.value.must.be.constant=\u5143\u7D20\u503C\u5FC5\u987B\u4E3A\u5E38\u91CF\u8868\u8FBE\u5F0F
# 0: statement type
compiler.err.bad.initializer={0}\u7684\u521D\u59CB\u5316\u7A0B\u5E8F\u9519\u8BEF
@@ -223,62 +223,61 @@
# 0: symbol
compiler.err.cyclic.inheritance=\u6D89\u53CA{0}\u7684\u5FAA\u73AF\u7EE7\u627F
-compiler.err.cyclic.annotation.element=\u5FAA\u73AF\u6CE8\u91CA\u5143\u7D20\u7C7B\u578B
+# 0: symbol
+compiler.err.cyclic.annotation.element=\u5143\u7D20 {0} \u7684\u7C7B\u578B\u4E3A\u5FAA\u73AF
# 0: unused
compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5728\u679A\u4E3E\u6784\u9020\u5668\u4E2D\u4E0D\u5141\u8BB8\u8C03\u7528\u8D85\u7C7B
# 0: type
-compiler.err.no.superclass={0}\u4E0D\u5177\u6709\u8D85\u7C7B
+compiler.err.no.superclass={0}\u4E0D\u5177\u6709\u8D85\u7C7B\u3002
# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
compiler.err.concrete.inheritance.conflict={1}\u4E2D\u7684\u65B9\u6CD5{0}\u548C{3}\u4E2D\u7684\u65B9\u6CD5{2}\u662F\u4F7F\u7528\u76F8\u540C\u7684\u7B7E\u540D\u7EE7\u627F\u7684
-compiler.err.default.allowed.in.intf.annotation.member=\u4EC5\u5728 @interface \u6210\u5458\u4E2D\u5141\u8BB8\u4F7F\u7528\u9ED8\u8BA4\u503C
+compiler.err.default.allowed.in.intf.annotation.member=\u6CE8\u91CA\u7C7B\u578B\u58F0\u660E\u4E2D\u4EC5\u5141\u8BB8\u9ED8\u8BA4\u503C
# 0: symbol
compiler.err.doesnt.exist=\u7A0B\u5E8F\u5305{0}\u4E0D\u5B58\u5728
-compiler.err.duplicate.annotation=\u6CE8\u91CA\u91CD\u590D
-
# 0: type
-compiler.err.duplicate.annotation.invalid.repeated=\u65E0\u6CD5\u91CD\u590D\u6CE8\u91CA{0}\n\u5B83\u6CA1\u6709\u5B9A\u4E49\u6709\u6548\u7684\u5305\u542B\u6CE8\u91CA\u3002
+compiler.err.duplicate.annotation.invalid.repeated=\u6CE8\u91CA{0}\u4E0D\u662F\u6709\u6548\u7684\u53EF\u91CD\u590D\u6CE8\u91CA
# 0: name, 1: type
-compiler.err.duplicate.annotation.member.value={1}\u4E2D\u7684\u6CE8\u91CA\u6210\u5458\u503C{0}\u91CD\u590D
-
-# 0: type, 1: type
-compiler.err.duplicate.annotation.missing.container=\u6CE8\u91CA\u91CD\u590D: {0}\u7684\u58F0\u660E\u6CA1\u6709\u6709\u6548\u7684{1}\u6CE8\u91CA
-
-# 0: type
-compiler.err.invalid.repeatable.annotation=\u6CE8\u91CA\u91CD\u590D: \u4F7F\u7528\u65E0\u6548\u7684 Repeatable \u6CE8\u91CA\u5BF9{0}\u8FDB\u884C\u4E86\u6CE8\u91CA
+compiler.err.duplicate.annotation.member.value=\u6CE8\u91CA@{1}\u4E2D\u7684\u5143\u7D20 ''{0}'' \u91CD\u590D\u3002
+
+# 0: name, 1: unused
+compiler.err.duplicate.annotation.missing.container={0} \u4E0D\u662F\u53EF\u91CD\u590D\u7684\u6CE8\u91CA\u7C7B\u578B
+
+# 0: type, 1: unused
+compiler.err.invalid.repeatable.annotation=\u6CE8\u91CA\u91CD\u590D: \u4F7F\u7528\u65E0\u6548\u7684 @Repeatable \u6CE8\u91CA\u5BF9{0}\u8FDB\u884C\u4E86\u6CE8\u91CA
# 0: symbol or type
-compiler.err.invalid.repeatable.annotation.no.value=\u6CE8\u91CA\u91CD\u590D: {0}\u4E0D\u662F\u6709\u6548\u7684 Repeatable, \u672A\u58F0\u660E\u4EFB\u4F55\u503C\u5143\u7D20\u65B9\u6CD5
+compiler.err.invalid.repeatable.annotation.no.value={0}\u4E0D\u662F\u6709\u6548\u7684 @Repeatable, \u672A\u58F0\u660E\u4EFB\u4F55\u503C\u5143\u7D20\u65B9\u6CD5
# 0: type, 1: number
-compiler.err.invalid.repeatable.annotation.multiple.values=\u6CE8\u91CA\u91CD\u590D: {0}\u4E0D\u662F\u6709\u6548\u7684 Repeatable, \u5DF2\u58F0\u660E {1} \u4E2A\u503C\u5143\u7D20\u65B9\u6CD5
+compiler.err.invalid.repeatable.annotation.multiple.values={0}\u4E0D\u662F\u6709\u6548\u7684 @Repeatable, \u5DF2\u58F0\u660E {1} \u4E2A\u540D\u4E3A ''value'' \u7684\u5143\u7D20\u65B9\u6CD5
# 0: type
-compiler.err.invalid.repeatable.annotation.invalid.value=\u6CE8\u91CA\u91CD\u590D: {0}\u4E0D\u662F\u6709\u6548\u7684 Repeatable: \u503C\u5143\u7D20\u65E0\u6548
-
-# 0: symbol type, 1: type, 2: type
-compiler.err.invalid.repeatable.annotation.value.return=\u6CE8\u91CA\u91CD\u590D: \u5305\u542B\u6CE8\u91CA{0}\u7684\u503C\u5143\u7D20\u5E94\u5177\u6709\u7C7B\u578B{2}, \u4F46\u627E\u5230\u7684\u662F{1}
+compiler.err.invalid.repeatable.annotation.invalid.value={0}\u4E0D\u662F\u6709\u6548\u7684 @Repeatable: \u503C\u5143\u7D20\u65E0\u6548
+
+# 0: symbol type, 1: unused, 2: type
+compiler.err.invalid.repeatable.annotation.value.return=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u5FC5\u987B\u58F0\u660E\u7C7B\u578B{2}\u7684\u540D\u4E3A ''value'' \u7684\u5143\u7D20
# 0: symbol or type, 1: symbol
-compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5305\u542B\u6CE8\u91CA{0}\u6CA1\u6709\u5143\u7D20 {1} \u7684\u9ED8\u8BA4\u503C
-
-# 0: symbol, 1: type, 2: symbol, 3: type
-compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u6CE8\u91CA {0} \u7684\u4FDD\u7559\u671F ({1}) \u77ED\u4E8E\u5DF2\u5305\u542B\u6CE8\u91CA {2} \u7684\u4FDD\u7559\u671F ({3})
+compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5BF9\u4E8E\u5143\u7D20 {1}, \u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u6CA1\u6709\u9ED8\u8BA4\u503C
+
+# 0: symbol, 1: unused, 2: symbol, 3: unused
+compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u7684\u4FDD\u7559\u671F\u77ED\u4E8E\u53EF\u91CD\u590D\u6CE8\u91CA\u7C7B\u578B ({2}) \u7684\u4FDD\u7559\u671F
# 0: symbol, 1: symbol
-compiler.err.invalid.repeatable.annotation.not.documented=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B {0} \u4E0D\u662F @Documented, \u800C\u91CD\u590D\u7684\u6CE8\u91CA\u7C7B\u578B {1} \u4E3A
+compiler.err.invalid.repeatable.annotation.not.documented=\u53EF\u91CD\u590D\u6CE8\u91CA\u7C7B\u578B ({1}) \u662F @Documented, \u800C\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u5219\u4E0D\u662F
# 0: symbol, 1: symbol
-compiler.err.invalid.repeatable.annotation.not.inherited=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B {0} \u4E0D\u662F @Inherited, \u800C\u91CD\u590D\u7684\u6CE8\u91CA\u7C7B\u578B {1} \u4E3A
+compiler.err.invalid.repeatable.annotation.not.inherited=\u53EF\u91CD\u590D\u6CE8\u91CA\u7C7B\u578B ({1}) \u662F @Inherited, \u800C\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u5219\u4E0D\u662F
# 0: symbol, 1: symbol
-compiler.err.invalid.repeatable.annotation.incompatible.target=\u5BB9\u5668\u6CE8\u91CA {0} \u7684\u76EE\u6807\u4E0D\u662F\u91CD\u590D\u6CE8\u91CA {1} \u7684\u76EE\u6807\u5B50\u96C6
+compiler.err.invalid.repeatable.annotation.incompatible.target=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u9002\u7528\u7684\u76EE\u6807\u591A\u4E8E\u53EF\u91CD\u590D\u6CE8\u91CA\u7C7B\u578B ({1})
# 0: symbol
compiler.err.invalid.repeatable.annotation.repeated.and.container.present=\u5BB9\u5668 {0} \u4E0D\u5F97\u4E0E\u5176\u5305\u542B\u7684\u5143\u7D20\u540C\u65F6\u5B58\u5728
@@ -408,20 +407,24 @@
# 0: number
compiler.err.int.number.too.large=\u8FC7\u5927\u7684\u6574\u6570: {0}
-compiler.err.intf.annotation.members.cant.have.params=@interface \u6210\u5458\u4E0D\u80FD\u5E26\u6709\u53C2\u6570
-
-compiler.err.intf.annotation.cant.have.type.params=@interface \u4E0D\u80FD\u5E26\u6709\u7C7B\u578B\u53C2\u6570
-
-compiler.err.intf.annotation.members.cant.have.type.params=@interface \u6210\u5458\u4E0D\u80FD\u5E26\u6709\u7C7B\u578B\u53C2\u6570
+compiler.err.intf.annotation.members.cant.have.params=\u6CE8\u91CA\u7C7B\u578B\u58F0\u660E\u4E2D\u7684\u5143\u7D20\u65E0\u6CD5\u58F0\u660E\u5F62\u53C2
+
+# 0: symbol
+compiler.err.intf.annotation.cant.have.type.params=\u6CE8\u91CA\u7C7B\u578B {0} \u4E0D\u80FD\u4E3A\u6CDB\u578B
+
+compiler.err.intf.annotation.members.cant.have.type.params=\u6CE8\u91CA\u7C7B\u578B\u58F0\u660E\u4E2D\u7684\u5143\u7D20\u4E0D\u80FD\u4E3A\u6CDB\u578B\u65B9\u6CD5
# 0: symbol, 1: type
-compiler.err.intf.annotation.member.clash=@interface \u6210\u5458\u4E0E{1}\u4E2D\u7684\u65B9\u6CD5 ''{0}'' \u51B2\u7A81
+compiler.err.intf.annotation.member.clash=\u6CE8\u91CA\u7C7B\u578B{1}\u58F0\u660E\u4E0E\u65B9\u6CD5 {0} \u540C\u540D\u7684\u5143\u7D20
compiler.err.intf.expected.here=\u6B64\u5904\u9700\u8981\u63A5\u53E3
+compiler.err.intf.or.array.expected.here=\u6B64\u5904\u9884\u671F\u4E3A\u63A5\u53E3\u6216\u6570\u7EC4\u7C7B\u578B
+
compiler.err.intf.meth.cant.have.body=\u63A5\u53E3\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53
-compiler.err.invalid.annotation.member.type=\u6CE8\u91CA\u6210\u5458\u7684\u7C7B\u578B\u65E0\u6548
+# 0: symbol
+compiler.err.invalid.annotation.member.type=\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20 {0} \u7684\u7C7B\u578B\u65E0\u6548
compiler.err.invalid.binary.number=\u4E8C\u8FDB\u5236\u6570\u5B57\u4E2D\u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4E2A\u4E8C\u8FDB\u5236\u6570
@@ -531,9 +534,6 @@
compiler.misc.incompatible.arg.types.in.mref=\u65B9\u6CD5\u5F15\u7528\u4E2D\u7684\u53C2\u6570\u7C7B\u578B\u4E0D\u517C\u5BB9
-# 0: list of type, 1: message segment
-compiler.misc.bad.arg.types.in.lambda=\u65E0\u6CD5\u4F7F\u7528\u63A8\u65AD\u53C2\u6570\u7C7B\u578B\u5BF9 lambda \u8868\u8FBE\u5F0F\u8FDB\u884C\u7C7B\u578B\u68C0\u67E5\n\u63A8\u65AD\u7C7B\u578B: {0}
-
compiler.err.new.not.allowed.in.annotation=\u6CE8\u91CA\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528 ''new''
compiler.err.no.annotation.member={1}\u4E2D\u6CA1\u6709\u6CE8\u91CA\u6210\u5458{0}
@@ -998,6 +998,9 @@
# 0: symbol
compiler.warn.missing.SVUID=\u53EF\u5E8F\u5217\u5316\u7C7B{0}\u6CA1\u6709 serialVersionUID \u7684\u5B9A\u4E49
+# 0: symbol, 1: symbol, 2: symbol, 3: symbol
+compiler.warn.potentially.ambiguous.overload={1} \u4E2D\u7684 {0} \u53EF\u80FD\u4E0E {3} \u4E2D\u7684 {2} \u6DF7\u6DC6
+
# 0: message segment
compiler.warn.override.varargs.missing={0}; \u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u6CA1\u6709 ''...''
@@ -1215,6 +1218,7 @@
# 0: symbol, 1: message segment
compiler.err.cant.access=\u65E0\u6CD5\u8BBF\u95EE{0}\n{1}
+# 0: file name, 1: message segment
compiler.misc.bad.class.file.header=\u9519\u8BEF\u7684\u7C7B\u6587\u4EF6: {0}\n{1}\n\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u6216\u786E\u4FDD\u8BE5\u6587\u4EF6\u4F4D\u4E8E\u6B63\u786E\u7684\u7C7B\u8DEF\u5F84\u5B50\u76EE\u5F55\u4E2D\u3002
# 0: file name, 1: message segment
@@ -1244,6 +1248,12 @@
compiler.misc.class.file.not.found=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6
+# 0: classfile major version, 1: classfile minor version
+compiler.misc.invalid.default.interface=\u5728 {0}.{1} \u7248\u7C7B\u6587\u4EF6\u4E2D\u627E\u5230\u9ED8\u8BA4\u65B9\u6CD5
+
+# 0: classfile major version, 1: classfile minor version
+compiler.misc.invalid.static.interface=\u5728 {0}.{1} \u7248\u7C7B\u6587\u4EF6\u4E2D\u627E\u5230\u9759\u6001\u65B9\u6CD5
+
# 0: name
compiler.misc.file.doesnt.contain.class=\u6587\u4EF6\u4E0D\u5305\u542B\u7C7B{0}
@@ -1362,9 +1372,6 @@
# 0: type, 1: list of type
compiler.misc.inferred.do.not.conform.to.eq.bounds=\u63A8\u65AD\u7C7B\u578B\u4E0D\u7B26\u5408\u7B49\u5F0F\u7EA6\u675F\u6761\u4EF6\n\u63A8\u65AD: {0}\n\u7B49\u5F0F\u7EA6\u675F\u6761\u4EF6: {1}
-# 0: list of type
-compiler.misc.cyclic.inference=\u7531\u4E8E\u63A8\u8BBA\u5FAA\u73AF, \u65E0\u6CD5\u5B9E\u4F8B\u5316\u63A8\u8BBA\u53D8\u91CF{0}
-
# 0: symbol
compiler.misc.diamond={0}<>
@@ -1374,6 +1381,9 @@
# 0: unused
compiler.misc.diamond.and.explicit.params=\u4E0D\u80FD\u5C06 ''<>'' \u4E0E\u6784\u9020\u5668\u7684\u663E\u5F0F\u7C7B\u578B\u53C2\u6570\u4E00\u8D77\u4F7F\u7528
+# 0: unused
+compiler.misc.mref.infer.and.explicit.params=\u4E0D\u80FD\u5C06\u539F\u59CB\u6784\u9020\u5668\u5F15\u7528\u4E0E\u6784\u9020\u5668\u7684\u663E\u5F0F\u7C7B\u578B\u53C2\u6570\u4E00\u8D77\u4F7F\u7528
+
# 0: type, 1: list of type
compiler.misc.explicit.param.do.not.conform.to.bounds=\u663E\u5F0F\u7C7B\u578B\u53C2\u6570{0}\u4E0D\u7B26\u5408\u58F0\u660E\u7684\u8303\u56F4{1}
@@ -1574,6 +1584,8 @@
compiler.warn.underscore.as.identifier=''_'' \u7528\u4F5C\u6807\u8BC6\u7B26\n(Java SE 8 \u4E4B\u540E\u7684\u53D1\u884C\u7248\u4E2D\u53EF\u80FD\u4E0D\u652F\u6301\u4F7F\u7528 ''_'' \u4F5C\u4E3A\u6807\u8BC6\u7B26)
+compiler.err.underscore.as.identifier.in.lambda=''_'' \u7528\u4F5C\u6807\u8BC6\u7B26\n(\u5BF9\u4E8E lambda \u53C2\u6570, \u7981\u6B62\u5C06 ''_'' \u7528\u4F5C\u6807\u8BC6\u7B26)
+
compiler.err.enum.as.identifier=\u4ECE\u53D1\u884C\u7248 5 \u5F00\u59CB, ''enum'' \u4E3A\u5173\u952E\u5B57, \u800C\u4E0D\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 1.4 \u6216\u66F4\u4F4E\u7248\u672C\u4EE5\u5C06 ''enum'' \u7528\u4F5C\u6807\u8BC6\u7B26)
compiler.err.assert.as.identifier=\u4ECE\u53D1\u884C\u7248 1.4 \u5F00\u59CB, ''assert'' \u662F\u4E00\u4E2A\u5173\u952E\u5B57, \u4F46\u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 1.3 \u6216\u66F4\u4F4E\u7248\u672C\u4EE5\u5C06 ''assert'' \u7528\u4F5C\u6807\u8BC6\u7B26)
@@ -1585,11 +1597,12 @@
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=\u63A5\u6536\u65B9\u53C2\u6570\u4E0D\u9002\u7528\u4E8E\u9876\u5C42\u7C7B\u7684\u6784\u9020\u5668
# TODO 308: make a better error message
-compiler.err.cant.annotate.static.class=\u65E0\u6CD5\u5BF9\u5C01\u95ED\u9759\u6001\u5D4C\u5957\u7C7B\u8FDB\u884C\u6CE8\u91CA
+# 0: symbol
+compiler.err.cant.type.annotate.scoping.1=\u65E0\u6CD5\u4F7F\u7528 type-use \u6CE8\u91CA {0} \u6765\u6CE8\u91CA\u786E\u5B9A\u4F5C\u7528\u57DF\u7ED3\u6784
# TODO 308: make a better error message
-# 0: unused
-compiler.err.cant.annotate.nested.type=\u65E0\u6CD5\u6CE8\u91CA\u7528\u4E8E\u9759\u6001\u5D4C\u5957\u7C7B\u578B\u7684\u786E\u5B9A\u4F5C\u7528\u57DF\u7ED3\u6784
+# 0: list of symbol
+compiler.err.cant.type.annotate.scoping=\u65E0\u6CD5\u4F7F\u7528 type-use \u6CE8\u91CA {0} \u6765\u6CE8\u91CA\u786E\u5B9A\u4F5C\u7528\u57DF\u7ED3\u6784
# 0: type, 1: type
compiler.err.incorrect.receiver.name=\u63A5\u6536\u65B9\u540D\u79F0\u4E0E\u5C01\u95ED\u7C7B\u7C7B\u578B\u4E0D\u5339\u914D\n\u9700\u8981: {0}\n\u627E\u5230: {1}
@@ -1618,7 +1631,10 @@
compiler.err.type.annotations.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u7C7B\u578B\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u7C7B\u578B\u6CE8\u91CA)
# 0: string
-compiler.err.foreach.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 for-each \u5FAA\u73AF\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 for-each \u5FAA\u73AF)
+compiler.err.repeatable.annotations.not.supported.in.source=-source {0}\u4E2D\u4E0D\u652F\u6301\u91CD\u590D\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u91CD\u590D\u6CE8\u91CA)
+
+# 0: string
+compiler.err.foreach.not.supported.in.source=-source {0}\u4E2D\u4E0D\u652F\u6301\u589E\u5F3A\u578B for \u5FAA\u73AF\n(\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 for-each \u5FAA\u73AF)
# 0: string
compiler.err.static.import.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9759\u6001\u5BFC\u5165\u58F0\u660E\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9759\u6001\u5BFC\u5165\u58F0\u660E)
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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,6 +28,7 @@
import com.sun.source.tree.Tree;
+import com.sun.source.util.TreePath;
import com.sun.tools.javac.code.*;
import com.sun.tools.javac.comp.AttrContext;
import com.sun.tools.javac.comp.Env;
@@ -342,6 +343,18 @@
return (lit.typetag == BOT);
}
+ /** Return true iff this tree is a child of some annotation. */
+ public static boolean isInAnnotation(Env<?> env, JCTree tree) {
+ TreePath tp = TreePath.getPath(env.toplevel, tree);
+ if (tp != null) {
+ for (Tree t : tp) {
+ if (t.getKind() == Tree.Kind.ANNOTATION)
+ return true;
+ }
+ }
+ return false;
+ }
+
public static String getCommentText(Env<?> env, JCTree tree) {
DocCommentTable docComments = (tree.hasTag(JCTree.Tag.TOPLEVEL))
? ((JCCompilationUnit) tree).docComments
--- a/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Names.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Names.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/javadoc/AnnotationDescImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/AnnotationDescImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java Tue Jan 28 11:21:43 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
@@ -1148,7 +1148,7 @@
//### Add the implicit "import java.lang.*" to the result
Names names = tsym.name.table.names;
- importedPackages.append(env.getPackageDoc(env.reader.enterPackage(names.java_lang)));
+ importedPackages.append(env.getPackageDoc(env.syms.enterPackage(names.java_lang)));
Env<AttrContext> compenv = env.enter.getEnv(tsym);
if (compenv == null) return new PackageDocImpl[0];
--- a/langtools/src/share/classes/com/sun/tools/javadoc/ConstructorDocImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/ConstructorDocImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/javadoc/DocEnv.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/DocEnv.java Tue Jan 28 11:21:43 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
@@ -142,7 +142,7 @@
reader = JavadocClassReader.instance0(context);
enter = JavadocEnter.instance0(context);
names = Names.instance(context);
- externalizableSym = reader.enterClass(names.fromString("java.io.Externalizable"));
+ externalizableSym = syms.enterClass(names.fromString("java.io.Externalizable"));
chk = Check.instance(context);
types = Types.instance(context);
fileManager = context.get(JavaFileManager.class);
--- a/langtools/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java Tue Jan 28 11:21:43 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
@@ -66,7 +66,7 @@
JavaFileObject.Kind.HTML);
public JavadocClassReader(Context context) {
- super(context, true);
+ super(context);
docenv = DocEnv.instance(context);
preferSource = true;
}
--- a/langtools/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties Tue Jan 28 11:21:43 2014 -0800
@@ -55,8 +55,8 @@
main.opt.o=\ -o <file> \u51FA\u529B\u30D5\u30A1\u30A4\u30EB(-d\u304B-o\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u4F7F\u7528\u3059\u308B)
main.opt.d=\ -d <dir> \u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
main.opt.v=\ -v -verbose \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046
-main.opt.h=\ -h --help -? \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B
-main.opt.version=\ -version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3059\u308B
+main.opt.h=\ -h --help -? \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B
+main.opt.version=\ -version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B
main.opt.jni=\ -jni JNI\u5F62\u5F0F\u306E\u30D8\u30C3\u30C0\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)
main.opt.force=\ -force \u5E38\u306B\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080
main.opt.classpath=\ -classpath <path> \u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
--- a/langtools/src/share/classes/com/sun/tools/jdeps/Archive.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/jdeps/Archive.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/jdeps/ClassFileReader.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/jdeps/ClassFileReader.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Tue Jan 28 11:21:43 2014 -0800
@@ -1,31 +1,35 @@
main.usage.summary=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <classes...>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u3064\u3044\u3066\u306F\u3001-h\u3001-?\u307E\u305F\u306F--help\u3092\u4F7F\u7528\u3057\u307E\u3059
-main.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <classes...>\n<classes>\u306B\u306F\u3001.class\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u540D\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30D5\u30A1\u30A4\u30EB\u3001\u5B8C\u5168\u4FEE\u98FE\u30AF\u30E9\u30B9\u540D\n\u307E\u305F\u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9"*"\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u4F7F\u7528\u3067\u304D\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:
+main.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <classes...>\n<classes>\u306B\u306F\u3001.class\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u540D\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u5B8C\u5168\u4FEE\u98FE\n\u30AF\u30E9\u30B9\u540D\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u4F7F\u7528\u3067\u304D\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:
error.prefix=\u30A8\u30E9\u30FC:
warn.prefix=\u8B66\u544A:
-main.opt.h=\ -h -? --help \u3053\u306E\u4F7F\u7528\u65B9\u6CD5\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B
+main.opt.h=\ -h -? -help \u3053\u306E\u4F7F\u7528\u65B9\u6CD5\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059
-main.opt.version=\ --version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831
+main.opt.version=\ -version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831
+
+main.opt.v=\ -v -verbose \u30AF\u30E9\u30B9\u30FB\u30EC\u30D9\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u3059\u3079\u3066\u51FA\u529B\u3057\u307E\u3059\n -verbose:package \u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EC\u30D9\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u51FA\u529B\u3057\u307E\u3059\n (\u540C\u3058\u30A2\u30FC\u30AB\u30A4\u30D6\u5185\u306E\u4F9D\u5B58\u6027\u3092\u9664\u304F)\n -verbose:class \u30AF\u30E9\u30B9\u30FB\u30EC\u30D9\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u51FA\u529B\u3057\u307E\u3059\n (\u540C\u3058\u30A2\u30FC\u30AB\u30A4\u30D6\u5185\u306E\u4F9D\u5B58\u6027\u3092\u9664\u304F)
-main.opt.V=\ -V <level> --verbose-level=<level> \u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EC\u30D9\u30EB\u307E\u305F\u306F\u30AF\u30E9\u30B9\u30FB\u30EC\u30D9\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u51FA\u529B\u3059\u308B\n \u6709\u52B9\u306A\u30EC\u30D9\u30EB: "package"\u304A\u3088\u3073"class"
+main.opt.s=\ -s -summary \u4F9D\u5B58\u6027\u306E\u8981\u7D04\u306E\u307F\u51FA\u529B\u3057\u307E\u3059
-main.opt.v=\ -v --verbose \u8FFD\u52A0\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B
+main.opt.p=\ -p <pkgname> -package <pkgname> \u6307\u5B9A\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u306E\u4F9D\u5B58\u6027\u3092\u691C\u51FA\u3057\u307E\u3059\n (\u8907\u6570\u56DE\u6307\u5B9A\u53EF\u80FD)
-main.opt.s=\ -s --summary \u4F9D\u5B58\u6027\u306E\u8981\u7D04\u306E\u307F\u51FA\u529B\u3059\u308B
+main.opt.e=\ -e <regex> -regex <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.p=\ -p <pkg name> --package=<pkg name> \u5206\u6790\u3092\u3053\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30AF\u30E9\u30B9\u306B\u5236\u9650\u3059\u308B\n (\u8907\u6570\u56DE\u6307\u5B9A\u53EF\u80FD)
+main.opt.include=\ -include <regex> \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.e=\ -e <regex> --regex=<regex> \u5206\u6790\u3092\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5236\u9650\u3059\u308B\n (-p\u3068-e\u306F\u6392\u4ED6\u7684)
+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
-main.opt.P=\ -P --profile \u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u542B\u3080\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A\u3059\u308B
+main.opt.cp=\ -cp <path> -classpath <path> \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059
-main.opt.c=\ -c <path> --classpath=<path> \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B
+main.opt.R=\ -R -recursive \u3059\u3079\u3066\u306E\u4F9D\u5B58\u6027\u3092\u53CD\u5FA9\u7684\u306B\u8D70\u67FB\u3057\u307E\u3059
+
+main.opt.apionly=\ -apionly \u5206\u6790\u3092API\u3001\u3064\u307E\u308A\u3001\u30D1\u30D6\u30EA\u30C3\u30AF\u30FB\u30AF\u30E9\u30B9\u306E\n \u30D1\u30D6\u30EA\u30C3\u30AF\u30FB\u30E1\u30F3\u30D0\u30FC\u304A\u3088\u3073\u4FDD\u8B77\u3055\u308C\u305F\u30E1\u30F3\u30D0\u30FC\u306E\n \u7F72\u540D\u306B\u304A\u3051\u308B\u4F9D\u5B58\u6027(\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30BF\u30A4\u30D7\u3001\u30E1\u30BD\u30C3\u30C9\u30FB\n \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3001\u623B\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3001\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u305F\n \u4F8B\u5916\u30BF\u30A4\u30D7\u306A\u3069)\u306B\u5236\u9650\u3057\u307E\u3059
-main.opt.R=\ -R --recursive \u3059\u3079\u3066\u306E\u4F9D\u5B58\u6027\u3092\u53CD\u5FA9\u7684\u306B\u8D70\u67FB\u3059\u308B
+main.opt.dotoutput=\ -dotoutput <dir> DOT\u30D5\u30A1\u30A4\u30EB\u51FA\u529B\u306E\u5B9B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
-main.opt.d=\ -d <depth> --depth=<depth> \u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u5206\u6790\u306E\u6DF1\u3055\u3092\u6307\u5B9A\u3059\u308B
+main.opt.depth=\ -depth=<depth> \u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u5206\u6790\u306E\u6DF1\u3055\u3092\n \u6307\u5B9A\u3057\u307E\u3059
err.unknown.option=\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
err.missing.arg={0}\u306B\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
@@ -34,6 +38,7 @@
err.option.after.class=\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30AF\u30E9\u30B9\u306E\u524D\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
err.option.unsupported={0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {1}
err.profiles.msg=\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093
+err.dot.output.path=\u7121\u52B9\u306A\u30D1\u30B9: {0}
warn.invalid.arg=\u7121\u52B9\u306A\u30AF\u30E9\u30B9\u540D\u307E\u305F\u306F\u30D1\u30B9\u540D\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
warn.split.package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F{1} {2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
--- a/langtools/src/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties Tue Jan 28 11:21:43 2014 -0800
@@ -1,31 +1,35 @@
main.usage.summary=\u7528\u6CD5: {0} <options> <classes...>\n\u4F7F\u7528 -h, -? \u6216 --help \u5217\u51FA\u53EF\u80FD\u7684\u9009\u9879
-main.usage=\u7528\u6CD5: {0} <options> <classes...>\n\u5176\u4E2D, <classes> \u53EF\u4EE5\u662F .class \u6587\u4EF6, \u76EE\u5F55, JAR \u6587\u4EF6\u7684\u8DEF\u5F84\u540D,\n\u4E5F\u53EF\u4EE5\u662F\u5168\u9650\u5B9A\u7C7B\u540D\u6216\u901A\u914D\u7B26 "*"\u3002\u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC:
+main.usage=\u7528\u6CD5: {0} <options> <classes...>\n\u5176\u4E2D <classes> \u53EF\u4EE5\u662F .class \u6587\u4EF6, \u76EE\u5F55, JAR \u6587\u4EF6\u7684\u8DEF\u5F84\u540D,\n\u4E5F\u53EF\u4EE5\u662F\u5168\u9650\u5B9A\u7C7B\u540D\u3002\u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC:
error.prefix=\u9519\u8BEF:
warn.prefix=\u8B66\u544A:
-main.opt.h=\ -h -? --help \u8F93\u51FA\u6B64\u7528\u6CD5\u6D88\u606F
+main.opt.h=\ -h -? -help \u8F93\u51FA\u6B64\u7528\u6CD5\u6D88\u606F
-main.opt.version=\ --version \u7248\u672C\u4FE1\u606F
+main.opt.version=\ -version \u7248\u672C\u4FE1\u606F
+
+main.opt.v=\ -v -verbose \u8F93\u51FA\u6240\u6709\u7C7B\u7EA7\u522B\u88AB\u4F9D\u8D56\u5BF9\u8C61\n -verbose:package \u8F93\u51FA\u7A0B\u5E8F\u5305\u7EA7\u522B\u88AB\u4F9D\u8D56\u5BF9\u8C61, \u4E0D\u5305\u62EC\n \u540C\u4E00\u6863\u6848\u4E2D\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\n -verbose:class \u8F93\u51FA\u7C7B\u7EA7\u522B\u88AB\u4F9D\u8D56\u5BF9\u8C61, \u4E0D\u5305\u62EC\n \u540C\u4E00\u6863\u6848\u4E2D\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61
-main.opt.V=\ -V <level> --verbose-level=<level> \u8F93\u51FA\u7A0B\u5E8F\u5305\u7EA7\u522B\u6216\u7C7B\u7EA7\u522B\u88AB\u4F9D\u8D56\u5BF9\u8C61\n \u6709\u6548\u7EA7\u522B\u4E3A: "\u7A0B\u5E8F\u5305" \u548C "\u7C7B"
+main.opt.s=\ -s -summary \u4EC5\u8F93\u51FA\u88AB\u4F9D\u8D56\u5BF9\u8C61\u6982\u8981
-main.opt.v=\ -v --verbose \u8F93\u51FA\u9644\u52A0\u4FE1\u606F
+main.opt.p=\ -p <pkgname> -package <pkgname> \u67E5\u627E\u7ED9\u5B9A\u7A0B\u5E8F\u5305\u4E2D\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\n (\u53EF\u80FD\u591A\u6B21\u6307\u5B9A)
-main.opt.s=\ -s --summary \u4EC5\u8F93\u51FA\u88AB\u4F9D\u8D56\u5BF9\u8C61\u6982\u8981
+main.opt.e=\ -e <regex> -regex <regex> \u67E5\u627E\u4E0E\u6A21\u5F0F\u5339\u914D\u7684\u7A0B\u5E8F\u5305\u4E2D\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\n (-p \u548C -e \u4E92\u76F8\u6392\u65A5)
-main.opt.p=\ -p <pkg name> --package=<pkg name> \u5C06\u5206\u6790\u9650\u5236\u4E3A\u6B64\u7A0B\u5E8F\u5305\u4E2D\u7684\u7C7B\n (\u53EF\u4EE5\u6307\u5B9A\u591A\u6B21)
+main.opt.include=\ -include <regex> \u5C06\u5206\u6790\u9650\u5236\u4E3A\u4E0E\u6A21\u5F0F\u5339\u914D\u7684\u7C7B\n \u6B64\u9009\u9879\u7B5B\u9009\u8981\u5206\u6790\u7684\u7C7B\u7684\u5217\u8868\u3002\n \u5B83\u53EF\u4EE5\u4E0E\u5411\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5E94\u7528\u6A21\u5F0F\u7684\n -p \u548C -e \u7ED3\u5408\u4F7F\u7528
-main.opt.e=\ -e <regex> --regex=<regex> \u5C06\u5206\u6790\u9650\u5236\u4E3A\u4E0E\u6A21\u5F0F\u5339\u914D\u7684\u7A0B\u5E8F\u5305\n (-p \u548C -e \u4E92\u65A5)
+main.opt.P=\ -P -profile \u663E\u793A\u914D\u7F6E\u6587\u4EF6\u6216\u5305\u542B\u7A0B\u5E8F\u5305\u7684\u6587\u4EF6
-main.opt.P=\ -P --profile \u663E\u793A\u914D\u7F6E\u6587\u4EF6\u6216\u5305\u542B\u7A0B\u5E8F\u5305\u7684\u6587\u4EF6
+main.opt.cp=\ -cp <path> -classpath <path> \u6307\u5B9A\u67E5\u627E\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E
-main.opt.c=\ -c <path> --classpath=<path> \u6307\u5B9A\u67E5\u627E\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E
+main.opt.R=\ -R -recursive \u9012\u5F52\u904D\u5386\u6240\u6709\u88AB\u4F9D\u8D56\u5BF9\u8C61
+
+main.opt.apionly=\ -apionly \u901A\u8FC7\u516C\u5171\u7C7B (\u5305\u62EC\u5B57\u6BB5\u7C7B\u578B, \u65B9\u6CD5\u53C2\u6570\n \u7C7B\u578B, \u8FD4\u56DE\u7C7B\u578B, \u53D7\u63A7\u5F02\u5E38\u9519\u8BEF\u7C7B\u578B\n \u7B49) \u7684\u516C\u5171\u548C\u53D7\u4FDD\u62A4\u6210\u5458\u7684\u7B7E\u540D\n \u9650\u5236\u5BF9 API (\u5373\u88AB\u4F9D\u8D56\u5BF9\u8C61)\n \u8FDB\u884C\u5206\u6790
-main.opt.R=\ -R --recursive \u9012\u5F52\u904D\u5386\u6240\u6709\u88AB\u4F9D\u8D56\u5BF9\u8C61
+main.opt.dotoutput=\ -dotoutput <dir> DOT \u6587\u4EF6\u8F93\u51FA\u7684\u76EE\u6807\u76EE\u5F55
-main.opt.d=\ -d <depth> --depth=<depth> \u6307\u5B9A\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5206\u6790\u7684\u6DF1\u5EA6
+main.opt.depth=\ -depth=<depth> \u6307\u5B9A\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5206\u6790\n \u7684\u6DF1\u5EA6
err.unknown.option=\u672A\u77E5\u9009\u9879: {0}
err.missing.arg=\u6CA1\u6709\u4E3A{0}\u6307\u5B9A\u503C
@@ -34,6 +38,7 @@
err.option.after.class=\u5FC5\u987B\u5728\u7C7B\u4E4B\u524D\u6307\u5B9A\u9009\u9879: {0}
err.option.unsupported=\u4E0D\u652F\u6301{0}: {1}
err.profiles.msg=\u6CA1\u6709\u914D\u7F6E\u6587\u4EF6\u4FE1\u606F
+err.dot.output.path=\u65E0\u6548\u8DEF\u5F84: {0}
warn.invalid.arg=\u7C7B\u540D\u65E0\u6548\u6216\u8DEF\u5F84\u540D\u4E0D\u5B58\u5728: {0}
warn.split.package=\u5DF2\u5728{1} {2}\u4E2D\u5B9A\u4E49\u7A0B\u5E8F\u5305{0}
--- a/langtools/src/share/classes/com/sun/tools/sjavac/CleanProperties.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/CleanProperties.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/CompileChunk.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/CompileChunk.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/CompileProperties.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/CompileProperties.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/CopyFile.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/CopyFile.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/Log.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/Log.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/Module.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/Module.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/Package.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/Package.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/ProblemException.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/ProblemException.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/Source.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/Source.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/Transformer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/Transformer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/Util.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/Util.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/comp/JavaCompilerWithDeps.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/comp/JavaCompilerWithDeps.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/comp/PubapiVisitor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/comp/PubapiVisitor.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/comp/ResolveWithDeps.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/comp/ResolveWithDeps.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/comp/SmartFileManager.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/comp/SmartFileManager.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/comp/SmartFileObject.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/comp/SmartFileObject.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/comp/SmartWriter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/comp/SmartWriter.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/server/CompilerPool.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/server/CompilerPool.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/server/PortFile.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/server/PortFile.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/com/sun/tools/sjavac/server/SysInfo.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/com/sun/tools/sjavac/server/SysInfo.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/src/share/classes/javax/lang/model/element/TypeElement.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/TypeElement.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/langtools/src/share/classes/javax/lang/model/element/VariableElement.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/VariableElement.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/langtools/src/share/classes/javax/lang/model/element/package-info.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/package-info.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/langtools/src/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor6.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/src/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor6.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, 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
--- a/langtools/test/com/sun/javadoc/AccessH1/AccessH1.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/AccessH1/AccessH1.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4636667 7052425
+ * @bug 4636667 7052425 8016549
* @summary Use <H1, <H2>, and <H3> in proper sequence for accessibility
* @author dkramer
* @run main AccessH1
@@ -85,7 +85,7 @@
private static final String[][] testArray = {
// Test the style sheet
{
- "h1 {" + LS + " font-size:1.8em;" + LS +
+ "h1 {" + LS + " font-size:20px;" + LS +
"}",
TMPDEST_DIR1 + "stylesheet.css"
},
--- a/langtools/test/com/sun/javadoc/testAbstractMethod/TestAbstractMethod.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testAbstractMethod/TestAbstractMethod.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testAbstractMethod/pkg/A.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testAbstractMethod/pkg/A.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testAbstractMethod/pkg/B.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testAbstractMethod/pkg/B.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testAbstractMethod/pkg/C.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testAbstractMethod/pkg/C.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testAnnotationOptional/pkg/AnnotationOptional.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testAnnotationOptional/pkg/AnnotationOptional.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/com/sun/javadoc/testDocRootLink/pkg1/C1.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testDocRootLink/pkg1/C1.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/com/sun/javadoc/testDocRootLink/pkg2/C2.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testDocRootLink/pkg2/C2.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/com/sun/javadoc/testLegacyTaglet/C.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testLegacyTaglet/C.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/test/com/sun/javadoc/testNavigation/pkg/A.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testNavigation/pkg/A.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/test/com/sun/javadoc/testNavigation/pkg/C.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testNavigation/pkg/C.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/test/com/sun/javadoc/testNavigation/pkg/E.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testNavigation/pkg/E.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/test/com/sun/javadoc/testNavigation/pkg/I.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testNavigation/pkg/I.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/C.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/C.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/ContaineeRegDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/ContaineeRegDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/ContainerRegDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/ContainerRegDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/ContainerRegNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/ContainerRegNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/D.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/D.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/NonSynthDocContainer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/NonSynthDocContainer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegArryDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegArryDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContaineeDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContaineeDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContaineeNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContaineeNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContainerDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContainerDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContainerNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegContainerNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg/RegDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/C.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/C.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/ContaineeNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/ContaineeNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/ContainerValDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/ContainerValDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/ContainerValNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/ContainerValNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContaineeDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContaineeDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContaineeNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContaineeNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContainerValDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContainerValDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContainerValNotDoc.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testRepeatedAnnotations/pkg1/RegContainerValNotDoc.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java Tue Jan 28 11:21:43 2014 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4494033 7028815 7052425 8007338 8023608 8008164
+ * @bug 4494033 7028815 7052425 8007338 8023608 8008164 8016549
* @summary Run tests on doclet stylesheet.
* @author jamieh
* @library ../lib/
@@ -54,8 +54,8 @@
{BUG_ID + FS + "stylesheet.css",
"body {" + NL + " background-color:#ffffff;" + NL +
" color:#353833;" + NL +
- " font-family:Arial, Helvetica, sans-serif;" + NL +
- " font-size:76%;" + NL + " margin:0;" + NL + "}"},
+ " font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;" + NL +
+ " font-size:14px;" + NL + " margin:0;" + NL + "}"},
{BUG_ID + FS + "stylesheet.css",
"ul {" + NL + " list-style-type:disc;" + NL + "}"},
{BUG_ID + FS + "stylesheet.css",
@@ -64,49 +64,65 @@
" position:relative;" + NL +
" text-align:left;" + NL +
" background-repeat:no-repeat;" + NL +
- " color:#FFFFFF;" + NL +
+ " color:#253441;" + NL +
" font-weight:bold;" + NL +
" clear:none;" + NL +
" overflow:hidden;" + NL +
" padding:0px;" + NL +
+ " padding-top:10px;" + NL +
+ " padding-left:1px;" + NL +
" margin:0px;" + NL +
+ " white-space:pre;" + NL +
"}"},
{BUG_ID + FS + "stylesheet.css",
".overviewSummary caption span, .memberSummary caption span, .typeSummary caption span," + NL +
".useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {" + NL +
" white-space:nowrap;" + NL +
- " padding-top:8px;" + NL +
- " padding-left:8px;" + NL +
+ " padding-top:5px;" + NL +
+ " padding-left:12px;" + NL +
+ " padding-right:12px;" + NL +
+ " padding-bottom:7px;" + NL +
" display:inline-block;" + NL +
" float:left;" + NL +
- " background-image:url(resources/titlebar.gif);" + NL +
+ " background-color:#F8981D;" + NL +
+ " border: none;" + NL +
+ " height:16px;" + NL +
"}"},
{BUG_ID + FS + "stylesheet.css",
".memberSummary caption span.activeTableTab span {" + NL +
" white-space:nowrap;" + NL +
- " padding-top:8px;" + NL +
- " padding-left:8px;" + NL +
+ " padding-top:5px;" + NL +
+ " padding-left:12px;" + NL +
+ " padding-right:12px;" + NL +
+ " margin-right:3px;" + NL +
" display:inline-block;" + NL +
" float:left;" + NL +
- " background-image:url(resources/activetitlebar.gif);" + NL +
+ " background-color:#F8981D;" + NL +
+ " height:16px;" + NL +
"}"},
{BUG_ID + FS + "stylesheet.css",
".memberSummary caption span.tableTab span {" + NL +
" white-space:nowrap;" + NL +
- " padding-top:8px;" + NL +
- " padding-left:8px;" + NL +
+ " padding-top:5px;" + NL +
+ " padding-left:12px;" + NL +
+ " padding-right:12px;" + NL +
+ " margin-right:3px;" + NL +
" display:inline-block;" + NL +
" float:left;" + NL +
- " background-image:url(resources/titlebar.gif);" + NL +
+ " background-color:#4D7A97;" + NL +
+ " height:16px;" + NL +
"}"},
{BUG_ID + FS + "stylesheet.css",
".memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {" + NL +
" padding-top:0px;" + NL +
" padding-left:0px;" + NL +
+ " padding-right:0px;" + NL +
" background-image:none;" + NL +
" float:none;" + NL +
- " display:inline-block;" + NL +
+ " display:inline;" + NL +
"}"},
+ {BUG_ID + FS + "stylesheet.css",
+ "@import url('resources/fonts/dejavu.css');"},
// Test whether a link to the stylesheet file is inserted properly
// in the class documentation.
{BUG_ID + FS + "pkg" + FS + "A.html",
--- a/langtools/test/tools/apt/Basics/CheckAptIsRemovedTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/apt/Basics/CheckAptIsRemovedTest.java Tue Jan 28 11:21:43 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
@@ -87,7 +87,7 @@
Path classpath = Paths.get(testJDK, "lib", "tools.jar");
ToolBox.JavaToolArgs javacArgs =
new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL)
- .setOptions("-source", "1.5", "-sourcepath", ".",
+ .setOptions("-sourcepath", ".",
"-classpath", classpath.toString())
.setSources(NullAPFSrc);
ToolBox.javac(javacArgs);
--- a/langtools/test/tools/doclint/html/AAA.java Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2013, 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 8006728
- * @summary temporarily workaround jtreg problems for doclint tests in othervm
- */
-
-// dummy test/class to be compiled before other tests in this directory
-// see JDK-8006730
-public class AAA {
- public static void main(String... args) { }
-}
-
--- a/langtools/test/tools/doclint/tidy/AAA.java Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2013, 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 8006728
- * @summary temporarily workaround jtreg problems for doclint tests in othervm
- */
-
-// dummy test/class to be compiled before other tests in this directory
-// see JDK-8006730
-public class AAA {
- public static void main(String... args) { }
-}
-
--- a/langtools/test/tools/doclint/tool/AAA.java Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2013, 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 8006728
- * @summary temporarily workaround jtreg problems for doclint tests in othervm
- */
-
-// dummy test/class to be compiled before other tests in this directory
-// see JDK-8006730
-public class AAA {
- public static void main(String... args) { }
-}
-
--- a/langtools/test/tools/javac/6341866/T6341866.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/6341866/T6341866.java Tue Jan 28 11:21:43 2014 -0800
@@ -97,7 +97,7 @@
processorServices.delete();
List<String> opts = new ArrayList<String>();
- opts.addAll(Arrays.asList("-d", ".", "-sourcepath", testSrc, "-classpath", testClasses, "-source", "1.6", "-Xlint:-options"));
+ opts.addAll(Arrays.asList("-d", ".", "-sourcepath", testSrc, "-classpath", testClasses, "-Xlint:-options"));
if (implicitType.opt != null)
opts.add(implicitType.opt);
--- a/langtools/test/tools/javac/6889255/T6889255.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/6889255/T6889255.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -34,6 +34,7 @@
import com.sun.tools.javac.code.Kinds;
import com.sun.tools.javac.code.Scope;
import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.code.Symtab;
import com.sun.tools.javac.code.Type;
import com.sun.tools.javac.code.Type.ClassType;
import com.sun.tools.javac.code.TypeTag;
@@ -363,6 +364,7 @@
Context ctx = new Context();
JavacFileManager fm = new JavacFileManager(ctx, true, null);
fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(outDir));
+ Symtab syms = Symtab.instance(ctx);
ClassReader cr = ClassReader.instance(ctx);
cr.saveParameterNames = true;
Names names = Names.instance(ctx);
@@ -372,7 +374,7 @@
String classname;
while ((classname = work.poll()) != null) {
System.err.println("Checking class " + classname);
- ClassSymbol sym = cr.enterClass(names.table.fromString(classname));
+ ClassSymbol sym = syms.enterClass(names.table.fromString(classname));
sym.complete();
if ((sym.flags() & Flags.INTERFACE) != 0 && !testInterfaces)
--- a/langtools/test/tools/javac/Capture.java Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 4441338 4994508
- * @summary Captured variable synthetic parameters should be passed before explicit params.
- * @author gafter
- *
- * @compile -source 1.4 -target 1.4 Capture.java
- * @run main Capture
- */
-
-public class Capture {
- final int k;
- Capture(int n) {
- k = n;
- }
- public static void main(String args[]) {
- final int j;
- int k1 = new Capture(2 + (j=3)){
- int get () {return k+j;}
- }.get();
- if (k1 != 8) throw new Error("k1 = " + k1);
- }
-}
--- a/langtools/test/tools/javac/ClassFileModifiers/MemberModifiers.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/ClassFileModifiers/MemberModifiers.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,7 +26,7 @@
* @bug 4249112 4785453
* @summary Verify that implicit member modifiers are set correctly.
*
- * @compile/ref=MemberModifiers.out -source 1.4 -target 1.5 -Xlint:-options -XDdumpmodifiers=cfm MemberModifiers.java
+ * @compile/ref=MemberModifiers.out -XDdumpmodifiers=cfm MemberModifiers.java
*/
// Currently, we check only that members of final classes are not final.
--- a/langtools/test/tools/javac/ConditionalArgTypes_1.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/ConditionalArgTypes_1.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, 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
@@ -27,7 +27,6 @@
* @summary Verify that both branches of a conditional expression must agree in type.
* @author maddox
*
- * @compile/fail -source 1.4 ConditionalArgTypes_1.java
* @compile ConditionalArgTypes_1.java
*/
--- a/langtools/test/tools/javac/MethodParameters/AnnotationTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/AnnotationTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters AnnotationTest.java
--- a/langtools/test/tools/javac/MethodParameters/AnonymousClass.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/AnonymousClass.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters AnonymousClass.java
--- a/langtools/test/tools/javac/MethodParameters/CaptureTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/CaptureTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8015701
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary Test method parameter attribute generation with captured locals.
* @compile -parameters CaptureTest.java
* @run main CaptureTest
--- a/langtools/test/tools/javac/MethodParameters/Constructors.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/Constructors.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters Constructors.java
--- a/langtools/test/tools/javac/MethodParameters/EnumTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/EnumTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582 8008658
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters EnumTest.java
--- a/langtools/test/tools/javac/MethodParameters/InstanceMethods.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/InstanceMethods.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters InstanceMethods.java
--- a/langtools/test/tools/javac/MethodParameters/LambdaTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/LambdaTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters LambdaTest.java
--- a/langtools/test/tools/javac/MethodParameters/LocalClassTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/LocalClassTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582 8008658
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters LocalClassTest.java
--- a/langtools/test/tools/javac/MethodParameters/MemberClassTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/MemberClassTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582 8008658
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters MemberClassTest.java
--- a/langtools/test/tools/javac/MethodParameters/StaticMethods.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/StaticMethods.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters StaticMethods.java
--- a/langtools/test/tools/javac/MethodParameters/UncommonParamNames.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/MethodParameters/UncommonParamNames.java Tue Jan 28 11:21:43 2014 -0800
@@ -24,7 +24,6 @@
/*
* @test
* @bug 8006582
- * @ignore 8030656 Bad version check for parameter information in src/share/vm/classfile/javaClasses.cpp
* @summary javac should generate method parameters correctly.
* @build Tester
* @compile -parameters UncommonParamNames.java
--- a/langtools/test/tools/javac/Source5.java Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2004, 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 5044157
- * @summary please accept -source 5 and -target 5
- * @author Peter von der Ahé
- *
- * @compile -source 5 -target 5 -encoding iso-8859-1 Source5.java
- * @run main Source5
- */
-
-public enum Source5 {
- JDK5;
- public static void main(String[] args) {
- System.out.println("Hello, world!");
- }
-}
--- a/langtools/test/tools/javac/T6394563.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/T6394563.java Tue Jan 28 11:21:43 2014 -0800
@@ -4,12 +4,7 @@
* @summary javac ignores -nowarn switch in 1.5.0_06 for deprecation warnings
*
* @compile/ref=T6394563.note.out -XDrawDiagnostics -nowarn T6394563.java
- * @compile/ref=T6394563.note.out -XDrawDiagnostics -nowarn -source 1.5 T6394563.java
- * @compile/ref=T6394563.empty.out -XDrawDiagnostics -nowarn -source 1.4 T6394563.java
- *
- * @compile/ref=T6394563.warn.out -XDrawDiagnostics -Xlint -nowarn T6394563.java
- * @compile/ref=T6394563.warn.out -XDrawDiagnostics -Xlint -nowarn -source 1.5 T6394563.java
- * @compile/ref=T6394563.empty.out -XDrawDiagnostics -Xlint -nowarn -source 1.4 T6394563.java
+ * @compile/ref=T6394563.warn.out -XDrawDiagnostics -Xlint -nowarn T6394563.java
*/
class T6394563 {
--- a/langtools/test/tools/javac/T6394563.warn.out Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/T6394563.warn.out Tue Jan 28 11:21:43 2014 -0800
@@ -1,2 +1,2 @@
-T6394563.java:17:19: compiler.warn.has.been.deprecated: foo(), deprecated
+T6394563.java:12:19: compiler.warn.has.been.deprecated: foo(), deprecated
1 warning
--- a/langtools/test/tools/javac/T6725036.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/T6725036.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/8022765/ErroneousAnnotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,38 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8029376
+ * @summary Verify reasonable errors for erroneous annotations, and incorrectly used types
+ * @compile/fail/ref=ErroneousAnnotations.out -XDrawDiagnostics ErroneousAnnotations.java
+ */
+class ErroneousAnnotations {
+ @Undefined //no "is not an annotation type error"
+ private int f1;
+ @String //produce "is not an annotation type error"
+ private int f2;
+ @Annot(@Undefined)
+ private int f3;
+ @Annot(@String)
+ private int f4;
+ @Primitive(@Undefined)
+ private int f5;
+ @Primitive(@String)
+ private int f6;
+ @PrimitiveWrap(@PrimitiveImpl)
+ private int f7;
+
+ @interface Annot {
+ Undefined value();
+ }
+
+ @interface PrimitiveWrap {
+ Primitive value();
+ }
+
+ @interface Primitive {
+ int value();
+ }
+
+ interface PrimitiveImpl extends Primitive {
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/8022765/ErroneousAnnotations.out Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,9 @@
+ErroneousAnnotations.java:24:9: compiler.err.cant.resolve.location: kindname.class, Undefined, , , (compiler.misc.location: kindname.annotation, ErroneousAnnotations.Annot, null)
+ErroneousAnnotations.java:8:6: compiler.err.cant.resolve.location: kindname.class, Undefined, , , (compiler.misc.location: kindname.class, ErroneousAnnotations, null)
+ErroneousAnnotations.java:10:6: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.lang.String, java.lang.annotation.Annotation)
+ErroneousAnnotations.java:12:13: compiler.err.cant.resolve.location: kindname.class, Undefined, , , (compiler.misc.location: kindname.class, ErroneousAnnotations, null)
+ErroneousAnnotations.java:16:16: compiler.err.annotation.not.valid.for.type: int
+ErroneousAnnotations.java:16:17: compiler.err.cant.resolve.location: kindname.class, Undefined, , , (compiler.misc.location: kindname.class, ErroneousAnnotations, null)
+ErroneousAnnotations.java:18:16: compiler.err.annotation.not.valid.for.type: int
+ErroneousAnnotations.java:20:21: compiler.err.not.annotation.type: ErroneousAnnotations.PrimitiveImpl
+8 errors
--- a/langtools/test/tools/javac/annotations/neg/8022765/T8022765.out Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/neg/8022765/T8022765.out Tue Jan 28 11:21:43 2014 -0800
@@ -44,14 +44,10 @@
T8022765.java:90:20: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.lang.String, int)
T8022765.java:92:13: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.lang.String, E)
T8022765.java:97:6: compiler.err.annotation.value.not.allowable.type
-T8022765.java:97:8: compiler.err.attribute.value.must.be.constant
T8022765.java:98:12: compiler.err.annotation.value.not.allowable.type
-T8022765.java:98:14: compiler.err.attribute.value.must.be.constant
T8022765.java:99:6: compiler.err.annotation.value.not.allowable.type
-T8022765.java:99:8: compiler.err.attribute.value.must.be.constant
T8022765.java:100:5: compiler.err.annotation.value.not.allowable.type
-T8022765.java:100:7: compiler.err.attribute.value.must.be.constant
T8022765.java:101:11: compiler.err.annotation.value.must.be.annotation
T8022765.java:102:17: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: E, int)
T8022765.java:103:11: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: E, java.lang.String)
-56 errors
\ No newline at end of file
+52 errors
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/8022765/VerifyErroneousAnnotationsAttributed.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,276 @@
+/*
+ * 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 8029161 8029376
+ */
+
+import com.sun.source.tree.CompilationUnitTree;
+import com.sun.source.tree.IdentifierTree;
+import com.sun.source.tree.MemberSelectTree;
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.TreePathScanner;
+import com.sun.source.util.Trees;
+import com.sun.tools.javac.api.JavacTool;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.type.TypeKind;
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticListener;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+
+public class VerifyErroneousAnnotationsAttributed {
+ public static void main(String... args) throws IOException, URISyntaxException {
+ new VerifyErroneousAnnotationsAttributed().run();
+ }
+
+ void run() {
+ int failCount = 0;
+ for (String ann : generateAnnotations()) {
+ String code = PATTERN.replace("PLACEHOLDER", ann);
+ try {
+ validate(code);
+ } catch (Throwable t) {
+ System.out.println("Failed for: ");
+ System.out.println(code);
+ t.printStackTrace(System.out);
+ failCount++;
+ }
+ }
+
+ if (failCount > 0) {
+ throw new IllegalStateException("failed sub-tests: " + failCount);
+ }
+ }
+
+ List<String> generateAnnotations() {
+ List<String> result = new ArrayList<>();
+
+ result.addAll(Kind.ANNOTATION.generateValue(2, true));
+ result.addAll(Kind.ANNOTATION.generateValue(2, false));
+
+ return result;
+ }
+
+ enum Kind {
+ INT("i", "ValueInt") {
+ @Override public List<String> generateValue(int depth, boolean valid) {
+ if (valid) {
+ return Arrays.asList("INT_VALUE");
+ } else {
+ return Arrays.asList("BROKEN_INT_VALUE");
+ }
+ }
+ },
+ ANNOTATION("a", "ValueAnnotation") {
+ @Override public List<String> generateValue(int depth, boolean valid) {
+ String ad = "@Annotation" + depth + (valid ? "" : "Unknown");
+
+ if (depth <= 0) {
+ return Arrays.asList(ad);
+ }
+
+ List<String> result = new ArrayList<>();
+ final Kind[][] generateKindCombinations = new Kind[][] {
+ new Kind[] {Kind.INT},
+ new Kind[] {Kind.ANNOTATION},
+ new Kind[] {Kind.INT, Kind.ANNOTATION}
+ };
+
+ for (boolean generateAssignment : new boolean[] {false, true}) {
+ for (boolean generateValid : new boolean[] {false, true}) {
+ for (Kind[] generateKinds : generateKindCombinations) {
+ if (generateKinds.length > 1 && generateValid && !generateAssignment) {
+ //skip: the same code is generated for generateValid == false.
+ continue;
+ }
+ List<String> attributes = generateAttributes(generateAssignment,
+ generateValid, depth, generateKinds);
+ String annotation;
+ if (generateAssignment) {
+ annotation = ad;
+ } else {
+ annotation = ad + generateKinds[0].annotationWithValueSuffix;
+ }
+ for (String attr : attributes) {
+ result.add(annotation + "(" + attr + ")");
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ List<String> generateAttributes(boolean generateAssignment, boolean valid, int depth,
+ Kind... kinds) {
+ List<List<String>> combinations = new ArrayList<>();
+
+ for (boolean subValid : new boolean[] {false, true}) {
+ for (Kind k : kinds) {
+ String prefix;
+
+ if (generateAssignment) {
+ if (valid) {
+ prefix = k.validAttributeName + "=";
+ } else {
+ prefix = "invalid" + k.validAttributeName + "=";
+ }
+ } else {
+ prefix = "";
+ }
+
+ List<String> combination = new ArrayList<>();
+
+ combinations.add(combination);
+
+ for (String val : k.generateValue(depth - 1, subValid)) {
+ combination.add(prefix + val);
+ }
+ }
+ }
+
+ List<String> result = new ArrayList<>();
+
+ combine(combinations, new StringBuilder(), result);
+
+ return result;
+ }
+
+ void combine(List<List<String>> combinations, StringBuilder current, List<String> to) {
+ if (combinations.isEmpty()) {
+ to.add(current.toString());
+ return ;
+ }
+
+ int currLen = current.length();
+
+ for (String str : combinations.get(0)) {
+ if (current.length() > 0) current.append(", ");
+ current.append(str);
+
+ combine(combinations.subList(1, combinations.size()), current, to);
+
+ current.delete(currLen, current.length());
+ }
+ }
+ };
+ String validAttributeName;
+ String annotationWithValueSuffix;
+
+ private Kind(String validAttributeName, String annotationWithValueSuffix) {
+ this.validAttributeName = validAttributeName;
+ this.annotationWithValueSuffix = annotationWithValueSuffix;
+ }
+
+ public abstract List<String> generateValue(int depth, boolean valid);
+
+ }
+
+ private static final String PATTERN =
+ "public class Test {\n" +
+ " public static final int INT_VALUE = 1;\n" +
+ " @interface Annotation0 {}\n" +
+ " @interface Annotation1 {int i() default 0; Annotation0 a() default @Annotation0; }\n" +
+ " @interface Annotation2 {int i() default 0; Annotation1 a() default @Annotation1; }\n" +
+ " @interface Annotation1ValueInt {int value() default 0; }\n" +
+ " @interface Annotation2ValueInt {int value() default 0; }\n" +
+ " @interface Annotation1ValueAnnotation {Annotation0 a() default @Annotation0; }\n" +
+ " @interface Annotation2ValueAnnotation {Annotation1 a() default @Annotation1; }\n" +
+ " PLACEHOLDER\n" +
+ " private void test() { }\n" +
+ "}";
+
+ static final class TestCase {
+ final String code;
+ final boolean valid;
+
+ public TestCase(String code, boolean valid) {
+ this.code = code;
+ this.valid = valid;
+ }
+
+ }
+
+ final JavacTool tool = JavacTool.create();
+ final DiagnosticListener<JavaFileObject> devNull = new DiagnosticListener<JavaFileObject>() {
+ @Override public void report(Diagnostic<? extends JavaFileObject> diagnostic) {}
+ };
+
+ void validate(String code) throws IOException, URISyntaxException {
+ JavacTask task = tool.getTask(null,
+ null,
+ devNull,
+ Arrays.asList("-XDshouldStopPolicy=FLOW"),
+ null,
+ Arrays.asList(new MyFileObject(code)));
+
+ final Trees trees = Trees.instance(task);
+ final CompilationUnitTree cut = task.parse().iterator().next();
+ task.analyze();
+
+ //ensure all the annotation attributes are annotated meaningfully
+ //all the attributes in the test file should contain either an identifier
+ //or a select, so only checking those for a reasonable Element/Symbol.
+ new TreePathScanner<Void, Void>() {
+ @Override
+ public Void visitIdentifier(IdentifierTree node, Void p) {
+ verifyAttributedMeaningfully();
+ return super.visitIdentifier(node, p);
+ }
+ @Override
+ public Void visitMemberSelect(MemberSelectTree node, Void p) {
+ verifyAttributedMeaningfully();
+ return super.visitMemberSelect(node, p);
+ }
+ private void verifyAttributedMeaningfully() {
+ Element el = trees.getElement(getCurrentPath());
+
+ if (el == null || el.getKind() == ElementKind.OTHER ||
+ el.asType().getKind() == TypeKind.OTHER) {
+ throw new IllegalStateException("Not attributed properly: " +
+ getCurrentPath().getParentPath().getLeaf());
+ }
+ }
+ }.scan(cut, null);
+ }
+ static class MyFileObject extends SimpleJavaFileObject {
+ private final String text;
+ public MyFileObject(String text) {
+ super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+ this.text = text;
+ }
+ @Override
+ public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+ return text;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/AnonSubclass.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,13 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8028389
+ * @summary javac should output a proper error message when given something
+ * like new Object(){} as annotation argument.
+ *
+ * @compile/fail/ref=AnonSubclass.out -XDrawDiagnostics AnonSubclass.java
+ */
+
+@AnonSubclass(new Object(){})
+@interface AnonSubclass {
+ String value();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/AnonSubclass.out Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,2 @@
+AnonSubclass.java:10:15: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: compiler.misc.anonymous.class: java.lang.Object, java.lang.String)
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/pkg/AnonSubclassOnPkg.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,28 @@
+/*
+ * 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 pkg;
+
+@interface AnonSubclassOnPkg {
+ String value();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/pkg/package-info.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,12 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8028389
+ * @summary javac should output a proper error message when given something
+ * like new Object(){} as annotation argument.
+ *
+ * @compile AnonSubclassOnPkg.java
+ * @compile/fail/ref=package-info.out -XDrawDiagnostics package-info.java
+ */
+
+@AnonSubclassOnPkg(new Object(){})
+package pkg;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/neg/pkg/package-info.out Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,2 @@
+package-info.java:11:20: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: compiler.misc.anonymous.class: java.lang.Object, java.lang.String)
+1 error
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/expectedFiles/ExpectedBase.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/expectedFiles/ExpectedBase.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/expectedFiles/ExpectedContainer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/expectedFiles/ExpectedContainer.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/annotations/testCrashNestedAnnos/TestCrashNestedAnnos.out Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/testCrashNestedAnnos/TestCrashNestedAnnos.out Tue Jan 28 11:21:43 2014 -0800
@@ -1,3 +1,4 @@
TestCrashNestedAnnos.java:9:6: compiler.err.cant.resolve.location: kindname.class, A, , , (compiler.misc.location: kindname.class, TestCrashNestedAnnos, null)
+TestCrashNestedAnnos.java:9:9: compiler.err.cant.resolve.location: kindname.class, A1, , , (compiler.misc.location: kindname.class, TestCrashNestedAnnos, null)
TestCrashNestedAnnos.java:10:6: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: B, java.lang.annotation.Annotation)
-2 errors
+3 errors
--- a/langtools/test/tools/javac/annotations/typeAnnotations/TargetTypes.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/TargetTypes.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/classfile/NoTargetAnnotations.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/classfile/NoTargetAnnotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/parambounds/BrokenAnnotation.out Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/parambounds/BrokenAnnotation.out Tue Jan 28 11:21:43 2014 -0800
@@ -1,3 +1,5 @@
BrokenAnnotation.java:16:6: compiler.err.cant.resolve.location: kindname.class, Target, , , (compiler.misc.location: kindname.class, BrokenAnnotation<T>, null)
+BrokenAnnotation.java:16:14: compiler.err.cant.resolve.location: kindname.variable, ElementType, , , (compiler.misc.location: kindname.class, BrokenAnnotation<T>, null)
+BrokenAnnotation.java:16:36: compiler.err.cant.resolve.location: kindname.variable, ElementType, , , (compiler.misc.location: kindname.class, BrokenAnnotation<T>, null)
BrokenAnnotation.java:15:34: compiler.err.annotation.type.not.applicable
-2 errors
\ No newline at end of file
+4 errors
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/target/DotClass.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/target/DotClass.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/newlocations/Varargs.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/newlocations/Varargs.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/packageanno/mypackage/Anno.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/packageanno/mypackage/Anno.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/packageanno/mypackage/MyClass.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/packageanno/mypackage/MyClass.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/packageanno/mypackage/package-info.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/packageanno/mypackage/package-info.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/ClassExtends.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/ClassExtends.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/ClassTypeParam.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/ClassTypeParam.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/Driver.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/Driver.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -30,6 +30,7 @@
import java.lang.annotation.*;
import java.lang.reflect.*;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -51,6 +52,11 @@
new Driver().runDriver(clazz.newInstance());
}
+ String[][] extraParamsCombinations = new String[][] {
+ new String[] { },
+ new String[] { "-g" },
+ };
+
protected void runDriver(Object object) throws Exception {
int passed = 0, failed = 0;
Class<?> clazz = object.getClass();
@@ -65,18 +71,20 @@
throw new IllegalArgumentException("Test method needs to return a string: " + method);
String testClass = testClassOf(method);
- try {
- String compact = (String)method.invoke(object);
- String fullFile = wrap(compact);
- ClassFile cf = compileAndReturn(fullFile, testClass);
- List<TypeAnnotation> actual = ReferenceInfoUtil.extendedAnnotationsOf(cf);
- ReferenceInfoUtil.compare(expected, actual, cf);
- out.println("PASSED: " + method.getName());
- ++passed;
- } catch (Throwable e) {
- out.println("FAILED: " + method.getName());
- out.println(" " + e.toString());
- ++failed;
+ for (String[] extraParams : extraParamsCombinations) {
+ try {
+ String compact = (String)method.invoke(object);
+ String fullFile = wrap(compact);
+ ClassFile cf = compileAndReturn(fullFile, testClass, extraParams);
+ List<TypeAnnotation> actual = ReferenceInfoUtil.extendedAnnotationsOf(cf);
+ ReferenceInfoUtil.compare(expected, actual, cf);
+ out.println("PASSED: " + method.getName());
+ ++passed;
+ } catch (Throwable e) {
+ out.println("FAILED: " + method.getName());
+ out.println(" " + e.toString());
+ ++failed;
+ }
}
}
@@ -156,7 +164,7 @@
}
}
- private ClassFile compileAndReturn(String fullFile, String testClass) throws Exception {
+ private ClassFile compileAndReturn(String fullFile, String testClass, String... extraParams) throws Exception {
File source = writeTestFile(fullFile);
File clazzFile = compileTestFile(source, testClass);
return ClassFile.read(clazzFile);
@@ -170,8 +178,12 @@
return f;
}
- protected File compileTestFile(File f, String testClass) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ protected File compileTestFile(File f, String testClass, String... extraParams) {
+ List<String> options = new ArrayList<>();
+ options.addAll(Arrays.asList("-source", "1.8"));
+ options.addAll(Arrays.asList(extraParams));
+ options.add(f.getPath());
+ int rc = com.sun.tools.javac.Main.compile(options.toArray(new String[options.size()]));
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path;
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/ExceptionParameters.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/ExceptionParameters.java Tue Jan 28 11:21:43 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,6 +25,7 @@
/*
* @test
+ * @bug 8028576
* @summary Test population of reference info for exception parameters
* @author Werner Dietl
* @compile -g Driver.java ReferenceInfoUtil.java ExceptionParameters.java
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/Fields.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/Fields.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/FromSpecification.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/FromSpecification.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodParameters.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodParameters.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodReceivers.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodReceivers.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodReturns.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodReturns.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodTypeParam.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/MethodTypeParam.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/RepeatingTypeAnnotations.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/RepeatingTypeAnnotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/TypeCasts.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/TypeCasts.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/TypeTests.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/referenceinfos/TypeTests.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, 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
--- a/langtools/test/tools/javac/api/T6306137.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/api/T6306137.java Tue Jan 28 11:21:43 2014 -0800
@@ -76,7 +76,7 @@
}
void test(String encoding, boolean good) {
error = false;
- Iterable<String> args = Arrays.asList("-source", "6", "-encoding", encoding, "-d", ".");
+ Iterable<String> args = Arrays.asList("-encoding", encoding, "-d", ".");
compiler.getTask(null, fm, dl, args, null, files).call();
if (error == good) {
if (error) {
--- a/langtools/test/tools/javac/api/TestGetElementReference.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/api/TestGetElementReference.java Tue Jan 28 11:21:43 2014 -0800
@@ -52,7 +52,7 @@
File source = new File(System.getProperty("test.src", "."), "TestGetElementReferenceData.java").getAbsoluteFile();
StandardJavaFileManager fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
- JavacTask ct = (JavacTask) ToolProvider.getSystemJavaCompiler().getTask(null, null, diagnostics, Arrays.asList("-Xjcov", "-source", "1.8"), null, fm.getJavaFileObjects(source));
+ JavacTask ct = (JavacTask) ToolProvider.getSystemJavaCompiler().getTask(null, null, diagnostics, Arrays.asList("-Xjcov"), null, fm.getJavaFileObjects(source));
Trees trees = Trees.instance(ct);
CompilationUnitTree cut = ct.parse().iterator().next();
--- a/langtools/test/tools/javac/cast/intersection/IntersectionTypeParserTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/cast/intersection/IntersectionTypeParserTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/cast/intersection/model/Model01.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/cast/intersection/model/Model01.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/cast/intersection/model/ModelChecker.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/cast/intersection/model/ModelChecker.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/Static01.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/Static01.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/Static02.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/Static02.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/hiding/InterfaceMethodHidingTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/hiding/InterfaceMethodHidingTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/import/StaticImport1.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/import/StaticImport1.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/import/StaticImport2.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/import/StaticImport2.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/import/StaticImport3.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/import/StaticImport3.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/import/pkg/A.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/import/pkg/A.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/import/pkg/B.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/import/pkg/B.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/static/import/pkg/C.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/static/import/pkg/C.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/diags/MessageFile.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/MessageFile.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/MessageInfo.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/MessageInfo.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/AlreadyDefinedStaticImport/AlreadDefinedStaticImport.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/AlreadyDefinedStaticImport/AlreadDefinedStaticImport.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/AlreadyDefinedStaticImport/p/E1.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/AlreadyDefinedStaticImport/p/E1.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/AlreadyDefinedStaticImport/p/E2.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/AlreadyDefinedStaticImport/p/E2.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/AnnotationMustBeNameValue.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/AnnotationMustBeNameValue.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -22,6 +22,7 @@
*/
// key: compiler.err.annotation.value.must.be.name.value
+// key: compiler.err.cant.resolve
@interface Anno {
String name() default "anon";
--- a/langtools/test/tools/javac/diags/examples/IllegalStaticIntfMethCall.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/IllegalStaticIntfMethCall.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/KindnameConstructor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/KindnameConstructor.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/NonStaticCantBeRefFragment.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/NonStaticCantBeRefFragment.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/NotInProfile.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/NotInProfile.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/RepeatableAnnotationsNotSupported.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/RepeatableAnnotationsNotSupported.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/StaticIntfMethodNotSupported.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/StaticIntfMethodNotSupported.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/diags/examples/WhereIntersection.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/diags/examples/WhereIntersection.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/generics/odersky/BadTest4.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/generics/odersky/BadTest4.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2013, 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
--- a/langtools/test/tools/javac/lambda/ByteCodeTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/ByteCodeTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -122,7 +122,7 @@
static File compile(File f) {
int rc = com.sun.tools.javac.Main.compile(new String[] {
- "-source", "1.8", "-g", f.getPath() });
+ "-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javac/lambda/DoubleStaticImport.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/DoubleStaticImport.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/Intersection01.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/Intersection01.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/Intersection02.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/Intersection02.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/LambdaCapture06.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/LambdaCapture06.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/LambdaConv01.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/LambdaConv01.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/LambdaExpr15.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/LambdaExpr15.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/MethodReference25.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/MethodReference25.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/MethodReference26.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/MethodReference26.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/MethodReference59.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/MethodReference59.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/MethodReference60.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/MethodReference60.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/TargetType51.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/TargetType51.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/lambdaExecution/InInterface.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/InInterface.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/lambdaExpression/LambdaTest6.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/lambdaExpression/LambdaTest6.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/lambdaExpression/SamConversionComboTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/lambdaExpression/SamConversionComboTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/methodReference/BridgeMethod.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/methodReference/BridgeMethod.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambda/methodReference/SamConversion.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/methodReference/SamConversion.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/methodReference/SamConversionComboTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/methodReference/SamConversionComboTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambda/typeInference/InferenceTest2b.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambda/typeInference/InferenceTest2b.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/Compiler.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/Compiler.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/SourceModel.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/SourceModel.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/TestHarness.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/TestHarness.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/multicatch/Pos05.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/multicatch/Pos05.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, 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
--- a/langtools/test/tools/javac/processing/environment/TestSourceVersion.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/TestSourceVersion.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -23,21 +23,20 @@
/*
* @test
- * @bug 6402506
+ * @bug 6402506 8028545 8028543
* @summary Test that getSourceVersion works properly
* @author Joseph D. Darcy
* @library /tools/javac/lib
* @build JavacTestingAbstractProcessor
* @compile TestSourceVersion.java
- * @compile -processor TestSourceVersion -proc:only -source 1.2 -AExpectedVersion=RELEASE_2 HelloWorld.java
- * @compile -processor TestSourceVersion -proc:only -source 1.3 -AExpectedVersion=RELEASE_3 HelloWorld.java
- * @compile -processor TestSourceVersion -proc:only -source 1.4 -AExpectedVersion=RELEASE_4 HelloWorld.java
- * @compile -processor TestSourceVersion -proc:only -source 1.5 -AExpectedVersion=RELEASE_5 HelloWorld.java
- * @compile -processor TestSourceVersion -proc:only -source 5 -AExpectedVersion=RELEASE_5 HelloWorld.java
* @compile -processor TestSourceVersion -proc:only -source 1.6 -AExpectedVersion=RELEASE_6 HelloWorld.java
* @compile -processor TestSourceVersion -proc:only -source 6 -AExpectedVersion=RELEASE_6 HelloWorld.java
* @compile -processor TestSourceVersion -proc:only -source 1.7 -AExpectedVersion=RELEASE_7 HelloWorld.java
* @compile -processor TestSourceVersion -proc:only -source 7 -AExpectedVersion=RELEASE_7 HelloWorld.java
+ * @compile -processor TestSourceVersion -proc:only -source 1.8 -AExpectedVersion=RELEASE_8 HelloWorld.java
+ * @compile -processor TestSourceVersion -proc:only -source 8 -AExpectedVersion=RELEASE_8 HelloWorld.java
+ * @compile -processor TestSourceVersion -proc:only -source 1.9 -AExpectedVersion=RELEASE_9 HelloWorld.java
+ * @compile -processor TestSourceVersion -proc:only -source 9 -AExpectedVersion=RELEASE_9 HelloWorld.java
*/
import java.util.Set;
--- a/langtools/test/tools/javac/processing/environment/round/BuriedAnnotations.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/round/BuriedAnnotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,7 +22,7 @@
*/
/**
- * Class to hold annotations for ElementsAnnotatedWithTest.
+ * Class to hold annotations for TestElementsAnnotatedWith.
*/
@AnnotatedElementInfo(annotationName="java.lang.SuppressWarnings",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/environment/round/ErroneousAnnotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,12 @@
+/** /nodynamiccopyright/
+ * Class to hold annotations for TestElementsAnnotatedWith.
+ */
+
+@AnnotatedElementInfo(annotationName="java.lang.SuppressWarnings",
+ expectedSize=0,
+ names={})
+@Undefined
+public class ErroneousAnnotations {
+ @Undefined
+ private void foo() {return;}
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/environment/round/ErroneousAnnotations.out Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+ErroneousAnnotations.java:8:2: compiler.err.cant.resolve: kindname.class, Undefined, ,
+ErroneousAnnotations.java:10:6: compiler.err.cant.resolve.location: kindname.class, Undefined, , , (compiler.misc.location: kindname.class, ErroneousAnnotations, null)
+2 errors
+Results: []
--- a/langtools/test/tools/javac/processing/environment/round/Part1.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/round/Part1.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,7 +22,7 @@
*/
/**
- * Class to hold annotations for ElementsAnnotatedWithTest.
+ * Class to hold annotations for TestElementsAnnotatedWith.
*/
@AnnotatedElementInfo(annotationName="java.lang.SuppressWarnings",
--- a/langtools/test/tools/javac/processing/environment/round/Part2.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/round/Part2.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,7 +22,7 @@
*/
/**
- * Class to hold annotations for ElementsAnnotatedWithTest.
+ * Class to hold annotations for TestElementsAnnotatedWith.
*/
@SuppressWarnings("")
public class Part2 {
--- a/langtools/test/tools/javac/processing/environment/round/SurfaceAnnotations.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/round/SurfaceAnnotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -22,7 +22,7 @@
*/
/**
- * Class to hold annotations for ElementsAnnotatedWithTest.
+ * Class to hold annotations for TestElementsAnnotatedWith.
*/
@AnnotatedElementInfo(annotationName="java.lang.SuppressWarnings",
--- a/langtools/test/tools/javac/processing/environment/round/TestElementsAnnotatedWith.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/round/TestElementsAnnotatedWith.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6397298 6400986 6425592 6449798 6453386 6508401 6498938 6911854
+ * @bug 6397298 6400986 6425592 6449798 6453386 6508401 6498938 6911854 8030049
* @summary Tests that getElementsAnnotatedWith works properly.
* @author Joseph D. Darcy
* @library /tools/javac/lib
@@ -37,23 +37,18 @@
* @compile -processor TestElementsAnnotatedWith -proc:only C2.java
* @compile -processor TestElementsAnnotatedWith -proc:only Foo.java
* @compile -processor TestElementsAnnotatedWith -proc:only TypeParameterAnnotations.java
+ * @compile/fail/ref=ErroneousAnnotations.out -processor TestElementsAnnotatedWith -proc:only -XDrawDiagnostics ErroneousAnnotations.java
* @compile Foo.java
* @compile/process -processor TestElementsAnnotatedWith -proc:only Foo
*/
import java.lang.annotation.Annotation;
-import java.io.*;
import java.util.Collections;
import java.util.Set;
import java.util.HashSet;
-import java.util.List;
-import java.util.ArrayList;
import java.util.Arrays;
import javax.annotation.processing.*;
-import javax.tools.*;
-import javax.lang.model.SourceVersion;
import javax.lang.model.element.*;
-import javax.lang.model.util.*;
import static javax.lang.model.util.ElementFilter.*;
/**
--- a/langtools/test/tools/javac/processing/environment/round/TypeParameterAnnotations.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/environment/round/TypeParameterAnnotations.java Tue Jan 28 11:21:43 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
@@ -22,7 +22,7 @@
*/
/**
- * Class to hold annotations for ElementsAnnotatedWithTest.
+ * Class to hold annotations for TestElementsAnnotatedWith.
*/
@AnnotatedElementInfo(annotationName="TpAnno",
--- a/langtools/test/tools/javac/processing/warnings/TestSourceVersionWarnings.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/processing/warnings/TestSourceVersionWarnings.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,11 +27,7 @@
* @summary Test that warnings about source versions are output as expected.
* @author Joseph D. Darcy
* @compile TestSourceVersionWarnings.java
- * @compile/ref=gold_0.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -source 1.5 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_warn_0_2.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_0 -source 1.2 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_2 -source 1.2 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_warn_2_3.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_2 -source 1.3 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.5 -Xlint:-options HelloWorld.java
+ * @compile/ref=gold_0.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -source 1.6 -Xlint:-options HelloWorld.java
* @compile/ref=gold_sv_warn_5_6.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.6 -Xlint:-options HelloWorld.java
* @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options HelloWorld.java
* @compile/ref=gold_unsp_warn.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options -Aunsupported HelloWorld.java
--- a/langtools/test/tools/javac/processing/warnings/gold_sv_warn_0_2.out Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-- compiler.warn.proc.processor.incompatible.source.version: RELEASE_0, TestSourceVersionWarnings, 1.2
-1 warning
--- a/langtools/test/tools/javac/processing/warnings/gold_sv_warn_2_3.out Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-- compiler.warn.proc.processor.incompatible.source.version: RELEASE_2, TestSourceVersionWarnings, 1.3
-1 warning
--- a/langtools/test/tools/javac/resolve/Pos.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/resolve/Pos.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/resolve/ResolveHarness.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/resolve/ResolveHarness.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/resolve/tests/PrimitiveOverReferenceVarargsAmbiguous.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/resolve/tests/PrimitiveOverReferenceVarargsAmbiguous.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
--- a/langtools/test/tools/javac/stackmap/StackMapTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/stackmap/StackMapTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,7 +27,7 @@
* @summary The "method0" StackMap attribute should have two entries instead of three
* @library /tools/javac/lib
* @build ToolBox
- * @run compile -source 6 -target 6 StackMapTest.java
+ * @run compile StackMapTest.java
* @run main StackMapTest
*/
@@ -48,7 +48,7 @@
}
public static void main(String args[]) throws Exception {
-// "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -source 6 -target 6 T4955930.java
+// "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} T4955930.java
// "${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} -verbose T4955930 > ${TMP1}
Path pathToClass = Paths.get(System.getProperty("test.classes"),
--- a/langtools/test/tools/javac/unicode/Unmappable.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/unicode/Unmappable.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,8 +27,6 @@
* @summary diagnose encoding errors in Java source files
* @author gafter
*
- * @compile -encoding ascii -source 1.5 Unmappable.java
- * @compile/fail -Werror -encoding ascii -source 1.5 Unmappable.java
* @compile/fail -encoding ascii Unmappable.java
*/
--- a/langtools/test/tools/javac/varargs/warning/Warn1.java Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, 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 5035307
- * @summary fixed-arity warning given too often
- * @author gafter
- *
- * @compile -Werror -source 1.4 -Xlint:-options Warn1.java
- */
-
-package varargs.warning.warn1;
-
-import java.util.List;
-import java.util.Arrays;
-
-class Warn1 {
- void f(String[] args) {
- List l = java.util.Arrays.asList(args);
- }
-}
--- a/langtools/test/tools/javac/warnings/AuxiliaryClass/ClassUsingAnotherAuxiliary.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/warnings/AuxiliaryClass/ClassUsingAnotherAuxiliary.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/warnings/AuxiliaryClass/ClassUsingAuxiliary.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/warnings/AuxiliaryClass/ClassUsingAuxiliary.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javac/warnings/AuxiliaryClass/SelfClassWithAux.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javac/warnings/AuxiliaryClass/SelfClassWithAux.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/javadoc/api/basic/APITest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javadoc/api/basic/APITest.java Tue Jan 28 11:21:43 2014 -0800
@@ -202,12 +202,6 @@
"pkg/package-frame.html",
"pkg/package-summary.html",
"pkg/package-tree.html",
- "resources/background.gif",
- "resources/tab.gif",
- "resources/activetitlebar_end.gif",
- "resources/activetitlebar.gif",
- "resources/titlebar_end.gif",
- "resources/titlebar.gif",
"script.js",
"stylesheet.css"
));
--- a/langtools/test/tools/javap/output/Tester.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/output/Tester.java Tue Jan 28 11:21:43 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
@@ -271,7 +271,7 @@
*/
protected void compileTestFile() {
String path = javaFile.getPath();
- String params[] = { "-source", "1.8", "-g", path };
+ String params[] = {"-g", path };
int rc = com.sun.tools.javac.Main.compile(params);
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
--- a/langtools/test/tools/javap/typeAnnotations/JSR175Annotations.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/JSR175Annotations.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -114,7 +114,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javap/typeAnnotations/NewArray.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/NewArray.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -102,7 +102,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javap/typeAnnotations/Presence.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/Presence.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -180,7 +180,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javap/typeAnnotations/PresenceInner.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/PresenceInner.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -149,7 +149,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javap/typeAnnotations/TypeCasts.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/TypeCasts.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -117,7 +117,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javap/typeAnnotations/Visibility.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/Visibility.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -108,7 +108,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/javap/typeAnnotations/Wildcards.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/javap/typeAnnotations/Wildcards.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -139,7 +139,7 @@
}
File compileTestFile(File f) {
- int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.8", "-g", f.getPath() });
+ int rc = com.sun.tools.javac.Main.compile(new String[] {"-g", f.getPath() });
if (rc != 0)
throw new Error("compilation failed. rc=" + rc);
String path = f.getPath();
--- a/langtools/test/tools/jdeps/APIDeps.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/jdeps/APIDeps.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/langtools/test/tools/jdeps/p/Foo.java Thu Jan 23 10:35:38 2014 -0800
+++ b/langtools/test/tools/jdeps/p/Foo.java Tue Jan 28 11:21:43 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, 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
--- a/make/common/NativeCompilation.gmk Thu Jan 23 10:35:38 2014 -0800
+++ b/make/common/NativeCompilation.gmk Tue Jan 28 11:21:43 2014 -0800
@@ -186,7 +186,7 @@
$1_BASENAME:=$(LIBRARY_PREFIX)$$($1_LIBRARY)$(SHARED_LIBRARY_SUFFIX)
$1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
-
+ $1_NOSUFFIX:=$(LIBRARY_PREFIX)$$($1_LIBRARY)
endif
ifneq (,$$($1_STATIC_LIBRARY))
@@ -208,6 +208,7 @@
$1_BASENAME:=$(LIBRARY_PREFIX)$$($1_STATIC_LIBRARY)$(STATIC_LIBRARY_SUFFIX)
$1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
+ $1_NOSUFFIX:=$(LIBRARY_PREFIX)$$($1_STATIC_LIBRARY)
endif
ifneq (,$$($1_PROGRAM))
@@ -225,7 +226,7 @@
$1_BASENAME:=$$($1_PROGRAM)$(EXE_SUFFIX)
$1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
-
+ $1_NOSUFFIX:=$$($1_PROGRAM)
endif
ifeq (,$$($1_TARGET))
@@ -413,7 +414,78 @@
$1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
endif
+ # Need to make sure TARGET is first on list
$1 := $$($1_TARGET)
+ ifeq ($$($1_STATIC_LIBRARY),)
+ ifneq ($$($1_DEBUG_SYMBOLS),)
+ ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
+ ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
+ # The dependency on TARGET is needed on windows for debuginfo files
+ # to be rebuilt properly.
+ $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/% $$($1_TARGET)
+ $(CP) $$< $$@
+ endif
+
+ # Generate debuginfo files.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $1_EXTRA_LDFLAGS += "-pdb:$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).pdb" \
+ "-map:$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).map"
+ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).pdb \
+ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).map
+
+ # This dependency dance ensures that windows debug info files get rebuilt
+ # properly if deleted.
+ $$($1_TARGET): $$($1_DEBUGINFO_FILES)
+ $$($1_DEBUGINFO_FILES): $$($1_EXPECTED_OBJS)
+
+ else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).debuginfo
+ # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+ # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+ # empty section headers until a fixed $(OBJCOPY) is available.
+ # An empty section header has sh_addr == 0 and sh_size == 0.
+ # This problem has only been seen on Solaris X64, but we call this tool
+ # on all Solaris builds just in case.
+ #
+ # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+ # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+ $$($1_DEBUGINFO_FILES): $$($1_TARGET) \
+ $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+ $(RM) $$@
+ $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+ $(OBJCOPY) --only-keep-debug $$< $$@
+ $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+ $(TOUCH) $$@
+
+ else ifeq ($(OPENJDK_TARGET_OS), linux)
+ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).debuginfo
+ $$($1_DEBUGINFO_FILES): $$($1_TARGET)
+ $(RM) $$@
+ $(OBJCOPY) --only-keep-debug $$< $$@
+ $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+ $(TOUCH) $$@
+
+ endif # No MacOS X support
+
+ ifeq ($(ZIP_DEBUGINFO_FILES), true)
+ $1_DEBUGINFO_ZIP := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).diz
+ $1 += $$(subst $$($1_OBJECT_DIR),$$($1_OUTPUT_DIR),$$($1_DEBUGINFO_ZIP))
+
+ # The dependency on TARGET is needed on windows for debuginfo files
+ # to be rebuilt properly.
+ $$($1_DEBUGINFO_ZIP): $$($1_DEBUGINFO_FILES) $$($1_TARGET)
+ $(CD) $$($1_OBJECT_DIR) \
+ && $(ZIP) -q $$@ $$($1_DEBUGINFO_FILES)
+
+ else
+ $1 += $$(subst $$($1_OBJECT_DIR),$$($1_OUTPUT_DIR),$$($1_DEBUGINFO_FILES))
+ endif
+ endif
+ endif # !MacOS X
+ endif # $1_DEBUG_SYMBOLS
+ endif # !STATIC_LIBRARY
+
ifneq (,$$($1_LIBRARY))
# Generating a dynamic library.
$1_EXTRA_LDFLAGS+=$$(call SET_SHARED_LIBRARY_NAME,$$($1_BASENAME))
@@ -423,77 +495,16 @@
$1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)
- ifneq (,$$($1_DEBUG_SYMBOLS))
- ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1_EXTRA_LDFLAGS+="-pdb:$$($1_OBJECT_DIR)/$$($1_LIBRARY).pdb" \
- "-map:$$($1_OBJECT_DIR)/$$($1_LIBRARY).map"
- endif
-
- ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
- $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
- $(CP) $$< $$@
- endif
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
- # empty section headers until a fixed $(OBJCOPY) is available.
- # An empty section header has sh_addr == 0 and sh_size == 0.
- # This problem has only been seen on Solaris X64, but we call this tool
- # on all Solaris builds just in case.
- #
- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
- $(RM) $$@
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
- $(RM) $$@
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif # Touch to not retrigger rule on rebuild
- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
- ifeq ($(ZIP_DEBUGINFO_FILES), true)
-ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz
-
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET)
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$($1_LIBRARY).map $$($1_LIBRARY).pdb
- else
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) \
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
-endif # no MacOS X support yet
- else
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
- $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
- endif
- endif
- endif
-
$$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_REAL_MAPFILE)
$$(call LINKING_MSG,$$($1_BASENAME))
$$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $(LD_OUT_OPTION)$$@ \
$$($1_EXPECTED_OBJS) $$($1_RES) $$($1_LDFLAGS_SUFFIX) \
$$($1_EXTRA_LDFLAGS_SUFFIX)
+ # Touch target to make sure it has a later time stamp than the debug
+ # symbol files to avoid unnecessary relinking on rebuild.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $(TOUCH) $$@
+ endif
endif
@@ -507,72 +518,6 @@
ifneq (,$$($1_PROGRAM))
# A executable binary has been specified, setup the target for it.
- ifneq (,$$($1_DEBUG_SYMBOLS))
- ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1_EXTRA_LDFLAGS+="-pdb:$$($1_OBJECT_DIR)/$$($1_PROGRAM).pdb" \
- "-map:$$($1_OBJECT_DIR)/$$($1_PROGRAM).map"
- endif
-
- ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
- $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
- $(CP) $$< $$@
- endif
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
- # empty section headers until a fixed $(OBJCOPY) is available.
- # An empty section header has sh_addr == 0 and sh_size == 0.
- # This problem has only been seen on Solaris X64, but we call this tool
- # on all Solaris builds just in case.
- #
- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
- $(RM) $$@
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
- $(RM) $$@
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif
- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
- ifeq ($(ZIP_DEBUGINFO_FILES), true)
-ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).diz
-
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).diz : $$($1_TARGET)
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$($1_PROGRAM).map $$($1_PROGRAM).pdb
- else
- $$($1_OBJECT_DIR)/$$(PROGRAM_PREFIX)$$($1_PROGRAM).diz : $$($1_TARGET) \
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$($1_PROGRAM).debuginfo
- endif
-endif # no MacOS X support yet
- else
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
- $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
- endif
- endif
- endif
- endif
-
$1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)
$$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_GEN_MANIFEST)
@@ -590,5 +535,11 @@
$(CODESIGN) -s openjdk_codesign $$@
endif
endif
+ # Touch target to make sure it has a later time stamp than the debug
+ # symbol files to avoid unnecessary relinking on rebuild.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $(TOUCH) $$@
+ endif
+
endif
endef
--- a/make/scripts/hgforest.sh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2009, 2012, 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.
-#
-
-# Shell script for a fast parallel forest command
-command="$1"
-pull_extra_base="$2"
-
-tmp=/tmp/forest.$$
-rm -f -r ${tmp}
-mkdir -p ${tmp}
-
-# Remove tmp area on A. B. Normal termination
-trap 'rm -f -r ${tmp}' KILL
-trap 'rm -f -r ${tmp}' EXIT
-
-# Only look in specific locations for possible forests (avoids long searches)
-pull_default=""
-repos=""
-repos_extra=""
-if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
- subrepos="corba jaxp jaxws langtools jdk hotspot nashorn"
- if [ -f .hg/hgrc ] ; then
- pull_default=`hg paths default`
- if [ "${pull_default}" = "" ] ; then
- echo "ERROR: Need initial clone with 'hg paths default' defined"
- exit 1
- fi
- fi
- if [ "${pull_default}" = "" ] ; then
- echo "ERROR: Need initial repository to use this script"
- exit 1
- fi
- for i in ${subrepos} ; do
- if [ ! -f ${i}/.hg/hgrc ] ; then
- repos="${repos} ${i}"
- fi
- done
- if [ "${pull_extra_base}" != "" ] ; then
- subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs"
- pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'`
- pull_extra="${pull_extra_base}/${pull_default_tail}"
- for i in ${subrepos_extra} ; do
- if [ ! -f ${i}/.hg/hgrc ] ; then
- repos_extra="${repos_extra} ${i}"
- fi
- done
- fi
- at_a_time=2
- # Any repos to deal with?
- if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then
- echo "No repositories to clone."
- exit
- fi
-else
- hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null`
- # Derive repository names from the .hg directory locations
- for i in ${hgdirs} ; do
- repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`"
- done
- at_a_time=8
- # Any repos to deal with?
- if [ "${repos}" = "" ] ; then
- echo "No repositories to process."
- exit
- fi
-fi
-
-# Echo out what repositories we will clone
-echo "# Repos: ${repos} ${repos_extra}"
-
-# Run the supplied command on all repos in parallel, save output until end
-n=0
-for i in ${repos} ; do
- echo "Starting on ${i}"
- n=`expr ${n} '+' 1`
- (
- (
- if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
- pull_newrepo="`echo ${pull_default}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
- cline="hg clone ${pull_newrepo} ${i}"
- echo "# ${cline}"
- ( eval "${cline}" )
- else
- cline="hg $*"
- echo "# cd ${i} && ${cline}"
- ( cd ${i} && eval "${cline}" )
- fi
- echo "# exit code $?"
- ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) &
- if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
- sleep 5
- fi
-done
-# Wait for all hg commands to complete
-wait
-
-if [ "${repos_extra}" != "" ] ; then
- for i in ${repos_extra} ; do
- echo "Starting on ${i}"
- n=`expr ${n} '+' 1`
- (
- (
- pull_newextrarepo="`echo ${pull_extra}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
- cline="hg clone ${pull_newextrarepo} ${i}"
- echo "# ${cline}"
- ( eval "${cline}" )
- echo "# exit code $?"
- ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) &
- if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
- sleep 5
- fi
- done
- # Wait for all hg commands to complete
- wait
-fi
-
-# Cleanup
-rm -f -r ${tmp}
-
-# Terminate with exit 0 all the time (hard to know when to say "failed")
-exit 0
-
--- a/make/scripts/webrev.ksh Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2783 +0,0 @@
-#!/bin/ksh -p
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
-# Use is subject to license terms.
-#
-# This script takes a file list and a workspace and builds a set of html files
-# suitable for doing a code review of source changes via a web page.
-# Documentation is available via 'webrev -h'.
-#
-
-WEBREV_UPDATED=25.1-hg+openjdk.java.net
-
-HTML='<?xml version="1.0"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n'
-
-FRAMEHTML='<?xml version="1.0"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n'
-
-STDHEAD='<meta charset="utf-8">
-<meta http-equiv="cache-control" content="no-cache" />
-<meta http-equiv="Pragma" content="no-cache" />
-<meta http-equiv="Expires" content="-1" />
-<!--
- Note to customizers: the body of the webrev is IDed as SUNWwebrev
- to allow easy overriding by users of webrev via the userContent.css
- mechanism available in some browsers.
-
- For example, to have all "removed" information be red instead of
- brown, set a rule in your userContent.css file like:
-
- body#SUNWwebrev span.removed { color: red ! important; }
--->
-<style type="text/css" media="screen">
-body {
- background-color: #eeeeee;
-}
-hr {
- border: none 0;
- border-top: 1px solid #aaa;
- height: 1px;
-}
-div.summary {
- font-size: .8em;
- border-bottom: 1px solid #aaa;
- padding-left: 1em;
- padding-right: 1em;
-}
-div.summary h2 {
- margin-bottom: 0.3em;
-}
-div.summary table th {
- text-align: right;
- vertical-align: top;
- white-space: nowrap;
-}
-span.lineschanged {
- font-size: 0.7em;
-}
-span.oldmarker {
- color: red;
- font-size: large;
- font-weight: bold;
-}
-span.newmarker {
- color: green;
- font-size: large;
- font-weight: bold;
-}
-span.removed {
- color: brown;
-}
-span.changed {
- color: blue;
-}
-span.new {
- color: blue;
- font-weight: bold;
-}
-a.print { font-size: x-small; }
-
-</style>
-
-<style type="text/css" media="print">
-pre { font-size: 0.8em; font-family: courier, monospace; }
-span.removed { color: #444; font-style: italic }
-span.changed { font-weight: bold; }
-span.new { font-weight: bold; }
-span.newmarker { font-size: 1.2em; font-weight: bold; }
-span.oldmarker { font-size: 1.2em; font-weight: bold; }
-a.print {display: none}
-hr { border: none 0; border-top: 1px solid #aaa; height: 1px; }
-</style>
-'
-
-#
-# UDiffs need a slightly different CSS rule for 'new' items (we don't
-# want them to be bolded as we do in cdiffs or sdiffs).
-#
-UDIFFCSS='
-<style type="text/css" media="screen">
-span.new {
- color: blue;
- font-weight: normal;
-}
-</style>
-'
-
-#
-# input_cmd | html_quote | output_cmd
-# or
-# html_quote filename | output_cmd
-#
-# Make a piece of source code safe for display in an HTML <pre> block.
-#
-html_quote()
-{
- sed -e "s/&/\&/g" -e "s/&#\([x]*[0-9A-Fa-f]\{2,5\}\);/\&#\1;/g" -e "s/</\</g" -e "s/>/\>/g" "$@" | expand
-}
-
-#
-# input_cmd | html_quote | output_cmd
-# or
-# html_dequote filename | output_cmd
-#
-# Replace HTML entities with literals
-#
-html_dequote()
-{
- sed -e "s/"/\"/g" -e "s/'/\'/g" -e "s/&/\&/g" -e "s/</<'/g" -e "s/>/>/g" "$@" | expand
-}
-
-#
-# input_cmd | bug2url | output_cmd
-#
-# Scan for bugids and insert <a> links to the relevent bug database.
-#
-bug2url()
-{
- sed -e 's|[0-9]\{5,\}|<a href=\"'$BUGURL$IDPREFIX'&\">&</a>|g'
-}
-
-#
-# strip_unchanged <infile> | output_cmd
-#
-# Removes chunks of sdiff documents that have not changed. This makes it
-# easier for a code reviewer to find the bits that have changed.
-#
-# Deleted lines of text are replaced by a horizontal rule. Some
-# identical lines are retained before and after the changed lines to
-# provide some context. The number of these lines is controlled by the
-# variable C in the $AWK script below.
-#
-# The script detects changed lines as any line that has a "<span class="
-# string embedded (unchanged lines have no particular class and are not
-# part of a <span>). Blank lines (without a sequence number) are also
-# detected since they flag lines that have been inserted or deleted.
-#
-strip_unchanged()
-{
- $AWK '
- BEGIN { C = c = 20 }
- NF == 0 || /span class=/ {
- if (c > C) {
- c -= C
- inx = 0
- if (c > C) {
- print "\n</pre><hr></hr><pre>"
- inx = c % C
- c = C
- }
-
- for (i = 0; i < c; i++)
- print ln[(inx + i) % C]
- }
- c = 0;
- print
- next
- }
- { if (c >= C) {
- ln[c % C] = $0
- c++;
- next;
- }
- c++;
- print
- }
- END { if (c > (C * 2)) print "\n</pre><hr></hr>" }
-
- ' $1
-}
-
-#
-# sdiff_to_html
-#
-# This function takes two files as arguments, obtains their diff, and
-# processes the diff output to present the files as an HTML document with
-# the files displayed side-by-side, differences shown in color. It also
-# takes a delta comment, rendered as an HTML snippet, as the third
-# argument. The function takes two files as arguments, then the name of
-# file, the path, and the comment. The HTML will be delivered on stdout,
-# e.g.
-#
-# $ sdiff_to_html old/usr/src/tools/scripts/webrev.sh \
-# new/usr/src/tools/scripts/webrev.sh \
-# webrev.sh usr/src/tools/scripts \
-# '<a href="https://bugs.openjdk.java.net/browse/JDK-1234567">
-# JDK-1234567</a> my bugid' > <file>.html
-#
-# framed_sdiff() is then called which creates $2.frames.html
-# in the webrev tree.
-#
-# FYI: This function is rather unusual in its use of awk. The initial
-# diff run produces conventional diff output showing changed lines mixed
-# with editing codes. The changed lines are ignored - we're interested in
-# the editing codes, e.g.
-#
-# 8c8
-# 57a61
-# 63c66,76
-# 68,93d80
-# 106d90
-# 108,110d91
-#
-# These editing codes are parsed by the awk script and used to generate
-# another awk script that generates HTML, e.g the above lines would turn
-# into something like this:
-#
-# BEGIN { printf "<pre>\n" }
-# function sp(n) {for (i=0;i<n;i++)printf "\n"}
-# function wl(n) {printf "<font color=%s>%4d %s </font>\n", n, NR, $0}
-# NR==8 {wl("#7A7ADD");next}
-# NR==54 {wl("#7A7ADD");sp(3);next}
-# NR==56 {wl("#7A7ADD");next}
-# NR==57 {wl("black");printf "\n"; next}
-# : :
-#
-# This script is then run on the original source file to generate the
-# HTML that corresponds to the source file.
-#
-# The two HTML files are then combined into a single piece of HTML that
-# uses an HTML table construct to present the files side by side. You'll
-# notice that the changes are color-coded:
-#
-# black - unchanged lines
-# blue - changed lines
-# bold blue - new lines
-# brown - deleted lines
-#
-# Blank lines are inserted in each file to keep unchanged lines in sync
-# (side-by-side). This format is familiar to users of sdiff(1) or
-# Teamware's filemerge tool.
-#
-sdiff_to_html()
-{
- diff -b $1 $2 > /tmp/$$.diffs
-
- TNAME=$3
- TPATH=$4
- COMMENT=$5
-
- #
- # Now we have the diffs, generate the HTML for the old file.
- #
- $AWK '
- BEGIN {
- printf "function sp(n) {for (i=0;i<n;i++)printf \"\\n\"}\n"
- printf "function removed() "
- printf "{printf \"<span class=\\\"removed\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function changed() "
- printf "{printf \"<span class=\\\"changed\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function bl() {printf \"%%4d %%s\\n\", NR, $0}\n"
-}
- /^</ {next}
- /^>/ {next}
- /^---/ {next}
-
- {
- split($1, a, /[cad]/) ;
- if (index($1, "a")) {
- if (a[1] == 0) {
- n = split(a[2], r, /,/);
- if (n == 1)
- printf "BEGIN\t\t{sp(1)}\n"
- else
- printf "BEGIN\t\t{sp(%d)}\n",\
- (r[2] - r[1]) + 1
- next
- }
-
- printf "NR==%s\t\t{", a[1]
- n = split(a[2], r, /,/);
- s = r[1];
- if (n == 1)
- printf "bl();printf \"\\n\"; next}\n"
- else {
- n = r[2] - r[1]
- printf "bl();sp(%d);next}\n",\
- (r[2] - r[1]) + 1
- }
- next
- }
- if (index($1, "d")) {
- n = split(a[1], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (n == 1)
- printf "NR==%s\t\t{removed(); next}\n" , n1
- else
- printf "NR==%s,NR==%s\t{removed(); next}\n" , n1, n2
- next
- }
- if (index($1, "c")) {
- n = split(a[1], r, /,/);
- n1 = r[1]
- n2 = r[2]
- final = n2
- d1 = 0
- if (n == 1)
- printf "NR==%s\t\t{changed();" , n1
- else {
- d1 = n2 - n1
- printf "NR==%s,NR==%s\t{changed();" , n1, n2
- }
- m = split(a[2], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (m > 1) {
- d2 = n2 - n1
- if (d2 > d1) {
- if (n > 1) printf "if (NR==%d)", final
- printf "sp(%d);", d2 - d1
- }
- }
- printf "next}\n" ;
-
- next
- }
- }
-
- END { printf "{printf \"%%4d %%s\\n\", NR, $0 }\n" }
- ' /tmp/$$.diffs > /tmp/$$.file1
-
- #
- # Now generate the HTML for the new file
- #
- $AWK '
- BEGIN {
- printf "function sp(n) {for (i=0;i<n;i++)printf \"\\n\"}\n"
- printf "function new() "
- printf "{printf \"<span class=\\\"new\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function changed() "
- printf "{printf \"<span class=\\\"changed\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function bl() {printf \"%%4d %%s\\n\", NR, $0}\n"
- }
-
- /^</ {next}
- /^>/ {next}
- /^---/ {next}
-
- {
- split($1, a, /[cad]/) ;
- if (index($1, "d")) {
- if (a[2] == 0) {
- n = split(a[1], r, /,/);
- if (n == 1)
- printf "BEGIN\t\t{sp(1)}\n"
- else
- printf "BEGIN\t\t{sp(%d)}\n",\
- (r[2] - r[1]) + 1
- next
- }
-
- printf "NR==%s\t\t{", a[2]
- n = split(a[1], r, /,/);
- s = r[1];
- if (n == 1)
- printf "bl();printf \"\\n\"; next}\n"
- else {
- n = r[2] - r[1]
- printf "bl();sp(%d);next}\n",\
- (r[2] - r[1]) + 1
- }
- next
- }
- if (index($1, "a")) {
- n = split(a[2], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (n == 1)
- printf "NR==%s\t\t{new() ; next}\n" , n1
- else
- printf "NR==%s,NR==%s\t{new() ; next}\n" , n1, n2
- next
- }
- if (index($1, "c")) {
- n = split(a[2], r, /,/);
- n1 = r[1]
- n2 = r[2]
- final = n2
- d2 = 0;
- if (n == 1) {
- final = n1
- printf "NR==%s\t\t{changed();" , n1
- } else {
- d2 = n2 - n1
- printf "NR==%s,NR==%s\t{changed();" , n1, n2
- }
- m = split(a[1], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (m > 1) {
- d1 = n2 - n1
- if (d1 > d2) {
- if (n > 1) printf "if (NR==%d)", final
- printf "sp(%d);", d1 - d2
- }
- }
- printf "next}\n" ;
- next
- }
- }
- END { printf "{printf \"%%4d %%s\\n\", NR, $0 }\n" }
- ' /tmp/$$.diffs > /tmp/$$.file2
-
- #
- # Post-process the HTML files by running them back through $AWK
- #
- html_quote < $1 | $AWK -f /tmp/$$.file1 > /tmp/$$.file1.html
-
- html_quote < $2 | $AWK -f /tmp/$$.file2 > /tmp/$$.file2.html
-
- #
- # Now combine into a valid HTML file and side-by-side into a table
- #
- print "$HTML<head>$STDHEAD"
- print "<title>$WNAME Sdiff $TPATH </title>"
- print "</head><body id=\"SUNWwebrev\">"
- print "<h2>$TPATH/$TNAME</h2>"
- print "<a class=\"print\" href=\"javascript:print()\">Print this page</a>"
- print "<pre>$COMMENT</pre>\n"
- print "<table><tr valign=\"top\">"
- print "<td><pre>"
-
- strip_unchanged /tmp/$$.file1.html
-
- print "</pre></td><td><pre>"
-
- strip_unchanged /tmp/$$.file2.html
-
- print "</pre></td>"
- print "</tr></table>"
- print "</body></html>"
-
- framed_sdiff $TNAME $TPATH /tmp/$$.file1.html /tmp/$$.file2.html \
- "$COMMENT"
-}
-
-
-#
-# framed_sdiff <filename> <filepath> <lhsfile> <rhsfile> <comment>
-#
-# Expects lefthand and righthand side html files created by sdiff_to_html.
-# We use insert_anchors() to augment those with HTML navigation anchors,
-# and then emit the main frame. Content is placed into:
-#
-# $WDIR/DIR/$TNAME.lhs.html
-# $WDIR/DIR/$TNAME.rhs.html
-# $WDIR/DIR/$TNAME.frames.html
-#
-# NOTE: We rely on standard usage of $WDIR and $DIR.
-#
-function framed_sdiff
-{
- typeset TNAME=$1
- typeset TPATH=$2
- typeset lhsfile=$3
- typeset rhsfile=$4
- typeset comments=$5
- typeset RTOP
-
- # Enable html files to access WDIR via a relative path.
- RTOP=$(relative_dir $TPATH $WDIR)
-
- # Make the rhs/lhs files and output the frameset file.
- print "$HTML<head>$STDHEAD" > $WDIR/$DIR/$TNAME.lhs.html
-
- cat >> $WDIR/$DIR/$TNAME.lhs.html <<-EOF
- <script type="text/javascript" src="$RTOP/ancnav.js"></script>
- </head>
- <body id="SUNWwebrev" onkeypress="keypress(event);">
- <a name="0"></a>
- <pre>$comments</pre><hr></hr>
- EOF
-
- cp $WDIR/$DIR/$TNAME.lhs.html $WDIR/$DIR/$TNAME.rhs.html
-
- insert_anchors $lhsfile >> $WDIR/$DIR/$TNAME.lhs.html
- insert_anchors $rhsfile >> $WDIR/$DIR/$TNAME.rhs.html
-
- close='</body></html>'
-
- print $close >> $WDIR/$DIR/$TNAME.lhs.html
- print $close >> $WDIR/$DIR/$TNAME.rhs.html
-
- print "$FRAMEHTML<head>$STDHEAD" > $WDIR/$DIR/$TNAME.frames.html
- print "<title>$WNAME Framed-Sdiff " \
- "$TPATH/$TNAME</title> </head>" >> $WDIR/$DIR/$TNAME.frames.html
- cat >> $WDIR/$DIR/$TNAME.frames.html <<-EOF
- <frameset rows="*,60">
- <frameset cols="50%,50%">
- <frame src="$TNAME.lhs.html" scrolling="auto" name="lhs" />
- <frame src="$TNAME.rhs.html" scrolling="auto" name="rhs" />
- </frameset>
- <frame src="$RTOP/ancnav.html" scrolling="no" marginwidth="0"
- marginheight="0" name="nav" />
- <noframes>
- <body id="SUNWwebrev">
- Alas 'frames' webrev requires that your browser supports frames
- and has the feature enabled.
- </body>
- </noframes>
- </frameset>
- </html>
- EOF
-}
-
-
-#
-# fix_postscript
-#
-# Merge codereview output files to a single conforming postscript file, by:
-# - removing all extraneous headers/trailers
-# - making the page numbers right
-# - removing pages devoid of contents which confuse some
-# postscript readers.
-#
-# From Casper.
-#
-function fix_postscript
-{
- infile=$1
-
- cat > /tmp/$$.crmerge.pl << \EOF
-
- print scalar(<>); # %!PS-Adobe---
- print "%%Orientation: Landscape\n";
-
- $pno = 0;
- $doprint = 1;
-
- $page = "";
-
- while (<>) {
- next if (/^%%Pages:\s*\d+/);
-
- if (/^%%Page:/) {
- if ($pno == 0 || $page =~ /\)S/) {
- # Header or single page containing text
- print "%%Page: ? $pno\n" if ($pno > 0);
- print $page;
- $pno++;
- } else {
- # Empty page, skip it.
- }
- $page = "";
- $doprint = 1;
- next;
- }
-
- # Skip from %%Trailer of one document to Endprolog
- # %%Page of the next
- $doprint = 0 if (/^%%Trailer/);
- $page .= $_ if ($doprint);
- }
-
- if ($page =~ /\)S/) {
- print "%%Page: ? $pno\n";
- print $page;
- } else {
- $pno--;
- }
- print "%%Trailer\n%%Pages: $pno\n";
-EOF
-
- $PERL /tmp/$$.crmerge.pl < $infile
-}
-
-
-#
-# input_cmd | insert_anchors | output_cmd
-#
-# Flag blocks of difference with sequentially numbered invisible
-# anchors. These are used to drive the frames version of the
-# sdiffs output.
-#
-# NOTE: Anchor zero flags the top of the file irrespective of changes,
-# an additional anchor is also appended to flag the bottom.
-#
-# The script detects changed lines as any line that has a "<span
-# class=" string embedded (unchanged lines have no class set and are
-# not part of a <span>. Blank lines (without a sequence number)
-# are also detected since they flag lines that have been inserted or
-# deleted.
-#
-function insert_anchors
-{
- $AWK '
- function ia() {
- # This should be able to be a singleton <a /> but that
- # seems to trigger a bug in firefox a:hover rule processing
- printf "<a name=\"%d\" id=\"anc%d\"></a>", anc, anc++;
- }
-
- BEGIN {
- anc=1;
- inblock=1;
- printf "<pre>\n";
- }
- NF == 0 || /^<span class=/ {
- if (inblock == 0) {
- ia();
- inblock=1;
- }
- print;
- next;
- }
- {
- inblock=0;
- print;
- }
- END {
- ia();
-
- printf "<b style=\"font-size: large; color: red\">";
- printf "--- EOF ---</b>"
- for(i=0;i<8;i++) printf "\n\n\n\n\n\n\n\n\n\n";
- printf "</pre>"
- printf "<form name=\"eof\">";
- printf "<input name=\"value\" value=\"%d\" type=\"hidden\" />",
- anc - 1;
- printf "</form>";
- }
- ' $1
-}
-
-
-#
-# relative_dir
-#
-# Print a relative return path from $1 to $2. For example if
-# $1=/tmp/myreview/raw_files/usr/src/tools/scripts and $2=/tmp/myreview,
-# this function would print "../../../../".
-#
-# In the event that $1 is not in $2 a warning is printed to stderr,
-# and $2 is returned-- the result of this is that the resulting webrev
-# is not relocatable.
-#
-function relative_dir
-{
- d1=$1
- d2=$2
- if [[ "$d1" == "." ]]; then
- print "."
- else
- typeset cur="${d1##$d2?(/)}"
- typeset ret=""
- if [[ $d2 == $cur ]]; then # Should never happen.
- # Should never happen.
- print -u2 "\nWARNING: relative_dir: \"$1\" not relative "
- print -u2 "to \"$2\". Check input paths. Framed webrev "
- print -u2 "will not be relocatable!"
- print $2
- return
- fi
-
- while [[ -n ${cur} ]];
- do
- cur=${cur%%*(/)*([!/])}
- if [[ -z $ret ]]; then
- ret=".."
- else
- ret="../$ret"
- fi
- done
- print $ret
- fi
-}
-
-
-#
-# frame_nav_js
-#
-# Emit javascript for frame navigation
-#
-function frame_nav_js
-{
-cat << \EOF
-var myInt;
-var scrolling=0;
-var sfactor = 3;
-var scount=10;
-
-function scrollByPix() {
- if (scount<=0) {
- sfactor*=1.2;
- scount=10;
- }
- parent.lhs.scrollBy(0,sfactor);
- parent.rhs.scrollBy(0,sfactor);
- scount--;
-}
-
-function scrollToAnc(num) {
-
- // Update the value of the anchor in the form which we use as
- // storage for this value. setAncValue() will take care of
- // correcting for overflow and underflow of the value and return
- // us the new value.
- num = setAncValue(num);
-
- // Set location and scroll back a little to expose previous
- // lines.
- //
- // Note that this could be improved: it is possible although
- // complex to compute the x and y position of an anchor, and to
- // scroll to that location directly.
- //
- parent.lhs.location.replace(parent.lhs.location.pathname + "#" + num);
- parent.rhs.location.replace(parent.rhs.location.pathname + "#" + num);
-
- parent.lhs.scrollBy(0,-30);
- parent.rhs.scrollBy(0,-30);
-}
-
-function getAncValue()
-{
- return (parseInt(parent.nav.document.diff.real.value));
-}
-
-function setAncValue(val)
-{
- if (val <= 0) {
- val = 0;
- parent.nav.document.diff.real.value = val;
- parent.nav.document.diff.display.value = "BOF";
- return (val);
- }
-
- //
- // The way we compute the max anchor value is to stash it
- // inline in the left and right hand side pages-- it's the same
- // on each side, so we pluck from the left.
- //
- maxval = parent.lhs.document.eof.value.value;
- if (val < maxval) {
- parent.nav.document.diff.real.value = val;
- parent.nav.document.diff.display.value = val.toString();
- return (val);
- }
-
- // this must be: val >= maxval
- val = maxval;
- parent.nav.document.diff.real.value = val;
- parent.nav.document.diff.display.value = "EOF";
- return (val);
-}
-
-function stopScroll() {
- if (scrolling==1) {
- clearInterval(myInt);
- scrolling=0;
- }
-}
-
-function startScroll() {
- stopScroll();
- scrolling=1;
- myInt=setInterval("scrollByPix()",10);
-}
-
-function handlePress(b) {
-
- switch (b) {
- case 1 :
- scrollToAnc(-1);
- break;
- case 2 :
- scrollToAnc(getAncValue() - 1);
- break;
- case 3 :
- sfactor=-3;
- startScroll();
- break;
- case 4 :
- sfactor=3;
- startScroll();
- break;
- case 5 :
- scrollToAnc(getAncValue() + 1);
- break;
- case 6 :
- scrollToAnc(999999);
- break;
- }
-}
-
-function handleRelease(b) {
- stopScroll();
-}
-
-function keypress(ev) {
- var keynum;
- var keychar;
-
- if (window.event) { // IE
- keynum = ev.keyCode;
- } else if (ev.which) { // non-IE
- keynum = ev.which;
- }
-
- keychar = String.fromCharCode(keynum);
-
- if (keychar == "k") {
- handlePress(2);
- return (0);
- } else if (keychar == "j" || keychar == " ") {
- handlePress(5);
- return (0);
- }
- return (1);
-}
-
-function ValidateDiffNum(){
- val = parent.nav.document.diff.display.value;
- if (val == "EOF") {
- scrollToAnc(999999);
- return;
- }
-
- if (val == "BOF") {
- scrollToAnc(0);
- return;
- }
-
- i=parseInt(val);
- if (isNaN(i)) {
- parent.nav.document.diff.display.value = getAncValue();
- } else {
- scrollToAnc(i);
- }
- return false;
-}
-
-EOF
-}
-
-#
-# frame_navigation
-#
-# Output anchor navigation file for framed sdiffs.
-#
-function frame_navigation
-{
- print "$HTML<head>$STDHEAD"
-
- cat << \EOF
-<title>Anchor Navigation</title>
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta http-equiv="Content-Type" content="text/html" />
-
-<style type="text/css">
- div.button td { padding-left: 5px; padding-right: 5px;
- background-color: #eee; text-align: center;
- border: 1px #444 outset; cursor: pointer; }
- div.button a { font-weight: bold; color: black }
- div.button td:hover { background: #ffcc99; }
-</style>
-EOF
-
- print "<script type=\"text/javascript\" src=\"ancnav.js\"></script>"
-
- cat << \EOF
-</head>
-<body id="SUNWwebrev" bgcolor="#eeeeee" onload="document.diff.real.focus();"
- onkeypress="keypress(event);">
- <noscript lang="javascript">
- <center>
- <p><big>Framed Navigation controls require Javascript</big><br />
- Either this browser is incompatable or javascript is not enabled</p>
- </center>
- </noscript>
- <table width="100%" border="0" align="center">
- <tr>
- <td valign="middle" width="25%">Diff navigation:
- Use 'j' and 'k' for next and previous diffs; or use buttons
- at right</td>
- <td align="center" valign="top" width="50%">
- <div class="button">
- <table border="0" align="center">
- <tr>
- <td>
- <a onMouseDown="handlePress(1);return true;"
- onMouseUp="handleRelease(1);return true;"
- onMouseOut="handleRelease(1);return true;"
- onClick="return false;"
- title="Go to Beginning Of file">BOF</a></td>
- <td>
- <a onMouseDown="handlePress(3);return true;"
- onMouseUp="handleRelease(3);return true;"
- onMouseOut="handleRelease(3);return true;"
- title="Scroll Up: Press and Hold to accelerate"
- onClick="return false;">Scroll Up</a></td>
- <td>
- <a onMouseDown="handlePress(2);return true;"
- onMouseUp="handleRelease(2);return true;"
- onMouseOut="handleRelease(2);return true;"
- title="Go to previous Diff"
- onClick="return false;">Prev Diff</a>
- </td></tr>
-
- <tr>
- <td>
- <a onMouseDown="handlePress(6);return true;"
- onMouseUp="handleRelease(6);return true;"
- onMouseOut="handleRelease(6);return true;"
- onClick="return false;"
- title="Go to End Of File">EOF</a></td>
- <td>
- <a onMouseDown="handlePress(4);return true;"
- onMouseUp="handleRelease(4);return true;"
- onMouseOut="handleRelease(4);return true;"
- title="Scroll Down: Press and Hold to accelerate"
- onClick="return false;">Scroll Down</a></td>
- <td>
- <a onMouseDown="handlePress(5);return true;"
- onMouseUp="handleRelease(5);return true;"
- onMouseOut="handleRelease(5);return true;"
- title="Go to next Diff"
- onClick="return false;">Next Diff</a></td>
- </tr>
- </table>
- </div>
- </td>
- <th valign="middle" width="25%">
- <form action="" name="diff" onsubmit="return ValidateDiffNum();">
- <input name="display" value="BOF" size="8" type="text" />
- <input name="real" value="0" size="8" type="hidden" />
- </form>
- </th>
- </tr>
- </table>
- </body>
-</html>
-EOF
-}
-
-
-
-#
-# diff_to_html <filename> <filepath> { U | C } <comment>
-#
-# Processes the output of diff to produce an HTML file representing either
-# context or unified diffs.
-#
-diff_to_html()
-{
- TNAME=$1
- TPATH=$2
- DIFFTYPE=$3
- COMMENT=$4
-
- print "$HTML<head>$STDHEAD"
- print "<title>$WNAME ${DIFFTYPE}diff $TPATH</title>"
-
- if [[ $DIFFTYPE == "U" ]]; then
- print "$UDIFFCSS"
- fi
-
- cat <<-EOF
- </head>
- <body id="SUNWwebrev">
- <h2>$TPATH</h2>
- <a class="print" href="javascript:print()">Print this page</a>
- <pre>$COMMENT</pre>
- <pre>
-EOF
-
- html_quote | $AWK '
- /^--- new/ { next }
- /^\+\+\+ new/ { next }
- /^--- old/ { next }
- /^\*\*\* old/ { next }
- /^\*\*\*\*/ { next }
- /^-------/ { printf "<center><h1>%s</h1></center>\n", $0; next }
- /^\@\@.*\@\@$/ { printf "</pre><hr /><pre>\n";
- printf "<span class=\"newmarker\">%s</span>\n", $0;
- next}
-
- /^\*\*\*/ { printf "<hr /><span class=\"oldmarker\">%s</span>\n", $0;
- next}
- /^---/ { printf "<span class=\"newmarker\">%s</span>\n", $0;
- next}
- /^\+/ {printf "<span class=\"new\">%s</span>\n", $0; next}
- /^!/ {printf "<span class=\"changed\">%s</span>\n", $0; next}
- /^-/ {printf "<span class=\"removed\">%s</span>\n", $0; next}
- {printf "%s\n", $0; next}
- '
-
- print "</pre></body></html>\n"
-}
-
-
-#
-# source_to_html { new | old } <filename>
-#
-# Process a plain vanilla source file to transform it into an HTML file.
-#
-source_to_html()
-{
- WHICH=$1
- TNAME=$2
-
- print "$HTML<head>$STDHEAD"
- print "<title>$WHICH $TNAME</title>"
- print "<body id=\"SUNWwebrev\">"
- print "<pre>"
- html_quote | $AWK '{line += 1 ; printf "%4d %s\n", line, $0 }'
- print "</pre></body></html>"
-}
-
-comments_from_mercurial()
-{
- fmt=$1
- pfile=$PWS/$2
- cfile=$CWS/$3
-
- logdir=`dirname $cfile`
- logf=`basename $cfile`
- if [ -d $logdir ]; then
- ( cd $logdir;
- active=`hg status $logf 2>/dev/null`
- # If the output from 'hg status' is not empty, it means the file
- # hasn't been committed, so don't fetch comments.
- if [[ -z $active ]] ; then
- if [[ -n $ALL_CREV ]]; then
- rev_opt=
- for rev in $ALL_CREV; do
- rev_opt="$rev_opt --rev $rev"
- done
- comm=`hg log $rev_opt --follow --template 'rev {rev} : {desc}\n' $logf`
- elif [[ -n $FIRST_CREV ]]; then
- comm=`hg log --rev $FIRST_CREV:tip --follow --template 'rev {rev} : {desc}\n' $logf`
- else
- comm=`hg log -l1 --follow --template 'rev {rev} : {desc}\n' $logf`
- fi
- else
- comm=""
- fi
- if [[ $fmt == "text" ]]; then
- print "$comm"
- return
- fi
-
- print "$comm" | html_quote | bug2url
- )
- fi
-}
-
-
-#
-# getcomments {text|html} filepath parentpath
-#
-# Fetch the comments depending on what SCM mode we're in.
-#
-getcomments()
-{
- typeset fmt=$1
- typeset p=$2
- typeset pp=$3
-
- comments_from_mercurial $fmt $pp $p
-}
-
-#
-# printCI <total-changed> <inserted> <deleted> <modified> <unchanged>
-#
-# Print out Code Inspection figures similar to sccs-prt(1) format.
-#
-function printCI
-{
- integer tot=$1 ins=$2 del=$3 mod=$4 unc=$5
- typeset str
- if (( tot == 1 )); then
- str="line"
- else
- str="lines"
- fi
- printf '%d %s changed: %d ins; %d del; %d mod; %d unchg' \
- $tot $str $ins $del $mod $unc
-}
-
-
-#
-# difflines <oldfile> <newfile>
-#
-# Calculate and emit number of added, removed, modified and unchanged lines,
-# and total lines changed, the sum of added + removed + modified.
-#
-function difflines
-{
- integer tot mod del ins unc err
- typeset filename
-
- eval $( diff -e $1 $2 | $AWK '
- # Change range of lines: N,Nc
- /^[0-9]*,[0-9]*c$/ {
- n=split(substr($1,1,length($1)-1), counts, ",");
- if (n != 2) {
- error=2
- exit;
- }
- #
- # 3,5c means lines 3 , 4 and 5 are changed, a total of 3 lines.
- # following would be 5 - 3 = 2! Hence +1 for correction.
- #
- r=(counts[2]-counts[1])+1;
-
- #
- # Now count replacement lines: each represents a change instead
- # of a delete, so increment c and decrement r.
- #
- while (getline != /^\.$/) {
- c++;
- r--;
- }
- #
- # If there were more replacement lines than original lines,
- # then r will be negative; in this case there are no deletions,
- # but there are r changes that should be counted as adds, and
- # since r is negative, subtract it from a and add it to c.
- #
- if (r < 0) {
- a-=r;
- c+=r;
- }
-
- #
- # If there were more original lines than replacement lines, then
- # r will be positive; in this case, increment d by that much.
- #
- if (r > 0) {
- d+=r;
- }
- next;
- }
-
- # Change lines: Nc
- /^[0-9].*c$/ {
- # The first line is a replacement; any more are additions.
- if (getline != /^\.$/) {
- c++;
- while (getline != /^\.$/) a++;
- }
- next;
- }
-
- # Add lines: both Na and N,Na
- /^[0-9].*a$/ {
- while (getline != /^\.$/) a++;
- next;
- }
-
- # Delete range of lines: N,Nd
- /^[0-9]*,[0-9]*d$/ {
- n=split(substr($1,1,length($1)-1), counts, ",");
- if (n != 2) {
- error=2
- exit;
- }
- #
- # 3,5d means lines 3 , 4 and 5 are deleted, a total of 3 lines.
- # following would be 5 - 3 = 2! Hence +1 for correction.
- #
- r=(counts[2]-counts[1])+1;
- d+=r;
- next;
- }
-
- # Delete line: Nd. For example 10d says line 10 is deleted.
- /^[0-9]*d$/ {d++; next}
-
- # Should not get here!
- {
- error=1;
- exit;
- }
-
- # Finish off - print results
- END {
- printf("tot=%d;mod=%d;del=%d;ins=%d;err=%d\n",
- (c+d+a), c, d, a, error);
- }' )
-
- # End of $AWK, Check to see if any trouble occurred.
- if (( $? > 0 || err > 0 )); then
- print "Unexpected Error occurred reading" \
- "\`diff -e $1 $2\`: \$?=$?, err=" $err
- return
- fi
-
- # Accumulate totals
- (( TOTL += tot ))
- (( TMOD += mod ))
- (( TDEL += del ))
- (( TINS += ins ))
- # Calculate unchanged lines
- unc=`wc -l < $1`
- if (( unc > 0 )); then
- (( unc -= del + mod ))
- (( TUNC += unc ))
- fi
- # print summary
- print "<span class=\"lineschanged\">\c"
- printCI $tot $ins $del $mod $unc
- print "</span>"
-}
-
-function outgoing_from_mercurial_forest
-{
- hg foutgoing --template 'rev: {rev}\n' $OUTPWS | $FILTER | $AWK '
- BEGIN {ntree=0}
- /^comparing/ {next}
- /^no changes/ {next}
- /^searching/ {next}
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2);
- trees[ntree++] = tree;
- revs[tree]=-1;
- next}
- /^rev:/ {rev=$2+0;
- if (revs[tree] == -1 || rev < revs[tree])
- { revs[tree] = rev; };
- next;}
- END {for (tree in trees)
- { rev=revs[trees[tree]];
- if (rev > 0)
- {printf("%s %d\n",trees[tree],rev-1)}
- }}' | while read LINE
- do
- set - $LINE
- TREE=$1
- REV=$2
- A=`hg -R $CWS/$TREE log --rev $REV --template '{node}'`
- FSTAT_OPT="--rev $A"
- print "Revision: $A $REV" >> $FLIST
- treestatus $TREE
- done
-}
-
-function flist_from_mercurial_forest
-{
- rm -f $FLIST
- if [ -z "$Nflag" ]; then
- print " File list from hg foutgoing $PWS ..."
- outgoing_from_mercurial_forest
- HG_LIST_FROM_COMMIT=1
- fi
- if [ ! -f $FLIST ]; then
- # hg commit hasn't been run see what is lying around
- print "\n No outgoing, perhaps you haven't commited."
- print " File list from hg fstatus -mard ...\c"
- FSTAT_OPT=
- fstatus
- HG_LIST_FROM_COMMIT=
- fi
- print " Done."
-}
-
-#
-# Used when dealing with the result of 'hg foutgoing'
-# When now go down the tree and generate the change list
-#
-function treestatus
-{
- TREE=$1
- HGCMD="hg -R $CWS/$TREE status $FSTAT_OPT"
-
- $HGCMD -mdn 2>/dev/null | $FILTER | while read F
- do
- echo $TREE/$F
- done >> $FLIST
-
- # Then all the added files
- # But some of these could have been "moved" or renamed ones or copied ones
- # so let's make sure we get the proper info
- # hg status -aC will produce something like:
- # A subdir/File3
- # A subdir/File4
- # File4
- # A subdir/File5
- # The first and last are simple addition while the middle one
- # is a move/rename or a copy. We can't distinguish from a rename vs a copy
- # without also getting the status of removed files. The middle case above
- # is a rename if File4 is also shown a being removed. If File4 is not a
- # removed file, then the middle case is a copy from File4 to subdir/File4
- # FIXME - we're not distinguishing copy from rename
- $HGCMD -aC | $FILTER | while read LINE; do
- ldone=""
- while [ -z "$ldone" ]; do
- ldone="1"
- set - $LINE
- if [ $# -eq 2 -a "$1" == "A" ]; then
- AFILE=$2
- if read LINE2; then
- set - $LINE2
- if [ $# -eq 1 ]; then
- echo $TREE/$AFILE $TREE/$1 >>$FLIST
- elif [ $# -eq 2 ]; then
- echo $TREE/$AFILE >>$FLIST
- LINE=$LINE2
- ldone=""
- fi
- else
- echo $TREE/$AFILE >>$FLIST
- fi
- fi
- done
- done
- $HGCMD -rn | $FILTER | while read RFILE; do
- grep "$TREE/$RFILE" $FLIST >/dev/null
- if [ $? -eq 1 ]; then
- echo $TREE/$RFILE >>$FLIST
- fi
- done
-}
-
-function fstatus
-{
- #
- # forest extension is still being changed. For instance the output
- # of fstatus used to no prepend the tree path to filenames, but
- # this has changed recently. AWK code below does try to handle both
- # cases
- #
- hg fstatus -mdn $FSTAT_OPT 2>/dev/null | $FILTER | $AWK '
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2); next}
- $1 != "" {n=index($1,tree);
- if (n == 0)
- { printf("%s/%s\n",tree,$1)}
- else
- { printf("%s\n",$1)}}' >> $FLIST
-
- #
- # There is a bug in the output of fstatus -aC on recent versions: it
- # inserts a space between the name of the tree and the filename of the
- # old file. e.g.:
- #
- # $ hg fstatus -aC
- # [.]
- #
- # [MyWS]
- # A MyWS/subdir/File2
- # MyWS/ File2
- #
- # [MyWS2]
- #
-
- hg fstatus -aC $FSTAT_OPT 2>/dev/null | $FILTER | $AWK '
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2); next}
- /^A .*/ {n=index($2,tree);
- if (n == 0)
- { printf("A %s/%s\n",tree,$2)}
- else
- { printf("A %s\n",$2)};
- next}
- /^ / {n=index($1,tree);
- if (n == 0)
- { printf("%s/%s\n",tree,$1)}
- else
- { if (NF == 2)
- printf("%s/%s\n",tree,$2)
- else
- printf("%s\n",$1)
- };
- next}
- ' | while read LINE; do
- ldone=""
- while [ -z "$ldone" ]; do
- ldone="1"
- set - $LINE
- if [ $# -eq 2 -a "$1" == "A" ]; then
- AFILE=$2
- if read LINE2; then
- set - $LINE2
- if [ $# -eq 1 ]; then
- echo $AFILE $1 >>$FLIST
- elif [ $# -eq 2 ]; then
- echo $AFILE >>$FLIST
- LINE=$LINE2
- ldone=""
- fi
- else
- echo $AFILE >>$FLIST
- fi
- fi
- done
- done
- hg fstatus -rn $FSTAT_OPT 2>/dev/null | $FILTER | $AWK '
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2); next}
- $1 != "" {n=index($1,tree);
- if (n == 0)
- { printf("%s/%s\n",tree,$1)}
- else
- { printf("%s\n",$1)}}' | while read RFILE; do
- grep "$RFILE" $FLIST >/dev/null
- if [ $? -eq 1 ]; then
- echo $RFILE >>$FLIST
- fi
- done
-}
-
-#
-# flist_from_mercurial $PWS
-#
-# Only local file based repositories are supported at present
-# since even though we can determine the list from the parent finding
-# the changes is harder.
-#
-# We first look for any outgoing files, this is for when the user has
-# run hg commit. If we don't find any then we look with hg status.
-#
-# We need at least one of default-push or default paths set in .hg/hgrc
-# If neither are set we don't know who to compare with.
-
-function flist_from_mercurial
-{
-# if [ "${PWS##ssh://}" != "$PWS" -o \
-# "${PWS##http://}" != "$PWS" -o \
-# "${PWS##https://}" != "$PWS" ]; then
-# print "Remote Mercurial repositories not currently supported."
-# print "Set default and/or default-push to a local repository"
-# exit
-# fi
- if [[ -n $forestflag ]]; then
- HG_LIST_FROM_COMMIT=
- flist_from_mercurial_forest
- else
- STATUS_REV=
- if [[ -n $rflag ]]; then
- STATUS_REV="--rev $PARENT_REV"
- elif [[ -n $OUTREV ]]; then
- STATUS_REV="--rev $OUTREV"
- else
- # hg commit hasn't been run see what is lying around
- print "\n No outgoing, perhaps you haven't commited."
- fi
- # First let's list all the modified or deleted files
-
- hg status $STATUS_REV -mdn | $FILTER > $FLIST
-
- # Then all the added files
- # But some of these could have been "moved" or renamed ones
- # so let's make sure we get the proper info
- # hg status -aC will produce something like:
- # A subdir/File3
- # A subdir/File4
- # File4
- # A subdir/File5
- # The first and last are simple addition while the middle one
- # is a move/rename or a copy. We can't distinguish from a rename vs a copy
- # without also getting the status of removed files. The middle case above
- # is a rename if File4 is also shown a being removed. If File4 is not a
- # removed file, then the middle case is a copy from File4 to subdir/File4
- # FIXME - we're not distinguishing copy from rename
-
- hg status $STATUS_REV -aC | $FILTER >$FLIST.temp
- while read LINE; do
- ldone=""
- while [ -z "$ldone" ]; do
- ldone="1"
- set - $LINE
- if [ $# -eq 2 -a "$1" == "A" ]; then
- AFILE=$2
- if read LINE2; then
- set - $LINE2
- if [ $# -eq 1 ]; then
- echo $AFILE $1 >>$FLIST
- elif [ $# -eq 2 ]; then
- echo $AFILE >>$FLIST
- LINE=$LINE2
- ldone=""
- fi
- else
- echo $AFILE >>$FLIST
- fi
- fi
- done
- done < $FLIST.temp
- hg status $STATUS_REV -rn | $FILTER > $FLIST.temp
- while read RFILE; do
- grep "$RFILE" $FLIST >/dev/null
- if [ $? -eq 1 ]; then
- echo $RFILE >>$FLIST
- fi
- done < $FLIST.temp
- rm -f $FLIST.temp
- fi
-}
-
-function env_from_flist
-{
- [[ -r $FLIST ]] || return
-
- #
- # Use "eval" to set env variables that are listed in the file
- # list. Then copy those into our local versions of those
- # variables if they have not been set already.
- #
- eval `sed -e "s/#.*$//" $FLIST | grep = `
-
- [[ -z $codemgr_ws && -n $CODEMGR_WS ]] && codemgr_ws=$CODEMGR_WS
-
- #
- # Check to see if CODEMGR_PARENT is set in the flist file.
- #
- [[ -z $codemgr_parent && -n $CODEMGR_PARENT ]] && \
- codemgr_parent=$CODEMGR_PARENT
-}
-
-#
-# detect_scm
-#
-# We dynamically test the SCM type; this allows future extensions to
-# new SCM types
-#
-function detect_scm
-{
- if hg root >/dev/null ; then
- print "mercurial"
- else
- print "unknown"
- fi
-}
-
-function look_for_prog
-{
- typeset path
- typeset ppath
- typeset progname=$1
-
- DEVTOOLS=
- OS=`uname`
- if [[ "$OS" == "SunOS" ]]; then
- DEVTOOLS="/java/devtools/`uname -p`/bin"
- elif [[ "$OS" == "Linux" ]]; then
- DEVTOOLS="/java/devtools/linux/bin"
- fi
-
- ppath=$PATH
- ppath=$ppath:/usr/sfw/bin:/usr/bin:/usr/sbin
- ppath=$ppath:/opt/teamware/bin:/opt/onbld/bin
- ppath=$ppath:/opt/onbld/bin/`uname -p`
- ppath=$ppath:/java/devtools/share/bin:$DEVTOOLS
-
- PATH=$ppath prog=`whence $progname`
- if [[ -n $prog ]]; then
- print $prog
- fi
-}
-
-#
-# Find the parent for $1
-#
-function find_outrev
-{
- crev=$1
- prev=`hg log -r $crev --template '{parents}\n'`
- if [[ -z "$prev" ]]
- then
- # No specific parent means previous changeset is parent
- prev=`expr $crev - 1`
- else
- # Format is either of the following two:
- # 546:7df6fcf1183b
- # 548:16f1915bb5cd 547:ffaa4e775815
- prev=`echo $prev | sed -e 's/\([0-9]*\):.*/\1/'`
- fi
- print $prev
-}
-
-function extract_ssh_infos
-{
- CMD=$1
- if expr "$CMD" : 'ssh://[^/]*@' >/dev/null; then
- ssh_user=`echo $CMD | sed -e 's/ssh:\/\/\(.*\)@.*/\1/'`
- ssh_host=`echo $CMD | sed -e 's/ssh:\/\/.*@\([^/]*\)\/.*/\1/'`
- ssh_dir=`echo $CMD | sed -e 's/ssh:\/\/.*@[^/]*\/\(.*\)/\1/'`
- else
- ssh_user=
- ssh_host=`echo $CMD | sed -e 's/ssh:\/\/\([^/]*\)\/.*/\1/'`
- ssh_dir=`echo $CMD | sed -e 's/ssh:\/\/[^/]*\/\(.*\)/\1/'`
- fi
-
-}
-
-function build_old_new_mercurial
-{
- olddir=$1
- newdir=$2
- DIR=$3
- F=$4
- #
- # new version of the file.
- #
- rm -rf $newdir/$DIR/$F
- if [ -f $F ]; then
- cp $F $newdir/$DIR/$F
- fi
-
- #
- # Old version of the file.
- #
- rm -rf $olddir/$DIR/$F
-
- if [ -n "$PWS" ]; then
- if expr "$PWS" : 'ssh://' >/dev/null
- then
- extract_ssh_infos $PWS
- if [ -n "$ssh_user" ]; then
- parent="ssh -l $ssh_user $ssh_host hg -R $ssh_dir --cwd $ssh_dir"
- else
- parent="ssh $ssh_host hg -R $ssh_dir --cwd $ssh_dir"
- fi
- else
- parent="hg -R $PWS --cwd $PWS"
- fi
- else
- parent=""
- fi
-
- if [ -z "$rename" ]; then
- if [ -n "$rflag" ]; then
- parentrev=$PARENT_REV
- elif [ "$HG_LIST_FROM_COMMIT" -eq 1 ]; then
- parentrev=$OUTREV
- else
- if [[ -n $HG_BRANCH ]]; then
- parentrev=$HG_BRANCH
- else
- parentrev="tip"
- fi
- fi
-
- if [ -n "$parentrev" ]; then
- if [ -z "$parent" ]; then
- hg cat --rev $parentrev --output $olddir/$DIR/$F $F 2>/dev/null
- else
- # when specifying a workspace we have to provide
- # the full path
- $parent cat --rev $parentrev --output $olddir/$DIR/$F $DIR/$F 2>/dev/null
- fi
- fi
- else
- # It's a rename (or a move), or a copy, so let's make sure we move
- # to the right directory first, then restore it once done
- current_dir=`pwd`
- hg_root=`hg root`
- cd $CWS
- if [ -n "$rflag" ]; then
- parentrev=$PARENT_REV
- elif [ "$HG_LIST_FROM_COMMIT" -eq 1 ]; then
- parentrev=$OUTREV
- fi
- if [ -z "$parentrev" ]; then
- parentrev=`hg log -l1 $PDIR/$PF | $AWK -F: '/changeset/ {print $2}'`
- fi
- if [ -n "$parentrev" ]; then
- mkdir -p $olddir/$PDIR
- if [ -z "$parent" ]; then
- hg cat -R $hg_root --rev $parentrev --output $olddir/$PDIR/$PF $PDIR/$PF 2>/dev/null
- else
- $parent cat --rev $parentrev --output $olddir/$PDIR/$PF $PDIR/$PF 2>/dev/null
- fi
- fi
- cd $current_dir
- fi
-}
-
-function build_old_new
-{
- if [[ $SCM_MODE == "mercurial" ]]; then
- build_old_new_mercurial $@
- fi
-}
-
-
-#
-# Usage message.
-#
-function usage
-{
- print "Usage:\twebrev [options]
- webrev [options] ( <file> | - )
-
-Options:
- -v: Print the version of this tool.
- -b: Do not ignore changes in the amount of white space.
- -c <CR#>: Include link to CR (aka bugid) in the main page.
- -i <filename>: Include <filename> in the index.html file.
- -o <outdir>: Output webrev to specified directory.
- -p <compare-against>: Use specified parent wkspc or basis for comparison
- -u <username>: Use that username instead of 'guessing' one.
- -m: Forces the use of Mercurial
-
-Mercurial only options:
- -r rev: Compare against a specified revision
- -N: Skip 'hg outgoing', use only 'hg status'
- -f: Use the forest extension
-
-Arguments:
- <file>: Optional file containing list of files to include in webrev
- -: read list of files to include in webrev from standard input
-
-Environment:
- WDIR: Control the output directory.
- WEBREV_BUGURL: Control the URL prefix for bugids.
-
-"
-
- exit 2
-}
-
-#
-#
-# Main program starts here
-#
-#
-LANG="C"
-LC_ALL="C"
-export LANG LC_ALL
-trap "rm -f /tmp/$$.* ; exit" 0 1 2 3 15
-
-set +o noclobber
-
-[[ -z $WDIFF ]] && WDIFF=`look_for_prog wdiff`
-[[ -z $CODEREVIEW ]] && CODEREVIEW=`look_for_prog codereview`
-[[ -z $PS2PDF ]] && PS2PDF=`look_for_prog ps2pdf`
-[[ -z $PERL ]] && PERL=`look_for_prog perl`
-[[ -z $SCCS ]] && SCCS=`look_for_prog sccs`
-[[ -z $AWK ]] && AWK=`look_for_prog nawk`
-[[ -z $AWK ]] && AWK=`look_for_prog gawk`
-[[ -z $AWK ]] && AWK=`look_for_prog awk`
-[[ -z $JAR ]] && JAR=`look_for_prog jar`
-[[ -z $ZIP ]] && ZIP=`look_for_prog zip`
-[[ -z $GETENT ]] && GETENT=`look_for_prog getent`
-[[ -z $WGET ]] && WGET=`look_for_prog wget`
-
-if uname | grep CYGWIN >/dev/null
-then
- ISWIN=1
- # Under windows mercurial outputs '\' instead of '/'
- FILTER="tr '\\\\' '/'"
-else
- FILTER="cat"
-fi
-
-if [[ ! -x $PERL ]]; then
- print -u2 "Error: No perl interpreter found. Exiting."
- exit 1
-fi
-
-#
-# These aren't fatal, but we want to note them to the user.
-#
-# [[ ! -x $CODEREVIEW ]] && print -u2 "WARNING: codereview(1) not found."
-# [[ ! -x $PS2PDF ]] && print -u2 "WARNING: ps2pdf(1) not found."
-# [[ ! -x $WDIFF ]] && print -u2 "WARNING: wdiff not found."
-
-# Declare global total counters.
-integer TOTL TINS TDEL TMOD TUNC
-
-flist_mode=
-flist_file=
-bflag=
-iflag=
-oflag=
-pflag=
-uflag=
-Oflag=
-rflag=
-Nflag=
-forestflag=
-while getopts "c:i:o:p:r:u:mONvfb" opt
-do
- case $opt in
- b) bflag=1;;
-
- i) iflag=1
- INCLUDE_FILE=$OPTARG;;
-
- o) oflag=1
- WDIR=$OPTARG;;
-
- p) pflag=1
- codemgr_parent=$OPTARG;;
-
- u) uflag=1
- username=$OPTARG;;
-
- c) if [[ -z $CRID ]]; then
- CRID=$OPTARG
- else
- CRID="$CRID $OPTARG"
- fi;;
-
- m) SCM_MODE="mercurial";;
-
- O) Oflag=1;; # ignored (bugs are now all visible at bugs.openjdk.java.net)
-
- N) Nflag=1;;
-
- f) forestflag=1;;
-
- r) rflag=1
- PARENT_REV=$OPTARG;;
-
- v) print "$0 version: $WEBREV_UPDATED";;
-
-
- ?) usage;;
- esac
-done
-
-FLIST=/tmp/$$.flist
-HG_LIST_FROM_COMMIT=
-
-if [[ -n $forestflag && -n $rflag ]]; then
- print "The -r <rev> flag is incompatible with the use of forests"
- exit 2
-fi
-
-#
-# If this manually set as the parent, and it appears to be an earlier webrev,
-# then note that fact and set the parent to the raw_files/new subdirectory.
-#
-if [[ -n $pflag && -d $codemgr_parent/raw_files/new ]]; then
- parent_webrev="$codemgr_parent"
- codemgr_parent="$codemgr_parent/raw_files/new"
-fi
-
-shift $(($OPTIND - 1))
-
-if [[ $1 == "-" ]]; then
- cat > $FLIST
- flist_mode="stdin"
- flist_done=1
- shift
-elif [[ -n $1 ]]; then
- if [[ ! -r $1 ]]; then
- print -u2 "$1: no such file or not readable"
- usage
- fi
- cat $1 > $FLIST
- flist_mode="file"
- flist_file=$1
- flist_done=1
- shift
-else
- flist_mode="auto"
-fi
-
-#
-# Before we go on to further consider -l and -w, work out which SCM we think
-# is in use.
-#
-if [[ -z $SCM_MODE ]]; then
- SCM_MODE=`detect_scm $FLIST`
-fi
-if [[ $SCM_MODE == "unknown" ]]; then
- print -u2 "Unable to determine SCM type currently in use."
- print -u2 "For mercurial: webrev runs 'hg root'."
- exit 1
-fi
-
-print -u2 " SCM detected: $SCM_MODE"
-
-
-if [[ $SCM_MODE == "mercurial" ]]; then
- #
- # determine Workspace and parent workspace paths
- #
- CWS=`hg root | $FILTER`
- if [[ -n $pflag && -z "$PWS" ]]; then
- OUTPWS=$codemgr_parent
- # Let's try to expand it if it's an alias defined in [paths]
- tmp=`hg path $OUTPWS 2>/dev/null | $FILTER`
- if [[ -n $tmp ]]; then
- OUTPWS="$tmp"
- fi
- if [[ -n $rflag ]]; then
- if expr "$codemgr_parent" : 'ssh://.*' >/dev/null; then
- PWS=$codemgr_parent
- else
- PWS=`hg -R "$codemgr_parent" root 2>/dev/null | $FILTER`
- fi
- fi
- fi
- #
- # OUTPWS is the parent repository to use when using 'hg outgoing'
- #
- if [[ -z $Nflag ]]; then
- if [[ -n $forestflag ]]; then
- #
- # for forest we have to rely on properly set default and
- # default-push because they can be different from the top one.
- # unless of course it was explicitly specified with -p
- if [[ -z $pflag ]]; then
- OUTPWS=
- fi
- else
- #
- # Unfortunately mercurial is bugged and doesn't handle
- # aliases correctly in 'hg path default'
- # So let's do it ourselves. Sigh...
- if [[ -z "$OUTPWS" ]]; then
- OUTPWS=`grep default-push $CWS/.hg/hgrc | $AWK '{print $3}' | $FILTER`
- fi
- # Still empty, means no default-push
- if [[ -z "$OUTPWS" ]]; then
- OUTPWS=`grep 'default =' $CWS/.hg/hgrc | $AWK '{print $3}' | $FILTER`
- fi
- # Let's try to expand it if it's an alias defined in [paths]
- tmp=`hg path $OUTPWS 2>/dev/null | $FILTER`
- if [[ -n $tmp ]]; then
- OUTPWS="$tmp"
- fi
- fi
- fi
- #
- # OUTPWS may contain username:password, let's make sure we remove the
- # sensitive information before we print out anything in the HTML
- #
- OUTPWS2=$OUTPWS
- if [[ -n $OUTPWS ]]; then
- if [[ `expr "$OUTPWS" : '.*://[^/]*@.*'` -gt 0 ]]; then
- # Remove everything between '://' and '@'
- OUTPWS2=`echo $OUTPWS | sed -e 's/\(.*:\/\/\).*@\(.*\)/\1\2/'`
- fi
- fi
-
- if [[ -z $HG_BRANCH ]]; then
- HG_BRANCH=`hg branch`
- if [ "$HG_BRANCH" == "default" ]; then
- #
- # 'default' means no particular branch, so let's cancel that
- #
- HG_BRANCH=
- fi
- fi
-
- if [[ -z $forestflag ]]; then
- if [[ -z $Nflag ]]; then
- #
- # If no "-N", always do "hg outgoing" against parent
- # repository to determine list of outgoing revisions.
- #
- ALL_CREV=`hg outgoing -q --template '{rev}\n' $OUTPWS | sort -n`
- if [[ -n $ALL_CREV ]]; then
- FIRST_CREV=`echo "$ALL_CREV" | head -1`
- #
- # If no "-r", choose revision to compare against by
- # finding the latest revision not in the outgoing list.
- #
- if [[ -z $rflag ]]; then
- OUTREV=`find_outrev "$FIRST_CREV"`
- if [[ -n $OUTREV ]]; then
- HG_LIST_FROM_COMMIT=1
- fi
- fi
- fi
- elif [[ -n $rflag ]]; then
- #
- # If skipping "hg outgoing" but still comparing against a
- # specific revision (not the tip), set revision for comment
- # accumulation.
- #
- FIRST_CREV=`hg log --rev $PARENT_REV --template '{rev}'`
- FIRST_CREV=`expr $FIRST_CREV + 1`
- fi
- fi
- #Let's check if a merge is needed, if so, issue a warning
- PREV=`hg parent | grep '^tag:.*tip$'`
- if [[ -z $PREV ]]; then
- print "WARNING: parent rev is not tip. Maybe an update or merge is needed"
- fi
-fi
-
-if [[ $flist_mode == "stdin" ]]; then
- print -u2 " File list from: standard input"
-elif [[ $flist_mode == "file" ]]; then
- print -u2 " File list from: $flist_file"
-fi
-
-if [[ $# -gt 0 ]]; then
- print -u2 "WARNING: unused arguments: $*"
-fi
-
-if [[ $SCM_MODE == "mercurial" ]]; then
- if [[ -z $flist_done ]]; then
- flist_from_mercurial $PWS
- fi
-fi
-
-#
-# If the user didn't specify a -i option, check to see if there is a
-# webrev-info file in the workspace directory.
-#
-if [[ -z $iflag && -r "$CWS/webrev-info" ]]; then
- iflag=1
- INCLUDE_FILE="$CWS/webrev-info"
-fi
-
-if [[ -n $iflag ]]; then
- if [[ ! -r $INCLUDE_FILE ]]; then
- print -u2 "include file '$INCLUDE_FILE' does not exist or is" \
- "not readable."
- exit 1
- else
- #
- # $INCLUDE_FILE may be a relative path, and the script alters
- # PWD, so we just stash a copy in /tmp.
- #
- cp $INCLUDE_FILE /tmp/$$.include
- fi
-fi
-
-#
-# Output directory.
-#
-if [[ -z $WDIR ]]; then
- WDIR=$CWS/webrev
-else
- # If the output directory doesn't end with '/webrev' or '/webrev/'
- # then add '/webrev'. This is for backward compatibility
- if ! expr $WDIR : '.*/webrev/\?$' >/dev/null
- then
- WDIR=$WDIR/webrev
- fi
-fi
-# WDIR=${WDIR:-$CWS/webrev}
-
-#
-# Name of the webrev, derived from the workspace name; in the
-# future this could potentially be an option.
-#
-# Let's keep what's after the last '/'
-WNAME=${CWS##*/}
-
-#
-# If WDIR doesn't start with '/' or 'x:' prepend the current dir
-#
-if [ ${WDIR%%/*} ]; then
- if [[ -n $ISWIN ]]; then
- if [ ${WDIR%%[A-Za-z]:*} ]; then
- WDIR=$PWD/$WDIR
- fi
- else
- WDIR=$PWD/$WDIR
- fi
-fi
-
-if [[ ! -d $WDIR ]]; then
- mkdir -p $WDIR
- [[ $? != 0 ]] && exit 1
-fi
-
-#
-# Summarize what we're going to do.
-#
-print " Workspace: $CWS"
-if [[ -n $parent_webrev ]]; then
- print "Compare against: webrev at $parent_webrev"
-elif [[ -n $OUTPWS2 ]]; then
- print "Compare against: $OUTPWS2"
-fi
-if [[ -n $HG_BRANCH ]]; then
- print " Branch: $HG_BRANCH"
-fi
-if [[ -n $rflag ]]; then
- print "Compare against version: $PARENT_REV"
-fi
-[[ -n $INCLUDE_FILE ]] && print " Including: $INCLUDE_FILE"
-print " Output to: $WDIR"
-
-#
-# Save the file list in the webrev dir
-#
-[[ ! $FLIST -ef $WDIR/file.list ]] && cp $FLIST $WDIR/file.list
-
-#
-# Bug IDs will be replaced by a URL. Order of precedence
-# is: default location, $WEBREV_BUGURL
-#
-BUGURL='https://bugs.openjdk.java.net/browse/'
-[[ -n $WEBREV_BUGURL ]] && BUGURL="$WEBREV_BUGURL"
-IDPREFIX='JDK-'
-
-
-rm -f $WDIR/$WNAME.patch
-rm -f $WDIR/$WNAME.changeset
-rm -f $WDIR/$WNAME.ps
-rm -f $WDIR/$WNAME.pdf
-
-touch $WDIR/$WNAME.patch
-
-print " Output Files:"
-
-#
-# Clean up the file list: Remove comments, blank lines and env variables.
-#
-sed -e "s/#.*$//" -e "/=/d" -e "/^[ ]*$/d" $FLIST > /tmp/$$.flist.clean
-FLIST=/tmp/$$.flist.clean
-
-#
-# Clean up residual raw files
-#
-if [ -d $WDIR/raw_files ]; then
- rm -rf $WDIR/raw_files 2>/dev/null
-fi
-
-#
-# Should we ignore changes in white spaces when generating diffs?
-#
-if [[ -n $bflag ]]; then
- DIFFOPTS="-t"
-else
- DIFFOPTS="-bt"
-fi
-#
-# First pass through the files: generate the per-file webrev HTML-files.
-#
-while read LINE
-do
- set - $LINE
- P=$1
-
- if [[ $1 == "Revision:" ]]; then
- OUTREV=$2
- continue
- fi
- #
- # Normally, each line in the file list is just a pathname of a
- # file that has been modified or created in the child. A file
- # that is renamed in the child workspace has two names on the
- # line: new name followed by the old name.
- #
- oldname=""
- oldpath=""
- rename=
- if [[ $# -eq 2 ]]; then
- PP=$2 # old filename
- oldname=" (was $PP)"
- oldpath="$PP"
- rename=1
- PDIR=${PP%/*}
- if [[ $PDIR == $PP ]]; then
- PDIR="." # File at root of workspace
- fi
-
- PF=${PP##*/}
-
- DIR=${P%/*}
- if [[ $DIR == $P ]]; then
- DIR="." # File at root of workspace
- fi
-
- F=${P##*/}
- else
- DIR=${P%/*}
- if [[ "$DIR" == "$P" ]]; then
- DIR="." # File at root of workspace
- fi
-
- F=${P##*/}
-
- PP=$P
- PDIR=$DIR
- PF=$F
- fi
-
- # Make the webrev directory if necessary as it may have been
- # removed because it was empty
- if [ ! -d $CWS/$DIR ]; then
- mkdir -p $CWS/$DIR
- fi
-
- COMM=`getcomments html $P $PP`
-
- print "\t$P$oldname\n\t\t\c"
-
- # Make the webrev mirror directory if necessary
- mkdir -p $WDIR/$DIR
-
- # cd to the directory so the names are short
- cd $CWS/$DIR
-
- #
- # We stash old and new files into parallel directories in /tmp
- # and do our diffs there. This makes it possible to generate
- # clean looking diffs which don't have absolute paths present.
- #
- olddir=$WDIR/raw_files/old
- newdir=$WDIR/raw_files/new
- mkdir -p $olddir
- mkdir -p $newdir
- mkdir -p $olddir/$PDIR
- mkdir -p $newdir/$DIR
-
- build_old_new $olddir $newdir $DIR $F
-
- if [[ ! -f $F && ! -f $olddir/$DIR/$F ]]; then
- print "*** Error: file not in parent or child"
- continue
- fi
-
- cd $WDIR/raw_files
- ofile=old/$PDIR/$PF
- nfile=new/$DIR/$F
-
- mv_but_nodiff=
- cmp $ofile $nfile > /dev/null 2>&1
- if [[ $? == 0 && $rename == 1 ]]; then
- mv_but_nodiff=1
- fi
-
- #
- # Cleaning up
- #
- rm -f $WDIR/$DIR/$F.cdiff.html
- rm -f $WDIR/$DIR/$F.udiff.html
- rm -f $WDIR/$DIR/$F.wdiff.html
- rm -f $WDIR/$DIR/$F.sdiff.html
- rm -f $WDIR/$DIR/$F-.html
- rm -f $WDIR/$DIR/$F.html
-
- its_a_jar=
- if expr $F : '.*\.jar' \| $F : '.*\.zip' >/dev/null; then
- its_a_jar=1
- # It's a JAR or ZIP file, let's do it differently
- if [[ -z $JAR ]]; then
- print "No access to jar, so can't produce diffs for jar or zip files"
- else
- if [ -f $ofile ]; then
- $JAR -tvf $ofile >"$ofile".lst
- fi
- if [ -f $nfile ]; then
- $JAR -tvf $nfile >"$nfile".lst
- fi
-
- if [[ -f $ofile && -f $nfile && -z $mv_but_nodiff ]]; then
-
- ${CDIFFCMD:-diff -bt -C 5} $ofile.lst $nfile.lst > $WDIR/$DIR/$F.cdiff
- diff_to_html $F $DIR/$F "C" "$COMM" < $WDIR/$DIR/$F.cdiff \
- > $WDIR/$DIR/$F.cdiff.html
- print " cdiffs\c"
-
- ${UDIFFCMD:-diff -bt -U 5} $ofile.lst $nfile.lst > $WDIR/$DIR/$F.udiff
- diff_to_html $F $DIR/$F "U" "$COMM" < $WDIR/$DIR/$F.udiff \
- > $WDIR/$DIR/$F.udiff.html
-
- print " udiffs\c"
-
- if [[ -x $WDIFF ]]; then
- $WDIFF -c "$COMM" \
- -t "$WNAME Wdiff $DIR/$F" $ofile.lst $nfile.lst > \
- $WDIR/$DIR/$F.wdiff.html 2>/dev/null
- if [[ $? -eq 0 ]]; then
- print " wdiffs\c"
- else
- print " wdiffs[fail]\c"
- fi
- fi
-
- sdiff_to_html $ofile $nfile $F $DIR "$COMM" \
- > $WDIR/$DIR/$F.sdiff.html
- print " sdiffs\c"
-
- print " frames\c"
-
- rm -f $WDIR/$DIR/$F.cdiff $WDIR/$DIR/$F.udiff
-
- difflines $ofile.lst $nfile.lst > $WDIR/$DIR/$F.count
-
- elif [[ -f $ofile && -f $nfile && -n $mv_but_nodiff ]]; then
- # renamed file: may also have differences
- difflines $ofile.lst $nfile.lst > $WDIR/$DIR/$F.count
- elif [[ -f $nfile ]]; then
- # new file: count added lines
- difflines /dev/null $nfile.lst > $WDIR/$DIR/$F.count
- elif [[ -f $ofile ]]; then
- # old file: count deleted lines
- difflines $ofile.lst /dev/null > $WDIR/$DIR/$F.count
- fi
- fi
- else
-
- #
- # If we have old and new versions of the file then run the
- # appropriate diffs. This is complicated by a couple of factors:
- #
- # - renames must be handled specially: we emit a 'remove'
- # diff and an 'add' diff
- # - new files and deleted files must be handled specially
- # - Solaris patch(1m) can't cope with file creation
- # (and hence renames) as of this writing.
- # - To make matters worse, gnu patch doesn't interpret the
- # output of Solaris diff properly when it comes to
- # adds and deletes. We need to do some "cleansing"
- # transformations:
- # [to add a file] @@ -1,0 +X,Y @@ --> @@ -0,0 +X,Y @@
- # [to del a file] @@ -X,Y +1,0 @@ --> @@ -X,Y +0,0 @@
- #
- cleanse_rmfile="sed 's/^\(@@ [0-9+,-]*\) [0-9+,-]* @@$/\1 +0,0 @@/'"
- cleanse_newfile="sed 's/^@@ [0-9+,-]* \([0-9+,-]* @@\)$/@@ -0,0 \1/'"
-
- if [[ ! "$HG_LIST_FROM_COMMIT" -eq 1 || ! $flist_mode == "auto" ]];
- then
- # Only need to generate a patch file here if there are no commits in outgoing
- # or if we've specified a file list
- rm -f $WDIR/$DIR/$F.patch
- if [[ -z $rename ]]; then
- if [ ! -f $ofile ]; then
- diff -u /dev/null $nfile | sh -c "$cleanse_newfile" \
- > $WDIR/$DIR/$F.patch
- elif [ ! -f $nfile ]; then
- diff -u $ofile /dev/null | sh -c "$cleanse_rmfile" \
- > $WDIR/$DIR/$F.patch
- else
- diff -u $ofile $nfile > $WDIR/$DIR/$F.patch
- fi
- else
- diff -u $ofile /dev/null | sh -c "$cleanse_rmfile" \
- > $WDIR/$DIR/$F.patch
-
- diff -u /dev/null $nfile | sh -c "$cleanse_newfile" \
- >> $WDIR/$DIR/$F.patch
-
- fi
-
-
- #
- # Tack the patch we just made onto the accumulated patch for the
- # whole wad.
- #
- cat $WDIR/$DIR/$F.patch >> $WDIR/$WNAME.patch
- fi
-
- print " patch\c"
-
- if [[ -f $ofile && -f $nfile && -z $mv_but_nodiff ]]; then
-
- ${CDIFFCMD:-diff -bt -C 5} $ofile $nfile > $WDIR/$DIR/$F.cdiff
- diff_to_html $F $DIR/$F "C" "$COMM" < $WDIR/$DIR/$F.cdiff \
- > $WDIR/$DIR/$F.cdiff.html
- print " cdiffs\c"
-
- ${UDIFFCMD:-diff -bt -U 5} $ofile $nfile > $WDIR/$DIR/$F.udiff
- diff_to_html $F $DIR/$F "U" "$COMM" < $WDIR/$DIR/$F.udiff \
- > $WDIR/$DIR/$F.udiff.html
-
- print " udiffs\c"
-
- if [[ -x $WDIFF ]]; then
- $WDIFF -c "$COMM" \
- -t "$WNAME Wdiff $DIR/$F" $ofile $nfile > \
- $WDIR/$DIR/$F.wdiff.html 2>/dev/null
- if [[ $? -eq 0 ]]; then
- print " wdiffs\c"
- else
- print " wdiffs[fail]\c"
- fi
- fi
-
- sdiff_to_html $ofile $nfile $F $DIR "$COMM" \
- > $WDIR/$DIR/$F.sdiff.html
- print " sdiffs\c"
-
- print " frames\c"
-
- rm -f $WDIR/$DIR/$F.cdiff $WDIR/$DIR/$F.udiff
-
- difflines $ofile $nfile > $WDIR/$DIR/$F.count
-
- elif [[ -f $ofile && -f $nfile && -n $mv_but_nodiff ]]; then
- # renamed file: may also have differences
- difflines $ofile $nfile > $WDIR/$DIR/$F.count
- elif [[ -f $nfile ]]; then
- # new file: count added lines
- difflines /dev/null $nfile > $WDIR/$DIR/$F.count
- elif [[ -f $ofile ]]; then
- # old file: count deleted lines
- difflines $ofile /dev/null > $WDIR/$DIR/$F.count
- fi
- fi
- #
- # Now we generate the postscript for this file. We generate diffs
- # only in the event that there is delta, or the file is new (it seems
- # tree-killing to print out the contents of deleted files).
- #
- if [[ -f $nfile ]]; then
- ocr=$ofile
- [[ ! -f $ofile ]] && ocr=/dev/null
-
- if [[ -z $mv_but_nodiff ]]; then
- textcomm=`getcomments text $P $PP`
- if [[ -x $CODEREVIEW ]]; then
- $CODEREVIEW -y "$textcomm" \
- -e $ocr $nfile \
- > /tmp/$$.psfile 2>/dev/null &&
- cat /tmp/$$.psfile >> $WDIR/$WNAME.ps
- if [[ $? -eq 0 ]]; then
- print " ps\c"
- else
- print " ps[fail]\c"
- fi
- fi
- fi
- fi
-
- if [[ -f $ofile && -z $mv_but_nodiff ]]; then
- if [[ -n $its_a_jar ]]; then
- source_to_html Old $P < $ofile.lst > $WDIR/$DIR/$F-.html
- else
- source_to_html Old $P < $ofile > $WDIR/$DIR/$F-.html
- fi
- print " old\c"
- fi
-
- if [[ -f $nfile ]]; then
- if [[ -n $its_a_jar ]]; then
- source_to_html New $P < $nfile.lst > $WDIR/$DIR/$F.html
- else
- source_to_html New $P < $nfile > $WDIR/$DIR/$F.html
- fi
- print " new\c"
- fi
-
- print
-done < $FLIST
-
-# Create the new style mercurial patch here using hg export -r [all-revs] -g -o $CHANGESETPATH
-if [[ $SCM_MODE == "mercurial" ]]; then
- if [[ "$HG_LIST_FROM_COMMIT" -eq 1 && $flist_mode == "auto" ]]; then
- EXPORTCHANGESET="$WNAME.changeset"
- CHANGESETPATH=${WDIR}/${EXPORTCHANGESET}
- rm -f $CHANGESETPATH
- touch $CHANGESETPATH
- if [[ -n $ALL_CREV ]]; then
- rev_opt=
- for rev in $ALL_CREV; do
- rev_opt="$rev_opt --rev $rev"
- done
- elif [[ -n $FIRST_CREV ]]; then
- rev_opt="--rev $FIRST_CREV"
- fi
-
- if [[ -n $rev_opt ]]; then
- (cd $CWS;hg export -g $rev_opt -o $CHANGESETPATH)
- echo "Created changeset: $CHANGESETPATH" 1>&2
- # Use it in place of the jdk.patch created above
- rm -f $WDIR/$WNAME.patch
- fi
- set +x
- fi
-fi
-
-frame_nav_js > $WDIR/ancnav.js
-frame_navigation > $WDIR/ancnav.html
-
-if [[ -f $WDIR/$WNAME.ps && -x $CODEREVIEW && -x $PS2PDF ]]; then
- print " Generating PDF: \c"
- fix_postscript $WDIR/$WNAME.ps | $PS2PDF - > $WDIR/$WNAME.pdf
- print "Done."
-fi
-
-# Now build the index.html file that contains
-# links to the source files and their diffs.
-
-cd $CWS
-
-# Save total changed lines for Code Inspection.
-print "$TOTL" > $WDIR/TotalChangedLines
-
-print " index.html: \c"
-INDEXFILE=$WDIR/index.html
-exec 3<&1 # duplicate stdout to FD3.
-exec 1<&- # Close stdout.
-exec > $INDEXFILE # Open stdout to index file.
-
-print "$HTML<head>"
-print "<meta name=\"scm\" content=\"$SCM_MODE\" />"
-print "$STDHEAD"
-print "<title>$WNAME</title>"
-print "</head>"
-print "<body id=\"SUNWwebrev\">"
-print "<div class=\"summary\">"
-print "<h2>Code Review for $WNAME</h2>"
-
-print "<table>"
-
-if [[ -z $uflag ]]; then
- if [[ $SCM_MODE == "mercurial" ]]; then
- #
- # Let's try to extract the user name from the .hgrc file
- #
- username=`grep '^username' $HOME/.hgrc | sed 's/^username[ ]*=[ ]*\(.*\)/\1/'`
- fi
-
- if [[ -z $username ]]; then
- #
- # Figure out the username and gcos name. To maintain compatibility
- # with passwd(4), we must support '&' substitutions.
- #
- username=`id | cut -d '(' -f 2 | cut -d ')' -f 1`
- if [[ -x $GETENT ]]; then
- realname=`$GETENT passwd $username | cut -d':' -f 5 | cut -d ',' -f 1`
- fi
- userupper=`print "$username" | sed 's/\<./\u&/g'`
- realname=`print $realname | sed s/\&/$userupper/`
- fi
-fi
-
-date="on `date`"
-
-if [[ -n "$username" && -n "$realname" ]]; then
- print "<tr><th>Prepared by:</th>"
- print "<td>$realname ($username) $date</td></tr>"
-elif [[ -n "$username" ]]; then
- print "<tr><th>Prepared by:</th><td>$username $date</td></tr>"
-fi
-
-print "<tr><th>Workspace:</th><td>$CWS</td></tr>"
-if [[ -n $parent_webrev ]]; then
- print "<tr><th>Compare against:</th><td>"
- print "webrev at $parent_webrev"
-else
- if [[ -n $OUTPWS2 ]]; then
- print "<tr><th>Compare against:</th><td>"
- print "$OUTPWS2"
- fi
-fi
-print "</td></tr>"
-if [[ -n $rflag ]]; then
- print "<tr><th>Compare against version:</th><td>$PARENT_REV</td></tr>"
-elif [[ -n $OUTREV ]]; then
- if [[ -z $forestflag ]]; then
- print "<tr><th>Compare against version:</th><td>$OUTREV</td></tr>"
- fi
-fi
-if [[ -n $HG_BRANCH ]]; then
- print "<tr><th>Branch:</th><td>$HG_BRANCH</td></tr>"
-fi
-
-print "<tr><th>Summary of changes:</th><td>"
-printCI $TOTL $TINS $TDEL $TMOD $TUNC
-print "</td></tr>"
-
-if [[ -f $WDIR/$WNAME.patch ]]; then
- print "<tr><th>Patch of changes:</th><td>"
- print "<a href=\"$WNAME.patch\">$WNAME.patch</a></td></tr>"
-elif [[ -f $CHANGESETPATH ]]; then
- print "<tr><th>Changeset:</th><td>"
- print "<a href=\"$EXPORTCHANGESET\">$EXPORTCHANGESET</a></td></tr>"
-fi
-
-if [[ -f $WDIR/$WNAME.pdf ]]; then
- print "<tr><th>Printable review:</th><td>"
- print "<a href=\"$WNAME.pdf\">$WNAME.pdf</a></td></tr>"
-fi
-
-if [[ -n "$iflag" ]]; then
- print "<tr><th>Author comments:</th><td><div>"
- cat /tmp/$$.include
- print "</div></td></tr>"
-fi
-# Add links to referenced CRs, if any
-# URL has a <title> like:
-# <title>[#JDK-8024688] b106-lambda: j.u.Map.merge doesn't work as specified if contains key:null pair - Java Bug System</title>
-# we format this to:
-# JDK-8024688: b106-lambda: j.u.Map.merge doesn't work as specified if contains key:null pair
-if [[ -n $CRID ]]; then
- for id in $CRID
- do
- #add "JDK-" to raw bug id for openjdk.java.net links.
- id=`echo ${id} | sed 's/^\([0-9]\{5,\}\)$/JDK-\1/'`
-
- print "<tr><th>Bug id:</th><td>"
- url="${BUGURL}${id}"
-
- if [[ -n $WGET ]]; then
- msg=`$WGET --timeout=10 --tries=1 -q $url -O - | grep '<title>' | sed 's/<title>\[#\(.*\)\] \(.*\) - Java Bug System<\/title>/\1 : \2/' | html_dequote | html_quote`
- fi
- if [[ -z $msg ]]; then
- msg="${id}"
- fi
-
- print "<a href=\"$url\">$msg</a>"
-
- print "</td></tr>"
- done
-fi
-print "<tr><th>Legend:</th><td>"
-print "<b>Modified file</b><br><font color=red><b>Deleted file</b></font><br><font color=green><b>New file</b></font></td></tr>"
-print "</table>"
-print "</div>"
-
-#
-# Second pass through the files: generate the rest of the index file
-#
-while read LINE
-do
- set - $LINE
- if [[ $1 == "Revision:" ]]; then
- FIRST_CREV=`expr $3 + 1`
- continue
- fi
- P=$1
-
- if [[ $# == 2 ]]; then
- PP=$2
- oldname=" <i>(was $PP)</i>"
-
- else
- PP=$P
- oldname=""
- fi
-
- DIR=${P%/*}
- if [[ $DIR == $P ]]; then
- DIR="." # File at root of workspace
- fi
-
- # Avoid processing the same file twice.
- # It's possible for renamed files to
- # appear twice in the file list
-
- F=$WDIR/$P
-
- print "<p><code>"
-
- # If there's a diffs file, make diffs links
-
- NODIFFS=
- if [[ -f $F.cdiff.html ]]; then
- print "<a href=\"$P.cdiff.html\">Cdiffs</a>"
- print "<a href=\"$P.udiff.html\">Udiffs</a>"
-
- if [[ -f $F.wdiff.html && -x $WDIFF ]]; then
- print "<a href=\"$P.wdiff.html\">Wdiffs</a>"
- fi
-
- print "<a href=\"$P.sdiff.html\">Sdiffs</a>"
-
- print "<a href=\"$P.frames.html\">Frames</a>"
- else
- NODIFFS=1
- print " ------ ------ ------"
-
- if [[ -x $WDIFF ]]; then
- print " ------"
- fi
-
- print " ------"
- fi
-
- # If there's an old file, make the link
-
- NOOLD=
- if [[ -f $F-.html ]]; then
- print "<a href=\"$P-.html\">Old</a>"
- else
- NOOLD=1
- print " ---"
- fi
-
- # If there's an new file, make the link
-
- NONEW=
- if [[ -f $F.html ]]; then
- print "<a href=\"$P.html\">New</a>"
- else
- NONEW=1
- print " ---"
- fi
-
- if [[ -f $F.patch ]]; then
- print "<a href=\"$P.patch\">Patch</a>"
- else
- print " -----"
- fi
-
- if [[ -f $WDIR/raw_files/new/$P ]]; then
- print "<a href=\"raw_files/new/$P\">Raw</a>"
- else
- print " ---"
- fi
- print "</code>"
- if [[ -n $NODIFFS && -z $oldname ]]; then
- if [[ -n $NOOLD ]]; then
- print "<font color=green><b>$P</b></font>"
- elif [[ -n $NONEW ]]; then
- print "<font color=red><b>$P</b></font>"
- fi
- else
- print "<b>$P</b> $oldname"
- fi
-
- print "</p><blockquote>\c"
- # Insert delta comments if any
- comments=`getcomments html $P $PP`
- if [ -n "$comments" ]; then
- print "<pre>$comments</pre>"
- fi
-
- # Add additional comments comment
-
- print "<!-- Add comments to explain changes in $P here -->"
-
- # Add count of changes.
-
- if [[ -f $F.count ]]; then
- cat $F.count
- rm $F.count
- fi
- print "</blockquote>"
-done < $FLIST
-
-print
-print
-print "<hr />"
-print "<p style=\"font-size: small\">"
-print "This code review page was prepared using <b>$0</b>"
-print "(vers $WEBREV_UPDATED)."
-print "</body>"
-print "</html>"
-
-if [[ -n $ZIP ]]; then
- # Let's generate a zip file for convenience
- cd $WDIR/..
- if [ -f webrev.zip ]; then
- rm webrev.zip
- fi
- $ZIP -r webrev webrev >/dev/null 2>&1
-fi
-
-exec 1<&- # Close FD 1.
-exec 1<&3 # dup FD 3 to restore stdout.
-exec 3<&- # close FD 3.
-
-print "Done."
-print "Output to: $WDIR"
--- a/nashorn/.hgtags Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/.hgtags Tue Jan 28 11:21:43 2014 -0800
@@ -230,4 +230,8 @@
8d014b039b44c23fa520ce20c2c27f7aa91441e9 jdk8-b118
c3343930c73c58a22c1d58719bb988aeb25a871f jdk8-b119
55cbc2d00c93f82513ce33819d41dc67e71aaefd jdk8-b120
+32631eed0fad2b31346eb41b29a50227bd29e2ec jdk8-b121
+9d112a0e7df737f3b1fa2a021d5bb350ed56c1b7 jdk8-b122
+688f4167f92188482b0d80e315c72f726c6d5ff6 jdk8-b123
32631eed0fad2b31346eb41b29a50227bd29e2ec jdk9-b00
+65347535840f045f2cd4341d7466c51009b1b06f jdk9-b01
--- a/nashorn/bin/jjs Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, 2013, 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. 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.
-#
-
-[ -z "$JAVA_HOME" ] && echo "Please set JAVA_HOME" && exit 1;
-
-$JAVA_HOME/bin/java -server -XX:+TieredCompilation -Xms2G -Xmx2G -esa -ea -Djava.ext.dirs=`dirname $0`/../dist:$JAVA_HOME/jre/lib/ext -XX:+HeapDumpOnOutOfMemoryError -Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false -Dnashorn.debug=true jdk.nashorn.tools.Shell $*
--- a/nashorn/bin/jjs.bat Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-rem
-rem Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
-rem DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-rem
-rem This code is free software; you can redistribute it and/or modify it
-rem under the terms of the GNU General Public License version 2 only, as
-rem published by the Free Software Foundation. Oracle designates this
-rem particular file as subject to the "Classpath" exception as provided
-rem by Oracle in the LICENSE file that accompanied this code.
-rem
-rem This code is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-rem version 2 for more details (a copy is included in the LICENSE file that
-rem accompanied this code).
-rem
-rem You should have received a copy of the GNU General Public License version
-rem 2 along with this work; if not, write to the Free Software Foundation,
-rem Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-rem
-rem Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-rem or visit www.oracle.com if you need additional information or have any
-rem questions.
-rem
-@echo off
-
-java -Xms2G -Xmx2G -XX:-TieredCompilation -server -esa -ea -Djava.ext.dirs=%~dp0\..\dist -XX:+HeapDumpOnOutOfMemoryError -Dnashorn.debug=true -Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false jdk.nashorn.tools.Shell
--- a/nashorn/bin/jjssecure Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, 2013, 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. 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.
-#
-
-[ -z "$JAVA_HOME" ] && echo "Please set JAVA_HOME" && exit 1;
-
-$JAVA_HOME/bin/java -Xms2G -Xmx2G -XX:-TieredCompilation -server -esa -ea -Djava.security.properties=`dirname $0`/../make/java.security.override -Djava.ext.dirs=`dirname $0`/../dist:$JAVA_HOME/jre/lib/ext -XX:+HeapDumpOnOutOfMemoryError -Dnashorn.debug=true -Djava.lang.invoke.MethodHandle.DEBUG_NAMES=true -Dnashorn.home=`dirname $0`/.. -Djava.security.manager jdk.nashorn.tools.Shell $*
--- a/nashorn/bin/jjssecure.bat Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-rem
-rem Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
-rem DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-rem
-rem This code is free software; you can redistribute it and/or modify it
-rem under the terms of the GNU General Public License version 2 only, as
-rem published by the Free Software Foundation. Oracle designates this
-rem particular file as subject to the "Classpath" exception as provided
-rem by Oracle in the LICENSE file that accompanied this code.
-rem
-rem This code is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-rem version 2 for more details (a copy is included in the LICENSE file that
-rem accompanied this code).
-rem
-rem You should have received a copy of the GNU General Public License version
-rem 2 along with this work; if not, write to the Free Software Foundation,
-rem Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-rem
-rem Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-rem or visit www.oracle.com if you need additional information or have any
-rem questions.
-rem
-@echo off
-
-java -Xms2G -Xmx2G -XX:-TieredCompilation -server -esa -ea -Djava.security.properties=%~dp0\..\make\java.security.override -Djava.ext.dirs=%~dp0\..\dist -XX:+HeapDumpOnOutOfMemoryError -Dnashorn.debug=true -Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false -Dnashorn.home=%~dp0\.. -Djava.security.manager jdk.nashorn.tools.Shell
--- a/nashorn/bin/nashorn Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, 2013, 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. 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.
-#
-
-[ -z "$JAVA_HOME" ] && echo "Please set JAVA_HOME" && exit 1;
-
-$JAVA_HOME/bin/jrunscript -J-Xms2G -J-Xmx2G -J-XX:-TieredCompilation -J-server -J-esa -J-ea -J-Djava.ext.dirs=`dirname $0`/../dist:$JAVA_HOME/jre/lib/ext -J-XX:+HeapDumpOnOutOfMemoryError -J-Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false -J-Dnashorn.debug=true -l nashorn $*
--- a/nashorn/bin/nashorn.bat Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-rem
-rem Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
-rem DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-rem
-rem This code is free software; you can redistribute it and/or modify it
-rem under the terms of the GNU General Public License version 2 only, as
-rem published by the Free Software Foundation. Oracle designates this
-rem particular file as subject to the "Classpath" exception as provided
-rem by Oracle in the LICENSE file that accompanied this code.
-rem
-rem This code is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-rem version 2 for more details (a copy is included in the LICENSE file that
-rem accompanied this code).
-rem
-rem You should have received a copy of the GNU General Public License version
-rem 2 along with this work; if not, write to the Free Software Foundation,
-rem Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-rem
-rem Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-rem or visit www.oracle.com if you need additional information or have any
-rem questions.
-rem
-@echo off
-
-jrunscript -J-Xms2G -J-Xmx2G -J-XX:-TieredCompilation -J-server -J-esa -J-ea -J-Djava.ext.dirs=%~dp0\..\dist -J-XX:+HeapDumpOnOutOfMemoryError -J-Dnashorn.debug=true -J-Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false -l nashorn
--- a/nashorn/bin/nashornsecure Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, 2013, 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. 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.
-#
-
-[ -z "$JAVA_HOME" ] && echo "Please set JAVA_HOME" && exit 1;
-
-$JAVA_HOME/bin/jrunscript -J-Djava.security.properties=`dirname $0`/../make/java.security.override -J-Djava.security.manager -J-Xms2G -J-Xmx2G -J-XX:-TieredCompilation -J-server -J-esa -J-ea -J-Djava.ext.dirs=`dirname $0`/../dist:$JAVA_HOME/jre/lib/ext -J-XX:+HeapDumpOnOutOfMemoryError -J-Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false -J-Dnashorn.debug=true -l nashorn $*
--- a/nashorn/bin/nashornsecure.bat Thu Jan 23 10:35:38 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-rem
-rem Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
-rem DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-rem
-rem This code is free software; you can redistribute it and/or modify it
-rem under the terms of the GNU General Public License version 2 only, as
-rem published by the Free Software Foundation. Oracle designates this
-rem particular file as subject to the "Classpath" exception as provided
-rem by Oracle in the LICENSE file that accompanied this code.
-rem
-rem This code is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-rem version 2 for more details (a copy is included in the LICENSE file that
-rem accompanied this code).
-rem
-rem You should have received a copy of the GNU General Public License version
-rem 2 along with this work; if not, write to the Free Software Foundation,
-rem Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-rem
-rem Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-rem or visit www.oracle.com if you need additional information or have any
-rem questions.
-rem
-@echo off
-
-jrunscript -J-Djava.security.properties=%~dp0\..\make\java.security.override -J-Djava.security.manager -J-Xms2G -J-Xmx2G -J-XX:-TieredCompilation -J-server -J-esa -J-ea -J-Djava.ext.dirs=%~dp0\..\dist -J-XX:+HeapDumpOnOutOfMemoryError -J-Dnashorn.debug=true -J-Djava.lang.invoke.MethodHandle.DEBUG_NAMES=false -l nashorn
--- a/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/MemberInfo.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/MemberInfo.java Tue Jan 28 11:21:43 2014 -0800
@@ -279,10 +279,6 @@
}
}
} else if (kind == Kind.FUNCTION) {
- final Type returnType = Type.getReturnType(javaDesc);
- if (! returnType.toString().equals(OBJECT_DESC)) {
- error("return value should be of Object type, found" + returnType);
- }
final Type[] argTypes = Type.getArgumentTypes(javaDesc);
if (argTypes.length < 1) {
error("function methods should have at least 1 arg");
--- a/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/MethodGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/MethodGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -349,19 +349,19 @@
// invokes, field get/sets
void invokeInterface(final String owner, final String method, final String desc) {
- super.visitMethodInsn(INVOKEINTERFACE, owner, method, desc);
+ super.visitMethodInsn(INVOKEINTERFACE, owner, method, desc, true);
}
void invokeVirtual(final String owner, final String method, final String desc) {
- super.visitMethodInsn(INVOKEVIRTUAL, owner, method, desc);
+ super.visitMethodInsn(INVOKEVIRTUAL, owner, method, desc, false);
}
void invokeSpecial(final String owner, final String method, final String desc) {
- super.visitMethodInsn(INVOKESPECIAL, owner, method, desc);
+ super.visitMethodInsn(INVOKESPECIAL, owner, method, desc, false);
}
void invokeStatic(final String owner, final String method, final String desc) {
- super.visitMethodInsn(INVOKESTATIC, owner, method, desc);
+ super.visitMethodInsn(INVOKESTATIC, owner, method, desc, false);
}
void putStatic(final String owner, final String field, final String desc) {
@@ -413,7 +413,7 @@
super.visitMethodInsn(INVOKEVIRTUAL,
"java/io/PrintStream",
"println",
- "(Ljava/lang/String;)V");
+ "(Ljava/lang/String;)V", false);
}
// print the object on the top of the stack
@@ -426,6 +426,6 @@
super.visitMethodInsn(INVOKEVIRTUAL,
"java/io/PrintStream",
"println",
- "(Ljava/lang/Object;)V");
+ "(Ljava/lang/Object;)V", false);
}
}
--- a/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/ScriptClassInstrumentor.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/ScriptClassInstrumentor.java Tue Jan 28 11:21:43 2014 -0800
@@ -146,16 +146,16 @@
// call $clinit$ just before return from <clinit>
if (isStaticInit && opcode == RETURN) {
super.visitMethodInsn(INVOKESTATIC, scriptClassInfo.getJavaName(),
- $CLINIT$, DEFAULT_INIT_DESC);
+ $CLINIT$, DEFAULT_INIT_DESC, false);
}
super.visitInsn(opcode);
}
@Override
- public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) {
+ public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc, final boolean itf) {
if (isConstructor && opcode == INVOKESPECIAL &&
INIT.equals(name) && SCRIPTOBJECT_TYPE.equals(owner)) {
- super.visitMethodInsn(opcode, owner, name, desc);
+ super.visitMethodInsn(opcode, owner, name, desc, false);
if (memberCount > 0) {
// initialize @Property fields if needed
@@ -166,7 +166,7 @@
super.visitTypeInsn(NEW, clazz);
super.visitInsn(DUP);
super.visitMethodInsn(INVOKESPECIAL, clazz,
- INIT, DEFAULT_INIT_DESC);
+ INIT, DEFAULT_INIT_DESC, false);
super.visitFieldInsn(PUTFIELD, scriptClassInfo.getJavaName(),
memInfo.getJavaName(), memInfo.getJavaDesc());
}
@@ -180,7 +180,7 @@
}
}
} else {
- super.visitMethodInsn(opcode, owner, name, desc);
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
}
}
--- a/nashorn/make/build-benchmark.xml Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/make/build-benchmark.xml Tue Jan 28 11:21:43 2014 -0800
@@ -239,7 +239,7 @@
</antcall>
</target>
- <target name="octane-regexp-octane-v8" depends="jar">
+ <target name="octane-regexp-v8" depends="jar">
<antcall target="run-octane-v8">
<param name="octane-tests" value="regexp"/>
</antcall>
@@ -291,17 +291,56 @@
</antcall>
</target>
+ <!-- splay -->
+ <target name="octane-typescript" depends="jar">
+ <antcall target="run-octane">
+ <param name="octane-tests" value="typescript"/>
+ </antcall>
+ </target>
+
+ <target name="octane-typescript-v8" depends="jar">
+ <antcall target="run-octane-v8">
+ <param name="octane-typescript" value="typescript"/>
+ </antcall>
+ </target>
+
+ <target name="octane-typescript-rhino" depends="jar">
+ <antcall target="run-octane-rhino">
+ <param name="octane-tests" value="typescript"/>
+ </antcall>
+ </target>
+
+ <!-- zlib -->
+ <target name="octane-zlib" depends="jar">
+ <antcall target="run-octane">
+ <param name="octane-tests" value="zlib"/>
+ </antcall>
+ </target>
+
+ <target name="octane-zlib-v8" depends="jar">
+ <antcall target="run-octane-v8">
+ <param name="octane-typescript" value="zlib"/>
+ </antcall>
+ </target>
+
+ <target name="octane-zlib-rhino" depends="jar">
+ <antcall target="run-octane-rhino">
+ <param name="octane-tests" value="zlib"/>
+ </antcall>
+ </target>
+
<!-- run octane benchmarks in a single process -->
<target name="octane-single-process" depends="octane-init">
<antcall target="run-octane"/>
</target>
- <!-- mandreel excluded due to OOM -->
+ <!-- zlib excluded due to missing implementation of 'read' -->
<target name="octane-separate-process" depends=
"octane-box2d, octane-code-load, octane-crypto,
octane-deltablue, octane-earley-boyer, octane-gbemu,
- octane-navier-stokes, octane-pdfjs, octane-raytrace,
- octane-regexp, octane-richards, octane-splay"/>
+ octane-mandreel, octane-navier-stokes, octane-pdfjs,
+ octane-raytrace, octane-regexp, octane-richards,
+ octane-splay, octane-typescript"/>
<target name="--single-process" unless="${octane-test-sys-prop.separate.process}">
<antcall target="octane-single-process"/>
@@ -330,6 +369,9 @@
dir=".">
<jvmarg line="${ext.class.path}"/>
<jvmarg line="${run.test.jvmargs.octane} -Xms${run.test.xms} -Xmx${run.test.xmx}"/>
+ <syspropertyset>
+ <propertyref prefix="nashorn."/>
+ </syspropertyset>
<arg value="${octane-test-sys-prop.test.js.framework}"/>
<arg value="--"/>
<arg value="${octane-tests}"/>
--- a/nashorn/make/build.xml Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/make/build.xml Tue Jan 28 11:21:43 2014 -0800
@@ -66,13 +66,16 @@
<condition property="exclude.list" value="./exclude/exclude_list_cc.txt" else="./exclude/exclude_list.txt">
<istrue value="${make.code.coverage}" />
</condition>
+
+ <condition property="jfr.options" value="${run.test.jvmargs.jfr}" else="">
+ <istrue value="${jfr}"/>
+ </condition>
</target>
<target name="init" depends="init-conditions, init-cc">
-
<!-- extends jvm args -->
- <property name="run.test.jvmargs" value="${run.test.jvmargs.main} ${run.test.cc.jvmargs}"/>
- <property name="run.test.jvmargs.octane" value="${run.test.jvmargs.octane.main} ${run.test.cc.jvmargs}" />
+ <property name="run.test.jvmargs" value="${run.test.jvmargs.main} ${run.test.cc.jvmargs} ${jfr.options}"/>
+ <property name="run.test.jvmargs.octane" value="${run.test.jvmargs.octane.main} ${run.test.cc.jvmargs} ${jfr.options}"/>
<echo message="run.test.jvmargs=${run.test.jvmargs}"/>
<echo message="run.test.jvmargs.octane=${run.test.jvmargs.octane}"/>
@@ -301,6 +304,10 @@
permission java.lang.RuntimePermission "nashorn.JavaReflection";
};
+grant codeBase "file:/${basedir}/test/script/markdown.js" {
+ permission java.io.FilePermission "${basedir}/test/script/external/showdown/-", "read";
+};
+
</echo>
<replace file="${build.dir}/nashorn.policy"><replacetoken>\</replacetoken><replacevalue>/</replacevalue></replace> <!--hack for Windows - to make URLs with normal path separators -->
@@ -316,6 +323,7 @@
<available file="${test.external.dir}/yui" property="test-sys-prop.external.yui"/>
<available file="${test.external.dir}/jquery" property="test-sys-prop.external.jquery"/>
<available file="${test.external.dir}/test262" property="test-sys-prop.external.test262"/>
+ <available file="${test.external.dir}/showdown" property="test-sys-prop.external.markdown"/>
</target>
<target name="check-testng" unless="testng.available">
@@ -339,6 +347,9 @@
<jvmarg line="${ext.class.path}"/>
<jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs}"/>
<propertyset>
+ <propertyref prefix="nashorn."/>
+ </propertyset>
+ <propertyset>
<propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/>
</propertyset>
@@ -393,6 +404,25 @@
</testng>
</target>
+ <target name="testmarkdown" depends="jar, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available">
+ <fileset id="test.classes" dir="${build.test.classes.dir}">
+ <include name="**/framework/*Test.class"/>
+ </fileset>
+
+ <testng outputdir="${build.test.results.dir}" classfilesetref="test.classes"
+ verbose="${testng.verbose}" haltonfailure="true" useDefaultListeners="false" listeners="${testng.listeners}" workingDir="${basedir}">
+ <jvmarg line="${ext.class.path}"/>
+ <jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs}"/>
+ <propertyset>
+ <propertyref prefix="testmarkdown-test-sys-prop."/>
+ <mapper from="testmarkdown-test-sys-prop.*" to="*" type="glob"/>
+ </propertyset>
+ <classpath>
+ <pathelement path="${run.test.classpath}"/>
+ </classpath>
+ </testng>
+ </target>
+
<target name="test262" depends="jar, check-testng, check-external-tests, compile-test, generate-policy-file" if="testng.available">
<fileset id="test.classes" dir="${build.test.classes.dir}">
<include name="**/framework/*Test.class"/>
@@ -403,6 +433,9 @@
<jvmarg line="${ext.class.path}"/>
<jvmarg line="${run.test.jvmargs} -Xmx${run.test.xmx} ${run.test.jvmsecurityargs}"/>
<propertyset>
+ <propertyref prefix="nashorn."/>
+ </propertyset>
+ <propertyset>
<propertyref prefix="test262-test-sys-prop."/>
<mapper from="test262-test-sys-prop.*" to="*" type="glob"/>
</propertyset>
@@ -537,6 +570,11 @@
<mkdir dir="${test.external.dir}/yui"/>
<get src="http://yui.yahooapis.com/3.5.1/build/yui/yui.js" dest="${test.external.dir}/yui" skipexisting="true" ignoreerrors="true"/>
<get src="http://yui.yahooapis.com/3.5.1/build/yui/yui-min.js" dest="${test.external.dir}/yui" skipexisting="true" ignoreerrors="true"/>
+
+ <!-- showdown -->
+ <mkdir dir="${test.external.dir}/showdown"/>
+ <get src="https://raw.github.com/coreyti/showdown/master/src/showdown.js" dest="${test.external.dir}/showdown" skipexisting="true" ignoreerrors="true"/>
+ <get src="https://raw.github.com/coreyti/showdown/master/src/extensions/table.js" dest="${test.external.dir}/showdown" skipexisting="true" ignoreerrors="true"/>
</target>
--- a/nashorn/make/project.properties Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/make/project.properties Tue Jan 28 11:21:43 2014 -0800
@@ -71,6 +71,9 @@
fxshell.dir = tools/fxshell
fxshell.jar = ${dist.dir}/nashornfx.jar
+# configuration for java flight recorder
+run.test.jvmargs.jfr=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,dumponexit=true,dumponexitpath=${build.dir},stackdepth=128
+
# jars refererred
file.reference.testng.jar=test/lib/testng.jar
@@ -119,6 +122,7 @@
test262.dir=${test.external.dir}/test262
test262.suite.dir=${test262.dir}/test/suite
testjfx.dir=${test.script.dir}/jfx
+testmarkdown.dir=${test.script.dir}/markdown
test-sys-prop.test.dir=${test.dir}
test-sys-prop.test.js.roots=${test.basic.dir} ${test.error.dir} ${test.sandbox.dir} ${test.trusted.dir}
@@ -209,6 +213,16 @@
${test262.dir}/test/harness/framework.js \
${test262.dir}/test/harness/sta.js
+# testmarkdown test root
+testmarkdown-test-sys-prop.test.js.roots=${testmarkdown.dir}
+
+# execute testmarkdown tests in shared nashorn context or not?
+testmarkdown-test-sys-prop.test.js.shared.context=false
+
+# framework root for markdown script tests
+testmarkdown-test-sys-prop.test.js.framework=\
+ ${test.script.dir}${file.separator}markdown.js
+
# testjfx test root
testjfx-test-sys-prop.test.js.roots=${testjfx.dir}
--- a/nashorn/src/jdk/nashorn/api/scripting/NashornException.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/api/scripting/NashornException.java Tue Jan 28 11:21:43 2014 -0800
@@ -29,6 +29,7 @@
import java.util.List;
import jdk.nashorn.internal.codegen.CompilerConstants;
import jdk.nashorn.internal.runtime.ECMAErrors;
+import jdk.nashorn.internal.runtime.ScriptObject;
/**
* This is base exception for all Nashorn exceptions. These originate from
@@ -44,11 +45,13 @@
@SuppressWarnings("serial")
public abstract class NashornException extends RuntimeException {
// script file name
- private final String fileName;
+ private String fileName;
// script line number
- private final int line;
+ private int line;
// script column number
- private final int column;
+ private int column;
+ // underlying ECMA error object - lazily initialized
+ private Object ecmaError;
/** script source name used for "engine.js" */
public static final String ENGINE_SCRIPT_SOURCE_NAME = "nashorn:engine/resources/engine.js";
@@ -122,6 +125,15 @@
}
/**
+ * Set the source file name for this {@code NashornException}
+ *
+ * @param fileName the file name
+ */
+ public final void setFileName(final String fileName) {
+ this.fileName = fileName;
+ }
+
+ /**
* Get the line number for this {@code NashornException}
*
* @return the line number
@@ -131,15 +143,33 @@
}
/**
+ * Set the line number for this {@code NashornException}
+ *
+ * @param line the line number
+ */
+ public final void setLineNumber(final int line) {
+ this.line = line;
+ }
+
+ /**
* Get the column for this {@code NashornException}
*
- * @return the column
+ * @return the column number
*/
public final int getColumnNumber() {
return column;
}
/**
+ * Set the column for this {@code NashornException}
+ *
+ * @param column the column number
+ */
+ public final void setColumnNumber(final int column) {
+ this.column = column;
+ }
+
+ /**
* Returns array javascript stack frames from the given exception object.
*
* @param exception exception from which stack frames are retrieved and filtered
@@ -155,6 +185,11 @@
if (methodName.equals(CompilerConstants.RUN_SCRIPT.symbolName())) {
methodName = "<program>";
}
+
+ if (methodName.contains(CompilerConstants.ANON_FUNCTION_PREFIX.symbolName())) {
+ methodName = "<anonymous>";
+ }
+
filtered.add(new StackTraceElement(className, methodName,
st.getFileName(), st.getLineNumber()));
}
@@ -188,4 +223,43 @@
}
return buf.toString();
}
+
+ protected Object getThrown() {
+ return null;
+ }
+
+ protected NashornException initEcmaError(final ScriptObject global) {
+ if (ecmaError != null) {
+ return this; // initialized already!
+ }
+
+ final Object thrown = getThrown();
+ if (thrown instanceof ScriptObject) {
+ setEcmaError(ScriptObjectMirror.wrap(thrown, global));
+ } else {
+ setEcmaError(thrown);
+ }
+
+ return this;
+ }
+
+ /**
+ * Return the underlying ECMA error object, if available.
+ *
+ * @return underlying ECMA Error object's mirror or whatever was thrown
+ * from script such as a String, Number or a Boolean.
+ */
+ public Object getEcmaError() {
+ return ecmaError;
+ }
+
+ /**
+ * Return the underlying ECMA error object, if available.
+ *
+ * @param ecmaError underlying ECMA Error object's mirror or whatever was thrown
+ * from script such as a String, Number or a Boolean.
+ */
+ public void setEcmaError(final Object ecmaError) {
+ this.ecmaError = ecmaError;
+ }
}
--- a/nashorn/src/jdk/nashorn/api/scripting/NashornScriptEngine.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/api/scripting/NashornScriptEngine.java Tue Jan 28 11:21:43 2014 -0800
@@ -476,16 +476,19 @@
private Object invokeImpl(final Object selfObject, final String name, final Object... args) throws ScriptException, NoSuchMethodException {
name.getClass(); // null check
+ ScriptObject invokeGlobal = null;
ScriptObjectMirror selfMirror = null;
if (selfObject instanceof ScriptObjectMirror) {
selfMirror = (ScriptObjectMirror)selfObject;
if (! isOfContext(selfMirror.getHomeGlobal(), nashornContext)) {
throw new IllegalArgumentException(getMessage("script.object.from.another.engine"));
}
+ invokeGlobal = selfMirror.getHomeGlobal();
} else if (selfObject instanceof ScriptObject) {
// invokeMethod called from script code - in which case we may get 'naked' ScriptObject
// Wrap it with oldGlobal to make a ScriptObjectMirror for the same.
final ScriptObject oldGlobal = Context.getGlobal();
+ invokeGlobal = oldGlobal;
if (oldGlobal == null) {
throw new IllegalArgumentException(getMessage("no.current.nashorn.global"));
}
@@ -498,6 +501,7 @@
} else if (selfObject == null) {
// selfObject is null => global function call
final ScriptObject ctxtGlobal = getNashornGlobalFrom(context);
+ invokeGlobal = ctxtGlobal;
selfMirror = (ScriptObjectMirror)ScriptObjectMirror.wrap(ctxtGlobal, ctxtGlobal);
}
@@ -509,7 +513,7 @@
if (cause instanceof NoSuchMethodException) {
throw (NoSuchMethodException)cause;
}
- throwAsScriptException(e);
+ throwAsScriptException(e, invokeGlobal);
throw new AssertionError("should not reach here");
}
}
@@ -543,7 +547,7 @@
}
return ScriptObjectMirror.translateUndefined(ScriptObjectMirror.wrap(ScriptRuntime.apply(script, ctxtGlobal), ctxtGlobal));
} catch (final Exception e) {
- throwAsScriptException(e);
+ throwAsScriptException(e, ctxtGlobal);
throw new AssertionError("should not reach here");
} finally {
if (globalChanged) {
@@ -552,7 +556,7 @@
}
}
- private static void throwAsScriptException(final Exception e) throws ScriptException {
+ private static void throwAsScriptException(final Exception e, final ScriptObject global) throws ScriptException {
if (e instanceof ScriptException) {
throw (ScriptException)e;
} else if (e instanceof NashornException) {
@@ -560,6 +564,7 @@
final ScriptException se = new ScriptException(
ne.getMessage(), ne.getFileName(),
ne.getLineNumber(), ne.getColumnNumber());
+ ne.initEcmaError(global);
se.initCause(e);
throw se;
} else if (e instanceof RuntimeException) {
@@ -605,7 +610,7 @@
return nashornContext.compileScript(source, newGlobal);
} catch (final Exception e) {
- throwAsScriptException(e);
+ throwAsScriptException(e, newGlobal);
throw new AssertionError("should not reach here");
} finally {
if (globalChanged) {
@@ -621,6 +626,11 @@
continue;
}
+ // skip check for default methods - non-abstract, interface methods
+ if (! Modifier.isAbstract(method.getModifiers())) {
+ continue;
+ }
+
Object obj = sobj.get(method.getName());
if (! (obj instanceof ScriptFunction)) {
return false;
--- a/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java Tue Jan 28 11:21:43 2014 -0800
@@ -108,6 +108,8 @@
}
throw new RuntimeException("not a function: " + toString());
+ } catch (final NashornException ne) {
+ throw ne.initEcmaError(global);
} catch (final RuntimeException | Error e) {
throw e;
} catch (final Throwable t) {
@@ -135,6 +137,8 @@
}
throw new RuntimeException("not a constructor: " + toString());
+ } catch (final NashornException ne) {
+ throw ne.initEcmaError(global);
} catch (final RuntimeException | Error e) {
throw e;
} catch (final Throwable t) {
@@ -182,6 +186,8 @@
}
throw new NoSuchMethodException("No such function " + functionName);
+ } catch (final NashornException ne) {
+ throw ne.initEcmaError(global);
} catch (final RuntimeException | Error e) {
throw e;
} catch (final Throwable t) {
@@ -717,6 +723,8 @@
}
try {
return callable.call();
+ } catch (final NashornException ne) {
+ throw ne.initEcmaError(global);
} catch (final RuntimeException e) {
throw e;
} catch (final Exception e) {
--- a/nashorn/src/jdk/nashorn/internal/codegen/Attr.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/Attr.java Tue Jan 28 11:21:43 2014 -0800
@@ -766,7 +766,7 @@
symbol.setType(Type.OBJECT);
}
- returnType = Type.widest(returnTypes.pop(), symbol.getSymbolType());
+ returnType = widestReturnType(returnTypes.pop(), symbol.getSymbolType());
} else {
returnType = Type.OBJECT; //undefined
}
@@ -1433,10 +1433,30 @@
ensureTypeNotUnknown(trueExpr);
ensureTypeNotUnknown(falseExpr);
- final Type type = Type.widest(trueExpr.getType(), falseExpr.getType());
+ final Type type = widestReturnType(trueExpr.getType(), falseExpr.getType());
return end(ensureSymbol(type, ternaryNode));
}
+ /**
+ * When doing widening for return types of a function or a ternary operator, it is not valid to widen a boolean to
+ * anything other than Object. Also, widening a numeric type to an object type must widen to Object proper and not
+ * any more specific subclass (e.g. widest of int/long/double and String is Object).
+ * @param t1 type 1
+ * @param t2 type 2
+ * @return wider of t1 and t2, except if one is boolean and the other is neither boolean nor unknown, or if one is
+ * numeric and the other is neither numeric nor unknown in which case {@code Type.OBJECT} is returned.
+ */
+ private static Type widestReturnType(final Type t1, final Type t2) {
+ if (t1.isUnknown()) {
+ return t2;
+ } else if (t2.isUnknown()) {
+ return t1;
+ } else if (t1.isBoolean() != t2.isBoolean() || t1.isNumeric() != t2.isNumeric()) {
+ return Type.OBJECT;
+ }
+ return Type.widest(t1, t2);
+ }
+
private void initCompileConstant(final CompilerConstants cc, final Block block, final int flags) {
final Class<?> type = cc.type();
// Must not call this method for constants with no explicit types; use the one with (..., Type) signature instead.
--- a/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -2023,8 +2023,6 @@
return false;
}
- method._new(ECMAException.class).dup();
-
final Source source = lc.getCurrentFunction().getSource();
final Expression expression = throwNode.getExpression();
@@ -2037,7 +2035,7 @@
method.load(source.getName());
method.load(line);
method.load(column);
- method.invoke(ECMAException.THROW_INIT);
+ method.invoke(ECMAException.CREATE);
method.athrow();
--- a/nashorn/src/jdk/nashorn/internal/codegen/CodeGeneratorLexicalContext.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/CodeGeneratorLexicalContext.java Tue Jan 28 11:21:43 2014 -0800
@@ -158,7 +158,7 @@
if (scopeCalls.containsKey(scopeCall)) {
return scopeCalls.get(scopeCall);
}
- scopeCall.setClassAndName(unit, getCurrentFunction().uniqueName("scopeCall"));
+ scopeCall.setClassAndName(unit, getCurrentFunction().uniqueName(":scopeCall"));
scopeCalls.put(scopeCall, scopeCall);
return scopeCall;
}
@@ -177,7 +177,7 @@
if (scopeCalls.containsKey(scopeCall)) {
return scopeCalls.get(scopeCall);
}
- scopeCall.setClassAndName(unit, getCurrentFunction().uniqueName("scopeCall"));
+ scopeCall.setClassAndName(unit, getCurrentFunction().uniqueName(":scopeCall"));
scopeCalls.put(scopeCall, scopeCall);
return scopeCall;
}
--- a/nashorn/src/jdk/nashorn/internal/codegen/Compiler.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/Compiler.java Tue Jan 28 11:21:43 2014 -0800
@@ -85,6 +85,8 @@
private Source source;
+ private String sourceName;
+
private final Map<String, byte[]> bytecode;
private final Set<CompileUnit> compileUnits;
@@ -267,6 +269,7 @@
append('$').
append(safeSourceName(functionNode.getSource()));
this.source = functionNode.getSource();
+ this.sourceName = functionNode.getSourceName();
this.scriptName = sb.toString();
}
@@ -573,7 +576,7 @@
}
private CompileUnit initCompileUnit(final String unitClassName, final long initialWeight) {
- final ClassEmitter classEmitter = new ClassEmitter(env, source.getName(), unitClassName, strict);
+ final ClassEmitter classEmitter = new ClassEmitter(env, sourceName, unitClassName, strict);
final CompileUnit compileUnit = new CompileUnit(unitClassName, classEmitter, initialWeight);
classEmitter.begin();
--- a/nashorn/src/jdk/nashorn/internal/codegen/CompilerConstants.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/CompilerConstants.java Tue Jan 28 11:21:43 2014 -0800
@@ -41,6 +41,7 @@
*/
public enum CompilerConstants {
+
/** the __FILE__ variable */
__FILE__,
@@ -75,7 +76,7 @@
DEFAULT_SCRIPT_NAME("Script"),
/** function prefix for anonymous functions */
- FUNCTION_PREFIX("function$"),
+ ANON_FUNCTION_PREFIX("L:"),
/** method name for Java method that is script entry point */
RUN_SCRIPT("runScript"),
@@ -149,26 +150,31 @@
ALLOCATE("allocate"),
/** prefix for split methods, @see Splitter */
- SPLIT_PREFIX("$split"),
+ SPLIT_PREFIX(":split"),
/** prefix for split array method and slot */
- SPLIT_ARRAY_ARG("split_array", 3),
+ SPLIT_ARRAY_ARG(":split_array", 3),
/** get string from constant pool */
- GET_STRING("$getString"),
+ GET_STRING(":getString"),
/** get map */
- GET_MAP("$getMap"),
+ GET_MAP(":getMap"),
/** get map */
- SET_MAP("$setMap"),
+ SET_MAP(":setMap"),
/** get array prefix */
- GET_ARRAY_PREFIX("$get"),
+ GET_ARRAY_PREFIX(":get"),
/** get array suffix */
GET_ARRAY_SUFFIX("$array");
+ /**
+ * Prefix used for internal methods generated in script clases.
+ */
+ public static final String INTERNAL_METHOD_PREFIX = ":";
+
private final String symbolName;
private final Class<?> type;
private final int slot;
--- a/nashorn/src/jdk/nashorn/internal/codegen/MethodEmitter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/MethodEmitter.java Tue Jan 28 11:21:43 2014 -0800
@@ -1130,7 +1130,11 @@
popType(Type.OBJECT);
}
- method.visitMethodInsn(opcode, className, methodName, methodDescriptor);
+ if (opcode == INVOKEINTERFACE) {
+ method.visitMethodInsn(opcode, className, methodName, methodDescriptor, true);
+ } else {
+ method.visitMethodInsn(opcode, className, methodName, methodDescriptor, false);
+ }
if (returnType != null) {
pushType(returnType);
--- a/nashorn/src/jdk/nashorn/internal/codegen/types/Type.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/codegen/types/Type.java Tue Jan 28 11:21:43 2014 -0800
@@ -261,7 +261,7 @@
}
static void invokeStatic(final MethodVisitor method, final Call call) {
- method.visitMethodInsn(INVOKESTATIC, call.className(), call.name(), call.descriptor());
+ method.visitMethodInsn(INVOKESTATIC, call.className(), call.name(), call.descriptor(), false);
}
/**
--- a/nashorn/src/jdk/nashorn/internal/ir/FunctionNode.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/ir/FunctionNode.java Tue Jan 28 11:21:43 2014 -0800
@@ -29,6 +29,7 @@
import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
import jdk.nashorn.internal.codegen.CompileUnit;
import jdk.nashorn.internal.codegen.Compiler;
@@ -138,6 +139,9 @@
/** Function flags. */
private final int flags;
+ /** //@ sourceURL or //# sourceURL for program function nodes */
+ private final String sourceURL;
+
private final int lineNumber;
/** Is anonymous function flag. */
@@ -223,6 +227,7 @@
* @param parameters parameter list
* @param kind kind of function as in {@link FunctionNode.Kind}
* @param flags initial flags
+ * @param sourceURL sourceURL specified in script (optional)
*/
public FunctionNode(
final Source source,
@@ -235,7 +240,8 @@
final String name,
final List<IdentNode> parameters,
final FunctionNode.Kind kind,
- final int flags) {
+ final int flags,
+ final String sourceURL) {
super(token, finish);
this.source = source;
@@ -250,6 +256,7 @@
this.compilationState = EnumSet.of(CompilationState.INITIALIZED);
this.declaredSymbols = new HashSet<>();
this.flags = flags;
+ this.sourceURL = sourceURL;
this.compileUnit = null;
this.body = null;
this.snapshot = null;
@@ -260,6 +267,7 @@
final FunctionNode functionNode,
final long lastToken,
final int flags,
+ final String sourceURL,
final String name,
final Type returnType,
final CompileUnit compileUnit,
@@ -271,6 +279,7 @@
super(functionNode);
this.lineNumber = functionNode.lineNumber;
this.flags = flags;
+ this.sourceURL = sourceURL;
this.name = name;
this.returnType = returnType;
this.compileUnit = compileUnit;
@@ -308,6 +317,38 @@
}
/**
+ * get source name - sourceURL or name derived from Source.
+ *
+ * @return name for the script source
+ */
+ public String getSourceName() {
+ return (sourceURL != null)? sourceURL : source.getName();
+ }
+
+ /**
+ * get the sourceURL
+ * @return the sourceURL
+ */
+ public String getSourceURL() {
+ return sourceURL;
+ }
+
+ /**
+ * Set the sourceURL
+ *
+ * @param lc lexical context
+ * @param newSourceURL source url string to set
+ * @return function node or a new one if state was changed
+ */
+ public FunctionNode setSourceURL(final LexicalContext lc, final String newSourceURL) {
+ if (Objects.equals(sourceURL, newSourceURL)) {
+ return this;
+ }
+
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, newSourceURL, name, returnType, compileUnit, compilationState, body, parameters, null, hints));
+ }
+
+ /**
* Returns the line number.
* @return the line number.
*/
@@ -335,7 +376,7 @@
if (this.snapshot == null) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, null, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, null, hints));
}
/**
@@ -351,7 +392,7 @@
if (isProgram() || parameters.isEmpty()) {
return this; //never specialize anything that won't be recompiled
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, this, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, this, hints));
}
/**
@@ -409,7 +450,7 @@
}
final EnumSet<CompilationState> newState = EnumSet.copyOf(this.compilationState);
newState.add(state);
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, newState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, newState, body, parameters, snapshot, hints));
}
/**
@@ -430,7 +471,7 @@
if (this.hints == hints) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
/**
@@ -483,7 +524,7 @@
if (this.flags == flags) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
@Override
@@ -593,7 +634,7 @@
if(this.body == body) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags | (body.needsScope() ? FunctionNode.HAS_SCOPE_BLOCK : 0), name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags | (body.needsScope() ? FunctionNode.HAS_SCOPE_BLOCK : 0), sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
/**
@@ -688,7 +729,7 @@
if (this.lastToken == lastToken) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
/**
@@ -710,7 +751,7 @@
if (this.name.equals(name)) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
/**
@@ -760,7 +801,7 @@
if (this.parameters == parameters) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
/**
@@ -825,6 +866,7 @@
this,
lastToken,
flags,
+ sourceURL,
name,
type,
compileUnit,
@@ -863,7 +905,7 @@
if (this.compileUnit == compileUnit) {
return this;
}
- return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
+ return Node.replaceInLexicalContext(lc, this, new FunctionNode(this, lastToken, flags, sourceURL, name, returnType, compileUnit, compilationState, body, parameters, snapshot, hints));
}
/**
--- a/nashorn/src/jdk/nashorn/internal/objects/Global.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/Global.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,6 +44,7 @@
import java.util.concurrent.ConcurrentHashMap;
import jdk.internal.dynalink.linker.GuardedInvocation;
import jdk.internal.dynalink.linker.LinkRequest;
+import jdk.nashorn.internal.lookup.Lookup;
import jdk.nashorn.internal.objects.annotations.Attribute;
import jdk.nashorn.internal.objects.annotations.Property;
import jdk.nashorn.internal.objects.annotations.ScriptClass;
@@ -364,6 +365,11 @@
private ScriptObject builtinFloat32Array;
private ScriptObject builtinFloat64Array;
+ /*
+ * ECMA section 13.2.3 The [[ThrowTypeError]] Function Object
+ */
+ private ScriptFunction typeErrorThrower;
+
private PropertyMap accessorPropertyDescriptorMap;
private PropertyMap arrayBufferViewMap;
private PropertyMap dataPropertyDescriptorMap;
@@ -1114,6 +1120,10 @@
return builtinArray;
}
+ ScriptFunction getTypeErrorThrower() {
+ return typeErrorThrower;
+ }
+
/**
* Called from compiled script code to test if builtin has been overridden
*
@@ -1695,8 +1705,25 @@
initScripting(env);
}
- if (Context.DEBUG && System.getSecurityManager() == null) {
- initDebug();
+ if (Context.DEBUG) {
+ boolean debugOkay;
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ try {
+ sm.checkPermission(new RuntimePermission(Context.NASHORN_DEBUG_MODE));
+ debugOkay = true;
+ } catch (final SecurityException ignored) {
+ // if no permission, don't initialize Debug object
+ debugOkay = false;
+ }
+
+ } else {
+ debugOkay = true;
+ }
+
+ if (debugOkay) {
+ initDebug();
+ }
}
copyBuiltins();
@@ -2000,6 +2027,13 @@
anon.set("constructor", builtinFunction, false);
anon.deleteOwnProperty(anon.getMap().findProperty("prototype"));
+ // use "getter" so that [[ThrowTypeError]] function's arity is 0 - as specified in step 10 of section 13.2.3
+ this.typeErrorThrower = new ScriptFunctionImpl("TypeErrorThrower", Lookup.TYPE_ERROR_THROWER_GETTER, null, null, false, false, false);
+ typeErrorThrower.setPrototype(UNDEFINED);
+ // Non-constructor built-in functions do not have "prototype" property
+ typeErrorThrower.deleteOwnProperty(typeErrorThrower.getMap().findProperty("prototype"));
+ typeErrorThrower.preventExtensions();
+
// now initialize Object
this.builtinObject = (ScriptFunction)initConstructor("Object");
final ScriptObject ObjectPrototype = getObjectPrototype();
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeError.java Tue Jan 28 11:21:43 2014 -0800
@@ -38,7 +38,6 @@
import jdk.nashorn.internal.objects.annotations.Property;
import jdk.nashorn.internal.objects.annotations.ScriptClass;
import jdk.nashorn.internal.objects.annotations.Where;
-import jdk.nashorn.internal.objects.ScriptFunctionImpl;
import jdk.nashorn.internal.runtime.ECMAException;
import jdk.nashorn.internal.runtime.JSType;
import jdk.nashorn.internal.runtime.PropertyMap;
@@ -75,7 +74,7 @@
static final String FILENAME = "__fileName__";
/** Message property name */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** ECMA 15.11.4.2 Error.prototype.name */
@@ -86,6 +85,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -93,6 +96,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
private NativeError(final Object msg, final ScriptObject proto, final PropertyMap map) {
super(proto, map);
if (msg != UNDEFINED) {
@@ -100,6 +104,7 @@
} else {
this.delete(NativeError.MESSAGE, false);
}
+ initException(this);
}
NativeError(final Object msg, final Global global) {
@@ -129,6 +134,14 @@
return new NativeError(msg);
}
+ // This is called NativeError, NativeTypeError etc. to
+ // associate a ECMAException with the ECMA Error object.
+ @SuppressWarnings("unused")
+ static void initException(final ScriptObject self) {
+ // ECMAException constructor has side effects
+ new ECMAException(self, null);
+ }
+
/**
* Nashorn extension: Error.captureStackTrace. Capture stack trace at the point of call into the Error object provided.
*
@@ -136,16 +149,17 @@
* @param errorObj the error object
* @return undefined
*/
- @SuppressWarnings("unused")
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
public static Object captureStackTrace(final Object self, final Object errorObj) {
Global.checkObject(errorObj);
final ScriptObject sobj = (ScriptObject)errorObj;
- new ECMAException(sobj, null); //constructor has side effects
- sobj.delete("stack", false);
- final ScriptFunction getStack = ScriptFunctionImpl.makeFunction("getStack", GET_STACK);
- final ScriptFunction setStack = ScriptFunctionImpl.makeFunction("setStack", SET_STACK);
- sobj.addOwnProperty("stack", Attribute.NOT_ENUMERABLE, getStack, setStack);
+ initException(sobj);
+ sobj.delete(STACK, false);
+ if (! sobj.has("stack")) {
+ final ScriptFunction getStack = ScriptFunctionImpl.makeFunction("getStack", GET_STACK);
+ final ScriptFunction setStack = ScriptFunctionImpl.makeFunction("setStack", SET_STACK);
+ sobj.addOwnProperty("stack", Attribute.NOT_ENUMERABLE, getStack, setStack);
+ }
return UNDEFINED;
}
@@ -226,7 +240,11 @@
public static Object setLineNumber(final Object self, final Object value) {
Global.checkObject(self);
final ScriptObject sobj = (ScriptObject)self;
- sobj.set(LINENUMBER, value, false);
+ if (sobj.hasOwnProperty(LINENUMBER)) {
+ sobj.put(LINENUMBER, value, false);
+ } else {
+ sobj.addOwnProperty(LINENUMBER, Attribute.NOT_ENUMERABLE, value);
+ }
return value;
}
@@ -254,7 +272,11 @@
public static Object setColumnNumber(final Object self, final Object value) {
Global.checkObject(self);
final ScriptObject sobj = (ScriptObject)self;
- sobj.set(COLUMNNUMBER, value, false);
+ if (sobj.hasOwnProperty(COLUMNNUMBER)) {
+ sobj.put(COLUMNNUMBER, value, false);
+ } else {
+ sobj.addOwnProperty(COLUMNNUMBER, Attribute.NOT_ENUMERABLE, value);
+ }
return value;
}
@@ -282,7 +304,11 @@
public static Object setFileName(final Object self, final Object value) {
Global.checkObject(self);
final ScriptObject sobj = (ScriptObject)self;
- sobj.set(FILENAME, value, false);
+ if (sobj.hasOwnProperty(FILENAME)) {
+ sobj.put(FILENAME, value, false);
+ } else {
+ sobj.addOwnProperty(FILENAME, Attribute.NOT_ENUMERABLE, value);
+ }
return value;
}
@@ -304,10 +330,12 @@
final Object exception = ECMAException.getException(sobj);
if (exception instanceof Throwable) {
- return getScriptStackString(sobj, (Throwable)exception);
+ Object value = getScriptStackString(sobj, (Throwable)exception);
+ sobj.put(STACK, value, false);
+ return value;
}
- return "";
+ return UNDEFINED;
}
/**
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeEvalError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeEvalError.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,7 +44,7 @@
public final class NativeEvalError extends ScriptObject {
/** message property in instance */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** error name property */
@@ -55,6 +55,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -62,6 +66,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
private NativeEvalError(final Object msg, final ScriptObject proto, final PropertyMap map) {
super(proto, map);
if (msg != UNDEFINED) {
@@ -69,6 +74,7 @@
} else {
this.delete(NativeError.MESSAGE, false);
}
+ NativeError.initException(this);
}
NativeEvalError(final Object msg, final Global global) {
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeJavaImporter.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeJavaImporter.java Tue Jan 28 11:21:43 2014 -0800
@@ -133,6 +133,11 @@
return createAndSetProperty(desc) ? super.lookup(desc, request) : super.noSuchMethod(desc, request);
}
+ @Override
+ protected Object invokeNoSuchProperty(final String name) {
+ return createProperty(name);
+ }
+
private boolean createAndSetProperty(final CallSiteDescriptor desc) {
final String name = desc.getNameToken(CallSiteDescriptor.NAME_OPERAND);
final Object value = createProperty(name);
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeMath.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeMath.java Tue Jan 28 11:21:43 2014 -0800
@@ -92,7 +92,7 @@
* @return abs of value
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object abs(final Object self, final Object x) {
+ public static double abs(final Object self, final Object x) {
return Math.abs(JSType.toNumber(x));
}
@@ -144,7 +144,7 @@
* @return acos of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object acos(final Object self, final Object x) {
+ public static double acos(final Object self, final Object x) {
return Math.acos(JSType.toNumber(x));
}
@@ -170,7 +170,7 @@
* @return asin of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object asin(final Object self, final Object x) {
+ public static double asin(final Object self, final Object x) {
return Math.asin(JSType.toNumber(x));
}
@@ -196,7 +196,7 @@
* @return atan of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object atan(final Object self, final Object x) {
+ public static double atan(final Object self, final Object x) {
return Math.atan(JSType.toNumber(x));
}
@@ -223,7 +223,7 @@
* @return atan2 of x and y
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object atan2(final Object self, final Object y, final Object x) {
+ public static double atan2(final Object self, final Object y, final Object x) {
return Math.atan2(JSType.toNumber(y), JSType.toNumber(x));
}
@@ -250,7 +250,7 @@
* @return ceil of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object ceil(final Object self, final Object x) {
+ public static double ceil(final Object self, final Object x) {
return Math.ceil(JSType.toNumber(x));
}
@@ -302,7 +302,7 @@
* @return cos of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object cos(final Object self, final Object x) {
+ public static double cos(final Object self, final Object x) {
return Math.cos(JSType.toNumber(x));
}
@@ -328,7 +328,7 @@
* @return exp of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object exp(final Object self, final Object x) {
+ public static double exp(final Object self, final Object x) {
return Math.exp(JSType.toNumber(x));
}
@@ -341,7 +341,7 @@
* @return floor of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object floor(final Object self, final Object x) {
+ public static double floor(final Object self, final Object x) {
return Math.floor(JSType.toNumber(x));
}
@@ -393,7 +393,7 @@
* @return log of argument
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object log(final Object self, final Object x) {
+ public static double log(final Object self, final Object x) {
return Math.log(JSType.toNumber(x));
}
@@ -419,7 +419,7 @@
* @return the largest of the arguments, {@link Double#NEGATIVE_INFINITY} if no args given, or identity if one arg is given
*/
@Function(arity = 2, attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object max(final Object self, final Object... args) {
+ public static double max(final Object self, final Object... args) {
switch (args.length) {
case 0:
return Double.NEGATIVE_INFINITY;
@@ -497,7 +497,7 @@
* @return the smallest of the arguments, {@link Double#NEGATIVE_INFINITY} if no args given, or identity if one arg is given
*/
@Function(arity = 2, attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object min(final Object self, final Object... args) {
+ public static double min(final Object self, final Object... args) {
switch (args.length) {
case 0:
return Double.POSITIVE_INFINITY;
@@ -576,7 +576,7 @@
* @return x raised to the power of y
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object pow(final Object self, final Object x, final Object y) {
+ public static double pow(final Object self, final Object x, final Object y) {
return Math.pow(JSType.toNumber(x), JSType.toNumber(y));
}
@@ -602,7 +602,7 @@
* @return random number in the range [0..1)
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object random(final Object self) {
+ public static double random(final Object self) {
return Math.random();
}
@@ -615,7 +615,7 @@
* @return x rounded
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object round(final Object self, final Object x) {
+ public static double round(final Object self, final Object x) {
final double d = JSType.toNumber(x);
if (Math.getExponent(d) >= 52) {
return d;
@@ -632,7 +632,7 @@
* @return sin of x
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object sin(final Object self, final Object x) {
+ public static double sin(final Object self, final Object x) {
return Math.sin(JSType.toNumber(x));
}
@@ -658,7 +658,7 @@
* @return sqrt of x
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
- public static Object sqrt(final Object self, final Object x) {
+ public static double sqrt(final Object self, final Object x) {
return Math.sqrt(JSType.toNumber(x));
}
@@ -684,7 +684,7 @@
* @return tan of x
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where=Where.CONSTRUCTOR)
- public static Object tan(final Object self, final Object x) {
+ public static double tan(final Object self, final Object x) {
return Math.tan(JSType.toNumber(x));
}
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeRangeError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeRangeError.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,7 +44,7 @@
public final class NativeRangeError extends ScriptObject {
/** message property in instance */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** error name property */
@@ -55,6 +55,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -62,6 +66,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
private NativeRangeError(final Object msg, final ScriptObject proto, final PropertyMap map) {
super(proto, map);
if (msg != UNDEFINED) {
@@ -69,6 +74,7 @@
} else {
this.delete(NativeError.MESSAGE, false);
}
+ NativeError.initException(this);
}
NativeRangeError(final Object msg, final Global global) {
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeReferenceError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeReferenceError.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,7 +44,7 @@
public final class NativeReferenceError extends ScriptObject {
/** message property in instance */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** error name property */
@@ -55,6 +55,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -62,6 +66,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
private NativeReferenceError(final Object msg, final ScriptObject proto, final PropertyMap map) {
super(proto, map);
if (msg != UNDEFINED) {
@@ -69,6 +74,7 @@
} else {
this.delete(NativeError.MESSAGE, false);
}
+ NativeError.initException(this);
}
NativeReferenceError(final Object msg, final Global global) {
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeStrictArguments.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeStrictArguments.java Tue Jan 28 11:21:43 2014 -0800
@@ -76,7 +76,7 @@
super(proto, map);
setIsArguments();
- final ScriptFunction func = ScriptFunctionImpl.getTypeErrorThrower();
+ final ScriptFunction func = Global.instance().getTypeErrorThrower();
// We have to fill user accessor functions late as these are stored
// in this object rather than in the PropertyMap of this object.
setUserAccessors("caller", func, func);
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeSyntaxError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeSyntaxError.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,7 +44,7 @@
public final class NativeSyntaxError extends ScriptObject {
/** message property in instance */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** error name property */
@@ -55,6 +55,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -62,6 +66,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
NativeSyntaxError(final Object msg, final Global global) {
super(global.getSyntaxErrorPrototype(), global.getSyntaxErrorMap());
if (msg != UNDEFINED) {
@@ -69,6 +74,7 @@
} else {
this.delete(NativeError.MESSAGE, false);
}
+ NativeError.initException(this);
}
private NativeSyntaxError(final Object msg) {
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeTypeError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeTypeError.java Tue Jan 28 11:21:43 2014 -0800
@@ -44,7 +44,7 @@
public final class NativeTypeError extends ScriptObject {
/** message property in instance */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** error name property */
@@ -55,6 +55,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -62,6 +66,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
NativeTypeError(final Object msg, final Global global) {
super(global.getTypeErrorPrototype(), global.getTypeErrorMap());
if (msg != UNDEFINED) {
@@ -69,6 +74,7 @@
} else {
delete(NativeError.MESSAGE, false);
}
+ NativeError.initException(this);
}
private NativeTypeError(final Object msg) {
--- a/nashorn/src/jdk/nashorn/internal/objects/NativeURIError.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/NativeURIError.java Tue Jan 28 11:21:43 2014 -0800
@@ -43,7 +43,7 @@
public final class NativeURIError extends ScriptObject {
/** message property in instance */
- @Property(name = NativeError.MESSAGE)
+ @Property(name = NativeError.MESSAGE, attributes = Attribute.NOT_ENUMERABLE)
public Object instMessage;
/** error name property */
@@ -54,6 +54,10 @@
@Property(attributes = Attribute.NOT_ENUMERABLE, where = Where.PROTOTYPE)
public Object message;
+ /** Nashorn extension: underlying exception */
+ @Property(attributes = Attribute.NOT_ENUMERABLE)
+ public Object nashornException;
+
// initialized by nasgen
private static PropertyMap $nasgenmap$;
@@ -61,6 +65,7 @@
return $nasgenmap$;
}
+ @SuppressWarnings("LeakingThisInConstructor")
NativeURIError(final Object msg, final Global global) {
super(global.getURIErrorPrototype(), global.getURIErrorMap());
if (msg != UNDEFINED) {
@@ -68,6 +73,7 @@
} else {
this.delete(NativeError.MESSAGE, false);
}
+ NativeError.initException(this);
}
private NativeURIError(final Object msg) {
--- a/nashorn/src/jdk/nashorn/internal/objects/ScriptFunctionImpl.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/objects/ScriptFunctionImpl.java Tue Jan 28 11:21:43 2014 -0800
@@ -170,26 +170,6 @@
boundfunctionmap$.setIsShared();
}
- // function object representing TypeErrorThrower
- private static ScriptFunction typeErrorThrower;
-
- /*
- * ECMA section 13.2.3 The [[ThrowTypeError]] Function Object
- */
- static synchronized ScriptFunction getTypeErrorThrower() {
- if (typeErrorThrower == null) {
- // use "getter" so that [[ThrowTypeError]] function's arity is 0 - as specified in step 10 of section 13.2.3
- final ScriptFunctionImpl func = new ScriptFunctionImpl("TypeErrorThrower", Lookup.TYPE_ERROR_THROWER_GETTER, null, null, false, false, false);
- func.setPrototype(UNDEFINED);
- // Non-constructor built-in functions do not have "prototype" property
- func.deleteOwnProperty(func.getMap().findProperty("prototype"));
- func.preventExtensions();
- typeErrorThrower = func;
- }
-
- return typeErrorThrower;
- }
-
private static PropertyMap createStrictModeMap(final PropertyMap map) {
final int flags = Property.NOT_ENUMERABLE | Property.NOT_CONFIGURABLE;
PropertyMap newMap = map;
@@ -313,12 +293,13 @@
// We have to fill user accessor functions late as these are stored
// in this object rather than in the PropertyMap of this object.
+ final ScriptFunction errorThrower = global.getTypeErrorThrower();
if (findProperty("arguments", true) != null) {
- setUserAccessors("arguments", getTypeErrorThrower(), getTypeErrorThrower());
+ setUserAccessors("arguments", errorThrower, errorThrower);
}
if (findProperty("caller", true) != null) {
- setUserAccessors("caller", getTypeErrorThrower(), getTypeErrorThrower());
+ setUserAccessors("caller", errorThrower, errorThrower);
}
}
}
--- a/nashorn/src/jdk/nashorn/internal/parser/AbstractParser.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/parser/AbstractParser.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,6 +26,7 @@
package jdk.nashorn.internal.parser;
import static jdk.nashorn.internal.parser.TokenType.COMMENT;
+import static jdk.nashorn.internal.parser.TokenType.DIRECTIVE_COMMENT;
import static jdk.nashorn.internal.parser.TokenType.EOF;
import static jdk.nashorn.internal.parser.TokenType.EOL;
import static jdk.nashorn.internal.parser.TokenType.IDENT;
@@ -84,6 +85,9 @@
/** Is this parser running under strict mode? */
protected boolean isStrictMode;
+ /** //@ sourceURL or //# sourceURL */
+ protected String sourceURL;
+
/**
* Construct a parser.
*
@@ -156,17 +160,38 @@
protected final TokenType nextOrEOL() {
do {
nextToken();
- } while (type == COMMENT);
+ if (type == DIRECTIVE_COMMENT) {
+ checkDirectiveComment();
+ }
+ } while (type == COMMENT || type == DIRECTIVE_COMMENT);
return type;
}
+ // sourceURL= after directive comment
+ private static final String SOURCE_URL_PREFIX = "sourceURL=";
+
+ // currently only @sourceURL=foo supported
+ private void checkDirectiveComment() {
+ // if already set, ignore this one
+ if (sourceURL != null) {
+ return;
+ }
+
+ final String comment = (String) lexer.getValueOf(token, isStrictMode);
+ final int len = comment.length();
+ // 4 characters for directive comment marker //@\s or //#\s
+ if (len > 4 && comment.substring(4).startsWith(SOURCE_URL_PREFIX)) {
+ sourceURL = comment.substring(4 + SOURCE_URL_PREFIX.length());
+ }
+ }
+
/**
* Seek next token.
*
* @return tokenType of next token.
*/
- private final TokenType nextToken() {
+ private TokenType nextToken() {
// Capture last token tokenType.
last = type;
if (type != EOF) {
--- a/nashorn/src/jdk/nashorn/internal/parser/Lexer.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/parser/Lexer.java Tue Jan 28 11:21:43 2014 -0800
@@ -27,6 +27,7 @@
import static jdk.nashorn.internal.parser.TokenType.ADD;
import static jdk.nashorn.internal.parser.TokenType.COMMENT;
+import static jdk.nashorn.internal.parser.TokenType.DIRECTIVE_COMMENT;
import static jdk.nashorn.internal.parser.TokenType.DECIMAL;
import static jdk.nashorn.internal.parser.TokenType.EOF;
import static jdk.nashorn.internal.parser.TokenType.EOL;
@@ -434,12 +435,18 @@
if (ch1 == '/') {
// Skip over //.
skip(2);
+
+ boolean directiveComment = false;
+ if ((ch0 == '#' || ch0 == '@') && (ch1 == ' ')) {
+ directiveComment = true;
+ }
+
// Scan for EOL.
while (!atEOF() && !isEOL(ch0)) {
skip(1);
}
// Did detect a comment.
- add(COMMENT, start);
+ add(directiveComment? DIRECTIVE_COMMENT : COMMENT, start);
return true;
} else if (ch1 == '*') {
// Skip over /*.
@@ -1623,6 +1630,8 @@
return valueOfPattern(start, len); // RegexToken::LexerToken
case XML:
return valueOfXML(start, len); // XMLToken::LexerToken
+ case DIRECTIVE_COMMENT:
+ return source.getString(start, len);
default:
break;
}
--- a/nashorn/src/jdk/nashorn/internal/parser/Parser.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/parser/Parser.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,7 +26,7 @@
package jdk.nashorn.internal.parser;
import static jdk.nashorn.internal.codegen.CompilerConstants.EVAL;
-import static jdk.nashorn.internal.codegen.CompilerConstants.FUNCTION_PREFIX;
+import static jdk.nashorn.internal.codegen.CompilerConstants.ANON_FUNCTION_PREFIX;
import static jdk.nashorn.internal.codegen.CompilerConstants.RUN_SCRIPT;
import static jdk.nashorn.internal.parser.TokenType.ASSIGN;
import static jdk.nashorn.internal.parser.TokenType.CASE;
@@ -389,7 +389,9 @@
sb.append(parentFunction.getName()).append('$');
}
- sb.append(ident != null ? ident.getName() : FUNCTION_PREFIX.symbolName());
+ assert ident.getName() != null;
+ sb.append(ident.getName());
+
final String name = namespace.uniqueName(sb.toString());
assert parentFunction != null || name.equals(RUN_SCRIPT.symbolName()) : "name = " + name;// must not rename runScript().
@@ -419,7 +421,8 @@
name,
parameters,
kind,
- flags);
+ flags,
+ sourceURL);
lc.push(functionNode);
// Create new block, and just put it on the context stack, restoreFunctionNode() will associate it with the
@@ -638,6 +641,10 @@
script = restoreFunctionNode(script, token); //commit code
script = script.setBody(lc, script.getBody().setNeedsScope(lc));
+ // user may have directive comment to set sourceURL
+ if (sourceURL != null) {
+ script = script.setSourceURL(lc, sourceURL);
+ }
return script;
}
@@ -2132,11 +2139,20 @@
final String setterName = setIdent.getPropertyName();
final IdentNode setNameNode = new IdentNode(((Node)setIdent).getToken(), finish, NameCodec.encode("set " + setterName));
expect(LPAREN);
- final IdentNode argIdent = getIdent();
- verifyStrictIdent(argIdent, "setter argument");
+ // be sloppy and allow missing setter parameter even though
+ // spec does not permit it!
+ final IdentNode argIdent;
+ if (type == IDENT || isNonStrictModeIdent()) {
+ argIdent = getIdent();
+ verifyStrictIdent(argIdent, "setter argument");
+ } else {
+ argIdent = null;
+ }
expect(RPAREN);
List<IdentNode> parameters = new ArrayList<>();
- parameters.add(argIdent);
+ if (argIdent != null) {
+ parameters.add(argIdent);
+ }
functionNode = functionBody(getSetToken, setNameNode, parameters, FunctionNode.Kind.SETTER);
return new PropertyNode(propertyToken, finish, setIdent, null, null, functionNode);
@@ -2448,7 +2464,7 @@
// name is null, generate anonymous name
boolean isAnonymous = false;
if (name == null) {
- final String tmpName = "_L" + functionLine;
+ final String tmpName = ANON_FUNCTION_PREFIX.symbolName() + functionLine;
name = new IdentNode(functionToken, Token.descPosition(functionToken), tmpName);
isAnonymous = true;
}
--- a/nashorn/src/jdk/nashorn/internal/parser/TokenType.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/parser/TokenType.java Tue Jan 28 11:21:43 2014 -0800
@@ -41,10 +41,14 @@
*/
@SuppressWarnings("javadoc")
public enum TokenType {
- ERROR (SPECIAL, null),
- EOF (SPECIAL, null),
- EOL (SPECIAL, null),
- COMMENT (SPECIAL, null),
+ ERROR (SPECIAL, null),
+ EOF (SPECIAL, null),
+ EOL (SPECIAL, null),
+ COMMENT (SPECIAL, null),
+ // comments of the form //@ foo=bar or //# foo=bar
+ // These comments are treated as special instructions
+ // to the lexer, parser or codegenerator.
+ DIRECTIVE_COMMENT (SPECIAL, null),
NOT (UNARY, "!", 14, false),
NE (BINARY, "!=", 9, true),
--- a/nashorn/src/jdk/nashorn/internal/runtime/Context.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/Context.java Tue Jan 28 11:21:43 2014 -0800
@@ -91,6 +91,11 @@
*/
public static final String NASHORN_JAVA_REFLECTION = "nashorn.JavaReflection";
+ /**
+ * Permission to enable nashorn debug mode.
+ */
+ public static final String NASHORN_DEBUG_MODE = "nashorn.debugMode";
+
// nashorn load psuedo URL prefixes
private static final String LOAD_CLASSPATH = "classpath:";
private static final String LOAD_FX = "fx:";
--- a/nashorn/src/jdk/nashorn/internal/runtime/ECMAErrors.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/ECMAErrors.java Tue Jan 28 11:21:43 2014 -0800
@@ -30,6 +30,7 @@
import java.util.ResourceBundle;
import jdk.nashorn.api.scripting.NashornException;
import jdk.nashorn.internal.scripts.JS;
+import jdk.nashorn.internal.codegen.CompilerConstants;
/**
* Helper class to throw various standard "ECMA error" exceptions such as Error, ReferenceError, TypeError etc.
@@ -401,7 +402,7 @@
final String className = frame.getClassName();
// Look for script package in class name (into which compiler puts generated code)
- if (className.startsWith(scriptPackage)) {
+ if (className.startsWith(scriptPackage) && !frame.getMethodName().startsWith(CompilerConstants.INTERNAL_METHOD_PREFIX)) {
final String source = frame.getFileName();
/*
* Make sure that it is not some Java code that Nashorn has in that package!
--- a/nashorn/src/jdk/nashorn/internal/runtime/ECMAException.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/ECMAException.java Tue Jan 28 11:21:43 2014 -0800
@@ -25,7 +25,7 @@
package jdk.nashorn.internal.runtime;
-import static jdk.nashorn.internal.codegen.CompilerConstants.constructorNoLookup;
+import static jdk.nashorn.internal.codegen.CompilerConstants.staticCallNoLookup;
import static jdk.nashorn.internal.codegen.CompilerConstants.virtualField;
import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
@@ -44,9 +44,9 @@
@SuppressWarnings("serial")
public final class ECMAException extends NashornException {
/**
- * Method handle pointing to the constructor {@link ECMAException#ECMAException(Object, String, int, int)},
+ * Method handle pointing to the constructor {@link ECMAException#create(Object, String, int, int)},
*/
- public static final Call THROW_INIT = constructorNoLookup(ECMAException.class, Object.class, String.class, int.class, int.class);
+ public static final Call CREATE = staticCallNoLookup(ECMAException.class, "create", ECMAException.class, Object.class, String.class, int.class, int.class);
/** Field handle to the{@link ECMAException#thrown} field, so that it can be accessed from generated code */
public static final FieldAccess THROWN = virtualField(ECMAException.class, "thrown", Object.class);
@@ -57,23 +57,21 @@
public final Object thrown;
/**
- * Constructor. This is called from generated code to implement the {@code throw}
- * instruction from generated script code
+ * Constructor. Called from the factory method 'create'.
*
* @param thrown object to be thrown
* @param fileName script file name
* @param line line number of throw
* @param column column number of throw
*/
- public ECMAException(final Object thrown, final String fileName, final int line, final int column) {
+ private ECMAException(final Object thrown, final String fileName, final int line, final int column) {
super(ScriptRuntime.safeToString(thrown), asThrowable(thrown), fileName, line, column);
this.thrown = thrown;
setExceptionToThrown();
}
/**
- * Constructor. This is called from runtime code in Nashorn to throw things like
- * type errors.
+ * Constructor. This is called from the runtime code.
*
* @param thrown object to be thrown
* @param cause Java exception that triggered this throw
@@ -85,9 +83,39 @@
}
/**
+ * Factory method to retrieve the underlying exception or create an exception.
+ * This method is called from the generated code.
+ *
+ * @param thrown object to be thrown
+ * @param fileName script file name
+ * @param line line number of throw
+ * @param column column number of throw
+ * @return ECMAException object
+ */
+ public static ECMAException create(final Object thrown, final String fileName, final int line, final int column) {
+ // If thrown object is an Error or sub-object like TypeError, then
+ // an ECMAException object has been already initialized at constructor.
+ if (thrown instanceof ScriptObject) {
+ ScriptObject sobj = (ScriptObject)thrown;
+ Object exception = getException(sobj);
+ if (exception instanceof ECMAException) {
+ // copy over file name, line number and column number.
+ final ECMAException ee = (ECMAException)exception;
+ ee.setFileName(fileName);
+ ee.setLineNumber(line);
+ ee.setColumnNumber(column);
+ return ee;
+ }
+ }
+
+ return new ECMAException(thrown, fileName, line, column);
+ }
+
+ /**
* Get the thrown object
* @return thrown object
*/
+ @Override
public Object getThrown() {
return thrown;
}
@@ -256,6 +284,8 @@
final ScriptObject sobj = (ScriptObject)thrown;
if (!sobj.has(EXCEPTION_PROPERTY)) {
sobj.addOwnProperty(EXCEPTION_PROPERTY, Property.NOT_ENUMERABLE, this);
+ } else {
+ sobj.set(EXCEPTION_PROPERTY, this, false);
}
}
}
--- a/nashorn/src/jdk/nashorn/internal/runtime/FindProperty.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/FindProperty.java Tue Jan 28 11:21:43 2014 -0800
@@ -112,7 +112,7 @@
return property != null && property.hasGetterFunction(prototype) ? self : prototype;
}
- /**
+ /**
* Return the appropriate receiver for a setter.
* @return appropriate receiver
*/
@@ -172,5 +172,20 @@
property.setObjectValue(getSetterReceiver(), getOwner(), value, strict);
}
+ /**
+ * Get the number of objects in the prototype chain between the {@code self} and the
+ * {@code owner} objects.
+ * @return the prototype chain length
+ */
+ int getProtoChainLength() {
+ assert self != null;
+ int length = 0;
+ for (ScriptObject obj = self; obj != prototype; obj = obj.getProto()) {
+ assert !(obj instanceof WithObject);
+ ++length;
+ }
+ return length;
+ }
+
}
--- a/nashorn/src/jdk/nashorn/internal/runtime/NativeJavaPackage.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/NativeJavaPackage.java Tue Jan 28 11:21:43 2014 -0800
@@ -196,24 +196,13 @@
@Override
public GuardedInvocation noSuchProperty(final CallSiteDescriptor desc, final LinkRequest request) {
final String propertyName = desc.getNameToken(2);
- final String fullName = name.isEmpty() ? propertyName : name + "." + propertyName;
-
- final Context context = Context.getContextTrusted();
+ createProperty(propertyName);
+ return super.lookup(desc, request);
+ }
- Class<?> javaClass = null;
- try {
- javaClass = context.findClass(fullName);
- } catch (final NoClassDefFoundError | ClassNotFoundException e) {
- //ignored
- }
-
- if (javaClass == null) {
- set(propertyName, new NativeJavaPackage(fullName, getProto()), false);
- } else {
- set(propertyName, StaticClass.forClass(javaClass), false);
- }
-
- return super.lookup(desc, request);
+ @Override
+ protected Object invokeNoSuchProperty(final String name) {
+ return createProperty(name);
}
@Override
@@ -224,4 +213,26 @@
private static MethodHandle findOwnMH(final String name, final Class<?> rtype, final Class<?>... types) {
return MH.findStatic(MethodHandles.lookup(), NativeJavaPackage.class, name, MH.type(rtype, types));
}
+
+ private Object createProperty(final String propertyName) {
+ final String fullName = name.isEmpty() ? propertyName : name + "." + propertyName;
+ final Context context = Context.getContextTrusted();
+
+ Class<?> javaClass = null;
+ try {
+ javaClass = context.findClass(fullName);
+ } catch (final NoClassDefFoundError | ClassNotFoundException e) {
+ //ignored
+ }
+
+ final Object propertyValue;
+ if (javaClass == null) {
+ propertyValue = new NativeJavaPackage(fullName, getProto());
+ } else {
+ propertyValue = StaticClass.forClass(javaClass);
+ }
+
+ set(propertyName, propertyValue, false);
+ return propertyValue;
+ }
}
--- a/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java Tue Jan 28 11:21:43 2014 -0800
@@ -143,6 +143,8 @@
private static final MethodHandle TRUNCATINGFILTER = findOwnMH("truncatingFilter", Object[].class, int.class, Object[].class);
private static final MethodHandle KNOWNFUNCPROPGUARD = findOwnMH("knownFunctionPropertyGuard", boolean.class, Object.class, PropertyMap.class, MethodHandle.class, Object.class, ScriptFunction.class);
+ private static final ArrayList<MethodHandle> protoFilters = new ArrayList<>();
+
/** Method handle for getting a function argument at a given index. Used from MapCreator */
public static final Call GET_ARGUMENT = virtualCall(MethodHandles.lookup(), ScriptObject.class, "getArgument", Object.class, int.class);
@@ -1712,6 +1714,44 @@
}
/**
+ * Test whether this object contains in its prototype chain or is itself a with-object.
+ * @return true if a with-object was found
+ */
+ final boolean hasWithScope() {
+ if (isScope()) {
+ for (ScriptObject obj = this; obj != null; obj = obj.getProto()) {
+ if (obj instanceof WithObject) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Add a filter to the first argument of {@code methodHandle} that calls its {@link #getProto()} method
+ * {@code depth} times.
+ * @param methodHandle a method handle
+ * @param depth distance to target prototype
+ * @return the filtered method handle
+ */
+ static MethodHandle addProtoFilter(final MethodHandle methodHandle, final int depth) {
+ if (depth == 0) {
+ return methodHandle;
+ }
+ final int listIndex = depth - 1; // We don't need 0-deep walker
+ MethodHandle filter = listIndex < protoFilters.size() ? protoFilters.get(listIndex) : null;
+
+ if(filter == null) {
+ filter = addProtoFilter(GETPROTO, depth - 1);
+ protoFilters.add(null);
+ protoFilters.set(listIndex, filter);
+ }
+
+ return MH.filterArguments(methodHandle, 0, filter.asType(filter.type().changeReturnType(methodHandle.type().parameterType(0))));
+ }
+
+ /**
* Find the appropriate GET method for an invoke dynamic call.
*
* @param desc the call site descriptor
@@ -1722,7 +1762,7 @@
*/
protected GuardedInvocation findGetMethod(final CallSiteDescriptor desc, final LinkRequest request, final String operator) {
final String name = desc.getNameToken(CallSiteDescriptor.NAME_OPERAND);
- if (request.isCallSiteUnstable()) {
+ if (request.isCallSiteUnstable() || hasWithScope()) {
return findMegaMorphicGetMethod(desc, name, "getMethod".equals(operator));
}
@@ -1748,22 +1788,24 @@
final Property property = find.getProperty();
methodHandle = find.getGetter(returnType);
+ final boolean noGuard = ObjectClassGenerator.OBJECT_FIELDS_ONLY && NashornCallSiteDescriptor.isFastScope(desc) && !property.canChangeType();
// getMap() is fine as we have the prototype switchpoint depending on where the property was found
- final MethodHandle guard = NashornGuards.getMapGuard(getMap());
+ final MethodHandle guard = noGuard ? null : NashornGuards.getMapGuard(getMap());
if (methodHandle != null) {
assert methodHandle.type().returnType().equals(returnType);
if (find.isSelf()) {
- return new GuardedInvocation(methodHandle, ObjectClassGenerator.OBJECT_FIELDS_ONLY &&
- NashornCallSiteDescriptor.isFastScope(desc) && !property.canChangeType() ? null : guard);
+ return new GuardedInvocation(methodHandle, guard);
}
- final ScriptObject prototype = find.getOwner();
-
- if (!property.hasGetterFunction(prototype)) {
- methodHandle = bindTo(methodHandle, prototype);
+ if (!property.hasGetterFunction(find.getOwner())) {
+ // If not a scope bind to actual prototype as changing prototype will change the property map.
+ // For scopes we install a filter that replaces the self object with the prototype owning the property.
+ methodHandle = isScope() ?
+ addProtoFilter(methodHandle, find.getProtoChainLength()) :
+ bindTo(methodHandle, find.getOwner());
}
- return new GuardedInvocation(methodHandle, getMap().getProtoGetSwitchPoint(proto, name), guard);
+ return new GuardedInvocation(methodHandle, noGuard ? null : getMap().getProtoGetSwitchPoint(proto, name), guard);
}
assert !NashornCallSiteDescriptor.isFastScope(desc);
@@ -1833,7 +1875,7 @@
*/
protected GuardedInvocation findSetMethod(final CallSiteDescriptor desc, final LinkRequest request) {
final String name = desc.getNameToken(CallSiteDescriptor.NAME_OPERAND);
- if (request.isCallSiteUnstable()) {
+ if (request.isCallSiteUnstable() || hasWithScope()) {
return findMegaMorphicSetMethod(desc, name);
}
@@ -1888,7 +1930,9 @@
final ScriptObject obj = (ScriptObject)self;
final boolean isStrict = NashornCallSiteDescriptor.isStrict(desc);
if (!obj.isExtensible()) {
- throw typeError("object.non.extensible", desc.getNameToken(2), ScriptRuntime.safeToString(obj));
+ if (isStrict) {
+ throw typeError("object.non.extensible", desc.getNameToken(2), ScriptRuntime.safeToString(obj));
+ }
} else if (obj.compareAndSetMap(oldMap, newMap)) {
setter.invokeExact(self, value);
} else {
@@ -2049,12 +2093,13 @@
return createEmptyGetter(desc, name);
}
+
/**
* Invoke fall back if a property is not found.
* @param name Name of property.
* @return Result from call.
*/
- private Object invokeNoSuchProperty(final String name) {
+ protected Object invokeNoSuchProperty(final String name) {
final FindProperty find = findProperty(NO_SUCH_PROPERTY_NAME, true);
if (find != null) {
@@ -2759,7 +2804,8 @@
public final void setObject(final FindProperty find, final boolean strict, final String key, final Object value) {
FindProperty f = find;
- if (f != null && f.isInherited() && !(f.getProperty() instanceof UserAccessorProperty)) {
+ if (f != null && f.isInherited() && !(f.getProperty() instanceof UserAccessorProperty) && !isScope()) {
+ // Setting a property should not modify the property in prototype unless this is a scope object.
f = null;
}
--- a/nashorn/src/jdk/nashorn/internal/runtime/SetMethodCreator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/SetMethodCreator.java Tue Jan 28 11:21:43 2014 -0800
@@ -151,10 +151,12 @@
assert methodHandle != null;
assert property != null;
- final ScriptObject prototype = find.getOwner();
final MethodHandle boundHandle;
- if (!property.hasSetterFunction(prototype) && find.isInherited()) {
- boundHandle = ScriptObject.bindTo(methodHandle, prototype);
+ if (!property.hasSetterFunction(find.getOwner()) && find.isInherited()) {
+ // Bind or add prototype filter depending on whether this is a scope object.
+ boundHandle = sobj.isScope() ?
+ ScriptObject.addProtoFilter(methodHandle, find.getProtoChainLength()):
+ ScriptObject.bindTo(methodHandle, find.getOwner());
} else {
boundHandle = methodHandle;
}
--- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java Tue Jan 28 11:21:43 2014 -0800
@@ -317,7 +317,7 @@
final InstructionAdapter mv = new InstructionAdapter(cw.visitMethod(ACC_STATIC, CLASS_INIT,
Type.getMethodDescriptor(Type.VOID_TYPE), null, null));
- mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getClassOverrides", GET_CLASS_INITIALIZER_DESCRIPTOR);
+ mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getClassOverrides", GET_CLASS_INITIALIZER_DESCRIPTOR, false);
final Label initGlobal;
if(samName != null) {
// If the class is a SAM, allow having a ScriptFunction passed as class overrides
@@ -333,7 +333,7 @@
if(mi.getName().equals(samName)) {
mv.dup();
mv.aconst(Type.getMethodType(mi.type.toMethodDescriptorString()));
- mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", GET_HANDLE_FUNCTION_DESCRIPTOR);
+ mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", GET_HANDLE_FUNCTION_DESCRIPTOR, false);
} else {
mv.visitInsn(ACONST_NULL);
}
@@ -350,7 +350,7 @@
mv.dup();
mv.aconst(mi.getName());
mv.aconst(Type.getMethodType(mi.type.toMethodDescriptorString()));
- mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", GET_HANDLE_OBJECT_DESCRIPTOR);
+ mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", GET_HANDLE_OBJECT_DESCRIPTOR, false);
mv.putstatic(generatedClassName, mi.methodHandleClassFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR);
}
@@ -367,7 +367,7 @@
private static void invokeGetGlobalWithNullCheck(final InstructionAdapter mv) {
invokeGetGlobal(mv);
mv.dup();
- mv.invokevirtual(OBJECT_TYPE_NAME, "getClass", GET_CLASS_METHOD_DESCRIPTOR); // check against null Context
+ mv.invokevirtual(OBJECT_TYPE_NAME, "getClass", GET_CLASS_METHOD_DESCRIPTOR, false); // check against null Context
mv.pop();
}
@@ -424,7 +424,7 @@
mv.load(offset, argType);
offset += argType.getSize();
}
- mv.invokespecial(superClassName, INIT, originalCtorType.getDescriptor());
+ mv.invokespecial(superClassName, INIT, originalCtorType.getDescriptor(), false);
endInitMethod(mv);
}
@@ -477,7 +477,7 @@
mv.load(offset, argType);
offset += argType.getSize();
}
- mv.invokespecial(superClassName, INIT, originalCtorType.getDescriptor());
+ mv.invokespecial(superClassName, INIT, originalCtorType.getDescriptor(), false);
// Get a descriptor to the appropriate "JavaAdapterFactory.getHandle" method.
final String getHandleDescriptor = fromFunction ? GET_HANDLE_FUNCTION_DESCRIPTOR : GET_HANDLE_OBJECT_DESCRIPTOR;
@@ -496,7 +496,7 @@
mv.aconst(mi.getName());
}
mv.aconst(Type.getMethodType(mi.type.toMethodDescriptorString()));
- mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", getHandleDescriptor);
+ mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", getHandleDescriptor, false);
}
mv.putfield(generatedClassName, mi.methodHandleInstanceFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR);
}
@@ -520,11 +520,11 @@
}
private static void invokeGetGlobal(final InstructionAdapter mv) {
- mv.invokestatic(CONTEXT_TYPE_NAME, "getGlobal", GET_GLOBAL_METHOD_DESCRIPTOR);
+ mv.invokestatic(CONTEXT_TYPE_NAME, "getGlobal", GET_GLOBAL_METHOD_DESCRIPTOR, false);
}
private static void invokeSetGlobal(final InstructionAdapter mv) {
- mv.invokestatic(CONTEXT_TYPE_NAME, "setGlobal", SET_GLOBAL_METHOD_DESCRIPTOR);
+ mv.invokestatic(CONTEXT_TYPE_NAME, "setGlobal", SET_GLOBAL_METHOD_DESCRIPTOR, false);
}
/**
@@ -647,11 +647,11 @@
// If the super method is abstract, throw an exception
mv.anew(UNSUPPORTED_OPERATION_TYPE);
mv.dup();
- mv.invokespecial(UNSUPPORTED_OPERATION_TYPE_NAME, INIT, VOID_NOARG_METHOD_DESCRIPTOR);
+ mv.invokespecial(UNSUPPORTED_OPERATION_TYPE_NAME, INIT, VOID_NOARG_METHOD_DESCRIPTOR, false);
mv.athrow();
} else {
// If the super method is not abstract, delegate to it.
- emitSuperCall(mv, name, methodDesc);
+ emitSuperCall(mv, method.getDeclaringClass(), name, methodDesc);
}
final Label setupGlobal = new Label();
@@ -728,7 +728,7 @@
// Invoke the target method handle
final Label tryBlockStart = new Label();
mv.visitLabel(tryBlockStart);
- mv.invokevirtual(METHOD_HANDLE_TYPE.getInternalName(), "invokeExact", type.toMethodDescriptorString());
+ mv.invokevirtual(METHOD_HANDLE_TYPE.getInternalName(), "invokeExact", type.toMethodDescriptorString(), false);
final Label tryBlockEnd = new Label();
mv.visitLabel(tryBlockEnd);
emitFinally(mv, currentGlobalVar, globalsDifferVar);
@@ -744,7 +744,7 @@
mv.anew(RUNTIME_EXCEPTION_TYPE);
mv.dupX1();
mv.swap();
- mv.invokespecial(RUNTIME_EXCEPTION_TYPE_NAME, INIT, Type.getMethodDescriptor(Type.VOID_TYPE, THROWABLE_TYPE));
+ mv.invokespecial(RUNTIME_EXCEPTION_TYPE_NAME, INIT, Type.getMethodDescriptor(Type.VOID_TYPE, THROWABLE_TYPE), false);
// Fall through to rethrow handler
} else {
throwableHandler = null;
@@ -830,12 +830,12 @@
SUPER_PREFIX + name, methodDesc, null, getExceptionNames(method.getExceptionTypes())));
mv.visitCode();
- emitSuperCall(mv, name, methodDesc);
+ emitSuperCall(mv, method.getDeclaringClass(), name, methodDesc);
endMethod(mv);
}
- private void emitSuperCall(final InstructionAdapter mv, final String name, final String methodDesc) {
+ private void emitSuperCall(final InstructionAdapter mv, final Class owner, final String name, final String methodDesc) {
mv.visitVarInsn(ALOAD, 0);
int nextParam = 1;
final Type methodType = Type.getMethodType(methodDesc);
@@ -843,7 +843,13 @@
mv.load(nextParam, t);
nextParam += t.getSize();
}
- mv.invokespecial(superClassName, name, methodDesc);
+
+ // default method - non-abstract, interface method
+ if (Modifier.isInterface(owner.getModifiers())) {
+ mv.invokespecial(Type.getInternalName(owner), name, methodDesc, false);
+ } else {
+ mv.invokespecial(superClassName, name, methodDesc, false);
+ }
mv.areturn(methodType.getReturnType());
}
--- a/nashorn/src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java Tue Jan 28 11:21:43 2014 -0800
@@ -75,7 +75,8 @@
if ((self instanceof Class) && Modifier.isPublic(((Class<?>)self).getModifiers())) {
final CallSiteDescriptor desc = requestWithoutContext.getCallSiteDescriptor();
if(CallSiteDescriptorFactory.tokenizeOperators(desc).contains("getProp")) {
- if ("static".equals(desc.getNameToken(CallSiteDescriptor.NAME_OPERAND))) {
+ if (desc.getNameTokenCount() > CallSiteDescriptor.NAME_OPERAND &&
+ "static".equals(desc.getNameToken(CallSiteDescriptor.NAME_OPERAND))) {
if (Context.isAccessibleClass((Class<?>)self) && !isReflectionClass((Class<?>)self)) {
// If "getProp:static" passes access checks, allow access.
return;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8010731.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8010731: Nashorn exposes internal symbols such as __callee__, __scope__ to scripts
+ *
+ * @test
+ * @run
+ */
+
+function checkCallee() {
+ var x = arguments[0]; // force __callee__ (renamed as :callee)
+
+ print(__callee__);
+}
+
+try {
+ checkCallee();
+ fail("Should have thrown ReferenceError for __callee__");
+} catch (e) {
+ if (! (e instanceof ReferenceError)) {
+ fail("ReferenceError expected, got " + e);
+ }
+}
+
+function checkScope() {
+ var x = 334;
+
+ function inner() {
+ var y = x * x; // force __scope__ (renamed as :scope")
+ print(__scope__);
+ }
+
+ inner();
+}
+
+try {
+ checkScope();
+ fail("Should have thrown ReferenceError for __scope__");
+} catch (e) {
+ if (! (e instanceof ReferenceError)) {
+ fail("ReferenceError expected, got " + e);
+ }
+}
--- a/nashorn/test/script/basic/JDK-8025515.js Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/script/basic/JDK-8025515.js Tue Jan 28 11:21:43 2014 -0800
@@ -30,13 +30,23 @@
// Make sure synthetic names of anonymous functions have correct line numbers
+function getFirstScriptFrame(stack) {
+ for (frameNum in stack) {
+ var frame = stack[frameNum];
+ if (frame.className.startsWith("jdk.nashorn.internal.scripts.Script$")) {
+ return frame;
+ }
+ }
+}
+
function testMethodName(f, expected) {
try {
f();
fail("expected error");
} catch (e) {
- var stack = e.getStackTrace();
- if (stack[0].methodName !== expected) {
+ var stack = e.nashornException.getStackTrace();
+ var name = getFirstScriptFrame(stack).methodName;
+ if (name !== expected) {
fail("got " + stack[0].methodName + ", expected " + expected);
}
}
@@ -44,15 +54,15 @@
testMethodName(function() {
return a.b.c;
-}, "_L45");
+}, "L:55");
-testMethodName(function() { throw new Error() }, "_L49");
+testMethodName(function() { throw new Error() }, "L:59");
var f = (function() {
return function() { a.b.c; };
})();
-testMethodName(f, "_L51$_L52");
+testMethodName(f, "L:61$L:62");
testMethodName((function() {
return function() { return a.b.c; };
-})(), "_L56$_L57");
+})(), "L:66$L:67");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8029364.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8029364: NashornException to expose thrown object
+ *
+ * @test
+ * @run
+ */
+
+var m = new javax.script.ScriptEngineManager();
+var e = m.getEngineByName("nashorn");
+var g = e.eval("this");
+try {
+ e.eval("var e = new Error('foo'); e.bar = 33; throw e");
+} catch (se) {
+ // ScriptException instance's cause is a NashornException
+ print(se.getClass());
+ var cause = se.cause;
+ print(cause.getClass());
+ // NashornException instance has 'ecmaError' bean getter
+ print(cause.ecmaError);
+ // access to underlying ECMA Error object
+ print(cause.ecmaError instanceof g.Error);
+ print(cause.ecmaError.name);
+ print(cause.ecmaError.message);
+ print(cause.ecmaError.bar);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8029364.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,7 @@
+class javax.script.ScriptException
+class jdk.nashorn.internal.runtime.ECMAException
+Error: foo
+true
+Error
+foo
+33
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8029467.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8029467: Widening of booleans causes bad results
+ *
+ * @test
+ * @run
+ */
+
+print((function (x) { return x ? true : 0 })(true))
+print((function (x) { if(x) { return true } else { return 0 } })(true))
+print(typeof (function (x) { return x ? 1 : "123" })(true) === "number")
+print(typeof (function (x) { if(x) { return 1 } else { return "123" } })(true) === "number")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8029467.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+true
+true
+true
+true
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8029667.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8029667: Prototype linking is incorrect
+ *
+ * @test
+ * @run
+ */
+
+function f(x) {
+ return (function inner() {
+ var y; (function dummy() { return y })() // force own scope for the inner function
+ with({}) { // 'with' block turns off fast scopes
+ return x
+ }
+ })();
+}
+print(f(1));
+print(f(2));
+
+function g(x) {
+ (function inner() {
+ var y; (function dummy() { return y })() // force own scope for the inner function
+ with({}) { // 'with' block turns off fast scopes
+ // Test setter as well as getter
+ x = x + 2;
+ }
+ })();
+ print(x);
+}
+
+g(1);
+g(2);
+
+var withScopes = [{ func: function() { print("called 1");} }, { func: function() { print("called 2");} }];
+
+for(var i in withScopes) {
+ with (withScopes[i]) {
+ var main = function() {
+ var frame; // <---- this local variable caused scope to be not set properly prior to fix
+
+ function callFunc() {
+ frame = func();
+ }
+
+ callFunc();
+ }
+ }
+ main();
+}
+
+for(var i in withScopes) {
+ with (withScopes[i]) {
+ var main = function() {
+ var frame; // <---- this local variable caused scope to be not set properly prior to fix
+
+ function callFunc() {
+ frame = func = i;
+ }
+
+ callFunc();
+ }
+ }
+ main();
+}
+
+print(withScopes[0].func);
+print(withScopes[1].func);
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8029667.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+called 1
+called 2
+0
+1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8030182.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8030182: scopeCall with -1 as line number
+ *
+ * @test
+ * @run
+ */
+
+function func() {
+ throw new Error("Strange...");
+}
+
+var f2 = func;
+var f3 = func;
+var f4 = func;
+var f5 = func;
+
+// check that "scopeCall" or some such internal method
+// does not appear in script stack trace.
+try {
+ func();
+} catch(err) {
+ print(err.stack.replace(/\\/g, '/'));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8030182.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,3 @@
+Error: Strange...
+ at func (test/script/basic/JDK-8030182.js:32)
+ at <program> (test/script/basic/JDK-8030182.js:43)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8030182_2.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8030182: scopeCall with -1 as line number
+ *
+ * @test
+ * @run
+ */
+
+var str = "";
+
+// large code to force splitting
+for (i = 0; i < 1000; ++i)
+ str +="o = new Object()\n";
+
+str +="g()";
+
+// check that "$split" or some such internal method
+// does not appear in script stack trace!!
+try {
+ eval(str);
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8030182_2.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,3 @@
+ReferenceError: "g" is not defined
+ at <program> (test/script/basic/JDK-8030182_2.js#42:4<eval>@0:-1)
+ at <program> (test/script/basic/JDK-8030182_2.js:42)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8030809.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8030809: Anonymous functions should not be shown with internal names in script stack trace
+ *
+ * @test
+ * @run
+ */
+
+function func() {
+ (function() {
+ throw new Error();
+ })();
+}
+
+try {
+ func();
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8030809.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+Error
+ at <anonymous> (test/script/basic/JDK-8030809.js:33)
+ at func (test/script/basic/JDK-8030809.js:32)
+ at <program> (test/script/basic/JDK-8030809.js:38)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031317.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2010, 2013, 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.
+ */
+
+/**
+ * JDK-8031317: SyntaxError when property setter has no parameter
+ *
+ * @test
+ * @run
+ */
+
+var obj = {
+ get toto() {
+ print("in getter for 'toto'");
+ },
+ set toto() {
+ print("in setter for 'toto'");
+ }
+}
+
+obj.toto;
+obj.toto = 344;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031317.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,2 @@
+in getter for 'toto'
+in setter for 'toto'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031359.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2010, 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.
+ */
+
+/**
+ * JDK-8031359: Invocable.getInterface() works incorrectly if interface has default methods
+ *
+ * @test
+ * @run
+ */
+
+var func = new java.util.function.Function() {
+ apply: function(arg) {
+ print("func called with " + arg);
+ return arg.toUpperCase();
+ }
+};
+
+// Function.andThen is a default method
+func.andThen(func)("hello");
+
+// Function.compose is another default method
+func.compose(new java.util.function.Function() {
+ apply: function(arg) {
+ print("compose called with " + arg);
+ return arg.charAt(0);
+ }
+})("hello");
+
+var func2 = new java.util.function.Function() {
+ apply: function(arg) {
+ print("I am func2: " + arg);
+ return arg;
+ },
+
+ andThen: function(func) {
+ print("This is my andThen!");
+ return func;
+ }
+};
+
+func2.apply("hello");
+func2.andThen(func);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031359.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,6 @@
+func called with hello
+func called with HELLO
+compose called with hello
+func called with h
+I am func2: hello
+This is my andThen!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031715.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+/**
+ * JDK-8031715: Indexed access to java package not working
+ * @test
+ * @run
+ */
+
+print(java["net"]);
+print(java["net"]["URL"]);
+print(java["net"].URL);
+print(java.net["URL"]);
+
+var is = "InputStream";
+var io = "io";
+
+print(java.io[is]);
+print(java[io]);
+print(java[io][is]);
+
+var ji = new JavaImporter(java.util, java.io);
+print(ji["InputStream"]);
+print(ji['Vector']);
+
+var hash = "Hashtable";
+var printStream = "PrintStream";
+print(ji[hash]);
+print(ji[printStream]);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031715.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,11 @@
+[JavaPackage java.net]
+[JavaClass java.net.URL]
+[JavaClass java.net.URL]
+[JavaClass java.net.URL]
+[JavaClass java.io.InputStream]
+[JavaPackage java.io]
+[JavaClass java.io.InputStream]
+[JavaClass java.io.InputStream]
+[JavaClass java.util.Vector]
+[JavaClass java.util.Hashtable]
+[JavaClass java.io.PrintStream]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031983.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+/**
+ * JDK-8031983: Error objects should capture stack at the constructor
+ *
+ * @test
+ * @run
+ */
+
+var e = new Error();
+print("hello");
+
+try {
+ throw e;
+} catch (e) {
+ print(e.lineNumber);
+ print(e.stack.replace(/\\/g, '/'));
+}
+
+Error.captureStackTrace(e);
+try {
+ throw e;
+} catch (e) {
+ print(e.lineNumber);
+ print(e.stack.replace(/\\/g, '/'));
+}
+
+var obj = {};
+Error.captureStackTrace(obj);
+try {
+ throw obj;
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8031983.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,9 @@
+hello
+35
+Error
+ at <program> (test/script/basic/JDK-8031983.js:31)
+43
+Error
+ at <program> (test/script/basic/JDK-8031983.js:41)
+[object Object]
+ at <program> (test/script/basic/JDK-8031983.js:50)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8032004.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+/**
+ * JDK-8032004: instance property "message" of Error objects should be non-enumerable
+ *
+ * @test
+ * @run
+ */
+
+function check(obj) {
+ if (obj.propertyIsEnumerable("message")) {
+ fail(obj.name + " object's message property is enumerable!");
+ }
+}
+
+check(new Error("test"));
+check(new EvalError("test"));
+check(new RangeError("test"));
+check(new ReferenceError("test"));
+check(new SyntaxError("test"));
+check(new TypeError("test"));
+check(new URIError("test"));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8032068.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+
+/**
+ * JDK-8032068: implement @sourceURL and #sourceURL directives.
+ *
+ * @test
+ * @run
+ */
+
+
+try {
+ Function("throw new Error();\n//# sourceURL=foo.js")();
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
+
+try {
+ eval("function g() { throw Error('x');\n } g();\n//# sourceURL=bar.js");
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
+
+// check @sourceURL for compatibility
+try {
+ Function("throw new Error();\n//@ sourceURL=foo2.js")();
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
+
+try {
+ eval("function g() { throw Error('x');\n } g();\n//@ sourceURL=bar2.js");
+} catch (e) {
+ print(e.stack.replace(/\\/g, '/'));
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8032068.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,14 @@
+Error
+ at <anonymous> (foo.js:2)
+ at <program> (test/script/basic/JDK-8032068.js:33)
+Error: x
+ at g (bar.js:1)
+ at <program> (bar.js:2)
+ at <program> (test/script/basic/JDK-8032068.js:39)
+Error
+ at <anonymous> (foo2.js:2)
+ at <program> (test/script/basic/JDK-8032068.js:46)
+Error: x
+ at g (bar2.js:1)
+ at <program> (bar2.js:2)
+ at <program> (test/script/basic/JDK-8032068.js:52)
--- a/nashorn/test/script/basic/NASHORN-111.js.EXPECTED Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/script/basic/NASHORN-111.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -1,1 +1,1 @@
-{"message":"type error"}
+{}
--- a/nashorn/test/script/basic/NASHORN-441.js.EXPECTED Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/script/basic/NASHORN-441.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -12,6 +12,6 @@
try 5
rethrow 5
finally 5
-Error: try 5 thrown in line 71
+Error: try 5 thrown in line 74
try 6
finally 6
--- a/nashorn/test/script/basic/compile-octane-splitter.js.EXPECTED Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/script/basic/compile-octane-splitter.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -1,13 +1,14 @@
-Compiled OK: box2d
-Compiled OK: code-load
-Compiled OK: crypto
-Compiled OK: deltablue
-Compiled OK: earley-boyer
-Compiled OK: gbemu
-Compiled OK: mandreel
-Compiled OK: navier-stokes
-Compiled OK: pdfjs
-Compiled OK: raytrace
-Compiled OK: regexp
-Compiled OK: richards
-Compiled OK: splay
+[box2d] Compiled OK
+[code-load] Compiled OK
+[crypto] Compiled OK
+[deltablue] Compiled OK
+[earley-boyer] Compiled OK
+[gbemu] Compiled OK
+[mandreel] Compiled OK
+[navier-stokes] Compiled OK
+[pdfjs] Compiled OK
+[raytrace] Compiled OK
+[regexp] Compiled OK
+[richards] Compiled OK
+[splay] Compiled OK
+[typescript] Compiled OK
--- a/nashorn/test/script/basic/compile-octane.js.EXPECTED Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/script/basic/compile-octane.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -1,13 +1,14 @@
-Compiled OK: box2d
-Compiled OK: code-load
-Compiled OK: crypto
-Compiled OK: deltablue
-Compiled OK: earley-boyer
-Compiled OK: gbemu
-Compiled OK: mandreel
-Compiled OK: navier-stokes
-Compiled OK: pdfjs
-Compiled OK: raytrace
-Compiled OK: regexp
-Compiled OK: richards
-Compiled OK: splay
+[box2d] Compiled OK
+[code-load] Compiled OK
+[crypto] Compiled OK
+[deltablue] Compiled OK
+[earley-boyer] Compiled OK
+[gbemu] Compiled OK
+[mandreel] Compiled OK
+[navier-stokes] Compiled OK
+[pdfjs] Compiled OK
+[raytrace] Compiled OK
+[regexp] Compiled OK
+[richards] Compiled OK
+[splay] Compiled OK
+[typescript] Compiled OK
--- a/nashorn/test/script/basic/run-octane.js Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/script/basic/run-octane.js Tue Jan 28 11:21:43 2014 -0800
@@ -26,19 +26,22 @@
*/
var tests = [
- {file:"box2d",suite:"Box2DBenchmark"},
- {file:"code-load",suite:"CodeLoad"},
- {file:"crypto",suite:"Crypto"},
- {file:"deltablue",suite:"DeltaBlue"},
- {file:"earley-boyer", suite:"EarleyBoyer"},
- {file:"gbemu", suite:"GameboyBenchmark"},
- {file:"mandreel", suite:"MandreelBenchmark"},
- {file:"navier-stokes", suite:"NavierStokes"},
- {file:"pdfjs", suite:"PdfJS"},
- {file:"raytrace", suite:"RayTrace"},
- {file:"regexp", suite:"RegExpSuite"},
- {file:"richards", suite:"Richards"},
- {file:"splay", suite:"Splay"}
+ {name:"box2d", files:["box2d.js"], suite:"Box2DBenchmark"},
+ {name:"code-load", files:["code-load.js"], suite:"CodeLoad"},
+ {name:"crypto", files:["crypto.js"], suite:"Crypto"},
+ {name:"deltablue", files:["deltablue.js"], suite:"DeltaBlue"},
+ {name:"earley-boyer", files:["earley-boyer.js"], suite:"EarleyBoyer"},
+ {name:"gbemu", files:["gbemu-part1.js", "gbemu-part2.js"], suite:"GameboyBenchmark"},
+ {name:"mandreel", files:["mandreel.js"], suite:"MandreelBenchmark"},
+ {name:"navier-stokes", files:["navier-stokes.js"], suite:"NavierStokes"},
+ {name:"pdfjs", files:["pdfjs.js"], suite:"PdfJS"},
+ {name:"raytrace", files:["raytrace.js"], suite:"RayTrace"},
+ {name:"regexp", files:["regexp.js"], suite:"RegExpSuite"},
+ {name:"richards", files:["richards.js"], suite:"Richards"},
+ {name:"splay", files:["splay.js"], suite:"Splay"},
+ {name:"typescript", files:["typescript.js", "typescript-input.js", "typescript-compiler.js"], suite:"typescript"}
+ //zlib currently disabled - requires read
+ // {name:"zlib", files:["zlib.js", "zlib-data.js"], suite:"zlib"},
];
var dir = (typeof(__DIR__) == 'undefined') ? "test/script/basic/" : __DIR__;
@@ -58,26 +61,36 @@
return (typeof compile_only !== 'undefined')
}
-function run_one_benchmark(arg, iters) {
- var file_name;
- var file = (arg.file + ".js").split('/');
+function load_bench(arg) {
+
+ for (var idx = 0; idx < arg.files.length; idx++) {
+ var f = arg.files[idx];
+ var file = f.split('/');
+ var file_name = path + file[file.length - 1];
- file_name = path + file[file.length - 1];
-
- var compile_and_return = should_compile_only(file_name);
+ var compile_and_return = should_compile_only(file_name);
+ if (compile_and_return) {
+ if (typeof compile_only === 'undefined') { //for a run, skip compile onlies, don't even compile them
+ return true;
+ }
+ }
+
+ print_verbose(arg, "loading '" + arg.name + "' [" + f + "]...");
+ load(file_name);
+ }
+
if (compile_and_return) {
- if (typeof compile_only === 'undefined') { //for a run, skip compile onlies, don't even compile them
- return;
- }
+ print_always(arg, "Compiled OK");
}
-
- print_verbose("Loading... " + file_name);
- load(file_name);
-
- if (compile_and_return) {
- print_always("Compiled OK: " + arg.file);
+ return !compile_and_return;
+
+}
+
+function run_one_benchmark(arg, iters) {
+
+ if (!load_bench(arg)) {
return;
- }
+ }
var success = true;
var current_name;
@@ -95,9 +108,13 @@
try {
for (var x = 0; x < benchmarks.length ; x++) {
+ //do warmup run
+ //reset random number generator needed as of octane 9 before each run
+ BenchmarkSuite.ResetRNG();
benchmarks[x].Setup();
}
- print_verbose("Running '" + arg.file + "' for " + iters + " iterations of no less than " + min_time + " seconds (" + runtime + ")");
+ BenchmarkSuite.ResetRNG();
+ print_verbose(arg, "running '" + arg.name + "' for " + iters + " iterations of no less than " + min_time + " seconds (" + runtime + ")");
var scores = [];
@@ -112,6 +129,9 @@
do {
for (var i = 0; i < len; i++) {
benchmarks[i].run();
+ //important - no timing here like elapsed = new Date() - start, as in the
+ //original harness. This will make timing very non-deterministic.
+ //NOTHING else must live in this loop
}
ops += len;
elapsed = new Date - start;
@@ -120,7 +140,7 @@
var score = ops / elapsed * 1000 * 60;
scores.push(score);
var name = it == 0 ? "warmup" : "iteration " + it;
- print_verbose("[" + arg.file + "] " + name + " finished " + score.toFixed(0) + " ops/minute");
+ print_verbose(arg, name + " finished " + score.toFixed(0) + " ops/minute");
}
for (var x = 0; x < benchmarks.length ; x++) {
@@ -140,20 +160,20 @@
scores = [0];
}
- var res = "[" + arg.file + "] " + mean_score.toFixed(0);
+ var res = mean_score.toFixed(0);
if (verbose) {
res += " ops/minute (" + min_score.toFixed(0) + "-" + max_score.toFixed(0) + "), warmup=" + scores[0].toFixed(0);
}
- print_always(res);
+ print_always(arg, res);
}
-function print_always(x) {
- print(x);
+function print_always(arg, x) {
+ print("[" + arg.name + "] " + x);
}
-function print_verbose(x) {
+function print_verbose(arg, x) {
if (verbose) {
- print(x);
+ print_always(arg, x)
}
}
@@ -209,7 +229,7 @@
} else {
var found = false;
for (j in tests) {
- if (tests[j].file === arg) {
+ if (tests[j].name === arg) {
tests_found.push(tests[j]);
found = true;
break;
@@ -221,7 +241,7 @@
if (j != 0) {
str += ", ";
}
- str += "'" + tests[j].file + "'";
+ str += "'" + tests[j].name + "'";
}
throw str;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+/**
+ * Base library for Showdown markdown engine Nashorn testing.
+ * @subtest
+ *
+ *
+ */
+
+load(__DIR__ + "external/showdown/showdown.js");
+var shdwn = Showdown;
+var window = {
+ Showdown: shdwn
+}
+load(__DIR__ + "external/showdown/table.js");
+var converter = new Showdown.converter({extensions: ['table']});
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/anchors-by-reference.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThis is [an example][id] reference-style link.\nThis is [another] [foo] reference-style link.\nThis is [a third][bar] reference-style link.\nThis is [a fourth][4] reference-style link.\n\n [id]: http://example.com/ \"Optional Title Here\"\n [foo]: http://example.com/ (Optional Title Here)\n [bar]: http://example.com/ (Optional Title Here)\n [4]: <http://example.com/>\n \"Optional Title Here\"";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/anchors-by-reference.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+<p>This is <a href="http://example.com/" title="Optional Title Here">an example</a> reference-style link.
+This is <a href="http://example.com/" title="Optional Title Here">another</a> reference-style link.
+This is <a href="http://example.com/" title="Optional Title Here">a third</a> reference-style link.
+This is <a href="http://example.com/" title="Optional Title Here">a fourth</a> reference-style link.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/automatic-anchors.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n<http://example.com/>";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/automatic-anchors.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<p><a href="http://example.com/">http://example.com/</a></p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/blockquote-nested-markdown.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "> ## This is a header.\n>\n> 1. This is the first list item.\n> 2. This is the second list item.\n>\n> Here's some example code:\n>\n> return shell_exec(\"echo $input | $markdown_script\");";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/blockquote-nested-markdown.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,13 @@
+<blockquote>
+ <h2 id="thisisaheader">This is a header.</h2>
+
+ <ol>
+ <li>This is the first list item.</li>
+ <li>This is the second list item.</li>
+ </ol>
+
+ <p>Here's some example code:</p>
+
+<pre><code>return shell_exec("echo $input | $markdown_script");
+</code></pre>
+</blockquote>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/blockquote.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = " \n > This is a multi line blockquote test\n >\n > With more than one line.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/blockquote.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<blockquote>
+ <p>This is a multi line blockquote test</p>
+
+ <p>With more than one line.</p>
+</blockquote>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/code-block-html-escape.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThis is some HTML:\n\n <h1>Heading</h1>";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/code-block-html-escape.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+<p>This is some HTML:</p>
+
+<pre><code><h1>Heading</h1>
+</code></pre>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/code-block.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThis is a normal paragraph:\n\n This is a code block.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/code-block.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+<p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/doubline-list.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n * Bird\n\n * Magic";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/doubline-list.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,4 @@
+<ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/emphasis.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n*important*\n\n_important_\n\nthis mid*important*sentence";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/emphasis.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<p><em>important</em></p>
+
+<p><em>important</em></p>
+
+<p>this mid<em>important</em>sentence</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/escaped-number-period.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "It happened in 1986\. What a great season.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/escaped-number-period.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<p>It happened in 1986. What a great season.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/escaping.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThese should all be escaped:\n\n\\\n\n\`\n\n\*\n\n\_\n\n\{\n\n\}\n\n\[\n\n\]\n\n\(\n\n\)\n\n\#\n\n\+\n\n\-\n\n\.\n\n\!";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/escaping.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,31 @@
+<p>These should all be escaped:</p>
+
+<p>\</p>
+
+<p>`</p>
+
+<p>*</p>
+
+<p>_</p>
+
+<p>{</p>
+
+<p>}</p>
+
+<p>[</p>
+
+<p>]</p>
+
+<p>(</p>
+
+<p>)</p>
+
+<p>#</p>
+
+<p>+</p>
+
+<p>-</p>
+
+<p>.</p>
+
+<p>!</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/github-style-at-start.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "```\nfunction MyFunc(a) {\n // ...\n}\n```\n\nThat is some code!";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/github-style-at-start.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,6 @@
+<pre><code>function MyFunc(a) {
+ // ...
+}
+</code></pre>
+
+<p>That is some code!</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/github-style-codeblock.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nDefine a function in javascript:\n\n```\nfunction MyFunc(a) {\n var s = '`';\n}\n```\n\nAnd some HTML\n\n```html\n<div>HTML!</div>\n```";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/github-style-codeblock.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,11 @@
+<p>Define a function in javascript:</p>
+
+<pre><code>function MyFunc(a) {
+ var s = '`';
+}
+</code></pre>
+
+<p>And some HTML</p>
+
+<pre><code class="html"><div>HTML!</div>
+</code></pre>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/github-style-linebreaks.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "```\ncode can go here\nthis is rendered on a second line\n```";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/github-style-linebreaks.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,3 @@
+<pre><code>code can go here
+this is rendered on a second line
+</code></pre>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h1-with-double-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "# This is an H1 #";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h1-with-double-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h1 id="thisisanh1">This is an H1</h1>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h1-with-equals.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "This is an H1\n=============";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h1-with-equals.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h1 id="thisisanh1">This is an H1</h1>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h1-with-single-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "# This is an H1";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h1-with-single-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h1 id="thisisanh1">This is an H1</h1>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h2-with-dashes.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "This is an H2\n-------------";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h2-with-dashes.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h2 id="thisisanh2">This is an H2</h2>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h2-with-double-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "## This is an H2 ##";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h2-with-double-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h2 id="thisisanh2">This is an H2</h2>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h2-with-single-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "## This is an H2";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h2-with-single-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h2 id="thisisanh2">This is an H2</h2>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h3-with-double-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "### This is an H3 ###";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h3-with-double-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h3 id="thisisanh3">This is an H3</h3>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h3-with-single-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "### This is an H3";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h3-with-single-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h3 id="thisisanh3">This is an H3</h3>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h4-with-single-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "#### This is an H4";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h4-with-single-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h4 id="thisisanh4">This is an H4</h4>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h5-with-single-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "##### This is an H5";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h5-with-single-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h5 id="thisisanh5">This is an H5</h5>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h6-with-single-hash.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "###### This is an H6";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/h6-with-single-hash.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<h6 id="thisisanh6">This is an H6</h6>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/horizontal-rules.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n* * *\n\n***\n\n*****\n\n- - -\n\n---------------------------------------\n";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/horizontal-rules.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,9 @@
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/html5-strutural-tags.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThese HTML5 tags should pass through just fine.\n\n<section>hello</section>\n<header>head</header>\n<footer>footsies</footer>\n<nav>navigation</nav>\n<article>read me</article>\n<aside>ignore me</aside>\n<article>read\nme</article>\n<aside>\nignore me\n</aside>\n\nthe end";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/html5-strutural-tags.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,22 @@
+<p>These HTML5 tags should pass through just fine.</p>
+
+<section>hello</section>
+
+<header>head</header>
+
+<footer>footsies</footer>
+
+<nav>navigation</nav>
+
+<article>read me</article>
+
+<aside>ignore me</aside>
+
+<article>read
+me</article>
+
+<aside>
+ignore me
+</aside>
+
+<p>the end</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/images.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n![Alt text](/path/to/img.jpg)\n\n![Alt text](/path/to/img.jpg \"Optional title\")\n\n![Alt text][id]\n\n [id]: url/to/image \"Optional title attribute\"";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/images.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<p><img src="/path/to/img.jpg" alt="Alt text" title="" /></p>
+
+<p><img src="/path/to/img.jpg" alt="Alt text" title="Optional title" /></p>
+
+<p><img src="url/to/image" alt="Alt text" title="Optional title attribute" /></p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/implicit-anchors.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nSearch the web at [Google][] or [Daring Fireball][].\n\n [Google]: http://google.com/\n [Daring Fireball]: http://daringfireball.net/";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/implicit-anchors.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<p>Search the web at <a href="http://google.com/">Google</a> or <a href="http://daringfireball.net/">Daring Fireball</a>.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/inline-anchors.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThis is [an example](http://example.com/ \"Title\") inline link.\n\n[This link](http://example.net/) has no title attribute.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/inline-anchors.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,3 @@
+<p>This is <a href="http://example.com/" title="Title">an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no title attribute.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/inline-code.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nCreate a new `function`.\n\nUse the backtick in MySQL syntax ``SELECT `column` FROM whatever``.\n\nA single backtick in a code span: `` ` ``\n\nA backtick-delimited string in a code span: `` `foo` ``\n\nPlease don't use any `<blink>` tags.\n\n`—` is the decimal-encoded equivalent of `—`.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/inline-code.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,11 @@
+<p>Create a new <code>function</code>.</p>
+
+<p>Use the backtick in MySQL syntax <code>SELECT `column` FROM whatever</code>.</p>
+
+<p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+<p>Please don't use any <code><blink></code> tags.</p>
+
+<p><code>&#8212;</code> is the decimal-encoded equivalent of <code>&mdash;</code>.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/inline-style-tag.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n<style>\n p { line-height: 20px; }\n</style>\n\nAn exciting sentence.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/inline-style-tag.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<style>
+ p { line-height: 20px; }
+</style>
+
+<p>An exciting sentence.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/lazy-blockquote.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n > This is a multi line blockquote test\n\n > With more than one line.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/lazy-blockquote.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<blockquote>
+ <p>This is a multi line blockquote test</p>
+
+ <p>With more than one line.</p>
+</blockquote>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/list-with-blockquote.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "* A list item with a blockquote:\n\n > This is a blockquote\n > inside a list item.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/list-with-blockquote.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,8 @@
+<ul>
+<li><p>A list item with a blockquote:</p>
+
+<blockquote>
+ <p>This is a blockquote
+ inside a list item.</p>
+</blockquote></li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/list-with-code.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "* A list item with code:\n\n alert('Hello world!');";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/list-with-code.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,6 @@
+<ul>
+<li><p>A list item with code:</p>
+
+<pre><code>alert('Hello world!');
+</code></pre></li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/multi-paragraph-list.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n 1. This is a major bullet point.\n\n That contains multiple paragraphs.\n\n 2. And another line";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/multi-paragraph-list.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,6 @@
+<ol>
+<li><p>This is a major bullet point.</p>
+
+<p>That contains multiple paragraphs.</p></li>
+<li><p>And another line</p></li>
+</ol>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/multiline-unordered-list.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n - This line spans\n more than one line and is lazy\n - Similar to this line";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/multiline-unordered-list.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ul>
+<li>This line spans
+more than one line and is lazy</li>
+<li>Similar to this line</li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/nested-blockquote.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n > This is a multi line blockquote test\n >\n > > And nesting!\n >\n > With more than one line.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/nested-blockquote.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,9 @@
+<blockquote>
+ <p>This is a multi line blockquote test</p>
+
+ <blockquote>
+ <p>And nesting!</p>
+ </blockquote>
+
+ <p>With more than one line.</p>
+</blockquote>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/ordered-list-same-number.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n 1. Red\n 1. Green\n 1. Blue";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/ordered-list-same-number.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ol>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ol>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/ordered-list-wrong-numbers.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n 8. Red\n 1. Green\n 3. Blue";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/ordered-list-wrong-numbers.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ol>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ol>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/ordered-list.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n 1. Red\n 2. Green\n 3. Blue";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/ordered-list.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ol>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ol>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/relative-anchors.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nSee my [About](/about/) page for details.";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/relative-anchors.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<p>See my <a href="/about/">About</a> page for details.</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/simple-paragraph.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nHello, world!";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/simple-paragraph.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<p>Hello, world!</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/strong.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n**important**\n\n__important__\n\nreally **freaking**strong";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/strong.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<p><strong>important</strong></p>
+
+<p><strong>important</strong></p>
+
+<p>really <strong>freaking</strong>strong</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/table-basic.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "| First Header | Second Header |\n| ------------- | ------------- |\n| Row 1 Cell 1 | Row 1 Cell 2 |\n| Row 2 Cell 1 | Row 2 Cell 2 |\n";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/table-basic.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,21 @@
+<table>
+<thead>
+<tr>
+<th id="first_header" style="text-align:left;"> First Header </th>
+<th id="second_header" style="text-align:left;"> Second Header </th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td style="text-align:left;"><p>Row 1 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 1 Cell 2 </p></td>
+</tr>
+
+<tr>
+<td style="text-align:left;"><p>Row 2 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 2 Cell 2 </p></td>
+</tr>
+
+</tbody>
+</table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/table-large.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "| First Header | Second Header | Third Header | Fourth Header |\n| ------------- | ------------- | ------------ | ------------- |\n| Row 1 Cell 1 | Row 1 Cell 2 | Row 1 Cell 3 | Row 1 Cell 4 |\n| Row 2 Cell 1 | Row 2 Cell 2 | Row 2 Cell 3 | Row 2 Cell 4 |\n| Row 3 Cell 1 | Row 3 Cell 2 | Row 3 Cell 3 | Row 3 Cell 4 |\n| Row 4 Cell 1 | Row 4 Cell 2 | Row 4 Cell 3 | Row 4 Cell 4 |\n| Row 5 Cell 1 | Row 5 Cell 2 | Row 5 Cell 3 | Row 5 Cell 4 |\n";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/table-large.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,48 @@
+<table>
+<thead>
+<tr>
+<th id="first_header" style="text-align:left;"> First Header </th>
+<th id="second_header" style="text-align:left;"> Second Header </th>
+<th id="third_header" style="text-align:left;"> Third Header </th>
+<th id="fourth_header" style="text-align:left;"> Fourth Header </th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td style="text-align:left;"><p>Row 1 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 1 Cell 2 </p></td>
+<td style="text-align:left;"><p>Row 1 Cell 3 </p></td>
+<td style="text-align:left;"><p>Row 1 Cell 4 </p></td>
+</tr>
+
+<tr>
+<td style="text-align:left;"><p>Row 2 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 2 Cell 2 </p></td>
+<td style="text-align:left;"><p>Row 2 Cell 3 </p></td>
+<td style="text-align:left;"><p>Row 2 Cell 4 </p></td>
+</tr>
+
+<tr>
+<td style="text-align:left;"><p>Row 3 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 3 Cell 2 </p></td>
+<td style="text-align:left;"><p>Row 3 Cell 3 </p></td>
+<td style="text-align:left;"><p>Row 3 Cell 4 </p></td>
+</tr>
+
+<tr>
+<td style="text-align:left;"><p>Row 4 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 4 Cell 2 </p></td>
+<td style="text-align:left;"><p>Row 4 Cell 3 </p></td>
+<td style="text-align:left;"><p>Row 4 Cell 4 </p></td>
+</tr>
+
+<tr>
+<td style="text-align:left;"><p>Row 5 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 5 Cell 2 </p></td>
+<td style="text-align:left;"><p>Row 5 Cell 3 </p></td>
+<td style="text-align:left;"><p>Row 5 Cell 4 </p></td>
+</tr>
+
+</tbody>
+</table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/table-with-equals.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "| First Header | Second Header |\n| ============= | ============= |\n| Row 1 Cell 1 | Row 1 Cell 2 |\n| Row 2 Cell 1 | Row 2 Cell 2 |\n";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/table-with-equals.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,21 @@
+<table>
+<thead>
+<tr>
+<th id="first_header" style="text-align:left;"> First Header </th>
+<th id="second_header" style="text-align:left;"> Second Header </th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td style="text-align:left;"><p>Row 1 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 1 Cell 2 </p></td>
+</tr>
+
+<tr>
+<td style="text-align:left;"><p>Row 2 Cell 1 </p></td>
+<td style="text-align:left;"><p>Row 2 Cell 2 </p></td>
+</tr>
+
+</tbody>
+</table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/unordered-list-asterisk.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n * Red\n * Green\n * Blue";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/unordered-list-asterisk.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ul>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/unordered-list-minus.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n - Red\n - Green\n - Blue";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/unordered-list-minus.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ul>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/unordered-list-plus.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\n + Red\n + Green\n + Blue";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/unordered-list-plus.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,5 @@
+<ul>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/url-with-parenthesis.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2010, 2013, 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 for Showdown markdown parser work with Nashorn.
+ *
+ * @test
+ * @run
+ */
+
+var input = "\nThere's an [episode](http://en.memory-alpha.org/wiki/Darmok_(episode)) of Star Trek: The Next Generation";
+var output = converter.makeHtml(input);
+print(output);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/markdown/url-with-parenthesis.js.EXPECTED Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,1 @@
+<p>There's an <a href="http://en.memory-alpha.org/wiki/Darmok_(episode)">episode</a> of Star Trek: The Next Generation</p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/sandbox/JDK-8031106.js Tue Jan 28 11:21:43 2014 -0800
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2010, 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.
+ */
+
+/**
+ * JDK-8031106: Nashorn: IndexOutOfBoundsException in NashornCallSiteDescriptor.getNameToken()
+ *
+ * @test
+ * @run
+ */
+
+var cl = new java.lang.Object().getClass();
+try {
+ cl["forName"];
+ fail("Should have thrown exception!");
+} catch (e) {
+ if (! (e instanceof java.lang.SecurityException)) {
+ fail("SecurityException expected, got " + e);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/trusted/JDK-8032060.js Tue Jan 28 11:21:43 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.
+ */
+
+/**
+ * JDK-8032060: PropertyMap of Error objects is not stable
+ *
+ * @test
+ * @option -Dnashorn.debug=true
+ * @fork
+ * @run
+ */
+
+function checkMap(e1, e2) {
+ if (! Debug.identical(Debug.map(e1), Debug.map(e2))) {
+ fail("e1 and e2 have different maps");
+ }
+
+ var m1, m2;
+
+ try {
+ throw e1
+ } catch (e) {
+ m1 = Debug.map(e)
+ }
+
+ try {
+ throw e2
+ } catch (e) {
+ m2 = Debug.map(e)
+ }
+
+ if (! Debug.identical(m1, m2)) {
+ fail("e1 and e2 have different maps after being thrown");
+ }
+}
+
+checkMap(new Error(), new Error());
+checkMap(new EvalError(), new EvalError());
+checkMap(new RangeError(), new RangeError());
+checkMap(new ReferenceError(), new ReferenceError());
+checkMap(new SyntaxError(), new SyntaxError());
+checkMap(new TypeError(), new TypeError());
+checkMap(new URIError(), new URIError());
+
+// now try with message param
+checkMap(new Error("x"), new Error("y"));
+checkMap(new EvalError("x"), new EvalError("y"));
+checkMap(new RangeError("x"), new RangeError("y"));
+checkMap(new ReferenceError("x"), new ReferenceError("y"));
+checkMap(new SyntaxError("x"), new SyntaxError("y"));
+checkMap(new TypeError("x"), new TypeError("y"));
+checkMap(new URIError("x"), new URIError("y"));
--- a/nashorn/test/src/jdk/nashorn/api/scripting/InvocableTest.java Thu Jan 23 10:35:38 2014 -0800
+++ b/nashorn/test/src/jdk/nashorn/api/scripting/InvocableTest.java Tue Jan 28 11:21:43 2014 -0800
@@ -26,6 +26,7 @@
package jdk.nashorn.api.scripting;
import java.util.Objects;
+import java.util.function.Function;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
@@ -522,4 +523,16 @@
Assert.assertEquals(itf.test1(42, "a", "b"), "i == 42, strings instanceof java.lang.String[] == true, strings == [a, b]");
Assert.assertEquals(itf.test2(44, "c", "d", "e"), "arguments[0] == 44, arguments[1] instanceof java.lang.String[] == true, arguments[1] == [c, d, e]");
}
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void defaultMethodTest() throws ScriptException {
+ final ScriptEngineManager m = new ScriptEngineManager();
+ final ScriptEngine e = m.getEngineByName("nashorn");
+ final Invocable inv = (Invocable) e;
+
+ Object obj = e.eval("({ apply: function(arg) { return arg.toUpperCase(); }})");
+ Function<String, String> func = inv.getInterface(obj, Function.class);
+ assertEquals(func.apply("hello"), "HELLO");
+ }
}