[114776] users/landonf/openjdk7/dports/java/openjdk7

landonf at macports.org landonf at macports.org
Sat Dec 14 19:02:45 PST 2013


Revision: 114776
          https://trac.macports.org/changeset/114776
Author:   landonf at macports.org
Date:     2013-12-14 19:02:45 -0800 (Sat, 14 Dec 2013)
Log Message:
-----------
Add the patch-jdk7u45-b18 patch set, enable loading of libraries from $prefix by default.

Modified Paths:
--------------
    users/landonf/openjdk7/dports/java/openjdk7/Portfile

Added Paths:
-----------
    users/landonf/openjdk7/dports/java/openjdk7/files/create-patchset.sh
    users/landonf/openjdk7/dports/java/openjdk7/files/patch-jdk7u45-b18
    users/landonf/openjdk7/dports/java/openjdk7/files/patch-src-os-bsd-vm-os_bsd.cpp

Modified: users/landonf/openjdk7/dports/java/openjdk7/Portfile
===================================================================
--- users/landonf/openjdk7/dports/java/openjdk7/Portfile	2013-12-15 01:37:21 UTC (rev 114775)
+++ users/landonf/openjdk7/dports/java/openjdk7/Portfile	2013-12-15 03:02:45 UTC (rev 114776)
@@ -5,14 +5,18 @@
 
 name                openjdk7
 
+# Actual port patchset version
 set jport_minor_version 45
 set jport_build_number  18
 set jdk_major_version   7
+
+# Source drop version
 set jdk_minor_version   40
 set jdk_build_number    43
 set jdk_build_date      26_aug_2013
+
 version             ${jdk_major_version}.${jport_minor_version}.${jport_build_number}
-revision            2
+revision            3
 
 categories          java
 maintainers         landonf openmaintainer
@@ -55,8 +59,10 @@
 checksums           ${distname}${extract.suffix} sha256  00f8ea561876cbcad174ba3ca7a9ae10b50df46a782ac64c2ac57ac357b50596 \
                     \
                     ${ant_distfile}${extract.suffix} sha256 d49d60bc0468279125e4a0db4d9b6637cab342a4bd736c90c0b71865b26c1479
-    
 
+patchfiles          patch-jdk7u45-b18 \
+                    patch-src-os-bsd-vm-os_bsd.cpp
+
 use_configure       no
 use_parallel_build  no
 
@@ -96,6 +102,9 @@
 worksrcdir          "openjdk"
 
 post-patch {
+    # Allow loading of extensions and libraries from $prefix
+    reinplace "s|@@PREFIX@@|${prefix}|g" "${worksrcpath}/hotspot/src/os/bsd/vm/os_bsd.cpp"
+
     # The jobjc build system includes hard-coded references to /usr/bin/ant; Java build tools (such as ant)
     # are no longer shipped with Xcode 5.0+ on Mavericks.
     reinplace "s|/usr/bin/ant|${workpath}/apache-ant-${ant_version}/bin/ant|g" \

Added: users/landonf/openjdk7/dports/java/openjdk7/files/create-patchset.sh
===================================================================
--- users/landonf/openjdk7/dports/java/openjdk7/files/create-patchset.sh	                        (rev 0)
+++ users/landonf/openjdk7/dports/java/openjdk7/files/create-patchset.sh	2013-12-15 03:02:45 UTC (rev 114776)
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Given two tags, creates a full OpenJDK patchset from the
+# upstream source repository. 
+
+# OpenJDK does not provide a source drop corresponding to every
+# official OpenJDK release. This script can be used to generate
+# patchsets between the last source drop and the current JDK
+# version.
+
+REPO=https://hg.openjdk.java.net/jdk7u/jdk7u
+TO=jdk7u45-b18   # The target release tag.
+
+SRC="$1"
+DIR="patch-dir-${TO}"
+
+if [ ! -d "${SRC}" ]; then
+    echo "No source directory specified"
+    exit 1
+fi
+
+if [ ! -d "${DIR}" ]; then
+    hg clone http://hg.openjdk.java.net/jdk7u/jdk7u "${DIR}" 1>&2 || exit 1
+fi
+
+pushd "${DIR}" >/dev/null || exit 1
+
+sh ./get_source.sh 1>&2 || exit 1
+sh ./make/scripts/hgforest.sh "checkout 'tag(\"$TO\")'" 1>&2 || exit 1
+
+diff -ruN -x ".hg" "$1" "."
+
+popd >/dev/null


Property changes on: users/landonf/openjdk7/dports/java/openjdk7/files/create-patchset.sh
___________________________________________________________________
Added: svn:executable
   + *

Added: users/landonf/openjdk7/dports/java/openjdk7/files/patch-jdk7u45-b18
===================================================================
--- users/landonf/openjdk7/dports/java/openjdk7/files/patch-jdk7u45-b18	                        (rev 0)
+++ users/landonf/openjdk7/dports/java/openjdk7/files/patch-jdk7u45-b18	2013-12-15 03:02:45 UTC (rev 114776)
@@ -0,0 +1,20782 @@
+diff -ruN -x .hg /tmp/openjdk/.hgtags ./.hgtags
+--- /tmp/openjdk/.hgtags	2013-09-06 14:20:33.000000000 -0400
++++ ./.hgtags	2013-12-14 21:31:53.000000000 -0500
+@@ -300,6 +300,22 @@
+ 84285f4e0aa2f81b80bc6fbe713d768c0d9a7156 jdk7u25-b09
+ aae1e27d347b71f65f548c12b918ede98d869b7c jdk7u25-b10
+ 039f12124903cd0b7633a17a26f6ca281f7aaeae jdk7u25-b11
++210f464368dba0fc4f8d239654fa7432ad2ed31f jdk7u14-b16
++f07712232642fc30dcf7c433ff890e7247b5fd0b jdk7u14-b17
++9e2a9a2c5b240daa4e27ff75d030a77827174753 jdk7u14-b18
++d9d4dc020cb37142230f6a20d2a75a677c5cd26f jdk7u14-b19
++d9d4dc020cb37142230f6a20d2a75a677c5cd26f jdk7u14-b19
++b4b7795ef8047e3d2b2ba48a70c08d9184073100 jdk7u14-b19
++f413e7a22c198559af5aca28309356e6d4edd78f jdk7u14-b20
++41686e19d8189a546434a52dd9679e9b6a0a68be jdk7u14-b21
++3e3177719b43f732239d6d51e96d26ee18440960 jdk7u14-b22
++8c6e2197930c79f6beafd83181714cc817b83229 jdk7u40-b23
++5169c92728b54a4b5e9a41071f8bf8701d0fe1fa jdk7u40-b24
++f89fd7e2800c1c35b6c339f54780d5579bb30991 jdk7u40-b25
++4ef57f592525d36487ea6eeb2be84d0e9170b26b jdk7u40-b26
++75167199239375d05b68668023c885c2776fd548 jdk7u40-b27
++ac751f3867ecffca814b25daf5e19d82d83fc755 jdk7u40-b28
++dbe42a627813892d1bb59a4240c24f60ef22930a jdk7u40-b29
+ 2d02518960053d2b1dcb9aabacd709788e92c549 jdk7u25-b12
+ 37c4268341d79b16165bdaf7e1fad489d692bc83 jdk7u25-b13
+ 9de1fc3635def64c19c51f272f09b51d8cf0ca98 jdk7u25-b14
+@@ -327,7 +343,7 @@
+ ac751f3867ecffca814b25daf5e19d82d83fc755 jdk7u40-b28
+ dbe42a627813892d1bb59a4240c24f60ef22930a jdk7u40-b29
+ 1c141e6fde911c4974c87e340eb698754607f422 jdk7u40-b30
+-58a2a470aa3bccd3eb3624e68bca9397c8cc26a2 jdk7u40-b31
++e51f24701c608e57ba7ae69ba28bbc2daab02c4c jdk7u45-b01
+ da376fd5e4d68f8a45003a6e175267dc840711cc jdk7u40-b32
+ 3fdfe7f1b06354e11e8af51b7c653c8a0adb3987 jdk7u40-b33
+ a1ae13479e8767329fa20774b5cea5976aaeb37b jdk7u40-b34
+@@ -341,3 +357,19 @@
+ 3af81bfe320c12758234233da6fa27c3c0ffcdc4 jdk7u40-b42
+ 1d53bd8fd2a62bcf336727ebec377ef7498dd4a6 jdk7u40-b43
+ dc1e099cd62d250b4a997ce694b47fe2f50d2905 jdk7u40-b60
++07e41ff8674c9438cb1124cf78eed8636ed5d4fa jdk7u45-b02
++23c983c352a170d7a5fb7d703081daf1816d257a jdk7u45-b03
++1018a8ab686da6c1be22bec3ab9d01b2dc206333 jdk7u45-b04
++22e0ca1fa645d0518b514159afafe34335699c11 jdk7u45-b05
++61343f60f25a1d0deddc1468b2eb948df5275641 jdk7u45-b06
++24088aaf3f6834e46b486b706fbc6ce1f18814e5 jdk7u45-b07
++036425509e31070700a3956aaca7c33d583b7a5e jdk7u45-b08
++b6af2c522a633de1c7b66204fac7104b410ce23c jdk7u45-b09
++3fedb8c609a0f43bc8084edbecb0435e19dcb9a2 jdk7u45-b10
++142403d9f1167b8559b49627c7199c84623307da jdk7u45-b11
++a14018a5fa18092dcca5084656abb797bdb7b5ff jdk7u45-b12
++4d38e9adeb81df9c24550070df1f358aa9c17477 jdk7u45-b13
++bab0456ba0520f73ee20814ddf7ea0d596e49abd jdk7u45-b14
++b4b2584649027b622c188db7a6c3f9cff0e20130 jdk7u45-b15
++f2479abad143d2d9f33b6c872890ca0c5dd52530 jdk7u45-b16
++6fd67e0287a9893ea1f0090fe127f18a7e235148 jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/Makefile ./Makefile
+--- /tmp/openjdk/Makefile	2013-09-06 14:20:33.000000000 -0400
++++ ./Makefile	2013-12-14 21:10:41.000000000 -0500
+@@ -264,7 +264,7 @@
+ 	        DEBUG_NAME=$(DEBUG_NAME) \
+ 		GENERATE_DOCS=false \
+ 		$(if $(findstring true,$(BUILD_INSTALL)),BUILD_INSTALL_BUNDLES=true,) \
+-		CREATE_DEBUGINFO_BUNDLES=false \
++		CREATE_DEBUGINFO_BUNDLES=true \
+ 	        $(BOOT_CYCLE_DEBUG_SETTINGS) \
+ 		generic_build_repo_series
+ 
+diff -ruN -x .hg /tmp/openjdk/corba/.hgtags ./corba/.hgtags
+--- /tmp/openjdk/corba/.hgtags	2013-09-06 14:20:46.000000000 -0400
++++ ./corba/.hgtags	2013-12-14 21:31:53.000000000 -0500
+@@ -302,6 +302,22 @@
+ 161ec4dd450d59e1b8ad136db231925c97ff6205 jdk7u25-b09
+ c9da98e82bb006dccd94a50871d6cdb66fa2d7e7 jdk7u25-b10
+ 109386df5b8e259d0af802217769a3c448404e49 jdk7u25-b11
++38282b734daefcbb8155b7d7ef9664130330ed14 jdk7u14-b16
++8b1d77697ca4d2a9c29d67fd2ff03aded9b06012 jdk7u14-b17
++862b43d26e03bbceb3465f93354860e0d17eb324 jdk7u14-b18
++bfbaab73969d4d978d0280d6ad51bac8c47dbaf8 jdk7u14-b19
++bfbaab73969d4d978d0280d6ad51bac8c47dbaf8 jdk7u14-b19
++a921b45a1f9086a7d598a76f920639050386f996 jdk7u14-b19
++54320e5d9da60df24f0e2c57c011809911dc06e1 jdk7u14-b20
++fb590ca4de9aaf1f6bca945be040dffc55b5e8d2 jdk7u14-b21
++e5d89aa2c1a11dba841a646858dda9ea18dc8f57 jdk7u14-b22
++d85df1552f877a1cc51f43bc07a42a0c48f18e0b jdk7u40-b23
++d3ab3b19caa02ee85359cfe07b6e0b74eb7b3d74 jdk7u40-b24
++abfc54516d0b7f9aed34ef175f6bbb93fda4cbb3 jdk7u40-b25
++be9099c54a35c00d0dfe6beeed8ea5d4ab3cd3fe jdk7u40-b26
++f745eeabb0eaabe8c0835c175b31f1e1c0f00bd4 jdk7u40-b27
++c8b9201f88f4ce417df7a40efcb7fef656d94512 jdk7u40-b28
++1ad0a5a3f7b1e9d95670d733d7e70714050ba6bf jdk7u40-b29
+ ef8e6f8305d524f3b448a85f901aadf1adc81fc0 jdk7u25-b12
+ eca480919c71072a31f62a61cb3aad30677007e3 jdk7u25-b13
+ 577c4dd1a6e9bc1bb2c2e5d5ecbab8eacb4121af jdk7u25-b14
+@@ -343,3 +359,20 @@
+ b4a480a039bc19b27bfb5fcbbbf75e651d2718b7 jdk7u40-b42
+ e29ea0b297e519010e661603a07bb8d48fa904a2 jdk7u40-b43
+ 08737d863a7aa5eb39374b26c9585e1770affe92 jdk7u40-b60
++4f54264ca4df2fc50fbb9bb2654dad97776d10ac jdk7u45-b01
++1a1a1dedf437c50797a49c21a12161a79c761757 jdk7u45-b02
++3a2cca8c2f209b533af6c1201cc8aee43628e578 jdk7u45-b03
++4f4f7869bd6585042ad9596426dd1aa0829b8e98 jdk7u45-b04
++faee62d13040eae3d081f0383843a391ceef1edd jdk7u45-b05
++435dd0e1ab9ec9cbc83dc5ed260886f6becbef25 jdk7u45-b06
++2e19615f6045c3f39e39c56c485f7bc1df97e2ce jdk7u45-b07
++771c5c869d16d2da5668e412f505ad75f8f610c1 jdk7u45-b08
++a89d69bef3614f618843f5e9a495b12d13597851 jdk7u45-b09
++fd8a2041b75c4f712f2b08d627388d44a0cf2ee7 jdk7u45-b10
++55e0d3d9514343f380336b68aa8691a89b2e710b jdk7u45-b11
++336566c2905a49fc9a6f90f5ecd30517cfcaefff jdk7u45-b12
++6cadc3dd82a423f6c24460bb1997c0f39159dd93 jdk7u45-b13
++43e22471d0c29451f282b162864c2d3e494d5871 jdk7u45-b14
++3d7a52de59f03589d7a9334a6895063ff3331bfc jdk7u45-b15
++b1f069eb48edfa6fb7428dc045a53e287215ef4a jdk7u45-b16
++8b8793f06c56e343962b473bc0fb79f23b8be734 jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl.java ./corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl.java
+--- /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl.java	2013-09-06 14:20:49.000000000 -0400
++++ ./corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl.java	2013-12-14 21:10:44.000000000 -0500
+@@ -905,28 +905,4 @@
+ 
+         return contents.toString();
+     }
+-
+-    public static void main(String[] args) {
+-
+-        Class remoteInterface = java.rmi.Remote.class;
+-
+-        if( args.length > 0 ) {
+-            String className = args[0];
+-            try {
+-                remoteInterface = Class.forName(className);
+-            } catch(Exception e) {
+-                e.printStackTrace();
+-                System.exit(-1);
+-            }
+-        }
+-
+-        System.out.println("Building name translation for " + remoteInterface);
+-        try {
+-            IDLNameTranslator nameTranslator =
+-                IDLNameTranslatorImpl.get(remoteInterface);
+-            System.out.println(nameTranslator);
+-        } catch(IllegalStateException ise) {
+-            ise.printStackTrace();
+-        }
+-    }
+ }
+diff -ruN -x .hg /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/InvocationHandlerFactoryImpl.java ./corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/InvocationHandlerFactoryImpl.java
+--- /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/InvocationHandlerFactoryImpl.java	2013-09-06 14:20:50.000000000 -0400
++++ ./corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/InvocationHandlerFactoryImpl.java	2013-12-14 21:10:44.000000000 -0500
+@@ -43,6 +43,8 @@
+ import com.sun.corba.se.spi.orbutil.proxy.DelegateInvocationHandlerImpl ;
+ import com.sun.corba.se.spi.orbutil.proxy.CompositeInvocationHandler ;
+ import com.sun.corba.se.spi.orbutil.proxy.CompositeInvocationHandlerImpl ;
++import java.security.AccessController;
++import java.security.PrivilegedAction;
+ 
+ public class InvocationHandlerFactoryImpl implements InvocationHandlerFactory
+ {
+@@ -114,24 +116,32 @@
+         // which extends org.omg.CORBA.Object.  This handler delegates all
+         // calls directly to a DynamicStubImpl, which extends
+         // org.omg.CORBA.portable.ObjectImpl.
+-        InvocationHandler dynamicStubHandler =
++        final InvocationHandler dynamicStubHandler =
+             DelegateInvocationHandlerImpl.create( stub ) ;
+ 
+         // Create an invocation handler that handles any remote interface
+         // methods.
+-        InvocationHandler stubMethodHandler = new StubInvocationHandlerImpl(
++        final InvocationHandler stubMethodHandler = new StubInvocationHandlerImpl(
+             pm, classData, stub ) ;
+ 
+         // Create a composite handler that handles the DynamicStub interface
+         // as well as the remote interfaces.
+         final CompositeInvocationHandler handler =
+             new CustomCompositeInvocationHandlerImpl( stub ) ;
++
++        AccessController.doPrivileged(new PrivilegedAction<Void>() {
++            @Override
++            public Void run() {
+         handler.addInvocationHandler( DynamicStub.class,
+             dynamicStubHandler ) ;
+         handler.addInvocationHandler( org.omg.CORBA.Object.class,
+             dynamicStubHandler ) ;
+         handler.addInvocationHandler( Object.class,
+             dynamicStubHandler ) ;
++                return null;
++            }
++        });
++
+ 
+         // If the method passed to invoke is not from DynamicStub or its superclasses,
+         // it must be from an implemented interface, so we just handle
+diff -ruN -x .hg /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java ./corba/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java
+--- /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java	2013-09-06 14:20:50.000000000 -0400
++++ ./corba/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java	2013-12-14 21:10:44.000000000 -0500
+@@ -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
+@@ -55,7 +55,7 @@
+ /**
+  * @author Harold Carr
+  */
+-public class SelectorImpl
++class SelectorImpl
+     extends
+         Thread
+     implements
+diff -ruN -x .hg /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java ./corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java
+--- /tmp/openjdk/corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java	2013-09-06 14:20:51.000000000 -0400
++++ ./corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java	2013-12-14 21:10:44.000000000 -0500
+@@ -36,6 +36,7 @@
+ 
+ import com.sun.corba.se.spi.logging.CORBALogDomains ;
+ import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
++import com.sun.corba.se.impl.presentation.rmi.DynamicAccessPermission;
+ 
+ public class CompositeInvocationHandlerImpl implements
+     CompositeInvocationHandler
+@@ -46,11 +47,13 @@
+     public void addInvocationHandler( Class interf,
+         InvocationHandler handler )
+     {
++        checkAccess();
+         classToInvocationHandler.put( interf, handler ) ;
+     }
+ 
+     public void setDefaultHandler( InvocationHandler handler )
+     {
++        checkAccess();
+         defaultHandler = handler ;
+     }
+ 
+@@ -78,4 +81,12 @@
+ 
+         return handler.invoke( proxy, method, args ) ;
+     }
++
++    private static final DynamicAccessPermission perm = new DynamicAccessPermission("access");
++    private void checkAccess() {
++        final SecurityManager sm = System.getSecurityManager();
++        if (sm != null) {
++            sm.checkPermission(perm);
++}
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java ./corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java
+--- /tmp/openjdk/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java	2013-09-06 14:20:56.000000000 -0400
++++ ./corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java	2013-12-14 21:10:44.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 2012, 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
+@@ -34,6 +34,9 @@
+ 
+ import java.io.File;
+ import java.io.IOException;
++import java.io.SerializablePermission;
++import java.security.AccessController;
++import java.security.PrivilegedAction;
+ import java.util.Vector;
+ import java.util.Hashtable;
+ import java.util.Enumeration;
+@@ -49,6 +52,7 @@
+ import com.sun.corba.se.impl.util.PackagePrefixChecker;
+ import sun.rmi.rmic.Main;
+ 
++
+ /**
+  * An IIOP stub/tie generator for rmic.
+  *
+@@ -78,6 +82,7 @@
+     protected boolean castArray = false;
+     protected Hashtable transactionalObjects = new Hashtable() ;
+     protected boolean POATie = false ;
++    protected boolean emitPermissionCheck = false;
+ 
+     /**
+      * Default constructor for Main to use.
+@@ -193,6 +198,9 @@
+                     } else if (argv[i].equals("-standardPackage")) {
+                         standardPackage = true;
+                         argv[i] = null;
++                    } else if (argv[i].equals("-emitPermissionCheck")) {
++                        emitPermissionCheck = true;
++                        argv[i] = null;
+                     } else if (arg.equals("-xstubbase")) {
+                         argv[i] = null;
+                         if (++i < argv.length && argv[i] != null && !argv[i].startsWith("-")) {
+@@ -390,9 +398,22 @@
+ 
+         writePackageAndImports(p);
+ 
++//        generate
++//        import java.security.AccessController;
++//        import java.security.PrivilegedAction;
++//        import java.io.SerializablePermission;
++        if (emitPermissionCheck) {
++            p.pln("import java.security.AccessController;");
++            p.pln("import java.security.PrivilegedAction;");
++            p.pln("import java.io.SerializablePermission;");
++            p.pln();
++            p.pln();
++        }
++
+         // Declare the stub class; implement all remote interfaces.
+ 
+         p.p("public class " + currentClass);
++
+         p.p(" extends " + getName(stubBaseClass));
+         p.p(" implements ");
+         if (remoteInterfaces.length > 0) {
+@@ -422,6 +443,56 @@
+         writeIds( p, theType, false );
+         p.pln();
+ 
++        if (emitPermissionCheck) {
++
++            // produce the following generated code
++            // private static Void checkPermission() {
++            // SecurityManager sm = System.getSecurityManager();
++            // if (sm != null) {
++            //     sm.checkPermission(new SerializablePermission(
++            // "enableSubclassImplementation")); // testing
++            // }
++            // return null;
++            // }
++            //
++            // private _XXXXXX_Stub(Void ignore) {
++            // }
++            //
++            // public _XXXXXX_Stub() {
++            // this(checkPermission());
++            // }
++            // where XXXXXX is the name of the remote interface
++
++                p.pln();
++                p.plnI("private static Void checkPermission() {");
++                p.plnI("SecurityManager sm = System.getSecurityManager();");
++                p.pln("if (sm != null) {");
++                p.pI();
++                p.plnI("sm.checkPermission(new SerializablePermission(");
++                p.plnI("\"enableSubclassImplementation\"));");
++                p.pO();
++                p.pO();
++                p.pOln("}");
++                p.pln("return null;");
++                p.pO();
++                p.pOln("}");
++                p.pln();
++                p.pO();
++
++                p.pI();
++                p.pln("private " + currentClass + "(Void ignore) {  }");
++                p.pln();
++
++                p.plnI("public " + currentClass + "() { ");
++                p.pln("this(checkPermission());");
++                p.pOln("}");
++                p.pln();
++        }
++
++       if (!emitPermissionCheck) {
++            p.pI();
++       }
++
+         // Write the _ids() method...
+ 
+         p.plnI("public String[] _ids() { ");
+@@ -815,7 +886,6 @@
+                             CompoundType theType) throws IOException {
+ 
+         // Wtite the method declaration and opening brace...
+-
+         String methodName = method.getName();
+         String methodIDLName = method.getIDLName();
+ 
+@@ -1631,7 +1701,7 @@
+ 
+         // Write data members...
+         p.pln();
+-        p.pln("private " + getName(theType) + " target = null;");
++        p.pln("volatile private " + getName(theType) + " target = null;");
+         p.pln();
+ 
+         // Write the ids...
+@@ -1695,6 +1765,10 @@
+ 
+         if (remoteMethods.length > 0) {
+             p.plnI("try {");
++            p.pln(getName(theType) + " target = this.target;");
++            p.plnI("if (target == null) {");
++            p.pln("throw new java.io.IOException();");
++            p.pOln("}");
+             p.plnI(idExtInputStream + " "+in+" = ");
+             p.pln("(" + idExtInputStream + ") "+_in+";");
+             p.pO();
+diff -ruN -x .hg /tmp/openjdk/hotspot/.hgtags ./hotspot/.hgtags
+--- /tmp/openjdk/hotspot/.hgtags	2013-09-06 14:21:49.000000000 -0400
++++ ./hotspot/.hgtags	2013-12-14 21:31:53.000000000 -0500
+@@ -476,6 +476,24 @@
+ 8386245b59c3e82b7c728b7d3832ea342c62615d jdk7u21-b50
+ c5e4585a045fe165d067ec0e98af42eace20c5f8 jdk7u21-b12
+ 00dbf9fa12ec6b1ba15d9a9a12495f50e10837bf jdk7u21-b31
++bf2d84c5103d98db1697b50071a649ea23c4e33d jdk7u25-b01
++07119340f80f77dfcb03fa568641e80b43d4be74 jdk7u25-b02
++655bea6843fb7beabd8d9eeda59572c0c7055b85 jdk7u25-b03
++96a4e612195c0d753be24cf38fea0ee8ce30edcf jdk7u25-b04
++7151c26b838828a20cb28595ef1f70403d1868cf jdk7u25-b05
++fbb5f6083dd00ca7417e4a45311f33918bb2a5f0 jdk7u25-b06
++83abf4b2fc8a5bb7226177c5e4334bd0bfd7a8df jdk7u25-b07
++525252cd9fca4869c3fd81bc61299a85e73ff9c7 jdk7u25-b08
++706a255a8404b7e41579cea278df6bb87c314567 jdk7u25-b09
++402184622f60a2ba35479bdf124a8d4694835406 jdk7u25-b10
++cca49a35bf83664456af112482ffb3a7465d21fa jdk7u25-b11
++7ca68c0674df72fdd784de337c049404d2b5b0c3 jdk7u25-b12
++3e145a686fedd9eefdcb6b714241200ed236b41d jdk7u25-b13
++4fafaf293aa5666e8c9f5ca1d96c3f752305f586 jdk7u25-b14
++40acb370626fbc439e4cfed8854960a83a376fba jdk7u25-b15
++97a3ebd62052410e0709035f40032d3f2113ed86 jdk7u25-b30
++b80a290e6e3011097273525c4f352c70b9857464 jdk7u25-b16
++273e8afccd6ef9e10e9fe121f7b323755191f3cc jdk7u25-b32
+ e3d2c238e29c421c3b5c001e400acbfb30790cfc jdk7u14-b14
+ 860ae068f4dff62a77c8315f0335b7e935087e86 hs24-b34
+ 12619005c5e29be6e65f0dc9891ca19d9ffb1aaa jdk7u14-b15
+@@ -550,3 +568,20 @@
+ b8d8caf6df744d5342b5d284376a005e86c0b108 hs24-b56
+ eceae04782438987cd747e1c76e4085f50b43a18 jdk7u40-b43
+ af1fc2868a2b919727bfbb0858449bd991bbee4a jdk7u40-b60
++5fb434aa203c32b4551167b922a70e79831ffdf4 jdk7u45-b01
++f2039061ba49de742ae88cc3123fd1237965d665 jdk7u45-b02
++d6fd3f84a30ce82a37fc39b6e5e9d73bd8054ab2 jdk7u45-b03
++7f16aa9067386aeb3668336aa6cd63ef3dc4f44a jdk7u45-b04
++b4fe146b820b47d8b59bbb9dc9d43221436ed0ae jdk7u45-b05
++63efa616e54dd3545e16a5aa1917662548b18ee5 jdk7u45-b06
++f6748e6123b6745497d69addffdff38e224a77c5 jdk7u45-b07
++06bcab9ef18355dccc87401fc24dbd5f15615db0 jdk7u45-b08
++996b6863b3b2468cece20d7a6f571f9ec1b7830c jdk7u45-b09
++bcaf889eea9e64d30f8c3aefdcdc2c2ee29406f2 jdk7u45-b10
++7ca907428850dc2aa99ee4a906446e479dbeb392 jdk7u45-b11
++ed1505510ea0e94b17f968cdb3e8aba13c99d543 jdk7u45-b12
++89f99af7a7bbdadb5b8cf781c7d899c22df64b71 jdk7u45-b13
++718d1e9223dd0359d9ccef81fb82c32215702fe8 jdk7u45-b14
++9ad76a08e5edfe24e95eef84e15fef261bff1abf jdk7u45-b15
++429884602206fcf5314c8b953c06d54d337558ca jdk7u45-b16
++0c0dc384915cafd9bfaa2fe5792a629a22d1b990 jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/hotspot/make/hotspot_version ./hotspot/make/hotspot_version
+--- /tmp/openjdk/hotspot/make/hotspot_version	2013-09-06 14:22:00.000000000 -0400
++++ ./hotspot/make/hotspot_version	2013-12-14 21:31:53.000000000 -0500
+@@ -34,8 +34,8 @@
+ HOTSPOT_VM_COPYRIGHT=Copyright 2013
+ 
+ HS_MAJOR_VER=24
+-HS_MINOR_VER=0
+-HS_BUILD_NUMBER=56
++HS_MINOR_VER=45
++HS_BUILD_NUMBER=08
+ 
+ JDK_MAJOR_VER=1
+ JDK_MINOR_VER=7
+diff -ruN -x .hg /tmp/openjdk/hotspot/make/windows/makefiles/compile.make ./hotspot/make/windows/makefiles/compile.make
+--- /tmp/openjdk/hotspot/make/windows/makefiles/compile.make	2013-09-06 14:22:01.000000000 -0400
++++ ./hotspot/make/windows/makefiles/compile.make	2013-12-14 21:12:16.000000000 -0500
+@@ -172,6 +172,7 @@
+ PRODUCT_OPT_OPTION   = /O2 /Oy-
+ FASTDEBUG_OPT_OPTION = /O2 /Oy-
+ DEBUG_OPT_OPTION     = /Od
++SAFESEH_FLAG = /SAFESEH
+ !endif
+ 
+ !if "$(COMPILER_NAME)" == "VS2005"
+@@ -190,6 +191,7 @@
+ !if "x$(MT)" == "x"
+ MT=mt.exe
+ !endif
++SAFESEH_FLAG = /SAFESEH
+ !endif
+ 
+ !if "$(COMPILER_NAME)" == "VS2008"
+@@ -203,6 +205,7 @@
+ !if "x$(MT)" == "x"
+ MT=mt.exe
+ !endif
++SAFESEH_FLAG = /SAFESEH
+ !endif
+ 
+ !if "$(COMPILER_NAME)" == "VS2010"
+@@ -216,9 +219,11 @@
+ !if "x$(MT)" == "x"
+ MT=mt.exe
+ !endif
+-!if "$(BUILDARCH)" == "i486"
+-LD_FLAGS = /SAFESEH $(LD_FLAGS)
++SAFESEH_FLAG = /SAFESEH
+ !endif
++
++!if "$(BUILDARCH)" == "i486"
++LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS)
+ !endif
+ 
+ # If NO_OPTIMIZATIONS is defined in the environment, turn everything off
+diff -ruN -x .hg /tmp/openjdk/hotspot/make/windows/makefiles/sa.make ./hotspot/make/windows/makefiles/sa.make
+--- /tmp/openjdk/hotspot/make/windows/makefiles/sa.make	2013-09-06 14:22:01.000000000 -0400
++++ ./hotspot/make/windows/makefiles/sa.make	2013-12-14 21:12:16.000000000 -0500
+@@ -107,6 +107,9 @@
+ !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
+ SA_LFLAGS = $(SA_LFLAGS) -map -debug
+ !endif
++!if "$(BUILDARCH)" == "i486"
++SA_LFLAGS = $(SAFESEH_FLAG) $(SA_LFLAGS)
++!endif
+ 
+ # Note that we do not keep sawindbj.obj around as it would then
+ # get included in the dumpbin command in build_vm_def.sh
+diff -ruN -x .hg /tmp/openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp ./hotspot/src/os/bsd/vm/os_bsd.cpp
+--- /tmp/openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp	2013-09-06 14:22:03.000000000 -0400
++++ ./hotspot/src/os/bsd/vm/os_bsd.cpp	2013-12-14 21:31:53.000000000 -0500
+@@ -971,13 +971,14 @@
+ #endif
+ 
+ #ifdef __APPLE__
+-static uint64_t locate_unique_thread_id() {
++static uint64_t locate_unique_thread_id(mach_port_t mach_thread_port) {
+   // Additional thread_id used to correlate threads in SA
+   thread_identifier_info_data_t     m_ident_info;
+   mach_msg_type_number_t            count = THREAD_IDENTIFIER_INFO_COUNT;
+ 
+-  thread_info(::mach_thread_self(), THREAD_IDENTIFIER_INFO,
++  thread_info(mach_thread_port, THREAD_IDENTIFIER_INFO,
+               (thread_info_t) &m_ident_info, &count);
++
+   return m_ident_info.thread_id;
+ }
+ #endif
+@@ -1009,9 +1010,14 @@
+ 
+ #ifdef _ALLBSD_SOURCE
+ #ifdef __APPLE__
+-  // thread_id is mach thread on macos
+-  osthread->set_thread_id(::mach_thread_self());
+-  osthread->set_unique_thread_id(locate_unique_thread_id());
++  // thread_id is mach thread on macos, which pthreads graciously caches and provides for us
++  mach_port_t thread_id = ::pthread_mach_thread_np(::pthread_self());
++  guarantee(thread_id != 0, "thread id missing from pthreads");
++  osthread->set_thread_id(thread_id);
++
++  uint64_t unique_thread_id = locate_unique_thread_id(thread_id);
++  guarantee(unique_thread_id != 0, "unique thread id was not found");
++  osthread->set_unique_thread_id(unique_thread_id);
+ #else
+   // thread_id is pthread_id on BSD
+   osthread->set_thread_id(::pthread_self());
+@@ -1207,8 +1213,14 @@
+   // Store pthread info into the OSThread
+ #ifdef _ALLBSD_SOURCE
+ #ifdef __APPLE__
+-  osthread->set_thread_id(::mach_thread_self());
+-  osthread->set_unique_thread_id(locate_unique_thread_id());
++  // thread_id is mach thread on macos, which pthreads graciously caches and provides for us
++  mach_port_t thread_id = ::pthread_mach_thread_np(::pthread_self());
++  guarantee(thread_id != 0, "just checking");
++  osthread->set_thread_id(thread_id);
++
++  uint64_t unique_thread_id = locate_unique_thread_id(thread_id);
++  guarantee(unique_thread_id != 0, "just checking");
++  osthread->set_unique_thread_id(unique_thread_id);
+ #else
+   osthread->set_thread_id(::pthread_self());
+ #endif
+@@ -1830,7 +1842,7 @@
+ 
+ intx os::current_thread_id() {
+ #ifdef __APPLE__
+-  return (intx)::mach_thread_self();
++  return (intx)::pthread_mach_thread_np(::pthread_self());
+ #else
+   return (intx)::pthread_self();
+ #endif
+diff -ruN -x .hg /tmp/openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp ./hotspot/src/share/vm/classfile/classFileParser.cpp
+--- /tmp/openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	2013-09-06 14:22:10.000000000 -0400
++++ ./hotspot/src/share/vm/classfile/classFileParser.cpp	2013-12-14 21:12:16.000000000 -0500
+@@ -2028,8 +2028,8 @@
+           }
+           if (lvt_cnt == max_lvt_cnt) {
+             max_lvt_cnt <<= 1;
+-            REALLOC_RESOURCE_ARRAY(u2, localvariable_table_length, lvt_cnt, max_lvt_cnt);
+-            REALLOC_RESOURCE_ARRAY(u2*, localvariable_table_start, lvt_cnt, max_lvt_cnt);
++            localvariable_table_length = REALLOC_RESOURCE_ARRAY(u2, localvariable_table_length, lvt_cnt, max_lvt_cnt);
++            localvariable_table_start  = REALLOC_RESOURCE_ARRAY(u2*, localvariable_table_start, lvt_cnt, max_lvt_cnt);
+           }
+           localvariable_table_start[lvt_cnt] =
+             parse_localvariable_table(code_length,
+@@ -2058,8 +2058,8 @@
+           // Parse local variable type table
+           if (lvtt_cnt == max_lvtt_cnt) {
+             max_lvtt_cnt <<= 1;
+-            REALLOC_RESOURCE_ARRAY(u2, localvariable_type_table_length, lvtt_cnt, max_lvtt_cnt);
+-            REALLOC_RESOURCE_ARRAY(u2*, localvariable_type_table_start, lvtt_cnt, max_lvtt_cnt);
++            localvariable_type_table_length = REALLOC_RESOURCE_ARRAY(u2, localvariable_type_table_length, lvtt_cnt, max_lvtt_cnt);
++            localvariable_type_table_start  = REALLOC_RESOURCE_ARRAY(u2*, localvariable_type_table_start, lvtt_cnt, max_lvtt_cnt);
+           }
+           localvariable_type_table_start[lvtt_cnt] =
+             parse_localvariable_table(code_length,
+@@ -4051,9 +4051,8 @@
+   for (int index = 0; index < num_methods; index++) {
+     methodOop m = (methodOop)methods->obj_at(index);
+ 
+-    // skip private, static and <init> methods
+-    if ((!m->is_private()) &&
+-        (!m->is_static()) &&
++    // skip static and <init> methods
++    if ((!m->is_static()) &&
+         (m->name() != vmSymbols::object_initializer_name())) {
+ 
+       Symbol* name = m->name();
+diff -ruN -x .hg /tmp/openjdk/hotspot/src/share/vm/runtime/mutexLocker.cpp ./hotspot/src/share/vm/runtime/mutexLocker.cpp
+--- /tmp/openjdk/hotspot/src/share/vm/runtime/mutexLocker.cpp	2013-09-06 14:22:15.000000000 -0400
++++ ./hotspot/src/share/vm/runtime/mutexLocker.cpp	2013-12-14 21:12:18.000000000 -0500
+@@ -133,13 +133,15 @@
+ 
+ Mutex*   Management_lock              = NULL;
+ Monitor* Service_lock                 = NULL;
+-Mutex*   Stacktrace_lock              = NULL;
++Monitor* PeriodicTask_lock            = NULL;
+ 
+-Monitor* JfrQuery_lock                = NULL;
++#ifdef INCLUDE_TRACE
++Mutex*   JfrStacktrace_lock           = NULL;
+ Monitor* JfrMsg_lock                  = NULL;
+ Mutex*   JfrBuffer_lock               = NULL;
+ Mutex*   JfrStream_lock               = NULL;
+-Monitor* PeriodicTask_lock            = NULL;
++Mutex*   JfrThreadGroups_lock         = NULL;
++#endif
+ 
+ #define MAX_NUM_MUTEX 128
+ static Monitor * _mutex_array[MAX_NUM_MUTEX];
+@@ -215,7 +217,6 @@
+   def(Patching_lock                , Mutex  , special,     true ); // used for safepointing and code patching.
+   def(ObjAllocPost_lock            , Monitor, special,     false);
+   def(Service_lock                 , Monitor, special,     true ); // used for service thread operations
+-  def(Stacktrace_lock              , Mutex,   special,     true ); // used for JFR stacktrace database
+   def(JmethodIdCreation_lock       , Mutex  , leaf,        true ); // used for creating jmethodIDs.
+ 
+   def(SystemDictionary_lock        , Monitor, leaf,        true ); // lookups done by VM thread
+@@ -278,12 +279,17 @@
+   def(MethodCompileQueue_lock      , Monitor, nonleaf+4,   true );
+   def(Debug2_lock                  , Mutex  , nonleaf+4,   true );
+   def(Debug3_lock                  , Mutex  , nonleaf+4,   true );
+-  def(CompileThread_lock           , Monitor, nonleaf+5,   false );
++  def(CompileThread_lock           , Monitor, nonleaf+5,   false);
++  def(PeriodicTask_lock            , Monitor, nonleaf+5,   true);
+ 
++#ifdef INCLUDE_TRACE
+   def(JfrMsg_lock                  , Monitor, leaf,        true);
+   def(JfrBuffer_lock               , Mutex,   nonleaf+1,   true);
++  def(JfrThreadGroups_lock         , Mutex,   nonleaf+1,   true);
+   def(JfrStream_lock               , Mutex,   nonleaf+2,   true);
+-  def(PeriodicTask_lock            , Monitor, nonleaf+5,   true);
++  def(JfrStacktrace_lock           , Mutex,   special,     true );
++#endif
++
+ }
+ 
+ GCMutexLocker::GCMutexLocker(Monitor * mutex) {
+diff -ruN -x .hg /tmp/openjdk/hotspot/src/share/vm/runtime/mutexLocker.hpp ./hotspot/src/share/vm/runtime/mutexLocker.hpp
+--- /tmp/openjdk/hotspot/src/share/vm/runtime/mutexLocker.hpp	2013-09-06 14:22:15.000000000 -0400
++++ ./hotspot/src/share/vm/runtime/mutexLocker.hpp	2013-12-14 21:12:18.000000000 -0500
+@@ -135,13 +135,15 @@
+ 
+ extern Mutex*   Management_lock;                 // a lock used to serialize JVM management
+ extern Monitor* Service_lock;                    // a lock used for service thread operation
+-extern Mutex*   Stacktrace_lock;                 // used to guard access to the stacktrace table
++extern Monitor* PeriodicTask_lock;               // protects the periodic task structure
+ 
+-extern Monitor* JfrQuery_lock;                   // protects JFR use
++#ifdef INCLUDE_TRACE
++extern Mutex*   JfrStacktrace_lock;              // used to guard access to the JFR stacktrace table
+ extern Monitor* JfrMsg_lock;                     // protects JFR messaging
+ extern Mutex*   JfrBuffer_lock;                  // protects JFR buffer operations
+ extern Mutex*   JfrStream_lock;                  // protects JFR stream access
+-extern Monitor* PeriodicTask_lock;               // protects the periodic task structure
++extern Mutex*   JfrThreadGroups_lock;            // protects JFR access to Thread Groups
++#endif
+ 
+ // A MutexLocker provides mutual exclusion with respect to a given mutex
+ // for the scope which contains the locker.  The lock is an OS lock, not
+diff -ruN -x .hg /tmp/openjdk/jaxp/.hgtags ./jaxp/.hgtags
+--- /tmp/openjdk/jaxp/.hgtags	2013-09-06 14:22:52.000000000 -0400
++++ ./jaxp/.hgtags	2013-12-14 21:31:53.000000000 -0500
+@@ -302,6 +302,22 @@
+ 5952538d55e624132f97400332a50b71880c874c jdk7u25-b09
+ aa00dd983dd0f5b07269d0648a0325e9b3e0d957 jdk7u25-b10
+ 0fb6d76bcd2e8d54d0a69e1c3d2a85d84b3e17a4 jdk7u25-b11
++7b47e1a26f7cbb8d8d22ea165f2d7fbbbd354c77 jdk7u14-b16
++77ac1ef42b2fd47cc87b9800f63efdd4cf2fa05d jdk7u14-b17
++d47975f80a24b55410fa2e2c5f50f3405d83fe73 jdk7u14-b18
++331e489ecb7b19fa98c60324f7ce5d168284a8c8 jdk7u14-b19
++331e489ecb7b19fa98c60324f7ce5d168284a8c8 jdk7u14-b19
++c3c9f04cf10c2fe576b208f6a8ca3777b1d31145 jdk7u14-b19
++5e1fee011646b4a3ff29b7b9cdc208e0a0577cb4 jdk7u14-b20
++d1c8bb1cbc9183fc994b5fedf26886ceda0d59f9 jdk7u14-b21
++d1c6afebdfe28eb07eb2d03a6911a0f33b619165 jdk7u14-b22
++0e4c549d3635122145ac88bad7b98716976ca49e jdk7u40-b23
++d17acb2ee133811baa8eae3436a8c191fc433da1 jdk7u40-b24
++52bcce690998b4ad91abddae118847f4358c6110 jdk7u40-b25
++cd764ada36b50e2096ba35b4c27ca8f83b3db964 jdk7u40-b26
++7626b3fbc822fd4efd5ba3b5fc18f2fef5749597 jdk7u40-b27
++9186b6efd2b2eafa7fee5be1b043f59f25db12a6 jdk7u40-b28
++740942c76fb668a04bf89feccf069f6958651d54 jdk7u40-b29
+ 5e87aee78c91efa65bd5aeb37bcc1c1c637a7f0c jdk7u25-b12
+ 83b80c094befd08cbac4247d9b8f12c6a039f23f jdk7u25-b13
+ 68cc0d2a49f09b5c611b2775f2e66de1022bdedc jdk7u25-b14
+@@ -343,3 +359,20 @@
+ 66363323f14d85d4ab28e883a3323b9d72dea5fd jdk7u40-b42
+ c0bd71414ea513f54f23965936a837fca093ac91 jdk7u40-b43
+ 91bc4534851265291bb3b16452a0968d6909979f jdk7u40-b60
++1a7e2024963d3a8d6cde209de0967ac43418b82a jdk7u45-b01
++72b314bf2ee171bec2157f737ba3bf77fbdf1118 jdk7u45-b02
++399c58bf22ad35a3527a286123497615100746b2 jdk7u45-b03
++e66ea9257ba8a77fc64f6f2924584b183767d82b jdk7u45-b04
++3a6dce39c05c254aba9f3ae57c035bf3facfe8b9 jdk7u45-b05
++a7b1dcabdebbdbf40040a1c6f8411d2f8d25bb37 jdk7u45-b06
++abb39bc40bcc91c7f8ebc2867e98f302d9bc8417 jdk7u45-b07
++72295e1b27e61751cc323b5e4d6781bf7afae0a4 jdk7u45-b08
++255d92f5ed98915a025484360963d7d09bd77313 jdk7u45-b09
++28a18e725bb39d47e920ef910f435321fb891a88 jdk7u45-b10
++3d3b4da34d583e86a3b90b8f69927a37d40f5b57 jdk7u45-b11
++2ac5c9749223f205cd081ecd0028b2f3ea13f8f8 jdk7u45-b12
++18a009fdfba2bbc5036f96cbefffcdefe9580bb1 jdk7u45-b13
++d577bae705f208661733e09a4875d79255897b7b jdk7u45-b14
++daadec741c9bc5067897eb8803123d0af6c5ebc3 jdk7u45-b15
++0a8b95184728548be4b20876e05f76e0262e4195 jdk7u45-b16
++2586d303503b5bb6fd39dc0ce572d6e858caf41c jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java ./jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java	2013-09-06 14:22:55.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java	2013-12-14 21:31:53.000000000 -0500
+@@ -39,33 +39,138 @@
+     //
+     // Constants
+     //
+-    // Oracle Feature:
++    //Xerces security manager
++    public static final String SECURITY_MANAGER =
++            "http://apache.org/xml/properties/security-manager";
++
++    //
++    // Implementation limits: API properties
++    //
++    /** Oracle JAXP property prefix ("http://www.oracle.com/xml/jaxp/properties/"). */
++    public static final String ORACLE_JAXP_PROPERTY_PREFIX =
++        "http://www.oracle.com/xml/jaxp/properties/";
+     /**
+-     * <p>Use Service Mechanism</p>
+-     *
+-     * <ul>
+-     *   <li>
++     * JDK entity expansion limit; Note that the existing system property
++     * "entityExpansionLimit" with no prefix is still observed
++     */
++    public static final String JDK_ENTITY_EXPANSION_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "entityExpansionLimit";
++
++    /**
++     * JDK element attribute limit; Note that the existing system property
++     * "elementAttributeLimit" with no prefix is still observed
++     */
++    public static final String JDK_ELEMENT_ATTRIBUTE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "elementAttributeLimit";
++
++    /**
++     * JDK maxOccur limit; Note that the existing system property
++     * "maxOccurLimit" with no prefix is still observed
++     */
++    public static final String JDK_MAX_OCCUR_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxOccurLimit";
++
++    /**
++     * JDK total entity size limit
++     */
++    public static final String JDK_TOTAL_ENTITY_SIZE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "totalEntitySizeLimit";
++
++    /**
++     * JDK maximum general entity size limit
++     */
++    public static final String JDK_GENEAL_ENTITY_SIZE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxGeneralEntitySizeLimit";
++    /**
++     * JDK maximum parameter entity size limit
++     */
++    public static final String JDK_PARAMETER_ENTITY_SIZE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxParameterEntitySizeLimit";
++    /**
++     * JDK maximum XML name limit
++     */
++    public static final String JDK_XML_NAME_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit";
++    /**
++     * JDK property indicating whether the parser shall print out entity
++     * count information
++     * Value: a string "yes" means print, "no" or any other string means not.
++     */
++    public static final String JDK_ENTITY_COUNT_INFO =
++            ORACLE_JAXP_PROPERTY_PREFIX + "getEntityCountInfo";
++
++    //
++    // Implementation limits: corresponding System Properties of the above
++    // API properties
++    //
++    /**
++     * JDK entity expansion limit; Note that the existing system property
++     * "entityExpansionLimit" with no prefix is still observed
++     */
++    public static final String SP_ENTITY_EXPANSION_LIMIT = "jdk.xml.entityExpansionLimit";
++
++    /**
++     * JDK element attribute limit; Note that the existing system property
++     * "elementAttributeLimit" with no prefix is still observed
++     */
++    public static final String SP_ELEMENT_ATTRIBUTE_LIMIT =  "jdk.xml.elementAttributeLimit";
++
++    /**
++     * JDK maxOccur limit; Note that the existing system property
++     * "maxOccurLimit" with no prefix is still observed
++     */
++    public static final String SP_MAX_OCCUR_LIMIT = "jdk.xml.maxOccurLimit";
++
++    /**
++     * JDK total entity size limit
++     */
++    public static final String SP_TOTAL_ENTITY_SIZE_LIMIT = "jdk.xml.totalEntitySizeLimit";
++
++    /**
++     * JDK maximum general entity size limit
++     */
++    public static final String SP_GENEAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
++    /**
++     * JDK maximum parameter entity size limit
++     */
++    public static final String SP_PARAMETER_ENTITY_SIZE_LIMIT = "jdk.xml.maxParameterEntitySizeLimit";
++    /**
++     * JDK maximum XML name limit
++     */
++    public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
++
++    //legacy System Properties
++    public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
++    public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
++    public final static String MAX_OCCUR_LIMIT = "maxOccurLimit";
++
++    /**
++     * A string "yes" that can be used for properties such as getEntityCountInfo
++     */
++    public static final String JDK_YES = "yes";
++
++    // Oracle Feature:
++        /**
++         * <p>Use Service Mechanism</p>
++         *
++         * <ul>
++         *   <li>
+          * {@code true} instruct an object to use service mechanism to
+          * find a service implementation. This is the default behavior.
+          *   </li>
+          *   <li>
+          * {@code false} instruct an object to skip service mechanism and
+          * use the default implementation for that service.
+-     *   </li>
+-     * </ul>
+-    */
+-
++         *   </li>
++         * </ul>
++         */
+     public static final String ORACLE_FEATURE_SERVICE_MECHANISM = "http://www.oracle.com/feature/use-service-mechanism";
+ 
+-    /** Oracle JAXP property prefix ("http://www.oracle.com/xml/jaxp/properties/"). */
+-    public static final String ORACLE_JAXP_PROPERTY_PREFIX =
+-        "http://www.oracle.com/xml/jaxp/properties/";
+ 
+     //System Properties corresponding to ACCESS_EXTERNAL_* properties
+     public static final String SP_ACCESS_EXTERNAL_STYLESHEET = "javax.xml.accessExternalStylesheet";
+     public static final String SP_ACCESS_EXTERNAL_DTD = "javax.xml.accessExternalDTD";
+ 
+-
+     //all access keyword
+     public static final String ACCESS_EXTERNAL_ALL = "all";
+ 
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java ./jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java	2013-12-14 21:31:53.000000000 -0500
+@@ -0,0 +1,449 @@
++/*
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
++ *
++ * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
++ *
++ * The contents of this file are subject to the terms of either the GNU
++ * General Public License Version 2 only ("GPL") or the Common Development
++ * and Distribution License("CDDL") (collectively, the "License").  You
++ * may not use this file except in compliance with the License.  You can
++ * obtain a copy of the License at
++ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
++ * or packager/legal/LICENSE.txt.  See the License for the specific
++ * language governing permissions and limitations under the License.
++ *
++ * When distributing the software, include this License Header Notice in each
++ * file and include the License file at packager/legal/LICENSE.txt.
++ *
++ * GPL Classpath Exception:
++ * Oracle designates this particular file as subject to the "Classpath"
++ * exception as provided by Oracle in the GPL Version 2 section of the License
++ * file that accompanied this code.
++ *
++ * Modifications:
++ * If applicable, add the following below the License Header, with the fields
++ * enclosed by brackets [] replaced by your own identifying information:
++ * "Portions Copyright [year] [name of copyright owner]"
++ *
++ * Contributor(s):
++ * If you wish your version of this file to be governed by only the CDDL or
++ * only the GPL Version 2, indicate your decision by adding "[Contributor]
++ * elects to include this software in this distribution under the [CDDL or GPL
++ * Version 2] license."  If you don't indicate a single choice of license, a
++ * recipient has the option to distribute your version of this file under
++ * either the CDDL, the GPL Version 2 or to extend the choice of license to
++ * its licensees as provided above.  However, if you add GPL Version 2 code
++ * and therefore, elected the GPL Version 2 license, then the option applies
++ * only if the new code is made subject to such option by the copyright
++ * holder.
++ */
++package com.sun.org.apache.xalan.internal.utils;
++
++import com.sun.org.apache.xalan.internal.XalanConstants;
++
++
++/**
++ * This class is not the same as that in Xerces. It is used to manage the
++ * state of corresponding Xerces properties and pass the values over to
++ * the Xerces Security Manager.
++ *
++ * @author Joe Wang Oracle Corp.
++ *
++ */
++public final class XMLSecurityManager {
++
++    /**
++     * States of the settings of a property, in the order: default value, value
++     * set by FEATURE_SECURE_PROCESSING, jaxp.properties file, jaxp system
++     * properties, and jaxp api properties
++     */
++    public static enum State {
++        //this order reflects the overriding order
++
++        DEFAULT("default"), FSP("FEATURE_SECURE_PROCESSING"),
++        JAXPDOTPROPERTIES("jaxp.properties"), SYSTEMPROPERTY("system property"),
++        APIPROPERTY("property");
++
++        final String literal;
++        State(String literal) {
++            this.literal = literal;
++        }
++
++        String literal() {
++            return literal;
++        }
++    }
++
++    /**
++     * Limits managed by the security manager
++     */
++    public static enum Limit {
++
++        ENTITY_EXPANSION_LIMIT(XalanConstants.JDK_ENTITY_EXPANSION_LIMIT,
++                XalanConstants.SP_ENTITY_EXPANSION_LIMIT, 0, 64000),
++        MAX_OCCUR_NODE_LIMIT(XalanConstants.JDK_MAX_OCCUR_LIMIT,
++                XalanConstants.SP_MAX_OCCUR_LIMIT, 0, 5000),
++        ELEMENT_ATTRIBUTE_LIMIT(XalanConstants.JDK_ELEMENT_ATTRIBUTE_LIMIT,
++                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),
++        PARAMETER_ENTITY_SIZE_LIMIT(XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT,
++                XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000);
++
++        final String apiProperty;
++        final String systemProperty;
++        final int defaultValue;
++        final int secureValue;
++
++        Limit(String apiProperty, String systemProperty, int value, int secureValue) {
++            this.apiProperty = apiProperty;
++            this.systemProperty = systemProperty;
++            this.defaultValue = value;
++            this.secureValue = secureValue;
++        }
++
++        public boolean equalsAPIPropertyName(String propertyName) {
++            return (propertyName == null) ? false : apiProperty.equals(propertyName);
++        }
++
++        public boolean equalsSystemPropertyName(String propertyName) {
++            return (propertyName == null) ? false : systemProperty.equals(propertyName);
++        }
++
++        public String apiProperty() {
++            return apiProperty;
++        }
++
++        String systemProperty() {
++            return systemProperty;
++        }
++
++        int defaultValue() {
++            return defaultValue;
++        }
++
++        int secureValue() {
++            return secureValue;
++        }
++    }
++
++    /**
++     * Map old property names with the new ones
++     */
++    public static enum NameMap {
++
++        ENTITY_EXPANSION_LIMIT(XalanConstants.SP_ENTITY_EXPANSION_LIMIT,
++                XalanConstants.ENTITY_EXPANSION_LIMIT),
++        MAX_OCCUR_NODE_LIMIT(XalanConstants.SP_MAX_OCCUR_LIMIT,
++                XalanConstants.MAX_OCCUR_LIMIT),
++        ELEMENT_ATTRIBUTE_LIMIT(XalanConstants.SP_ELEMENT_ATTRIBUTE_LIMIT,
++                XalanConstants.ELEMENT_ATTRIBUTE_LIMIT);
++        final String newName;
++        final String oldName;
++
++        NameMap(String newName, String oldName) {
++            this.newName = newName;
++            this.oldName = oldName;
++        }
++
++        String getOldName(String newName) {
++            if (newName.equals(this.newName)) {
++                return oldName;
++            }
++            return null;
++        }
++    }
++    /**
++     * Values of the properties
++     */
++    private final int[] values;
++    /**
++     * States of the settings for each property
++     */
++    private State[] states;
++    /**
++     * States that determine if properties are set explicitly
++     */
++    private boolean[] isSet;
++
++
++    /**
++     * Index of the special entityCountInfo property
++     */
++    private int indexEntityCountInfo = 10000;
++    private String printEntityCountInfo = "";
++
++    /**
++     * Default constructor. Establishes default values for known security
++     * vulnerabilities.
++     */
++    public XMLSecurityManager() {
++        this(false);
++    }
++
++    /**
++     * Instantiate Security Manager in accordance with the status of
++     * secure processing
++     * @param secureProcessing
++     */
++    public XMLSecurityManager(boolean secureProcessing) {
++        values = new int[Limit.values().length];
++        states = new State[Limit.values().length];
++        isSet = new boolean[Limit.values().length];
++        for (Limit limit : Limit.values()) {
++            if (secureProcessing) {
++                values[limit.ordinal()] = limit.secureValue();
++                states[limit.ordinal()] = State.FSP;
++            } else {
++                values[limit.ordinal()] = limit.defaultValue();
++                states[limit.ordinal()] = State.DEFAULT;
++            }
++        }
++        //read system properties or jaxp.properties
++        readSystemProperties();
++    }
++
++    /**
++     * Setting FEATURE_SECURE_PROCESSING explicitly
++     */
++    public void setSecureProcessing(boolean secure) {
++        for (Limit limit : Limit.values()) {
++            if (secure) {
++                setLimit(limit.ordinal(), State.FSP, limit.secureValue());
++            } else {
++                setLimit(limit.ordinal(), State.FSP, limit.defaultValue());
++            }
++        }
++    }
++
++    /**
++     * Set limit by property name and state
++     * @param propertyName property name
++     * @param state the state of the property
++     * @param value the value of the property
++     * @return true if the property is managed by the security manager; false
++     *              if otherwise.
++     */
++    public boolean setLimit(String propertyName, State state, Object value) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            setLimit(index, state, value);
++            return true;
++        }
++        return false;
++    }
++
++    /**
++     * Set the value for a specific limit.
++     *
++     * @param limit the limit
++     * @param state the state of the property
++     * @param value the value of the property
++     */
++    public void setLimit(Limit limit, State state, int value) {
++        setLimit(limit.ordinal(), state, value);
++    }
++
++    /**
++     * Set the value of a property by its index
++     *
++     * @param index the index of the property
++     * @param state the state of the property
++     * @param value the value of the property
++     */
++    public void setLimit(int index, State state, Object value) {
++        if (index == indexEntityCountInfo) {
++            //if it's explicitly set, it's treated as yes no matter the value
++            printEntityCountInfo = (String)value;
++        } else {
++            int temp = 0;
++            try {
++                temp = Integer.parseInt((String) value);
++                if (temp < 0) {
++                    temp = 0;
++                }
++            } catch (NumberFormatException e) {}
++            setLimit(index, state, temp);        }
++    }
++
++    /**
++     * Set the value of a property by its index
++     *
++     * @param index the index of the property
++     * @param state the state of the property
++     * @param value the value of the property
++     */
++    public void setLimit(int index, State state, int value) {
++        if (index == indexEntityCountInfo) {
++            //if it's explicitly set, it's treated as yes no matter the value
++            printEntityCountInfo = XalanConstants.JDK_YES;
++        } else {
++            //only update if it shall override
++            if (state.compareTo(states[index]) >= 0) {
++                values[index] = value;
++                states[index] = state;
++                isSet[index] = true;
++            }
++        }
++    }
++
++
++    /**
++     * Return the value of the specified property.
++     *
++     * @param propertyName the property name
++     * @return the value of the property as a string. If a property is managed
++     * by this manager, its value shall not be null.
++     */
++    public String getLimitAsString(String propertyName) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            return getLimitValueByIndex(index);
++        }
++
++        return null;
++    }
++
++    /**
++     * Return the value of a property by its ordinal
++     *
++     * @param limit the property
++     * @return value of a property
++     */
++    public String getLimitValueAsString(Limit limit) {
++        return Integer.toString(values[limit.ordinal()]);
++    }
++
++    /**
++     * Return the value of the specified property
++     *
++     * @param limit the property
++     * @return the value of the property
++     */
++    public int getLimit(Limit limit) {
++        return values[limit.ordinal()];
++    }
++
++    /**
++     * Return the value of a property by its ordinal
++     *
++     * @param index the index of a property
++     * @return value of a property
++     */
++    public int getLimitByIndex(int index) {
++        return values[index];
++    }
++    /**
++     * Return the value of a property by its index
++     *
++     * @param index the index of a property
++     * @return limit of a property as a string
++     */
++    public String getLimitValueByIndex(int index) {
++        if (index == indexEntityCountInfo) {
++            return printEntityCountInfo;
++        }
++
++        return Integer.toString(values[index]);
++    }
++    /**
++     * Return the state of the limit property
++     *
++     * @param limit the limit
++     * @return the state of the limit property
++     */
++    public State getState(Limit limit) {
++        return states[limit.ordinal()];
++    }
++
++    /**
++     * Return the state of the limit property
++     *
++     * @param limit the limit
++     * @return the state of the limit property
++     */
++    public String getStateLiteral(Limit limit) {
++        return states[limit.ordinal()].literal();
++    }
++
++    /**
++     * Get the index by property name
++     *
++     * @param propertyName property name
++     * @return the index of the property if found; return -1 if not
++     */
++    public int getIndex(String propertyName) {
++        for (Limit limit : Limit.values()) {
++            if (limit.equalsAPIPropertyName(propertyName)) {
++                //internally, ordinal is used as index
++                return limit.ordinal();
++            }
++        }
++        //special property to return entity count info
++        if (propertyName.equals(XalanConstants.JDK_ENTITY_COUNT_INFO)) {
++            return indexEntityCountInfo;
++        }
++        return -1;
++    }
++
++    /**
++     * Indicate if a property is set explicitly
++     * @param index
++     * @return
++     */
++    public boolean isSet(int index) {
++        return isSet[index];
++    }
++
++    public boolean printEntityCountInfo() {
++        return printEntityCountInfo.equals(XalanConstants.JDK_YES);
++    }
++    /**
++     * Read from system properties, or those in jaxp.properties
++     */
++    private void readSystemProperties() {
++
++        for (Limit limit : Limit.values()) {
++            if (!getSystemProperty(limit, limit.systemProperty())) {
++                //if system property is not found, try the older form if any
++                for (NameMap nameMap : NameMap.values()) {
++                    String oldName = nameMap.getOldName(limit.systemProperty());
++                    if (oldName != null) {
++                        getSystemProperty(limit, oldName);
++                    }
++                }
++            }
++        }
++
++    }
++
++    /**
++     * Read from system properties, or those in jaxp.properties
++     *
++     * @param property the type of the property
++     * @param sysPropertyName the name of system property
++     */
++    private boolean getSystemProperty(Limit limit, String sysPropertyName) {
++        try {
++            String value = SecuritySupport.getSystemProperty(sysPropertyName);
++            if (value != null && !value.equals("")) {
++                values[limit.ordinal()] = Integer.parseInt(value);
++                states[limit.ordinal()] = State.SYSTEMPROPERTY;
++                return true;
++            }
++
++            value = SecuritySupport.readJAXPProperty(sysPropertyName);
++            if (value != null && !value.equals("")) {
++                values[limit.ordinal()] = Integer.parseInt(value);
++                states[limit.ordinal()] = State.JAXPDOTPROPERTIES;
++                return true;
++            }
++        } catch (NumberFormatException e) {
++            //invalid setting
++            throw new NumberFormatException("Invalid setting for system property: " + limit.systemProperty());
++        }
++        return false;
++    }
++}
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityPropertyManager.java ./jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityPropertyManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityPropertyManager.java	2013-09-06 14:22:55.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityPropertyManager.java	2013-12-14 21:31:53.000000000 -0500
+@@ -94,6 +94,23 @@
+     }
+ 
+     /**
++     * Set limit by property name and state
++     * @param propertyName property name
++     * @param state the state of the property
++     * @param value the value of the property
++     * @return true if the property is managed by the security property manager;
++     *         false if otherwise.
++     */
++    public boolean setValue(String propertyName, State state, Object value) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            setValue(index, state, (String)value);
++            return true;
++        }
++        return false;
++    }
++
++    /**
+      * Set the value for a specific property.
+      *
+      * @param property the property
+@@ -121,6 +138,22 @@
+             states[index] = state;
+         }
+     }
++
++    /**
++     * Return the value of the specified property
++     *
++     * @param propertyName the property name
++     * @return the value of the property as a string
++     */
++    public String getValue(String propertyName) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            return getValueByIndex(index);
++        }
++
++        return null;
++    }
++
+     /**
+      * Return the value of the specified property
+      *
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java	2013-09-06 14:22:55.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java	2013-12-14 21:11:06.000000000 -0500
+@@ -86,7 +86,7 @@
+             if (input == null) {
+                 docToLoad = SystemIDResolver.getAbsoluteURI(docToLoad, currLoadedDoc);
+                 String accessError = SecuritySupport.checkAccess(docToLoad,
+-                        xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET),
++                        (String)xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET),
+                         XalanConstants.ACCESS_EXTERNAL_ALL);
+ 
+                 if (accessError != null) {
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java	2013-09-06 14:22:55.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java	2013-12-14 21:11:06.000000000 -0500
+@@ -87,7 +87,7 @@
+             if (input == null) {
+                 docToLoad = SystemIDResolver.getAbsoluteURI(docToLoad, currLoadedDoc);
+                 String accessError = SecuritySupport.checkAccess(docToLoad,
+-                        xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET),
++                        (String)xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET),
+                         XalanConstants.ACCESS_EXTERNAL_ALL);
+ 
+                 if (accessError != null) {
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java	2013-09-06 14:22:55.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java	2013-12-14 21:11:06.000000000 -0500
+@@ -28,6 +28,7 @@
+ import com.sun.org.apache.xalan.internal.utils.FactoryImpl;
+ import com.sun.org.apache.xalan.internal.utils.ObjectFactory;
+ import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
++import com.sun.org.apache.xalan.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodType;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type;
+@@ -487,6 +488,20 @@
+             }
+ 
+             final XMLReader reader = parser.getXMLReader();
++            try {
++                XMLSecurityManager securityManager =
++                        (XMLSecurityManager)_xsltc.getProperty(XalanConstants.SECURITY_MANAGER);
++                for (XMLSecurityManager.Limit limit : XMLSecurityManager.Limit.values()) {
++                    reader.setProperty(limit.apiProperty(), securityManager.getLimitValueAsString(limit));
++                }
++                if (securityManager.printEntityCountInfo()) {
++                    parser.setProperty(XalanConstants.JDK_ENTITY_COUNT_INFO, XalanConstants.JDK_YES);
++                }
++            } catch (SAXException se) {
++                System.err.println("Warning:  " + reader.getClass().getName() + ": "
++                            + se.getMessage());
++            }
++
+             return(parse(reader, input));
+         }
+         catch (ParserConfigurationException e) {
+@@ -565,7 +580,7 @@
+                 }
+                 path = SystemIDResolver.getAbsoluteURI(path);
+                 String accessError = SecuritySupport.checkAccess(path,
+-                        _xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET),
++                        (String)_xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET),
+                         XalanConstants.ACCESS_EXTERNAL_ALL);
+                 if (accessError != null) {
+                     ErrorMsg msg = new ErrorMsg(ErrorMsg.ACCESSING_XSLT_TARGET_ERR,
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java	2013-09-06 14:22:56.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java	2013-12-14 21:31:53.000000000 -0500
+@@ -44,11 +44,11 @@
+ import com.sun.org.apache.bcel.internal.classfile.JavaClass;
+ import com.sun.org.apache.xalan.internal.XalanConstants;
+ import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
++import com.sun.org.apache.xalan.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util;
+ import com.sun.org.apache.xml.internal.dtm.DTM;
+ 
+-import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
+ import org.xml.sax.InputSource;
+ import org.xml.sax.XMLReader;
+ 
+@@ -146,6 +146,7 @@
+      */
+     private String _accessExternalDTD = XalanConstants.EXTERNAL_ACCESS_DEFAULT;
+ 
++    private XMLSecurityManager _xmlSecurityManager;
+ 
+     /**
+      * XSLTC compiler constructor
+@@ -184,12 +185,14 @@
+     /**
+      * Return allowed protocols for accessing external stylesheet.
+      */
+-    public String getProperty(String name) {
++    public Object getProperty(String name) {
+         if (name.equals(XMLConstants.ACCESS_EXTERNAL_STYLESHEET)) {
+             return _accessExternalStylesheet;
+         }
+         else if (name.equals(XMLConstants.ACCESS_EXTERNAL_DTD)) {
+             return _accessExternalDTD;
++        } else if (name.equals(XalanConstants.SECURITY_MANAGER)) {
++            return _xmlSecurityManager;
+         }
+         return null;
+     }
+@@ -197,12 +200,14 @@
+     /**
+      * Set allowed protocols for accessing external stylesheet.
+      */
+-    public void setProperty(String name, String value) {
++    public void setProperty(String name, Object value) {
+         if (name.equals(XMLConstants.ACCESS_EXTERNAL_STYLESHEET)) {
+             _accessExternalStylesheet = (String)value;
+         }
+         else if (name.equals(XMLConstants.ACCESS_EXTERNAL_DTD)) {
+             _accessExternalDTD = (String)value;
++        } else if (name.equals(XalanConstants.SECURITY_MANAGER)) {
++            _xmlSecurityManager = (XMLSecurityManager)value;
+         }
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesHandlerImpl.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesHandlerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesHandlerImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesHandlerImpl.java	2013-12-14 21:31:53.000000000 -0500
+@@ -29,7 +29,7 @@
+ import javax.xml.transform.TransformerException;
+ import javax.xml.transform.URIResolver;
+ import javax.xml.transform.sax.TemplatesHandler;
+-
++import com.sun.org.apache.xalan.internal.XalanConstants;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.CompilerException;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.Parser;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.SourceLoader;
+@@ -103,6 +103,8 @@
+                 (String)tfactory.getAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET));
+         xsltc.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD,
+                 (String)tfactory.getAttribute(XMLConstants.ACCESS_EXTERNAL_DTD));
++        xsltc.setProperty(XalanConstants.SECURITY_MANAGER,
++                tfactory.getAttribute(XalanConstants.SECURITY_MANAGER));
+ 
+ 
+         if ("true".equals(tfactory.getAttribute(TransformerFactoryImpl.ENABLE_INLINING)))
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	2013-12-14 21:31:53.000000000 -0500
+@@ -77,6 +77,7 @@
+ import com.sun.org.apache.xalan.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xalan.internal.utils.XMLSecurityPropertyManager.Property;
+ import com.sun.org.apache.xalan.internal.utils.XMLSecurityPropertyManager.State;
++import com.sun.org.apache.xalan.internal.utils.XMLSecurityManager;
+ 
+ import org.xml.sax.InputSource;
+ import org.xml.sax.XMLFilter;
+@@ -227,17 +228,17 @@
+      */
+     private boolean _useServicesMechanism;
+ 
+-    /**
++     /**
+      * protocols allowed for external references set by the stylesheet processing instruction, Import and Include element.
+      */
+     private String _accessExternalStylesheet = XalanConstants.EXTERNAL_ACCESS_DEFAULT;
+-
+      /**
+      * protocols allowed for external DTD references in source file and/or stylesheet.
+      */
+     private String _accessExternalDTD = XalanConstants.EXTERNAL_ACCESS_DEFAULT;
+ 
+     private XMLSecurityPropertyManager _xmlSecurityPropertyMgr;
++    private XMLSecurityManager _xmlSecurityManager;
+ 
+     /**
+      * javax.xml.transform.sax.TransformerFactory implementation.
+@@ -264,6 +265,9 @@
+                 Property.ACCESS_EXTERNAL_DTD);
+         _accessExternalStylesheet = _xmlSecurityPropertyMgr.getValue(
+                 Property.ACCESS_EXTERNAL_STYLESHEET);
++
++        //Parser's security manager
++        _xmlSecurityManager = new XMLSecurityManager(true);
+     }
+ 
+     /**
+@@ -322,11 +326,21 @@
+               return Boolean.TRUE;
+             else
+               return Boolean.FALSE;
++        } else if (name.equals(XalanConstants.SECURITY_MANAGER)) {
++            return _xmlSecurityManager;
+         }
+ 
+-        int index = _xmlSecurityPropertyMgr.getIndex(name);
+-        if (index > -1) {
+-            return _xmlSecurityPropertyMgr.getValueByIndex(index);
++        /** Check to see if the property is managed by the security manager **/
++        String propertyValue = (_xmlSecurityManager != null) ?
++                _xmlSecurityManager.getLimitAsString(name) : null;
++        if (propertyValue != null) {
++            return propertyValue;
++        } else {
++            propertyValue = (_xmlSecurityPropertyMgr != null) ?
++                _xmlSecurityPropertyMgr.getValue(name) : null;
++            if (propertyValue != null) {
++                return propertyValue;
++            }
+         }
+ 
+         // Throw an exception for all other attributes
+@@ -429,10 +443,13 @@
+             }
+         }
+ 
+-        int index = _xmlSecurityPropertyMgr.getIndex(name);
+-        if (index > -1) {
+-            _xmlSecurityPropertyMgr.setValue(index,
+-                    State.APIPROPERTY, (String)value);
++        if (_xmlSecurityManager != null &&
++                _xmlSecurityManager.setLimit(name, XMLSecurityManager.State.APIPROPERTY, value)) {
++            return;
++        }
++
++        if (_xmlSecurityPropertyMgr != null &&
++            _xmlSecurityPropertyMgr.setValue(name, XMLSecurityPropertyManager.State.APIPROPERTY, value)) {
+             _accessExternalDTD = _xmlSecurityPropertyMgr.getValue(
+                     Property.ACCESS_EXTERNAL_DTD);
+             _accessExternalStylesheet = _xmlSecurityPropertyMgr.getValue(
+@@ -482,6 +499,7 @@
+                 throw new TransformerConfigurationException(err.toString());
+             }
+             _isNotSecureProcessing = !value;
++            _xmlSecurityManager.setSecureProcessing(value);
+ 
+             // set external access restriction when FSP is explicitly set
+             if (value && XalanConstants.IS_JDK8_OR_ABOVE) {
+@@ -851,6 +869,7 @@
+         if (!_isNotSecureProcessing) xsltc.setSecureProcessing(true);
+         xsltc.setProperty(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, _accessExternalStylesheet);
+         xsltc.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, _accessExternalDTD);
++        xsltc.setProperty(XalanConstants.SECURITY_MANAGER, _xmlSecurityManager);
+         xsltc.init();
+ 
+         // Set a document loader (for xsl:include/import) if defined
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -25,6 +25,7 @@
+ 
+ import com.sun.org.apache.xalan.internal.XalanConstants;
+ import com.sun.org.apache.xalan.internal.utils.FactoryImpl;
++import com.sun.org.apache.xalan.internal.utils.XMLSecurityManager;
+ import java.io.File;
+ import java.io.FileOutputStream;
+ import java.io.IOException;
+@@ -218,6 +219,7 @@
+      */
+     private String _accessExternalDTD = XalanConstants.EXTERNAL_ACCESS_DEFAULT;
+ 
++    private XMLSecurityManager _securityManager;
+     /**
+      * A hashtable to store parameters for the identity transform. These
+      * are not needed during the transformation, but we must keep track of
+@@ -272,8 +274,11 @@
+         _useServicesMechanism = _tfactory.useServicesMechnism();
+         _accessExternalStylesheet = (String)_tfactory.getAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET);
+         _accessExternalDTD = (String)_tfactory.getAttribute(XMLConstants.ACCESS_EXTERNAL_DTD);
++        _securityManager = (XMLSecurityManager)_tfactory.getAttribute(XalanConstants.SECURITY_MANAGER);
+         _readerManager = XMLReaderManager.getInstance(_useServicesMechanism);
+         _readerManager.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, _accessExternalDTD);
++        _readerManager.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, _isSecureProcessing);
++        _readerManager.setProperty(XalanConstants.SECURITY_MANAGER, _securityManager);
+         //_isIncremental = tfactory._incremental;
+     }
+ 
+@@ -289,6 +294,7 @@
+      */
+     public void setSecureProcessing(boolean flag) {
+         _isSecureProcessing = flag;
++        _readerManager.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, _isSecureProcessing);
+     }
+     /**
+      * Return the state of the services mechanism feature.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/Util.java ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/Util.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/Util.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/Util.java	2013-12-14 21:11:06.000000000 -0500
+@@ -23,6 +23,7 @@
+ 
+ package com.sun.org.apache.xalan.internal.xsltc.trax;
+ 
++import com.sun.org.apache.xalan.internal.XalanConstants;
+ import java.io.InputStream;
+ import java.io.Reader;
+ 
+@@ -43,6 +44,7 @@
+ import javax.xml.transform.stream.StreamSource;
+ 
+ import com.sun.org.apache.xalan.internal.utils.FactoryImpl;
++import com.sun.org.apache.xalan.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC;
+ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ErrorMsg;
+ 
+@@ -105,6 +107,13 @@
+                     if (reader == null) {
+                        try {
+                            reader= XMLReaderFactory.createXMLReader();
++                           try {
++                                reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING,
++                                            xsltc.isSecureProcessing());
++                           } catch (SAXNotRecognizedException e) {
++                                System.err.println("Warning:  " + reader.getClass().getName() + ": "
++                                        + e.getMessage());
++                           }
+                        } catch (Exception e ) {
+                            try {
+ 
+@@ -144,6 +153,22 @@
+                                 + e.getMessage());
+                     }
+ 
++                    try {
++                        XMLSecurityManager securityManager =
++                                (XMLSecurityManager)xsltc.getProperty(XalanConstants.SECURITY_MANAGER);
++                        if (securityManager != null) {
++                            for (XMLSecurityManager.Limit limit : XMLSecurityManager.Limit.values()) {
++                                reader.setProperty(limit.apiProperty(),
++                                        securityManager.getLimitValueAsString(limit));
++                            }
++                            if (securityManager.printEntityCountInfo()) {
++                                reader.setProperty(XalanConstants.JDK_ENTITY_COUNT_INFO, XalanConstants.JDK_YES);
++                            }
++                        }
++                    } catch (SAXException se) {
++                        System.err.println("Warning:  " + reader.getClass().getName() + ": "
++                                    + se.getMessage());
++                    }
+                     xsltc.setXMLReader(reader);
+                 }catch (SAXNotRecognizedException snre ) {
+                   throw new TransformerConfigurationException
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMConfigurationImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMConfigurationImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMConfigurationImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/dom/DOMConfigurationImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -33,6 +33,7 @@
+ import com.sun.org.apache.xerces.internal.util.PropertyState;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
+ import com.sun.org.apache.xerces.internal.utils.ObjectFactory;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XMLDTDContentModelHandler;
+ import com.sun.org.apache.xerces.internal.xni.XMLDTDHandler;
+@@ -59,6 +60,7 @@
+ import org.w3c.dom.ls.LSResourceResolver;
+ 
+ 
++
+ /**
+  * Xerces implementation of DOMConfiguration that maintains a table of recognized parameters.
+  *
+@@ -156,6 +158,9 @@
+     protected static final String SCHEMA_DV_FACTORY =
+         Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_DV_FACTORY_PROPERTY;
+ 
++    /** Property identifier: Security manager. */
++    private static final String SECURITY_MANAGER = Constants.SECURITY_MANAGER;
++
+     /** Property identifier: Security property manager. */
+     private static final String XML_SECURITY_PROPERTY_MANAGER =
+             Constants.XML_SECURITY_PROPERTY_MANAGER;
+@@ -279,6 +284,7 @@
+             JAXP_SCHEMA_LANGUAGE,
+             DTD_VALIDATOR_FACTORY_PROPERTY,
+             SCHEMA_DV_FACTORY,
++            SECURITY_MANAGER,
+             XML_SECURITY_PROPERTY_MANAGER
+         };
+         addRecognizedProperties(recognizedProperties);
+@@ -313,6 +319,8 @@
+         fValidationManager = createValidationManager();
+         setProperty(VALIDATION_MANAGER, fValidationManager);
+ 
++        setProperty(SECURITY_MANAGER, new XMLSecurityManager(true));
++
+         setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER,
+                 new XMLSecurityPropertyManager());
+ 
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java	2013-12-14 21:11:06.000000000 -0500
+@@ -174,8 +174,6 @@
+     /** JAXP schemaSource language: when used internally may include DTD namespace (DOM) */
+     public static final String SCHEMA_LANGUAGE = "schemaLanguage";
+ 
+-    public static final String SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
+-
+     /** JAXP Standard property prefix ("http://javax.xml.XMLConstants/property/"). */
+     public static final String JAXPAPI_PROPERTY_PREFIX =
+         "http://javax.xml.XMLConstants/property/";
+@@ -209,6 +207,107 @@
+     public static final boolean IS_JDK8_OR_ABOVE = isJavaVersionAtLeast(8);
+ 
+     //
++    // Implementation limits: corresponding System Properties of the above
++    // API properties
++    //
++    /**
++     * JDK entity expansion limit; Note that the existing system property
++     * "entityExpansionLimit" with no prefix is still observed
++     */
++    public static final String JDK_ENTITY_EXPANSION_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "entityExpansionLimit";
++
++    /**
++     * JDK element attribute limit; Note that the existing system property
++     * "elementAttributeLimit" with no prefix is still observed
++     */
++    public static final String JDK_ELEMENT_ATTRIBUTE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "elementAttributeLimit";
++
++    /**
++     * JDK maxOccur limit; Note that the existing system property
++     * "maxOccurLimit" with no prefix is still observed
++     */
++    public static final String JDK_MAX_OCCUR_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxOccurLimit";
++
++    /**
++     * JDK total entity size limit
++     */
++    public static final String JDK_TOTAL_ENTITY_SIZE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "totalEntitySizeLimit";
++
++    /**
++     * JDK maximum general entity size limit
++     */
++    public static final String JDK_GENEAL_ENTITY_SIZE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxGeneralEntitySizeLimit";
++    /**
++     * JDK maximum parameter entity size limit
++     */
++    public static final String JDK_PARAMETER_ENTITY_SIZE_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxParameterEntitySizeLimit";
++    /**
++     * JDK maximum XML name limit
++     */
++    public static final String JDK_XML_NAME_LIMIT =
++            ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit";
++    /**
++     * JDK property to allow printing out information from the limit analyzer
++     */
++    public static final String JDK_ENTITY_COUNT_INFO =
++            ORACLE_JAXP_PROPERTY_PREFIX + "getEntityCountInfo";
++
++    //
++    // Implementation limits: API properties
++    //
++    /**
++     * JDK entity expansion limit; Note that the existing system property
++     * "entityExpansionLimit" with no prefix is still observed
++     */
++    public static final String SP_ENTITY_EXPANSION_LIMIT = "jdk.xml.entityExpansionLimit";
++
++    /**
++     * JDK element attribute limit; Note that the existing system property
++     * "elementAttributeLimit" with no prefix is still observed
++     */
++    public static final String SP_ELEMENT_ATTRIBUTE_LIMIT =  "jdk.xml.elementAttributeLimit";
++
++    /**
++     * JDK maxOccur limit; Note that the existing system property
++     * "maxOccurLimit" with no prefix is still observed
++     */
++    public static final String SP_MAX_OCCUR_LIMIT = "jdk.xml.maxOccurLimit";
++
++    /**
++     * JDK total entity size limit
++     */
++    public static final String SP_TOTAL_ENTITY_SIZE_LIMIT = "jdk.xml.totalEntitySizeLimit";
++
++    /**
++     * JDK maximum general entity size limit
++     */
++    public static final String SP_GENEAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
++    /**
++     * JDK maximum parameter entity size limit
++     */
++    public static final String SP_PARAMETER_ENTITY_SIZE_LIMIT = "jdk.xml.maxParameterEntitySizeLimit";
++    /**
++     * JDK maximum XML name limit
++     */
++    public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
++
++    //legacy System Properties
++    public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
++    public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
++    public final static String MAX_OCCUR_LIMIT = "maxOccurLimit";
++
++    /**
++     * A string "yes" that can be used for properties such as getEntityCountInfo
++     */
++    public static final String JDK_YES = "yes";
++
++    //
+     // DOM features
+     //
+ 
+@@ -443,7 +542,7 @@
+     public static final String LOCALE_PROPERTY = "locale";
+ 
+     /** property identifier: security manager. */
+-    protected static final String SECURITY_MANAGER =
++    public static final String SECURITY_MANAGER =
+         Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY;
+ 
+ 
+@@ -511,9 +610,6 @@
+      */
+     public final static String ATTRIBUTE_DECLARED = "ATTRIBUTE_DECLARED";
+ 
+-        public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
+-
+-        public final static String MAX_OCCUR_LIMIT = "maxOccurLimit";
+ 
+     /**
+      * {@link org.w3c.dom.TypeInfo} associated with current element/attribute
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/PropertyManager.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/PropertyManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/PropertyManager.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/PropertyManager.java	2013-12-14 21:11:06.000000000 -0500
+@@ -25,6 +25,7 @@
+ 
+ package com.sun.org.apache.xerces.internal.impl;
+ 
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.xml.internal.stream.StaxEntityResolverWrapper;
+ import java.util.HashMap;
+@@ -50,12 +51,16 @@
+ 
+     private static final String STRING_INTERNING = "http://xml.org/sax/features/string-interning";
+ 
++    /** Property identifier: Security manager. */
++    private static final String SECURITY_MANAGER = Constants.SECURITY_MANAGER;
++
+     /** Property identifier: Security property manager. */
+     private static final String XML_SECURITY_PROPERTY_MANAGER =
+             Constants.XML_SECURITY_PROPERTY_MANAGER;
+ 
+     HashMap supportedProps = new HashMap();
+ 
++    private XMLSecurityManager fSecurityManager;
+     private XMLSecurityPropertyManager fSecurityPropertyMgr;
+ 
+     public static final int CONTEXT_READER = 1;
+@@ -82,6 +87,7 @@
+ 
+         HashMap properties = propertyManager.getProperties();
+         supportedProps.putAll(properties);
++        fSecurityManager = (XMLSecurityManager)getProperty(SECURITY_MANAGER);
+         fSecurityPropertyMgr = (XMLSecurityPropertyManager)getProperty(XML_SECURITY_PROPERTY_MANAGER);
+     }
+ 
+@@ -124,6 +130,8 @@
+         supportedProps.put(Constants.XERCES_FEATURE_PREFIX + Constants.WARN_ON_DUPLICATE_ENTITYDEF_FEATURE, new Boolean(false));
+         supportedProps.put(Constants.XERCES_FEATURE_PREFIX + Constants.WARN_ON_UNDECLARED_ELEMDEF_FEATURE, new Boolean(false));
+ 
++        fSecurityManager = new XMLSecurityManager(true);
++        supportedProps.put(SECURITY_MANAGER, fSecurityManager);
+         fSecurityPropertyMgr = new XMLSecurityPropertyManager();
+         supportedProps.put(XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
+     }
+@@ -142,6 +150,7 @@
+      */
+     public boolean containsProperty(String property){
+         return supportedProps.containsKey(property) ||
++                (fSecurityManager != null && fSecurityManager.getIndex(property) > -1) ||
+                 (fSecurityPropertyMgr!=null && fSecurityPropertyMgr.getIndex(property) > -1) ;
+     }
+ 
+@@ -169,12 +178,34 @@
+             supportedProps.put( Constants.XERCES_PROPERTY_PREFIX + Constants.STAX_ENTITY_RESOLVER_PROPERTY , new StaxEntityResolverWrapper((XMLResolver)value)) ;
+         }
+ 
+-        int index = (fSecurityPropertyMgr != null) ? fSecurityPropertyMgr.getIndex(property) : -1;
+-        if (index > -1) {
+-            fSecurityPropertyMgr.setValue(index,
+-                    XMLSecurityPropertyManager.State.APIPROPERTY, (String)value);
+-        } else {
+-            supportedProps.put(property, value);
++        /**
++         * It's possible for users to set a security manager through the interface.
++         * If it's the old SecurityManager, convert it to the new XMLSecurityManager
++         */
++        if (property.equals(Constants.SECURITY_MANAGER)) {
++            fSecurityManager = XMLSecurityManager.convert(value, fSecurityManager);
++            supportedProps.put(Constants.SECURITY_MANAGER, fSecurityManager);
++            return;
++        }
++        if (property.equals(Constants.XML_SECURITY_PROPERTY_MANAGER)) {
++            if (value == null) {
++                fSecurityPropertyMgr = new XMLSecurityPropertyManager();
++            } else {
++                fSecurityPropertyMgr = (XMLSecurityPropertyManager)value;
++            }
++            supportedProps.put(Constants.XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
++            return;
++        }
++
++        //check if the property is managed by security manager
++        if (fSecurityManager == null ||
++                !fSecurityManager.setLimit(property, XMLSecurityManager.State.APIPROPERTY, value)) {
++            //check if the property is managed by security property manager
++            if (fSecurityPropertyMgr == null ||
++                    !fSecurityPropertyMgr.setValue(property, XMLSecurityPropertyManager.State.APIPROPERTY, value)) {
++                //fall back to the existing property manager
++                supportedProps.put(property, value);
++            }
+         }
+ 
+         if(equivalentProperty != null){
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XML11NSDocumentScannerImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XML11NSDocumentScannerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XML11NSDocumentScannerImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XML11NSDocumentScannerImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -108,6 +108,7 @@
+  * @author Elena Litani, IBM
+  * @author Michael Glavassevich, IBM
+  * @author Sunitha Reddy, Sun Microsystems
++ * @version $Id: XML11NSDocumentScannerImpl.java,v 1.6 2010-11-01 04:39:40 joehw Exp $
+  */
+ public class XML11NSDocumentScannerImpl extends XML11DocumentScannerImpl {
+ 
+@@ -236,7 +237,8 @@
+ 
+             // attributes
+             scanAttribute(fAttributes);
+-            if (fSecurityManager != null && fAttributes.getLength() > fElementAttributeLimit){
++            if (fSecurityManager != null && (!fSecurityManager.isNoLimit(fElementAttributeLimit)) &&
++                    fAttributes.getLength() > fElementAttributeLimit){
+                 fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+                                              "ElementAttributeLimit",
+                                              new Object[]{rawname, new Integer(fElementAttributeLimit) },
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -44,6 +44,8 @@
+ 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.XMLSecurityManager;
++import com.sun.xml.internal.stream.Entity;
+ 
+ /**
+  * This class is responsible for scanning the declarations found
+@@ -66,7 +68,7 @@
+  * @author Glenn Marcy, IBM
+  * @author Eric Ye, IBM
+  *
+- * @version $Id: XMLDTDScannerImpl.java,v 1.7 2007/09/26 12:52:40 ndw Exp $
++ * @version $Id: XMLDTDScannerImpl.java,v 1.8 2010-11-01 04:39:41 joehw Exp $
+  */
+ public class XMLDTDScannerImpl
+ extends XMLScanner
+@@ -1545,7 +1547,7 @@
+ 
+         // internal entity
+         if (systemId == null) {
+-            scanEntityValue(fLiteral, fLiteral2);
++            scanEntityValue(name, isPEDecl, fLiteral, fLiteral2);
+             // since we need it's value anyway, let's snag it so it doesn't get corrupted
+             // if a new load takes place before we store the entity values
+             fStringBuffer.clear();
+@@ -1610,7 +1612,7 @@
+      * the use of scanCharReferenceValue), and fStringBuffer2, anything in them
+      * at the time of calling is lost.
+      */
+-    protected final void scanEntityValue(XMLString value,
++    protected final void scanEntityValue(String entityName, boolean isPEDecl, XMLString value,
+     XMLString nonNormalizedValue)
+     throws IOException, XNIException {
+         int quote = fEntityScanner.scanChar();
+@@ -1622,10 +1624,20 @@
+ 
+         XMLString literal = fString;
+         XMLString literal2 = fString;
++        int countChar = 0;
++        if (fLimitAnalyzer == null && fSecurityManager != null) {
++            fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
++            fLimitAnalyzer.startEntity(entityName);
++        }
++
+         if (fEntityScanner.scanLiteral(quote, fString) != quote) {
+             fStringBuffer.clear();
+             fStringBuffer2.clear();
+             do {
++                if (isPEDecl && fLimitAnalyzer != null) {
++                    checkLimit("%" + entityName, fString.length + countChar);
++                }
++                countChar = 0;
+                 fStringBuffer.append(fString);
+                 fStringBuffer2.append(fString);
+                 if (fEntityScanner.skipChar('&')) {
+@@ -1685,6 +1697,7 @@
+                     }
+                 }
+                 else {
++                    countChar++;
+                     int c = fEntityScanner.peekChar();
+                     if (XMLChar.isHighSurrogate(c)) {
+                         scanSurrogates(fStringBuffer2);
+@@ -1708,9 +1721,17 @@
+             fStringBuffer2.append(fString);
+             literal = fStringBuffer;
+             literal2 = fStringBuffer2;
++        } else {
++            if (isPEDecl) {
++                checkLimit("%" + entityName, literal);
++        }
+         }
+         value.setValues(literal);
+         nonNormalizedValue.setValues(literal2);
++        if (fLimitAnalyzer != null) {
++            fLimitAnalyzer.endEntity(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT, entityName);
++        }
++
+         if (!fEntityScanner.skipChar(quote)) {
+             reportFatalError("CloseQuoteMissingInDecl", null);
+         }
+@@ -2126,6 +2147,43 @@
+         //new SymbolTable());
+     }
+ 
++    /**
++     * Add the count of the content buffer and check if the accumulated
++     * value exceeds the limit
++     * @param entityName entity name
++     * @param buffer content buffer
++     */
++    private void checkLimit(String entityName, XMLString buffer) {
++        checkLimit(entityName, buffer.length);
++    }
++
++    /**
++     * Add the count and check limit
++     * @param entityName entity name
++     * @param len length of the buffer
++     */
++    private void checkLimit(String entityName, int len) {
++        if (fLimitAnalyzer == null) {
++            fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
++        }
++        fLimitAnalyzer.addValue(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT, entityName, len);
++        if (fSecurityManager.isOverLimit(XMLSecurityManager.Limit.PARAMETER_ENTITY_SIZE_LIMIT)) {
++                    fSecurityManager.debugPrint();
++            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();
++            reportFatalError("TotalEntitySizeLimit",
++                new Object[]{fLimitAnalyzer.getTotalValue(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT),
++                fSecurityManager.getLimit(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT),
++                fSecurityManager.getStateLiteral(XMLSecurityManager.Limit.TOTAL_ENTITY_SIZE_LIMIT)});
++        }
++
++    }
++
+     public DTDGrammar getGrammar(){
+         return nvGrammarInfo;
+     }
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -50,12 +50,14 @@
+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
+ import com.sun.org.apache.xerces.internal.impl.Constants;
+ import com.sun.org.apache.xerces.internal.impl.XMLEntityHandler;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.NamespaceSupport;
+ import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
++import com.sun.org.apache.xerces.internal.utils.XMLLimitAnalyzer;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager.Limit;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager.State;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
+-import com.sun.xml.internal.stream.Entity;
+ import javax.xml.XMLConstants;
+ import javax.xml.stream.XMLStreamConstants;
+ import javax.xml.stream.events.XMLEvent;
+@@ -165,7 +167,7 @@
+ 
+     /** Feature identifier: standard uri conformant */
+     protected static final String STANDARD_URI_CONFORMANT =
+-            Constants.XERCES_FEATURE_PREFIX +Constants.STANDARD_URI_CONFORMANT_FEATURE;
++            Constants.XERCES_FEATURE_PREFIX + Constants.STANDARD_URI_CONFORMANT_FEATURE;
+ 
+     /** Property identifier: Security property manager. */
+     private static final String XML_SECURITY_PROPERTY_MANAGER =
+@@ -213,11 +215,8 @@
+     };
+ 
+     private static final char [] cdata = {'[','C','D','A','T','A','['};
+-    private static final char [] endTag = {'<','/'};
+-
+-    //this variable is also used by XMLDocumentScannerImpl in the same package
+     static final char [] xmlDecl = {'<','?','x','m','l'};
+-
++    private static final char [] endTag = {'<','/'};
+     // debugging
+ 
+     /** Debug scanner state. */
+@@ -316,6 +315,7 @@
+     protected String fDeclaredEncoding =  null;
+     /** Xerces Feature: Disallow doctype declaration. */
+     protected boolean fDisallowDoctype = false;
++
+     /**
+      * comma-delimited list of protocols that are allowed for the purpose
+      * of accessing external dtd or entity references
+@@ -384,7 +384,6 @@
+ 
+     protected boolean foundBuiltInRefs = false;
+ 
+-    protected SecurityManager fSecurityManager = null;
+ 
+     //skip element algorithm
+     static final short MAX_DEPTH_LIMIT = 5 ;
+@@ -571,8 +570,11 @@
+         // xerces features
+         fReportCdataEvent = componentManager.getFeature(Constants.STAX_REPORT_CDATA_EVENT, true);
+ 
+-        fSecurityManager = (SecurityManager)componentManager.getProperty(Constants.SECURITY_MANAGER, null);
+-        fElementAttributeLimit = (fSecurityManager != null)?fSecurityManager.getElementAttrLimit():0;
++        fSecurityManager = (XMLSecurityManager)componentManager.getProperty(Constants.SECURITY_MANAGER, null);
++        fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
++
++        fElementAttributeLimit = (fSecurityManager != null)?
++                fSecurityManager.getLimit(XMLSecurityManager.Limit.ELEMENT_ATTRIBUTE_LIMIT):0;
+ 
+         fNotifyBuiltInRefs = componentManager.getFeature(NOTIFY_BUILTIN_REFS, false);
+ 
+@@ -598,9 +600,6 @@
+         //xxx: external entities are supported in Xerces
+         // it would be good to define feature for this case
+         fSupportExternalEntities = true;
+-        fSupportExternalEntities = true;
+-        fSupportExternalEntities = true;
+-        fSupportExternalEntities = true;
+         fReplaceEntityReferences = true;
+         fIsCoalesce = false;
+ 
+@@ -667,10 +666,13 @@
+ 
+         dtdGrammarUtil = null;
+ 
+-         // JAXP 1.5 features and properties
++        // JAXP 1.5 features and properties
+         XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager)
+                 propertyManager.getProperty(XML_SECURITY_PROPERTY_MANAGER);
+         fAccessExternalDTD = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD);
++
++        fSecurityManager = (XMLSecurityManager)propertyManager.getProperty(Constants.SECURITY_MANAGER);
++        fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
+     } // reset(XMLComponentManager)
+ 
+     /**
+@@ -769,10 +771,10 @@
+ 
+         //JAXP 1.5 properties
+         if (propertyId.equals(XML_SECURITY_PROPERTY_MANAGER))
+-        {
++            {
+             XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager)value;
+             fAccessExternalDTD = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD);
+-        }
++            }
+ 
+     } // setProperty(String,Object)
+ 
+@@ -1322,7 +1324,8 @@
+             fAddDefaultAttr = true;
+             do {
+                 scanAttribute(fAttributes);
+-                if (fSecurityManager != null && fAttributes.getLength() > fElementAttributeLimit){
++                if (fSecurityManager != null && !fSecurityManager.isNoLimit(fElementAttributeLimit) &&
++                        fAttributes.getLength() > fElementAttributeLimit){
+                     fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+                                                  "ElementAttributeLimit",
+                                                  new Object[]{rawname, new Integer(fAttributes.getLength()) },
+@@ -2036,6 +2039,13 @@
+ 
+     } // getDriverName():String
+ 
++    /**
++     * Check the protocol used in the systemId against allowed protocols
++     *
++     * @param systemId the Id of the URI
++     * @param allowedProtocols a list of allowed protocols separated by comma
++     * @return the name of the protocol if rejected, null otherwise
++     */
+     String checkAccess(String systemId, String allowedProtocols) throws IOException {
+         String baseSystemId = fEntityScanner.getBaseSystemId();
+         String expandedSystemId = fEntityManager.expandSystemId(systemId, baseSystemId,fStrictURI);
+@@ -2833,6 +2843,8 @@
+                             if(DEBUG){
+                                 System.out.println("NOT USING THE BUFFER, STRING = " + fTempString.toString());
+                             }
++                            //check limit before returning event
++                            checkLimit(fContentBuffer);
+                             if(dtdGrammarUtil!= null && dtdGrammarUtil.isIgnorableWhiteSpace(fContentBuffer)){
+                                 if(DEBUG)System.out.println("Return SPACE EVENT");
+                                 return XMLEvent.SPACE;
+@@ -2931,6 +2943,8 @@
+                             fLastSectionWasCharacterData = true ;
+                             continue;
+                         }else{
++                            //check limit before returning event
++                            checkLimit(fContentBuffer);
+                             if(dtdGrammarUtil!= null && dtdGrammarUtil.isIgnorableWhiteSpace(fContentBuffer)){
+                                 if(DEBUG)System.out.println("Return SPACE EVENT");
+                                 return XMLEvent.SPACE;
+@@ -3141,6 +3155,30 @@
+             } //while loop
+         }//next
+ 
++        /**
++         * Add the count of the content buffer and check if the accumulated
++         * value exceeds the limit
++         * @param buffer content buffer
++         */
++        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();
++                    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)});
++                }
++                if (fSecurityManager.isOverLimit(Limit.TOTAL_ENTITY_SIZE_LIMIT)) {
++                    fSecurityManager.debugPrint();
++                    reportFatalError("TotalEntitySizeLimit",
++                        new Object[]{fLimitAnalyzer.getTotalValue(Limit.TOTAL_ENTITY_SIZE_LIMIT),
++                        fSecurityManager.getLimit(Limit.TOTAL_ENTITY_SIZE_LIMIT),
++                        fSecurityManager.getStateLiteral(Limit.TOTAL_ENTITY_SIZE_LIMIT)});
++                }
++            }
++        }
+ 
+         //
+         // Protected methods
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java	2013-12-14 21:11:06.000000000 -0500
+@@ -18,19 +18,17 @@
+  * limitations under the License.
+  */
+ 
+-package com.sun.org.apache.xerces.internal.impl ;
++package com.sun.org.apache.xerces.internal.impl;
+ 
+-import com.sun.org.apache.xerces.internal.impl.Constants;
+ import com.sun.org.apache.xerces.internal.impl.io.ASCIIReader;
+ import com.sun.org.apache.xerces.internal.impl.io.UCSReader;
+ import com.sun.org.apache.xerces.internal.impl.io.UTF8Reader;
+ import com.sun.org.apache.xerces.internal.impl.msg.XMLMessageFormatter;
+-import com.sun.org.apache.xerces.internal.impl.XMLEntityHandler;
+ import com.sun.org.apache.xerces.internal.impl.validation.ValidationManager;
+ import com.sun.org.apache.xerces.internal.util.*;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+-import com.sun.org.apache.xerces.internal.util.URI;
+ import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
++import com.sun.org.apache.xerces.internal.utils.XMLLimitAnalyzer;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
+ import com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier;
+@@ -174,7 +172,6 @@
+     /** access external dtd: file protocol */
+     static final String EXTERNAL_ACCESS_DEFAULT = Constants.EXTERNAL_ACCESS_DEFAULT;
+ 
+-
+     // recognized features and properties
+ 
+     /** Recognized features. */
+@@ -307,6 +304,7 @@
+ 
+     /** used to restrict external access */
+     protected String fAccessExternalDTD = EXTERNAL_ACCESS_DEFAULT;
++
+     // settings
+ 
+     /**
+@@ -324,9 +322,12 @@
+      */
+     protected int fBufferSize = DEFAULT_BUFFER_SIZE;
+ 
+-    // stores defaults for entity expansion limit if it has
+-    // been set on the configuration.
+-    protected SecurityManager fSecurityManager = null;
++    /** Security Manager */
++    protected XMLSecurityManager fSecurityManager = null;
++
++    protected XMLLimitAnalyzer fLimitAnalyzer = null;
++
++    protected int entityExpansionIndex;
+ 
+     /**
+      * True if the document entity is standalone. This should really
+@@ -352,10 +353,6 @@
+     /** XML 1.1 entity scanner. */
+     protected XMLEntityScanner fXML11EntityScanner;
+ 
+-    /** entity expansion limit (contains useful data if and only if
+-    fSecurityManager is non-null) */
+-    protected int fEntityExpansionLimit = 0;
+-
+     /** count of entities expanded: */
+     protected int fEntityExpansionCount = 0;
+ 
+@@ -833,6 +830,9 @@
+         fCurrentEntity.setEncodingExternallySpecified(encodingExternallySpecified);
+         fEntityScanner.setCurrentEntity(fCurrentEntity);
+         fResourceIdentifier.setValues(publicId, literalSystemId, baseSystemId, expandedSystemId);
++        if (fLimitAnalyzer != null) {
++            fLimitAnalyzer.startEntity(name);
++        }
+         return encoding;
+     } //setupCurrentEntity(String, XMLInputSource, boolean, boolean):  String
+ 
+@@ -1294,10 +1294,13 @@
+         //expansions exceeds the entity expansion limit, parser will throw fatal error.
+         // Note that this represents the nesting level of open entities.
+         fEntityExpansionCount++;
+-        if( fSecurityManager != null && fEntityExpansionCount > fEntityExpansionLimit ){
+-            fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+-                                             "EntityExpansionLimitExceeded",
+-                                             new Object[]{new Integer(fEntityExpansionLimit) },
++        if(fLimitAnalyzer != null) {
++           fLimitAnalyzer.addValue(entityExpansionIndex, name, 1);
++        }
++        if( fSecurityManager != null && fSecurityManager.isOverLimit(entityExpansionIndex)){
++            fSecurityManager.debugPrint();
++            fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,"EntityExpansionLimitExceeded",
++                    new Object[]{fSecurityManager.getLimitValueByIndex(entityExpansionIndex)},
+                                              XMLErrorReporter.SEVERITY_FATAL_ERROR );
+             // is there anything better to do than reset the counter?
+             // at least one can envision debugging applications where this might
+@@ -1361,6 +1364,12 @@
+         if(fCurrentEntity != null){
+             //close the reader
+             try{
++                if (fLimitAnalyzer != null) {
++                    fLimitAnalyzer.endEntity(XMLSecurityManager.Limit.GENEAL_ENTITY_SIZE_LIMIT, fCurrentEntity.name);
++                    if (fCurrentEntity.name.equals("[xml]")) {
++                        fSecurityManager.debugPrint();
++                    }
++                }
+                 fCurrentEntity.close();
+             }catch(IOException ex){
+                 throw new XNIException(ex);
+@@ -1426,6 +1435,9 @@
+         XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager) propertyManager.getProperty(XML_SECURITY_PROPERTY_MANAGER);
+         fAccessExternalDTD = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD);
+ 
++        fSecurityManager = (XMLSecurityManager)propertyManager.getProperty(SECURITY_MANAGER);
++        fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
++
+         // initialize state
+         //fStandalone = false;
+         fEntities.clear();
+@@ -1485,7 +1497,9 @@
+         fEntityResolver = (XMLEntityResolver)componentManager.getProperty(ENTITY_RESOLVER, null);
+         fStaxEntityResolver = (StaxEntityResolverWrapper)componentManager.getProperty(STAX_ENTITY_RESOLVER, null);
+         fValidationManager = (ValidationManager)componentManager.getProperty(VALIDATION_MANAGER, null);
+-        fSecurityManager = (SecurityManager)componentManager.getProperty(SECURITY_MANAGER, null);
++        fSecurityManager = (XMLSecurityManager)componentManager.getProperty(SECURITY_MANAGER, null);
++        fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
++        entityExpansionIndex = fSecurityManager.getIndex(Constants.JDK_ENTITY_EXPANSION_LIMIT);
+ 
+         // JAXP 1.5 feature
+         XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager) componentManager.getProperty(XML_SECURITY_PROPERTY_MANAGER, null);
+@@ -1506,7 +1520,6 @@
+     // a class acting as a component manager but not
+     // implementing that interface for whatever reason.
+     public void reset() {
+-        fEntityExpansionLimit = (fSecurityManager != null)?fSecurityManager.getEntityExpansionLimit():0;
+ 
+         // initialize state
+         fStandalone = false;
+@@ -1642,19 +1655,18 @@
+             }
+             if (suffixLength == Constants.SECURITY_MANAGER_PROPERTY.length() &&
+                 propertyId.endsWith(Constants.SECURITY_MANAGER_PROPERTY)) {
+-                fSecurityManager = (SecurityManager)value;
+-                fEntityExpansionLimit = (fSecurityManager != null)?fSecurityManager.getEntityExpansionLimit():0;
++                fSecurityManager = (XMLSecurityManager)value;
++                fLimitAnalyzer = fSecurityManager.getLimitAnalyzer();
+             }
+         }
+ 
+         //JAXP 1.5 properties
+         if (propertyId.equals(XML_SECURITY_PROPERTY_MANAGER))
+-        {
++            {
+             XMLSecurityPropertyManager spm = (XMLSecurityPropertyManager)value;
+             fAccessExternalDTD = spm.getValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD);
++            }
+         }
+-    }
+-
+     /**
+      * Returns a list of property identifiers that are recognized by
+      * this component. This method may return null if no properties
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -58,6 +58,7 @@
+  * @author Neeraj Bajaj, Sun Microsystems
+  * @author Venugopal Rao K, Sun Microsystems
+  * @author Elena Litani, IBM
++ * @version $Id: XMLNSDocumentScannerImpl.java,v 1.11 2010-11-01 04:39:41 joehw Exp $
+  */
+ public class XMLNSDocumentScannerImpl
+         extends XMLDocumentScannerImpl {
+@@ -251,7 +252,8 @@
+ 
+             do {
+                 scanAttribute(fAttributes);
+-                if (fSecurityManager != null && fAttributes.getLength() > fElementAttributeLimit){
++                if (fSecurityManager != null && (!fSecurityManager.isNoLimit(fElementAttributeLimit)) &&
++                        fAttributes.getLength() > fElementAttributeLimit){
+                     fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+                                                  "ElementAttributeLimit",
+                                                  new Object[]{rawname, new Integer(fAttributes.getLength()) },
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java	2013-09-06 14:22:57.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java	2013-12-14 21:11:06.000000000 -0500
+@@ -32,6 +32,8 @@
+ import com.sun.org.apache.xerces.internal.util.XMLChar;
+ import com.sun.org.apache.xerces.internal.util.XMLResourceIdentifierImpl;
+ import com.sun.org.apache.xerces.internal.util.XMLStringBuffer;
++import com.sun.org.apache.xerces.internal.utils.XMLLimitAnalyzer;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
+ import com.sun.org.apache.xerces.internal.xni.XMLAttributes;
+ import com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier;
+@@ -106,6 +108,9 @@
+     protected static final String ENTITY_MANAGER =
+             Constants.XERCES_PROPERTY_PREFIX + Constants.ENTITY_MANAGER_PROPERTY;
+ 
++    /** Property identifier: Security manager. */
++    private static final String SECURITY_MANAGER = Constants.SECURITY_MANAGER;
++
+     // debugging
+ 
+     /** Debug attribute normalization. */
+@@ -159,6 +164,12 @@
+     /** xxx this should be available from EntityManager Entity storage */
+     protected XMLEntityStorage fEntityStore = null ;
+ 
++    /** Security manager. */
++    protected XMLSecurityManager fSecurityManager = null;
++
++    /** Limit analyzer. */
++    protected XMLLimitAnalyzer fLimitAnalyzer = null;
++
+     // protected data
+ 
+     /** event type */
+@@ -256,6 +267,7 @@
+         fSymbolTable = (SymbolTable)componentManager.getProperty(SYMBOL_TABLE);
+         fErrorReporter = (XMLErrorReporter)componentManager.getProperty(ERROR_REPORTER);
+         fEntityManager = (XMLEntityManager)componentManager.getProperty(ENTITY_MANAGER);
++        fSecurityManager = (XMLSecurityManager)componentManager.getProperty(SECURITY_MANAGER);
+ 
+         //this step is extra because we have separated the storage of entity
+         fEntityStore = fEntityManager.getEntityStore() ;
+@@ -293,6 +305,10 @@
+                 fEntityManager = (XMLEntityManager)value;
+             }
+         }
++
++        if (propertyId.equals(SECURITY_MANAGER)) {
++            fSecurityManager = (XMLSecurityManager)value;
++        }
+                 /*else if(propertyId.equals(Constants.STAX_PROPERTIES)){
+             fStaxProperties = (HashMap)value;
+             //TODO::discuss with neeraj what are his thoughts on passing properties.
+@@ -352,6 +368,8 @@
+         fEntityManager = (XMLEntityManager)propertyManager.getProperty(ENTITY_MANAGER);
+         fEntityStore = fEntityManager.getEntityStore() ;
+         fEntityScanner = (XMLEntityScanner)fEntityManager.getEntityScanner() ;
++        fSecurityManager = (XMLSecurityManager)propertyManager.getProperty(SECURITY_MANAGER);
++
+         //fEntityManager.reset();
+         // DTD preparsing defaults:
+         fValidation = false;
+@@ -499,7 +517,7 @@
+                             reportFatalError("SDDeclInvalid",  new Object[] {standalone});
+                         }
+                     } else {
+-                        reportFatalError("EncodingDeclRequired", null);
++                        reportFatalError("SDDeclNameInvalid", null);
+                     }
+                     break;
+                 }
+@@ -510,8 +528,9 @@
+             sawSpace = fEntityScanner.skipSpaces();
+         }
+         // restore original literal value
+-        if(currLiteral)
++        if(currLiteral) {
+             currEnt.literal = true;
++        }
+         // REVISIT: should we remove this error reporting?
+         if (scanningTextDecl && state != STATE_DONE) {
+             reportFatalError("MorePseudoAttributes", null);
+@@ -564,7 +583,7 @@
+             XMLString value)
+             throws IOException, XNIException {
+ 
+-        String name = fEntityScanner.scanName();
++        String name = scanPseudoAttributeName();
+         // XMLEntityManager.print(fEntityManager.getCurrentEntity());
+ 
+         if (name == null) {
+@@ -617,6 +636,35 @@
+     } // scanPseudoAttribute(XMLString):String
+ 
+     /**
++     * Scans the name of a pseudo attribute. The only legal names
++     * in XML 1.0/1.1 documents are 'version', 'encoding' and 'standalone'.
++     *
++     * @return the name of the pseudo attribute or <code>null</code>
++     * if a legal pseudo attribute name could not be scanned.
++     */
++    private String scanPseudoAttributeName() throws IOException, XNIException {
++        final int ch = fEntityScanner.peekChar();
++        switch (ch) {
++            case 'v':
++                if (fEntityScanner.skipString(fVersionSymbol)) {
++                    return fVersionSymbol;
++                }
++                break;
++            case 'e':
++                if (fEntityScanner.skipString(fEncodingSymbol)) {
++                    return fEncodingSymbol;
++                }
++                break;
++            case 's':
++                if (fEntityScanner.skipString(fStandaloneSymbol)) {
++                    return fStandaloneSymbol;
++                }
++                break;
++        }
++        return null;
++    } // scanPseudoAttributeName()
++
++    /**
+      * Scans a processing instruction.
+      * <p>
+      * <pre>
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties	2013-09-06 14:22:58.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -44,6 +44,7 @@
+         
+ # 2.9 Standalone Document Declaration
+         SDDeclInvalid = The standalone document declaration value must be \"yes\" or \"no\", not \"{0}\".
++        SDDeclNameInvalid = The standalone name in XML declaration may be misspelled.
+ # 2.12 Language Identification
+         XMLLangInvalid = The xml:lang attribute value \"{0}\" is an invalid language identifier.
+ # 3. Logical Structures
+@@ -292,8 +293,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=The parser has encountered more than \"{0}\" entity expansions in this document; this is the limit imposed by the application.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: The parser has encountered more than \"{0}\" entity expansions in this document; this is the limit imposed by the JDK.
++        ElementAttributeLimit=JAXP00010002:  Element \"{0}\" has more than \"{1}\" attributes, \"{1}\" is the limit imposed by the JDK.
++        MaxEntitySizeLimit=JAXP00010003: The length of entity \"{0}\" is \"{1}\" that exceeds the \"{2}\" limit set by \"{3}\".
++        TotalEntitySizeLimit=JAXP00010004: The accumulated size \"{0}\" of entities exceeded the \"{1}\" limit set by \"{2}\".
++        MaxXMLNameLimit=JAXP00010005: The name \"{0}\" exceeded the \"{1}\" limit set by \"{2}\".
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= Element \"{0}\" has more than \"{1}\" attributes, \"{1}\" is the limit imposed by the application.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde im Prolog des Dokuments gefunden.
+         InvalidCharInXMLDecl = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde in der XML-Deklaration gefunden.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = Zeichenfolge"\"]]>\" darf nur im Content enthalten sein, wenn sie das Ende eines CDATA-Abschnitts markiert.
++        CDEndInContent = Zeichenfolge""]]>" darf nur im Content enthalten sein, wenn sie das Ende eines CDATA-Abschnitts markiert.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = CDATA-Abschnitt muss mit \"]]>\" enden.
++        CDSectUnterminated = CDATA-Abschnitt muss mit "]]>" enden.
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = XML-Deklaration darf nur ganz am Anfang des Dokuments enthalten sein.
+-        EqRequiredInXMLDecl = Zeichen " = " muss auf \"{0}\" in der XML-Deklaration folgen.
+-        QuoteRequiredInXMLDecl = Der Wert nach \"{0}\" in der XML-Deklaration muss eine Zeichenfolge in Anf\u00FChrungszeichen sein.
+-        XMLDeclUnterminated = XML-Deklaration muss mit \"?>\" enden.
++        EqRequiredInXMLDecl = Zeichen " = " muss auf "{0}" in der XML-Deklaration folgen.
++        QuoteRequiredInXMLDecl = Der Wert nach "{0}" in der XML-Deklaration muss eine Zeichenfolge in Anf\u00FChrungszeichen sein.
++        XMLDeclUnterminated = XML-Deklaration muss mit "?>" enden.
+         VersionInfoRequired = Version ist in der XML-Deklaration erforderlich.
+         SpaceRequiredBeforeVersionInXMLDecl = Leerstelle vor dem Versionspseudoattribut in der XML-Deklaration erforderlich.
+         SpaceRequiredBeforeEncodingInXMLDecl = Leerstelle vor dem Codierungspseudoattribut in der XML-Deklaration erforderlich.
+@@ -71,70 +68,71 @@
+         ReferenceIllegalInTrailingMisc=Referenz ist nicht zul\u00E4ssig in angeh\u00E4ngtem Abschnitt.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = Standalone-Dokumentdeklarationswert muss \"Ja\" oder \"Nein\" und nicht \"{0}\" sein.
++        SDDeclInvalid = Standalone-Dokumentdeklarationswert muss "Ja" oder "Nein" und nicht "{0}" sein.
++        SDDeclNameInvalid = Der Standalone-Name in der XML-Deklaration ist m\u00F6glicherweise falsch geschrieben.
+ # 2.12 Language Identification
+-        XMLLangInvalid = xml:lang-Attributwert \"{0}\" ist eine ung\u00FCltige Sprach-ID.
++        XMLLangInvalid = xml:lang-Attributwert "{0}" ist eine ung\u00FCltige Sprach-ID.
+ # 3. Logical Structures
+-        ETagRequired = Elementtyp \"{0}\" muss mit dem entsprechenden Endtag \"</{0}>\" beendet werden.
++        ETagRequired = Elementtyp "{0}" muss mit dem entsprechenden Endtag "</{0}>" beendet werden.
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = Auf Elementtyp \"{0}\" m\u00FCssen entweder Attributspezifikationen, \">\" oder \"/>\" folgen.
+-        EqRequiredInAttribute = Mit Elementtyp \"{0}\" verkn\u00FCpfter Attributname \"{1}\" muss vom Zeichen " = " gefolgt werden.
+-        OpenQuoteExpected = \u00D6ffnendes Anf\u00FChrungszeichen wird f\u00FCr Attribut \"{1}\" erwartet, das mit Elementtyp \"{0}\" verkn\u00FCpft ist.
+-        CloseQuoteExpected = Schlie\u00DFendes Anf\u00FChrungszeichen wird f\u00FCr Attribut \"{1}\" erwartet, das mit Elementtyp \"{0}\" verkn\u00FCpft ist.
+-        AttributeNotUnique = Attribut \"{1}\" wurde bereits f\u00FCr Element \"{0}\" angegeben.
+-        AttributeNSNotUnique = An Namespace \"{2}\" gebundenes Attribut \"{1}\" wurde bereits f\u00FCr Element \"{0}\" angegeben.
+-        ETagUnterminated = Endtag f\u00FCr Elementtyp \"{0}\" muss mit einem ">"-Begrenzungszeichen enden.
++        ElementUnterminated = Auf Elementtyp "{0}" m\u00FCssen entweder Attributspezifikationen, ">" oder "/>" folgen.
++        EqRequiredInAttribute = Mit Elementtyp "{0}" verkn\u00FCpfter Attributname "{1}" muss vom Zeichen " = " gefolgt werden.
++        OpenQuoteExpected = \u00D6ffnendes Anf\u00FChrungszeichen wird f\u00FCr Attribut "{1}" erwartet, das mit Elementtyp "{0}" verkn\u00FCpft ist.
++        CloseQuoteExpected = Schlie\u00DFendes Anf\u00FChrungszeichen wird f\u00FCr Attribut "{1}" erwartet, das mit Elementtyp "{0}" verkn\u00FCpft ist.
++        AttributeNotUnique = Attribut "{1}" wurde bereits f\u00FCr Element "{0}" angegeben.
++        AttributeNSNotUnique = An Namespace "{2}" gebundenes Attribut "{1}" wurde bereits f\u00FCr Element "{0}" angegeben.
++        ETagUnterminated = Endtag f\u00FCr Elementtyp "{0}" muss mit einem ">"-Begrenzungszeichen enden.
+         MarkupNotRecognizedInContent = Der Content von Elementen muss aus ordnungsgem\u00E4\u00DF formatierten Zeichendaten oder Markups bestehen.
+         DoctypeIllegalInContent = DOCTYPE ist nicht zul\u00E4ssig in Content.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = Referenz muss mit einem ";"-Begrenzungszeichen beendet werden.
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = Referenz muss vollst\u00E4ndig in derselben geparsten Entit\u00E4t enthalten sein.
+-        ElementEntityMismatch = Element \"{0}\" muss innerhalb derselben Entit\u00E4t beginnen und enden.
++        ElementEntityMismatch = Element "{0}" muss innerhalb derselben Entit\u00E4t beginnen und enden.
+         MarkupEntityMismatch=XML-Dokumentstrukturen m\u00FCssen innerhalb derselben Entit\u00E4t beginnen und enden.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{2}) wurde im Wert des Attributs \"{1}\" gefunden. Element ist \"{0}\".
++        InvalidCharInAttValue = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{2}) wurde im Wert des Attributs "{1}" gefunden. Element ist "{0}".
+         InvalidCharInComment = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde im Kommentar gefunden.
+         InvalidCharInPI = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde in der Verarbeitungsanweisung gefunden.
+         InvalidCharInInternalSubset = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde in der internen Teilmenge der DTD gefunden.
+         InvalidCharInTextDecl = Ung\u00FCltiges XML-Zeichen (Unicode: 0x{0}) wurde in der Textdeklaration gefunden.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = Wert des Attributs \"{1}\" muss mit einem einzelnen oder doppelten Anf\u00FChrungszeichen beginnen.
+-        LessthanInAttValue = Wert des Attributs \"{1}\", das mit Elementtyp \"{0}\" verkn\u00FCpft ist, darf nicht das Zeichen "<" enthalten.
+-        AttributeValueUnterminated = Wert f\u00FCr Attribut \"{1}\" muss mit dem entsprechenden Anf\u00FChrungszeichen enden.
++        QuoteRequiredInAttValue = Wert des Attributs "{1}" muss mit einem einzelnen oder doppelten Anf\u00FChrungszeichen beginnen.
++        LessthanInAttValue = Wert des Attributs "{1}", das mit Elementtyp "{0}" verkn\u00FCpft ist, darf nicht das Zeichen "<" enthalten.
++        AttributeValueUnterminated = Wert f\u00FCr Attribut "{1}" muss mit dem entsprechenden Anf\u00FChrungszeichen enden.
+ # 2.5 Comments
+-        InvalidCommentStart = Kommentar muss mit \"<!--\" beginnen.
+-        DashDashInComment = Zeichenfolge \"--\" ist in Kommentaren nicht zul\u00E4ssig.
+-        CommentUnterminated = Kommentar muss mit \"-->\" enden.
++        InvalidCommentStart = Kommentar muss mit "<!--" beginnen.
++        DashDashInComment = Zeichenfolge "--" ist in Kommentaren nicht zul\u00E4ssig.
++        CommentUnterminated = Kommentar muss mit "-->" enden.
+         COMMENT_NOT_IN_ONE_ENTITY = Kommentar ist nicht in derselben Entit\u00E4t enthalten.
+ # 2.6 Processing Instructions
+         PITargetRequired = Verarbeitungsanweisung muss mit dem Namen des Ziels beginnen.
+         SpaceRequiredInPI = Leerstelle ist zwischen dem Ziel der Verarbeitungsanweisung und den Daten erforderlich.
+-        PIUnterminated = Verarbeitungsanweisung muss mit \"?>\" enden.
+-        ReservedPITarget = Verarbeitungsanweisungsziel, das \"[xX][mM][lL]\" entspricht, ist nicht zul\u00E4ssig.
++        PIUnterminated = Verarbeitungsanweisung muss mit "?>" enden.
++        ReservedPITarget = Verarbeitungsanweisungsziel, das "[xX][mM][lL]" entspricht, ist nicht zul\u00E4ssig.
+         PI_NOT_IN_ONE_ENTITY = Verarbeitungsanweisung ist nicht in derselben Entit\u00E4t enthalten.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = Ung\u00FCltige Version \"{0}\".
+-        VersionNotSupported = XML-Version \"{0}\" wird nicht unterst\u00FCtzt. Nur XML 1.0 wird unterst\u00FCtzt.
+-        VersionNotSupported11 = XML-Version \"{0}\" wird nicht unterst\u00FCtzt. Nur XML 1.0 und XML 1.1 werden unterst\u00FCtzt.
++        VersionInfoInvalid = Ung\u00FCltige Version "{0}".
++        VersionNotSupported = XML-Version "{0}" wird nicht unterst\u00FCtzt. Nur XML 1.0 wird unterst\u00FCtzt.
++        VersionNotSupported11 = XML-Version "{0}" wird nicht unterst\u00FCtzt. Nur XML 1.0 und XML 1.1 werden unterst\u00FCtzt.
+         VersionMismatch= Eine Entit\u00E4t kann keine andere Entit\u00E4t einer sp\u00E4teren Version enthalten.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = Auf \"&#\" in einer Zeichenreferenz muss umgehend eine Dezimaldarstellung folgen.
+-        HexdigitRequiredInCharRef = Auf \"&#x\" in einer Zeichenreferenz muss umgehend eine hexadezimale Darstellung folgen.
++        DigitRequiredInCharRef = Auf "&#" in einer Zeichenreferenz muss umgehend eine Dezimaldarstellung folgen.
++        HexdigitRequiredInCharRef = Auf "&#x" in einer Zeichenreferenz muss umgehend eine hexadezimale Darstellung folgen.
+         SemicolonRequiredInCharRef = Zeichenreferenz muss mit dem Begrenzungszeichen ";" enden.
+-        InvalidCharRef = Zeichenreferenz \"&#{0}\" ist ein ung\u00FCltiges XML-Zeichen.
++        InvalidCharRef = Zeichenreferenz "&#{0}" ist ein ung\u00FCltiges XML-Zeichen.
+         NameRequiredInReference = Auf "&" in der Entit\u00E4tsreferenz muss umgehend der Entit\u00E4tsname folgen.
+-        SemicolonRequiredInReference = Referenz zu Entit\u00E4t \"{0}\" muss mit dem Begrenzungszeichen ";" enden.
++        SemicolonRequiredInReference = Referenz zu Entit\u00E4t "{0}" muss mit dem Begrenzungszeichen ";" enden.
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = Textdeklaration darf nur ganz am Anfang der externen geparsten Entit\u00E4t enthalten sein.
+-        EqRequiredInTextDecl = Zeichen " = " muss auf \"{0}\" in der Textdeklaration folgen.
+-        QuoteRequiredInTextDecl = Der Wert nach \"{0}\" in der Textdeklaration muss eine Zeichenfolge in Anf\u00FChrungszeichen sein.
+-        CloseQuoteMissingInTextDecl = Schlie\u00DFendes Anf\u00FChrungszeichen im Wert nach \"{0}\" in der Textdeklaration fehlt.
++        EqRequiredInTextDecl = Zeichen " = " muss auf "{0}" in der Textdeklaration folgen.
++        QuoteRequiredInTextDecl = Der Wert nach "{0}" in der Textdeklaration muss eine Zeichenfolge in Anf\u00FChrungszeichen sein.
++        CloseQuoteMissingInTextDecl = Schlie\u00DFendes Anf\u00FChrungszeichen im Wert nach "{0}" in der Textdeklaration fehlt.
+         SpaceRequiredBeforeVersionInTextDecl = Leerstelle vor dem Versionspseudoattribut in der Textdeklaration erforderlich.
+         SpaceRequiredBeforeEncodingInTextDecl = Leerstelle vor dem Codierungspseudoattribut in der Textdeklaration erforderlich.
+-        TextDeclUnterminated = Textdeklaration muss mit \"?>\" enden.
++        TextDeclUnterminated = Textdeklaration muss mit "?>" enden.
+         EncodingDeclRequired = Codierungsdeklaration ist in der Textdeklaration erforderlich.
+         NoMorePseudoAttributes = Es sind keine weiteren Pseudoattribute zul\u00E4ssig.
+         MorePseudoAttributes = Es werden weitere Pseudoattribute erwartet.
+@@ -143,13 +141,13 @@
+         CommentNotInOneEntity = Kommentar muss vollst\u00E4ndig in derselben geparsten Entit\u00E4t enthalten sein.
+         PINotInOneEntity = Verarbeitungsanweisung muss vollst\u00E4ndig in derselben geparsten Entit\u00E4t enthalten sein.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = Ung\u00FCltiger Codierungsname \"{0}\".
+-        EncodingByteOrderUnsupported = Angegebene Bytereihenfolge f\u00FCr die Codierung von \"{0}\" wird nicht unterst\u00FCtzt.
++        EncodingDeclInvalid = Ung\u00FCltiger Codierungsname "{0}".
++        EncodingByteOrderUnsupported = Angegebene Bytereihenfolge f\u00FCr die Codierung von "{0}" wird nicht unterst\u00FCtzt.
+         InvalidByte = Ung\u00FCltiges Byte {0} von {1}-Byte-UTF-8-Sequenz.
+         ExpectedByte = Byte {0} von {1}-Byte-UTF-8-Sequenz erwartet.  
+         InvalidHighSurrogate = High-Surrogate-Bits in UTF-8-Sequenz d\u00FCrfen 0x10 nicht \u00FCberschreiten, gefunden wurde aber 0x{0}.
+-        OperationNotSupported = Vorgang \"{0}\" nicht unterst\u00FCtzt von {1}-Reader.
+-        InvalidASCII = Byte \"{0}\" geh\u00F6rt nicht zum (7-Bit) ASCII-Zeichensatz.
++        OperationNotSupported = Vorgang "{0}" nicht unterst\u00FCtzt von {1}-Reader.
++        InvalidASCII = Byte "{0}" geh\u00F6rt nicht zum (7-Bit) ASCII-Zeichensatz.
+         CharConversionFailure = Eine Entit\u00E4t, f\u00FCr die eine bestimmte Codierung ermittelt wurde, darf keine Sequenzen enthalten, die in dieser Codierung ung\u00FCltig sind.
+         
+ # DTD Messages
+@@ -169,135 +167,135 @@
+         PubidCharIllegal = Zeichen (Unicode: 0x{0}) ist nicht zul\u00E4ssig in der \u00F6ffentlichen ID.
+         SpaceRequiredBetweenPublicAndSystem = Leerstellen erforderlich zwischen publicId und systemId.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Leerstelle nach \"<!DOCTYPE\" in der Dokumenttypdeklaration erforderlich.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Root-Elementtyp muss nach \"<!DOCTYPE\" in der Dokumenttypdeklaration enthalten sein.
+-        DoctypedeclUnterminated = Dokumenttypdeklaration f\u00FCr Root-Elementtyp \"{0}\" muss mit ">" enden.
+-        PEReferenceWithinMarkup = Parameterentit\u00E4tsreferenz \"%{0};\" darf nicht in Markup in der internen Teilmenge der DTD vorkommen.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Leerstelle nach "<!DOCTYPE" in der Dokumenttypdeklaration erforderlich.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Root-Elementtyp muss nach "<!DOCTYPE" in der Dokumenttypdeklaration enthalten sein.
++        DoctypedeclUnterminated = Dokumenttypdeklaration f\u00FCr Root-Elementtyp "{0}" muss mit ">" enden.
++        PEReferenceWithinMarkup = Parameterentit\u00E4tsreferenz "%{0};" darf nicht in Markup in der internen Teilmenge der DTD vorkommen.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Die Markup-Deklarationen, die in der Dokumenttypdeklaration enthalten sind bzw. auf die von der Dokumenttypdeklaration verwiesen wird, m\u00FCssen ordnungsgem\u00E4\u00DF formatiert sein.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = Attributdeklaration f\u00FCr \"xml:space\" muss als aufgez\u00E4hlter Typ angegeben werden, dessen einzigen m\u00F6glichen Werte \"default\" und \"preserve\" sind.
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = Attributdeklaration f\u00FCr "xml:space" muss als aufgez\u00E4hlter Typ angegeben werden, dessen einzigen m\u00F6glichen Werte "default" und "preserve" sind.
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Leerstelle nach \"<!ELEMENT\" in der Elementtypdeklaration erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Leerstelle nach "<!ELEMENT" in der Elementtypdeklaration erforderlich.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = Elementtyp ist in der Elementtypdeklaration erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Leerstelle nach Elementtyp \"{0}\" in der Elementtypdeklaration erforderlich.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = Constraint ist nach dem Elementtyp \"{0}\" in der Elementtypdeklaration erforderlich.
+-        ElementDeclUnterminated = Deklaration f\u00FCr Elementtyp \"{0}\" muss mit ">" enden.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Leerstelle nach Elementtyp "{0}" in der Elementtypdeklaration erforderlich.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = Constraint ist nach dem Elementtyp "{0}" in der Elementtypdeklaration erforderlich.
++        ElementDeclUnterminated = Deklaration f\u00FCr Elementtyp "{0}" muss mit ">" enden.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Das Zeichen "(" oder ein Elementtyp ist in der Deklaration des Elementtyps \"{0}\" erforderlich.
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Das Zeichen ")" ist in der Deklaration des Elementtyps \"{0}\" erforderlich.
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Das Zeichen "(" oder ein Elementtyp ist in der Deklaration des Elementtyps "{0}" erforderlich.
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Das Zeichen ")" ist in der Deklaration des Elementtyps "{0}" erforderlich.
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Ein Elementtyp ist in der Deklaration des Elementtyps \"{0}\" erforderlich.
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Das Zeichen ")" ist in der Deklaration des Elementtyps \"{0}\" erforderlich.
+-        MixedContentUnterminated = Das Mischcontentmodell \"{0}\" muss mit \")*\" enden, wenn die Typen der untergeordneten Elemente eingeschr\u00E4nkt sind.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Ein Elementtyp ist in der Deklaration des Elementtyps "{0}" erforderlich.
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Das Zeichen ")" ist in der Deklaration des Elementtyps "{0}" erforderlich.
++        MixedContentUnterminated = Das Mischcontentmodell "{0}" muss mit ")*" enden, wenn die Typen der untergeordneten Elemente eingeschr\u00E4nkt sind.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Leerstelle nach \"<!ATTLIST\" in der Attributlistendeklaration erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Leerstelle nach "<!ATTLIST" in der Attributlistendeklaration erforderlich.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = Elementtyp ist in der Attributlistendeklaration erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Leerstelle vor dem Attributnamen in der Attributlistendeklaration f\u00FCr Element \"{0}\" erforderlich.
+-        AttNameRequiredInAttDef = Attributname muss in der Attributlistendeklaration f\u00FCr Element \"{0}\" angegeben werden.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Leerstelle vor dem Attributtyp in der Deklaration des Attributs \"{1}\" f\u00FCr Element \"{0}\" erforderlich.
+-        AttTypeRequiredInAttDef = Attributtyp ist in der Deklaration des Attributs \"{1}\" f\u00FCr Element \"{0}\" erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Leerstelle vor dem Attributstandard in der Deklaration des Attributs \"{1}\" f\u00FCr Element \"{0}\" erforderlich.
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Mehrere Attributdefinitionen f\u00FCr dasselbe Attribut \"{1}\" eines Elements \"{0}\" angegeben.
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Leerstelle vor dem Attributnamen in der Attributlistendeklaration f\u00FCr Element "{0}" erforderlich.
++        AttNameRequiredInAttDef = Attributname muss in der Attributlistendeklaration f\u00FCr Element "{0}" angegeben werden.
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Leerstelle vor dem Attributtyp in der Deklaration des Attributs "{1}" f\u00FCr Element "{0}" erforderlich.
++        AttTypeRequiredInAttDef = Attributtyp ist in der Deklaration des Attributs "{1}" f\u00FCr Element "{0}" erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Leerstelle vor dem Attributstandard in der Deklaration des Attributs "{1}" f\u00FCr Element "{0}" erforderlich.
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Mehrere Attributdefinitionen f\u00FCr dasselbe Attribut "{1}" eines Elements "{0}" angegeben.
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Leerstelle nach \"NOTATION\" in der \"{1}\"-Attributdeklaration erforderlich.
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Das Zeichen "(" muss auf \"NOTATION\" in der \"{1}\"-Attributdeklaration folgen.
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Notationsname ist in der Notationstypliste f\u00FCr die \"{1}\"-Attributdeklaration erforderlich.
+-        NotationTypeUnterminated = Notationstypliste muss mit ")" in der\"{1}\"-Attributdeklaration enden.
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Namenstoken ist in der aufgez\u00E4hlten Typliste f\u00FCr die \"{1}\"-Attributdeklaration erforderlich.
+-        EnumerationUnterminated = Aufgez\u00E4hlte Typliste muss mit ")" in der\"{1}\"-Attributdeklaration enden.
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = Enumerationswert \"{1}\" wurde mehrmals in der Deklaration des Attributs \"{2}\" f\u00FCr Element \"{0}\" angegeben. Die NMTOKENS in einer einzelnen "Enumeration"-Attributdeklaration m\u00FCssen alle eindeutig sein.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = Enumerationswert \"{1}\" wurde mehrmals in der Deklaration des Attributs \"{2}\" f\u00FCr Element \"{0}\" angegeben. Die NOTATION-Namen in einer einzelnen NotationType-Attributdeklaration m\u00FCssen alle eindeutig sein.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Leerstelle nach "NOTATION" in der "{1}"-Attributdeklaration erforderlich.
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Das Zeichen "(" muss auf "NOTATION" in der "{1}"-Attributdeklaration folgen.
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Notationsname ist in der Notationstypliste f\u00FCr die "{1}"-Attributdeklaration erforderlich.
++        NotationTypeUnterminated = Notationstypliste muss mit ")" in der"{1}"-Attributdeklaration enden.
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Namenstoken ist in der aufgez\u00E4hlten Typliste f\u00FCr die "{1}"-Attributdeklaration erforderlich.
++        EnumerationUnterminated = Aufgez\u00E4hlte Typliste muss mit ")" in der"{1}"-Attributdeklaration enden.
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = Enumerationswert "{1}" wurde mehrmals in der Deklaration des Attributs "{2}" f\u00FCr Element "{0}" angegeben. Die NMTOKENS in einer einzelnen "Enumeration"-Attributdeklaration m\u00FCssen alle eindeutig sein.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = Enumerationswert "{1}" wurde mehrmals in der Deklaration des Attributs "{2}" f\u00FCr Element "{0}" angegeben. Die NOTATION-Namen in einer einzelnen NotationType-Attributdeklaration m\u00FCssen alle eindeutig sein.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Leerstelle nach \"FIXED\" in der \"{1}\"-Attributdeklaration erforderlich.
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Leerstelle nach "FIXED" in der "{1}"-Attributdeklaration erforderlich.
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = Der eingeschlossene Bedingungsabschnitt muss mit \"]]>\" enden.
+-        IgnoreSectUnterminated = Der ausgeschlossene Bedingungsabschnitt muss mit \"]]>\" enden.
++        IncludeSectUnterminated = Der eingeschlossene Bedingungsabschnitt muss mit "]]>" enden.
++        IgnoreSectUnterminated = Der ausgeschlossene Bedingungsabschnitt muss mit "]]>" enden.
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = Auf "%" in der Parameterentit\u00E4tsreferenz muss umgehend der Entit\u00E4tsname folgen.
+-        SemicolonRequiredInPEReference = Parameterentit\u00E4tsreferenz \"%{0};\" muss mit dem Begrenzungszeichen ";" enden.
++        SemicolonRequiredInPEReference = Parameterentit\u00E4tsreferenz "%{0};" muss mit dem Begrenzungszeichen ";" enden.
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Leerstelle nach \"<!ENTITY\" in der Entit\u00E4tsdeklaration erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Leerstelle zwischen \"<!ENTITY\" und dem Zeichen "%" in der Parameterentit\u00E4tsdeklaration erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Leerstelle nach "<!ENTITY" in der Entit\u00E4tsdeklaration erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Leerstelle zwischen "<!ENTITY" und dem Zeichen "%" in der Parameterentit\u00E4tsdeklaration erforderlich.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = Leerstelle zwischen "%" und dem Entit\u00E4tsnamen in der Parameterentit\u00E4tsdeklaration erforderlich.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = Name der Entit\u00E4t ist in der Entit\u00E4tsdeklaration erforderlich.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Leerstelle zwischen dem Entit\u00E4tsnamen \"{0}\" und der Definition in der Entit\u00E4tsdeklaration erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Leerstelle zwischen \"NDATA\" und dem Notationsnamen in der Deklaration f\u00FCr die Entit\u00E4t \"{0}\ erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Leerstelle vor \"NDATA\" in der Deklaration f\u00FCr die Entit\u00E4t \"{0}\ erforderlich.
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Notationsname ist nach \"NDATA\" in der Deklaration f\u00FCr die Entit\u00E4t \"{0}\ erforderlich.
+-        EntityDeclUnterminated = Deklaration f\u00FCr Entit\u00E4t \"{0}\" muss mit ">" enden.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = Entit\u00E4t \"{0}\" wurde mehrmals deklariert.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Leerstelle zwischen dem Entit\u00E4tsnamen "{0}" und der Definition in der Entit\u00E4tsdeklaration erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Leerstelle zwischen "NDATA" und dem Notationsnamen in der Deklaration f\u00FCr die Entit\u00E4t "{0} erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Leerstelle vor "NDATA" in der Deklaration f\u00FCr die Entit\u00E4t "{0} erforderlich.
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Notationsname ist nach "NDATA" in der Deklaration f\u00FCr die Entit\u00E4t "{0} erforderlich.
++        EntityDeclUnterminated = Deklaration f\u00FCr Entit\u00E4t "{0}" muss mit ">" enden.
++	MSG_DUPLICATE_ENTITY_DEFINITION = Entit\u00E4t "{0}" wurde mehrmals deklariert.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = Externe Entit\u00E4tsdeklaration muss mit \"SYSTEM\" oder \"PUBLIC\" beginnen.
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Leerstelle zwischen \"PUBLIC\" und der \u00F6ffentlichen ID erforderlich.
++        ExternalIDRequired = Externe Entit\u00E4tsdeklaration muss mit "SYSTEM" oder "PUBLIC" beginnen.
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Leerstelle zwischen "PUBLIC" und der \u00F6ffentlichen ID erforderlich.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = Leerstelle zwischen der \u00F6ffentlichen ID und der System-ID erforderlich.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Leerstelle zwischen \"SYSTEM\" und der System-ID erforderlich.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = Fragment-ID darf nicht als Teil der System-ID \"{0}\" angegeben werden.
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Leerstelle zwischen "SYSTEM" und der System-ID erforderlich.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = Fragment-ID darf nicht als Teil der System-ID "{0}" angegeben werden.
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Leerstelle nach \"<!NOTATION\" in der Notationsdeklaration erforderlich.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Leerstelle nach "<!NOTATION" in der Notationsdeklaration erforderlich.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = Name der Notation ist in der Notationsdeklaration erforderlich.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Leerstelle nach dem Notationsnamen \"{0}\" in der Notationsdeklaration erforderlich.
+-        ExternalIDorPublicIDRequired = Deklaration f\u00FCr die Notation \"{0}\" muss eine System- oder eine \u00F6ffentliche ID enthalten.
+-        NotationDeclUnterminated = Deklaration f\u00FCr die Notation \"{0}\" muss mit ">" enden.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Leerstelle nach dem Notationsnamen "{0}" in der Notationsdeklaration erforderlich.
++        ExternalIDorPublicIDRequired = Deklaration f\u00FCr die Notation "{0}" muss eine System- oder eine \u00F6ffentliche ID enthalten.
++        NotationDeclUnterminated = Deklaration f\u00FCr die Notation "{0}" muss mit ">" enden.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = Elementtyp \"{1}\" wurde bereits im Contentmodell der Elementdeklaration\"{0}\" angegeben.
+-        ENTITIESInvalid = Attributwert \"{1}\" mit dem Typ ENTITIES muss aus den Namen von mindestens einer geparsten Entit\u00E4t bestehen.
+-        ENTITYInvalid = Attributwert \"{1}\" mit dem Typ ENTITY muss aus dem Namen einer geparsten Entit\u00E4t bestehen.
+-        IDDefaultTypeInvalid = ID-Attribut \"{0}\" muss den deklarierten Standardwert \"#IMPLIED\" oder \"#REQUIRED\" haben.
+-        IDInvalid = Attributwert \"{0}\" mit dem Typ ID muss ein Name sein.
+-        IDInvalidWithNamespaces = Attributwert \"{0}\" mit dem Typ ID muss ein NCName sein, wenn Namespaces aktiviert sind.
+-        IDNotUnique = Attributwert \"{0}\" mit dem Typ ID muss eindeutig im Dokument sein.
+-        IDREFInvalid = Attributwert \"{0}\" mit dem Typ IDREF muss ein Name sein.
+-        IDREFInvalidWithNamespaces = Attributwert \"{0}\" mit dem Typ IDREF muss ein NCName sein, wenn Namespaces aktiviert sind.
+-        IDREFSInvalid = Attributwert \"{0}\" mit dem Typ IDREFS muss mindestens ein Name sein.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Ersatztext der Parameterentit\u00E4t \"{0}\" muss ordnungsgem\u00E4\u00DF verschachtelte Deklarationen enthalten, wenn die Entit\u00E4tsreferenz als vollst\u00E4ndige Deklaration verwendet wird.
+-        ImproperDeclarationNesting = Ersatztext der Parameterentit\u00E4t \"{0}\" muss ordnungsgem\u00E4\u00DF verschachtelte Deklarationen enthalten.
+-        ImproperGroupNesting = Ersatztext der Parameterentit\u00E4t \"{0}\" muss ordnungsgem\u00E4\u00DF verschachtelte Klammernpaare enthalten.
+-        INVALID_PE_IN_CONDITIONAL = Ersatztext der Parameterentit\u00E4t \"{0}\" muss den gesamten Bedingungsabschnitt oder nur INCLUDE oder IGNORE enthalten.
+-        MSG_ATTRIBUTE_NOT_DECLARED = Attribut \"{1}\" muss f\u00FCr Elementtyp \"{0}\" deklariert werden.
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = Attribut \"{0}\" mit Wert \"{1}\" muss einen Wert aus der Liste \"{2}\" haben.
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = Der Wert \"{1}\" des Attributs \"{0}\" darf nicht von der Normalisierung (zu \"{2}\") in einem Standalone-Dokument ge\u00E4ndert werden.
+-        MSG_CONTENT_INCOMPLETE = Content des Elementtyps \"{0}\" ist unvollst\u00E4ndig. Muss \"{1}\" entsprechen.
+-        MSG_CONTENT_INVALID = Content des Elementtyps \"{0}\" muss \"{1}\" entsprechen.
+-        MSG_CONTENT_INVALID_SPECIFIED = Content des Elementtyps \"{0}\" muss \"{1}\" entsprechen. Untergeordnete Elemente mit dem Typ \"{2}\" sind nicht zul\u00E4ssig.
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = Attribut \"{1}\" f\u00FCr Elementtyp \"{0}\" hat einen Standardwert und muss in einem Standalone-Dokument angegeben werden.
+-        MSG_DUPLICATE_ATTDEF = Attribut \"{1}\" ist bereits deklariert f\u00FCr Elementtyp \"{0}\".
+-        MSG_ELEMENT_ALREADY_DECLARED = Elementtyp \"{0}\" darf nicht mehrmals deklariert werden.
+-        MSG_ELEMENT_NOT_DECLARED = Elementtyp \"{0}\" muss deklariert werden.
++        DuplicateTypeInMixedContent = Elementtyp "{1}" wurde bereits im Contentmodell der Elementdeklaration"{0}" angegeben.
++        ENTITIESInvalid = Attributwert "{1}" mit dem Typ ENTITIES muss aus den Namen von mindestens einer geparsten Entit\u00E4t bestehen.
++        ENTITYInvalid = Attributwert "{1}" mit dem Typ ENTITY muss aus dem Namen einer geparsten Entit\u00E4t bestehen.
++        IDDefaultTypeInvalid = ID-Attribut "{0}" muss den deklarierten Standardwert "#IMPLIED" oder "#REQUIRED" haben.
++        IDInvalid = Attributwert "{0}" mit dem Typ ID muss ein Name sein.
++        IDInvalidWithNamespaces = Attributwert "{0}" mit dem Typ ID muss ein NCName sein, wenn Namespaces aktiviert sind.
++        IDNotUnique = Attributwert "{0}" mit dem Typ ID muss eindeutig im Dokument sein.
++        IDREFInvalid = Attributwert "{0}" mit dem Typ IDREF muss ein Name sein.
++        IDREFInvalidWithNamespaces = Attributwert "{0}" mit dem Typ IDREF muss ein NCName sein, wenn Namespaces aktiviert sind.
++        IDREFSInvalid = Attributwert "{0}" mit dem Typ IDREFS muss mindestens ein Name sein.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Ersatztext der Parameterentit\u00E4t "{0}" muss ordnungsgem\u00E4\u00DF verschachtelte Deklarationen enthalten, wenn die Entit\u00E4tsreferenz als vollst\u00E4ndige Deklaration verwendet wird.
++        ImproperDeclarationNesting = Ersatztext der Parameterentit\u00E4t "{0}" muss ordnungsgem\u00E4\u00DF verschachtelte Deklarationen enthalten.
++        ImproperGroupNesting = Ersatztext der Parameterentit\u00E4t "{0}" muss ordnungsgem\u00E4\u00DF verschachtelte Klammernpaare enthalten.
++        INVALID_PE_IN_CONDITIONAL = Ersatztext der Parameterentit\u00E4t "{0}" muss den gesamten Bedingungsabschnitt oder nur INCLUDE oder IGNORE enthalten.
++        MSG_ATTRIBUTE_NOT_DECLARED = Attribut "{1}" muss f\u00FCr Elementtyp "{0}" deklariert werden.
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = Attribut "{0}" mit Wert "{1}" muss einen Wert aus der Liste "{2}" haben.
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = Der Wert "{1}" des Attributs "{0}" darf nicht von der Normalisierung (zu "{2}") in einem Standalone-Dokument ge\u00E4ndert werden.
++        MSG_CONTENT_INCOMPLETE = Content des Elementtyps "{0}" ist unvollst\u00E4ndig. Muss "{1}" entsprechen.
++        MSG_CONTENT_INVALID = Content des Elementtyps "{0}" muss "{1}" entsprechen.
++        MSG_CONTENT_INVALID_SPECIFIED = Content des Elementtyps "{0}" muss "{1}" entsprechen. Untergeordnete Elemente mit dem Typ "{2}" sind nicht zul\u00E4ssig.
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = Attribut "{1}" f\u00FCr Elementtyp "{0}" hat einen Standardwert und muss in einem Standalone-Dokument angegeben werden.
++        MSG_DUPLICATE_ATTDEF = Attribut "{1}" ist bereits deklariert f\u00FCr Elementtyp "{0}".
++        MSG_ELEMENT_ALREADY_DECLARED = Elementtyp "{0}" darf nicht mehrmals deklariert werden.
++        MSG_ELEMENT_NOT_DECLARED = Elementtyp "{0}" muss deklariert werden.
+         MSG_GRAMMAR_NOT_FOUND = Dokument ist ung\u00FCltig. Keine Grammatik gefunden.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = Element mit \"{0}\" ist im Dokument erforderlich.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = Referenz zur externen Entit\u00E4t \"{0}\" ist in einem Standalone-Dokument nicht zul\u00E4ssig.
+-        MSG_FIXED_ATTVALUE_INVALID = Attribut \"{1}\" mit Wert \"{2}\" muss den Wert\"{3}\" haben.
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Elementtyp \"{0}\" hat bereits ein Attribut \"{1}\" mit dem Typ ID. Ein zweites Attribut \"{2}\" mit dem Typ ID ist nicht zul\u00E4ssig.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Elementtyp \"{0}\" hat bereits ein Attribut \"{1}\" mit dem Typ NOTATION. Ein zweites Attribut \"{2}\" mit dem Typ NOTATION ist nicht zul\u00E4ssig.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = Notation \"{1}\" muss deklariert werden, wenn sie in der Notationstypliste f\u00FCr Attribut \"{0}\" referenziert wird.
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = Notation \"{1}\" muss deklariert werden, wenn sie in der Deklaration der nicht geparsten Entit\u00E4t f\u00FCr \"{0}\" referenziert wird.
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = Referenz zur Entit\u00E4t \"{0}\", die in einer externen geparsten Entit\u00E4t deklariert wird, ist in einem Standalone-Dokument nicht zul\u00E4ssig.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = Attribut \"{1}\" ist erforderlich und muss f\u00FCr Elementtyp \"{0}\" angegeben werden.
++        MSG_ELEMENT_WITH_ID_REQUIRED = Element mit "{0}" ist im Dokument erforderlich.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = Referenz zur externen Entit\u00E4t "{0}" ist in einem Standalone-Dokument nicht zul\u00E4ssig.
++        MSG_FIXED_ATTVALUE_INVALID = Attribut "{1}" mit Wert "{2}" muss den Wert"{3}" haben.
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Elementtyp "{0}" hat bereits ein Attribut "{1}" mit dem Typ ID. Ein zweites Attribut "{2}" mit dem Typ ID ist nicht zul\u00E4ssig.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Elementtyp "{0}" hat bereits ein Attribut "{1}" mit dem Typ NOTATION. Ein zweites Attribut "{2}" mit dem Typ NOTATION ist nicht zul\u00E4ssig.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = Notation "{1}" muss deklariert werden, wenn sie in der Notationstypliste f\u00FCr Attribut "{0}" referenziert wird.
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = Notation "{1}" muss deklariert werden, wenn sie in der Deklaration der nicht geparsten Entit\u00E4t f\u00FCr "{0}" referenziert wird.
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = Referenz zur Entit\u00E4t "{0}", die in einer externen geparsten Entit\u00E4t deklariert wird, ist in einem Standalone-Dokument nicht zul\u00E4ssig.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = Attribut "{1}" ist erforderlich und muss f\u00FCr Elementtyp "{0}" angegeben werden.
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = Es d\u00FCrfen keine Leerstellen zwischen Elementen in einem Standalone-Dokument vorkommen, die in einer externen geparsten Entit\u00E4t mit Elementcontent deklariert sind.
+-        NMTOKENInvalid = Attributwert \"{0}\" mit dem Typ NMTOKEN muss ein Namenstoken sein.
+-        NMTOKENSInvalid = Attributwert \"{0}\" mit dem Typ NMTOKENS muss mindestens ein Namenstoken sein.
+-        NoNotationOnEmptyElement = Elementtyp \"{0}\", der als EMPTY deklariert wurde, kann nicht das Attribut \"{1}\" mit dem Typ NOTATION deklarieren.
+-        RootElementTypeMustMatchDoctypedecl = Dokument-Root-Element \"{1}\"muss mit DOCTYPE-Root \"{0}\" \u00FCbereinstimmen.
+-        UndeclaredElementInContentSpec = Contentmodell des Elements \"{0}\" verweist auf das nicht deklarierte Element \"{1}\".
+-        UniqueNotationName = Deklaration f\u00FCr die Notation \"{0}\" ist nicht eindeutig. Ein jeweiliger Name darf nicht in mehreren Notationsdeklarationen deklariert werden.
++        NMTOKENInvalid = Attributwert "{0}" mit dem Typ NMTOKEN muss ein Namenstoken sein.
++        NMTOKENSInvalid = Attributwert "{0}" mit dem Typ NMTOKENS muss mindestens ein Namenstoken sein.
++        NoNotationOnEmptyElement = Elementtyp "{0}", der als EMPTY deklariert wurde, kann nicht das Attribut "{1}" mit dem Typ NOTATION deklarieren.
++        RootElementTypeMustMatchDoctypedecl = Dokument-Root-Element "{1}"muss mit DOCTYPE-Root "{0}" \u00FCbereinstimmen.
++        UndeclaredElementInContentSpec = Contentmodell des Elements "{0}" verweist auf das nicht deklarierte Element "{1}".
++        UniqueNotationName = Deklaration f\u00FCr die Notation "{0}" ist nicht eindeutig. Ein jeweiliger Name darf nicht in mehreren Notationsdeklarationen deklariert werden.
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype-Validator: Nicht erfolgreich. Initialisierungsmethode muss mit einer g\u00FCltigen Grammatikreferenz aufgerufen werden. \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\" ist geparst.
+-        ENTITYNotValid = ENTITY \"{0}\" ist nicht g\u00FCltig.
++        ENTITYNotUnparsed = ENTITY "{0}" ist geparst.
++        ENTITYNotValid = ENTITY "{0}" ist nicht g\u00FCltig.
+         EmptyList = Werte der Typen ENTITIES, IDREFS und NMTOKENS d\u00FCrfen keine leeren Listen sein.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = Externe Entit\u00E4tsreferenz \"&{0};\" ist in einem Attributwert nicht zul\u00E4ssig.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = Externe Entit\u00E4tsreferenz "&{0};" ist in einem Attributwert nicht zul\u00E4ssig.
++        AccessExternalDTD = Externe DTD: Lesen von externer DTD "{0}" nicht erfolgreich, da "{1}"-Zugriff wegen der von der Eigenschaft "accessExternalDTD" festgelegten Einschr\u00E4nkung nicht zul\u00E4ssig ist.
++        AccessExternalEntity = Externe Entit\u00E4t: Lesen des externen Dokuments "{0}" nicht erfolgreich, da "{1}"-Zugriff wegen der von der Eigenschaft "accessExternalDTD" festgelegten Einschr\u00E4nkung nicht zul\u00E4ssig ist.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = Entit\u00E4t \"{0}\" wurde referenziert aber nicht deklariert.
+-        ReferenceToUnparsedEntity = Nicht geparste Entit\u00E4tsreferenz \"&{0};\" ist nicht zul\u00E4ssig.
+-        RecursiveReference = Rekursive Entit\u00E4tsreferenz \"{0}\". (Referenzpfad: {1}),
+-        RecursiveGeneralReference = Rekursive allgemeine Entit\u00E4tsreferenz \"&{0};\". (Referenzpfad: {1}),
+-        RecursivePEReference = Rekursive Parameterentit\u00E4tsreferenz \"%{0};\". (Referenzpfad: {1}),
++        EntityNotDeclared = Entit\u00E4t "{0}" wurde referenziert aber nicht deklariert.
++        ReferenceToUnparsedEntity = Nicht geparste Entit\u00E4tsreferenz "&{0};" ist nicht zul\u00E4ssig.
++        RecursiveReference = Rekursive Entit\u00E4tsreferenz "{0}". (Referenzpfad: {1}),
++        RecursiveGeneralReference = Rekursive allgemeine Entit\u00E4tsreferenz "&{0};". (Referenzpfad: {1}),
++        RecursivePEReference = Rekursive Parameterentit\u00E4tsreferenz "%{0};". (Referenzpfad: {1}),
+ # 4.3.3 Character Encoding in Entities
+         EncodingNotSupported = Codierung "{0}" wird nicht unterst\u00FCtzt.
+         EncodingRequired = Eine nicht in UTF-8 oder UTF-16 codierte geparste Entit\u00E4t muss eine Codierungsdeklaration enthalten.
+@@ -305,14 +303,14 @@
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = Element oder Attribut stimmt nicht mit QName-Production \u00FCberein: QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = Element \"{0}\" darf nicht \"xmlns\" als Pr\u00E4fix enthalten.
+-        ElementPrefixUnbound = Pr\u00E4fix \"{0}\" f\u00FCr Element \"{1}\" ist nicht gebunden.
+-        AttributePrefixUnbound = Pr\u00E4fix \"{2}\" f\u00FCr Attribut \"{1}\", das mit Elementtyp \"{0}\" verkn\u00FCpft ist, ist nicht gebunden.
+-        EmptyPrefixedAttName = Wert des Attributs \"{0}\" ist ung\u00FCltig. Namespace Bindings mit Pr\u00E4fix d\u00FCrfen nicht leer sein.
+-        PrefixDeclared = Namespace-Pr\u00E4fix \"{0}\" wurde nicht deklariert.
++        ElementXMLNSPrefix = Element "{0}" darf nicht "xmlns" als Pr\u00E4fix enthalten.
++        ElementPrefixUnbound = Pr\u00E4fix "{0}" f\u00FCr Element "{1}" ist nicht gebunden.
++        AttributePrefixUnbound = Pr\u00E4fix "{2}" f\u00FCr Attribut "{1}", das mit Elementtyp "{0}" verkn\u00FCpft ist, ist nicht gebunden.
++        EmptyPrefixedAttName = Wert des Attributs "{0}" ist ung\u00FCltig. Namespace Bindings mit Pr\u00E4fix d\u00FCrfen nicht leer sein.
++        PrefixDeclared = Namespace-Pr\u00E4fix "{0}" wurde nicht deklariert.
+         CantBindXMLNS = Pr\u00E4fix "xmlns" kann nicht explizit an einen Namespace gebunden werden. Umgekehrt kann auch der Namespace f\u00FCr "xmlns" nicht explizit an ein Pr\u00E4fix gebunden werden.
+         CantBindXML = Pr\u00E4fix "xml" kann nicht an einen anderen Namespace als den gew\u00F6hnlichen gebunden werden. Umgekehrt kann auch der Namespace f\u00FCr "xml" nicht an ein anderes Pr\u00E4fix als "xml" gebunden werden.
+-        MSG_ATT_DEFAULT_INVALID = defaultValue \"{1}\" von Attribut \"{0}\" ist aufgrund der lexikalischen Constraints dieses Attributtyps nicht g\u00FCltig.
++        MSG_ATT_DEFAULT_INVALID = defaultValue "{1}" von Attribut "{0}" ist aufgrund der lexikalischen Constraints dieses Attributtyps nicht g\u00FCltig.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=Parser hat mehr als \"{0}\" Entit\u00E4tserweiterungen in diesem Dokument gefunden. Dies ist der durch die Anwendung vorgeschriebene Grenzwert.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: Der Parser hat mehr als {0} Entit\u00E4tserweiterungen in diesem Dokument gefunden. Dies ist der von JDK vorgeschriebene Grenzwert.
++        ElementAttributeLimit=JAXP00010002: Element "{0}" hat mehr als {1} Attribute. "{1}" ist der von JDK vorgeschriebene Grenzwert.
++        MaxEntitySizeLimit=JAXP00010003: Die L\u00E4nge von Entit\u00E4t "{0}" ist "{1}" und \u00FCberschreitet den Grenzwert "{2}", der von "{3}" festgelegt wurde.
++        TotalEntitySizeLimit=JAXP00010004: Die akkumulierte Gr\u00F6\u00DFe "{0}" der Entit\u00E4ten \u00FCberschreitet den Grenzwert "{1}", der von "{2}" festgelegt wurde.
++        MaxXMLNameLimit=JAXP00010005: Der Name "{0}" \u00FCberschreitet den Grenzwert "{1}", der von "{2}" festgelegt wurde.
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= Element \"{0}\" hat mehr als \"{1}\" Attribute. \"{1}\" ist der durch die Anwendung vorgeschriebene Grenzwert.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_es.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{0}) no v\u00E1lido en el pr\u00F3logo del documento.
+         InvalidCharInXMLDecl = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{0}) no v\u00E1lido en la declaraci\u00F3n XML.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = La secuencia de caracteres \"]]>\" no debe aparecer en el contenido, a menos que se utilice para marcar el final de una secci\u00F3n CDATA.
++        CDEndInContent = La secuencia de caracteres "]]>" no debe aparecer en el contenido, a menos que se utilice para marcar el final de una secci\u00F3n CDATA.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = La secci\u00F3n CDATA debe finalizar en \"]]>\".
++        CDSectUnterminated = La secci\u00F3n CDATA debe finalizar en "]]>".
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = La declaraci\u00F3n XML s\u00F3lo puede aparecer al principio del documento.
+-        EqRequiredInXMLDecl = El car\u00E1cter '' = '' debe aparecer despu\u00E9s de \"{0}\" en la declaraci\u00F3n XML.
+-        QuoteRequiredInXMLDecl = El valor despu\u00E9s de \"{0}\" en la declaraci\u00F3n XML debe ser una cadena con comillas.
+-        XMLDeclUnterminated = La declaraci\u00F3n XML debe finalizar en \"?>\".
++        EqRequiredInXMLDecl = El car\u00E1cter '' = '' debe aparecer despu\u00E9s de "{0}" en la declaraci\u00F3n XML.
++        QuoteRequiredInXMLDecl = El valor despu\u00E9s de "{0}" en la declaraci\u00F3n XML debe ser una cadena con comillas.
++        XMLDeclUnterminated = La declaraci\u00F3n XML debe finalizar en "?>".
+         VersionInfoRequired = La versi\u00F3n es necesaria en la declaraci\u00F3n XML.
+         SpaceRequiredBeforeVersionInXMLDecl = Es necesario un espacio en blanco antes del pseudo atributo version en la declaraci\u00F3n XML.
+         SpaceRequiredBeforeEncodingInXMLDecl = Es necesario un espacio en blanco antes del pseudo atributo encoding en la declaraci\u00F3n XML.
+@@ -71,70 +68,71 @@
+         ReferenceIllegalInTrailingMisc=La referencia no est\u00E1 permitida en la secci\u00F3n final.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = El valor de declaraci\u00F3n del documento aut\u00F3nomo debe ser \"yes\" o \"no\", pero nunca \"{0}\".
++        SDDeclInvalid = El valor de declaraci\u00F3n del documento aut\u00F3nomo debe ser "yes" o "no", pero nunca "{0}".
++        SDDeclNameInvalid = Puede que el nombre aut\u00F3nomo de la declaraci\u00F3n XML est\u00E9 mal escrito.
+ # 2.12 Language Identification
+-        XMLLangInvalid = El valor del atributo xml:lang \"{0}\" es un identificador de idioma no v\u00E1lido.
++        XMLLangInvalid = El valor del atributo xml:lang "{0}" es un identificador de idioma no v\u00E1lido.
+ # 3. Logical Structures
+-        ETagRequired = El tipo de elemento \"{0}\" debe finalizar por la etiqueta final coincidente \"</{0}>\".
++        ETagRequired = El tipo de elemento "{0}" debe finalizar por la etiqueta final coincidente "</{0}>".
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = El tipo de elemento \"{0}\" debe ir seguido de una de estas especificaciones de atributo: \">\" o \"/>\".
+-        EqRequiredInAttribute = El nombre de atributo \"{1}\" asociado a un tipo de elemento \"{0}\" debe ir seguido del car\u00E1cter '' = ''.
+-        OpenQuoteExpected = Las comillas de apertura se deben utilizar para el atributo \"{1}\" asociado a un tipo de elemento \"{0}\".
+-        CloseQuoteExpected = Las comillas de cierre se deben utilizar para el atributo \"{1}\" asociado a un tipo de elemento \"{0}\".
+-        AttributeNotUnique = El atributo \"{1}\" ya se ha especificado para el elemento \"{0}\".
+-        AttributeNSNotUnique = El atributo \"{1}\" enlazado al espacio de nombres \"{2}\" ya se ha especificado para el elemento \"{0}\".
+-        ETagUnterminated = La etiqueta final para el tipo de elemento \"{0}\" debe finalizar en un delimitador ''>''.
++        ElementUnterminated = El tipo de elemento "{0}" debe ir seguido de una de estas especificaciones de atributo: ">" o "/>".
++        EqRequiredInAttribute = El nombre de atributo "{1}" asociado a un tipo de elemento "{0}" debe ir seguido del car\u00E1cter '' = ''.
++        OpenQuoteExpected = Las comillas de apertura se deben utilizar para el atributo "{1}" asociado a un tipo de elemento "{0}".
++        CloseQuoteExpected = Las comillas de cierre se deben utilizar para el atributo "{1}" asociado a un tipo de elemento "{0}".
++        AttributeNotUnique = El atributo "{1}" ya se ha especificado para el elemento "{0}".
++        AttributeNSNotUnique = El atributo "{1}" enlazado al espacio de nombres "{2}" ya se ha especificado para el elemento "{0}".
++        ETagUnterminated = La etiqueta final para el tipo de elemento "{0}" debe finalizar en un delimitador ''>''.
+         MarkupNotRecognizedInContent = El contenido de los elementos debe constar de marcadores o datos de car\u00E1cter con un formato correcto.
+         DoctypeIllegalInContent = No se permite un DOCTYPE en el contenido.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = La referencia debe finalizar con un delimitador ';'.
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = La referencia debe incluirse totalmente en la misma entidad analizada.
+-        ElementEntityMismatch = El elemento \"{0}\" debe empezar y finalizar en la misma entidad.
++        ElementEntityMismatch = El elemento "{0}" debe empezar y finalizar en la misma entidad.
+         MarkupEntityMismatch=Las estructuras del documento XML deben empezar y finalizar en la misma entidad.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{2}) no v\u00E1lido en el valor del atributo \"{1}\" y el elemento es \"{0}\".
++        InvalidCharInAttValue = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{2}) no v\u00E1lido en el valor del atributo "{1}" y el elemento es "{0}".
+         InvalidCharInComment = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{0}) no v\u00E1lido en el comentario.
+         InvalidCharInPI = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{0}) no v\u00E1lido en la instrucci\u00F3n de procesamiento.
+         InvalidCharInInternalSubset = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{0}) no v\u00E1lido en el subconjunto interno del DTD.
+         InvalidCharInTextDecl = Se ha encontrado un car\u00E1cter XML (Unicode: 0x{0}) no v\u00E1lido en la declaraci\u00F3n de texto.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = El valor del atributo \"{1}\" debe empezar por un car\u00E1cter de comillas dobles o simples.
+-        LessthanInAttValue = El valor del atributo \"{1}\" asociado a un tipo de elemento \"{0}\" no debe contener el car\u00E1cter ''<''.
+-        AttributeValueUnterminated = El valor para el atributo \"{1}\" debe finalizar en un car\u00E1cter de comillas coincidentes.
++        QuoteRequiredInAttValue = El valor del atributo "{1}" debe empezar por un car\u00E1cter de comillas dobles o simples.
++        LessthanInAttValue = El valor del atributo "{1}" asociado a un tipo de elemento "{0}" no debe contener el car\u00E1cter ''<''.
++        AttributeValueUnterminated = El valor para el atributo "{1}" debe finalizar en un car\u00E1cter de comillas coincidentes.
+ # 2.5 Comments
+-        InvalidCommentStart = El comentario debe empezar por \"<!--\".
+-        DashDashInComment = La cadena \"--\" no est\u00E1 permitida en los comentarios.
+-        CommentUnterminated = El comentario debe finalizar en \"-->\".
++        InvalidCommentStart = El comentario debe empezar por "<!--".
++        DashDashInComment = La cadena "--" no est\u00E1 permitida en los comentarios.
++        CommentUnterminated = El comentario debe finalizar en "-->".
+         COMMENT_NOT_IN_ONE_ENTITY = El comentario no est\u00E1 incluido en la misma entidad.
+ # 2.6 Processing Instructions
+         PITargetRequired = La instrucci\u00F3n de procesamiento debe empezar por el nombre del destino.
+         SpaceRequiredInPI = Es necesario un espacio en blanco entre el destino de la instrucci\u00F3n de procesamiento y los datos.
+-        PIUnterminated = La instrucci\u00F3n de procesamiento debe finalizar en \"?>\".
+-        ReservedPITarget = El destino de la instrucci\u00F3n de procesamiento que coincide con \"[xX][mM][lL]\" no est\u00E1 permitido.
++        PIUnterminated = La instrucci\u00F3n de procesamiento debe finalizar en "?>".
++        ReservedPITarget = El destino de la instrucci\u00F3n de procesamiento que coincide con "[xX][mM][lL]" no est\u00E1 permitido.
+         PI_NOT_IN_ONE_ENTITY = La instrucci\u00F3n de procesamiento no est\u00E1 incluida en la misma entidad.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = Versi\u00F3n no v\u00E1lida \"{0}\".
+-        VersionNotSupported = La versi\u00F3n XML \"{0}\" no est\u00E1 soportada, s\u00F3lo la versi\u00F3n XML 1.0 est\u00E1 soportada.
+-        VersionNotSupported11 = La versi\u00F3n XML \"{0}\" no est\u00E1 soportada, s\u00F3lo las versiones XML 1.0 y XML 1.1 est\u00E1n soportadas.
++        VersionInfoInvalid = Versi\u00F3n no v\u00E1lida "{0}".
++        VersionNotSupported = La versi\u00F3n XML "{0}" no est\u00E1 soportada, s\u00F3lo la versi\u00F3n XML 1.0 est\u00E1 soportada.
++        VersionNotSupported11 = La versi\u00F3n XML "{0}" no est\u00E1 soportada, s\u00F3lo las versiones XML 1.0 y XML 1.1 est\u00E1n soportadas.
+         VersionMismatch= Una entidad no puede incluir otra entidad de una versi\u00F3n posterior.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = Una representaci\u00F3n decimal debe aparecer inmediatamente despu\u00E9s de \"&#\" en una referencia de caracteres.
+-        HexdigitRequiredInCharRef = Una representaci\u00F3n hexadecimal debe aparecer inmediatamente despu\u00E9s de \"&#\" en una referencia de caracteres.
++        DigitRequiredInCharRef = Una representaci\u00F3n decimal debe aparecer inmediatamente despu\u00E9s de "&#" en una referencia de caracteres.
++        HexdigitRequiredInCharRef = Una representaci\u00F3n hexadecimal debe aparecer inmediatamente despu\u00E9s de "&#" en una referencia de caracteres.
+         SemicolonRequiredInCharRef = La referencia de caracteres debe finalizar en el delimitador ';'.
+-        InvalidCharRef = La referencia de caracteres \"&#{0}\" es un car\u00E1cter XML no v\u00E1lido.
++        InvalidCharRef = La referencia de caracteres "&#{0}" es un car\u00E1cter XML no v\u00E1lido.
+         NameRequiredInReference = El nombre de la entidad debe aparecer inmediatamente despu\u00E9s de '&' en la referencia de entidades.
+-        SemicolonRequiredInReference = La referencia a la entidad \"{0}\" debe finalizar en el delimitador '';''.
++        SemicolonRequiredInReference = La referencia a la entidad "{0}" debe finalizar en el delimitador '';''.
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = La declaraci\u00F3n de texto s\u00F3lo puede aparecer al principio de la entidad analizada externa.
+-        EqRequiredInTextDecl = El car\u00E1cter '' = '' debe aparecer despu\u00E9s de \"{0}\" en la declaraci\u00F3n de texto.
+-        QuoteRequiredInTextDecl = El valor despu\u00E9s de \"{0}\" en la declaraci\u00F3n de texto debe ser una cadena con comillas.
+-        CloseQuoteMissingInTextDecl = Faltan las comillas de cierre en el valor despu\u00E9s de \"{0}\" en la declaraci\u00F3n de texto.
++        EqRequiredInTextDecl = El car\u00E1cter '' = '' debe aparecer despu\u00E9s de "{0}" en la declaraci\u00F3n de texto.
++        QuoteRequiredInTextDecl = El valor despu\u00E9s de "{0}" en la declaraci\u00F3n de texto debe ser una cadena con comillas.
++        CloseQuoteMissingInTextDecl = Faltan las comillas de cierre en el valor despu\u00E9s de "{0}" en la declaraci\u00F3n de texto.
+         SpaceRequiredBeforeVersionInTextDecl = Es necesario un espacio en blanco antes del pseudo atributo version en la declaraci\u00F3n de texto.
+         SpaceRequiredBeforeEncodingInTextDecl = Es necesario un espacio en blanco antes del pseudo atributo encoding en la declaraci\u00F3n de texto.
+-        TextDeclUnterminated = La declaraci\u00F3n de texto debe finalizar en \"?>\".
++        TextDeclUnterminated = La declaraci\u00F3n de texto debe finalizar en "?>".
+         EncodingDeclRequired = La declaraci\u00F3n de codificaci\u00F3n es necesaria en la declaraci\u00F3n de texto.
+         NoMorePseudoAttributes = No se permiten m\u00E1s pseudo atributos.
+         MorePseudoAttributes = Se esperan m\u00E1s pseudo atributos.
+@@ -143,13 +141,13 @@
+         CommentNotInOneEntity = El comentario debe incluirse totalmente en la misma entidad analizada.
+         PINotInOneEntity = La instrucci\u00F3n de procesamiento debe incluirse totalmente en la misma entidad analizada.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = Nombre de codificaci\u00F3n no v\u00E1lido \"{0}\".
+-        EncodingByteOrderUnsupported = El orden de bytes proporcionado para la codificaci\u00F3n \"{0}\" no est\u00E1 soportado.
++        EncodingDeclInvalid = Nombre de codificaci\u00F3n no v\u00E1lido "{0}".
++        EncodingByteOrderUnsupported = El orden de bytes proporcionado para la codificaci\u00F3n "{0}" no est\u00E1 soportado.
+         InvalidByte = Byte no v\u00E1lido {0} de la secuencia UTF-8 de {1} bytes
+         ExpectedByte = Byte esperado {0} de la secuencia UTF-8 de {1} bytes.  
+         InvalidHighSurrogate = Los bits de sustituci\u00F3n superior en la secuencia UTF-8 no deben exceder 0x10 pero se han encontrado 0x{0}.
+-        OperationNotSupported = La operaci\u00F3n \"{0}\" no est\u00E1 soportada por el lector {1}.
+-        InvalidASCII = El byte \"{0}\"no es un miembro del juego de caracteres ASCII (7 bits).
++        OperationNotSupported = La operaci\u00F3n "{0}" no est\u00E1 soportada por el lector {1}.
++        InvalidASCII = El byte "{0}"no es un miembro del juego de caracteres ASCII (7 bits).
+         CharConversionFailure = Una entidad con una codificaci\u00F3n determinada no debe contener secuencias no permitidas en dicha codificaci\u00F3n.
+         
+ # DTD Messages
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = El car\u00E1cter (Unicode: 0x{0}) no est\u00E1 permitido en el identificador p\u00FAblico.
+         SpaceRequiredBetweenPublicAndSystem = Son necesarios espacios en blanco entre publicId y systemId.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Es necesario un espacio en blanco despu\u00E9s de \"<!DOCTYPE\" en la declaraci\u00F3n de tipo de documento.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = El tipo de elemento ra\u00EDz debe aparecer despu\u00E9s de \"<!DOCTYPE\" en la declaraci\u00F3n de tipo de documento.
+-        DoctypedeclUnterminated = La declaraci\u00F3n de tipo de documento para el tipo de elemento ra\u00EDz \"{0}\" debe finalizar en ''>''.
+-        PEReferenceWithinMarkup = La referencia de entidad del par\u00E1metro \"%{0};\" no puede producirse en el marcador en el subconjunto interno del DTD.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Es necesario un espacio en blanco despu\u00E9s de "<!DOCTYPE" en la declaraci\u00F3n de tipo de documento.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = El tipo de elemento ra\u00EDz debe aparecer despu\u00E9s de "<!DOCTYPE" en la declaraci\u00F3n de tipo de documento.
++        DoctypedeclUnterminated = La declaraci\u00F3n de tipo de documento para el tipo de elemento ra\u00EDz "{0}" debe finalizar en ''>''.
++        PEReferenceWithinMarkup = La referencia de entidad del par\u00E1metro "%{0};" no puede producirse en el marcador en el subconjunto interno del DTD.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Las declaraciones de marcador que se incluyen o a las que apunta la declaraci\u00F3n de tipo de documento deben tener el formato correcto.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = La declaraci\u00F3n de atributo para \"xml:space\" debe ofrecerse como un tipo enumerado cuyos \u00FAnicos valores posibles son \"default\" y \"preserve\".
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = La declaraci\u00F3n de atributo para "xml:space" debe ofrecerse como un tipo enumerado cuyos \u00FAnicos valores posibles son "default" y "preserve".
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Es necesario un espacio en blanco despu\u00E9s de \"<!ELEMENT\" en la declaraci\u00F3n de tipo de elemento.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Es necesario un espacio en blanco despu\u00E9s de "<!ELEMENT" en la declaraci\u00F3n de tipo de elemento.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = El tipo de elemento es necesario en la declaraci\u00F3n de tipo de elemento.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Es necesario un espacio en blanco despu\u00E9s del tipo de elemento \"{0}\" en la declaraci\u00F3n de tipo de elemento.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = Es necesaria la restricci\u00F3n despu\u00E9s del tipo de elemento \"{0}\" en la declaraci\u00F3n de tipo de elemento.
+-        ElementDeclUnterminated = La declaraci\u00F3n para el tipo de elemento \"{0}\" debe finalizar en ''>''.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Es necesario un espacio en blanco despu\u00E9s del tipo de elemento "{0}" en la declaraci\u00F3n de tipo de elemento.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = Es necesaria la restricci\u00F3n despu\u00E9s del tipo de elemento "{0}" en la declaraci\u00F3n de tipo de elemento.
++        ElementDeclUnterminated = La declaraci\u00F3n para el tipo de elemento "{0}" debe finalizar en ''>''.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Un car\u00E1cter ''('' o un tipo de elemento es necesario en la declaraci\u00F3n de tipo de elemento \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Un car\u00E1cter '')'' es necesario en la declaraci\u00F3n de tipo de elemento \"{0}\".
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Un car\u00E1cter ''('' o un tipo de elemento es necesario en la declaraci\u00F3n de tipo de elemento "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Un car\u00E1cter '')'' es necesario en la declaraci\u00F3n de tipo de elemento "{0}".
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Un tipo de elemento es necesario en la declaraci\u00F3n de tipo de elemento \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Un car\u00E1cter '')'' es necesario en la declaraci\u00F3n de tipo de elemento \"{0}\".
+-        MixedContentUnterminated = El modelo de contenido mixto \"{0}\" debe finalizar en \")*\" cuando los tipos de elementos secundarios est\u00E1n restringidos.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Un tipo de elemento es necesario en la declaraci\u00F3n de tipo de elemento "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Un car\u00E1cter '')'' es necesario en la declaraci\u00F3n de tipo de elemento "{0}".
++        MixedContentUnterminated = El modelo de contenido mixto "{0}" debe finalizar en ")*" cuando los tipos de elementos secundarios est\u00E1n restringidos.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Es necesario un espacio en blanco despu\u00E9s de \"<!ATTLIST\" en la declaraci\u00F3n de la lista de atributos.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Es necesario un espacio en blanco despu\u00E9s de "<!ATTLIST" en la declaraci\u00F3n de la lista de atributos.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = El tipo de elemento es necesario en la declaraci\u00F3n de la lista de atributos.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Es necesario un espacio en blanco antes del nombre de atributo en la declaraci\u00F3n de la lista de atributos para el elemento \"{0}\".
+-        AttNameRequiredInAttDef = Se debe especificar el nombre del atributo en la declaraci\u00F3n de la lista de atributos para el elemento \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Es necesario un espacio en blanco antes del tipo de atributo en la declaraci\u00F3n del atributo \"{1}\" para el elemento \"{0}\".
+-        AttTypeRequiredInAttDef = Es necesario el tipo de atributo en la declaraci\u00F3n del atributo \"{1}\" para el elemento \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Es necesario un espacio en blanco antes del atributo por defecto en la declaraci\u00F3n del atributo \"{1}\" para el elemento \"{0}\".
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Se ha proporcionado m\u00E1s de una definici\u00F3n de atributo para el mismo atributo \"{1}\" de un elemento determinado \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Es necesario un espacio en blanco antes del nombre de atributo en la declaraci\u00F3n de la lista de atributos para el elemento "{0}".
++        AttNameRequiredInAttDef = Se debe especificar el nombre del atributo en la declaraci\u00F3n de la lista de atributos para el elemento "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Es necesario un espacio en blanco antes del tipo de atributo en la declaraci\u00F3n del atributo "{1}" para el elemento "{0}".
++        AttTypeRequiredInAttDef = Es necesario el tipo de atributo en la declaraci\u00F3n del atributo "{1}" para el elemento "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Es necesario un espacio en blanco antes del atributo por defecto en la declaraci\u00F3n del atributo "{1}" para el elemento "{0}".
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Se ha proporcionado m\u00E1s de una definici\u00F3n de atributo para el mismo atributo "{1}" de un elemento determinado "{0}".
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Debe aparecer un espacio en blanco despu\u00E9s de \"NOTATION\" en la declaraci\u00F3n de atributo \"{1}\".
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = El car\u00E1cter ''('' debe aparecer despu\u00E9s de \"NOTATION\" en la declaraci\u00F3n de atributo \"{1}\".
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = El nombre de notaci\u00F3n es necesario en la lista de tipos de notaci\u00F3n para la declaraci\u00F3n de atributo \"{1}\".
+-        NotationTypeUnterminated = La lista de tipos de notaciones debe finalizar en '')'' en la declaraci\u00F3n del atributo \"{1}\".
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = El elemento de nombre es necesario en la lista de tipos enumerados para la declaraci\u00F3n del atributo \"{1}\".
+-        EnumerationUnterminated = La lista de tipos enumerados debe finalizar en '')'' en la declaraci\u00F3n del atributo \"{1}\".
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = El valor de enumeraci\u00F3n \"{1}\" se especific\u00F3 m\u00E1s de una vez en la declaraci\u00F3n del atributo \"{2}\" para el elemento \"{0}\". Todos los NMTOKENS en una declaraci\u00F3n del atributo Enumeration \u00FAnico deben ser distintos.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = El valor de enumeraci\u00F3n \"{1}\" se especific\u00F3 m\u00E1s de una vez en la declaraci\u00F3n del atributo \"{2}\" para el elemento \"{0}\". Todos los nombres NOTATION en una declaraci\u00F3n del atributo NotationType \u00FAnico deben ser distintos.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Debe aparecer un espacio en blanco despu\u00E9s de "NOTATION" en la declaraci\u00F3n de atributo "{1}".
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = El car\u00E1cter ''('' debe aparecer despu\u00E9s de "NOTATION" en la declaraci\u00F3n de atributo "{1}".
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = El nombre de notaci\u00F3n es necesario en la lista de tipos de notaci\u00F3n para la declaraci\u00F3n de atributo "{1}".
++        NotationTypeUnterminated = La lista de tipos de notaciones debe finalizar en '')'' en la declaraci\u00F3n del atributo "{1}".
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = El token de nombre es necesario en la lista de tipos enumerados para la declaraci\u00F3n del atributo "{1}".
++        EnumerationUnterminated = La lista de tipos enumerados debe finalizar en '')'' en la declaraci\u00F3n del atributo "{1}".
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = El valor de enumeraci\u00F3n "{1}" se especific\u00F3 m\u00E1s de una vez en la declaraci\u00F3n del atributo "{2}" para el token "{0}". Todos los NMTOKENS en una declaraci\u00F3n del atributo Enumeration \u00FAnico deben ser distintos.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = El valor de enumeraci\u00F3n "{1}" se especific\u00F3 m\u00E1s de una vez en la declaraci\u00F3n del atributo "{2}" para el elemento "{0}". Todos los nombres NOTATION en una declaraci\u00F3n del atributo NotationType \u00FAnico deben ser distintos.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Debe aparecer un espacio en blanco despu\u00E9s de \"FIXED\" en la declaraci\u00F3n de atributo \"{1}\".
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Debe aparecer un espacio en blanco despu\u00E9s de "FIXED" en la declaraci\u00F3n de atributo "{1}".
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = La secci\u00F3n condicional incluida debe finalizar en \"]]>\".
+-        IgnoreSectUnterminated = La secci\u00F3n condicional excluida debe finalizar en \"]]>\".
++        IncludeSectUnterminated = La secci\u00F3n condicional incluida debe finalizar en "]]>".
++        IgnoreSectUnterminated = La secci\u00F3n condicional excluida debe finalizar en "]]>".
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = El nombre de la entidad debe aparecer inmediatamente despu\u00E9s de '%' en la referencia de entidad de par\u00E1metro.
+-        SemicolonRequiredInPEReference = La referencia de entidad de par\u00E1metro \"%{0};\" debe finalizar en el delimitador '';''.
++        SemicolonRequiredInPEReference = La referencia de entidad de par\u00E1metro "%{0};" debe finalizar en el delimitador '';''.
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Es necesario un espacio en blanco despu\u00E9s de \"<!ENTITY\" en la declaraci\u00F3n de entidad.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Es necesario un espacio en blanco entre \"<!ENTITY\" y el car\u00E1cter '%' en la declaraci\u00F3n de entidad de par\u00E1metro.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Es necesario un espacio en blanco despu\u00E9s de "<!ENTITY" en la declaraci\u00F3n de entidad.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Es necesario un espacio en blanco entre "<!ENTITY" y el car\u00E1cter '%' en la declaraci\u00F3n de entidad de par\u00E1metro.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = Es necesario un espacio en blanco entre '%' y el nombre de entidad en la declaraci\u00F3n de entidad de par\u00E1metro.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = El nombre de la entidad es necesario en la declaraci\u00F3n de entidad.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Es necesario un espacio en blanco entre el nombre de entidad \"{0}\" y la definici\u00F3n en la declaraci\u00F3n de entidad.
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Es necesario un espacio en blanco entre \"NDATA\" y el nombre de notaci\u00F3n en la declaraci\u00F3n para la entidad \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Es necesario un espacio en blanco antes de \"NDATA\" en la declaraci\u00F3n para la entidad \"{0}\".
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = El nombre de notaci\u00F3n es necesario despu\u00E9s de \"NDATA\" en la declaraci\u00F3n para la entidad \"{0}\".
+-        EntityDeclUnterminated = La declaraci\u00F3n para la entidad \"{0}\" debe finalizar en ''>''.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = La entidad \"{0}\" se ha declarado m\u00E1s de una vez.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Es necesario un espacio en blanco entre el nombre de entidad "{0}" y la definici\u00F3n en la declaraci\u00F3n de entidad.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Es necesario un espacio en blanco entre "NDATA" y el nombre de notaci\u00F3n en la declaraci\u00F3n para la entidad "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Es necesario un espacio en blanco antes de "NDATA" en la declaraci\u00F3n para la entidad "{0}".
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = El nombre de notaci\u00F3n es necesario despu\u00E9s de "NDATA" en la declaraci\u00F3n para la entidad "{0}".
++        EntityDeclUnterminated = La declaraci\u00F3n para la entidad "{0}" debe finalizar en ''>''.
++	MSG_DUPLICATE_ENTITY_DEFINITION = La entidad "{0}" se ha declarado m\u00E1s de una vez.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = La declaraci\u00F3n de entidad externa debe empezar por \"SYSTEM\" o \"PUBLIC\".
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Es necesario un espacio en blanco entre \"PUBLIC\" y el identificador p\u00FAblico.
++        ExternalIDRequired = La declaraci\u00F3n de entidad externa debe empezar por "SYSTEM" o "PUBLIC".
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Es necesario un espacio en blanco entre "PUBLIC" y el identificador p\u00FAblico.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = Es necesario un espacio en blanco entre el identificador p\u00FAblico y el identificador del sistema.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Es necesario un espacio en blanco entre \"SYSTEM\" y el identificador del sistema.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = No se debe especificar el identificador del fragmento como parte del identificador del sistema \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Es necesario un espacio en blanco entre "SYSTEM" y el identificador del sistema.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = No se debe especificar el identificador del fragmento como parte del identificador del sistema "{0}".
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Es necesario un espacio en blanco despu\u00E9s de \"<!NOTATION\" en la declaraci\u00F3n de notaci\u00F3n.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Es necesario un espacio en blanco despu\u00E9s de "<!NOTATION" en la declaraci\u00F3n de notaci\u00F3n.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = El nombre de la notaci\u00F3n es necesario en la declaraci\u00F3n de notaci\u00F3n.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Es necesario un espacio en blanco despu\u00E9s del nombre de la notaci\u00F3n \"{0}\" en la declaraci\u00F3n de notaci\u00F3n.
+-        ExternalIDorPublicIDRequired = La declaraci\u00F3n para la notaci\u00F3n \"{0}\" debe incluir un identificador p\u00FAblico o del sistema.
+-        NotationDeclUnterminated = La declaraci\u00F3n para la notaci\u00F3n \"{0}\" debe finalizar en ''>''.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Es necesario un espacio en blanco despu\u00E9s del nombre de la notaci\u00F3n "{0}" en la declaraci\u00F3n de notaci\u00F3n.
++        ExternalIDorPublicIDRequired = La declaraci\u00F3n para la notaci\u00F3n "{0}" debe incluir un identificador p\u00FAblico o del sistema.
++        NotationDeclUnterminated = La declaraci\u00F3n para la notaci\u00F3n "{0}" debe finalizar en ''>''.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = El tipo de elemento \"{1}\" ya se especific\u00F3 en el modelo de contenido de la declaraci\u00F3n de elementos \"{0}\".
+-        ENTITIESInvalid = El valor de atributo \"{1}\" del tipo ENTITIES debe ser el nombre de una o m\u00E1s entidades no analizadas.
+-        ENTITYInvalid = El valor de atributo \"{1}\" del tipo ENTITY debe ser el nombre de una entidad no analizada.
+-        IDDefaultTypeInvalid = El atributo de identificador \"{0}\" debe tener un valor por defecto declarado de \"#IMPLIED\" o \"#REQUIRED\".
+-        IDInvalid = El valor de atributo \"{0}\" del tipo ID debe ser un nombre.
+-        IDInvalidWithNamespaces = El valor de atributo \"{0}\" del tipo ID debe ser un NCName cuando los espacios de nombres est\u00E9n activados.
+-        IDNotUnique = El valor de atributo \"{0}\" del tipo ID debe ser \u00FAnico en el documento.
+-        IDREFInvalid = El valor de atributo \"{0}\" del tipo IDREF debe ser un nombre.
+-        IDREFInvalidWithNamespaces = El valor de atributo \"{0}\" del tipo IDREF debe ser un NCName cuando los espacios de nombres est\u00E9n activados.
+-        IDREFSInvalid = El valor de atributo \"{0}\" del tipo IDREFS debe ser uno o m\u00E1s nombres.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = El texto de sustituci\u00F3n de la entidad del par\u00E1metro \"{0}\" debe incluir declaraciones correctamente anidadas cuando la referencia de entidad se utiliza como una declaraci\u00F3n completa.
+-        ImproperDeclarationNesting = El texto de sustituci\u00F3n de la entidad del par\u00E1metro \"{0}\" debe incluir declaraciones correctamente anidadas.
+-        ImproperGroupNesting = El texto de sustituci\u00F3n de la entidad del par\u00E1metro \"{0}\" debe incluir pares de par\u00E9ntesis correctamente anidados.
+-        INVALID_PE_IN_CONDITIONAL = El texto de sustituci\u00F3n de la entidad del par\u00E1metro \"{0}\" debe incluir la secci\u00F3n condicional completa o s\u00F3lo INCLUDE o IGNORE.
+-        MSG_ATTRIBUTE_NOT_DECLARED = El atributo \"{1}\" se debe haber declarado para el tipo de elemento \"{0}\".
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = El atributo \"{0}\" con el valor \"{1}\" debe tener un valor de la lista \"{2}\".
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = El valor \"{1}\" del atributo \"{0}\" no se debe cambiar mediante la normalizaci\u00F3n (a \"{2}\") en un documento aut\u00F3nomo.
+-        MSG_CONTENT_INCOMPLETE = El contenido del tipo de elemento \"{0}\" es incompleto, debe coincidir con \"{1}\".
+-        MSG_CONTENT_INVALID = El contenido del tipo de elemento \"{0}\" debe coincidir con \"{1}\".
+-        MSG_CONTENT_INVALID_SPECIFIED = El contenido del tipo de elemento \"{0}\" debe coincidir con \"{1}\". Los secundarios del tipo \"{2}\" no est\u00E1n permitidos.
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = El atributo \"{1}\" para el tipo de elemento \"{0}\" tiene un valor por defecto y debe especificarse en un documento aut\u00F3nomo.
+-        MSG_DUPLICATE_ATTDEF = El atributo \"{1}\" ya se ha declarado para el tipo de elemento \"{0}\".
+-        MSG_ELEMENT_ALREADY_DECLARED = El tipo de elemento \"{0}\" no debe declararse m\u00E1s de una vez.
+-        MSG_ELEMENT_NOT_DECLARED = El tipo de elemento \"{0}\" debe declararse.
++        DuplicateTypeInMixedContent = El tipo de elemento "{1}" ya se especific\u00F3 en el modelo de contenido de la declaraci\u00F3n de elementos "{0}".
++        ENTITIESInvalid = El valor de atributo "{1}" del tipo ENTITIES debe ser el nombre de una o m\u00E1s entidades no analizadas.
++        ENTITYInvalid = El valor de atributo "{1}" del tipo ENTITY debe ser el nombre de una entidad no analizada.
++        IDDefaultTypeInvalid = El atributo de identificador "{0}" debe tener un valor por defecto declarado de "#IMPLIED" o "#REQUIRED".
++        IDInvalid = El valor de atributo "{0}" del tipo ID debe ser un nombre.
++        IDInvalidWithNamespaces = El valor de atributo "{0}" del tipo ID debe ser un NCName cuando los espacios de nombres est\u00E9n activados.
++        IDNotUnique = El valor de atributo "{0}" del tipo ID debe ser \u00FAnico en el documento.
++        IDREFInvalid = El valor de atributo "{0}" del tipo IDREF debe ser un nombre.
++        IDREFInvalidWithNamespaces = El valor de atributo "{0}" del tipo IDREF debe ser un NCName cuando los espacios de nombres est\u00E9n activados.
++        IDREFSInvalid = El valor de atributo "{0}" del tipo IDREFS debe ser uno o m\u00E1s nombres.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = El texto de sustituci\u00F3n de la entidad del par\u00E1metro "{0}" debe incluir declaraciones correctamente anidadas cuando la referencia de entidad se utiliza como una declaraci\u00F3n completa.
++        ImproperDeclarationNesting = El texto de sustituci\u00F3n de la entidad del par\u00E1metro "{0}" debe incluir declaraciones correctamente anidadas.
++        ImproperGroupNesting = El texto de sustituci\u00F3n de la entidad del par\u00E1metro "{0}" debe incluir pares de par\u00E9ntesis correctamente anidados.
++        INVALID_PE_IN_CONDITIONAL = El texto de sustituci\u00F3n de la entidad del par\u00E1metro "{0}" debe incluir la secci\u00F3n condicional completa o s\u00F3lo INCLUDE o IGNORE.
++        MSG_ATTRIBUTE_NOT_DECLARED = El atributo "{1}" se debe haber declarado para el tipo de elemento "{0}".
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = El atributo "{0}" con el valor "{1}" debe tener un valor de la lista "{2}".
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = El valor "{1}" del atributo "{0}" no se debe cambiar mediante la normalizaci\u00F3n (a "{2}") en un documento aut\u00F3nomo.
++        MSG_CONTENT_INCOMPLETE = El contenido del tipo de elemento "{0}" es incompleto, debe coincidir con "{1}".
++        MSG_CONTENT_INVALID = El contenido del tipo de elemento "{0}" debe coincidir con "{1}".
++        MSG_CONTENT_INVALID_SPECIFIED = El contenido del tipo de elemento "{0}" debe coincidir con "{1}". Los secundarios del tipo "{2}" no est\u00E1n permitidos.
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = El atributo "{1}" para el tipo de elemento "{0}" tiene un valor por defecto y debe especificarse en un documento aut\u00F3nomo.
++        MSG_DUPLICATE_ATTDEF = El atributo "{1}" ya se ha declarado para el tipo de elemento "{0}".
++        MSG_ELEMENT_ALREADY_DECLARED = El tipo de elemento "{0}" no debe declararse m\u00E1s de una vez.
++        MSG_ELEMENT_NOT_DECLARED = El tipo de elemento "{0}" debe declararse.
+         MSG_GRAMMAR_NOT_FOUND = El documento no es v\u00E1lido: no se ha encontrado la gram\u00E1tica.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = Un elemento con el identificador \"{0}\" debe aparecer en el documento.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = La referencia a la entidad externa \"{0}\" no est\u00E1 permitida en un documento aut\u00F3nomo.
+-        MSG_FIXED_ATTVALUE_INVALID = El atributo \"{1}\" con el valor \"{2}\" debe tener un valor de \"{3}\".
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = El tipo de elemento \"{0}\" ya tiene un atributo \"{1}\" del tipo ID, un segundo atributo \"{2}\" del tipo ID no est\u00E1 permitido.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = El tipo de elemento \"{0}\" ya tiene un atributo \"{1}\" del tipo NOTATION, un segundo atributo \"{2}\" del tipo NOTATION no est\u00E1 permitido.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = La notaci\u00F3n \"{1}\" debe declararse cuando se hace referencia a la misma en la lista de tipos de notaci\u00F3n para el atributo \"{0}\".
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = La notaci\u00F3n \"{1}\" debe declararse cuando se hace referencia a la misma en la declaraci\u00F3n de entidad no analizada para \"{0}\".
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = La referencia a la entidad \"{0}\" declarada en una entidad analizada externa no est\u00E1 permitida en un documento aut\u00F3nomo.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = El atributo \"{1}\" es necesario y debe especificarse para el tipo de elemento \"{0}\".
++        MSG_ELEMENT_WITH_ID_REQUIRED = Un elemento con el identificador "{0}" debe aparecer en el documento.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = La referencia a la entidad externa "{0}" no est\u00E1 permitida en un documento aut\u00F3nomo.
++        MSG_FIXED_ATTVALUE_INVALID = El atributo "{1}" con el valor "{2}" debe tener un valor de "{3}".
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = El tipo de elemento "{0}" ya tiene un atributo "{1}" del tipo ID, un segundo atributo "{2}" del tipo ID no est\u00E1 permitido.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = El tipo de elemento "{0}" ya tiene un atributo "{1}" del tipo NOTATION, un segundo atributo "{2}" del tipo NOTATION no est\u00E1 permitido.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = La notaci\u00F3n "{1}" debe declararse cuando se hace referencia a la misma en la lista de tipos de notaci\u00F3n para el atributo "{0}".
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = La notaci\u00F3n "{1}" debe declararse cuando se hace referencia a la misma en la declaraci\u00F3n de entidad no analizada para "{0}".
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = La referencia a la entidad "{0}" declarada en una entidad analizada externa no est\u00E1 permitida en un documento aut\u00F3nomo.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = El atributo "{1}" es necesario y debe especificarse para el tipo de elemento "{0}".
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = No debe incluirse un espacio en blanco entre los elementos declarados en una entidad analizada externa con el contenido del elemento en un documento aut\u00F3nomo.
+-        NMTOKENInvalid = El valor de atributo \"{0}\" del tipo NMTOKEN debe ser un elemento de nombre.
+-        NMTOKENSInvalid = El valor de atributo \"{0}\" del tipo NMTOKENS debe ser uno o m\u00E1s elementos de nombre.
+-        NoNotationOnEmptyElement = El tipo de elemento \"{0}\" que se declar\u00F3 como EMPTY no puede declarar el atributo \"{1}\" del tipo NOTATION.
+-        RootElementTypeMustMatchDoctypedecl = El elemento ra\u00EDz del documento \"{1}\", debe coincidir con la ra\u00EDz DOCTYPE \"{0}\".
+-        UndeclaredElementInContentSpec = El modelo de contenido del elemento \"{0}\" hace referencia al elemento no declarado \"{1}\".
+-        UniqueNotationName = La declaraci\u00F3n de la notaci\u00F3n \"{0}\" no es \u00FAnica. Un nombre determinado no debe declararse en m\u00E1s de una declaraci\u00F3n de notaci\u00F3n.
++        NMTOKENInvalid = El valor de atributo "{0}" del tipo NMTOKEN debe ser un token de nombre.
++        NMTOKENSInvalid = El valor de atributo "{0}" del tipo NMTOKENS debe ser uno o m\u00E1s tokens de nombre.
++        NoNotationOnEmptyElement = El tipo de elemento "{0}" que se declar\u00F3 como EMPTY no puede declarar el atributo "{1}" del tipo NOTATION.
++        RootElementTypeMustMatchDoctypedecl = El elemento ra\u00EDz del documento "{1}", debe coincidir con la ra\u00EDz DOCTYPE "{0}".
++        UndeclaredElementInContentSpec = El modelo de contenido del elemento "{0}" hace referencia al elemento no declarado "{1}".
++        UniqueNotationName = La declaraci\u00F3n de la notaci\u00F3n "{0}" no es \u00FAnica. Un nombre determinado no debe declararse en m\u00E1s de una declaraci\u00F3n de notaci\u00F3n.
+         ENTITYFailedInitializeGrammar =  Fallo del validador ENTITYDatatype. Es necesario llamar al m\u00E9todo de inicializaci\u00F3n con una referencia de gram\u00E1tica v\u00E1lida. \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\"no est\u00E1 sin analizar.
+-        ENTITYNotValid = ENTITY \"{0}\" no es v\u00E1lida.
++        ENTITYNotUnparsed = ENTITY "{0}"no est\u00E1 sin analizar.
++        ENTITYNotValid = ENTITY "{0}" no es v\u00E1lida.
+         EmptyList = El valor de tipo ENTITIES, IDREFS y NMTOKENS no puede ser una lista vac\u00EDa.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = La referencia de entidad externa \"&{0};\" no est\u00E1 permitida en un valor de atributo.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = La referencia de entidad externa "&{0};" no est\u00E1 permitida en un valor de atributo.
++        AccessExternalDTD = DTD externa: fallo al leer DTD externa ''{0}'' porque el acceso a ''{1}'' no est\u00E1 permitido debido a una restricci\u00F3n que ha definido la propiedad accessExternalDTD.
++        AccessExternalEntity = Entidad externa: fallo al leer el documento externo ''{0}'' porque el acceso a ''{1}'' no est\u00E1 permitido debido a una restricci\u00F3n que ha definido la propiedad accessExternalDTD.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = Se hizo referencia a la entidad \"{0}\", pero no se declar\u00F3.
+-        ReferenceToUnparsedEntity = La referencia de entidad no analizada \"&{0};\" no est\u00E1 permitida.
+-        RecursiveReference = Referencia de entidad recursiva \"{0}\". (Ruta de acceso de referencia: {1}),
+-        RecursiveGeneralReference = Referencia de entidad general recursiva \"&{0};\". (Ruta de acceso de referencia: {1}),
+-        RecursivePEReference = Referencia de entidad de par\u00E1metro recursiva \"%{0};\". (Ruta de acceso de referencia: {1}),
++        EntityNotDeclared = Se hizo referencia a la entidad "{0}", pero no se declar\u00F3.
++        ReferenceToUnparsedEntity = La referencia de entidad no analizada "&{0};" no est\u00E1 permitida.
++        RecursiveReference = Referencia de entidad recursiva "{0}". (Ruta de acceso de referencia: {1}),
++        RecursiveGeneralReference = Referencia de entidad general recursiva "&{0};". (Ruta de acceso de referencia: {1}),
++        RecursivePEReference = Referencia de entidad de par\u00E1metro recursiva "%{0};". (Ruta de acceso de referencia: {1}),
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = La codificaci\u00F3n \"{0}\" no est\u00E1 soportada.
++        EncodingNotSupported = La codificaci\u00F3n "{0}" no est\u00E1 soportada.
+         EncodingRequired = Una entidad analizada no codificada en UTF-8 o UTF-16 debe contener una declaraci\u00F3n de codificaci\u00F3n.
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = El elemento o el atributo no coinciden con la producci\u00F3n del QName: QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = El elemento \"{0}\" no puede tener \"xmlns\" como prefijo.
+-        ElementPrefixUnbound = El prefijo \"{0}\" para el elemento \"{1}\" no est\u00E1 enlazado.
+-        AttributePrefixUnbound = El prefijo \"{2}\" para el atributo \"{1}\" asociado a un tipo de elemento \"{0}\" no est\u00E1 enlazado.
+-        EmptyPrefixedAttName = El valor del atributo \"{0}\" no es v\u00E1lido. Los enlaces de espacio de nombres utilizados de prefijo no pueden estar vac\u00EDos.
+-        PrefixDeclared = El prefijo de espacio de nombres \"{0}\" no se ha declarado.
++        ElementXMLNSPrefix = El elemento "{0}" no puede tener "xmlns" como prefijo.
++        ElementPrefixUnbound = El prefijo "{0}" para el elemento "{1}" no est\u00E1 enlazado.
++        AttributePrefixUnbound = El prefijo "{2}" para el atributo "{1}" asociado a un tipo de elemento "{0}" no est\u00E1 enlazado.
++        EmptyPrefixedAttName = El valor del atributo "{0}" no es v\u00E1lido. Los enlaces de espacio de nombres utilizados de prefijo no pueden estar vac\u00EDos.
++        PrefixDeclared = El prefijo de espacio de nombres "{0}" no se ha declarado.
+         CantBindXMLNS = El prefijo "xmlns" no puede enlazarse a ning\u00FAn espacio de nombres expl\u00EDcitamente; tampoco puede enlazarse el espacio de nombres para "xmlns" a cualquier prefijo expl\u00EDcitamente.
+         CantBindXML = El prefijo "xml" no puede enlazarse a ning\u00FAn espacio de nombres que no sea el habitual; tampoco puede enlazarse el espacio de nombres para "xml" a cualquier prefijo que no sea "xml".
+-        MSG_ATT_DEFAULT_INVALID = El valor por defecto \"{1}\" del atributo \"{0}\" no es legal para las restricciones l\u00E9xicas de este tipo de atributo.
++        MSG_ATT_DEFAULT_INVALID = El valor por defecto "{1}" del atributo "{0}" no es legal para las restricciones l\u00E9xicas de este tipo de atributo.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=El analizador ha encontrado m\u00E1s de \"{0}\"ampliaciones de entidad en este documento; \u00E9ste es el l\u00EDmite impuesto por la aplicaci\u00F3n.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: el analizador ha encontrado m\u00E1s de "{0}"ampliaciones de entidad en este documento; \u00E9ste es el l\u00EDmite impuesto por el JDK.
++        ElementAttributeLimit=JAXP00010002: el elemento "{0}" tiene m\u00E1s de "{1}" atributos, "{1}" es el l\u00EDmite impuesto por el JDK.
++        MaxEntitySizeLimit=JAXP00010003: la longitud de la entidad "{0}" es "{1}", que excede el l\u00EDmite de "{2}" que ha definido "{3}".
++        TotalEntitySizeLimit=JAXP00010004: el tama\u00F1o acumulado "{0}" de las entidades ha excedido el l\u00EDmite de "{1}" que ha definido "{2}".
++        MaxXMLNameLimit=JAXP00010005: el nombre "{0}" ha excedido el l\u00EDmite de "{1}" que ha definido "{2}".
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= El elemento \"{0}\" tiene m\u00E1s de \"{1}\" atributos, \"{1}\" es el l\u00EDmite impuesto por la aplicaci\u00F3n.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_fr.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = Un caract\u00E8re XML non valide (Unicode : 0x{0}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans le prologue du document.
+         InvalidCharInXMLDecl = Un caract\u00E8re XML non valide (Unicode : 0x{0}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans la d\u00E9claration XML.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = La s\u00E9quence de caract\u00E8res \"]]>\" ne doit pas figurer dans le contenu sauf si elle est utilis\u00E9e pour baliser la fin d'une section CDATA.
++        CDEndInContent = La s\u00E9quence de caract\u00E8res "]]>" ne doit pas figurer dans le contenu sauf si elle est utilis\u00E9e pour baliser la fin d'une section CDATA.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = La section CDATA doit se terminer par \"]]>\".
++        CDSectUnterminated = La section CDATA doit se terminer par "]]>".
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = La d\u00E9claration XML ne peut figurer qu'au d\u00E9but du document.
+-        EqRequiredInXMLDecl = Le caract\u00E8re ''='' doit suivre \"{0}\" dans la d\u00E9claration XML.
+-        QuoteRequiredInXMLDecl = La valeur suivant \"{0}\" dans la d\u00E9claration XML doit \u00EAtre une cha\u00EEne entre guillemets.
+-        XMLDeclUnterminated = La d\u00E9claration XML doit se terminer par \"?>\".
++        EqRequiredInXMLDecl = Le caract\u00E8re ''='' doit suivre "{0}" dans la d\u00E9claration XML.
++        QuoteRequiredInXMLDecl = La valeur suivant "{0}" dans la d\u00E9claration XML doit \u00EAtre une cha\u00EEne entre guillemets.
++        XMLDeclUnterminated = La d\u00E9claration XML doit se terminer par "?>".
+         VersionInfoRequired = La version est obligatoire dans la d\u00E9claration XML.
+         SpaceRequiredBeforeVersionInXMLDecl = Un espace est obligatoire devant le pseudo-attribut version dans la d\u00E9claration XML.
+         SpaceRequiredBeforeEncodingInXMLDecl = Un espace est obligatoire devant le pseudo-attribut encoding dans la d\u00E9claration XML.
+@@ -71,70 +68,71 @@
+         ReferenceIllegalInTrailingMisc=R\u00E9f\u00E9rence non autoris\u00E9e dans la section de fin.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = La valeur de d\u00E9claration de document autonome doit \u00EAtre \"oui\" ou \"non\", mais pas \"{0}\".
++        SDDeclInvalid = La valeur de d\u00E9claration de document autonome doit \u00EAtre "oui" ou "non", mais pas "{0}".
++        SDDeclNameInvalid = Le nom de document autonome contenu dans la d\u00E9claration XML est peut-\u00EAtre mal orthographi\u00E9.
+ # 2.12 Language Identification
+-        XMLLangInvalid = La valeur d''attribut xml:lang \"{0}\" est un identificateur de langue non valide.
++        XMLLangInvalid = La valeur d''attribut xml:lang "{0}" est un identificateur de langue non valide.
+ # 3. Logical Structures
+-        ETagRequired = Le type d''\u00E9l\u00E9ment \"{0}\" doit se terminer par la balise de fin correspondante \"</{0}>\".
++        ETagRequired = Le type d''\u00E9l\u00E9ment "{0}" doit se terminer par la balise de fin correspondante "</{0}>".
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = Le type d''\u00E9l\u00E9ment \"{0}\" doit \u00EAtre suivi des sp\u00E9cifications d''attribut, \">\" ou \"/>\".
+-        EqRequiredInAttribute = Le nom d''attribut \"{1}\" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment \"{0}\" doit \u00EAtre suivi du caract\u00E8re ''=''.
+-        OpenQuoteExpected = Des guillemets ouvrants sont attendus pour l''attribut \"{1}\" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment \"{0}\".
+-        CloseQuoteExpected = Des guillemets fermants sont attendus pour l''attribut \"{1}\" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment \"{0}\".
+-        AttributeNotUnique = L''attribut \"{1}\" a d\u00E9j\u00E0 \u00E9t\u00E9 sp\u00E9cifi\u00E9 pour l''\u00E9l\u00E9ment \"{0}\".
+-        AttributeNSNotUnique = L''attribut \"{1}\" li\u00E9 \u00E0 l''espace de noms \"{2}\" a d\u00E9j\u00E0 \u00E9t\u00E9 sp\u00E9cifi\u00E9 pour l''\u00E9l\u00E9ment \"{0}\".
+-        ETagUnterminated = La balise de fin pour le type d''\u00E9l\u00E9ment \"{0}\" doit se terminer par un d\u00E9limiteur ''>''.
++        ElementUnterminated = Le type d''\u00E9l\u00E9ment "{0}" doit \u00EAtre suivi des sp\u00E9cifications d''attribut, ">" ou "/>".
++        EqRequiredInAttribute = Le nom d''attribut "{1}" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment "{0}" doit \u00EAtre suivi du caract\u00E8re ''=''.
++        OpenQuoteExpected = Des guillemets ouvrants sont attendus pour l''attribut "{1}" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment "{0}".
++        CloseQuoteExpected = Des guillemets fermants sont attendus pour l''attribut "{1}" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment "{0}".
++        AttributeNotUnique = L''attribut "{1}" a d\u00E9j\u00E0 \u00E9t\u00E9 sp\u00E9cifi\u00E9 pour l''\u00E9l\u00E9ment "{0}".
++        AttributeNSNotUnique = L''attribut "{1}" li\u00E9 \u00E0 l''espace de noms "{2}" a d\u00E9j\u00E0 \u00E9t\u00E9 sp\u00E9cifi\u00E9 pour l''\u00E9l\u00E9ment "{0}".
++        ETagUnterminated = La balise de fin pour le type d''\u00E9l\u00E9ment "{0}" doit se terminer par un d\u00E9limiteur ''>''.
+         MarkupNotRecognizedInContent = Le contenu des \u00E9l\u00E9ments doit inclure un balisage ou des caract\u00E8res au format correct.
+         DoctypeIllegalInContent = Un DOCTYPE n'est pas autoris\u00E9 dans le contenu.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = La r\u00E9f\u00E9rence doit se terminer par un d\u00E9limiteur ';'.
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = La r\u00E9f\u00E9rence doit \u00EAtre enti\u00E8rement incluse dans la m\u00EAme entit\u00E9 analys\u00E9e.
+-        ElementEntityMismatch = L''\u00E9l\u00E9ment \"{0}\" doit commencer et se terminer dans la m\u00EAme entit\u00E9.
++        ElementEntityMismatch = L''\u00E9l\u00E9ment "{0}" doit commencer et se terminer dans la m\u00EAme entit\u00E9.
+         MarkupEntityMismatch=Les structures de document XML doivent commencer et se terminer dans la m\u00EAme entit\u00E9.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = Un caract\u00E8re XML non valide (Unicode : 0x{2}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans la valeur de l''attribut \"{1}\" et l''\u00E9l\u00E9ment est \"{0}\".
++        InvalidCharInAttValue = Un caract\u00E8re XML non valide (Unicode : 0x{2}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans la valeur de l''attribut "{1}" et l''\u00E9l\u00E9ment est "{0}".
+         InvalidCharInComment = Un caract\u00E8re XML non valide (Unicode : 0x{0}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans le commentaire.
+         InvalidCharInPI = Un caract\u00E8re XML non valide (Unicode : 0x{0}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans l''instruction de traitement.
+         InvalidCharInInternalSubset = Un caract\u00E8re XML non valide (Unicode : 0x{0}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans le sous-ensemble interne de la DTD.
+         InvalidCharInTextDecl = Un caract\u00E8re XML non valide (Unicode : 0x{0}) a \u00E9t\u00E9 d\u00E9tect\u00E9 dans la d\u00E9claration textuelle.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = La valeur de l''attribut \"{1}\" doit commencer par une apostrophe ou des guillemets.
+-        LessthanInAttValue = La valeur de l''attribut \"{1}\" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment \"{0}\" ne doit pas contenir le caract\u00E8re ''<''.
+-        AttributeValueUnterminated = La valeur de l''attribut \"{1}\" doit se terminer par les guillemets correspondants.
++        QuoteRequiredInAttValue = La valeur de l''attribut "{1}" doit commencer par une apostrophe ou des guillemets.
++        LessthanInAttValue = La valeur de l''attribut "{1}" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment "{0}" ne doit pas contenir le caract\u00E8re ''<''.
++        AttributeValueUnterminated = La valeur de l''attribut "{1}" doit se terminer par les guillemets correspondants.
+ # 2.5 Comments
+-        InvalidCommentStart = Le commentaire doit commencer par \"<!--\".
+-        DashDashInComment = La cha\u00EEne \"--\" n'est pas autoris\u00E9e dans les commentaires.
+-        CommentUnterminated = Le commentaire doit se terminer par \"-->\".
++        InvalidCommentStart = Le commentaire doit commencer par "<!--".
++        DashDashInComment = La cha\u00EEne "--" n'est pas autoris\u00E9e dans les commentaires.
++        CommentUnterminated = Le commentaire doit se terminer par "-->".
+         COMMENT_NOT_IN_ONE_ENTITY = Le commentaire n'est pas compris dans la m\u00EAme entit\u00E9.
+ # 2.6 Processing Instructions
+         PITargetRequired = L'instruction de traitement doit commencer par le nom de la cible.
+         SpaceRequiredInPI = Un espace est obligatoire entre les donn\u00E9es et la cible de l'instruction de traitement.
+-        PIUnterminated = L'instruction de traitement doit se terminer par \"?>\".
+-        ReservedPITarget = La cible de l'instruction de traitement correspondant \u00E0 \"[xX][mM][lL]\" n'est pas autoris\u00E9e.
++        PIUnterminated = L'instruction de traitement doit se terminer par "?>".
++        ReservedPITarget = La cible de l'instruction de traitement correspondant \u00E0 "[xX][mM][lL]" n'est pas autoris\u00E9e.
+         PI_NOT_IN_ONE_ENTITY = L'instruction de traitement n'est pas comprise dans la m\u00EAme entit\u00E9.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = Version \"{0}\" non valide.
+-        VersionNotSupported = La version XML \"{0}\" n''est pas prise en charge. Seule la version XML 1.0 est prise en charge.
+-        VersionNotSupported11 = La version XML \"{0}\" n''est pas prise en charge. Seules les versions XML 1.0 et XML 1.1 sont prises en charge.
++        VersionInfoInvalid = Version "{0}" non valide.
++        VersionNotSupported = La version XML "{0}" n''est pas prise en charge. Seule la version XML 1.0 est prise en charge.
++        VersionNotSupported11 = La version XML "{0}" n''est pas prise en charge. Seules les versions XML 1.0 et XML 1.1 sont prises en charge.
+         VersionMismatch= Une entit\u00E9 ne peut pas inclure une autre entit\u00E9 d'une version ult\u00E9rieure.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = Une repr\u00E9sentation d\u00E9cimale doit imm\u00E9diatement suivre la cha\u00EEne \"&#\" dans une r\u00E9f\u00E9rence de caract\u00E8re.
+-        HexdigitRequiredInCharRef = Une repr\u00E9sentation hexad\u00E9cimale doit imm\u00E9diatement suivre la cha\u00EEne \"&#x\" dans une r\u00E9f\u00E9rence de caract\u00E8re.
++        DigitRequiredInCharRef = Une repr\u00E9sentation d\u00E9cimale doit imm\u00E9diatement suivre la cha\u00EEne "&#" dans une r\u00E9f\u00E9rence de caract\u00E8re.
++        HexdigitRequiredInCharRef = Une repr\u00E9sentation hexad\u00E9cimale doit imm\u00E9diatement suivre la cha\u00EEne "&#x" dans une r\u00E9f\u00E9rence de caract\u00E8re.
+         SemicolonRequiredInCharRef = La r\u00E9f\u00E9rence de caract\u00E8re doit se terminer par le d\u00E9limiteur ';'.
+-        InvalidCharRef = La r\u00E9f\u00E9rence de caract\u00E8re \"&#{0}\" est un caract\u00E8re XML non valide.
++        InvalidCharRef = La r\u00E9f\u00E9rence de caract\u00E8re "&#{0}" est un caract\u00E8re XML non valide.
+         NameRequiredInReference = Le nom de l'identit\u00E9 doit imm\u00E9diatement suivre le caract\u00E8re "&" dans la r\u00E9f\u00E9rence d'entit\u00E9.
+-        SemicolonRequiredInReference = La r\u00E9f\u00E9rence \u00E0 l''entit\u00E9 \"{0}\" doit se terminer par le d\u00E9limiteur '';''.
++        SemicolonRequiredInReference = La r\u00E9f\u00E9rence \u00E0 l''entit\u00E9 "{0}" doit se terminer par le d\u00E9limiteur '';''.
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = La d\u00E9claration textuelle ne doit figurer qu'au d\u00E9but de l'entit\u00E9 analys\u00E9e externe.
+-        EqRequiredInTextDecl = Le caract\u00E8re ''='' doit suivre \"{0}\" dans la d\u00E9claration textuelle.
+-        QuoteRequiredInTextDecl = La valeur suivant \"{0}\" dans la d\u00E9claration textuelle doit \u00EAtre une cha\u00EEne entre guillemets.
+-        CloseQuoteMissingInTextDecl = Dans la valeur suivant \"{0}\" dans la d\u00E9claration textuelle, il manque les guillemets fermants.
++        EqRequiredInTextDecl = Le caract\u00E8re ''='' doit suivre "{0}" dans la d\u00E9claration textuelle.
++        QuoteRequiredInTextDecl = La valeur suivant "{0}" dans la d\u00E9claration textuelle doit \u00EAtre une cha\u00EEne entre guillemets.
++        CloseQuoteMissingInTextDecl = Dans la valeur suivant "{0}" dans la d\u00E9claration textuelle, il manque les guillemets fermants.
+         SpaceRequiredBeforeVersionInTextDecl = Un espace est obligatoire devant le pseudo-attribut version dans la d\u00E9claration textuelle.
+         SpaceRequiredBeforeEncodingInTextDecl = Un espace est obligatoire devant le pseudo-attribut encoding dans la d\u00E9claration textuelle.
+-        TextDeclUnterminated = La d\u00E9claration textuelle doit se terminer par \"?>\".
++        TextDeclUnterminated = La d\u00E9claration textuelle doit se terminer par "?>".
+         EncodingDeclRequired = La d\u00E9claration d'encodage est obligatoire dans la d\u00E9claration textuelle.
+         NoMorePseudoAttributes = Aucun autre pseudo-attribut n'est autoris\u00E9.
+         MorePseudoAttributes = D'autres pseudo-attributs sont attendus.
+@@ -143,13 +141,13 @@
+         CommentNotInOneEntity = Le commentaire doit \u00EAtre enti\u00E8rement inclus dans la m\u00EAme entit\u00E9 analys\u00E9e.
+         PINotInOneEntity = L'instruction de traitement doit \u00EAtre enti\u00E8rement incluse dans la m\u00EAme entit\u00E9 analys\u00E9e.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = Nom d''encodage \"{0}\" non valide.
+-        EncodingByteOrderUnsupported = L''ordre des octets donn\u00E9 pour encoder \"{0}\" n''est pas pris en charge.
++        EncodingDeclInvalid = Nom d''encodage "{0}" non valide.
++        EncodingByteOrderUnsupported = L''ordre des octets donn\u00E9 pour encoder "{0}" n''est pas pris en charge.
+         InvalidByte = Octet {0} de la s\u00E9quence UTF-8 \u00E0 {1} octets non valide.
+         ExpectedByte = Octet {0} de la s\u00E9quence UTF-8 \u00E0 {1} octets attendu.  
+         InvalidHighSurrogate = Les bits de substitution sup\u00E9rieurs (High surrogate) dans la s\u00E9quence UTF-8 ne doivent pas d\u00E9passer 0x10 mais des bits 0x{0} ont \u00E9t\u00E9 d\u00E9tect\u00E9s.
+-        OperationNotSupported = Op\u00E9ration \"{0}\" non prise en charge par le lecteur {1}.
+-        InvalidASCII = L''octet \"{0}\" n''appartient pas au jeu de caract\u00E8res ASCII (7 bits).
++        OperationNotSupported = Op\u00E9ration "{0}" non prise en charge par le lecteur {1}.
++        InvalidASCII = L''octet "{0}" n''appartient pas au jeu de caract\u00E8res ASCII (7 bits).
+         CharConversionFailure = Une entit\u00E9 respectant un certain encodage ne doit pas contenir de s\u00E9quences non admises dans cet encodage.
+         
+ # DTD Messages
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = Ce caract\u00E8re (Unicode : 0x{0}) n''est pas autoris\u00E9 dans l''identificateur public.
+         SpaceRequiredBetweenPublicAndSystem = Des espaces sont obligatoires entre les ID publicId et systemId.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Un espace est obligatoire apr\u00E8s \"<!DOCTYPE\" dans la d\u00E9claration de type de document.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Le type d'\u00E9l\u00E9ment racine doit figurer apr\u00E8s \"<!DOCTYPE\" dans la d\u00E9claration de type de document.
+-        DoctypedeclUnterminated = La d\u00E9claration de type de document pour le type d''\u00E9l\u00E9ment racine \"{0}\" doit se terminer par ''>''.
+-        PEReferenceWithinMarkup = La r\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre \"%{0};\" ne peut pas survenir dans le balisage du sous-ensemble interne de la DTD.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Un espace est obligatoire apr\u00E8s "<!DOCTYPE" dans la d\u00E9claration de type de document.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Le type d'\u00E9l\u00E9ment racine doit figurer apr\u00E8s "<!DOCTYPE" dans la d\u00E9claration de type de document.
++        DoctypedeclUnterminated = La d\u00E9claration de type de document pour le type d''\u00E9l\u00E9ment racine "{0}" doit se terminer par ''>''.
++        PEReferenceWithinMarkup = La r\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre "%{0};" ne peut pas survenir dans le balisage du sous-ensemble interne de la DTD.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Les d\u00E9clarations de balisage contenues dans la d\u00E9claration de type de document ou sur lesquelles pointe cette derni\u00E8re doivent avoir un format correct.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = La d\u00E9claration d'attribut pour \"xml:space\" doit \u00EAtre pr\u00E9sent\u00E9e comme type \u00E9num\u00E9r\u00E9 dont les seules valeurs possibles sont \"default\" et \"preserve\".
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = La d\u00E9claration d'attribut pour "xml:space" doit \u00EAtre pr\u00E9sent\u00E9e comme type \u00E9num\u00E9r\u00E9 dont les seules valeurs possibles sont "default" et "preserve".
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Un espace est obligatoire apr\u00E8s \"<!ELEMENT\" dans la d\u00E9claration de type d'\u00E9l\u00E9ment.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Un espace est obligatoire apr\u00E8s "<!ELEMENT" dans la d\u00E9claration de type d'\u00E9l\u00E9ment.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = Le type d'\u00E9l\u00E9ment est obligatoire dans la d\u00E9claration de type d'\u00E9l\u00E9ment.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Un espace est obligatoire apr\u00E8s le type d''\u00E9l\u00E9ment \"{0}\" dans la d\u00E9claration de type d''\u00E9l\u00E9ment.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = La contrainte est obligatoire apr\u00E8s le type d''\u00E9l\u00E9ment \"{0}\" dans la d\u00E9claration de type d''\u00E9l\u00E9ment.
+-        ElementDeclUnterminated = La d\u00E9claration du type d''\u00E9l\u00E9ment \"{0}\" doit se terminer par ''>''.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Un espace est obligatoire apr\u00E8s le type d''\u00E9l\u00E9ment "{0}" dans la d\u00E9claration de type d''\u00E9l\u00E9ment.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = La contrainte est obligatoire apr\u00E8s le type d''\u00E9l\u00E9ment "{0}" dans la d\u00E9claration de type d''\u00E9l\u00E9ment.
++        ElementDeclUnterminated = La d\u00E9claration du type d''\u00E9l\u00E9ment "{0}" doit se terminer par ''>''.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Un caract\u00E8re ''('' ou un type d''\u00E9l\u00E9ment est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Un caract\u00E8re '')'' est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment \"{0}\".
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Un caract\u00E8re ''('' ou un type d''\u00E9l\u00E9ment est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Un caract\u00E8re '')'' est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment "{0}".
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Un type d''\u00E9l\u00E9ment est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Un caract\u00E8re '')'' est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment \"{0}\".
+-        MixedContentUnterminated = Le mod\u00E8le de contenu mixte \"{0}\" doit se terminer par \")*\" lorsque les types d''\u00E9l\u00E9ment enfant sont contraints.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Un type d''\u00E9l\u00E9ment est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Un caract\u00E8re '')'' est obligatoire dans la d\u00E9claration du type d''\u00E9l\u00E9ment "{0}".
++        MixedContentUnterminated = Le mod\u00E8le de contenu mixte "{0}" doit se terminer par ")*" lorsque les types d''\u00E9l\u00E9ment enfant sont contraints.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Un espace est obligatoire apr\u00E8s \"<!ATTLIST\" dans la d\u00E9claration de liste d'attributs.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Un espace est obligatoire apr\u00E8s "<!ATTLIST" dans la d\u00E9claration de liste d'attributs.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = Le type d'\u00E9l\u00E9ment est obligatoire dans la d\u00E9claration de liste d'attributs.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Un espace est obligatoire avant le nom d''attribut dans la d\u00E9claration de liste d''attributs de l''\u00E9l\u00E9ment \"{0}\".
+-        AttNameRequiredInAttDef = Le nom d''attribut doit \u00EAtre sp\u00E9cifi\u00E9 dans la d\u00E9claration de liste d''attributs de l''\u00E9l\u00E9ment \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Un espace est obligatoire avant le type d''attribut dans la d\u00E9claration de l''attribut \"{1}\" de l''\u00E9l\u00E9ment \"{0}\".
+-        AttTypeRequiredInAttDef = Le type d''attribut est obligatoire dans la d\u00E9claration de l''attribut \"{1}\" de l''\u00E9l\u00E9ment \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Un espace est obligatoire avant la valeur par d\u00E9faut de l''attribut dans la d\u00E9claration de l''attribut \"{1}\" de l''\u00E9l\u00E9ment \"{0}\".
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Plusieurs d\u00E9finitions d''attribut sont fournies pour le m\u00EAme attribut \"{1}\" d''un \u00E9l\u00E9ment donn\u00E9 \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Un espace est obligatoire avant le nom d''attribut dans la d\u00E9claration de liste d''attributs de l''\u00E9l\u00E9ment "{0}".
++        AttNameRequiredInAttDef = Le nom d''attribut doit \u00EAtre sp\u00E9cifi\u00E9 dans la d\u00E9claration de liste d''attributs de l''\u00E9l\u00E9ment "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Un espace est obligatoire avant le type d''attribut dans la d\u00E9claration de l''attribut "{1}" de l''\u00E9l\u00E9ment "{0}".
++        AttTypeRequiredInAttDef = Le type d''attribut est obligatoire dans la d\u00E9claration de l''attribut "{1}" de l''\u00E9l\u00E9ment "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Un espace est obligatoire avant la valeur par d\u00E9faut de l''attribut dans la d\u00E9claration de l''attribut "{1}" de l''\u00E9l\u00E9ment "{0}".
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Plusieurs d\u00E9finitions d''attribut sont fournies pour le m\u00EAme attribut "{1}" d''un \u00E9l\u00E9ment donn\u00E9 "{0}".
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Un espace doit figurer apr\u00E8s \"NOTATION\" dans la d\u00E9claration d''attribut \"{1}\".
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Le caract\u00E8re ''('' doit suivre \"NOTATION\" dans la d\u00E9claration d''attribut \"{1}\".
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Le nom de notation est obligatoire dans la liste des types de notation de la d\u00E9claration d''attribut \"{1}\".
+-        NotationTypeUnterminated = La liste des types de notation doit se terminer par '')'' dans la d\u00E9claration d''attribut \"{1}\".
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Le jeton de nom est obligatoire dans la liste des types \u00E9num\u00E9r\u00E9s pour la d\u00E9claration d''attribut \"{1}\".
+-        EnumerationUnterminated = La liste des types \u00E9num\u00E9r\u00E9s doit se terminer par '')'' dans la d\u00E9claration d''attribut \"{1}\".
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = La valeur d''\u00E9num\u00E9ration \"{1}\" a \u00E9t\u00E9 indiqu\u00E9e plusieurs fois dans la d\u00E9claration de l''attribut \"{2}\" pour l''\u00E9l\u00E9ment \"{0}\". Les valeurs NMTOKENS d''une d\u00E9claration d''attribut Enumeration unique doivent toutes \u00EAtre distinctes.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = La valeur d''\u00E9num\u00E9ration \"{1}\" a \u00E9t\u00E9 indiqu\u00E9e plusieurs fois dans la d\u00E9claration de l''attribut \"{2}\" pour l''\u00E9l\u00E9ment \"{0}\". Les noms NOTATION d''une d\u00E9claration d''attribut NotationType unique doivent tous \u00EAtre distincts.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Un espace doit figurer apr\u00E8s "NOTATION" dans la d\u00E9claration d''attribut "{1}".
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Le caract\u00E8re ''('' doit suivre "NOTATION" dans la d\u00E9claration d''attribut "{1}".
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Le nom de notation est obligatoire dans la liste des types de notation de la d\u00E9claration d''attribut "{1}".
++        NotationTypeUnterminated = La liste des types de notation doit se terminer par '')'' dans la d\u00E9claration d''attribut "{1}".
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Le jeton de nom est obligatoire dans la liste des types \u00E9num\u00E9r\u00E9s pour la d\u00E9claration d''attribut "{1}".
++        EnumerationUnterminated = La liste des types \u00E9num\u00E9r\u00E9s doit se terminer par '')'' dans la d\u00E9claration d''attribut "{1}".
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = La valeur d''\u00E9num\u00E9ration "{1}" a \u00E9t\u00E9 indiqu\u00E9e plusieurs fois dans la d\u00E9claration de l''attribut "{2}" pour l''\u00E9l\u00E9ment "{0}". Les valeurs NMTOKENS d''une d\u00E9claration d''attribut Enumeration unique doivent toutes \u00EAtre distinctes.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = La valeur d''\u00E9num\u00E9ration "{1}" a \u00E9t\u00E9 indiqu\u00E9e plusieurs fois dans la d\u00E9claration de l''attribut "{2}" pour l''\u00E9l\u00E9ment "{0}". Les noms NOTATION d''une d\u00E9claration d''attribut NotationType unique doivent tous \u00EAtre distincts.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Un espace doit figurer apr\u00E8s \"FIXED\" dans la d\u00E9claration d''attribut \"{1}\".
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Un espace doit figurer apr\u00E8s "FIXED" dans la d\u00E9claration d''attribut "{1}".
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = La section conditionnelle incluse doit se terminer par \"]]>\".
+-        IgnoreSectUnterminated = La section conditionnelle exclue doit se terminer par \"]]>\".
++        IncludeSectUnterminated = La section conditionnelle incluse doit se terminer par "]]>".
++        IgnoreSectUnterminated = La section conditionnelle exclue doit se terminer par "]]>".
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = Le nom de l'entit\u00E9 doit imm\u00E9diatement suivre le caract\u00E8re "%" dans la r\u00E9f\u00E9rence d'entit\u00E9 de param\u00E8tre.
+-        SemicolonRequiredInPEReference = La r\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre \"%{0};\" doit se terminer par le d\u00E9limiteur '';''.
++        SemicolonRequiredInPEReference = La r\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre "%{0};" doit se terminer par le d\u00E9limiteur '';''.
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Un espace est obligatoire apr\u00E8s \"<!ENTITY\" dans la d\u00E9claration d'entit\u00E9.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Un espace est obligatoire entre \"<!ENTITY\" et le caract\u00E8re "%" dans la d\u00E9claration d'entit\u00E9 de param\u00E8tre.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Un espace est obligatoire apr\u00E8s "<!ENTITY" dans la d\u00E9claration d'entit\u00E9.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Un espace est obligatoire entre "<!ENTITY" et le caract\u00E8re "%" dans la d\u00E9claration d'entit\u00E9 de param\u00E8tre.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = Un espace est obligatoire entre "%" et le nom de l'entit\u00E9 dans la d\u00E9claration d'entit\u00E9 de param\u00E8tre.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = Le nom de l'entit\u00E9 est obligatoire dans la d\u00E9claration d'entit\u00E9.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Un espace est obligatoire entre le nom de l''entit\u00E9 \"{0}\" et la d\u00E9finition dans la d\u00E9claration d''entit\u00E9.
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Un espace est obligatoire entre \"NDATA\" et le nom de notation dans la d\u00E9claration de l''entit\u00E9 \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Un espace est obligatoire avant \"NDATA\" dans la d\u00E9claration de l''entit\u00E9 \"{0}\".
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Le nom de notation est obligatoire apr\u00E8s \"NDATA\" dans la d\u00E9claration de l''entit\u00E9 \"{0}\".
+-        EntityDeclUnterminated = La d\u00E9claration de l''entit\u00E9 \"{0}\" doit se terminer par ''>''.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = L''entit\u00E9 \"{0}\" est d\u00E9clar\u00E9e plusieurs fois.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Un espace est obligatoire entre le nom de l''entit\u00E9 "{0}" et la d\u00E9finition dans la d\u00E9claration d''entit\u00E9.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Un espace est obligatoire entre "NDATA" et le nom de notation dans la d\u00E9claration de l''entit\u00E9 "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Un espace est obligatoire avant "NDATA" dans la d\u00E9claration de l''entit\u00E9 "{0}".
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Le nom de notation est obligatoire apr\u00E8s "NDATA" dans la d\u00E9claration de l''entit\u00E9 "{0}".
++        EntityDeclUnterminated = La d\u00E9claration de l''entit\u00E9 "{0}" doit se terminer par ''>''.
++	MSG_DUPLICATE_ENTITY_DEFINITION = L''entit\u00E9 "{0}" est d\u00E9clar\u00E9e plusieurs fois.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = La d\u00E9claration d'entit\u00E9 externe doit commencer par \"SYSTEM\" ou \"PUBLIC\".
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Un espace est obligatoire entre \"PUBLIC\" et l'identificateur public.
++        ExternalIDRequired = La d\u00E9claration d'entit\u00E9 externe doit commencer par "SYSTEM" ou "PUBLIC".
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Un espace est obligatoire entre "PUBLIC" et l'identificateur public.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = Un espace est obligatoire entre l'identificateur public et l'identificateur syst\u00E8me.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Un espace est obligatoire entre \"SYSTEM\" et l'identificateur syst\u00E8me.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = L''identificateur du fragment ne doit pas \u00EAtre sp\u00E9cifi\u00E9 comme faisant partie de l''identificateur syst\u00E8me \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Un espace est obligatoire entre "SYSTEM" et l'identificateur syst\u00E8me.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = L''identificateur du fragment ne doit pas \u00EAtre sp\u00E9cifi\u00E9 comme faisant partie de l''identificateur syst\u00E8me "{0}".
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Un espace est obligatoire apr\u00E8s \"<!NOTATION\" dans la d\u00E9claration de notation.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Un espace est obligatoire apr\u00E8s "<!NOTATION" dans la d\u00E9claration de notation.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = Le nom de la notation est obligatoire dans la d\u00E9claration de notation.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Un espace est obligatoire apr\u00E8s le nom de notation \"{0}\" dans la d\u00E9claration de notation.
+-        ExternalIDorPublicIDRequired = La d\u00E9claration de la notation \"{0}\" doit inclure un identificateur syst\u00E8me ou public.
+-        NotationDeclUnterminated = La d\u00E9claration de la notation \"{0}\" doit se terminer par ''>''.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Un espace est obligatoire apr\u00E8s le nom de notation "{0}" dans la d\u00E9claration de notation.
++        ExternalIDorPublicIDRequired = La d\u00E9claration de la notation "{0}" doit inclure un identificateur syst\u00E8me ou public.
++        NotationDeclUnterminated = La d\u00E9claration de la notation "{0}" doit se terminer par ''>''.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = Le type d''\u00E9l\u00E9ment \"{1}\" a d\u00E9j\u00E0 \u00E9t\u00E9 sp\u00E9cifi\u00E9 dans le mod\u00E8le de contenu de la d\u00E9claration d''\u00E9l\u00E9ment \"{0}\".
+-        ENTITIESInvalid = La valeur d''attribut \"{1}\" de type ENTITIES doit correspondre au nom d''au moins une entit\u00E9 non analys\u00E9e.
+-        ENTITYInvalid = La valeur d''attribut \"{1}\" de type ENTITY doit correspondre au nom d''une entit\u00E9 non analys\u00E9e.
+-        IDDefaultTypeInvalid = L''attribut d''ID \"{0}\" doit avoir une valeur par d\u00E9faut d\u00E9clar\u00E9e de \"#IMPLIED\" ou \"#REQUIRED\".
+-        IDInvalid = La valeur d''attribut \"{0}\" de type ID doit \u00EAtre un nom.
+-        IDInvalidWithNamespaces = La valeur d''attribut \"{0}\" de type ID doit \u00EAtre un NCName lorsque les espaces de noms sont activ\u00E9s.
+-        IDNotUnique = La valeur d''attribut \"{0}\" de type ID doit \u00EAtre unique dans le document.
+-        IDREFInvalid = La valeur d''attribut \"{0}\" de type IDREF doit \u00EAtre un nom.
+-        IDREFInvalidWithNamespaces = La valeur d''attribut \"{0}\" de type IDREF doit \u00EAtre un NCName lorsque les espaces de noms sont activ\u00E9s.
+-        IDREFSInvalid = Une valeur d''attribut \"{0}\" de type IDREFS doit correspondre \u00E0 au moins un nom.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre \"{0}\" doit inclure des d\u00E9clarations correctement imbriqu\u00E9es lorsque la r\u00E9f\u00E9rence d''entit\u00E9 est utilis\u00E9e comme d\u00E9claration compl\u00E8te.
+-        ImproperDeclarationNesting = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre \"{0}\" doit inclure des d\u00E9clarations correctement imbriqu\u00E9es.
+-        ImproperGroupNesting = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre \"{0}\" doit inclure des paires de parenth\u00E8ses correctement imbriqu\u00E9es.
+-        INVALID_PE_IN_CONDITIONAL = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre \"{0}\" doit inclure la section conditionnelle compl\u00E8te ou seulement INCLUDE ou IGNORE.
+-        MSG_ATTRIBUTE_NOT_DECLARED = L''attribut \"{1}\" doit \u00EAtre d\u00E9clar\u00E9 pour le type d''\u00E9l\u00E9ment \"{0}\".
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = L''attribut \"{0}\" de valeur \"{1}\" doit avoir une valeur issue de la liste \"{2}\".
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = La valeur \"{1}\" de l''attribut \"{0}\" ne doit pas \u00EAtre modifi\u00E9e par normalisation (et devenir \"{2}\") dans un document autonome.
+-        MSG_CONTENT_INCOMPLETE = Le contenu du type d''\u00E9l\u00E9ment \"{0}\" est incomplet. Il doit correspondre \u00E0 \"{1}\".
+-        MSG_CONTENT_INVALID = Le contenu du type d''\u00E9l\u00E9ment \"{0}\" doit correspondre \u00E0 \"{1}\".
+-        MSG_CONTENT_INVALID_SPECIFIED = Le contenu du type d''\u00E9l\u00E9ment \"{0}\" doit correspondre \u00E0 \"{1}\". Les enfants de type \"{2}\" ne sont pas autoris\u00E9s.
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = L''attribut \"{1}\" du type d''\u00E9l\u00E9ment \"{0}\" a une valeur par d\u00E9faut et doit \u00EAtre sp\u00E9cifi\u00E9 dans un document autonome.
+-        MSG_DUPLICATE_ATTDEF = L''attribut \"{1}\" est d\u00E9j\u00E0 d\u00E9clar\u00E9 pour le type d''\u00E9l\u00E9ment \"{0}\".
+-        MSG_ELEMENT_ALREADY_DECLARED = Le type d''\u00E9l\u00E9ment \"{0}\" ne doit pas \u00EAtre d\u00E9clar\u00E9 plusieurs fois.
+-        MSG_ELEMENT_NOT_DECLARED = Le type d''\u00E9l\u00E9ment \"{0}\" doit \u00EAtre d\u00E9clar\u00E9.
++        DuplicateTypeInMixedContent = Le type d''\u00E9l\u00E9ment "{1}" a d\u00E9j\u00E0 \u00E9t\u00E9 sp\u00E9cifi\u00E9 dans le mod\u00E8le de contenu de la d\u00E9claration d''\u00E9l\u00E9ment "{0}".
++        ENTITIESInvalid = La valeur d''attribut "{1}" de type ENTITIES doit correspondre au nom d''au moins une entit\u00E9 non analys\u00E9e.
++        ENTITYInvalid = La valeur d''attribut "{1}" de type ENTITY doit correspondre au nom d''une entit\u00E9 non analys\u00E9e.
++        IDDefaultTypeInvalid = L''attribut d''ID "{0}" doit avoir une valeur par d\u00E9faut d\u00E9clar\u00E9e de "#IMPLIED" ou "#REQUIRED".
++        IDInvalid = La valeur d''attribut "{0}" de type ID doit \u00EAtre un nom.
++        IDInvalidWithNamespaces = La valeur d''attribut "{0}" de type ID doit \u00EAtre un NCName lorsque les espaces de noms sont activ\u00E9s.
++        IDNotUnique = La valeur d''attribut "{0}" de type ID doit \u00EAtre unique dans le document.
++        IDREFInvalid = La valeur d''attribut "{0}" de type IDREF doit \u00EAtre un nom.
++        IDREFInvalidWithNamespaces = La valeur d''attribut "{0}" de type IDREF doit \u00EAtre un NCName lorsque les espaces de noms sont activ\u00E9s.
++        IDREFSInvalid = Une valeur d''attribut "{0}" de type IDREFS doit correspondre \u00E0 au moins un nom.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre "{0}" doit inclure des d\u00E9clarations correctement imbriqu\u00E9es lorsque la r\u00E9f\u00E9rence d''entit\u00E9 est utilis\u00E9e comme d\u00E9claration compl\u00E8te.
++        ImproperDeclarationNesting = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre "{0}" doit inclure des d\u00E9clarations correctement imbriqu\u00E9es.
++        ImproperGroupNesting = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre "{0}" doit inclure des paires de parenth\u00E8ses correctement imbriqu\u00E9es.
++        INVALID_PE_IN_CONDITIONAL = Le texte de remplacement de l''entit\u00E9 de param\u00E8tre "{0}" doit inclure la section conditionnelle compl\u00E8te ou seulement INCLUDE ou IGNORE.
++        MSG_ATTRIBUTE_NOT_DECLARED = L''attribut "{1}" doit \u00EAtre d\u00E9clar\u00E9 pour le type d''\u00E9l\u00E9ment "{0}".
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = L''attribut "{0}" de valeur "{1}" doit avoir une valeur issue de la liste "{2}".
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = La valeur "{1}" de l''attribut "{0}" ne doit pas \u00EAtre modifi\u00E9e par normalisation (et devenir "{2}") dans un document autonome.
++        MSG_CONTENT_INCOMPLETE = Le contenu du type d''\u00E9l\u00E9ment "{0}" est incomplet. Il doit correspondre \u00E0 "{1}".
++        MSG_CONTENT_INVALID = Le contenu du type d''\u00E9l\u00E9ment "{0}" doit correspondre \u00E0 "{1}".
++        MSG_CONTENT_INVALID_SPECIFIED = Le contenu du type d''\u00E9l\u00E9ment "{0}" doit correspondre \u00E0 "{1}". Les enfants de type "{2}" ne sont pas autoris\u00E9s.
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = L''attribut "{1}" du type d''\u00E9l\u00E9ment "{0}" a une valeur par d\u00E9faut et doit \u00EAtre sp\u00E9cifi\u00E9 dans un document autonome.
++        MSG_DUPLICATE_ATTDEF = L''attribut "{1}" est d\u00E9j\u00E0 d\u00E9clar\u00E9 pour le type d''\u00E9l\u00E9ment "{0}".
++        MSG_ELEMENT_ALREADY_DECLARED = Le type d''\u00E9l\u00E9ment "{0}" ne doit pas \u00EAtre d\u00E9clar\u00E9 plusieurs fois.
++        MSG_ELEMENT_NOT_DECLARED = Le type d''\u00E9l\u00E9ment "{0}" doit \u00EAtre d\u00E9clar\u00E9.
+         MSG_GRAMMAR_NOT_FOUND = Le document n'est pas valide : aucune grammaire d\u00E9tect\u00E9e.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = Un \u00E9l\u00E9ment avec l''identificateur \"{0}\" doit figurer dans le document.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = La r\u00E9f\u00E9rence \u00E0 l''entit\u00E9 externe \"{0}\" n''est pas autoris\u00E9e dans le document autonome.
+-        MSG_FIXED_ATTVALUE_INVALID = L''attribut \"{1}\" de valeur \"{2}\" doit avoir une valeur de \"{3}\".
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Le type d''\u00E9l\u00E9ment \"{0}\" a d\u00E9j\u00E0 l''attribut \"{1}\" de type ID. Un deuxi\u00E8me attribut \"{2}\" de type ID n''est pas autoris\u00E9.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Le type d''\u00E9l\u00E9ment \"{0}\" a d\u00E9j\u00E0 l''attribut \"{1}\" de type NOTATION. Un deuxi\u00E8me attribut \"{2}\" de type NOTATION n''est pas autoris\u00E9.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = La notation \"{1}\" doit \u00EAtre d\u00E9clar\u00E9e lorsqu''elle est r\u00E9f\u00E9renc\u00E9e dans la liste des types de notation de l''attribut \"{0}\".
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = La notation \"{1}\" doit \u00EAtre d\u00E9clar\u00E9e lorsqu''elle est r\u00E9f\u00E9renc\u00E9e dans la d\u00E9claration d''entit\u00E9 non analys\u00E9e pour \"{0}\".
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = La r\u00E9f\u00E9rence \u00E0 l''entit\u00E9 \"{0}\" d\u00E9clar\u00E9e dans une entit\u00E9 analys\u00E9e externe n''est pas autoris\u00E9e dans un document autonome.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = L''attribut \"{1}\" est obligatoire et doit \u00EAtre sp\u00E9cifi\u00E9 pour le type d''\u00E9l\u00E9ment \"{0}\".
++        MSG_ELEMENT_WITH_ID_REQUIRED = Un \u00E9l\u00E9ment avec l''identificateur "{0}" doit figurer dans le document.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = La r\u00E9f\u00E9rence \u00E0 l''entit\u00E9 externe "{0}" n''est pas autoris\u00E9e dans le document autonome.
++        MSG_FIXED_ATTVALUE_INVALID = L''attribut "{1}" de valeur "{2}" doit avoir une valeur de "{3}".
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Le type d''\u00E9l\u00E9ment "{0}" a d\u00E9j\u00E0 l''attribut "{1}" de type ID. Un deuxi\u00E8me attribut "{2}" de type ID n''est pas autoris\u00E9.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Le type d''\u00E9l\u00E9ment "{0}" a d\u00E9j\u00E0 l''attribut "{1}" de type NOTATION. Un deuxi\u00E8me attribut "{2}" de type NOTATION n''est pas autoris\u00E9.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = La notation "{1}" doit \u00EAtre d\u00E9clar\u00E9e lorsqu''elle est r\u00E9f\u00E9renc\u00E9e dans la liste des types de notation de l''attribut "{0}".
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = La notation "{1}" doit \u00EAtre d\u00E9clar\u00E9e lorsqu''elle est r\u00E9f\u00E9renc\u00E9e dans la d\u00E9claration d''entit\u00E9 non analys\u00E9e pour "{0}".
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = La r\u00E9f\u00E9rence \u00E0 l''entit\u00E9 "{0}" d\u00E9clar\u00E9e dans une entit\u00E9 analys\u00E9e externe n''est pas autoris\u00E9e dans un document autonome.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = L''attribut "{1}" est obligatoire et doit \u00EAtre sp\u00E9cifi\u00E9 pour le type d''\u00E9l\u00E9ment "{0}".
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = Aucun espace ne doit figurer entre les \u00E9l\u00E9ments d\u00E9clar\u00E9s dans une entit\u00E9 analys\u00E9e externe avec le contenu des \u00E9l\u00E9ments dans un document autonome.
+-        NMTOKENInvalid = La valeur d''attribut \"{0}\" de type NMTOKEN doit correspondre \u00E0 un jeton de nom.
+-        NMTOKENSInvalid = La valeur d''attribut \"{0}\" de type NMTOKENS doit correspondre \u00E0 au moins un jeton de nom.
+-        NoNotationOnEmptyElement = Le type d''\u00E9l\u00E9ment \"{0}\" d\u00E9clar\u00E9 EMPTY ne peut pas d\u00E9clarer un attribut \"{1}\" de type NOTATION.
+-        RootElementTypeMustMatchDoctypedecl = L''\u00E9l\u00E9ment racine de document \"{1}\" doit correspondre \u00E0 la racine DOCTYPE \"{0}\".
+-        UndeclaredElementInContentSpec = Le mod\u00E8le de contenu de l''\u00E9l\u00E9ment \"{0}\" fait r\u00E9f\u00E9rence \u00E0 l''\u00E9l\u00E9ment non d\u00E9clar\u00E9 \"{1}\".
+-        UniqueNotationName = La d\u00E9claration de la notation \"{0}\" n''est pas unique. Une valeur Name donn\u00E9e ne doit pas \u00EAtre d\u00E9clar\u00E9e dans plusieurs d\u00E9clarations de notation.
+-        ENTITYFailedInitializeGrammar =  Contr\u00F4le de validation ENTITYDatatype : \u00E9chec. Besoin d'appeler une m\u00E9thode d'initialisation avec une r\u00E9f\u00E9rence de grammaire valide. \t
+-        ENTITYNotUnparsed = La valeur ENTITY \"{0}\" est analys\u00E9e.
+-        ENTITYNotValid = La valeur ENTITY \"{0}\" n''est pas valide.
++        NMTOKENInvalid = La valeur d''attribut "{0}" de type NMTOKEN doit correspondre \u00E0 un jeton de nom.
++        NMTOKENSInvalid = La valeur d''attribut "{0}" de type NMTOKENS doit correspondre \u00E0 au moins un jeton de nom.
++        NoNotationOnEmptyElement = Le type d''\u00E9l\u00E9ment "{0}" d\u00E9clar\u00E9 EMPTY ne peut pas d\u00E9clarer un attribut "{1}" de type NOTATION.
++        RootElementTypeMustMatchDoctypedecl = L''\u00E9l\u00E9ment racine de document "{1}" doit correspondre \u00E0 la racine DOCTYPE "{0}".
++        UndeclaredElementInContentSpec = Le mod\u00E8le de contenu de l''\u00E9l\u00E9ment "{0}" fait r\u00E9f\u00E9rence \u00E0 l''\u00E9l\u00E9ment non d\u00E9clar\u00E9 "{1}".
++        UniqueNotationName = La d\u00E9claration de la notation "{0}" n''est pas unique. Une valeur Name donn\u00E9e ne doit pas \u00EAtre d\u00E9clar\u00E9e dans plusieurs d\u00E9clarations de notation.
++        ENTITYFailedInitializeGrammar =  Valideur ENTITYDatatype : \u00E9chec. Besoin d'appeler une m\u00E9thode d'initialisation avec une r\u00E9f\u00E9rence de grammaire valide. \t
++        ENTITYNotUnparsed = La valeur ENTITY "{0}" est analys\u00E9e.
++        ENTITYNotValid = La valeur ENTITY "{0}" n''est pas valide.
+         EmptyList = Une valeur de type ENTITIES, IDREFS et NMTOKENS ne peut pas correspondre \u00E0 une liste vide.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = La r\u00E9f\u00E9rence d''entit\u00E9 externe \"&{0};\" n''est pas autoris\u00E9e dans une valeur d''attribut.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = La r\u00E9f\u00E9rence d''entit\u00E9 externe "&{0};" n''est pas autoris\u00E9e dans une valeur d''attribut.
++        AccessExternalDTD = DTD externe : \u00E9chec de la lecture de la DTD externe ''{0}'', car l''acc\u00E8s ''{1}'' n''est pas autoris\u00E9 en raison d''une restriction d\u00E9finie par la propri\u00E9t\u00E9 accessExternalDTD.
++        AccessExternalEntity = Entit\u00E9 externe : \u00E9chec de la lecture du document externe ''{0}'', car l''acc\u00E8s ''{1}'' n''est pas autoris\u00E9 en raison d''une restriction d\u00E9finie par la propri\u00E9t\u00E9 accessExternalDTD.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = L''entit\u00E9 \"{0}\" \u00E9tait r\u00E9f\u00E9renc\u00E9e, mais pas d\u00E9clar\u00E9e.
+-        ReferenceToUnparsedEntity = La r\u00E9f\u00E9rence d''entit\u00E9 non analys\u00E9e \"&{0};\" n''est pas autoris\u00E9e.
+-        RecursiveReference = R\u00E9f\u00E9rence d''entit\u00E9 r\u00E9cursive \"{0}\". (Chemin de r\u00E9f\u00E9rence : {1}),
+-        RecursiveGeneralReference = R\u00E9f\u00E9rence d''entit\u00E9 g\u00E9n\u00E9rale r\u00E9cursive \"&{0};\". (Chemin de r\u00E9f\u00E9rence : {1}),
+-        RecursivePEReference = R\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre r\u00E9cursive \"%{0};\". (Chemin de r\u00E9f\u00E9rence : {1}),
++        EntityNotDeclared = L''entit\u00E9 "{0}" \u00E9tait r\u00E9f\u00E9renc\u00E9e, mais pas d\u00E9clar\u00E9e.
++        ReferenceToUnparsedEntity = La r\u00E9f\u00E9rence d''entit\u00E9 non analys\u00E9e "&{0};" n''est pas autoris\u00E9e.
++        RecursiveReference = R\u00E9f\u00E9rence d''entit\u00E9 r\u00E9cursive "{0}". (Chemin de r\u00E9f\u00E9rence : {1}),
++        RecursiveGeneralReference = R\u00E9f\u00E9rence d''entit\u00E9 g\u00E9n\u00E9rale r\u00E9cursive "&{0};". (Chemin de r\u00E9f\u00E9rence : {1}),
++        RecursivePEReference = R\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre r\u00E9cursive "%{0};". (Chemin de r\u00E9f\u00E9rence : {1}),
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = L''encodage \"{0}\" n''est pas pris en charge.
++        EncodingNotSupported = L''encodage "{0}" n''est pas pris en charge.
+         EncodingRequired = Une entit\u00E9 analys\u00E9e sans encodage UTF-8 ou UTF-16 doit contenir une d\u00E9claration d'encodage.
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = L'\u00E9l\u00E9ment ou l'attribut ne correspond pas \u00E0 la production QName : QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = L''\u00E9l\u00E9ment \"{0}\" ne peut pas avoir \"xmlns\" comme pr\u00E9fixe.
+-        ElementPrefixUnbound = Le pr\u00E9fixe \"{0}\" de l''\u00E9l\u00E9ment \"{1}\" n''est pas li\u00E9.
+-        AttributePrefixUnbound = Le pr\u00E9fixe \"{2}\" de l''attribut \"{1}\" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment \"{0}\" n''est pas li\u00E9.
+-        EmptyPrefixedAttName = La valeur de l''attribut \"{0}\" n''est pas valide. Les liaisons d''espaces de noms pr\u00E9fix\u00E9s ne peuvent pas \u00EAtre vides.
+-        PrefixDeclared = Le pr\u00E9fixe d''espace de noms \"{0}\" n''\u00E9tait pas d\u00E9clar\u00E9.
++        ElementXMLNSPrefix = L''\u00E9l\u00E9ment "{0}" ne peut pas avoir "xmlns" comme pr\u00E9fixe.
++        ElementPrefixUnbound = Le pr\u00E9fixe "{0}" de l''\u00E9l\u00E9ment "{1}" n''est pas li\u00E9.
++        AttributePrefixUnbound = Le pr\u00E9fixe "{2}" de l''attribut "{1}" associ\u00E9 \u00E0 un type d''\u00E9l\u00E9ment "{0}" n''est pas li\u00E9.
++        EmptyPrefixedAttName = La valeur de l''attribut "{0}" n''est pas valide. Les liaisons d''espaces de noms pr\u00E9fix\u00E9s ne peuvent pas \u00EAtre vides.
++        PrefixDeclared = Le pr\u00E9fixe d''espace de noms "{0}" n''\u00E9tait pas d\u00E9clar\u00E9.
+         CantBindXMLNS = Le pr\u00E9fixe "xmlns" ne peut pas \u00EAtre li\u00E9 \u00E0 un espace de noms de fa\u00E7on explicite, pas plus que l'espace de noms de "xmlns" \u00E0 un pr\u00E9fixe quelconque.
+         CantBindXML = Le pr\u00E9fixe "xml" ne peut pas \u00EAtre li\u00E9 \u00E0 un autre espace de noms que son espace de noms habituel. L'espace de noms de "xml" ne peut pas non plus \u00EAtre li\u00E9 \u00E0 un autre pr\u00E9fixe que "xml".
+-        MSG_ATT_DEFAULT_INVALID = La valeur par d\u00E9faut \"{1}\" de l''attribut \"{0}\" n''est pas admise conform\u00E9ment aux contraintes lexicales de ce type d''attribut.
++        MSG_ATT_DEFAULT_INVALID = La valeur par d\u00E9faut "{1}" de l''attribut "{0}" n''est pas admise conform\u00E9ment aux contraintes lexicales de ce type d''attribut.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=L''analyseur a rencontr\u00E9 plus de \"{0}\" d\u00E9veloppements d''entit\u00E9 dans ce document. Il s''agit de la limite impos\u00E9e par l''application.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001 : L''analyseur a rencontr\u00E9 plus de "{0}" d\u00E9veloppements d''entit\u00E9 dans ce document. Il s''agit de la limite impos\u00E9e par le JDK.
++        ElementAttributeLimit=JAXP00010002 : L''\u00E9l\u00E9ment "{0}" a plus de "{1}" attributs. "{1}" est la limite impos\u00E9e par le JDK.
++        MaxEntitySizeLimit=JAXP00010003 : La longueur de l''entit\u00E9 "{0}" est de "{1}". Cette valeur d\u00E9passe la limite de "{2}" d\u00E9finie par "{3}".
++        TotalEntitySizeLimit=JAXP00010004 : La taille cumul\u00E9e des entit\u00E9s ("{0}") d\u00E9passe la limite de "{1}" d\u00E9finie par "{2}".
++        MaxXMLNameLimit=JAXP00010005 : le nom "{0}" d\u00E9passe la limite de "{1}" d\u00E9finie par "{2}".
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= L''\u00E9l\u00E9ment \"{0}\" a plus de \"{1}\" attributs. \"{1}\" est la limite impos\u00E9e par l''application.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_it.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{0}) nel prologo del documento.
+         InvalidCharInXMLDecl = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{0}) nella dichiarazione XML.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = La sequenza di caratteri \"]]>\" non deve essere presente nel contenuto a meno che non sia utilizzata per contrassegnare la fine di una sezione CDATA.
++        CDEndInContent = La sequenza di caratteri "]]>" non deve essere presente nel contenuto a meno che non sia utilizzata per contrassegnare la fine di una sezione CDATA.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = La sezione CDATA deve terminare con \"]]>\".
++        CDSectUnterminated = La sezione CDATA deve terminare con "]]>".
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = La dichiarazione XML pu\u00F2 comparire solo all'inizio del documento.
+-        EqRequiredInXMLDecl = Il carattere '' = '' deve seguire \"{0}\" nella dichiarazione XML.
+-        QuoteRequiredInXMLDecl = Il valore che segue \"{0}\" nella dichiarazione XML deve essere una stringa compresa tra apici.
+-        XMLDeclUnterminated = La dichiarazione XML deve terminare con \"?>\".
++        EqRequiredInXMLDecl = Il carattere '' = '' deve seguire "{0}" nella dichiarazione XML.
++        QuoteRequiredInXMLDecl = Il valore che segue "{0}" nella dichiarazione XML deve essere una stringa compresa tra apici.
++        XMLDeclUnterminated = La dichiarazione XML deve terminare con "?>".
+         VersionInfoRequired = La versione \u00E8 obbligatoria nella dichiarazione XML.
+         SpaceRequiredBeforeVersionInXMLDecl = \u00C8 richiesto uno spazio prima dell'attributo pseudo della versione nella dichiarazione XML.
+         SpaceRequiredBeforeEncodingInXMLDecl = \u00C8 richiesto uno spazio prima dell'attributo pseudo di codifica nella dichiarazione XML.
+@@ -71,70 +68,71 @@
+         ReferenceIllegalInTrailingMisc=Il riferimento non \u00E8 consentito nella sezione finale.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = Il valore della dichiarazione del documento standalone deve essere \"yes\" o \"no\", non \"{0}\".
++        SDDeclInvalid = Il valore della dichiarazione del documento standalone deve essere "yes" o "no", non "{0}".
++        SDDeclNameInvalid = Il nome standalone nella dichiarazione XML potrebbe essere stato digitato in modo errato.
+ # 2.12 Language Identification
+-        XMLLangInvalid = Il valore dell''attributo xml:lang \"{0}\" \u00E8 un identificativo di lingua non valido.
++        XMLLangInvalid = Il valore dell''attributo xml:lang "{0}" \u00E8 un identificativo di lingua non valido.
+ # 3. Logical Structures
+-        ETagRequired = Il tipo di elemento \"{0}\" deve terminare con la corrispondente tag finale \"</{0}>\".
++        ETagRequired = Il tipo di elemento "{0}" deve terminare con la corrispondente tag finale "</{0}>".
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = Il tipo di elemento \"{0}\" deve essere seguito dalle specifiche di attributo \">\" o \"/>\".
+-        EqRequiredInAttribute = Il nome attributo \"{1}\" associato a un tipo di elemento \"{0}\" deve essere seguito dal carattere '' = ''.
+-        OpenQuoteExpected = \u00C8 previsto un apice di apertura per l''attributo \"{1}\" associato a un tipo di elemento \"{0}\".
+-        CloseQuoteExpected = \u00C8 previsto un apice di chiusura per l''attributo \"{1}\" associato a un tipo di elemento \"{0}\".
+-        AttributeNotUnique = L''attributo \"{1}\" \u00E8 gi\u00E0 stato specificato per l''elemento \"{0}\".
+-        AttributeNSNotUnique = L''attributo \"{1}\" associato allo spazio di nomi \"{2}\" \u00E8 gi\u00E0 stato specificato per l''elemento \"{0}\".
+-        ETagUnterminated = La tag finale per il tipo di elemento \"{0}\" deve terminare con un delimitatore ''>''.
++        ElementUnterminated = Il tipo di elemento "{0}" deve essere seguito dalle specifiche di attributo ">" o "/>".
++        EqRequiredInAttribute = Il nome attributo "{1}" associato a un tipo di elemento "{0}" deve essere seguito dal carattere '' = ''.
++        OpenQuoteExpected = \u00C8 previsto un apice di apertura per l''attributo "{1}" associato a un tipo di elemento "{0}".
++        CloseQuoteExpected = \u00C8 previsto un apice di chiusura per l''attributo "{1}" associato a un tipo di elemento "{0}".
++        AttributeNotUnique = L''attributo "{1}" \u00E8 gi\u00E0 stato specificato per l''elemento "{0}".
++        AttributeNSNotUnique = L''attributo "{1}" associato allo spazio di nomi "{2}" \u00E8 gi\u00E0 stato specificato per l''elemento "{0}".
++        ETagUnterminated = La tag finale per il tipo di elemento "{0}" deve terminare con un delimitatore ''>''.
+         MarkupNotRecognizedInContent = Il contenuto degli elementi deve essere composto da dati o markup di caratteri con formato corretto.
+         DoctypeIllegalInContent = DOCTYPE non \u00E8 consentito nel contenuto.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = Il riferimento deve terminare con un delimitatore ';'.
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = Il riferimento deve essere compreso completamente all'interno della stessa entit\u00E0 analizzata.
+-        ElementEntityMismatch = L''elemento \"{0}\" deve iniziare e finire con la stessa entit\u00E0.
++        ElementEntityMismatch = L''elemento "{0}" deve iniziare e finire con la stessa entit\u00E0.
+         MarkupEntityMismatch=Le strutture di documenti XML devono iniziare e finire con la stessa entit\u00E0.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{2}) nel valore dell''attributo \"{1}\". L''elemento \u00E8 \"{0}\".
++        InvalidCharInAttValue = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{2}) nel valore dell''attributo "{1}". L''elemento \u00E8 "{0}".
+         InvalidCharInComment = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{0}) nel commento.
+         InvalidCharInPI = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{0}) nell''istruzione di elaborazione.
+         InvalidCharInInternalSubset = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{0}) nel set secondario interno del DTD.
+         InvalidCharInTextDecl = \u00C8 stato trovato un carattere XML non valido (Unicode: 0x{0}) nella dichiarazione testuale.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = Il valore dell''attributo \"{1}\" deve iniziare con un apice o una virgoletta.
+-        LessthanInAttValue = Il valore dell''attributo \"{1}\" associato a un tipo di elemento \"{0}\" non deve essere contenere il carattere ''<''.
+-        AttributeValueUnterminated = Il valore dell''attributo \"{1}\" deve terminare con un apice corrispondente.
++        QuoteRequiredInAttValue = Il valore dell''attributo "{1}" deve iniziare con un apice o una virgoletta.
++        LessthanInAttValue = Il valore dell''attributo "{1}" associato a un tipo di elemento "{0}" non deve essere contenere il carattere ''<''.
++        AttributeValueUnterminated = Il valore dell''attributo "{1}" deve terminare con un apice corrispondente.
+ # 2.5 Comments
+-        InvalidCommentStart = Il commento deve iniziare con \"<!--\".
+-        DashDashInComment = La stringa \"--\" non \u00E8 consentita nei commenti.
+-        CommentUnterminated = Il commento deve terminare con \"-->\".
++        InvalidCommentStart = Il commento deve iniziare con "<!--".
++        DashDashInComment = La stringa "--" non \u00E8 consentita nei commenti.
++        CommentUnterminated = Il commento deve terminare con "-->".
+         COMMENT_NOT_IN_ONE_ENTITY = Il commento non \u00E8 compreso all'interno della stessa entit\u00E0.
+ # 2.6 Processing Instructions
+         PITargetRequired = L'istruzione di elaborazione deve iniziare con il nome della destinazione.
+         SpaceRequiredInPI = \u00C8 richiesto uno spazio tra la destinazione delle istruzioni di elaborazione e i dati.
+-        PIUnterminated = L'istruzione di elaborazione deve terminare con \"?>\".
+-        ReservedPITarget = Non \u00E8 consentita una destinazione di istruzione di elaborazione corrispondente a \"[xX][mM][lL]\".
++        PIUnterminated = L'istruzione di elaborazione deve terminare con "?>".
++        ReservedPITarget = Non \u00E8 consentita una destinazione di istruzione di elaborazione corrispondente a "[xX][mM][lL]".
+         PI_NOT_IN_ONE_ENTITY = L'istruzione di elaborazione non \u00E8 compresa all'interno della stessa entit\u00E0.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = Versione \"{0}\" non valida.
+-        VersionNotSupported = La versione XML \"{0}\" non \u00E8 supportata. Solo la versione XML 1.0 \u00E8 supportata.
+-        VersionNotSupported11 = La versione XML \"{0}\" non \u00E8 supportata. Solo le versioni XML 1.0 e XML 1.1 sono supportate.
++        VersionInfoInvalid = Versione "{0}" non valida.
++        VersionNotSupported = La versione XML "{0}" non \u00E8 supportata. Solo la versione XML 1.0 \u00E8 supportata.
++        VersionNotSupported11 = La versione XML "{0}" non \u00E8 supportata. Solo le versioni XML 1.0 e XML 1.1 sono supportate.
+         VersionMismatch= Un'entit\u00E0 non pu\u00F2 includerne un'altra con una versione successiva.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = Una rappresentazione decimale deve seguire immediatamente \"&#\" in un riferimento di carattere.
+-        HexdigitRequiredInCharRef = Una rappresentazione esadecimale deve seguire immediatamente \"&#\" in un riferimento di carattere.
++        DigitRequiredInCharRef = Una rappresentazione decimale deve seguire immediatamente "&#" in un riferimento di carattere.
++        HexdigitRequiredInCharRef = Una rappresentazione esadecimale deve seguire immediatamente "&#" in un riferimento di carattere.
+         SemicolonRequiredInCharRef = Il riferimento di carattere deve terminare con il delimitatore ';'.
+-        InvalidCharRef = Il riferimento di carattere \"&#{0}\" \u00E8 un carattere XML non valido.
++        InvalidCharRef = Il riferimento di carattere "&#{0}" \u00E8 un carattere XML non valido.
+         NameRequiredInReference = Il nome entit\u00E0 deve seguire immediatamente '&' nel riferimento di entit\u00E0.
+-        SemicolonRequiredInReference = Il riferimento di entit\u00E0 \"{0}\" deve terminare con il delimitatore '';''.
++        SemicolonRequiredInReference = Il riferimento di entit\u00E0 "{0}" deve terminare con il delimitatore '';''.
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = La dichiarazione di testo pu\u00F2 comparire solo all'inizio dell'entit\u00E0 esterna analizzata.
+-        EqRequiredInTextDecl = Il carattere '' = '' deve seguire \"{0}\" nella dichiarazione di testo.
+-        QuoteRequiredInTextDecl = Il valore che segue \"{0}\" nella dichiarazione di testo deve essere una stringa compresa tra apici.
+-        CloseQuoteMissingInTextDecl = manca l''apice di chiusura nel valore che segue \"{0}\" nella dichiarazione di testo.
++        EqRequiredInTextDecl = Il carattere '' = '' deve seguire "{0}" nella dichiarazione di testo.
++        QuoteRequiredInTextDecl = Il valore che segue "{0}" nella dichiarazione di testo deve essere una stringa compresa tra apici.
++        CloseQuoteMissingInTextDecl = manca l''apice di chiusura nel valore che segue "{0}" nella dichiarazione di testo.
+         SpaceRequiredBeforeVersionInTextDecl = \u00C8 richiesto uno spazio prima dell'attributo pseudo della versione nella dichiarazione del testo.
+         SpaceRequiredBeforeEncodingInTextDecl = \u00C8 richiesto uno spazio prima dell'attributo pseudo di codifica nella dichiarazione del testo.
+-        TextDeclUnterminated = La dichiarazione di testo deve terminare con \"?>\".
++        TextDeclUnterminated = La dichiarazione di testo deve terminare con "?>".
+         EncodingDeclRequired = La dichiarazione di codifica \u00E8 obbligatoria nella dichiarazione di testo.
+         NoMorePseudoAttributes = Non sono consentiti altri attributi pseudo.
+         MorePseudoAttributes = Sono previsti altri attributi pseudo.
+@@ -143,13 +141,13 @@
+         CommentNotInOneEntity = Il commento deve essere compreso completamente all'interno della stessa entit\u00E0 analizzata.
+         PINotInOneEntity = L'istruzione di elaborazione deve essere compresa completamente all'interno della stessa entit\u00E0 analizzata.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = Nome codifica \"{0}\" non valido.
+-        EncodingByteOrderUnsupported = L''ordine di byte specificato per la codifica \"{0}\" non \u00E8 supportato.
++        EncodingDeclInvalid = Nome codifica "{0}" non valido.
++        EncodingByteOrderUnsupported = L''ordine di byte specificato per la codifica "{0}" non \u00E8 supportato.
+         InvalidByte = Byte non valido {0} della sequenza UTF-8 a {1} byte.
+         ExpectedByte = \u00C8 previsto il byte {0} della sequenza UTF-8 a {1} byte.  
+         InvalidHighSurrogate = I bit per surrogato alto nella sequenza UTF-8 non devono superare 0x10, ma \u00E8 stato trovato 0x{0}.
+-        OperationNotSupported = Operazione \"{0}\" non supportata dal processo di lettura {1}.
+-        InvalidASCII = Il byte \"{0}\" non fa parte del set di caratteri ASCII (a 7 bit).
++        OperationNotSupported = Operazione "{0}" non supportata dal processo di lettura {1}.
++        InvalidASCII = Il byte "{0}" non fa parte del set di caratteri ASCII (a 7 bit).
+         CharConversionFailure = Un'entit\u00E0 che deve trovarsi in una determinata codifica non pu\u00F2 contenere sequenze non valide in quella codifica.
+         
+ # DTD Messages
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = Il carattere (Unicode: 0x{0}) non \u00E8 consentito nell''identificativo pubblico.
+         SpaceRequiredBetweenPublicAndSystem = Sono richiesti spazi tra publicId e systemId.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u00C8 richiesto uno spazio dopo \"<!DOCTYPE\" nella dichiarazione del tipo di documento.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Il tipo di elemento radice deve comparire dopo \"<!DOCTYPE\" nella dichiarazione del tipo di documento.
+-        DoctypedeclUnterminated = La dichiarazione del tipo di documento per il tipo di elemento radice \"{0}\" deve terminare con ''>''.
+-        PEReferenceWithinMarkup = Il riferimento di entit\u00E0 di parametro \"%{0};\" non pu\u00F2 essere presente nel markup del set secondario interno del DTD.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u00C8 richiesto uno spazio dopo "<!DOCTYPE" nella dichiarazione del tipo di documento.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Il tipo di elemento radice deve comparire dopo "<!DOCTYPE" nella dichiarazione del tipo di documento.
++        DoctypedeclUnterminated = La dichiarazione del tipo di documento per il tipo di elemento radice "{0}" deve terminare con ''>''.
++        PEReferenceWithinMarkup = Il riferimento di entit\u00E0 di parametro "%{0};" non pu\u00F2 essere presente nel markup del set secondario interno del DTD.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Le dichiarazioni di markup contenute o indicate dalla dichiarazione del tipo di documento devono avere un formato corretto.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = La dichiarazione di attributo \"xml:space\" deve essere specificata come tipo enumerato, i cui unici possibili valori sono \"default\" e \"preserve\".
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = La dichiarazione di attributo "xml:space" deve essere specificata come tipo enumerato, i cui unici possibili valori sono "default" e "preserve".
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u00C8 richiesto uno spazio dopo \"<!ELEMENT\" nella dichiarazione del tipo di elemento.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u00C8 richiesto uno spazio dopo "<!ELEMENT" nella dichiarazione del tipo di elemento.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = Il tipo di elemento \u00E8 obbligatorio nella dichiarazione del tipo di elemento.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u00C8 richiesto uno spazio dopo il tipo di elemento \"{0}\" nella dichiarazione del tipo di elemento.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u00C8 richiesto uno vincolo dopo il tipo di elemento \"{0}\" nella dichiarazione del tipo di elemento.
+-        ElementDeclUnterminated = La dichiarazione per il tipo di elemento \"{0}\" deve terminare con ''>''.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u00C8 richiesto uno spazio dopo il tipo di elemento "{0}" nella dichiarazione del tipo di elemento.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u00C8 richiesto uno vincolo dopo il tipo di elemento "{0}" nella dichiarazione del tipo di elemento.
++        ElementDeclUnterminated = La dichiarazione per il tipo di elemento "{0}" deve terminare con ''>''.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Un carattere ''('' o un tipo di elemento \u00E8 obbligatorio nella dichiarazione del tipo di elemento \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Un carattere '')'' \u00E8 obbligatorio nella dichiarazione del tipo di elemento \"{0}\".
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Un carattere ''('' o un tipo di elemento \u00E8 obbligatorio nella dichiarazione del tipo di elemento "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Un carattere '')'' \u00E8 obbligatorio nella dichiarazione del tipo di elemento "{0}".
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Un tipo di elemento \u00E8 obbligatorio nella dichiarazione del tipo di elemento \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Un carattere '')'' \u00E8 obbligatorio nella dichiarazione del tipo di elemento \"{0}\".
+-        MixedContentUnterminated = Il modello di contenuto misto \"{0}\" deve terminare con \")*\" se i tipi di elementi figlio hanno vincoli.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = Un tipo di elemento \u00E8 obbligatorio nella dichiarazione del tipo di elemento "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Un carattere '')'' \u00E8 obbligatorio nella dichiarazione del tipo di elemento "{0}".
++        MixedContentUnterminated = Il modello di contenuto misto "{0}" deve terminare con ")*" se i tipi di elementi figlio hanno vincoli.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u00C8 richiesto uno spazio dopo \"<!ATTLIST\" nella dichiarazione della lista di attributi.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u00C8 richiesto uno spazio dopo "<!ATTLIST" nella dichiarazione della lista di attributi.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = Il tipo di elemento \u00E8 obbligatorio nella dichiarazione della lista di attributi.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u00C8 richiesto uno spazio prima del nome attributo nella dichiarazione della lista di attributi per l''elemento \"{0}\".
+-        AttNameRequiredInAttDef = Specificare il nome attributo nella dichiarazione della lista di attributi per l''elemento \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u00C8 richiesto uno spazio prima del tipo di attributo nella dichiarazione dell''attributo \"{1}\" per l''elemento \"{0}\".
+-        AttTypeRequiredInAttDef = Il tipo di attributo \u00E8 obbligatorio nella dichiarazione dell''attributo \"{1}\" per l''elemento \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C8 richiesto uno spazio prima del valore predefinito di attributo nella dichiarazione dell''attributo \"{1}\" per l''elemento \"{0}\".
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Sono state specificate pi\u00F9 definizioni di attributo per lo stesso attributo \"{1}\" dell''elemento \"{0}\" specificato.
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u00C8 richiesto uno spazio prima del nome attributo nella dichiarazione della lista di attributi per l''elemento "{0}".
++        AttNameRequiredInAttDef = Specificare il nome attributo nella dichiarazione della lista di attributi per l''elemento "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u00C8 richiesto uno spazio prima del tipo di attributo nella dichiarazione dell''attributo "{1}" per l''elemento "{0}".
++        AttTypeRequiredInAttDef = Il tipo di attributo \u00E8 obbligatorio nella dichiarazione dell''attributo "{1}" per l''elemento "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C8 richiesto uno spazio prima del valore predefinito di attributo nella dichiarazione dell''attributo "{1}" per l''elemento "{0}".
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Sono state specificate pi\u00F9 definizioni di attributo per lo stesso attributo "{1}" dell''elemento "{0}" specificato.
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Deve essere presente uno spazio dopo \"NOTATION\" nella dichiarazione di attributo \"{1}\".
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Il carattere ''('' deve seguire \"NOTATION\" nella dichiarazione di attributo \"{1}\".
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Il nome notazione \u00E8 obbligatorio nella lista di tipi di notazione per la dichiarazione di attributo \"{1}\".
+-        NotationTypeUnterminated = La lista di tipi di notazione deve terminare con '')'' nella dichiarazione di attributo \"{1}\".
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Il nome token \u00E8 obbligatorio nella lista di tipi enumerati per la dichiarazione di attributo \"{1}\".
+-        EnumerationUnterminated = La lista di tipi enumerati deve terminare con '')'' nella dichiarazione di attributo \"{1}\".
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = Il valore di enumerazione \"{1}\" \u00E8 stato specificato pi\u00F9 volte nella dichiarazione dell''attributo \"{2}\" per l''elemento \"{0}\". I valori di NMTOKENS in una dichiarazione singola di attributo Enumeration devono essere tutti diversi.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = Il valore di enumerazione \"{1}\" \u00E8 stato specificato pi\u00F9 volte nella dichiarazione dell''attributo \"{2}\" per l''elemento \"{0}\". I nomi NOTATION in una dichiarazione singola di attributo NotationType devono essere tutti diversi.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Deve essere presente uno spazio dopo "NOTATION" nella dichiarazione di attributo "{1}".
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Il carattere ''('' deve seguire "NOTATION" nella dichiarazione di attributo "{1}".
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Il nome notazione \u00E8 obbligatorio nella lista di tipi di notazione per la dichiarazione di attributo "{1}".
++        NotationTypeUnterminated = La lista di tipi di notazione deve terminare con '')'' nella dichiarazione di attributo "{1}".
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Il nome token \u00E8 obbligatorio nella lista di tipi enumerati per la dichiarazione di attributo "{1}".
++        EnumerationUnterminated = La lista di tipi enumerati deve terminare con '')'' nella dichiarazione di attributo "{1}".
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = Il valore di enumerazione "{1}" \u00E8 stato specificato pi\u00F9 volte nella dichiarazione dell''attributo "{2}" per l''elemento "{0}". I valori di NMTOKENS in una dichiarazione singola di attributo Enumeration devono essere tutti diversi.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = Il valore di enumerazione "{1}" \u00E8 stato specificato pi\u00F9 volte nella dichiarazione dell''attributo "{2}" per l''elemento "{0}". I nomi NOTATION in una dichiarazione singola di attributo NotationType devono essere tutti diversi.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Deve essere presente uno spazio dopo \"FIXED\" nella dichiarazione di attributo \"{1}\".
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Deve essere presente uno spazio dopo "FIXED" nella dichiarazione di attributo "{1}".
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = La sezione condizionale inclusa deve terminare con \"]]>\".
+-        IgnoreSectUnterminated = La sezione condizionale esclusa deve terminare con \"]]>\".
++        IncludeSectUnterminated = La sezione condizionale inclusa deve terminare con "]]>".
++        IgnoreSectUnterminated = La sezione condizionale esclusa deve terminare con "]]>".
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = Il nome entit\u00E0 deve seguire immediatamente '%' nel riferimento di entit\u00E0 di parametro.
+-        SemicolonRequiredInPEReference = Il riferimento di entit\u00E0 di parametro \"%{0};\" deve terminare con il delimitatore '';''.
++        SemicolonRequiredInPEReference = Il riferimento di entit\u00E0 di parametro "%{0};" deve terminare con il delimitatore '';''.
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u00C8 richiesto uno spazio dopo \"<!ENTITY\" nella dichiarazione dell'entit\u00E0.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u00C8 richiesto uno spazio tra \"<!ENTITY\" e il carattere '%' nella dichiarazione dell'entit\u00E0 di parametro.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u00C8 richiesto uno spazio dopo "<!ENTITY" nella dichiarazione dell'entit\u00E0.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u00C8 richiesto uno spazio tra "<!ENTITY" e il carattere '%' nella dichiarazione dell'entit\u00E0 di parametro.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = \u00C8 richiesto uno spazio tra '%' e il nome entit\u00E0 nella dichiarazione dell'entit\u00E0 di parametro.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = Il nome dell'entit\u00E0 \u00E8 obbligatorio nella dichiarazione di entit\u00E0.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u00C8 richiesto uno spazio tra il nome entit\u00E0 \"{0}\" e la definizione nella dichiarazione dell''entit\u00E0:
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u00C8 richiesto uno spazio tra \"NDATA\" e il nome notazione nella dichiarazione dell''entit\u00E0 \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u00C8 richiesto uno spazio prima di \"NDATA\" nella dichiarazione dell''entit\u00E0 \"{0}\".
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Il nome notazione \u00E8 obbligatorio dopo \"NDATA\" nella dichiarazione dell''entit\u00E0 \"{0}\".
+-        EntityDeclUnterminated = La dichiarazione per l''entit\u00E0 \"{0}\" deve terminare con ''>''.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = L''entit\u00E0 \"{0}\" \u00E8 stata dichiarata pi\u00F9 volte.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u00C8 richiesto uno spazio tra il nome entit\u00E0 "{0}" e la definizione nella dichiarazione dell''entit\u00E0:
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u00C8 richiesto uno spazio tra "NDATA" e il nome notazione nella dichiarazione dell''entit\u00E0 "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u00C8 richiesto uno spazio prima di "NDATA" nella dichiarazione dell''entit\u00E0 "{0}".
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Il nome notazione \u00E8 obbligatorio dopo "NDATA" nella dichiarazione dell''entit\u00E0 "{0}".
++        EntityDeclUnterminated = La dichiarazione per l''entit\u00E0 "{0}" deve terminare con ''>''.
++	MSG_DUPLICATE_ENTITY_DEFINITION = L''entit\u00E0 "{0}" \u00E8 stata dichiarata pi\u00F9 volte.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = La dichiarazione di entit\u00E0 esterna deve iniziare con \"SYSTEM\" o \"PUBLIC\".
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \u00C8 richiesto uno spazio tra \"PUBLIC\" e l'identificativo pubblico.
++        ExternalIDRequired = La dichiarazione di entit\u00E0 esterna deve iniziare con "SYSTEM" o "PUBLIC".
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \u00C8 richiesto uno spazio tra "PUBLIC" e l'identificativo pubblico.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = \u00C8 richiesto uno spazio tra l'identificativo pubblico e quello di sistema.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \u00C8 richiesto uno spazio tra \"SYSTEM\" e l'identificativo di sistema.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = L''identificativo di frammento non deve essere specificato nell''identificativo di sistema \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \u00C8 richiesto uno spazio tra "SYSTEM" e l'identificativo di sistema.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = L''identificativo di frammento non deve essere specificato nell''identificativo di sistema "{0}".
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u00C8 richiesto uno spazio dopo \"<!NOTATION\" nella dichiarazione della notazione.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u00C8 richiesto uno spazio dopo "<!NOTATION" nella dichiarazione della notazione.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = Il nome della notazione \u00E8 obbligatorio nella dichiarazione di notazione.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u00C8 richiesto uno spazio dopo il nome notazione \"{0}\" nella dichiarazione della notazione.
+-        ExternalIDorPublicIDRequired = La dichiarazione per la notazione \"{0}\" deve includere un identificativo di sistema o pubblico.
+-        NotationDeclUnterminated = La dichiarazione per la notazione \"{0}\" deve terminare con ''>''.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u00C8 richiesto uno spazio dopo il nome notazione "{0}" nella dichiarazione della notazione.
++        ExternalIDorPublicIDRequired = La dichiarazione per la notazione "{0}" deve includere un identificativo di sistema o pubblico.
++        NotationDeclUnterminated = La dichiarazione per la notazione "{0}" deve terminare con ''>''.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = Il tipo di elemento \"{1}\" \u00E8 gi\u00E0 stato specificato nel modello di contenuto della dichiarazione di elemento \"{0}\".
+-        ENTITIESInvalid = Il valore di attributo \"{1}\" di tipo ENTITIES deve corrispondere ai nomi di una o pi\u00F9 entit\u00E0 non analizzate.
+-        ENTITYInvalid = Il valore di attributo \"{1}\" di tipo ENTITY deve corrispondere al nome di un''entit\u00E0 non analizzata.
+-        IDDefaultTypeInvalid = Nell''attributo ID \"{0}\" deve essere dichiarato un valore predefinito \"#IMPLIED\" o \"#REQUIRED\".
+-        IDInvalid = Il valore di attributo \"{0}\" di tipo ID deve essere un nome.
+-        IDInvalidWithNamespaces = Il valore di attributo \"{0}\" di tipo ID deve essere un NCName se sono abilitati gli spazi di nomi.
+-        IDNotUnique = Il valore di attributo \"{0}\" di tipo ID deve essere univoco all''interno del documento.
+-        IDREFInvalid = Il valore di attributo \"{0}\" di tipo IDREF deve essere un nome.
+-        IDREFInvalidWithNamespaces = Il valore di attributo \"{0}\" di tipo IDREF deve essere un NCName se sono abilitati gli spazi di nomi.
+-        IDREFSInvalid = Il valore di attributo \"{0}\" di tipo IDREFS deve corrispondere a uno o pi\u00F9 nomi.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Il testo di sostituzione dell''entit\u00E0 di parametro \"{0}\" deve includere dichiarazioni nidificate correttamente se il riferimento dell''entit\u00E0 \u00E8 utilizzato come dichiarazione completa.
+-        ImproperDeclarationNesting = Il testo di sostituzione dell''entit\u00E0 di parametro \"{0}\" deve includere dichiarazioni nidificate correttamente.
+-        ImproperGroupNesting = Il testo di sostituzione dell''entit\u00E0 di parametro \"{0}\" deve includere coppie di parentesi nidificate correttamente.
+-        INVALID_PE_IN_CONDITIONAL = Il testo di sostituzione dell''entit\u00E0 di parametro \"{0}\" deve includere tutta la sezione condizionale oppure solo INCLUDE o IGNORE.
+-        MSG_ATTRIBUTE_NOT_DECLARED = Dichiarare l''attributo \"{1}\" per il tipo di elemento \"{0}\".
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = L''attributo \"{0}\" con valore \"{1}\" deve avere un valore della lista \"{2}\".
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = Il valore \"{1}\" dell''attributo \"{0}\" non deve essere modificato dalla normalizzazione (in \"{2}\") in un documento standalone.
+-        MSG_CONTENT_INCOMPLETE = Il contenuto del tipo di elemento \"{0}\" \u00E8 incompleto. Deve corrispondere a \"{1}\".
+-        MSG_CONTENT_INVALID = Il contenuto del tipo di elemento \"{0}\" deve corrispondere a \"{1}\".
+-        MSG_CONTENT_INVALID_SPECIFIED = Il contenuto del tipo di elemento \"{0}\" deve corrispondere a \"{1}\". Non sono consentiti elementi figlio di tipo \"{2}\".
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = L''attributo \"{1}\" per il tipo di elemento \"{0}\" ha un valore predefinito e deve essere specificato in un documento standalone.
+-        MSG_DUPLICATE_ATTDEF = L''attributo \"{1}\" \u00E8 gi\u00E0 stato dichiarato per il tipo di elemento \"{0}\".
+-        MSG_ELEMENT_ALREADY_DECLARED = Il tipo di elemento \"{0}\" non deve essere dichiarato pi\u00F9 volte.
+-        MSG_ELEMENT_NOT_DECLARED = Il tipo di elemento \"{0}\" deve essere dichiarato.
++        DuplicateTypeInMixedContent = Il tipo di elemento "{1}" \u00E8 gi\u00E0 stato specificato nel modello di contenuto della dichiarazione di elemento "{0}".
++        ENTITIESInvalid = Il valore di attributo "{1}" di tipo ENTITIES deve corrispondere ai nomi di una o pi\u00F9 entit\u00E0 non analizzate.
++        ENTITYInvalid = Il valore di attributo "{1}" di tipo ENTITY deve corrispondere al nome di un''entit\u00E0 non analizzata.
++        IDDefaultTypeInvalid = Nell''attributo ID "{0}" deve essere dichiarato un valore predefinito "#IMPLIED" o "#REQUIRED".
++        IDInvalid = Il valore di attributo "{0}" di tipo ID deve essere un nome.
++        IDInvalidWithNamespaces = Il valore di attributo "{0}" di tipo ID deve essere un NCName se sono abilitati gli spazi di nomi.
++        IDNotUnique = Il valore di attributo "{0}" di tipo ID deve essere univoco all''interno del documento.
++        IDREFInvalid = Il valore di attributo "{0}" di tipo IDREF deve essere un nome.
++        IDREFInvalidWithNamespaces = Il valore di attributo "{0}" di tipo IDREF deve essere un NCName se sono abilitati gli spazi di nomi.
++        IDREFSInvalid = Il valore di attributo "{0}" di tipo IDREFS deve corrispondere a uno o pi\u00F9 nomi.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Il testo di sostituzione dell''entit\u00E0 di parametro "{0}" deve includere dichiarazioni nidificate correttamente se il riferimento dell''entit\u00E0 \u00E8 utilizzato come dichiarazione completa.
++        ImproperDeclarationNesting = Il testo di sostituzione dell''entit\u00E0 di parametro "{0}" deve includere dichiarazioni nidificate correttamente.
++        ImproperGroupNesting = Il testo di sostituzione dell''entit\u00E0 di parametro "{0}" deve includere coppie di parentesi nidificate correttamente.
++        INVALID_PE_IN_CONDITIONAL = Il testo di sostituzione dell''entit\u00E0 di parametro "{0}" deve includere tutta la sezione condizionale oppure solo INCLUDE o IGNORE.
++        MSG_ATTRIBUTE_NOT_DECLARED = Dichiarare l''attributo "{1}" per il tipo di elemento "{0}".
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = L''attributo "{0}" con valore "{1}" deve avere un valore della lista "{2}".
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = Il valore "{1}" dell''attributo "{0}" non deve essere modificato dalla normalizzazione (in "{2}") in un documento standalone.
++        MSG_CONTENT_INCOMPLETE = Il contenuto del tipo di elemento "{0}" \u00E8 incompleto. Deve corrispondere a "{1}".
++        MSG_CONTENT_INVALID = Il contenuto del tipo di elemento "{0}" deve corrispondere a "{1}".
++        MSG_CONTENT_INVALID_SPECIFIED = Il contenuto del tipo di elemento "{0}" deve corrispondere a "{1}". Non sono consentiti elementi figlio di tipo "{2}".
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = L''attributo "{1}" per il tipo di elemento "{0}" ha un valore predefinito e deve essere specificato in un documento standalone.
++        MSG_DUPLICATE_ATTDEF = L''attributo "{1}" \u00E8 gi\u00E0 stato dichiarato per il tipo di elemento "{0}".
++        MSG_ELEMENT_ALREADY_DECLARED = Il tipo di elemento "{0}" non deve essere dichiarato pi\u00F9 volte.
++        MSG_ELEMENT_NOT_DECLARED = Il tipo di elemento "{0}" deve essere dichiarato.
+         MSG_GRAMMAR_NOT_FOUND = Documento non valido: nessuna grammatica trovata.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = Un elemento con identificativo \"{0}\" deve esistere nel documento.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = Il riferimento all''entit\u00E0 esterna \"{0}\" non \u00E8 consentito in un documento standalone.
+-        MSG_FIXED_ATTVALUE_INVALID = L''attributo \"{1}\" con valore \"{2}\" deve avere un valore \"{3}\".
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Il tipo di elemento \"{0}\" ha gi\u00E0 un attributo \"{1}\" di tipo ID. Non \u00E8 consentito un secondo attributo \"{2}\" di tipo ID.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Il tipo di elemento \"{0}\" ha gi\u00E0 un attributo \"{1}\" di tipo NOTATION. Non \u00E8 consentito un secondo attributo \"{2}\" di tipo NOTATION.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = La notazione \"{1}\" deve essere dichiarata se vi viene fatto riferimento nella lista dei tipi di notazione per l''attributo \"{0}\".
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = La notazione \"{1}\" deve essere dichiarata se vi viene fatto riferimento dichiarazione di entit\u00E0 non analizzata per \"{0}\".
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = Il riferimento all''entit\u00E0 \"{0}\" dichiarata in un''entit\u00E0 esterna analizzata non \u00E8 consentito in un documento standalone.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = L''attributo \"{1}\" \u00E8 obbligatorio e deve essere specificato per il tipo di elemento \"{0}\".
++        MSG_ELEMENT_WITH_ID_REQUIRED = Un elemento con identificativo "{0}" deve esistere nel documento.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = Il riferimento all''entit\u00E0 esterna "{0}" non \u00E8 consentito in un documento standalone.
++        MSG_FIXED_ATTVALUE_INVALID = L''attributo "{1}" con valore "{2}" deve avere un valore "{3}".
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Il tipo di elemento "{0}" ha gi\u00E0 un attributo "{1}" di tipo ID. Non \u00E8 consentito un secondo attributo "{2}" di tipo ID.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Il tipo di elemento "{0}" ha gi\u00E0 un attributo "{1}" di tipo NOTATION. Non \u00E8 consentito un secondo attributo "{2}" di tipo NOTATION.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = La notazione "{1}" deve essere dichiarata se vi viene fatto riferimento nella lista dei tipi di notazione per l''attributo "{0}".
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = La notazione "{1}" deve essere dichiarata se vi viene fatto riferimento dichiarazione di entit\u00E0 non analizzata per "{0}".
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = Il riferimento all''entit\u00E0 "{0}" dichiarata in un''entit\u00E0 esterna analizzata non \u00E8 consentito in un documento standalone.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = L''attributo "{1}" \u00E8 obbligatorio e deve essere specificato per il tipo di elemento "{0}".
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = Non deve esistere nessuno spazio tra gli elementi dichiarati in un'entit\u00E0 esterna analizzata con il contenuto dell'elemento in un documento standalone.
+-        NMTOKENInvalid = Il valore di attributo \"{0}\" di tipo NMTOKEN deve essere un token di nome.
+-        NMTOKENSInvalid = Il valore di attributo \"{0}\" di tipo NMTOKENS deve corrispondere a uno o pi\u00F9 token di nomi.
+-        NoNotationOnEmptyElement = Il tipo di elemento \"{0}\" dichiarato come EMPTY non pu\u00F2 dichiarare l''attributo \"{1}\" di tipo NOTATION.
+-        RootElementTypeMustMatchDoctypedecl = L''elemento radice \"{1}\" del documento deve corrispondere alla radice DOCTYPE \"{0}\".
+-        UndeclaredElementInContentSpec = Il modello di contenuto dell''elemento \"{0}\" fa riferimento a un elemento \"{1}\" non dichiarato.
+-        UniqueNotationName = La dichiarazione per la notazione \"{0}\" non \u00E8 univoca. Un nome non deve essere dichiarato pi\u00F9 volte nella dichiarazione di una notazione.
++        NMTOKENInvalid = Il valore di attributo "{0}" di tipo NMTOKEN deve essere un token di nome.
++        NMTOKENSInvalid = Il valore di attributo "{0}" di tipo NMTOKENS deve corrispondere a uno o pi\u00F9 token di nomi.
++        NoNotationOnEmptyElement = Il tipo di elemento "{0}" dichiarato come EMPTY non pu\u00F2 dichiarare l''attributo "{1}" di tipo NOTATION.
++        RootElementTypeMustMatchDoctypedecl = L''elemento radice "{1}" del documento deve corrispondere alla radice DOCTYPE "{0}".
++        UndeclaredElementInContentSpec = Il modello di contenuto dell''elemento "{0}" fa riferimento a un elemento "{1}" non dichiarato.
++        UniqueNotationName = La dichiarazione per la notazione "{0}" non \u00E8 univoca. Un nome non deve essere dichiarato pi\u00F9 volte nella dichiarazione di una notazione.
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype Validator: errore. \u00C8 necessario richiamare il metodo di inizializzazione con un riferimento di grammatica valido. \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\" non analizzata.
+-        ENTITYNotValid = ENTITY \"{0}\" non valida.
++        ENTITYNotUnparsed = ENTITY "{0}" non analizzata.
++        ENTITYNotValid = ENTITY "{0}" non valida.
+         EmptyList = I valori di tipo ENTITIES, IDREFS e NMTOKENS non possono essere una lista vuota.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = Il riferimento di entit\u00E0 esterna \"&{0};\" non \u00E8 consentito in un valore di attributo.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = Il riferimento di entit\u00E0 esterna "&{0};" non \u00E8 consentito in un valore di attributo.
++        AccessExternalDTD = DTD esterna: lettura della DTD esterna ''{0}'' non riuscita. Accesso ''{1}'' non consentito a causa della limitazione definita dalla propriet\u00E0 accessExternalDTD.
++        AccessExternalEntity = Entit\u00E0 esterna: lettura del documento esterno ''{0}'' non riuscita. Accesso ''{1}'' non consentito a causa della limitazione definita dalla propriet\u00E0 accessExternalDTD.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = L''entit\u00E0 \"{0}\" \u00E8 indicata da un riferimento, ma non \u00E8 dichiarata.
+-        ReferenceToUnparsedEntity = Il riferimento di entit\u00E0 non analizzata \"&{0};\" non \u00E8 consentito.
+-        RecursiveReference = Riferimento di entit\u00E0 ricorsivo \"{0}\" (percorso riferimento: {1}).
+-        RecursiveGeneralReference = Riferimento di entit\u00E0 generale ricorsivo \"&{0};\" (percorso riferimento: {1}).
+-        RecursivePEReference = Riferimento di entit\u00E0 parametro ricorsivo \"%{0};\" (percorso riferimento: {1}).
++        EntityNotDeclared = L''entit\u00E0 "{0}" \u00E8 indicata da un riferimento, ma non \u00E8 dichiarata.
++        ReferenceToUnparsedEntity = Il riferimento di entit\u00E0 non analizzata "&{0};" non \u00E8 consentito.
++        RecursiveReference = Riferimento di entit\u00E0 ricorsivo "{0}" (percorso riferimento: {1}).
++        RecursiveGeneralReference = Riferimento di entit\u00E0 generale ricorsivo "&{0};" (percorso riferimento: {1}).
++        RecursivePEReference = Riferimento di entit\u00E0 parametro ricorsivo "%{0};" (percorso riferimento: {1}).
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = La codifica \"{0}\" non \u00E8 supportata.
++        EncodingNotSupported = La codifica "{0}" non \u00E8 supportata.
+         EncodingRequired = Un'entit\u00E0 analizzata non codificata in UTF-8 o UTF-16 deve contenere una dichiarazione di codifica.
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = L'elemento o l'attributo non corrisponde alla produzione del QName: QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = L''elemento \"{0}\" non pu\u00F2 avere \"xmlns\" come prefisso.
+-        ElementPrefixUnbound = Il prefisso \"{0}\" per l''elemento \"{1}\" non \u00E8 associato.
+-        AttributePrefixUnbound = Il prefisso \"{2}\" per l''attributo \"{1}\" associato a un tipo di elemento \"{0}\" non \u00E8 associato.
+-        EmptyPrefixedAttName = Il valore dell''attributo \"{0}\" non \u00E8 valido. Le associazioni di spazi di nomi con prefisso non possono essere vuote.
+-        PrefixDeclared = Il prefisso spazio di nomi \"{0}\" non \u00E8 stato dichiarato.
++        ElementXMLNSPrefix = L''elemento "{0}" non pu\u00F2 avere "xmlns" come prefisso.
++        ElementPrefixUnbound = Il prefisso "{0}" per l''elemento "{1}" non \u00E8 associato.
++        AttributePrefixUnbound = Il prefisso "{2}" per l''attributo "{1}" associato a un tipo di elemento "{0}" non \u00E8 associato.
++        EmptyPrefixedAttName = Il valore dell''attributo "{0}" non \u00E8 valido. Le associazioni di spazi di nomi con prefisso non possono essere vuote.
++        PrefixDeclared = Il prefisso spazio di nomi "{0}" non \u00E8 stato dichiarato.
+         CantBindXMLNS = Il prefisso "xmlns" non pu\u00F2 essere associato esplicitamente a uno spazio di nomi, n\u00E9 lo spazio di nomi per "xmlns" pu\u00F2 essere associato esplicitamente a un prefisso.
+         CantBindXML = Il prefisso "xml" non pu\u00F2 essere associato a uno spazio di nomi diverso da quello al quale appartiene, n\u00E9 lo spazio di nomi per "xml" pu\u00F2 essere associato a un prefisso diverso da "xml".
+-        MSG_ATT_DEFAULT_INVALID = defaultValue \"{1}\" dell''attributo \"{0}\" non valido per i vincoli lessicali di questo tipo di attributo.
++        MSG_ATT_DEFAULT_INVALID = defaultValue "{1}" dell''attributo "{0}" non valido per i vincoli lessicali di questo tipo di attributo.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=Il parser ha rilevato pi\u00F9 \"{0}\" espansioni di entit\u00E0 nel documento. Questo \u00E8 il limite imposto dall''applicazione.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: il parser ha rilevato pi\u00F9 "{0}" espansioni di entit\u00E0 nel documento. Questo \u00E8 il limite imposto dal kit JDK.
++        ElementAttributeLimit=JAXP00010002: l''elemento "{0}" contiene pi\u00F9 di "{1}" attributi. "{1}" \u00E8 il limite imposto dal kit JDK.
++        MaxEntitySizeLimit=JAXP00010003: la lunghezza dell''entit\u00E0 "{0}" \u00E8 "{1}". Tale valore supera il limite "{2}" definito da "{3}".
++        TotalEntitySizeLimit=JAXP00010004: le dimensioni accumulate "{0}" delle entit\u00E0 supera il limite "{1}" definito da "{2}".
++        MaxXMLNameLimit=JAXP00010005: il nome "{0}" supera il limite "{1}" definito da "{2}".
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= L''elemento \"{0}\" contiene pi\u00F9 di \"{1}\" attributi. \"{1}\" \u00E8 il limite imposto dall''applicazione.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,26 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +44,14 @@
+         InvalidCharInProlog = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30D7\u30ED\u30ED\u30FC\u30B0\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{0})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
+         InvalidCharInXMLDecl = XML\u5BA3\u8A00\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{0})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
+ # 2.4 Character Data and Markup
+-        CDEndInContent = \u6587\u5B57\u30B7\u30FC\u30B1\u30F3\u30B9\"]]>\"\u306F\u3001CDATA\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u7D42\u308F\u308A\u3092\u793A\u3059\u76EE\u7684\u4EE5\u5916\u3067\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u4F7F\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
++        CDEndInContent = \u6587\u5B57\u30B7\u30FC\u30B1\u30F3\u30B9"]]>"\u306F\u3001CDATA\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u7D42\u308F\u308A\u3092\u793A\u3059\u76EE\u7684\u4EE5\u5916\u3067\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u4F7F\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = CDATA\u30BB\u30AF\u30B7\u30E7\u30F3\u306F\"]]>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        CDSectUnterminated = CDATA\u30BB\u30AF\u30B7\u30E7\u30F3\u306F"]]>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = XML\u5BA3\u8A00\u306F\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u5148\u982D\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
+-        EqRequiredInXMLDecl = XML\u5BA3\u8A00\u3067\u306F\u3001\"{0}\"\u306E\u5F8C\u306B'' = ''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        QuoteRequiredInXMLDecl = XML\u5BA3\u8A00\u306E\"{0}\"\u306E\u5F8C\u306B\u7D9A\u304F\u5024\u306F\u3001\u5F15\u7528\u7B26\u3067\u56F2\u3093\u3060\u6587\u5B57\u5217\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        XMLDeclUnterminated = XML\u5BA3\u8A00\u306F\"?>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        EqRequiredInXMLDecl = XML\u5BA3\u8A00\u3067\u306F\u3001"{0}"\u306E\u5F8C\u306B'' = ''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
++        QuoteRequiredInXMLDecl = XML\u5BA3\u8A00\u306E"{0}"\u306E\u5F8C\u306B\u7D9A\u304F\u5024\u306F\u3001\u5F15\u7528\u7B26\u3067\u56F2\u3093\u3060\u6587\u5B57\u5217\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        XMLDeclUnterminated = XML\u5BA3\u8A00\u306F"?>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         VersionInfoRequired = XML\u5BA3\u8A00\u306B\u306F\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u5FC5\u8981\u3067\u3059\u3002
+         SpaceRequiredBeforeVersionInXMLDecl = XML\u5BA3\u8A00\u3067\u306F\u3001\u30D0\u30FC\u30B8\u30E7\u30F3\u7591\u4F3C\u5C5E\u6027\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         SpaceRequiredBeforeEncodingInXMLDecl = XML\u5BA3\u8A00\u3067\u306F\u3001\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u7591\u4F3C\u5C5E\u6027\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+@@ -71,70 +67,71 @@
+         ReferenceIllegalInTrailingMisc=\u5F8C\u7D9A\u30BB\u30AF\u30B7\u30E7\u30F3\u306B\u306F\u53C2\u7167\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = \u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5BA3\u8A00\u306E\u5024\u306F\u3001\"{0}\"\u3067\u306F\u306A\u304F\u3001\"yes\"\u307E\u305F\u306F\"no\"\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        SDDeclInvalid = \u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5BA3\u8A00\u306E\u5024\u306F\u3001"{0}"\u3067\u306F\u306A\u304F\u3001"yes"\u307E\u305F\u306F"no"\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        SDDeclNameInvalid = XML\u5BA3\u8A00\u306E\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u540D\u304C\u9593\u9055\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002
+ # 2.12 Language Identification
+-        XMLLangInvalid = xml:lang\u5C5E\u6027\u306E\u5024\"{0}\"\u306F\u7121\u52B9\u306A\u8A00\u8A9E\u8B58\u5225\u5B50\u3067\u3059\u3002
++        XMLLangInvalid = xml:lang\u5C5E\u6027\u306E\u5024"{0}"\u306F\u7121\u52B9\u306A\u8A00\u8A9E\u8B58\u5225\u5B50\u3067\u3059\u3002
+ # 3. Logical Structures
+-        ETagRequired = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306F\u3001\u5BFE\u5FDC\u3059\u308B\u7D42\u4E86\u30BF\u30B0\"</{0}>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ETagRequired = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306F\u3001\u5BFE\u5FDC\u3059\u308B\u7D42\u4E86\u30BF\u30B0"</{0}>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5F8C\u306B\u306F\u3001\u5C5E\u6027\u6307\u5B9A\">\"\u307E\u305F\u306F\"/>\"\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        EqRequiredInAttribute = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027\u540D\"{1}\"\u306E\u5F8C\u306B\u306F\u3001'' = ''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        OpenQuoteExpected = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027\"{1}\"\u306B\u306F\u3001\u958B\u59CB\u5F15\u7528\u7B26\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        CloseQuoteExpected = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027\"{1}\"\u306B\u306F\u3001\u7D42\u4E86\u5F15\u7528\u7B26\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        AttributeNotUnique = \u5C5E\u6027\"{1}\"\u306F\u8981\u7D20\"{0}\"\u306B\u5BFE\u3057\u3066\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+-        AttributeNSNotUnique = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\"{2}\"\u306B\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u305F\u5C5E\u6027\"{1}\"\u306F\u8981\u7D20\"{0}\"\u306B\u5BFE\u3057\u3066\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+-        ETagUnterminated = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u7D42\u4E86\u30BF\u30B0\u306F''>''\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ElementUnterminated = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5F8C\u306B\u306F\u3001\u5C5E\u6027\u6307\u5B9A">"\u307E\u305F\u306F"/>"\u304C\u5FC5\u8981\u3067\u3059\u3002
++        EqRequiredInAttribute = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027\u540D"{1}"\u306E\u5F8C\u306B\u306F\u3001'' = ''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
++        OpenQuoteExpected = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027"{1}"\u306B\u306F\u3001\u958B\u59CB\u5F15\u7528\u7B26\u304C\u5FC5\u8981\u3067\u3059\u3002
++        CloseQuoteExpected = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027"{1}"\u306B\u306F\u3001\u7D42\u4E86\u5F15\u7528\u7B26\u304C\u5FC5\u8981\u3067\u3059\u3002
++        AttributeNotUnique = \u5C5E\u6027"{1}"\u306F\u8981\u7D20"{0}"\u306B\u5BFE\u3057\u3066\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
++        AttributeNSNotUnique = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9"{2}"\u306B\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u305F\u5C5E\u6027"{1}"\u306F\u8981\u7D20"{0}"\u306B\u5BFE\u3057\u3066\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
++        ETagUnterminated = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u7D42\u4E86\u30BF\u30B0\u306F''>''\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         MarkupNotRecognizedInContent = \u8981\u7D20\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306F\u3001\u6574\u5F62\u5F0F\u306E\u6587\u5B57\u30C7\u30FC\u30BF\u307E\u305F\u306F\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u3067\u69CB\u6210\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         DoctypeIllegalInContent = \u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u306FDOCTYPE\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = \u53C2\u7167\u306F';'\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = \u53C2\u7167\u306F\u3001\u540C\u3058\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5185\u306B\u5B8C\u5168\u306B\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        ElementEntityMismatch = \u8981\u7D20\"{0}\"\u306F\u3001\u540C\u3058\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5185\u3067\u958B\u59CB\u304A\u3088\u3073\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ElementEntityMismatch = \u8981\u7D20"{0}"\u306F\u3001\u540C\u3058\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5185\u3067\u958B\u59CB\u304A\u3088\u3073\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         MarkupEntityMismatch=XML\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u69CB\u9020\u306F\u3001\u540C\u3058\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5185\u3067\u958B\u59CB\u304A\u3088\u3073\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = \u5C5E\u6027\"{1}\"\u306E\u5024\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{2})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002\u8981\u7D20\u306F\"{0}\"\u3067\u3059\u3002
++        InvalidCharInAttValue = \u5C5E\u6027"{1}"\u306E\u5024\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{2})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002\u8981\u7D20\u306F"{0}"\u3067\u3059\u3002
+         InvalidCharInComment = \u30B3\u30E1\u30F3\u30C8\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{0})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
+         InvalidCharInPI = \u51E6\u7406\u547D\u4EE4\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{0})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
+         InvalidCharInInternalSubset = DTD\u306E\u5185\u90E8\u30B5\u30D6\u30BB\u30C3\u30C8\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{0})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
+         InvalidCharInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306B\u7121\u52B9\u306AXML\u6587\u5B57(Unicode: 0x{0})\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = \u5C5E\u6027\"{1}\"\u306E\u5024\u306E\u5148\u982D\u306B\u306F\u3001\u4E00\u91CD\u5F15\u7528\u7B26\u6587\u5B57\u307E\u305F\u306F\u4E8C\u91CD\u5F15\u7528\u7B26\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        LessthanInAttValue = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027\"{1}\"\u306E\u5024\u306B\u306F\u3001''<''\u6587\u5B57\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+-        AttributeValueUnterminated = \u5C5E\u6027\"{1}\"\u306E\u5024\u306F\u3001\u5BFE\u5FDC\u3059\u308B\u5F15\u7528\u7B26\u6587\u5B57\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        QuoteRequiredInAttValue = \u5C5E\u6027"{1}"\u306E\u5024\u306E\u5148\u982D\u306B\u306F\u3001\u4E00\u91CD\u5F15\u7528\u7B26\u6587\u5B57\u307E\u305F\u306F\u4E8C\u91CD\u5F15\u7528\u7B26\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
++        LessthanInAttValue = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027"{1}"\u306E\u5024\u306B\u306F\u3001''<''\u6587\u5B57\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
++        AttributeValueUnterminated = \u5C5E\u6027"{1}"\u306E\u5024\u306F\u3001\u5BFE\u5FDC\u3059\u308B\u5F15\u7528\u7B26\u6587\u5B57\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 2.5 Comments
+-        InvalidCommentStart = \u30B3\u30E1\u30F3\u30C8\u306E\u5148\u982D\u306B\u306F\"<!--\"\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        DashDashInComment = \u30B3\u30E1\u30F3\u30C8\u5185\u3067\u306F\u6587\u5B57\u5217\"--\"\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+-        CommentUnterminated = \u30B3\u30E1\u30F3\u30C8\u306F\"-->\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        InvalidCommentStart = \u30B3\u30E1\u30F3\u30C8\u306E\u5148\u982D\u306B\u306F"<!--"\u304C\u5FC5\u8981\u3067\u3059\u3002
++        DashDashInComment = \u30B3\u30E1\u30F3\u30C8\u5185\u3067\u306F\u6587\u5B57\u5217"--"\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
++        CommentUnterminated = \u30B3\u30E1\u30F3\u30C8\u306F"-->"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         COMMENT_NOT_IN_ONE_ENTITY = \u30B3\u30E1\u30F3\u30C8\u304C\u540C\u3058\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u56F2\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+ # 2.6 Processing Instructions
+         PITargetRequired = \u51E6\u7406\u547D\u4EE4\u306E\u5148\u982D\u306B\u306F\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u540D\u524D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         SpaceRequiredInPI = \u51E6\u7406\u547D\u4EE4\u30BF\u30FC\u30B2\u30C3\u30C8\u3068\u30C7\u30FC\u30BF\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        PIUnterminated = \u51E6\u7406\u547D\u4EE4\u306F\"?>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        ReservedPITarget = \"[xX][mM][lL]\"\u3068\u4E00\u81F4\u3059\u308B\u51E6\u7406\u547D\u4EE4\u30BF\u30FC\u30B2\u30C3\u30C8\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        PIUnterminated = \u51E6\u7406\u547D\u4EE4\u306F"?>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ReservedPITarget = "[xX][mM][lL]"\u3068\u4E00\u81F4\u3059\u308B\u51E6\u7406\u547D\u4EE4\u30BF\u30FC\u30B2\u30C3\u30C8\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+         PI_NOT_IN_ONE_ENTITY = \u51E6\u7406\u547D\u4EE4\u304C\u540C\u3058\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u56F2\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = \u30D0\u30FC\u30B8\u30E7\u30F3\"{0}\"\u306F\u7121\u52B9\u3067\u3059\u3002
+-        VersionNotSupported = XML\u30D0\u30FC\u30B8\u30E7\u30F3\"{0}\"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u306E\u306FXML 1.0\u306E\u307F\u3067\u3059\u3002
+-        VersionNotSupported11 = XML\u30D0\u30FC\u30B8\u30E7\u30F3\"{0}\"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u306E\u306FXML 1.0\u304A\u3088\u3073XML 1.1\u306E\u307F\u3067\u3059\u3002
++        VersionInfoInvalid = \u30D0\u30FC\u30B8\u30E7\u30F3"{0}"\u306F\u7121\u52B9\u3067\u3059\u3002
++        VersionNotSupported = XML\u30D0\u30FC\u30B8\u30E7\u30F3"{0}"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u306E\u306FXML 1.0\u306E\u307F\u3067\u3059\u3002
++        VersionNotSupported11 = XML\u30D0\u30FC\u30B8\u30E7\u30F3"{0}"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u306E\u306FXML 1.0\u304A\u3088\u3073XML 1.1\u306E\u307F\u3067\u3059\u3002
+         VersionMismatch= \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306B\u306F\u3001\u5F8C\u7D9A\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u5225\u306E\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = \u6587\u5B57\u53C2\u7167\u3067\u306F\u300110\u9032\u8868\u73FE\u306F\"&#\"\u306E\u76F4\u5F8C\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        HexdigitRequiredInCharRef = \u6587\u5B57\u53C2\u7167\u3067\u306F\u300116\u9032\u8868\u73FE\u306F\"&#x\"\u306E\u76F4\u5F8C\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        DigitRequiredInCharRef = \u6587\u5B57\u53C2\u7167\u3067\u306F\u300110\u9032\u8868\u73FE\u306F"&#"\u306E\u76F4\u5F8C\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        HexdigitRequiredInCharRef = \u6587\u5B57\u53C2\u7167\u3067\u306F\u300116\u9032\u8868\u73FE\u306F"&#x"\u306E\u76F4\u5F8C\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         SemicolonRequiredInCharRef = \u6587\u5B57\u53C2\u7167\u306F';'\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        InvalidCharRef = \u6587\u5B57\u53C2\u7167\"&#{0}\"\u306F\u7121\u52B9\u306AXML\u6587\u5B57\u3067\u3059\u3002
++        InvalidCharRef = \u6587\u5B57\u53C2\u7167"&#{0}"\u306F\u7121\u52B9\u306AXML\u6587\u5B57\u3067\u3059\u3002
+         NameRequiredInReference = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u3067\u306F\u3001\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D\u306F'&'\u306E\u76F4\u5F8C\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        SemicolonRequiredInReference = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u3078\u306E\u53C2\u7167\u306F'';''\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        SemicolonRequiredInReference = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u3078\u306E\u53C2\u7167\u306F'';''\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306F\u3001\u5916\u90E8\u306E\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u5148\u982D\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
+-        EqRequiredInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001\"{0}\"\u306E\u5F8C\u306B'' = ''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        QuoteRequiredInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306E\"{0}\"\u306E\u5F8C\u306B\u7D9A\u304F\u5024\u306F\u3001\u5F15\u7528\u7B26\u3067\u56F2\u3093\u3060\u6587\u5B57\u5217\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        CloseQuoteMissingInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306E\"{0}\"\u306E\u5F8C\u306B\u7D9A\u304F\u5024\u306B\u7D42\u4E86\u5F15\u7528\u7B26\u304C\u3042\u308A\u307E\u305B\u3093\u3002
++        EqRequiredInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001"{0}"\u306E\u5F8C\u306B'' = ''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
++        QuoteRequiredInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306E"{0}"\u306E\u5F8C\u306B\u7D9A\u304F\u5024\u306F\u3001\u5F15\u7528\u7B26\u3067\u56F2\u3093\u3060\u6587\u5B57\u5217\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        CloseQuoteMissingInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306E"{0}"\u306E\u5F8C\u306B\u7D9A\u304F\u5024\u306B\u7D42\u4E86\u5F15\u7528\u7B26\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+         SpaceRequiredBeforeVersionInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001\u30D0\u30FC\u30B8\u30E7\u30F3\u7591\u4F3C\u5C5E\u6027\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         SpaceRequiredBeforeEncodingInTextDecl = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u7591\u4F3C\u5C5E\u6027\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        TextDeclUnterminated = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306F\"?>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        TextDeclUnterminated = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306F"?>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         EncodingDeclRequired = \u30C6\u30AD\u30B9\u30C8\u5BA3\u8A00\u306B\u306F\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059\u3002
+         NoMorePseudoAttributes = \u3053\u308C\u4EE5\u4E0A\u306E\u7591\u4F3C\u5C5E\u6027\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
+         MorePseudoAttributes = \u7591\u4F3C\u5C5E\u6027\u304C\u3055\u3089\u306B\u5FC5\u8981\u3067\u3059\u3002
+@@ -143,13 +140,13 @@
+         CommentNotInOneEntity = \u30B3\u30E1\u30F3\u30C8\u306F\u3001\u540C\u3058\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5185\u306B\u5B8C\u5168\u306B\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         PINotInOneEntity = \u51E6\u7406\u547D\u4EE4\u306F\u3001\u540C\u3058\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5185\u306B\u5B8C\u5168\u306B\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u540D\"{0}\"\u304C\u7121\u52B9\u3067\u3059\u3002
+-        EncodingByteOrderUnsupported = \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\"{0}\"\u306B\u6307\u5B9A\u3055\u308C\u305F\u30D0\u30A4\u30C8\u9806\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        EncodingDeclInvalid = \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u540D"{0}"\u304C\u7121\u52B9\u3067\u3059\u3002
++        EncodingByteOrderUnsupported = \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0"{0}"\u306B\u6307\u5B9A\u3055\u308C\u305F\u30D0\u30A4\u30C8\u9806\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+         InvalidByte = {1}\u30D0\u30A4\u30C8\u306EUTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u30D0\u30A4\u30C8{0}\u304C\u7121\u52B9\u3067\u3059\u3002
+         ExpectedByte = {1}\u30D0\u30A4\u30C8\u306EUTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u30D0\u30A4\u30C8{0}\u304C\u5FC5\u8981\u3067\u3059\u3002  
+         InvalidHighSurrogate = UTF-8\u30B7\u30FC\u30B1\u30F3\u30B9\u306E\u4E0A\u4F4D\u30B5\u30ED\u30B2\u30FC\u30C8\u30FB\u30D3\u30C3\u30C8\u306E\u4E0A\u9650\u306F0x10\u3067\u3059\u304C\u30010x{0}\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002
+-        OperationNotSupported = \u64CD\u4F5C\"{0}\"\u306F{1}\u30EA\u30FC\u30C0\u30FC\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        InvalidASCII = \u30D0\u30A4\u30C8\"{0}\"\u306F\u3001(7\u30D3\u30C3\u30C8) ASCII\u30AD\u30E3\u30E9\u30AF\u30BF\u30FB\u30BB\u30C3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
++        OperationNotSupported = \u64CD\u4F5C"{0}"\u306F{1}\u30EA\u30FC\u30C0\u30FC\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        InvalidASCII = \u30D0\u30A4\u30C8"{0}"\u306F\u3001(7\u30D3\u30C3\u30C8) ASCII\u30AD\u30E3\u30E9\u30AF\u30BF\u30FB\u30BB\u30C3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+         CharConversionFailure = \u7279\u5B9A\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u3042\u308B\u3068\u78BA\u5B9A\u3055\u308C\u305F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306B\u306F\u3001\u305D\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u4E0D\u6B63\u306A\u30B7\u30FC\u30B1\u30F3\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+         
+ # DTD Messages
+@@ -169,150 +166,150 @@
+         PubidCharIllegal = \u516C\u958B\u8B58\u5225\u5B50\u3067\u306F\u3001\u6587\u5B57(Unicode: 0x{0})\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+         SpaceRequiredBetweenPublicAndSystem = \u516C\u958B\u8B58\u5225\u5B50\u3068\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\"<!DOCTYPE\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\"<!DOCTYPE\"\u306E\u5F8C\u306B\u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        DoctypedeclUnterminated = \u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        PEReferenceWithinMarkup = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"%{0};\"\u306F\u3001DTD\u306E\u5185\u90E8\u30B5\u30D6\u30BB\u30C3\u30C8\u306E\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u5185\u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001"<!DOCTYPE"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001"<!DOCTYPE"\u306E\u5F8C\u306B\u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
++        DoctypedeclUnterminated = \u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        PEReferenceWithinMarkup = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"%{0};"\u306F\u3001DTD\u306E\u5185\u90E8\u30B5\u30D6\u30BB\u30C3\u30C8\u306E\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u5185\u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u306B\u542B\u307E\u308C\u308B\u304B\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u304C\u6307\u3057\u3066\u3044\u308B\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u5BA3\u8A00\u306F\u6574\u5F62\u5F0F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = \"xml:space\"\u306E\u5C5E\u6027\u5BA3\u8A00\u306F\u3001\"default\"\u304A\u3088\u3073\"preserve\"\u306E\u307F\u3092\u4F7F\u7528\u3067\u304D\u308B\u5217\u6319\u30BF\u30A4\u30D7\u3068\u3057\u3066\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = "xml:space"\u306E\u5C5E\u6027\u5BA3\u8A00\u306F\u3001"default"\u304A\u3088\u3073"preserve"\u306E\u307F\u3092\u4F7F\u7528\u3067\u304D\u308B\u5217\u6319\u30BF\u30A4\u30D7\u3068\u3057\u3066\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\"<!ELEMENT\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001"<!ELEMENT"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u306B\u306F\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5F8C\u306B\u5236\u7D04\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        ElementDeclUnterminated = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u8981\u7D20\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5F8C\u306B\u5236\u7D04\u304C\u5FC5\u8981\u3067\u3059\u3002
++        ElementDeclUnterminated = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5BA3\u8A00\u306B\u306F''(''\u6587\u5B57\u307E\u305F\u306F\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5BA3\u8A00\u306B\u306F'')''\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5BA3\u8A00\u306B\u306F''(''\u6587\u5B57\u307E\u305F\u306F\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5BA3\u8A00\u306B\u306F'')''\u304C\u5FC5\u8981\u3067\u3059\u3002
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5BA3\u8A00\u306B\u306F\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5BA3\u8A00\u306B\u306F'')''\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MixedContentUnterminated = \u5B50\u8981\u7D20\u306E\u30BF\u30A4\u30D7\u304C\u5236\u7D04\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u6DF7\u5408\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30E2\u30C7\u30EB\"{0}\"\u306F\")*\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5BA3\u8A00\u306B\u306F\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5BA3\u8A00\u306B\u306F'')''\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MixedContentUnterminated = \u5B50\u8981\u7D20\u306E\u30BF\u30A4\u30D7\u304C\u5236\u7D04\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u6DF7\u5408\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30E2\u30C7\u30EB"{0}"\u306F")*"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001\"<!ATTLIST\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001"<!ATTLIST"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = \u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u306B\u306F\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001\u5C5E\u6027\u540D\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        AttNameRequiredInAttDef = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u306B\u306F\u5C5E\u6027\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\"{1}\"\u306E\u5BA3\u8A00\u3067\u306F\u3001\u5C5E\u6027\u30BF\u30A4\u30D7\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        AttTypeRequiredInAttDef = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\"{1}\"\u306E\u5BA3\u8A00\u306B\u306F\u5C5E\u6027\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\"{1}\"\u306E\u5BA3\u8A00\u3067\u306F\u3001\u5C5E\u6027\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \u7279\u5B9A\u306E\u8981\u7D20\"{0}\"\u306E\u540C\u4E00\u5C5E\u6027\"{1}\"\u306B\u8907\u6570\u306E\u5C5E\u6027\u5B9A\u7FA9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u8981\u7D20"{0}"\u306E\u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u3067\u306F\u3001\u5C5E\u6027\u540D\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        AttNameRequiredInAttDef = \u8981\u7D20"{0}"\u306E\u5C5E\u6027\u30EA\u30B9\u30C8\u5BA3\u8A00\u306B\u306F\u5C5E\u6027\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u8981\u7D20"{0}"\u306E\u5C5E\u6027"{1}"\u306E\u5BA3\u8A00\u3067\u306F\u3001\u5C5E\u6027\u30BF\u30A4\u30D7\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        AttTypeRequiredInAttDef = \u8981\u7D20"{0}"\u306E\u5C5E\u6027"{1}"\u306E\u5BA3\u8A00\u306B\u306F\u5C5E\u6027\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u8981\u7D20"{0}"\u306E\u5C5E\u6027"{1}"\u306E\u5BA3\u8A00\u3067\u306F\u3001\u5C5E\u6027\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \u7279\u5B9A\u306E\u8981\u7D20"{0}"\u306E\u540C\u4E00\u5C5E\u6027"{1}"\u306B\u8907\u6570\u306E\u5C5E\u6027\u5B9A\u7FA9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u3067\u306F\u3001\"NOTATION\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u3067\u306F\u3001\"NOTATION\"\u306E\u5F8C\u306B''(''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u306E\u8868\u8A18\u6CD5\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306B\u306F\u8868\u8A18\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        NotationTypeUnterminated = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u306E\u8868\u8A18\u6CD5\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306F'')''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u306E\u5217\u6319\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306B\u306F\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        EnumerationUnterminated = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u306E\u5217\u6319\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306F'')''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\"{2}\"\u306E\u5BA3\u8A00\u3067\u5217\u6319\u5024\"{1}\"\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5358\u4E00\u306EEnumeration\u5C5E\u6027\u5BA3\u8A00\u306B\u304A\u3051\u308BNMTOKENS\u306F\u3059\u3079\u3066\u7570\u306A\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \u8981\u7D20\"{0}\"\u306E\u5C5E\u6027\"{2}\"\u306E\u5BA3\u8A00\u3067\u5217\u6319\u5024\"{1}\"\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5358\u4E00\u306ENotationType\u5C5E\u6027\u5BA3\u8A00\u306B\u304A\u3051\u308BNOTATION\u306E\u540D\u524D\u306F\u3059\u3079\u3066\u7570\u306A\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = "{1}"\u5C5E\u6027\u5BA3\u8A00\u3067\u306F\u3001"NOTATION"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = "{1}"\u5C5E\u6027\u5BA3\u8A00\u3067\u306F\u3001"NOTATION"\u306E\u5F8C\u306B''(''\u6587\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = "{1}"\u5C5E\u6027\u5BA3\u8A00\u306E\u8868\u8A18\u6CD5\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306B\u306F\u8868\u8A18\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        NotationTypeUnterminated = "{1}"\u5C5E\u6027\u5BA3\u8A00\u306E\u8868\u8A18\u6CD5\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306F'')''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = "{1}"\u5C5E\u6027\u5BA3\u8A00\u306E\u5217\u6319\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306B\u306F\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059\u3002
++        EnumerationUnterminated = "{1}"\u5C5E\u6027\u5BA3\u8A00\u306E\u5217\u6319\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u306F'')''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \u8981\u7D20"{0}"\u306E\u5C5E\u6027"{2}"\u306E\u5BA3\u8A00\u3067\u5217\u6319\u5024"{1}"\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5358\u4E00\u306EEnumeration\u5C5E\u6027\u5BA3\u8A00\u306B\u304A\u3051\u308BNMTOKENS\u306F\u3059\u3079\u3066\u7570\u306A\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \u8981\u7D20"{0}"\u306E\u5C5E\u6027"{2}"\u306E\u5BA3\u8A00\u3067\u5217\u6319\u5024"{1}"\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5358\u4E00\u306ENotationType\u5C5E\u6027\u5BA3\u8A00\u306B\u304A\u3051\u308BNOTATION\u306E\u540D\u524D\u306F\u3059\u3079\u3066\u7570\u306A\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = \"{1}\"\u5C5E\u6027\u5BA3\u8A00\u3067\u306F\u3001\"FIXED\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = "{1}"\u5C5E\u6027\u5BA3\u8A00\u3067\u306F\u3001"FIXED"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = \u5305\u542B\u6761\u4EF6\u4ED8\u304D\u30BB\u30AF\u30B7\u30E7\u30F3\u306F\"]]>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IgnoreSectUnterminated = \u9664\u5916\u6761\u4EF6\u4ED8\u304D\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u6700\u5F8C\u306F\"]]>\"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IncludeSectUnterminated = \u5305\u542B\u6761\u4EF6\u4ED8\u304D\u30BB\u30AF\u30B7\u30E7\u30F3\u306F"]]>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IgnoreSectUnterminated = \u9664\u5916\u6761\u4EF6\u4ED8\u304D\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u6700\u5F8C\u306F"]]>"\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u3067\u306F\u3001\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D\u306F'%'\u306E\u76F4\u5F8C\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        SemicolonRequiredInPEReference = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"%{0};\"\u306F'';''\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        SemicolonRequiredInPEReference = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"%{0};"\u306F'';''\u30C7\u30EA\u30DF\u30BF\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001\"<!ENTITY\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001\"<!ENTITY\"\u3068'%'\u6587\u5B57\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001"<!ENTITY"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001"<!ENTITY"\u3068'%'\u6587\u5B57\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001'%'\u3068\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u306B\u306F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u540D\u524D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D\"{0}\"\u3068\u5B9A\u7FA9\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u5BA3\u8A00\u3067\u306F\u3001\"NDATA\"\u3068\u8868\u8A18\u540D\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u5BA3\u8A00\u3067\u306F\u3001\"NDATA\"\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u5BA3\u8A00\u3067\u306F\u3001\"NDATA\"\u306E\u5F8C\u306B\u8868\u8A18\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        EntityDeclUnterminated = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-	MSG_DUPLICATE_ENTITY_DEFINITION = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u304C\u8907\u6570\u56DE\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u306F\u3001\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u540D"{0}"\u3068\u5B9A\u7FA9\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u5BA3\u8A00\u3067\u306F\u3001"NDATA"\u3068\u8868\u8A18\u540D\u306E\u9593\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u5BA3\u8A00\u3067\u306F\u3001"NDATA"\u306E\u524D\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u5BA3\u8A00\u3067\u306F\u3001"NDATA"\u306E\u5F8C\u306B\u8868\u8A18\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        EntityDeclUnterminated = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++	MSG_DUPLICATE_ENTITY_DEFINITION = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u304C\u8907\u6570\u56DE\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u306E\u5148\u982D\u306B\u306F\"SYSTEM\"\u307E\u305F\u306F\"PUBLIC\"\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \"PUBLIC\"\u3068\u516C\u958B\u8B58\u5225\u5B50\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        ExternalIDRequired = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u306E\u5148\u982D\u306B\u306F"SYSTEM"\u307E\u305F\u306F"PUBLIC"\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = "PUBLIC"\u3068\u516C\u958B\u8B58\u5225\u5B50\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = \u516C\u958B\u8B58\u5225\u5B50\u3068\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \"SYSTEM\"\u3068\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = \u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u8B58\u5225\u5B50\u306F\u3001\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\"{0}\"\u306E\u4E00\u90E8\u3068\u3057\u3066\u6307\u5B9A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = "SYSTEM"\u3068\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\u306E\u9593\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_URI_FRAGMENT_IN_SYSTEMID = \u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u8B58\u5225\u5B50\u306F\u3001\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50"{0}"\u306E\u4E00\u90E8\u3068\u3057\u3066\u6307\u5B9A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u8868\u8A18\u6CD5\u5BA3\u8A00\u3067\u306F\u3001\"<!NOTATION\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u8868\u8A18\u6CD5\u5BA3\u8A00\u3067\u306F\u3001"<!NOTATION"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = \u8868\u8A18\u6CD5\u5BA3\u8A00\u306B\u306F\u8868\u8A18\u306E\u540D\u524D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u8868\u8A18\u6CD5\u5BA3\u8A00\u3067\u306F\u3001\u8868\u8A18\u540D\"{0}\"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        ExternalIDorPublicIDRequired = \u8868\u8A18\u6CD5\"{0}\"\u306E\u5BA3\u8A00\u306B\u306F\u3001\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\u307E\u305F\u306F\u516C\u958B\u8B58\u5225\u5B50\u3092\u542B\u3081\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        NotationDeclUnterminated = \u8868\u8A18\u6CD5\"{0}\"\u306E\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u8868\u8A18\u6CD5\u5BA3\u8A00\u3067\u306F\u3001\u8868\u8A18\u540D"{0}"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
++        ExternalIDorPublicIDRequired = \u8868\u8A18\u6CD5"{0}"\u306E\u5BA3\u8A00\u306B\u306F\u3001\u30B7\u30B9\u30C6\u30E0\u8B58\u5225\u5B50\u307E\u305F\u306F\u516C\u958B\u8B58\u5225\u5B50\u3092\u542B\u3081\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        NotationDeclUnterminated = \u8868\u8A18\u6CD5"{0}"\u306E\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = \u8981\u7D20\u30BF\u30A4\u30D7\"{1}\"\u306F\u3001\u8981\u7D20\u5BA3\u8A00\"{0}\"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30E2\u30C7\u30EB\u3067\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+-        ENTITIESInvalid = \u30BF\u30A4\u30D7ENTITIES\u306E\u5C5E\u6027\u5024\"{1}\"\u306F\u30011\u3064\u4EE5\u4E0A\u306E\u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        ENTITYInvalid = \u30BF\u30A4\u30D7ENTITY\u306E\u5C5E\u6027\u5024\"{1}\"\u306F\u3001\u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDDefaultTypeInvalid = ID\u5C5E\u6027\"{0}\"\u306B\u306F\u3001\"#IMPLIED\"\u307E\u305F\u306F\"#REQUIRED\"\u306E\u5BA3\u8A00\u6E08\u30C7\u30D5\u30A9\u30EB\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDInvalid = \u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\u5024\"{0}\"\u306F\u3001\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDInvalidWithNamespaces = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\u5024\"{0}\"\u306FNCName\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDNotUnique = \u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\u5024\"{0}\"\u306F\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u3067\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDREFInvalid = \u30BF\u30A4\u30D7IDREF\u306E\u5C5E\u6027\u5024\"{0}\"\u306F\u3001\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDREFInvalidWithNamespaces = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u30BF\u30A4\u30D7IDREF\u306E\u5C5E\u6027\u5024\"{0}\"\u306FNCName\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        IDREFSInvalid = \u30BF\u30A4\u30D7IDREFS\u306E\u5C5E\u6027\u5024\"{0}\"\u306F\u30011\u3064\u4EE5\u4E0A\u306E\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u304C\u5B8C\u5168\u306A\u5BA3\u8A00\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u9069\u5207\u306B\u30CD\u30B9\u30C8\u3055\u308C\u305F\u5BA3\u8A00\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        ImproperDeclarationNesting = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u9069\u5207\u306B\u30CD\u30B9\u30C8\u3055\u308C\u305F\u5BA3\u8A00\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        ImproperGroupNesting = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u9069\u5207\u306B\u30CD\u30B9\u30C8\u3055\u308C\u305F\u4E38\u30AB\u30C3\u30B3\u306E\u30DA\u30A2\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        INVALID_PE_IN_CONDITIONAL = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u6761\u4EF6\u4ED8\u304D\u30BB\u30AF\u30B7\u30E7\u30F3\u5168\u4F53\u304B\u3001INCLUDE\u307E\u305F\u306FIGNORE\u306E\u307F\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_ATTRIBUTE_NOT_DECLARED = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u5BFE\u3057\u3066\u5C5E\u6027\"{1}\"\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \u5024\"{1}\"\u3092\u6301\u3064\u5C5E\u6027\"{0}\"\u306B\u306F\u3001\u30EA\u30B9\u30C8\"{2}\"\u304B\u3089\u306E\u5024\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \u5C5E\u6027\"{0}\"\u306E\u5024\"{1}\"\u306F\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u6B63\u898F\u5316\u306B\u3088\u3063\u3066(\"{2}\"\u306B)\u5909\u66F4\u3055\u308C\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_CONTENT_INCOMPLETE = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u4E0D\u5B8C\u5168\u3067\u3059\u3002\"{1}\"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_CONTENT_INVALID = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306F\"{1}\"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_CONTENT_INVALID_SPECIFIED = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306F\"{1}\"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7\"{2}\"\u306E\u5B50\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306E\u5C5E\u6027\"{1}\"\u306F\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u6301\u3061\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_DUPLICATE_ATTDEF = \u5C5E\u6027\"{1}\"\u306F\u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u5BFE\u3057\u3066\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+-        MSG_ELEMENT_ALREADY_DECLARED = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306F\u8907\u6570\u56DE\u5BA3\u8A00\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
+-        MSG_ELEMENT_NOT_DECLARED = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        DuplicateTypeInMixedContent = \u8981\u7D20\u30BF\u30A4\u30D7"{1}"\u306F\u3001\u8981\u7D20\u5BA3\u8A00"{0}"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30E2\u30C7\u30EB\u3067\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
++        ENTITIESInvalid = \u30BF\u30A4\u30D7ENTITIES\u306E\u5C5E\u6027\u5024"{1}"\u306F\u30011\u3064\u4EE5\u4E0A\u306E\u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ENTITYInvalid = \u30BF\u30A4\u30D7ENTITY\u306E\u5C5E\u6027\u5024"{1}"\u306F\u3001\u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDDefaultTypeInvalid = ID\u5C5E\u6027"{0}"\u306B\u306F\u3001"#IMPLIED"\u307E\u305F\u306F"#REQUIRED"\u306E\u5BA3\u8A00\u6E08\u30C7\u30D5\u30A9\u30EB\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDInvalid = \u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\u5024"{0}"\u306F\u3001\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDInvalidWithNamespaces = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\u5024"{0}"\u306FNCName\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDNotUnique = \u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\u5024"{0}"\u306F\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u3067\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDREFInvalid = \u30BF\u30A4\u30D7IDREF\u306E\u5C5E\u6027\u5024"{0}"\u306F\u3001\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDREFInvalidWithNamespaces = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u5834\u5408\u3001\u30BF\u30A4\u30D7IDREF\u306E\u5C5E\u6027\u5024"{0}"\u306FNCName\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        IDREFSInvalid = \u30BF\u30A4\u30D7IDREFS\u306E\u5C5E\u6027\u5024"{0}"\u306F\u30011\u3064\u4EE5\u4E0A\u306E\u540D\u524D\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u304C\u5B8C\u5168\u306A\u5BA3\u8A00\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u9069\u5207\u306B\u30CD\u30B9\u30C8\u3055\u308C\u305F\u5BA3\u8A00\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ImproperDeclarationNesting = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u9069\u5207\u306B\u30CD\u30B9\u30C8\u3055\u308C\u305F\u5BA3\u8A00\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        ImproperGroupNesting = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u9069\u5207\u306B\u30CD\u30B9\u30C8\u3055\u308C\u305F\u4E38\u30AB\u30C3\u30B3\u306E\u30DA\u30A2\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        INVALID_PE_IN_CONDITIONAL = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u7F6E\u63DB\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u3001\u6761\u4EF6\u4ED8\u304D\u30BB\u30AF\u30B7\u30E7\u30F3\u5168\u4F53\u304B\u3001INCLUDE\u307E\u305F\u306FIGNORE\u306E\u307F\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_ATTRIBUTE_NOT_DECLARED = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u5BFE\u3057\u3066\u5C5E\u6027"{1}"\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \u5024"{1}"\u3092\u6301\u3064\u5C5E\u6027"{0}"\u306B\u306F\u3001\u30EA\u30B9\u30C8"{2}"\u304B\u3089\u306E\u5024\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \u5C5E\u6027"{0}"\u306E\u5024"{1}"\u306F\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u6B63\u898F\u5316\u306B\u3088\u3063\u3066("{2}"\u306B)\u5909\u66F4\u3055\u308C\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_CONTENT_INCOMPLETE = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u4E0D\u5B8C\u5168\u3067\u3059\u3002"{1}"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_CONTENT_INVALID = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306F"{1}"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_CONTENT_INVALID_SPECIFIED = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306F"{1}"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7"{2}"\u306E\u5B50\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u5C5E\u6027"{1}"\u306F\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u6301\u3061\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_DUPLICATE_ATTDEF = \u5C5E\u6027"{1}"\u306F\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u5BFE\u3057\u3066\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002
++        MSG_ELEMENT_ALREADY_DECLARED = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306F\u8907\u6570\u56DE\u5BA3\u8A00\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
++        MSG_ELEMENT_NOT_DECLARED = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         MSG_GRAMMAR_NOT_FOUND = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304C\u7121\u52B9\u3067\u3059\u3002\u69CB\u6587\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+-        MSG_ELEMENT_WITH_ID_REQUIRED = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u306F\u8B58\u5225\u5B50\"{0}\"\u3092\u6301\u3064\u8981\u7D20\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u3078\u306E\u53C2\u7167\u306F\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        MSG_FIXED_ATTVALUE_INVALID = \u5024\"{2}\"\u3092\u6301\u3064\u5C5E\u6027\"{1}\"\u306B\u306F\u3001\"{3}\"\u306E\u5024\u304C\u5FC5\u8981\u3067\u3059\u3002
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u306F\u3001\u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\"{1}\"\u304C\u3059\u3067\u306B\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027\"{2}\"\u3092\u3082\u30461\u3064\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u306F\u3001\u30BF\u30A4\u30D7NOTATION\u306E\u5C5E\u6027\"{1}\"\u304C\u3059\u3067\u306B\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7NOTATION\u306E\u5C5E\u6027\"{2}\"\u3092\u3082\u30461\u3064\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \u5C5E\u6027\"{0}\"\u306E\u8868\u8A18\u6CD5\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u3067\u53C2\u7167\u3055\u308C\u308B\u5834\u5408\u3001\u8868\u8A18\u6CD5\"{1}\"\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = \"{0}\"\u306E\u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u53C2\u7167\u3055\u308C\u308B\u5834\u5408\u3001\u8868\u8A18\u6CD5\"{1}\"\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \u5916\u90E8\u306E\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u3078\u306E\u53C2\u7167\u306F\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \u5C5E\u6027\"{1}\"\u304C\u5FC5\u8981\u3067\u3059\u3002\u3053\u306E\u5C5E\u6027\u306F\u3001\u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u5BFE\u3057\u3066\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_ELEMENT_WITH_ID_REQUIRED = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u306F\u8B58\u5225\u5B50"{0}"\u3092\u6301\u3064\u8981\u7D20\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u3078\u306E\u53C2\u7167\u306F\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        MSG_FIXED_ATTVALUE_INVALID = \u5024"{2}"\u3092\u6301\u3064\u5C5E\u6027"{1}"\u306B\u306F\u3001"{3}"\u306E\u5024\u304C\u5FC5\u8981\u3067\u3059\u3002
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u306F\u3001\u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027"{1}"\u304C\u3059\u3067\u306B\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7ID\u306E\u5C5E\u6027"{2}"\u3092\u3082\u30461\u3064\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u306F\u3001\u30BF\u30A4\u30D7NOTATION\u306E\u5C5E\u6027"{1}"\u304C\u3059\u3067\u306B\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7NOTATION\u306E\u5C5E\u6027"{2}"\u3092\u3082\u30461\u3064\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \u5C5E\u6027"{0}"\u306E\u8868\u8A18\u6CD5\u30BF\u30A4\u30D7\u30FB\u30EA\u30B9\u30C8\u3067\u53C2\u7167\u3055\u308C\u308B\u5834\u5408\u3001\u8868\u8A18\u6CD5"{1}"\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = "{0}"\u306E\u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u5BA3\u8A00\u3067\u53C2\u7167\u3055\u308C\u308B\u5834\u5408\u3001\u8868\u8A18\u6CD5"{1}"\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \u5916\u90E8\u306E\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u3078\u306E\u53C2\u7167\u306F\u3001\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \u5C5E\u6027"{1}"\u304C\u5FC5\u8981\u3067\u3059\u3002\u3053\u306E\u5C5E\u6027\u306F\u3001\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u5BFE\u3057\u3066\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = \u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u3001\u8981\u7D20\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u6301\u3064\u5916\u90E8\u306E\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u3067\u5BA3\u8A00\u3055\u308C\u308B\u8981\u7D20\u9593\u306B\u7A7A\u767D\u306F\u4E0D\u8981\u3067\u3059\u3002
+-        NMTOKENInvalid = \u30BF\u30A4\u30D7NMTOKEN\u306E\u5C5E\u6027\u5024\"{0}\"\u306F\u3001\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        NMTOKENSInvalid = \u30BF\u30A4\u30D7NMTOKENS\u306E\u5C5E\u6027\u5024\"{0}\"\u306F\u30011\u3064\u4EE5\u4E0A\u306E\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        NoNotationOnEmptyElement = EMPTY\u3068\u5BA3\u8A00\u3055\u308C\u305F\u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u3067\u306F\u3001\u30BF\u30A4\u30D7NOTATION\u306E\u5C5E\u6027\"{1}\"\u3092\u5BA3\u8A00\u3067\u304D\u307E\u305B\u3093\u3002
+-        RootElementTypeMustMatchDoctypedecl = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30EB\u30FC\u30C8\u8981\u7D20\"{1}\"\u306FDOCTYPE\u30EB\u30FC\u30C8\"{0}\"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+-        UndeclaredElementInContentSpec = \u8981\u7D20\"{0}\"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30E2\u30C7\u30EB\u3067\u672A\u5BA3\u8A00\u306E\u8981\u7D20\"{1}\"\u304C\u53C2\u7167\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+-        UniqueNotationName = \u8868\u8A18\u6CD5\"{0}\"\u306E\u5BA3\u8A00\u304C\u4E00\u610F\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u540C\u3058\u540D\u524D\u3092\u8907\u6570\u306E\u8868\u8A18\u6CD5\u5BA3\u8A00\u3067\u5BA3\u8A00\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
++        NMTOKENInvalid = \u30BF\u30A4\u30D7NMTOKEN\u306E\u5C5E\u6027\u5024"{0}"\u306F\u3001\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        NMTOKENSInvalid = \u30BF\u30A4\u30D7NMTOKENS\u306E\u5C5E\u6027\u5024"{0}"\u306F\u30011\u3064\u4EE5\u4E0A\u306E\u540D\u524D\u30C8\u30FC\u30AF\u30F3\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        NoNotationOnEmptyElement = EMPTY\u3068\u5BA3\u8A00\u3055\u308C\u305F\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u3067\u306F\u3001\u30BF\u30A4\u30D7NOTATION\u306E\u5C5E\u6027"{1}"\u3092\u5BA3\u8A00\u3067\u304D\u307E\u305B\u3093\u3002
++        RootElementTypeMustMatchDoctypedecl = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30EB\u30FC\u30C8\u8981\u7D20"{1}"\u306FDOCTYPE\u30EB\u30FC\u30C8"{0}"\u3068\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
++        UndeclaredElementInContentSpec = \u8981\u7D20"{0}"\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30E2\u30C7\u30EB\u3067\u672A\u5BA3\u8A00\u306E\u8981\u7D20"{1}"\u304C\u53C2\u7167\u3055\u308C\u3066\u3044\u307E\u3059\u3002
++        UniqueNotationName = \u8868\u8A18\u6CD5"{0}"\u306E\u5BA3\u8A00\u304C\u4E00\u610F\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u540C\u3058\u540D\u524D\u3092\u8907\u6570\u306E\u8868\u8A18\u6CD5\u5BA3\u8A00\u3067\u5BA3\u8A00\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype\u30D0\u30EA\u30C7\u30FC\u30BF: \u6709\u52B9\u306A\u69CB\u6587\u53C2\u7167\u306B\u3088\u308B\u521D\u671F\u5316\u30E1\u30BD\u30C3\u30C9\u306E\u547C\u51FA\u3057\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002 \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\"\u306F\u672A\u89E3\u6790\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+-        ENTITYNotValid = ENTITY \"{0}\"\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
++        ENTITYNotUnparsed = ENTITY "{0}"\u306F\u672A\u89E3\u6790\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
++        ENTITYNotValid = ENTITY "{0}"\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+         EmptyList = \u30BF\u30A4\u30D7ENTITIES\u3001IDREFS\u304A\u3088\u3073NMTOKENS\u306E\u5024\u306F\u7A7A\u306E\u30EA\u30B9\u30C8\u306B\u3067\u304D\u307E\u305B\u3093\u3002
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"&{0};\"\u306F\u3001\u5C5E\u6027\u5024\u3067\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"&{0};"\u306F\u3001\u5C5E\u6027\u5024\u3067\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        AccessExternalDTD = \u5916\u90E8DTD: accessExternalDTD\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650\u306B\u3088\u308A''{1}''\u30A2\u30AF\u30BB\u30B9\u304C\u8A31\u53EF\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u5916\u90E8DTD ''{0}''\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002
++        AccessExternalEntity = \u5916\u90E8\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3: accessExternalDTD\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650\u306B\u3088\u308A''{1}''\u30A2\u30AF\u30BB\u30B9\u304C\u8A31\u53EF\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u5916\u90E8\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8''{0}''\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\"{0}\"\u304C\u53C2\u7167\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        ReferenceToUnparsedEntity = \u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"&{0};\"\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        RecursiveReference = \u518D\u5E30\u7684\u306A\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"{0}\"\u3067\u3059\u3002(\u53C2\u7167\u30D1\u30B9: {1})\u3001
+-        RecursiveGeneralReference = \u518D\u5E30\u7684\u306A\u4E00\u822C\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"&{0};\"\u3067\u3059\u3002(\u53C2\u7167\u30D1\u30B9: {1})\u3001
+-        RecursivePEReference = \u518D\u5E30\u7684\u306A\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\"%{0};\"\u3067\u3059\u3002(\u53C2\u7167\u30D1\u30B9: {1})\u3001
++        EntityNotDeclared = \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u304C\u53C2\u7167\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        ReferenceToUnparsedEntity = \u672A\u89E3\u6790\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"&{0};"\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        RecursiveReference = \u518D\u5E30\u7684\u306A\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"{0}"\u3067\u3059\u3002(\u53C2\u7167\u30D1\u30B9: {1})\u3001
++        RecursiveGeneralReference = \u518D\u5E30\u7684\u306A\u4E00\u822C\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"&{0};"\u3067\u3059\u3002(\u53C2\u7167\u30D1\u30B9: {1})\u3001
++        RecursivePEReference = \u518D\u5E30\u7684\u306A\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"%{0};"\u3067\u3059\u3002(\u53C2\u7167\u30D1\u30B9: {1})\u3001
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\"{0}\"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        EncodingNotSupported = \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0"{0}"\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+         EncodingRequired = \u30A8\u30F3\u30B3\u30FC\u30C9\u304CUTF-8\u3068UTF-16\u306E\u3044\u305A\u308C\u3067\u3082\u306A\u3044\u89E3\u6790\u6E08\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306B\u306F\u3001\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u5BA3\u8A00\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = \u8981\u7D20\u307E\u305F\u306F\u5C5E\u6027\u304CQName\u751F\u6210\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093: QName::=(NCName':')?NCName\u3002 
+-        ElementXMLNSPrefix = \u8981\u7D20\"{0}\"\u306E\u63A5\u982D\u8F9E\u3068\u3057\u3066\"xmlns\"\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
+-        ElementPrefixUnbound = \u8981\u7D20\"{1}\"\u306E\u63A5\u982D\u8F9E\"{0}\"\u304C\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        AttributePrefixUnbound = \u8981\u7D20\u30BF\u30A4\u30D7\"{0}\"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027\"{1}\"\u306E\u63A5\u982D\u8F9E\"{2}\"\u304C\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+-        EmptyPrefixedAttName = \u5C5E\u6027\"{0}\"\u306E\u5024\u304C\u7121\u52B9\u3067\u3059\u3002\u63A5\u982D\u8F9E\u306E\u4ED8\u3044\u305F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u30FB\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093\u3002
+-        PrefixDeclared = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306E\u63A5\u982D\u8F9E\"{0}\"\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        ElementXMLNSPrefix = \u8981\u7D20"{0}"\u306E\u63A5\u982D\u8F9E\u3068\u3057\u3066"xmlns"\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
++        ElementPrefixUnbound = \u8981\u7D20"{1}"\u306E\u63A5\u982D\u8F9E"{0}"\u304C\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        AttributePrefixUnbound = \u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B\u5C5E\u6027"{1}"\u306E\u63A5\u982D\u8F9E"{2}"\u304C\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
++        EmptyPrefixedAttName = \u5C5E\u6027"{0}"\u306E\u5024\u304C\u7121\u52B9\u3067\u3059\u3002\u63A5\u982D\u8F9E\u306E\u4ED8\u3044\u305F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u30FB\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093\u3002
++        PrefixDeclared = \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306E\u63A5\u982D\u8F9E"{0}"\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+         CantBindXMLNS = \u63A5\u982D\u8F9E"xmlns"\u306F\u3001\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u660E\u793A\u7684\u306B\u30D0\u30A4\u30F3\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u307E\u305F\u3001"xmlns"\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3082\u3001\u63A5\u982D\u8F9E\u306B\u660E\u793A\u7684\u306B\u30D0\u30A4\u30F3\u30C9\u3067\u304D\u307E\u305B\u3093\u3002
+         CantBindXML = \u63A5\u982D\u8F9E"xml"\u306F\u3001\u901A\u5E38\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u4EE5\u5916\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u30D0\u30A4\u30F3\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u307E\u305F\u3001"xml"\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3082\u3001"xml"\u4EE5\u5916\u306E\u63A5\u982D\u8F9E\u306B\u30D0\u30A4\u30F3\u30C9\u3067\u304D\u307E\u305B\u3093\u3002
+-        MSG_ATT_DEFAULT_INVALID = \u5C5E\u6027\"{0}\"\u306EdefaultValue \"{1}\"\u306F\u3001\u3053\u306E\u5C5E\u6027\u30BF\u30A4\u30D7\u306E\u5B57\u53E5\u5236\u7D04\u306B\u95A2\u3057\u3066\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
++        MSG_ATT_DEFAULT_INVALID = \u5C5E\u6027"{0}"\u306EdefaultValue "{1}"\u306F\u3001\u3053\u306E\u5C5E\u6027\u30BF\u30A4\u30D7\u306E\u5B57\u53E5\u5236\u7D04\u306B\u95A2\u3057\u3066\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +317,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=\u30D1\u30FC\u30B5\u30FC\u306B\u3088\u3063\u3066\u3001\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u3067\"{0}\"\u3092\u8D85\u3048\u308B\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u62E1\u5F35\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\u3053\u308C\u306F\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u3088\u308B\u5236\u9650\u3067\u3059\u3002
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: \u30D1\u30FC\u30B5\u30FC\u306B\u3088\u3063\u3066\u3001\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u3067"{0}"\u3092\u8D85\u3048\u308B\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u62E1\u5F35\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\u3053\u308C\u306F\u3001JDK\u306B\u3088\u308B\u5236\u9650\u3067\u3059\u3002
++        ElementAttributeLimit=JAXP00010002: \u8981\u7D20"{0}"\u306B"{1}"\u3092\u8D85\u3048\u308B\u5C5E\u6027\u304C\u5B58\u5728\u3057\u307E\u3059\u3002"{1}"\u306F\u3001JDK\u306B\u3088\u308B\u5236\u9650\u3067\u3059\u3002
++        MaxEntitySizeLimit=JAXP00010003: \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3"{0}"\u306E\u9577\u3055\u306F"{1}"\u3067\u3001"{3}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{2}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002
++        TotalEntitySizeLimit=JAXP00010004: \u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u7D2F\u7A4D\u30B5\u30A4\u30BA"{0}"\u306F\u3001"{2}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{1}"\u3092\u8D85\u3048\u307E\u3057\u305F\u3002
++        MaxXMLNameLimit=JAXP00010005: \u540D\u524D"{0}"\u306F\u3001"{2}"\u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5236\u9650"{1}"\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= \u8981\u7D20\"{0}\"\u306B\"{1}\"\u3092\u8D85\u3048\u308B\u5C5E\u6027\u304C\u5B58\u5728\u3057\u307E\u3059\u3002\"{1}\"\u306F\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u3088\u308B\u5236\u9650\u3067\u3059\u3002
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = \uBB38\uC11C\uC758 \uD504\uB864\uB85C\uADF8\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+         InvalidCharInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = \uBB38\uC790 \uC2DC\uD000\uC2A4 \"]]>\"\uB294 CDATA \uC139\uC158 \uB05D\uC744 \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uB294 \uACBD\uC6B0 \uCF58\uD150\uCE20\uC5D0 \uB098\uD0C0\uB098\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
++        CDEndInContent = \uBB38\uC790 \uC2DC\uD000\uC2A4 "]]>"\uB294 CDATA \uC139\uC158 \uB05D\uC744 \uD45C\uC2DC\uD558\uB294 \uB370 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uB294 \uACBD\uC6B0 \uCF58\uD150\uCE20\uC5D0 \uB098\uD0C0\uB098\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = CDATA \uC139\uC158\uC740 \"]]>\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        CDSectUnterminated = CDATA \uC139\uC158\uC740 "]]>"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = XML \uC120\uC5B8\uC740 \uBB38\uC11C \uB9E8 \uC55E\uC5D0\uB9CC \uB098\uD0C0\uB0A0 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+-        EqRequiredInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C\uB294 \"{0}\" \uB2E4\uC74C\uC5D0 '' = '' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        QuoteRequiredInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C \"{0}\" \uB2E4\uC74C\uC5D0 \uC624\uB294 \uAC12\uC740 \uB530\uC634\uD45C\uAC00 \uBD99\uC740 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        XMLDeclUnterminated = XML \uC120\uC5B8\uC740 \"?>\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        EqRequiredInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C\uB294 "{0}" \uB2E4\uC74C\uC5D0 '' = '' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        QuoteRequiredInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C "{0}" \uB2E4\uC74C\uC5D0 \uC624\uB294 \uAC12\uC740 \uB530\uC634\uD45C\uAC00 \uBD99\uC740 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        XMLDeclUnterminated = XML \uC120\uC5B8\uC740 "?>"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         VersionInfoRequired = XML \uC120\uC5B8\uC5D0\uB294 \uBC84\uC804\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         SpaceRequiredBeforeVersionInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C\uB294 \uBC84\uC804 \uC758\uC0AC \uC18D\uC131 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         SpaceRequiredBeforeEncodingInXMLDecl = XML \uC120\uC5B8\uC5D0\uC11C\uB294 \uC778\uCF54\uB529 \uC758\uC0AC \uC18D\uC131 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+@@ -71,70 +68,71 @@
+         ReferenceIllegalInTrailingMisc=\uD6C4\uD589 \uC139\uC158\uC5D0\uC11C\uB294 \uCC38\uC870\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = \uB3C5\uB9BD\uD615 \uBB38\uC11C \uC120\uC5B8 \uAC12\uC740 \"{0}\"\uC774(\uAC00) \uC544\uB2CC \"yes\" \uB610\uB294 \"no\"\uC5EC\uC57C \uD569\uB2C8\uB2E4.
++        SDDeclInvalid = \uB3C5\uB9BD\uD615 \uBB38\uC11C \uC120\uC5B8 \uAC12\uC740 "{0}"\uC774(\uAC00) \uC544\uB2CC "yes" \uB610\uB294 "no"\uC5EC\uC57C \uD569\uB2C8\uB2E4.
++        SDDeclNameInvalid = XML \uC120\uC5B8\uC758 \uB3C5\uB9BD\uD615 \uC774\uB984\uC758 \uCCA0\uC790\uAC00 \uC798\uBABB\uB418\uC5C8\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+ # 2.12 Language Identification
+-        XMLLangInvalid = xml:lang \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uBD80\uC801\uD569\uD55C \uC5B8\uC5B4 \uC2DD\uBCC4\uC790\uC785\uB2C8\uB2E4.
++        XMLLangInvalid = xml:lang \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uBD80\uC801\uD569\uD55C \uC5B8\uC5B4 \uC2DD\uBCC4\uC790\uC785\uB2C8\uB2E4.
+ # 3. Logical Structures
+-        ETagRequired = \uC694\uC18C \uC720\uD615 \"{0}\"\uC740(\uB294) \uC9DD\uC774 \uB9DE\uB294 \uC885\uB8CC \uD0DC\uADF8 \"</{0}>\"(\uC73C)\uB85C \uC885\uB8CC\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        ETagRequired = \uC694\uC18C \uC720\uD615 "{0}"\uC740(\uB294) \uC9DD\uC774 \uB9DE\uB294 \uC885\uB8CC \uD0DC\uADF8 "</{0}>"(\uC73C)\uB85C \uC885\uB8CC\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = \uC694\uC18C \uC720\uD615 \"{0}\" \uB2E4\uC74C\uC5D0\uB294 \uC18D\uC131 \uC0AC\uC591 \">\" \uB610\uB294 \"/>\"\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        EqRequiredInAttribute = \uC694\uC18C \uC720\uD615 \"{0}\"\uACFC(\uC640) \uC5F0\uAD00\uB41C \uC18D\uC131 \uC774\uB984 \"{1}\" \uB2E4\uC74C\uC5D0\uB294 '' = '' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        OpenQuoteExpected = \uC694\uC18C \uC720\uD615 \"{0}\"\uACFC(\uC640) \uC5F0\uAD00\uB41C \"{1}\" \uC18D\uC131\uC5D0\uB294 \uC5EC\uB294 \uB530\uC634\uD45C\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        CloseQuoteExpected = \uC694\uC18C \uC720\uD615 \"{0}\"\uACFC(\uC640) \uC5F0\uAD00\uB41C \"{1}\" \uC18D\uC131\uC5D0\uB294 \uB2EB\uB294 \uB530\uC634\uD45C\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        AttributeNotUnique = \"{1}\" \uC18D\uC131\uC774 \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD574 \uC774\uBBF8 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+-        AttributeNSNotUnique = \"{2}\" \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uBC14\uC778\uB4DC\uB41C \"{1}\" \uC18D\uC131\uC774 \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD574 \uC774\uBBF8 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+-        ETagUnterminated = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD55C \uC885\uB8CC \uD0DC\uADF8\uB294 ''>'' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        ElementUnterminated = \uC694\uC18C \uC720\uD615 "{0}" \uB2E4\uC74C\uC5D0\uB294 \uC18D\uC131 \uC0AC\uC591 ">" \uB610\uB294 "/>"\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        EqRequiredInAttribute = \uC694\uC18C \uC720\uD615 "{0}"\uACFC(\uC640) \uC5F0\uAD00\uB41C \uC18D\uC131 \uC774\uB984 "{1}" \uB2E4\uC74C\uC5D0\uB294 '' = '' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        OpenQuoteExpected = \uC694\uC18C \uC720\uD615 "{0}"\uACFC(\uC640) \uC5F0\uAD00\uB41C "{1}" \uC18D\uC131\uC5D0\uB294 \uC5EC\uB294 \uB530\uC634\uD45C\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
++        CloseQuoteExpected = \uC694\uC18C \uC720\uD615 "{0}"\uACFC(\uC640) \uC5F0\uAD00\uB41C "{1}" \uC18D\uC131\uC5D0\uB294 \uB2EB\uB294 \uB530\uC634\uD45C\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
++        AttributeNotUnique = "{1}" \uC18D\uC131\uC774 "{0}" \uC694\uC18C\uC5D0 \uB300\uD574 \uC774\uBBF8 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
++        AttributeNSNotUnique = "{2}" \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uBC14\uC778\uB4DC\uB41C "{1}" \uC18D\uC131\uC774 "{0}" \uC694\uC18C\uC5D0 \uB300\uD574 \uC774\uBBF8 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
++        ETagUnterminated = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C \uC885\uB8CC \uD0DC\uADF8\uB294 ''>'' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         MarkupNotRecognizedInContent = \uC694\uC18C \uCF58\uD150\uCE20\uB294 \uC62C\uBC14\uB978 \uD615\uC2DD\uC758 \uBB38\uC790 \uB370\uC774\uD130 \uB610\uB294 \uB9C8\uD06C\uC5C5\uC73C\uB85C \uAD6C\uC131\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+         DoctypeIllegalInContent = \uCF58\uD150\uCE20\uC5D0\uC11C\uB294 DOCTYPE\uC774 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = \uCC38\uC870\uB294 ';' \uAD6C\uBD84\uC790\uB85C \uC885\uB8CC\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = \uCC38\uC870\uB294 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0\uC5D0 \uC644\uC804\uD788 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        ElementEntityMismatch = \"{0}\" \uC694\uC18C\uB294 \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0\uC5D0\uC11C \uC2DC\uC791\uB418\uACE0 \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        ElementEntityMismatch = "{0}" \uC694\uC18C\uB294 \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0\uC5D0\uC11C \uC2DC\uC791\uB418\uACE0 \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         MarkupEntityMismatch=XML \uBB38\uC11C \uAD6C\uC870\uB294 \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0\uC5D0\uC11C \uC2DC\uC791\uB418\uACE0 \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = \"{1}\" \uC18D\uC131\uC758 \uAC12\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{2})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC73C\uBA70 \uC694\uC18C\uAC00 \"{0}\"\uC785\uB2C8\uB2E4.
++        InvalidCharInAttValue = "{1}" \uC18D\uC131\uC758 \uAC12\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{2})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC73C\uBA70 \uC694\uC18C\uAC00 "{0}"\uC785\uB2C8\uB2E4.
+         InvalidCharInComment = \uC8FC\uC11D\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+         InvalidCharInPI = \uCC98\uB9AC \uBA85\uB839\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+         InvalidCharInInternalSubset = DTD\uC758 \uB0B4\uBD80 \uBD80\uBD84 \uC9D1\uD569\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+         InvalidCharInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C \uBD80\uC801\uD569\uD55C XML \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = \"{1}\" \uC18D\uC131\uC758 \uAC12\uC740 \uC791\uC740 \uB530\uC634\uD45C \uB610\uB294 \uD070 \uB530\uC634\uD45C \uBB38\uC790\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        LessthanInAttValue = \uC694\uC18C \uC720\uD615 \"{0}\"\uACFC(\uC640) \uC5F0\uAD00\uB41C \"{1}\" \uC18D\uC131\uC758 \uAC12\uC5D0\uB294 ''<'' \uBB38\uC790\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+-        AttributeValueUnterminated = \"{1}\" \uC18D\uC131\uC758 \uAC12\uC740 \uC9DD\uC774 \uB9DE\uB294 \uB530\uC634\uD45C \uBB38\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        QuoteRequiredInAttValue = "{1}" \uC18D\uC131\uC758 \uAC12\uC740 \uC791\uC740 \uB530\uC634\uD45C \uB610\uB294 \uD070 \uB530\uC634\uD45C \uBB38\uC790\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
++        LessthanInAttValue = \uC694\uC18C \uC720\uD615 "{0}"\uACFC(\uC640) \uC5F0\uAD00\uB41C "{1}" \uC18D\uC131\uC758 \uAC12\uC5D0\uB294 ''<'' \uBB38\uC790\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
++        AttributeValueUnterminated = "{1}" \uC18D\uC131\uC758 \uAC12\uC740 \uC9DD\uC774 \uB9DE\uB294 \uB530\uC634\uD45C \uBB38\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 2.5 Comments
+-        InvalidCommentStart = \uC8FC\uC11D\uC740 \"<!--\"\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        DashDashInComment = \uC8FC\uC11D\uC5D0\uC11C\uB294 \"--\" \uBB38\uC790\uC5F4\uC774 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        CommentUnterminated = \uC8FC\uC11D\uC740 \"-->\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        InvalidCommentStart = \uC8FC\uC11D\uC740 "<!--"\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
++        DashDashInComment = \uC8FC\uC11D\uC5D0\uC11C\uB294 "--" \uBB38\uC790\uC5F4\uC774 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        CommentUnterminated = \uC8FC\uC11D\uC740 "-->"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         COMMENT_NOT_IN_ONE_ENTITY = \uC8FC\uC11D\uC774 \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0 \uC548\uC5D0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+ # 2.6 Processing Instructions
+         PITargetRequired = \uCC98\uB9AC \uBA85\uB839\uC740 \uB300\uC0C1 \uC774\uB984\uC73C\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
+         SpaceRequiredInPI = \uCC98\uB9AC \uBA85\uB839 \uB300\uC0C1\uACFC \uB370\uC774\uD130 \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        PIUnterminated = \uCC98\uB9AC \uBA85\uB839\uC740 \"?>\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        ReservedPITarget = \"[xX][mM][lL]\"\uACFC \uC77C\uCE58\uD558\uB294 \uCC98\uB9AC \uBA85\uB839 \uB300\uC0C1\uC740 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        PIUnterminated = \uCC98\uB9AC \uBA85\uB839\uC740 "?>"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        ReservedPITarget = "[xX][mM][lL]"\uACFC \uC77C\uCE58\uD558\uB294 \uCC98\uB9AC \uBA85\uB839 \uB300\uC0C1\uC740 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         PI_NOT_IN_ONE_ENTITY = \uCC98\uB9AC \uBA85\uB839\uC774 \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0 \uC548\uC5D0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = \"{0}\"\uC740(\uB294) \uBD80\uC801\uD569\uD55C \uBC84\uC804\uC785\uB2C8\uB2E4.
+-        VersionNotSupported = XML \uBC84\uC804 \"{0}\"\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. XML 1.0\uB9CC \uC9C0\uC6D0\uB429\uB2C8\uB2E4.
+-        VersionNotSupported11 = XML \uBC84\uC804 \"{0}\"\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. XML 1.0 \uBC0F XML 1.1\uB9CC \uC9C0\uC6D0\uB429\uB2C8\uB2E4.
++        VersionInfoInvalid = "{0}"\uC740(\uB294) \uBD80\uC801\uD569\uD55C \uBC84\uC804\uC785\uB2C8\uB2E4.
++        VersionNotSupported = XML \uBC84\uC804 "{0}"\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. XML 1.0\uB9CC \uC9C0\uC6D0\uB429\uB2C8\uB2E4.
++        VersionNotSupported11 = XML \uBC84\uC804 "{0}"\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. XML 1.0 \uBC0F XML 1.1\uB9CC \uC9C0\uC6D0\uB429\uB2C8\uB2E4.
+         VersionMismatch= \uD558\uB098\uC758 \uC5D4\uD2F0\uD2F0\uC5D0\uB294 \uC774\uD6C4 \uBC84\uC804\uC758 \uB2E4\uB978 \uC5D4\uD2F0\uD2F0\uAC00 \uD3EC\uD568\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = \uBB38\uC790 \uCC38\uC870\uC5D0\uC11C\uB294 \"&#\" \uBC14\uB85C \uB2E4\uC74C\uC5D0 \uC2ED\uC9C4\uC218 \uD45C\uD604\uC774 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        HexdigitRequiredInCharRef = \uBB38\uC790 \uCC38\uC870\uC5D0\uC11C\uB294 \"&#x\" \uBC14\uB85C \uB2E4\uC74C\uC5D0 16\uC9C4\uC218 \uD45C\uD604\uC774 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        DigitRequiredInCharRef = \uBB38\uC790 \uCC38\uC870\uC5D0\uC11C\uB294 "&#" \uBC14\uB85C \uB2E4\uC74C\uC5D0 \uC2ED\uC9C4\uC218 \uD45C\uD604\uC774 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        HexdigitRequiredInCharRef = \uBB38\uC790 \uCC38\uC870\uC5D0\uC11C\uB294 "&#x" \uBC14\uB85C \uB2E4\uC74C\uC5D0 16\uC9C4\uC218 \uD45C\uD604\uC774 \uC640\uC57C \uD569\uB2C8\uB2E4.
+         SemicolonRequiredInCharRef = \uBB38\uC790 \uCC38\uC870\uB294 ';' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        InvalidCharRef = \uBB38\uC790 \uCC38\uC870 \"&#{0}\"\uC740(\uB294) \uBD80\uC801\uD569\uD55C XML \uBB38\uC790\uC785\uB2C8\uB2E4.
++        InvalidCharRef = \uBB38\uC790 \uCC38\uC870 "&#{0}"\uC740(\uB294) \uBD80\uC801\uD569\uD55C XML \uBB38\uC790\uC785\uB2C8\uB2E4.
+         NameRequiredInReference = \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC5D0\uC11C\uB294 '&' \uBC14\uB85C \uB2E4\uC74C\uC5D0 \uC5D4\uD2F0\uD2F0 \uC774\uB984\uC774 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        SemicolonRequiredInReference = \"{0}\" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uCC38\uC870\uB294 '';'' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        SemicolonRequiredInReference = "{0}" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uCC38\uC870\uB294 '';'' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC740 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uC678\uBD80 \uC5D4\uD2F0\uD2F0 \uB9E8 \uC55E\uC5D0\uB9CC \uB098\uD0C0\uB0A0 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+-        EqRequiredInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C\uB294 \"{0}\" \uB2E4\uC74C\uC5D0 '' = '' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        QuoteRequiredInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C \"{0}\" \uB2E4\uC74C\uC5D0 \uC624\uB294 \uAC12\uC740 \uB530\uC634\uD45C\uAC00 \uBD99\uC740 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        CloseQuoteMissingInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C \"{0}\" \uB2E4\uC74C\uC5D0 \uC624\uB294 \uAC12\uC758 \uB2EB\uB294 \uB530\uC634\uD45C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
++        EqRequiredInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C\uB294 "{0}" \uB2E4\uC74C\uC5D0 '' = '' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        QuoteRequiredInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C "{0}" \uB2E4\uC74C\uC5D0 \uC624\uB294 \uAC12\uC740 \uB530\uC634\uD45C\uAC00 \uBD99\uC740 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        CloseQuoteMissingInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uC11C "{0}" \uB2E4\uC74C\uC5D0 \uC624\uB294 \uAC12\uC758 \uB2EB\uB294 \uB530\uC634\uD45C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+         SpaceRequiredBeforeVersionInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC740 \uBC84\uC804 \uC758\uC0AC \uC18D\uC131 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         SpaceRequiredBeforeEncodingInTextDecl = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC740 \uC778\uCF54\uB529 \uC758\uC0AC \uC18D\uC131 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        TextDeclUnterminated = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC740 \"?>\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        TextDeclUnterminated = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC740 "?>"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         EncodingDeclRequired = \uD14D\uC2A4\uD2B8 \uC120\uC5B8\uC5D0\uB294 \uC778\uCF54\uB529 \uC120\uC5B8\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         NoMorePseudoAttributes = \uC758\uC0AC \uC18D\uC131\uC740 \uB354 \uC774\uC0C1 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         MorePseudoAttributes = \uC758\uC0AC \uC18D\uC131\uC774 \uB354 \uD544\uC694\uD569\uB2C8\uB2E4.
+@@ -143,13 +141,13 @@
+         CommentNotInOneEntity = \uC8FC\uC11D\uC740 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0\uC5D0 \uC644\uC804\uD788 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+         PINotInOneEntity = \uCC98\uB9AC \uBA85\uB839\uC740 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uB3D9\uC77C\uD55C \uC5D4\uD2F0\uD2F0\uC5D0 \uC644\uC804\uD788 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = \"{0}\"\uC740(\uB294) \uBD80\uC801\uD569\uD55C \uC778\uCF54\uB529 \uC774\uB984\uC785\uB2C8\uB2E4.
+-        EncodingByteOrderUnsupported = \"{0}\" \uC778\uCF54\uB529\uC5D0 \uB300\uD574 \uC81C\uACF5\uB41C \uBC14\uC774\uD2B8 \uC21C\uC11C\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        EncodingDeclInvalid = "{0}"\uC740(\uB294) \uBD80\uC801\uD569\uD55C \uC778\uCF54\uB529 \uC774\uB984\uC785\uB2C8\uB2E4.
++        EncodingByteOrderUnsupported = "{0}" \uC778\uCF54\uB529\uC5D0 \uB300\uD574 \uC81C\uACF5\uB41C \uBC14\uC774\uD2B8 \uC21C\uC11C\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         InvalidByte = {0}\uC740(\uB294) {1}\uBC14\uC774\uD2B8 UTF-8 \uC2DC\uD000\uC2A4\uC5D0 \uB300\uD574 \uBD80\uC801\uD569\uD55C \uBC14\uC774\uD2B8\uC785\uB2C8\uB2E4.
+         ExpectedByte = {1}\uBC14\uC774\uD2B8 UTF-8 \uC2DC\uD000\uC2A4\uC5D0 \uD544\uC694\uD55C \uBC14\uC774\uD2B8\uB294 {0}\uC785\uB2C8\uB2E4.  
+         InvalidHighSurrogate = UTF-8 \uC2DC\uD000\uC2A4\uC758 \uB192\uC740 \uB300\uB9AC \uBE44\uD2B8\uB294 0x10\uC744 \uCD08\uACFC\uD558\uC9C0 \uC54A\uC544\uC57C \uD558\uC9C0\uB9CC 0x{0}\uC774(\uAC00) \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+-        OperationNotSupported = {1} \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC740 \"{0}\" \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        InvalidASCII = \uBC14\uC774\uD2B8 \"{0}\"\uC740(\uB294) (7\uBE44\uD2B8) ASCII \uBB38\uC790 \uC9D1\uD569\uC5D0 \uC18D\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        OperationNotSupported = {1} \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC740 "{0}" \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        InvalidASCII = \uBC14\uC774\uD2B8 "{0}"\uC740(\uB294) (7\uBE44\uD2B8) ASCII \uBB38\uC790 \uC9D1\uD569\uC5D0 \uC18D\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         CharConversionFailure = \uD2B9\uC815 \uC778\uCF54\uB529 \uD615\uC2DD\uC774\uC5B4\uC57C \uD558\uB294 \uAC83\uC73C\uB85C \uD655\uC778\uB41C \uC5D4\uD2F0\uD2F0\uC5D0\uB294 \uD574\uB2F9 \uC778\uCF54\uB529\uC5D0 \uBD80\uC801\uD569\uD55C \uC2DC\uD000\uC2A4\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+         
+ # DTD Messages
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = \uACF5\uC6A9 \uC2DD\uBCC4\uC790\uC5D0\uB294 \uBB38\uC790(\uC720\uB2C8\uCF54\uB4DC: 0x{0})\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         SpaceRequiredBetweenPublicAndSystem = publicId\uC640 systemId \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!DOCTYPE\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!DOCTYPE\" \uB2E4\uC74C\uC5D0 \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        DoctypedeclUnterminated = \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD55C \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        PEReferenceWithinMarkup = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 \"%{0};\"\uC740 DTD\uC758 \uB0B4\uBD80 \uBD80\uBD84 \uC9D1\uD569\uC5D0 \uC788\uB294 \uB9C8\uD06C\uC5C5 \uC548\uC5D0 \uD45C\uC2DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!DOCTYPE" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!DOCTYPE" \uB2E4\uC74C\uC5D0 \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
++        DoctypedeclUnterminated = \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        PEReferenceWithinMarkup = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 "%{0};"\uC740 DTD\uC758 \uB0B4\uBD80 \uBD80\uBD84 \uC9D1\uD569\uC5D0 \uC788\uB294 \uB9C8\uD06C\uC5C5 \uC548\uC5D0 \uD45C\uC2DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC744 \uD3EC\uD568\uD558\uAC70\uB098 \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC774 \uAC00\uB9AC\uD0A4\uB294 \uB9C8\uD06C\uC5C5 \uC120\uC5B8\uC740 \uC62C\uBC14\uB978 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = \"xml:space\"\uC5D0 \uB300\uD55C \uC18D\uC131 \uC120\uC5B8\uC740 \"default\" \uBC0F \"preserve\" \uAC12\uB9CC \uAC00\uB2A5\uD55C \uC5F4\uAC70 \uC720\uD615\uC73C\uB85C \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = "xml:space"\uC5D0 \uB300\uD55C \uC18D\uC131 \uC120\uC5B8\uC740 "default" \uBC0F "preserve" \uAC12\uB9CC \uAC00\uB2A5\uD55C \uC5F4\uAC70 \uC720\uD615\uC73C\uB85C \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!ELEMENT\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!ELEMENT" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uB294 \uC694\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC694\uC18C \uC720\uD615 \"{0}\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC694\uC18C \uC720\uD615 \"{0}\" \uB2E4\uC74C\uC5D0 \uC81C\uC57D \uC870\uAC74\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        ElementDeclUnterminated = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD55C \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC694\uC18C \uC720\uD615 "{0}" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \uC694\uC18C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC694\uC18C \uC720\uD615 "{0}" \uB2E4\uC74C\uC5D0 \uC81C\uC57D \uC870\uAC74\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        ElementDeclUnterminated = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uC120\uC5B8\uC5D0\uB294 ''('' \uBB38\uC790 \uB610\uB294 \uC694\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uC120\uC5B8\uC5D0\uB294 '')''\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uC120\uC5B8\uC5D0\uB294 ''('' \uBB38\uC790 \uB610\uB294 \uC694\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uC120\uC5B8\uC5D0\uB294 '')''\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uC120\uC5B8\uC5D0\uB294 \uC694\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uC120\uC5B8\uC5D0\uB294 '')''\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MixedContentUnterminated = \uD558\uC704 \uC694\uC18C \uC720\uD615\uC774 \uC81C\uD55C\uB418\uB294 \uACBD\uC6B0 \uD63C\uD569 \uCF58\uD150\uCE20 \uBAA8\uB378 \"{0}\"\uC740(\uB294) \")*\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uC120\uC5B8\uC5D0\uB294 \uC694\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uC120\uC5B8\uC5D0\uB294 '')''\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MixedContentUnterminated = \uD558\uC704 \uC694\uC18C \uC720\uD615\uC774 \uC81C\uD55C\uB418\uB294 \uACBD\uC6B0 \uD63C\uD569 \uCF58\uD150\uCE20 \uBAA8\uB378 "{0}"\uC740(\uB294) ")*"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = attribute-list \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!ATTLIST\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = attribute-list \uC120\uC5B8\uC5D0\uC11C\uB294 "<!ATTLIST" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = attribute-list \uC120\uC5B8\uC5D0\uB294 \uC694\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C attribute-list \uC120\uC5B8\uC5D0\uC11C\uB294 \uC18D\uC131 \uC774\uB984 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        AttNameRequiredInAttDef = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C attribute-list \uC120\uC5B8\uC5D0\uB294 \uC18D\uC131 \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C \"{1}\" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC18D\uC131 \uC720\uD615 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        AttTypeRequiredInAttDef = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C \"{1}\" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uB294 \uC18D\uC131 \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C \"{1}\" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC18D\uC131 \uAE30\uBCF8\uAC12 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \uC81C\uACF5\uB41C \uC694\uC18C \"{0}\"\uC758 \uB3D9\uC77C\uD55C \uC18D\uC131 \"{1}\"\uC5D0 \uB300\uD574 \uC18D\uC131 \uC815\uC758\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C attribute-list \uC120\uC5B8\uC5D0\uC11C\uB294 \uC18D\uC131 \uC774\uB984 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        AttNameRequiredInAttDef = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C attribute-list \uC120\uC5B8\uC5D0\uB294 \uC18D\uC131 \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C "{1}" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC18D\uC131 \uC720\uD615 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        AttTypeRequiredInAttDef = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C "{1}" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uB294 \uC18D\uC131 \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C "{1}" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC18D\uC131 \uAE30\uBCF8\uAC12 \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \uC81C\uACF5\uB41C \uC694\uC18C "{0}"\uC758 \uB3D9\uC77C\uD55C \uC18D\uC131 "{1}"\uC5D0 \uB300\uD574 \uC18D\uC131 \uC815\uC758\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C\uB294 \"NOTATION\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C\uB294 \"NOTATION\" \uB2E4\uC74C\uC5D0 ''('' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0 \uB300\uD55C \uD45C\uAE30\uBC95 \uC720\uD615 \uBAA9\uB85D\uC5D0\uB294 \uD45C\uAE30\uBC95 \uC774\uB984\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        NotationTypeUnterminated = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C \uD45C\uAE30\uBC95 \uC720\uD615 \uBAA9\uB85D\uC740 '')''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0 \uB300\uD55C \uC5F4\uAC70 \uC720\uD615 \uBAA9\uB85D\uC5D0\uB294 \uC774\uB984 \uD1A0\uD070\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        EnumerationUnterminated = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C \uC5F4\uAC70 \uC720\uD615 \uBAA9\uB85D\uC740 '')''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C \"{2}\" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C \uBAA9\uB85D \uAC12 \"{1}\"\uC774(\uAC00) \uB450 \uBC88 \uC774\uC0C1 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E8\uC77C \uBAA9\uB85D \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C NMTOKENS\uB294 \uBAA8\uB450 \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \"{0}\" \uC694\uC18C\uC5D0 \uB300\uD55C \"{2}\" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C \uBAA9\uB85D \uAC12 \"{1}\"\uC774(\uAC00) \uB450 \uBC88 \uC774\uC0C1 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E8\uC77C NotationType \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C NOTATION \uC774\uB984\uC740 \uBAA8\uB450 \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C\uB294 "NOTATION" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C\uB294 "NOTATION" \uB2E4\uC74C\uC5D0 ''('' \uBB38\uC790\uAC00 \uC640\uC57C \uD569\uB2C8\uB2E4.
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0 \uB300\uD55C \uD45C\uAE30\uBC95 \uC720\uD615 \uBAA9\uB85D\uC5D0\uB294 \uD45C\uAE30\uBC95 \uC774\uB984\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        NotationTypeUnterminated = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C \uD45C\uAE30\uBC95 \uC720\uD615 \uBAA9\uB85D\uC740 '')''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0 \uB300\uD55C \uC5F4\uAC70 \uC720\uD615 \uBAA9\uB85D\uC5D0\uB294 \uC774\uB984 \uD1A0\uD070\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        EnumerationUnterminated = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C \uC5F4\uAC70 \uC720\uD615 \uBAA9\uB85D\uC740 '')''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C "{2}" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C \uBAA9\uB85D \uAC12 "{1}"\uC774(\uAC00) \uB450 \uBC88 \uC774\uC0C1 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E8\uC77C \uBAA9\uB85D \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C NMTOKENS\uB294 \uBAA8\uB450 \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = "{0}" \uC694\uC18C\uC5D0 \uB300\uD55C "{2}" \uC18D\uC131\uC758 \uC120\uC5B8\uC5D0\uC11C \uBAA9\uB85D \uAC12 "{1}"\uC774(\uAC00) \uB450 \uBC88 \uC774\uC0C1 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E8\uC77C NotationType \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C NOTATION \uC774\uB984\uC740 \uBAA8\uB450 \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = \"{1}\" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C\uB294 \"FIXED\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = "{1}" \uC18D\uC131 \uC120\uC5B8\uC5D0\uC11C\uB294 "FIXED" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = \uD3EC\uD568\uB41C \uC870\uAC74\uBD80 \uC139\uC158\uC740 \"]]>\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        IgnoreSectUnterminated = \uC81C\uC678\uB41C \uC870\uAC74\uBD80 \uC139\uC158\uC740 \"]]>\"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        IncludeSectUnterminated = \uD3EC\uD568\uB41C \uC870\uAC74\uBD80 \uC139\uC158\uC740 "]]>"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        IgnoreSectUnterminated = \uC81C\uC678\uB41C \uC870\uAC74\uBD80 \uC139\uC158\uC740 "]]>"\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC5D0\uC11C\uB294 '%' \uBC14\uB85C \uB2E4\uC74C\uC5D0 \uC5D4\uD2F0\uD2F0 \uC774\uB984\uC774 \uC640\uC57C \uD569\uB2C8\uB2E4.
+-        SemicolonRequiredInPEReference = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 \"%{0};\"\uC740 '';'' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        SemicolonRequiredInPEReference = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 "%{0};"\uC740 '';'' \uAD6C\uBD84\uC790\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!ENTITY\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!ENTITY\"\uC640 '%' \uBB38\uC790 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!ENTITY" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!ENTITY"\uC640 '%' \uBB38\uC790 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 '%'\uC640 \uC5D4\uD2F0\uD2F0 \uC774\uB984 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uB294 \uC5D4\uD2F0\uD2F0 \uC774\uB984\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC5D4\uD2F0\uD2F0 \uC774\uB984 \"{0}\"\uACFC(\uC640) \uC815\uC758 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \"{0}\" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uC11C\uB294 \"NDATA\"\uC640 \uD45C\uAE30\uBC95 \uC774\uB984 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \"{0}\" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uC11C\uB294 \"NDATA\" \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \"{0}\" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uC11C\uB294 \"NDATA\" \uB2E4\uC74C\uC5D0 \uD45C\uAE30\uBC95 \uC774\uB984\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        EntityDeclUnterminated = \"{0}\" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = \"{0}\" \uC5D4\uD2F0\uD2F0\uAC00 \uB450 \uBC88 \uC774\uC0C1 \uC120\uC5B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C\uB294 \uC5D4\uD2F0\uD2F0 \uC774\uB984 "{0}"\uACFC(\uC640) \uC815\uC758 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = "{0}" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uC11C\uB294 "NDATA"\uC640 \uD45C\uAE30\uBC95 \uC774\uB984 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = "{0}" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uC11C\uB294 "NDATA" \uC55E\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = "{0}" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uC11C\uB294 "NDATA" \uB2E4\uC74C\uC5D0 \uD45C\uAE30\uBC95 \uC774\uB984\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        EntityDeclUnterminated = "{0}" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++	MSG_DUPLICATE_ENTITY_DEFINITION = "{0}" \uC5D4\uD2F0\uD2F0\uAC00 \uB450 \uBC88 \uC774\uC0C1 \uC120\uC5B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = \uC678\uBD80 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC740 \"SYSTEM\" \uB610\uB294 \"PUBLIC\"\uC73C\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \"PUBLIC\"\uACFC \uACF5\uC6A9 \uC2DD\uBCC4\uC790 \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        ExternalIDRequired = \uC678\uBD80 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC740 "SYSTEM" \uB610\uB294 "PUBLIC"\uC73C\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = "PUBLIC"\uACFC \uACF5\uC6A9 \uC2DD\uBCC4\uC790 \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = \uACF5\uC6A9 \uC2DD\uBCC4\uC790\uC640 \uC2DC\uC2A4\uD15C \uC2DD\uBCC4\uC790 \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \"SYSTEM\"\uACFC \uC2DC\uC2A4\uD15C \uC2DD\uBCC4\uC790 \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = \uBD80\uBD84 \uC2DD\uBCC4\uC790\uB294 \uC2DC\uC2A4\uD15C \uC2DD\uBCC4\uC790 \"{0}\"\uC758 \uC77C\uBD80\uB85C \uC9C0\uC815\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = "SYSTEM"\uACFC \uC2DC\uC2A4\uD15C \uC2DD\uBCC4\uC790 \uC0AC\uC774\uC5D0\uB294 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = \uBD80\uBD84 \uC2DD\uBCC4\uC790\uB294 \uC2DC\uC2A4\uD15C \uC2DD\uBCC4\uC790 "{0}"\uC758 \uC77C\uBD80\uB85C \uC9C0\uC815\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uC11C\uB294 \"<!NOTATION\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!NOTATION" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uB294 \uD45C\uAE30\uBC95 \uC774\uB984\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uC11C\uB294 \uD45C\uAE30\uBC95 \uC774\uB984 \"{0}\" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
+-        ExternalIDorPublicIDRequired = \"{0}\" \uD45C\uAE30\uBC95\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uB294 \uC2DC\uC2A4\uD15C \uB610\uB294 \uACF5\uC6A9 \uC2DD\uBCC4\uC790\uAC00 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        NotationDeclUnterminated = \"{0}\" \uD45C\uAE30\uBC95\uC5D0 \uB300\uD55C \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uC11C\uB294 \uD45C\uAE30\uBC95 \uC774\uB984 "{0}" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
++        ExternalIDorPublicIDRequired = "{0}" \uD45C\uAE30\uBC95\uC5D0 \uB300\uD55C \uC120\uC5B8\uC5D0\uB294 \uC2DC\uC2A4\uD15C \uB610\uB294 \uACF5\uC6A9 \uC2DD\uBCC4\uC790\uAC00 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        NotationDeclUnterminated = "{0}" \uD45C\uAE30\uBC95\uC5D0 \uB300\uD55C \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = \uC694\uC18C \uC720\uD615 \"{1}\"\uC774(\uAC00) \uC694\uC18C \uC120\uC5B8 \"{0}\"\uC758 \uCF58\uD150\uCE20 \uBAA8\uB378\uC5D0 \uC774\uBBF8 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+-        ENTITIESInvalid = ENTITIES \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{1}\"\uC740(\uB294) \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uD558\uB098 \uC774\uC0C1\uC758 \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        ENTITYInvalid = ENTITY \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{1}\"\uC740(\uB294) \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        IDDefaultTypeInvalid = ID \uC18D\uC131 \"{0}\"\uC758 \uC120\uC5B8\uB41C \uAE30\uBCF8\uAC12\uC740 \"#IMPLIED\" \uB610\uB294 \"#REQUIRED\"\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+-        IDInvalid = ID \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        IDInvalidWithNamespaces = \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uB41C \uACBD\uC6B0 ID \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) NCName\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        IDNotUnique = ID \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uBB38\uC11C \uB0B4\uC5D0\uC11C \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        IDREFInvalid = IDREF \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        IDREFInvalidWithNamespaces = \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uB41C \uACBD\uC6B0 IDREF \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) NCName\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        IDREFSInvalid = IDREFS \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uD558\uB098 \uC774\uC0C1\uC758 \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uAC00 \uC804\uCCB4 \uC120\uC5B8\uC73C\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \"{0}\"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC81C\uB300\uB85C \uC911\uCCA9\uB41C \uC120\uC5B8\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        ImproperDeclarationNesting = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \"{0}\"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC81C\uB300\uB85C \uC911\uCCA9\uB41C \uC120\uC5B8\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        ImproperGroupNesting = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \"{0}\"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC81C\uB300\uB85C \uC911\uCCA9\uB41C \uAD04\uD638 \uC30D\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        INVALID_PE_IN_CONDITIONAL = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \"{0}\"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC804\uCCB4 \uC870\uAC74\uBD80 \uC139\uC158\uC774 \uD3EC\uD568\uB418\uAC70\uB098 INCLUDE \uB610\uB294 IGNORE\uB9CC \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_ATTRIBUTE_NOT_DECLARED = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD55C \"{1}\" \uC18D\uC131\uC744 \uC120\uC5B8\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \uAC12\uC774 \"{1}\"\uC778 \"{0}\" \uC18D\uC131\uC5D0\uB294 \"{2}\" \uBAA9\uB85D\uC758 \uAC12\uC774 \uC0AC\uC6A9\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \"{0}\" \uC18D\uC131\uC758 \"{1}\" \uAC12\uC740 \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C \uC815\uADDC\uD654\uC5D0 \uC758\uD574 \"{2}\"(\uC73C)\uB85C \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_CONTENT_INCOMPLETE = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uCF58\uD150\uCE20\uAC00 \uBD88\uC644\uC804\uD569\uB2C8\uB2E4. \uD574\uB2F9 \uCF58\uD150\uCE20\uB294 \"{1}\"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_CONTENT_INVALID = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uCF58\uD150\uCE20\uB294 \"{1}\"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_CONTENT_INVALID_SPECIFIED = \uC694\uC18C \uC720\uD615 \"{0}\"\uC758 \uCF58\uD150\uCE20\uB294 \"{1}\"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4. \"{2}\" \uC720\uD615\uC758 \uD558\uC704 \uD56D\uBAA9\uC740 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD55C \"{1}\" \uC18D\uC131\uC5D0 \uAE30\uBCF8\uAC12\uC774 \uC788\uC73C\uBA70 \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0 \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_DUPLICATE_ATTDEF = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD55C \"{1}\" \uC18D\uC131\uC774 \uC774\uBBF8 \uC120\uC5B8\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
+-        MSG_ELEMENT_ALREADY_DECLARED = \uC694\uC18C \uC720\uD615 \"{0}\"\uC740(\uB294) \uB450 \uBC88 \uC774\uC0C1 \uC120\uC5B8\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_ELEMENT_NOT_DECLARED = \uC694\uC18C \uC720\uD615 \"{0}\"\uC744(\uB97C) \uC120\uC5B8\uD574\uC57C \uD569\uB2C8\uB2E4.
++        DuplicateTypeInMixedContent = \uC694\uC18C \uC720\uD615 "{1}"\uC774(\uAC00) \uC694\uC18C \uC120\uC5B8 "{0}"\uC758 \uCF58\uD150\uCE20 \uBAA8\uB378\uC5D0 \uC774\uBBF8 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
++        ENTITIESInvalid = ENTITIES \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{1}"\uC740(\uB294) \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uD558\uB098 \uC774\uC0C1\uC758 \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        ENTITYInvalid = ENTITY \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{1}"\uC740(\uB294) \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        IDDefaultTypeInvalid = ID \uC18D\uC131 "{0}"\uC758 \uC120\uC5B8\uB41C \uAE30\uBCF8\uAC12\uC740 "#IMPLIED" \uB610\uB294 "#REQUIRED"\uC5EC\uC57C \uD569\uB2C8\uB2E4.
++        IDInvalid = ID \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        IDInvalidWithNamespaces = \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uB41C \uACBD\uC6B0 ID \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) NCName\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        IDNotUnique = ID \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uBB38\uC11C \uB0B4\uC5D0\uC11C \uACE0\uC720\uD574\uC57C \uD569\uB2C8\uB2E4.
++        IDREFInvalid = IDREF \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        IDREFInvalidWithNamespaces = \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uB41C \uACBD\uC6B0 IDREF \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) NCName\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        IDREFSInvalid = IDREFS \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uD558\uB098 \uC774\uC0C1\uC758 \uC774\uB984\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uAC00 \uC804\uCCB4 \uC120\uC5B8\uC73C\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 "{0}"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC81C\uB300\uB85C \uC911\uCCA9\uB41C \uC120\uC5B8\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        ImproperDeclarationNesting = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 "{0}"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC81C\uB300\uB85C \uC911\uCCA9\uB41C \uC120\uC5B8\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        ImproperGroupNesting = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 "{0}"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC81C\uB300\uB85C \uC911\uCCA9\uB41C \uAD04\uD638 \uC30D\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        INVALID_PE_IN_CONDITIONAL = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 "{0}"\uC758 \uB300\uCCB4 \uD14D\uC2A4\uD2B8\uC5D0\uB294 \uC804\uCCB4 \uC870\uAC74\uBD80 \uC139\uC158\uC774 \uD3EC\uD568\uB418\uAC70\uB098 INCLUDE \uB610\uB294 IGNORE\uB9CC \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_ATTRIBUTE_NOT_DECLARED = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C "{1}" \uC18D\uC131\uC744 \uC120\uC5B8\uD574\uC57C \uD569\uB2C8\uB2E4.
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \uAC12\uC774 "{1}"\uC778 "{0}" \uC18D\uC131\uC5D0\uB294 "{2}" \uBAA9\uB85D\uC758 \uAC12\uC774 \uC0AC\uC6A9\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = "{0}" \uC18D\uC131\uC758 "{1}" \uAC12\uC740 \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C \uC815\uADDC\uD654\uC5D0 \uC758\uD574 "{2}"(\uC73C)\uB85C \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
++        MSG_CONTENT_INCOMPLETE = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uCF58\uD150\uCE20\uAC00 \uBD88\uC644\uC804\uD569\uB2C8\uB2E4. \uD574\uB2F9 \uCF58\uD150\uCE20\uB294 "{1}"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
++        MSG_CONTENT_INVALID = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uCF58\uD150\uCE20\uB294 "{1}"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
++        MSG_CONTENT_INVALID_SPECIFIED = \uC694\uC18C \uC720\uD615 "{0}"\uC758 \uCF58\uD150\uCE20\uB294 "{1}"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4. "{2}" \uC720\uD615\uC758 \uD558\uC704 \uD56D\uBAA9\uC740 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C "{1}" \uC18D\uC131\uC5D0 \uAE30\uBCF8\uAC12\uC774 \uC788\uC73C\uBA70 \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0 \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_DUPLICATE_ATTDEF = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C "{1}" \uC18D\uC131\uC774 \uC774\uBBF8 \uC120\uC5B8\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
++        MSG_ELEMENT_ALREADY_DECLARED = \uC694\uC18C \uC720\uD615 "{0}"\uC740(\uB294) \uB450 \uBC88 \uC774\uC0C1 \uC120\uC5B8\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
++        MSG_ELEMENT_NOT_DECLARED = \uC694\uC18C \uC720\uD615 "{0}"\uC744(\uB97C) \uC120\uC5B8\uD574\uC57C \uD569\uB2C8\uB2E4.
+         MSG_GRAMMAR_NOT_FOUND = \uBB38\uC11C\uAC00 \uBD80\uC801\uD569\uD568: \uBB38\uBC95\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = \uC2DD\uBCC4\uC790\uAC00 \"{0}\"\uC778 \uC694\uC18C\uAC00 \uBB38\uC11C\uC5D0 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C\uB294 \uC678\uBD80 \uC5D4\uD2F0\uD2F0 \"{0}\"\uC5D0 \uB300\uD55C \uCC38\uC870\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        MSG_FIXED_ATTVALUE_INVALID = \uAC12\uC774 \"{2}\"\uC778 \"{1}\" \uC18D\uC131\uC758 \uAC12\uC740 \"{3}\"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 ID \uC720\uD615\uC758 \"{1}\" \uC18D\uC131\uC774 \uC774\uBBF8 \uC788\uC73C\uBBC0\uB85C ID \uC720\uD615\uC758 \uB450\uBC88\uC9F8 \uC18D\uC131 \"{2}\"\uC774(\uAC00) \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 NOTATION \uC720\uD615\uC758 \"{1}\" \uC18D\uC131\uC774 \uC774\uBBF8 \uC788\uC73C\uBBC0\uB85C NOTATION \uC720\uD615\uC758 \uB450\uBC88\uC9F8 \uC18D\uC131 \"{2}\"\uC774(\uAC00) \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \"{1}\" \uD45C\uAE30\uBC95\uC740 \"{0}\" \uC18D\uC131\uC5D0 \uB300\uD55C \uD45C\uAE30\uBC95 \uC720\uD615 \uBAA9\uB85D\uC5D0\uC11C \uCC38\uC870\uB418\uB294 \uACBD\uC6B0 \uC120\uC5B8\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = \"{1}\" \uD45C\uAE30\uBC95\uC740 \"{0}\"\uC5D0 \uB300\uD574 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C \uCC38\uC870\uB418\uB294 \uACBD\uC6B0 \uC120\uC5B8\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C\uB294 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uC678\uBD80 \uC5D4\uD2F0\uD2F0\uC5D0\uC11C \uC120\uC5B8\uB41C \"{0}\" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uCC38\uC870\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \"{1}\" \uC18D\uC131\uC774 \uD544\uC694\uD558\uBA70 \uC694\uC18C \uC720\uD615 \"{0}\"\uC5D0 \uB300\uD574 \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_ELEMENT_WITH_ID_REQUIRED = \uC2DD\uBCC4\uC790\uAC00 "{0}"\uC778 \uC694\uC18C\uAC00 \uBB38\uC11C\uC5D0 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C\uB294 \uC678\uBD80 \uC5D4\uD2F0\uD2F0 "{0}"\uC5D0 \uB300\uD55C \uCC38\uC870\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        MSG_FIXED_ATTVALUE_INVALID = \uAC12\uC774 "{2}"\uC778 "{1}" \uC18D\uC131\uC758 \uAC12\uC740 "{3}"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 ID \uC720\uD615\uC758 "{1}" \uC18D\uC131\uC774 \uC774\uBBF8 \uC788\uC73C\uBBC0\uB85C ID \uC720\uD615\uC758 \uB450\uBC88\uC9F8 \uC18D\uC131 "{2}"\uC774(\uAC00) \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 NOTATION \uC720\uD615\uC758 "{1}" \uC18D\uC131\uC774 \uC774\uBBF8 \uC788\uC73C\uBBC0\uB85C NOTATION \uC720\uD615\uC758 \uB450\uBC88\uC9F8 \uC18D\uC131 "{2}"\uC774(\uAC00) \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = "{1}" \uD45C\uAE30\uBC95\uC740 "{0}" \uC18D\uC131\uC5D0 \uB300\uD55C \uD45C\uAE30\uBC95 \uC720\uD615 \uBAA9\uB85D\uC5D0\uC11C \uCC38\uC870\uB418\uB294 \uACBD\uC6B0 \uC120\uC5B8\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = "{1}" \uD45C\uAE30\uBC95\uC740 "{0}"\uC5D0 \uB300\uD574 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uC5D4\uD2F0\uD2F0 \uC120\uC5B8\uC5D0\uC11C \uCC38\uC870\uB418\uB294 \uACBD\uC6B0 \uC120\uC5B8\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C\uB294 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uC678\uBD80 \uC5D4\uD2F0\uD2F0\uC5D0\uC11C \uC120\uC5B8\uB41C "{0}" \uC5D4\uD2F0\uD2F0\uC5D0 \uB300\uD55C \uCC38\uC870\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = "{1}" \uC18D\uC131\uC774 \uD544\uC694\uD558\uBA70 \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD574 \uC9C0\uC815\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = \uB3C5\uB9BD\uD615 \uBB38\uC11C\uC5D0\uC11C\uB294 \uC694\uC18C \uCF58\uD150\uCE20\uB97C \uAC00\uC9C0\uBA70 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uC678\uBD80 \uC5D4\uD2F0\uD2F0\uC5D0\uC11C \uC120\uC5B8\uB41C \uC694\uC18C \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uC5C6\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        NMTOKENInvalid = NMTOKEN \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uC774\uB984 \uD1A0\uD070\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        NMTOKENSInvalid = NMTOKENS \uC720\uD615\uC758 \uC18D\uC131\uAC12 \"{0}\"\uC740(\uB294) \uD558\uB098 \uC774\uC0C1\uC758 \uC774\uB984 \uD1A0\uD070\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+-        NoNotationOnEmptyElement = EMPTY\uB85C \uC120\uC5B8\uB41C \uC694\uC18C \uC720\uD615 \"{0}\"\uC740(\uB294) NOTATION \uC720\uD615\uC758 \"{1}\" \uC18D\uC131\uC744 \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+-        RootElementTypeMustMatchDoctypedecl = \uBB38\uC11C \uB8E8\uD2B8 \uC694\uC18C \"{1}\"\uC740(\uB294) DOCTYPE \uB8E8\uD2B8 \"{0}\"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
+-        UndeclaredElementInContentSpec = \"{0}\" \uC694\uC18C\uC758 \uCF58\uD150\uCE20 \uBAA8\uB378\uC774 \uC120\uC5B8\uB418\uC9C0 \uC54A\uC740 \uC694\uC18C \"{1}\"\uC744(\uB97C) \uCC38\uC870\uD569\uB2C8\uB2E4.
+-        UniqueNotationName = \"{0}\" \uD45C\uAE30\uBC95\uC5D0 \uB300\uD55C \uC120\uC5B8\uC774 \uACE0\uC720\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC81C\uACF5\uB41C \uC774\uB984\uC740 \uB450 \uAC1C \uC774\uC0C1\uC758 \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uC11C \uC120\uC5B8\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
++        NMTOKENInvalid = NMTOKEN \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uC774\uB984 \uD1A0\uD070\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        NMTOKENSInvalid = NMTOKENS \uC720\uD615\uC758 \uC18D\uC131\uAC12 "{0}"\uC740(\uB294) \uD558\uB098 \uC774\uC0C1\uC758 \uC774\uB984 \uD1A0\uD070\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
++        NoNotationOnEmptyElement = EMPTY\uB85C \uC120\uC5B8\uB41C \uC694\uC18C \uC720\uD615 "{0}"\uC740(\uB294) NOTATION \uC720\uD615\uC758 "{1}" \uC18D\uC131\uC744 \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
++        RootElementTypeMustMatchDoctypedecl = \uBB38\uC11C \uB8E8\uD2B8 \uC694\uC18C "{1}"\uC740(\uB294) DOCTYPE \uB8E8\uD2B8 "{0}"\uACFC(\uC640) \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
++        UndeclaredElementInContentSpec = "{0}" \uC694\uC18C\uC758 \uCF58\uD150\uCE20 \uBAA8\uB378\uC774 \uC120\uC5B8\uB418\uC9C0 \uC54A\uC740 \uC694\uC18C "{1}"\uC744(\uB97C) \uCC38\uC870\uD569\uB2C8\uB2E4.
++        UniqueNotationName = "{0}" \uD45C\uAE30\uBC95\uC5D0 \uB300\uD55C \uC120\uC5B8\uC774 \uACE0\uC720\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC81C\uACF5\uB41C \uC774\uB984\uC740 \uB450 \uAC1C \uC774\uC0C1\uC758 \uD45C\uAE30\uBC95 \uC120\uC5B8\uC5D0\uC11C \uC120\uC5B8\uB418\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4.
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype \uAC80\uC99D\uAE30: \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC801\uD569\uD55C \uBB38\uBC95 \uCC38\uC870\uB85C \uCD08\uAE30\uD654 \uBA54\uC18C\uB4DC\uB97C \uD638\uCD9C\uD574\uC57C \uD569\uB2C8\uB2E4. \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\"\uC758 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+-        ENTITYNotValid = ENTITY \"{0}\"\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
++        ENTITYNotUnparsed = ENTITY "{0}"\uC758 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
++        ENTITYNotValid = ENTITY "{0}"\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+         EmptyList = ENTITIES, IDREFS \uBC0F NMTOKENS \uC720\uD615\uC758 \uAC12\uC740 \uBE48 \uBAA9\uB85D\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = \uC18D\uC131\uAC12\uC5D0\uC11C\uB294 \uC678\uBD80 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 \"&{0};\"\uC774 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = \uC18D\uC131\uAC12\uC5D0\uC11C\uB294 \uC678\uBD80 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 "&{0};"\uC774 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        AccessExternalDTD = \uC678\uBD80 DTD: accessExternalDTD \uC18D\uC131\uC73C\uB85C \uC124\uC815\uB41C \uC81C\uD55C\uC73C\uB85C \uC778\uD574 ''{1}'' \uC561\uC138\uC2A4\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC73C\uBBC0\uB85C \uC678\uBD80 DTD ''{0}'' \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
++        AccessExternalEntity = \uC678\uBD80 \uC5D4\uD2F0\uD2F0: accessExternalDTD \uC18D\uC131\uC73C\uB85C \uC124\uC815\uB41C \uC81C\uD55C\uC73C\uB85C \uC778\uD574 ''{1}'' \uC561\uC138\uC2A4\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC73C\uBBC0\uB85C \uC678\uBD80 \uBB38\uC11C ''{0}'' \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = \"{0}\" \uC5D4\uD2F0\uD2F0\uAC00 \uCC38\uC870\uB418\uC5C8\uC9C0\uB9CC \uC120\uC5B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+-        ReferenceToUnparsedEntity = \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 \"&{0};\"\uC740(\uB294) \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+-        RecursiveReference = \"{0}\"\uC740(\uB294) \uC21C\uD658 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC785\uB2C8\uB2E4(\uCC38\uC870 \uACBD\uB85C: {1}).
+-        RecursiveGeneralReference = \"&{0};\"\uC740 \uC21C\uD658 \uC77C\uBC18 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC785\uB2C8\uB2E4(\uCC38\uC870 \uACBD\uB85C: {1}).
+-        RecursivePEReference = \"%{0};\"\uC740 \uC21C\uD658 \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC785\uB2C8\uB2E4(\uCC38\uC870 \uACBD\uB85C: {1}).
++        EntityNotDeclared = "{0}" \uC5D4\uD2F0\uD2F0\uAC00 \uCC38\uC870\uB418\uC5C8\uC9C0\uB9CC \uC120\uC5B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
++        ReferenceToUnparsedEntity = \uAD6C\uBB38\uC774 \uBD84\uC11D\uB418\uC9C0 \uC54A\uC740 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 "&{0};"\uC740(\uB294) \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        RecursiveReference = "{0}"\uC740(\uB294) \uC21C\uD658 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC785\uB2C8\uB2E4(\uCC38\uC870 \uACBD\uB85C: {1}).
++        RecursiveGeneralReference = "&{0};"\uC740 \uC21C\uD658 \uC77C\uBC18 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC785\uB2C8\uB2E4(\uCC38\uC870 \uACBD\uB85C: {1}).
++        RecursivePEReference = "%{0};"\uC740 \uC21C\uD658 \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uC785\uB2C8\uB2E4(\uCC38\uC870 \uACBD\uB85C: {1}).
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = \"{0}\" \uC778\uCF54\uB529\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
++        EncodingNotSupported = "{0}" \uC778\uCF54\uB529\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+         EncodingRequired = UTF-8 \uB610\uB294 UTF-16\uC73C\uB85C \uC778\uCF54\uB529\uB418\uC9C0 \uC54A\uC740 \uAD6C\uBB38\uC774 \uBD84\uC11D\uB41C \uC5D4\uD2F0\uD2F0\uC5D0\uB294 \uC778\uCF54\uB529 \uC120\uC5B8\uC774 \uD3EC\uD568\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = \uC694\uC18C \uB610\uB294 \uC18D\uC131\uC774 QName \uC791\uC131\uACFC \uC77C\uCE58\uD558\uC9C0 \uC54A\uC74C: QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = \"{0}\" \uC694\uC18C\uC5D0\uB294 \"xmlns\"\uAC00 \uC811\uB450\uC5B4\uB85C \uC0AC\uC6A9\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+-        ElementPrefixUnbound = \"{1}\" \uC694\uC18C\uC5D0 \uB300\uD55C \"{0}\" \uC811\uB450\uC5B4\uAC00 \uBC14\uC778\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+-        AttributePrefixUnbound = \uC694\uC18C \uC720\uD615 \"{0}\"\uACFC(\uC640) \uC5F0\uAD00\uB41C \"{1}\" \uC18D\uC131\uC758 \"{2}\" \uC811\uB450\uC5B4\uAC00 \uBC14\uC778\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+-        EmptyPrefixedAttName = \"{0}\" \uC18D\uC131\uC758 \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uC811\uB450\uC5B4\uAC00 \uC9C0\uC815\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uBC14\uC778\uB529\uC740 \uBE44\uC6CC \uB458 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+-        PrefixDeclared = \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uC811\uB450\uC5B4 \"{0}\"\uC774(\uAC00) \uC120\uC5B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
++        ElementXMLNSPrefix = "{0}" \uC694\uC18C\uC5D0\uB294 "xmlns"\uAC00 \uC811\uB450\uC5B4\uB85C \uC0AC\uC6A9\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
++        ElementPrefixUnbound = "{1}" \uC694\uC18C\uC5D0 \uB300\uD55C "{0}" \uC811\uB450\uC5B4\uAC00 \uBC14\uC778\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
++        AttributePrefixUnbound = \uC694\uC18C \uC720\uD615 "{0}"\uACFC(\uC640) \uC5F0\uAD00\uB41C "{1}" \uC18D\uC131\uC758 "{2}" \uC811\uB450\uC5B4\uAC00 \uBC14\uC778\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
++        EmptyPrefixedAttName = "{0}" \uC18D\uC131\uC758 \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uC811\uB450\uC5B4\uAC00 \uC9C0\uC815\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uBC14\uC778\uB529\uC740 \uBE44\uC6CC \uB458 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
++        PrefixDeclared = \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uC811\uB450\uC5B4 "{0}"\uC774(\uAC00) \uC120\uC5B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+         CantBindXMLNS = "xmlns" \uC811\uB450\uC5B4\uB294 \uBA85\uC2DC\uC801\uC73C\uB85C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uBC14\uC778\uB4DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "xmlns"\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB3C4 \uBA85\uC2DC\uC801\uC73C\uB85C \uC811\uB450\uC5B4\uC5D0 \uBC14\uC778\uB4DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+         CantBindXML = "xml" \uC811\uB450\uC5B4\uB294 \uC77C\uBC18 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uC544\uB2CC \uB2E4\uB978 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uBC14\uC778\uB4DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "xml"\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB3C4 "xml" \uC774\uC678\uC758 \uC811\uB450\uC5B4\uC5D0 \uBC14\uC778\uB4DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+-        MSG_ATT_DEFAULT_INVALID = \"{0}\" \uC18D\uC131\uC758 defaultValue \"{1}\"\uC740(\uB294) \uC774 \uC18D\uC131 \uC720\uD615\uC758 \uB809\uC2DC\uCE7C \uC81C\uC57D \uC870\uAC74\uC5D0 \uB300\uD55C \uAC12\uC73C\uB85C \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
++        MSG_ATT_DEFAULT_INVALID = "{0}" \uC18D\uC131\uC758 defaultValue "{1}"\uC740(\uB294) \uC774 \uC18D\uC131 \uC720\uD615\uC758 \uB809\uC2DC\uCE7C \uC81C\uC57D \uC870\uAC74\uC5D0 \uB300\uD55C \uAC12\uC73C\uB85C \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=\uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uC774 \uBB38\uC11C\uC5D0\uC11C \"{0}\"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC5D4\uD2F0\uD2F0 \uD655\uC7A5\uC744 \uBC1C\uACAC\uD588\uC2B5\uB2C8\uB2E4. \uC774\uB294 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uC774 \uBB38\uC11C\uC5D0\uC11C "{0}"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC5D4\uD2F0\uD2F0 \uD655\uC7A5\uC744 \uBC1C\uACAC\uD588\uC2B5\uB2C8\uB2E4. \uC774\uB294 JDK\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
++        ElementAttributeLimit=JAXP00010002:  "{0}" \uC694\uC18C\uC5D0 "{1}"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC18D\uC131\uC774 \uC788\uC2B5\uB2C8\uB2E4. "{1}"\uC740(\uB294) JDK\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
++        MaxEntitySizeLimit=JAXP00010003: "{0}" \uC5D4\uD2F0\uD2F0\uC758 \uAE38\uC774\uAC00 "{3}"\uC5D0\uC11C \uC124\uC815\uB41C "{2}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{1}"\uC785\uB2C8\uB2E4.
++        TotalEntitySizeLimit=JAXP00010004: \uC5D4\uD2F0\uD2F0\uC758 \uB204\uC801 \uD06C\uAE30 "{0}"\uC774(\uAC00) "{2}"\uC5D0\uC11C \uC124\uC815\uB41C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.
++        MaxXMLNameLimit=JAXP00010005: "{0}" \uC774\uB984\uC774 "{2}"\uC5D0\uC11C \uC124\uC815\uB41C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= \"{0}\" \uC694\uC18C\uC5D0 \"{1}\"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC18D\uC131\uC774 \uC788\uC2B5\uB2C8\uB2E4. \"{1}\"\uC740(\uB294) \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_pt_BR.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no pr\u00F3logo do documento.
+         InvalidCharInXMLDecl = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na declara\u00E7\u00E3o XML.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = A sequ\u00EAncia de caracteres \"]]>\" n\u00E3o deve aparecer no conte\u00FAdo, a menos que seja usada para marcar o fim de uma se\u00E7\u00E3o CDATA.
++        CDEndInContent = A sequ\u00EAncia de caracteres "]]>" n\u00E3o deve aparecer no conte\u00FAdo, a menos que seja usada para marcar o fim de uma se\u00E7\u00E3o CDATA.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = A se\u00E7\u00E3o CDATA deve terminar com \"]]>\".
++        CDSectUnterminated = A se\u00E7\u00E3o CDATA deve terminar com "]]>".
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = A declara\u00E7\u00E3o XML pode aparecer somente bem no in\u00EDcio do documento.
+-        EqRequiredInXMLDecl = O caractere '' = '' deve estar ap\u00F3s \"{0}\" na declara\u00E7\u00E3o XML.
+-        QuoteRequiredInXMLDecl = O valor ap\u00F3s \"{0}\" na declara\u00E7\u00E3o XML deve ser uma string entre aspas.
+-        XMLDeclUnterminated = A declara\u00E7\u00E3o XML deve terminar com \"?>\".
++        EqRequiredInXMLDecl = O caractere '' = '' deve estar ap\u00F3s "{0}" na declara\u00E7\u00E3o XML.
++        QuoteRequiredInXMLDecl = O valor ap\u00F3s "{0}" na declara\u00E7\u00E3o XML deve ser uma string entre aspas.
++        XMLDeclUnterminated = A declara\u00E7\u00E3o XML deve terminar com "?>".
+         VersionInfoRequired = A vers\u00E3o \u00E9 obrigat\u00F3ria na declara\u00E7\u00E3o XML.
+         SpaceRequiredBeforeVersionInXMLDecl = O espa\u00E7o em branco \u00E9 necess\u00E1rio antes do pseudo-atributo da vers\u00E3o na declara\u00E7\u00E3o XML.
+         SpaceRequiredBeforeEncodingInXMLDecl = O espa\u00E7o em branco \u00E9 necess\u00E1rio antes de codificar o pseudo-atributo na declara\u00E7\u00E3o XML.
+@@ -71,85 +68,86 @@
+         ReferenceIllegalInTrailingMisc=A refer\u00EAncia n\u00E3o \u00E9 permitida na se\u00E7\u00E3o \u00E0 esquerda.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = O valor da declara\u00E7\u00E3o do documento stand-alone deve ser \"sim\" ou \"n\u00E3o\", mas n\u00E3o deve ser \"{0}\".
++        SDDeclInvalid = O valor da declara\u00E7\u00E3o do documento stand-alone deve ser "sim" ou "n\u00E3o", mas n\u00E3o deve ser "{0}".
++        SDDeclNameInvalid = O nome standalone na declara\u00E7\u00E3o XML pode estar grafado incorretamente.
+ # 2.12 Language Identification
+-        XMLLangInvalid = O valor do atributo xml:lang \"{0}\" \u00E9 um identificador de idioma inv\u00E1lido.
++        XMLLangInvalid = O valor do atributo xml:lang "{0}" \u00E9 um identificador de idioma inv\u00E1lido.
+ # 3. Logical Structures
+-        ETagRequired = O tipo de elemento {0}\" deve ser encerrado pela tag final correspondente \"</{0}>\".
++        ETagRequired = O tipo de elemento {0}" deve ser encerrado pela tag final correspondente "</{0}>".
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = O tipo de elemento \"{0}\" deve ser seguido pelas especifica\u00E7\u00F5es do atributo, \">\" ou \"/>\".
+-        EqRequiredInAttribute = O nome do atributo \"{1}\" associado a um tipo de elemento \"{0}\" deve ser seguido do caractere '' = ''.
+-        OpenQuoteExpected = S\u00E3o esperadas aspas de abertura para o atributo \"{1}\" associado a um tipo de elemento \"{0}\".
+-        CloseQuoteExpected = S\u00E3o esperadas aspas de fechamento para o atributo \"{1}\" associado a um tipo de elemento \"{0}\".
+-        AttributeNotUnique = O atributo \"{1}\" j\u00E1 foi especificado para o elemento \"{0}\".
+-        AttributeNSNotUnique = O atributo \"{1}\" vinculado ao namespace \"{2}\" j\u00E1 foi especificado para o elemento \"{0}\".
+-        ETagUnterminated = A tag final do tipo de elemento \"{0}\" deve terminar com um delimitador ''>".
++        ElementUnterminated = O tipo de elemento "{0}" deve ser seguido pelas especifica\u00E7\u00F5es do atributo, ">" ou "/>".
++        EqRequiredInAttribute = O nome do atributo "{1}" associado a um tipo de elemento "{0}" deve ser seguido do caractere '' = ''.
++        OpenQuoteExpected = S\u00E3o esperadas aspas de abertura para o atributo "{1}" associado a um tipo de elemento "{0}".
++        CloseQuoteExpected = S\u00E3o esperadas aspas de fechamento para o atributo "{1}" associado a um tipo de elemento "{0}".
++        AttributeNotUnique = O atributo "{1}" j\u00E1 foi especificado para o elemento "{0}".
++        AttributeNSNotUnique = O atributo "{1}" vinculado ao namespace "{2}" j\u00E1 foi especificado para o elemento "{0}".
++        ETagUnterminated = A tag final do tipo de elemento "{0}" deve terminar com um delimitador ''>".
+         MarkupNotRecognizedInContent = O conte\u00FAdo dos elementos deve consistir em dados ou marca\u00E7\u00E3o do caractere correto.
+         DoctypeIllegalInContent = Um DOCTYPE n\u00E3o \u00E9 permitido no conte\u00FAdo.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = A refer\u00EAncia deve ser encerrada por um delimitador ';'.
+ # 4.3.2 Well-Formed Parsed Entities
+-        ReferenceNotInOneEntity = A refer\u00EAncia deve estar totalmente contida na mesma entidade submetida a parse.
+-        ElementEntityMismatch = O elemento \"{0}\" deve come\u00E7ar e terminar com a mesma entidade.
++        ReferenceNotInOneEntity = A refer\u00EAncia deve estar totalmente contida na mesma entidade submetida a parsing.
++        ElementEntityMismatch = O elemento "{0}" deve come\u00E7ar e terminar com a mesma entidade.
+         MarkupEntityMismatch=As estruturas do documento XML devem come\u00E7ar e terminar com a mesma entidade.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = Um caractere XML inv\u00E1lido (Unicode: 0x {2}) foi encontrado no valor do atributo \"{1}\" e o elemento \u00E9 \"{0}\".
++        InvalidCharInAttValue = Um caractere XML inv\u00E1lido (Unicode: 0x {2}) foi encontrado no valor do atributo "{1}" e o elemento \u00E9 "{0}".
+         InvalidCharInComment = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado no coment\u00E1rio.
+         InvalidCharInPI = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na instru\u00E7\u00E3o de processamento.
+         InvalidCharInInternalSubset = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no subconjunto interno do DTD.
+         InvalidCharInTextDecl = Um caractere XML inv\u00E1lido (Unicode: 0x{0}) foi encontrado na declara\u00E7\u00E3o de texto.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = O valor do atributo \"{1}\" deve come\u00E7ar com aspas simples ou duplas.
+-        LessthanInAttValue = O valor do atributo \"{1}\" associado a um tipo de elemento \"{0}\" n\u00E3o deve conter o caractere ''<''.
+-        AttributeValueUnterminated = O valor do atributo \"{1}\" deve terminar com as aspas correspondentes.
++        QuoteRequiredInAttValue = O valor do atributo "{1}" deve come\u00E7ar com aspas simples ou duplas.
++        LessthanInAttValue = O valor do atributo "{1}" associado a um tipo de elemento "{0}" n\u00E3o deve conter o caractere ''<''.
++        AttributeValueUnterminated = O valor do atributo "{1}" deve terminar com as aspas correspondentes.
+ # 2.5 Comments
+-        InvalidCommentStart = O coment\u00E1rio deve come\u00E7ar com \"<!--\".
+-        DashDashInComment = A string \"--\" n\u00E3o \u00E9 permitida nos coment\u00E1rios.
+-        CommentUnterminated = O coment\u00E1rio deve terminar com \"-->\".
++        InvalidCommentStart = O coment\u00E1rio deve come\u00E7ar com "<!--".
++        DashDashInComment = A string "--" n\u00E3o \u00E9 permitida nos coment\u00E1rios.
++        CommentUnterminated = O coment\u00E1rio deve terminar com "-->".
+         COMMENT_NOT_IN_ONE_ENTITY = O coment\u00E1rio n\u00E3o est\u00E1 entre chaves na mesma entidade.
+ # 2.6 Processing Instructions
+         PITargetRequired = A instru\u00E7\u00E3o de processamento deve come\u00E7ar com o nome do destino.
+         SpaceRequiredInPI = O espa\u00E7o em branco \u00E9 obrigat\u00F3rio entre o destino da instru\u00E7\u00E3o de processamento e os dados.
+-        PIUnterminated = A instru\u00E7\u00E3o de processamento deve terminar com \"?>\".
+-        ReservedPITarget = O destino da instru\u00E7\u00E3o de processamento correspondente \"[xX][mM][lL]\" n\u00E3o \u00E9 permitido.
++        PIUnterminated = A instru\u00E7\u00E3o de processamento deve terminar com "?>".
++        ReservedPITarget = O destino da instru\u00E7\u00E3o de processamento correspondente "[xX][mM][lL]" n\u00E3o \u00E9 permitido.
+         PI_NOT_IN_ONE_ENTITY = A instru\u00E7\u00E3o de processamento n\u00E3o est\u00E1 entre chaves na mesma entidade.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = Vers\u00E3o inv\u00E1lida \"{0}\".
+-        VersionNotSupported = Vers\u00E3o XML \"{0}\" n\u00E3o suportada; somente XML 1.0 \u00E9 suportada.
+-        VersionNotSupported11 = Vers\u00E3o XML \"{0}\" n\u00E3o suportada, somente XML 1.0 e XML 1.1 s\u00E3o suportadas.
++        VersionInfoInvalid = Vers\u00E3o inv\u00E1lida "{0}".
++        VersionNotSupported = Vers\u00E3o XML "{0}" n\u00E3o suportada; somente XML 1.0 \u00E9 suportada.
++        VersionNotSupported11 = Vers\u00E3o XML "{0}" n\u00E3o suportada, somente XML 1.0 e XML 1.1 s\u00E3o suportadas.
+         VersionMismatch= Uma entidade n\u00E3o pode incluir outra entidade de uma vers\u00E3o posterior.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = Uma representa\u00E7\u00E3o decimal deve seguir imediatamente o \"&#\" em uma refer\u00EAncia de caractere.
+-        HexdigitRequiredInCharRef = Uma representa\u00E7\u00E3o hexadecimal deve seguir imediatamente o \"&#\" em uma refer\u00EAncia de caractere.
++        DigitRequiredInCharRef = Uma representa\u00E7\u00E3o decimal deve seguir imediatamente o "&#" em uma refer\u00EAncia de caractere.
++        HexdigitRequiredInCharRef = Uma representa\u00E7\u00E3o hexadecimal deve seguir imediatamente o "&#" em uma refer\u00EAncia de caractere.
+         SemicolonRequiredInCharRef = A refer\u00EAncia de caractere deve terminar com o delimitador ';'.
+-        InvalidCharRef = A refer\u00EAncia do caractere \"&#{0}\" \u00E9 um caractere XML inv\u00E1lido.
++        InvalidCharRef = A refer\u00EAncia do caractere "&#{0}" \u00E9 um caractere XML inv\u00E1lido.
+         NameRequiredInReference = O nome da entidade deve seguir imediatamente o '&' na refer\u00EAncia da entidade.
+-        SemicolonRequiredInReference = A refer\u00EAncia \u00E0 entidade \"{0}\" deve terminar com o delimitador '';''.
++        SemicolonRequiredInReference = A refer\u00EAncia \u00E0 entidade "{0}" deve terminar com o delimitador '';''.
+ # 4.3.1 The Text Declaration
+-        TextDeclMustBeFirst = A declara\u00E7\u00E3o de texto somente pode aparecer bem no in\u00EDcio da entidade externa submetida a parse.
+-        EqRequiredInTextDecl = O caractere '' = '' deve estar ap\u00F3s \"{0}\" na declara\u00E7\u00E3o de texto.
+-        QuoteRequiredInTextDecl = O valor ap\u00F3s \"{0}\" na declara\u00E7\u00E3o de texto deve ser uma string entre aspas.
+-        CloseQuoteMissingInTextDecl = n\u00E3o foi encontrada a aspa de fechamento no valor ap\u00F3s "{0}\" na declara\u00E7\u00E3o de texto.
++        TextDeclMustBeFirst = A declara\u00E7\u00E3o de texto somente pode aparecer bem no in\u00EDcio da entidade externa submetida a parsing.
++        EqRequiredInTextDecl = O caractere '' = '' deve estar ap\u00F3s "{0}" na declara\u00E7\u00E3o de texto.
++        QuoteRequiredInTextDecl = O valor ap\u00F3s "{0}" na declara\u00E7\u00E3o de texto deve ser uma string entre aspas.
++        CloseQuoteMissingInTextDecl = n\u00E3o foi encontrada a aspa de fechamento no valor ap\u00F3s "{0}" na declara\u00E7\u00E3o de texto.
+         SpaceRequiredBeforeVersionInTextDecl = O espa\u00E7o em branco \u00E9 necess\u00E1rio antes do pseudo-atributo da vers\u00E3o na declara\u00E7\u00E3o de texto.
+         SpaceRequiredBeforeEncodingInTextDecl = O espa\u00E7o em branco \u00E9 necess\u00E1rio antes de codificar o pseudo-atributo na declara\u00E7\u00E3o de texto.
+-        TextDeclUnterminated = A declara\u00E7\u00E3o de texto deve terminar com \"?>\".
++        TextDeclUnterminated = A declara\u00E7\u00E3o de texto deve terminar com "?>".
+         EncodingDeclRequired = A declara\u00E7\u00E3o de codifica\u00E7\u00E3o \u00E9 necess\u00E1ria na declara\u00E7\u00E3o de texto.
+         NoMorePseudoAttributes = N\u00E3o s\u00E3o mais permitidos pseudo-atributos.
+         MorePseudoAttributes = S\u00E3o esperados mais pseudo-atributos.
+         PseudoAttrNameExpected = \u00C9 esperado um nome de um pseudo-atributo. 
+ # 4.3.2 Well-Formed Parsed Entities
+-        CommentNotInOneEntity = O coment\u00E1rio deve estar totalmente contido na mesma entidade submetida a parse.
+-        PINotInOneEntity = A instru\u00E7\u00E3o de processamento deve estar totalmente contida na mesma entidade submetida a parse.
++        CommentNotInOneEntity = O coment\u00E1rio deve estar totalmente contido na mesma entidade submetida a parsing.
++        PINotInOneEntity = A instru\u00E7\u00E3o de processamento deve estar totalmente contida na mesma entidade submetida a parsing.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = Nome da codifica\u00E7\u00E3o inv\u00E1lida \"{0}\".
+-        EncodingByteOrderUnsupported = A ordem de bytes fornecida para codifica\u00E7\u00E3o \"{0}\" n\u00E3o \u00E9 suportada.
++        EncodingDeclInvalid = Nome da codifica\u00E7\u00E3o inv\u00E1lida "{0}".
++        EncodingByteOrderUnsupported = A ordem de bytes fornecida para codifica\u00E7\u00E3o "{0}" n\u00E3o \u00E9 suportada.
+         InvalidByte = Byte inv\u00E1lido {0} da sequ\u00EAncia UTF-8 do byte {1}.
+         ExpectedByte = Esperava {0} byte da sequ\u00EAncia UTF-8 do byte {1}.  
+         InvalidHighSurrogate = Os bits substitutos altos na sequ\u00EAncia da UTF-8 n\u00E3o devem exceder 0x10 mas foi encontrado 0x{0}.
+-        OperationNotSupported = A opera\u00E7\u00E3o \"{0}\" n\u00E3o \u00E9 suportada pelo leitor {1}.
+-        InvalidASCII = O byte \"{0}\" n\u00E3o \u00E9 membro do conjunto de caracteres ASCII (7 bits).
++        OperationNotSupported = A opera\u00E7\u00E3o "{0}" n\u00E3o \u00E9 suportada pelo leitor {1}.
++        InvalidASCII = O byte "{0}" n\u00E3o \u00E9 membro do conjunto de caracteres ASCII (7 bits).
+         CharConversionFailure = Uma entidade destinada a estar em uma determinada codifica\u00E7\u00E3o n\u00E3o deve conter sequ\u00EAncias inv\u00E1lidas na referida codifica\u00E7\u00E3o.
+         
+ # DTD Messages
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = O caractere XML (Unicode: 0x{0}) n\u00E3o \u00E9 permitido no identificador p\u00FAblico.
+         SpaceRequiredBetweenPublicAndSystem = Espa\u00E7os em branco s\u00E3o necess\u00E1rios entre publicId e systemId.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s \"<!DOCTYPE\" na declara\u00E7\u00E3o do tipo de documento.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = O tipo de elemento-raiz deve aparecer ap\u00F3s \"<!DOCTYPE\" na declara\u00E7\u00E3o do tipo de documento.
+-        DoctypedeclUnterminated = A declara\u00E7\u00E3o do tipo de documento do tipo de elemento \"{0}\" deve terminar com ''>''.
+-        PEReferenceWithinMarkup = A refer\u00EAncia da entidade do par\u00E2metro \"%{0};\" n\u00E3o pode ocorrer na marca\u00E7\u00E3o no subconjunto interno do DTD.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!DOCTYPE" na declara\u00E7\u00E3o do tipo de documento.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = O tipo de elemento-raiz deve aparecer ap\u00F3s "<!DOCTYPE" na declara\u00E7\u00E3o do tipo de documento.
++        DoctypedeclUnterminated = A declara\u00E7\u00E3o do tipo de documento do tipo de elemento "{0}" deve terminar com ''>''.
++        PEReferenceWithinMarkup = A refer\u00EAncia da entidade do par\u00E2metro "%{0};" n\u00E3o pode ocorrer na marca\u00E7\u00E3o no subconjunto interno do DTD.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = As declara\u00E7\u00F5es de marca\u00E7\u00E3o contidas ou apontadas pela declara\u00E7\u00E3o do tipo de documento devem estar corretas.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = Deve ser fornecida a declara\u00E7\u00E3o do atributo para \"xml:space\" como um tipo enumerado, cujo os \u00FAnicos valores poss\u00EDveis s\u00E3o \"default\" e \"preserve\".
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = Deve ser fornecida a declara\u00E7\u00E3o do atributo para "xml:space" como um tipo enumerado, cujo os \u00FAnicos valores poss\u00EDveis s\u00E3o "default" e "preserve".
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s \"<!ELEMENT\" na declara\u00E7\u00E3o do tipo de elemento.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!ELEMENT" na declara\u00E7\u00E3o do tipo de elemento.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = O tipo de elemento \u00E9 necess\u00E1rio na declara\u00E7\u00E3o do tipo de elemento.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s o tipo de elemento \"{0}\" na declara\u00E7\u00E3o do tipo de elemento.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = A restri\u00E7\u00E3o \u00E9 necess\u00E1ria ap\u00F3s o tipo de elemento \"{0}\" na declara\u00E7\u00E3o do tipo de elemento.
+-        ElementDeclUnterminated = A declara\u00E7\u00E3o do tipo de elemento \"{0}\" deve terminar com ''>''.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s o tipo de elemento "{0}" na declara\u00E7\u00E3o do tipo de elemento.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = A restri\u00E7\u00E3o \u00E9 necess\u00E1ria ap\u00F3s o tipo de elemento "{0}" na declara\u00E7\u00E3o do tipo de elemento.
++        ElementDeclUnterminated = A declara\u00E7\u00E3o do tipo de elemento "{0}" deve terminar com ''>''.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u00C9 necess\u00E1rio um caractere ''('' ou um tipo de elemento na declara\u00E7\u00E3o do tipo de elemento \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u00C9 necess\u00E1rio um caractere '')'' na declara\u00E7\u00E3o do tipo de elemento \"{0}\".
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u00C9 necess\u00E1rio um caractere ''('' ou um tipo de elemento na declara\u00E7\u00E3o do tipo de elemento "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u00C9 necess\u00E1rio um caractere '')'' na declara\u00E7\u00E3o do tipo de elemento "{0}".
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u00C9 necess\u00E1rio um tipo de elemento na declara\u00E7\u00E3o do tipo de elemento \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u00C9 necess\u00E1rio um caractere '')'' na declara\u00E7\u00E3o do tipo de elemento \"{0}\".
+-        MixedContentUnterminated = O modelo de conte\u00FAdo misto \"{0}\" deve terminar com \")*\" quando os tipos de elementos filhos forem restringidos.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u00C9 necess\u00E1rio um tipo de elemento na declara\u00E7\u00E3o do tipo de elemento "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u00C9 necess\u00E1rio um caractere '')'' na declara\u00E7\u00E3o do tipo de elemento "{0}".
++        MixedContentUnterminated = O modelo de conte\u00FAdo misto "{0}" deve terminar com ")*" quando os tipos de elementos filhos forem restringidos.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s \"<!ATTLIST\" na declara\u00E7\u00E3o da lista de atributos.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!ATTLIST" na declara\u00E7\u00E3o da lista de atributos.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = \u00C9 necess\u00E1rio o tipo de elemento na declara\u00E7\u00E3o da lista de atributos.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do nome do atributo na declara\u00E7\u00E3o da lista de atributos do elemento \"{0}\".
+-        AttNameRequiredInAttDef = O nome do atributo deve ser especificado na declara\u00E7\u00E3o da lista de atributos do elemento \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do tipo de atributo na declara\u00E7\u00E3o do atributo \"{1}\" do elemento \"{0}\".
+-        AttTypeRequiredInAttDef = \u00C9 necess\u00E1rio o tipo de atributo na declara\u00E7\u00E3o do atributo \"{1}\" do elemento \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do default do atributo na declara\u00E7\u00E3o do atributo \"{1}\" do elemento \"{0}\".
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Mais de uma defini\u00E7\u00E3o de atributo fornecida para o mesmo atributo \"{1}\" de um determinado elemento \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do nome do atributo na declara\u00E7\u00E3o da lista de atributos do elemento "{0}".
++        AttNameRequiredInAttDef = O nome do atributo deve ser especificado na declara\u00E7\u00E3o da lista de atributos do elemento "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do tipo de atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
++        AttTypeRequiredInAttDef = \u00C9 necess\u00E1rio o tipo de atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u00C9 necess\u00E1rio o espa\u00E7o em branco antes do default do atributo na declara\u00E7\u00E3o do atributo "{1}" do elemento "{0}".
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Mais de uma defini\u00E7\u00E3o de atributo fornecida para o mesmo atributo "{1}" de um determinado elemento "{0}".
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = O espa\u00E7o em branco deve aparecer ap\u00F3s \"NOTATION\" na declara\u00E7\u00E3o do atributo \"{1}\".
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = O caractere ''('' deve estar ap\u00F3s \"NOTATION\" na declara\u00E7\u00E3o do atributo \"{1}\".
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \u00C9 necess\u00E1rio o nome da nota\u00E7\u00E3o na lista de tipos de nota\u00E7\u00E3o para a declara\u00E7\u00E3o do atributo \"{1}\".
+-        NotationTypeUnterminated = A lista de tipos de nota\u00E7\u00E3o deve terminar com '')'' na declara\u00E7\u00E3o do atributo \"{1}\".
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = O token do nome \u00E9 obrigat\u00F3rio na lista de tipos enumerada para a declara\u00E7\u00E3o do atributo \"{1}\".
+-        EnumerationUnterminated = A lista de tipos enumerada deve terminar com '')'' na declara\u00E7\u00E3o do atributo \"{1}\".
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = O valor da enumera\u00E7\u00E3o \"{1}\" foi especificado mais de uma vez na declara\u00E7\u00E3o do atributo \"{2}\" do elemento \"{0}\". Os NMTOKENS em uma declara\u00E7\u00E3o de atributo de Enumera\u00E7\u00E3o \u00FAnica devem ser todos distintos.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = O valor da enumera\u00E7\u00E3o \"{1}\" foi especificado mais de uma vez na declara\u00E7\u00E3o do atributo \"{2}\" do elemento \"{0}\". Os nomes da NOTATION em uma declara\u00E7\u00E3o do atributo NotationType \u00FAnica devem ser todos distintos.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = O espa\u00E7o em branco deve aparecer ap\u00F3s "NOTATION" na declara\u00E7\u00E3o do atributo "{1}".
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = O caractere ''('' deve estar ap\u00F3s "NOTATION" na declara\u00E7\u00E3o do atributo "{1}".
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \u00C9 necess\u00E1rio o nome da nota\u00E7\u00E3o na lista de tipos de nota\u00E7\u00E3o para a declara\u00E7\u00E3o do atributo "{1}".
++        NotationTypeUnterminated = A lista de tipos de nota\u00E7\u00E3o deve terminar com '')'' na declara\u00E7\u00E3o do atributo "{1}".
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = O token do nome \u00E9 obrigat\u00F3rio na lista de tipos enumerada para a declara\u00E7\u00E3o do atributo "{1}".
++        EnumerationUnterminated = A lista de tipos enumerada deve terminar com '')'' na declara\u00E7\u00E3o do atributo "{1}".
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = O valor da enumera\u00E7\u00E3o "{1}" foi especificado mais de uma vez na declara\u00E7\u00E3o do atributo "{2}" do elemento "{0}". Os NMTOKENS em uma declara\u00E7\u00E3o de atributo de Enumera\u00E7\u00E3o \u00FAnica devem ser todos distintos.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = O valor da enumera\u00E7\u00E3o "{1}" foi especificado mais de uma vez na declara\u00E7\u00E3o do atributo "{2}" do elemento "{0}". Os nomes da NOTATION em uma declara\u00E7\u00E3o do atributo NotationType \u00FAnica devem ser todos distintos.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = O espa\u00E7o em branco deve aparecer ap\u00F3s \"FIXED\" na declara\u00E7\u00E3o do atributo \"{1}\".
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = O espa\u00E7o em branco deve aparecer ap\u00F3s "FIXED" na declara\u00E7\u00E3o do atributo "{1}".
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = A se\u00E7\u00E3o condicional inclu\u00EDda deve terminar com \"]]>\".
+-        IgnoreSectUnterminated = A se\u00E7\u00E3o condicional exclu\u00EDda deve terminar com \"]]>\".
++        IncludeSectUnterminated = A se\u00E7\u00E3o condicional inclu\u00EDda deve terminar com "]]>".
++        IgnoreSectUnterminated = A se\u00E7\u00E3o condicional exclu\u00EDda deve terminar com "]]>".
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = O nome da entidade deve seguir imediatamente o '%' na refer\u00EAncia da entidade do par\u00E2metro.
+-        SemicolonRequiredInPEReference = A refer\u00EAncia da entidade do par\u00E2metro \"%{0};\" deve terminar com o delimitador '';".
++        SemicolonRequiredInPEReference = A refer\u00EAncia da entidade do par\u00E2metro "%{0};" deve terminar com o delimitador '';".
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s \"<!ENTITY\" na declara\u00E7\u00E3o da entidade.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre \"<!ENTITY\" e o caractere '%' na declara\u00E7\u00E3o da entidade do par\u00E2metro.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!ENTITY" na declara\u00E7\u00E3o da entidade.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre "<!ENTITY" e o caractere '%' na declara\u00E7\u00E3o da entidade do par\u00E2metro.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre '%' e o nome da entidade na declara\u00E7\u00E3o da entidade do par\u00E2metro.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = O nome da entidade \u00E9 necess\u00E1rio na declara\u00E7\u00E3o da entidade.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre o nome da entidade \"{0}\" e a defini\u00E7\u00E3o da declara\u00E7\u00E3o da entidade.
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u00C9 necess\u00E1rio um espa\u00E7o em branco entre \"NDATA\" e o nome da nota\u00E7\u00E3o na declara\u00E7\u00E3o da entidade \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio antes de \"NDATA\" na declara\u00E7\u00E3o da entidade \"{0}\".
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = O nome da nota\u00E7\u00E3o \u00E9 necess\u00E1rio ap\u00F3s \"NDATA\" na declara\u00E7\u00E3o da entidade \"{0}\".
+-        EntityDeclUnterminated = A declara\u00E7\u00E3o da entidade \"{0}\" deve terminar com ''>''.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = A entidade \"{0}\" foi declarada mais de uma vez.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre o nome da entidade "{0}" e a defini\u00E7\u00E3o da declara\u00E7\u00E3o da entidade.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u00C9 necess\u00E1rio um espa\u00E7o em branco entre "NDATA" e o nome da nota\u00E7\u00E3o na declara\u00E7\u00E3o da entidade "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio antes de "NDATA" na declara\u00E7\u00E3o da entidade "{0}".
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = O nome da nota\u00E7\u00E3o \u00E9 necess\u00E1rio ap\u00F3s "NDATA" na declara\u00E7\u00E3o da entidade "{0}".
++        EntityDeclUnterminated = A declara\u00E7\u00E3o da entidade "{0}" deve terminar com ''>''.
++	MSG_DUPLICATE_ENTITY_DEFINITION = A entidade "{0}" foi declarada mais de uma vez.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = A declara\u00E7\u00E3o da entidade externa deve come\u00E7ar com \"SYSTEM\" ou \"PUBLIC\".
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre \"PUBLIC\" e o identificador p\u00FAblico.
++        ExternalIDRequired = A declara\u00E7\u00E3o da entidade externa deve come\u00E7ar com "SYSTEM" ou "PUBLIC".
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre "PUBLIC" e o identificador p\u00FAblico.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre o identificador p\u00FAblico e o identificador do sistema.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre \"SYSTEM\" e o identificador do sistema.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = O identificador do fragmento n\u00E3o deve ser especificado como parte do identificador do sistema \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = O espa\u00E7o em branco \u00E9 necess\u00E1rio entre "SYSTEM" e o identificador do sistema.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = O identificador do fragmento n\u00E3o deve ser especificado como parte do identificador do sistema "{0}".
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s \"<!NOTATION\" na declara\u00E7\u00E3o da nota\u00E7\u00E3o.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!NOTATION" na declara\u00E7\u00E3o da nota\u00E7\u00E3o.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = O nome da nota\u00E7\u00E3o \u00E9 obrigat\u00F3rio na declara\u00E7\u00E3o de nota\u00E7\u00E3o.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s o nome da nota\u00E7\u00E3o \"{0}\" na declara\u00E7\u00E3o de nota\u00E7\u00E3o.
+-        ExternalIDorPublicIDRequired = A declara\u00E7\u00E3o da nota\u00E7\u00E3o \"{0}\" deve incluir um identificador p\u00FAblico ou do sistema.
+-        NotationDeclUnterminated = A declara\u00E7\u00E3o da nota\u00E7\u00E3o \"{0}\" deve terminar com ''>''.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s o nome da nota\u00E7\u00E3o "{0}" na declara\u00E7\u00E3o de nota\u00E7\u00E3o.
++        ExternalIDorPublicIDRequired = A declara\u00E7\u00E3o da nota\u00E7\u00E3o "{0}" deve incluir um identificador p\u00FAblico ou do sistema.
++        NotationDeclUnterminated = A declara\u00E7\u00E3o da nota\u00E7\u00E3o "{0}" deve terminar com ''>''.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = O tipo de elemento \"{1}\" j\u00E1 foi especificado no modelo de conte\u00FAdo da declara\u00E7\u00E3o do elemento \"{0}\".
+-        ENTITIESInvalid = O valor do atributo \"{1}\" do tipo ENTITIES deve ser o nome de uma ou mais entidades n\u00E3o submetidas a parse.
+-        ENTITYInvalid = O valor do atributo \"{1}\" do tipo ENTITY deve ser o nome de uma entidade n\u00E3o submetida a parse.
+-        IDDefaultTypeInvalid = O atributo do ID \"{0}\" deve ter um default declarado \"#IMPLIED\" ou \"#REQUIRED\".
+-        IDInvalid = O valor do atributo \"{0}\" do ID de tipo deve ser um nome.
+-        IDInvalidWithNamespaces = O valor do atributo \"{0}\" do ID de tipo deve ser um NCName quando os namespaces estiverem ativados.
+-        IDNotUnique = O valor do atributo \"{0}\" do ID de tipo deve ser exclusivo no documento.
+-        IDREFInvalid = O valor do atributo \"{0}\" do IDREF de tipo deve ser um nome.
+-        IDREFInvalidWithNamespaces = O valor do atributo \"{0}\" do IDREF de tipo deve ser um NCName quando os namespaces estiverem ativados.
+-        IDREFSInvalid = O valor do atributo \"{0}\" de tipo IDREFS deve ter um ou mais nomes.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro \"{0}\" deve incluir as declara\u00E7\u00F5es aninhadas corretamente quando a refer\u00EAncia da entidade for usada como uma declara\u00E7\u00E3o completa.
+-        ImproperDeclarationNesting = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro \"{0}\" deve incluir as declara\u00E7\u00F5es aninhadas corretamente.
+-        ImproperGroupNesting = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro \"{0}\" deve incluir pares de par\u00EAnteses aninhados corretamente.
+-        INVALID_PE_IN_CONDITIONAL = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro \"{0}\" deve incluir a se\u00E7\u00E3o condicional inteira ou apenas INCLUDE ou IGNORE.
+-        MSG_ATTRIBUTE_NOT_DECLARED = O atributo \"{1}\" deve ser declarado para o tipo de elemento \"{0}\".
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = O atributo \"{0}\" com o valor \"{1}\" deve ter um valor da lista \"{2}\".
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = O valor \"{1}\" do atributo \"{0}\" n\u00E3o deve ser alterado por meio da normaliza\u00E7\u00E3o (para \"{2}\") em um documento stand-alone.
+-        MSG_CONTENT_INCOMPLETE = O conte\u00FAdo do tipo de elemento \"{0}\" est\u00E1 incompleto; ele deve corresponder a \"{1}\".
+-        MSG_CONTENT_INVALID = O conte\u00FAdo do tipo de elemento \"{0}\" deve corresponder a \"{1}\".
+-        MSG_CONTENT_INVALID_SPECIFIED = O conte\u00FAdo do tipo de elemento \"{0}\" deve corresponder a \"{1}\". N\u00E3o s\u00E3o permitidos os filhos do tipo \"{2}\".
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = O atributo \"{1}\" do tipo de elemento \"{0}\" tem um valor default e deve ser especificado em um documento stand-alone.
+-        MSG_DUPLICATE_ATTDEF = O atributo \"{1}\" j\u00E1 foi declarado para o tipo de elemento \"{0}\".
+-        MSG_ELEMENT_ALREADY_DECLARED = O tipo de elemento \"{0}\" n\u00E3o deve ser declarado mais de uma vez.
+-        MSG_ELEMENT_NOT_DECLARED = O tipo de elemento \"{0}\" deve ser declarado.
++        DuplicateTypeInMixedContent = O tipo de elemento "{1}" j\u00E1 foi especificado no modelo de conte\u00FAdo da declara\u00E7\u00E3o do elemento "{0}".
++        ENTITIESInvalid = O valor do atributo "{1}" do tipo ENTITIES deve ser o nome de uma ou mais entidades n\u00E3o submetidas a parsing.
++        ENTITYInvalid = O valor do atributo "{1}" do tipo ENTITY deve ser o nome de uma entidade n\u00E3o submetida a parsing.
++        IDDefaultTypeInvalid = O atributo do ID "{0}" deve ter um default declarado "#IMPLIED" ou "#REQUIRED".
++        IDInvalid = O valor do atributo "{0}" do ID de tipo deve ser um nome.
++        IDInvalidWithNamespaces = O valor do atributo "{0}" do ID de tipo deve ser um NCName quando os namespaces estiverem ativados.
++        IDNotUnique = O valor do atributo "{0}" do ID de tipo deve ser exclusivo no documento.
++        IDREFInvalid = O valor do atributo "{0}" do IDREF de tipo deve ser um nome.
++        IDREFInvalidWithNamespaces = O valor do atributo "{0}" do IDREF de tipo deve ser um NCName quando os namespaces estiverem ativados.
++        IDREFSInvalid = O valor do atributo "{0}" de tipo IDREFS deve ter um ou mais nomes.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro "{0}" deve incluir as declara\u00E7\u00F5es aninhadas corretamente quando a refer\u00EAncia da entidade for usada como uma declara\u00E7\u00E3o completa.
++        ImproperDeclarationNesting = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro "{0}" deve incluir as declara\u00E7\u00F5es aninhadas corretamente.
++        ImproperGroupNesting = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro "{0}" deve incluir pares de par\u00EAnteses aninhados corretamente.
++        INVALID_PE_IN_CONDITIONAL = O texto de substitui\u00E7\u00E3o da entidade do par\u00E2metro "{0}" deve incluir a se\u00E7\u00E3o condicional inteira ou apenas INCLUDE ou IGNORE.
++        MSG_ATTRIBUTE_NOT_DECLARED = O atributo "{1}" deve ser declarado para o tipo de elemento "{0}".
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = O atributo "{0}" com o valor "{1}" deve ter um valor da lista "{2}".
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = O valor "{1}" do atributo "{0}" n\u00E3o deve ser alterado por meio da normaliza\u00E7\u00E3o (para "{2}") em um documento stand-alone.
++        MSG_CONTENT_INCOMPLETE = O conte\u00FAdo do tipo de elemento "{0}" est\u00E1 incompleto; ele deve corresponder a "{1}".
++        MSG_CONTENT_INVALID = O conte\u00FAdo do tipo de elemento "{0}" deve corresponder a "{1}".
++        MSG_CONTENT_INVALID_SPECIFIED = O conte\u00FAdo do tipo de elemento "{0}" deve corresponder a "{1}". N\u00E3o s\u00E3o permitidos os filhos do tipo "{2}".
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = O atributo "{1}" do tipo de elemento "{0}" tem um valor default e deve ser especificado em um documento stand-alone.
++        MSG_DUPLICATE_ATTDEF = O atributo "{1}" j\u00E1 foi declarado para o tipo de elemento "{0}".
++        MSG_ELEMENT_ALREADY_DECLARED = O tipo de elemento "{0}" n\u00E3o deve ser declarado mais de uma vez.
++        MSG_ELEMENT_NOT_DECLARED = O tipo de elemento "{0}" deve ser declarado.
+         MSG_GRAMMAR_NOT_FOUND = O documento \u00E9 inv\u00E1lido: nenhuma gram\u00E1tica encontrada.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = Um elemento com o identificador \"{0}\" deve aparecer no documento.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = A refer\u00EAncia \u00E0 entidade externa \"{0}\" n\u00E3o \u00E9 permitida em um documento stand-alone.
+-        MSG_FIXED_ATTVALUE_INVALID = O atributo \"{1}\" com o valor \"{2}\" deve ter um valor \"{3}\".
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = O tipo de elemento \"{0}\" j\u00E1 tem o atributo \"{1}\" do ID do tipo; um segundo atributo \"{2}\" do ID de tipo n\u00E3o \u00E9 permitido.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = O tipo de elemento \"{0}\" j\u00E1 tem o atributo \"{1}\" do tipo NOTATION; um segundo atributo \"{2}\" do tipo NOTATION n\u00E3o \u00E9 permitido.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = A nota\u00E7\u00E3o \"{1}\" deve ser declarada quando referenciada na lista de tipos de nota\u00E7\u00E3o do atributo \"{0}\".
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = A nota\u00E7\u00E3o \"{1}\" deve ser declarada quando referenciada na declara\u00E7\u00E3o da entidade n\u00E3o submetida a parse para \"{0}\".
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = A refer\u00EAncia \u00E0 entidade \"{0}\" declarada em uma entidade externa submetida a parse n\u00E3o \u00E9 permitida em um documento stand-alone.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = O atributo \"{1}\" \u00E9 necess\u00E1rio e deve ser especificado para o tipo de elemento \"{0}\".
+-        MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = N\u00E3o deve haver espa\u00E7o em branco entre os elementos declarados em uma entidade externa submetida a parse com o conte\u00FAdo do elemento em um documento stand-alone.
+-        NMTOKENInvalid = O valor do atributo \"{0}\" do tipo NMTOKEN deve ser um token de nome.
+-        NMTOKENSInvalid = O valor do atributo \"{0}\" do tipo NMTOKENS deve ter um ou mais tokens de nome.
+-        NoNotationOnEmptyElement = O tipo de elemento \"{0}\" que foi declarado EMPTY n\u00E3o pode declarar o atributo \"{1}\" do tipo NOTATION.
+-        RootElementTypeMustMatchDoctypedecl = O elemento-raiz do documento \"{1}\" deve corresponder \u00E0 raiz de DOCTYPE \"{0}\".
+-        UndeclaredElementInContentSpec = O modelo do conte\u00FAdo do elemento \"{0}\" refere-se ao elemento n\u00E3o declarado \"{1}\".
+-        UniqueNotationName = A declara\u00E7\u00E3o da nota\u00E7\u00E3o \"{0}\" n\u00E3o \u00E9 exclusiva. Um Nome fornecido n\u00E3o deve ser declarado em mais de uma declara\u00E7\u00E3o de nota\u00E7\u00E3o.
++        MSG_ELEMENT_WITH_ID_REQUIRED = Um elemento com o identificador "{0}" deve aparecer no documento.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = A refer\u00EAncia \u00E0 entidade externa "{0}" n\u00E3o \u00E9 permitida em um documento stand-alone.
++        MSG_FIXED_ATTVALUE_INVALID = O atributo "{1}" com o valor "{2}" deve ter um valor "{3}".
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = O tipo de elemento "{0}" j\u00E1 tem o atributo "{1}" do ID do tipo; um segundo atributo "{2}" do ID de tipo n\u00E3o \u00E9 permitido.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = O tipo de elemento "{0}" j\u00E1 tem o atributo "{1}" do tipo NOTATION; um segundo atributo "{2}" do tipo NOTATION n\u00E3o \u00E9 permitido.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = A nota\u00E7\u00E3o "{1}" deve ser declarada quando referenciada na lista de tipos de nota\u00E7\u00E3o do atributo "{0}".
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = A nota\u00E7\u00E3o "{1}" deve ser declarada quando referenciada na declara\u00E7\u00E3o da entidade n\u00E3o submetida a parsing para "{0}".
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = A refer\u00EAncia \u00E0 entidade "{0}" declarada em uma entidade externa submetida a parsing n\u00E3o \u00E9 permitida em um documento stand-alone.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = O atributo "{1}" \u00E9 necess\u00E1rio e deve ser especificado para o tipo de elemento "{0}".
++        MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = N\u00E3o deve haver espa\u00E7o em branco entre os elementos declarados em uma entidade externa submetida a parsing com o conte\u00FAdo do elemento em um documento stand-alone.
++        NMTOKENInvalid = O valor do atributo "{0}" do tipo NMTOKEN deve ser um token de nome.
++        NMTOKENSInvalid = O valor do atributo "{0}" do tipo NMTOKENS deve ter um ou mais tokens de nome.
++        NoNotationOnEmptyElement = O tipo de elemento "{0}" que foi declarado EMPTY n\u00E3o pode declarar o atributo "{1}" do tipo NOTATION.
++        RootElementTypeMustMatchDoctypedecl = O elemento-raiz do documento "{1}" deve corresponder \u00E0 raiz de DOCTYPE "{0}".
++        UndeclaredElementInContentSpec = O modelo do conte\u00FAdo do elemento "{0}" refere-se ao elemento n\u00E3o declarado "{1}".
++        UniqueNotationName = A declara\u00E7\u00E3o da nota\u00E7\u00E3o "{0}" n\u00E3o \u00E9 exclusiva. Um Nome fornecido n\u00E3o deve ser declarado em mais de uma declara\u00E7\u00E3o de nota\u00E7\u00E3o.
+         ENTITYFailedInitializeGrammar =  Validador de ENTITYDatatype: Falha ao chamar o m\u00E9todo de inicializa\u00E7\u00E3o com uma refer\u00EAncia de Gram\u00E1tica v\u00E1lida. \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\" n\u00E3o \u00E9 submetida a parse.
+-        ENTITYNotValid = ENTITY \"{0}\" n\u00E3o \u00E9 v\u00E1lida.
++        ENTITYNotUnparsed = ENTITY "{0}" n\u00E3o \u00E9 submetida a parsing.
++        ENTITYNotValid = ENTITY "{0}" n\u00E3o \u00E9 v\u00E1lida.
+         EmptyList = O valor dos tipos ENTITIES, IDREFS e NMTOKENS n\u00E3o pode estar na lista vazia.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = A refer\u00EAncia da entidade externa \"&{0};\" n\u00E3o \u00E9 permitida em um valor do atributo.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = A refer\u00EAncia da entidade externa "&{0};" n\u00E3o \u00E9 permitida em um valor do atributo.
++        AccessExternalDTD = DTD Externo: falha ao ler o DTD ''{0}'' externo porque o acesso a ''{1}'' n\u00E3o \u00E9 permitido em decorr\u00EAncia de uma restri\u00E7\u00E3o definida pela propriedade accessExternalDTD.
++        AccessExternalEntity = Entidade Externa: falha ao ler o documento ''{0}'' externo porque o acesso a ''{1}'' n\u00E3o \u00E9 permitido em decorr\u00EAncia de uma restri\u00E7\u00E3o definida pela propriedade accessExternalDTD.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = A entidade \"{0}\" foi referenciada, mas n\u00E3o declarada.
+-        ReferenceToUnparsedEntity = A refer\u00EAncia da entidade n\u00E3o submetida a parse \"&{0};\" n\u00E3o \u00E9 permitida.
+-        RecursiveReference = Refer\u00EAncia da entidade recursiva \"{0}\". (Caminho de refer\u00EAncia: {1}),
+-        RecursiveGeneralReference = Refer\u00EAncia geral da entidade recursiva \"&{0};\". (Caminho de refer\u00EAncia: {1}),
+-        RecursivePEReference = Refer\u00EAncia da entidade do par\u00E2metro recursivo \"%{0};\". (Caminho de refer\u00EAncia: {1}),
++        EntityNotDeclared = A entidade "{0}" foi referenciada, mas n\u00E3o declarada.
++        ReferenceToUnparsedEntity = A refer\u00EAncia da entidade n\u00E3o submetida a parsing "&{0};" n\u00E3o \u00E9 permitida.
++        RecursiveReference = Refer\u00EAncia da entidade recursiva "{0}". (Caminho de refer\u00EAncia: {1}),
++        RecursiveGeneralReference = Refer\u00EAncia geral da entidade recursiva "&{0};". (Caminho de refer\u00EAncia: {1}),
++        RecursivePEReference = Refer\u00EAncia da entidade do par\u00E2metro recursivo "%{0};". (Caminho de refer\u00EAncia: {1}),
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = A codifica\u00E7\u00E3o \"{0}\" n\u00E3o \u00E9 suportada.
+-        EncodingRequired = Uma entidade submetida a parse n\u00E3o codificada em UTF-8 nem em UTF-16 deve conter uma declara\u00E7\u00E3o de codifica\u00E7\u00E3o.
++        EncodingNotSupported = A codifica\u00E7\u00E3o "{0}" n\u00E3o \u00E9 suportada.
++        EncodingRequired = Uma entidade submetida a parsing n\u00E3o codificada em UTF-8 nem em UTF-16 deve conter uma declara\u00E7\u00E3o de codifica\u00E7\u00E3o.
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = O elemento ou o atributo n\u00E3o correspondem \u00E0 produ\u00E7\u00E3o QName: QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = O elemento \"{0}\" n\u00E3o pode ter \"xmlns\" como seu prefixo.
+-        ElementPrefixUnbound = O prefixo \"{0}\" do elemento \"{1}\" n\u00E3o est\u00E1 vinculado.
+-        AttributePrefixUnbound = O prefixo \"{2}\" do atributo \"{1}\" associado a um tipo de elemento \"{0}\" n\u00E3o est\u00E1 vinculado.
+-        EmptyPrefixedAttName = O valor do atributo \"{0}\" \u00E9 inv\u00E1lido. Associa\u00E7\u00F5es de namespace prefixadas n\u00E3o podem ficar vazias.
+-        PrefixDeclared = O prefixo do namespace \"{0}\" n\u00E3o foi declarado.
++        ElementXMLNSPrefix = O elemento "{0}" n\u00E3o pode ter "xmlns" como seu prefixo.
++        ElementPrefixUnbound = O prefixo "{0}" do elemento "{1}" n\u00E3o est\u00E1 vinculado.
++        AttributePrefixUnbound = O prefixo "{2}" do atributo "{1}" associado a um tipo de elemento "{0}" n\u00E3o est\u00E1 vinculado.
++        EmptyPrefixedAttName = O valor do atributo "{0}" \u00E9 inv\u00E1lido. Associa\u00E7\u00F5es de namespace prefixadas n\u00E3o podem ficar vazias.
++        PrefixDeclared = O prefixo do namespace "{0}" n\u00E3o foi declarado.
+         CantBindXMLNS = O prefixo "xmlns" n\u00E3o pode ser vinculado a um namespace explicitamente, assim como o namespace de "xmlns" n\u00E3o pode ser vinculado a um prefixo explicitamente.
+         CantBindXML = O prefixo "xml" n\u00E3o pode ser vinculado a um namespace diferente do namespace comum, assim como o namespace de "xml" n\u00E3o pode ser vinculado a um prefixo diferente de "xml".
+-        MSG_ATT_DEFAULT_INVALID = O defaultValue \"{1}\" do atributo \"{0}\" n\u00E3o \u00E9 v\u00E1lido para as restri\u00E7\u00F5es l\u00E9xicas deste tipo de atributo.
++        MSG_ATT_DEFAULT_INVALID = O defaultValue "{1}" do atributo "{0}" n\u00E3o \u00E9 v\u00E1lido para as restri\u00E7\u00F5es l\u00E9xicas deste tipo de atributo.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=O parser detectou mais de \"{0}\" expans\u00F5es da entidade neste documento. Este \u00E9 o limite imposto pela aplica\u00E7\u00E3o.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: O parser detectou mais de "{0}" expans\u00F5es da entidade neste documento. Este \u00E9 o limite imposto pelo JDK.
++        ElementAttributeLimit=JAXP00010002: o elemento "{0}" tem mais de "{1}" atributos. "{1}" \u00E9 o limite imposto pelo JDK.
++        MaxEntitySizeLimit=JAXP00010003: o tamanho da entidade "{0}" \u00E9 "{1}", o que excede o limite de "{2}" definido por "{3}".
++        TotalEntitySizeLimit=JAXP00010004: o tamanho acumulado  "{0}" de entidades excedeu o limite de "{1}" definido por "{2}".
++        MaxXMLNameLimit=JAXP00010005: o nome "{0}" excedeu o limite de "{1}" definido por "{2}".
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= O elemento \"{0}\" tem mais de \"{1}\" atributos. \"{1}\" \u00E9 o limite imposto pela aplica\u00E7\u00E3o.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_sv.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades i dokumentets prolog.
+         InvalidCharInXMLDecl = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades i XML-deklarationen.
+ # 2.4 Character Data and Markup
+-        CDEndInContent = Teckensekvensen \"]]>\" f\u00E5r inte f\u00F6rekomma i inneh\u00E5llet, s\u00E5vida det inte anv\u00E4nds f\u00F6r att markera slut av CDATA-sektion.
++        CDEndInContent = Teckensekvensen "]]>" f\u00E5r inte f\u00F6rekomma i inneh\u00E5llet, s\u00E5vida det inte anv\u00E4nds f\u00F6r att markera slut av CDATA-sektion.
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = CDATA-sektionen m\u00E5ste sluta med \"]]>\".
++        CDSectUnterminated = CDATA-sektionen m\u00E5ste sluta med "]]>".
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = XML-deklarationen f\u00E5r endast f\u00F6rekomma allra \u00F6verst i dokumentet.
+-        EqRequiredInXMLDecl = Tecknet '' = '' m\u00E5ste anges efter \"{0}\" i XML-deklarationen.
+-        QuoteRequiredInXMLDecl = V\u00E4rdet som f\u00F6ljer \"{0}\" i XML-deklarationen m\u00E5ste omges av citattecken.
+-        XMLDeclUnterminated = XML-deklarationen m\u00E5ste avslutas med \"?>\".
++        EqRequiredInXMLDecl = Tecknet '' = '' m\u00E5ste anges efter "{0}" i XML-deklarationen.
++        QuoteRequiredInXMLDecl = V\u00E4rdet som f\u00F6ljer "{0}" i XML-deklarationen m\u00E5ste omges av citattecken.
++        XMLDeclUnterminated = XML-deklarationen m\u00E5ste avslutas med "?>".
+         VersionInfoRequired = Versionen kr\u00E4vs i XML-deklarationen.
+         SpaceRequiredBeforeVersionInXMLDecl = Tomt utrymme kr\u00E4vs f\u00F6re versionens pseudoattribut i XML-deklarationen.
+         SpaceRequiredBeforeEncodingInXMLDecl = Tomt utrymme kr\u00E4vs f\u00F6re kodningens pseudoattribut i XML-deklarationen.
+@@ -71,70 +68,71 @@
+         ReferenceIllegalInTrailingMisc=Referensen \u00E4r inte till\u00E5ten i efterf\u00F6ljande avsnitt.
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = Deklarationsv\u00E4rdet f\u00F6r frist\u00E5ende dokument m\u00E5ste vara \"yes\" eller \"no\", inte \"{0}\".
++        SDDeclInvalid = Deklarationsv\u00E4rdet f\u00F6r frist\u00E5ende dokument m\u00E5ste vara "yes" eller "no", inte "{0}".
++        SDDeclNameInvalid = Det frist\u00E5ende namnet i XML-deklarationen kan vara felstavat.
+ # 2.12 Language Identification
+-        XMLLangInvalid = Attributv\u00E4rdet \"{0}\" f\u00F6r xml:lang \u00E4r en ogiltig spr\u00E5kidentifierare.
++        XMLLangInvalid = Attributv\u00E4rdet "{0}" f\u00F6r xml:lang \u00E4r en ogiltig spr\u00E5kidentifierare.
+ # 3. Logical Structures
+-        ETagRequired = Elementtyp \"{0}\" m\u00E5ste avslutas med matchande sluttagg \"</{0}>\".
++        ETagRequired = Elementtyp "{0}" m\u00E5ste avslutas med matchande sluttagg "</{0}>".
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = Elementtyp \"{0}\" m\u00E5ste f\u00F6ljas av n\u00E5gondera av attributspecifikationerna \">\" eller \"/>\".
+-        EqRequiredInAttribute = Attributnamnet \"{1}\" som associeras med elementtyp \"{0}\" m\u00E5ste f\u00F6ljas av likhetstecknet ('' = '').
+-        OpenQuoteExpected = \u00D6ppningscitattecken f\u00F6rv\u00E4ntas f\u00F6r attributet \"{1}\" som associeras med elementtyp \"{0}\".
+-        CloseQuoteExpected = Slutcitattecken f\u00F6rv\u00E4ntas f\u00F6r attributet \"{1}\" som associeras med elementtyp \"{0}\".
+-        AttributeNotUnique = Attributet \"{1}\" har redan angetts f\u00F6r elementet \"{0}\".
+-        AttributeNSNotUnique = Attributet \"{1}\" bundet till namnrymden \"{2}\" har redan angetts f\u00F6r elementet \"{0}\".
+-        ETagUnterminated = Sluttaggen f\u00F6r elementtyp \"{0}\" m\u00E5ste avslutas med en ''>''-avgr\u00E4nsare.
++        ElementUnterminated = Elementtyp "{0}" m\u00E5ste f\u00F6ljas av n\u00E5gondera av attributspecifikationerna ">" eller "/>".
++        EqRequiredInAttribute = Attributnamnet "{1}" som associeras med elementtyp "{0}" m\u00E5ste f\u00F6ljas av likhetstecknet ('' = '').
++        OpenQuoteExpected = \u00D6ppningscitattecken f\u00F6rv\u00E4ntas f\u00F6r attributet "{1}" som associeras med elementtyp "{0}".
++        CloseQuoteExpected = Slutcitattecken f\u00F6rv\u00E4ntas f\u00F6r attributet "{1}" som associeras med elementtyp "{0}".
++        AttributeNotUnique = Attributet "{1}" har redan angetts f\u00F6r elementet "{0}".
++        AttributeNSNotUnique = Attributet "{1}" bundet till namnrymden "{2}" har redan angetts f\u00F6r elementet "{0}".
++        ETagUnterminated = Sluttaggen f\u00F6r elementtyp "{0}" m\u00E5ste avslutas med en ''>''-avgr\u00E4nsare.
+         MarkupNotRecognizedInContent = Elementinneh\u00E5llet m\u00E5ste best\u00E5 av v\u00E4lformulerad(e) teckendata eller kodtext.
+         DoctypeIllegalInContent = DOCTYPE \u00E4r inte till\u00E5tet i inneh\u00E5llet.
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = Referensen m\u00E5ste avslutas med en ';'-avgr\u00E4nsare.
+ # 4.3.2 Well-Formed Parsed Entities
+         ReferenceNotInOneEntity = Referensen m\u00E5ste finnas med inom samma tolkade enhet.
+-        ElementEntityMismatch = Elementet \"{0}\" m\u00E5ste b\u00F6rja och sluta inom samma enhet.
++        ElementEntityMismatch = Elementet "{0}" m\u00E5ste b\u00F6rja och sluta inom samma enhet.
+         MarkupEntityMismatch=XML-dokumentstrukturer m\u00E5ste b\u00F6rja och sluta inom samma enhet.
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = Ett ogiltigt XML-tecken (Unicode: 0x{2}) hittades i attributv\u00E4rdet \"{1}\" och elementet \u00E4r \"{0}\".
++        InvalidCharInAttValue = Ett ogiltigt XML-tecken (Unicode: 0x{2}) hittades i attributv\u00E4rdet "{1}" och elementet \u00E4r "{0}".
+         InvalidCharInComment = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades i kommentaren.
+-        InvalidCharInPI = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades bearbetningsinstruktionen.
++        InvalidCharInPI = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades i bearbetningsinstruktionen.
+         InvalidCharInInternalSubset = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades i den interna delm\u00E4ngden i DTD.
+         InvalidCharInTextDecl = Ett ogiltigt XML-tecken (Unicode: 0x{0}) hittades i textdeklarationen.
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = Attributv\u00E4rdet \"{1}\" m\u00E5ste b\u00F6rja med antingen enkelt eller dubbelt citattecken.
+-        LessthanInAttValue = Attributv\u00E4rdet \"{1}\" som associeras med elementtyp \"{0}\" f\u00E5r inte inneh\u00E5lla n\u00E5got ''<''-tecken.
+-        AttributeValueUnterminated = Attributv\u00E4rdet \"{1}\" m\u00E5ste avslutas med matchande citattecken.
++        QuoteRequiredInAttValue = Attributv\u00E4rdet "{1}" m\u00E5ste b\u00F6rja med antingen enkelt eller dubbelt citattecken.
++        LessthanInAttValue = Attributv\u00E4rdet "{1}" som associeras med elementtyp "{0}" f\u00E5r inte inneh\u00E5lla n\u00E5got ''<''-tecken.
++        AttributeValueUnterminated = Attributv\u00E4rdet "{1}" m\u00E5ste avslutas med matchande citattecken.
+ # 2.5 Comments
+-        InvalidCommentStart = Kommentarer m\u00E5ste inledas med \"<!--\".
+-        DashDashInComment = Str\u00E4ngen \"--\" \u00E4r inte till\u00E5ten inom kommentarer.
+-        CommentUnterminated = Kommentaren m\u00E5ste avslutas med \"-->\".
++        InvalidCommentStart = Kommentarer m\u00E5ste inledas med "<!--".
++        DashDashInComment = Str\u00E4ngen "--" \u00E4r inte till\u00E5ten inom kommentarer.
++        CommentUnterminated = Kommentaren m\u00E5ste avslutas med "-->".
+         COMMENT_NOT_IN_ONE_ENTITY = Kommentaren innesluts inte i samma enhet.
+ # 2.6 Processing Instructions
+         PITargetRequired = Bearbetningsinstruktionen m\u00E5ste b\u00F6rja med m\u00E5lnamnet.
+         SpaceRequiredInPI = Tomt utrymme kr\u00E4vs mellan bearbetningsinstruktionens m\u00E5l och data.
+-        PIUnterminated = Bearbetningsinstruktionen m\u00E5ste avslutas med \"?>\".
+-        ReservedPITarget = Bearbetningsinstruktionens m\u00E5lmatchning \"[xX][mM][lL]\" \u00E4r inte till\u00E5ten.
++        PIUnterminated = Bearbetningsinstruktionen m\u00E5ste avslutas med "?>".
++        ReservedPITarget = Bearbetningsinstruktionens m\u00E5lmatchning "[xX][mM][lL]" \u00E4r inte till\u00E5ten.
+         PI_NOT_IN_ONE_ENTITY = Bearbetningsinstruktionen innesluts inte i samma enhet.
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = Ogiltig version \"{0}\".
+-        VersionNotSupported = XML-versionen \"{0}\" st\u00F6ds inte, endast XML 1.0 st\u00F6ds.
+-        VersionNotSupported11 = XML-versionen \"{0}\" st\u00F6ds inte, endast XML 1.0 och XML 1.1 st\u00F6ds.
++        VersionInfoInvalid = Ogiltig version "{0}".
++        VersionNotSupported = XML-versionen "{0}" st\u00F6ds inte, endast XML 1.0 st\u00F6ds.
++        VersionNotSupported11 = XML-versionen "{0}" st\u00F6ds inte, endast XML 1.0 och XML 1.1 st\u00F6ds.
+         VersionMismatch= En enhet kan inte inkludera n\u00E5gon annan enhet som har en senare version.
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = Ett decimalt uttryck m\u00E5ste anges direkt efter \"&#\" i en teckenreferens.
+-        HexdigitRequiredInCharRef = Ett hexadecimalt uttryck m\u00E5ste anges direkt efter \"&#x\" i en teckenreferens.
++        DigitRequiredInCharRef = Ett decimalt uttryck m\u00E5ste anges direkt efter "&#" i en teckenreferens.
++        HexdigitRequiredInCharRef = Ett hexadecimalt uttryck m\u00E5ste anges direkt efter "&#x" i en teckenreferens.
+         SemicolonRequiredInCharRef = Teckenreferensen m\u00E5ste avslutas med ';'-avgr\u00E4nsare.
+-        InvalidCharRef = Teckenreferensen \"&#{0}\" \u00E4r ett ogiltigt XML-tecken.
++        InvalidCharRef = Teckenreferensen "&#{0}" \u00E4r ett ogiltigt XML-tecken.
+         NameRequiredInReference = Enhetsnamnet m\u00E5ste omedelbart f\u00F6ljas av '&' i enhetsreferensen.
+-        SemicolonRequiredInReference = Referensen till enhet \"{0}\" m\u00E5ste avslutas med '';''-avgr\u00E4nsare.
++        SemicolonRequiredInReference = Referensen till enhet "{0}" m\u00E5ste avslutas med '';''-avgr\u00E4nsare.
+ # 4.3.1 The Text Declaration
+         TextDeclMustBeFirst = Textdeklarationen m\u00E5ste anges direkt i b\u00F6rjan av externt tolkad enhet.
+-        EqRequiredInTextDecl = Ett likhetstecken ('' = '') m\u00E5ste anges efter \"{0}\" i textdeklarationen.
+-        QuoteRequiredInTextDecl = V\u00E4rdet som f\u00F6ljer \"{0}\" i textdeklarationen m\u00E5ste omges av citattecken.
+-        CloseQuoteMissingInTextDecl = avslutande citattecken saknas f\u00F6r v\u00E4rdet efter \"{0}\" i textdeklarationen.
++        EqRequiredInTextDecl = Ett likhetstecken ('' = '') m\u00E5ste anges efter "{0}" i textdeklarationen.
++        QuoteRequiredInTextDecl = V\u00E4rdet som f\u00F6ljer "{0}" i textdeklarationen m\u00E5ste omges av citattecken.
++        CloseQuoteMissingInTextDecl = avslutande citattecken saknas f\u00F6r v\u00E4rdet efter "{0}" i textdeklarationen.
+         SpaceRequiredBeforeVersionInTextDecl = Tomt utrymme kr\u00E4vs f\u00F6re versionens pseudoattribut i textdeklarationen.
+         SpaceRequiredBeforeEncodingInTextDecl = Tomt utrymme kr\u00E4vs f\u00F6re kodningens pseudoattribut i textdeklarationen.
+-        TextDeclUnterminated = Textdeklarationen m\u00E5ste avslutas med \"?>\".
++        TextDeclUnterminated = Textdeklarationen m\u00E5ste avslutas med "?>".
+         EncodingDeclRequired = Koddeklaration kr\u00E4vs i textdeklarationen.
+         NoMorePseudoAttributes = Inga fler pseudoattribut \u00E4r till\u00E5tna.
+         MorePseudoAttributes = Ytterligare pseudoattribut f\u00F6rv\u00E4ntas.
+@@ -143,13 +141,13 @@
+         CommentNotInOneEntity = Kommentaren m\u00E5ste finnas med inom samma tolkade enhet.
+         PINotInOneEntity = Bearbetningsinstruktionen m\u00E5ste finnas med inom samma tolkade enhet.
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = Ogiltigt kodnamn, \"{0}\".
+-        EncodingByteOrderUnsupported = Angiven byteordningsf\u00F6ljd i kodning \"{0}\" st\u00F6ds inte.
++        EncodingDeclInvalid = Ogiltigt kodnamn, "{0}".
++        EncodingByteOrderUnsupported = Angiven byteordningsf\u00F6ljd i kodning "{0}" st\u00F6ds inte.
+         InvalidByte = Ogiltig byte {0} i UTF-8-sekvensen f\u00F6r {1}-byte.
+         ExpectedByte = F\u00F6rv\u00E4ntad byte {0} i UTF-8-sekvensen f\u00F6r {1}-byte.  
+         InvalidHighSurrogate = H\u00F6ga surrogatbitar i UTF-8-sekvens f\u00E5r inte \u00F6verskrida 0x10, men 0x{0} hittades.
+-        OperationNotSupported = Operation \"{0}\" st\u00F6ds inte i l\u00E4saren {1}.
+-        InvalidASCII = Byte \"{0}\" ing\u00E5r inte i ASCII-teckenupps\u00E4ttningen (7 bitar).
++        OperationNotSupported = Operation "{0}" st\u00F6ds inte i l\u00E4saren {1}.
++        InvalidASCII = Byte "{0}" ing\u00E5r inte i ASCII-teckenupps\u00E4ttningen (7 bitar).
+         CharConversionFailure = En enhet som fastst\u00E4lls anv\u00E4nda ett visst kodformat f\u00E5r inte inneh\u00E5lla sekvenser som \u00E4r otill\u00E5tna i kodningen.
+         
+ # DTD Messages
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = Tecknet (Unicode: 0x{0}) \u00E4r inte till\u00E5tet i den allm\u00E4nna identifieraren.
+         SpaceRequiredBetweenPublicAndSystem = Tomma utrymmen kr\u00E4vs mellan publicId och systemId.
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Tomt utrymme kr\u00E4vs efter \"<!DOCTYPE\" i dokumenttypdeklarationen.
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Rotelementtyp m\u00E5ste anges efter \"<!DOCTYPE\" i dokumenttypdeklarationen.
+-        DoctypedeclUnterminated = Dokumenttypdeklarationen f\u00F6r rotelementtyp \"{0}\" m\u00E5ste avslutas med ''>''.
+-        PEReferenceWithinMarkup = Parameterreferensen \"%{0};\" f\u00E5r inte f\u00F6rekomma i kodtexten i den interna delm\u00E4ngden i DTD.
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Tomt utrymme kr\u00E4vs efter "<!DOCTYPE" i dokumenttypdeklarationen.
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = Rotelementtyp m\u00E5ste anges efter "<!DOCTYPE" i dokumenttypdeklarationen.
++        DoctypedeclUnterminated = Dokumenttypdeklarationen f\u00F6r rotelementtyp "{0}" m\u00E5ste avslutas med ''>''.
++        PEReferenceWithinMarkup = Parameterreferensen "%{0};" f\u00E5r inte f\u00F6rekomma i kodtexten i den interna delm\u00E4ngden i DTD.
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Kodtextdeklarationerna som finns med eller pekas till fr\u00E5n dokumenttypdeklarationen m\u00E5ste vara v\u00E4lformulerade.
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = Attributdeklarationen f\u00F6r \"xml:space\" m\u00E5ste anges som uppr\u00E4kningstyp vars enda m\u00F6jliga v\u00E4rden \u00E4r \"default\" och \"preserve\".
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = Attributdeklarationen f\u00F6r "xml:space" m\u00E5ste anges som uppr\u00E4kningstyp vars enda m\u00F6jliga v\u00E4rden \u00E4r "default" och "preserve".
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Tomt utrymme kr\u00E4vs efter \"<!ELEMENT\" i elementtypdeklarationen.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = Tomt utrymme kr\u00E4vs efter "<!ELEMENT" i elementtypdeklarationen.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = Elementtyp m\u00E5ste anges i elementtypdeklarationen.
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Tomt utrymme kr\u00E4vs efter elementtyp \"{0}\" i elementtypdeklarationen.
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = Begr\u00E4nsningen kr\u00E4vs efter elementtyp \"{0}\" i elementtypdeklarationen.
+-        ElementDeclUnterminated = Deklarationen f\u00F6r elementtyp \"{0}\" m\u00E5ste avslutas med ''>''.
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = Tomt utrymme kr\u00E4vs efter elementtyp "{0}" i elementtypdeklarationen.
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = Begr\u00E4nsningen kr\u00E4vs efter elementtyp "{0}" i elementtypdeklarationen.
++        ElementDeclUnterminated = Deklarationen f\u00F6r elementtyp "{0}" m\u00E5ste avslutas med ''>''.
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Tecknet ''('' eller en elementtyp m\u00E5ste anges i deklarationen av elementtyp \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Tecknet '')'' m\u00E5ste anges i deklarationen av elementtyp \"{0}\".
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = Tecknet ''('' eller en elementtyp m\u00E5ste anges i deklarationen av elementtyp "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = Tecknet '')'' m\u00E5ste anges i deklarationen av elementtyp "{0}".
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = En elementtyp m\u00E5ste anges i deklarationen av elementtyp \"{0}\".
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Tecknet '')'' m\u00E5ste anges i deklarationen av elementtyp \"{0}\".
+-        MixedContentUnterminated = Modellen med blandat inneh\u00E5ll \"{0}\" m\u00E5ste avslutas med \")*\" om typer av underordnade element \u00E4r begr\u00E4nsade.
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = En elementtyp m\u00E5ste anges i deklarationen av elementtyp "{0}".
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = Tecknet '')'' m\u00E5ste anges i deklarationen av elementtyp "{0}".
++        MixedContentUnterminated = Modellen med blandat inneh\u00E5ll "{0}" m\u00E5ste avslutas med ")*" om typer av underordnade element \u00E4r begr\u00E4nsade.
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Tomt utrymme kr\u00E4vs efter \"<!ATTLIST\" i deklarationen f\u00F6r attributlista.
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = Tomt utrymme kr\u00E4vs efter "<!ATTLIST" i deklarationen f\u00F6r attributlista.
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = Elementtyp m\u00E5ste anges i deklarationen f\u00F6r attributlista.
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Tomt utrymme kr\u00E4vs f\u00F6re attributnamnet i deklarationen f\u00F6r attributlista f\u00F6r elementet \"{0}\".
+-        AttNameRequiredInAttDef = Attributnamnet m\u00E5ste anges i deklarationen f\u00F6r attributlista f\u00F6r elementet \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Tomt utrymme kr\u00E4vs f\u00F6re attributtyp i deklarationen f\u00F6r attributet \"{1}\" f\u00F6r elementet \"{0}\".
+-        AttTypeRequiredInAttDef = Attributtyp m\u00E5ste anges i deklarationen f\u00F6r attributet \"{1}\" f\u00F6r elementet \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Tomt utrymme kr\u00E4vs f\u00F6re attributstandardv\u00E4rde i deklarationen f\u00F6r attributet \"{1}\" f\u00F6r elementet \"{0}\".
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Det finns fler \u00E4n en attributdefinition f\u00F6r samma attribut \"{1}\" f\u00F6r angivet element \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = Tomt utrymme kr\u00E4vs f\u00F6re attributnamnet i deklarationen f\u00F6r attributlista f\u00F6r elementet "{0}".
++        AttNameRequiredInAttDef = Attributnamnet m\u00E5ste anges i deklarationen f\u00F6r attributlista f\u00F6r elementet "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = Tomt utrymme kr\u00E4vs f\u00F6re attributtyp i deklarationen f\u00F6r attributet "{1}" f\u00F6r elementet "{0}".
++        AttTypeRequiredInAttDef = Attributtyp m\u00E5ste anges i deklarationen f\u00F6r attributet "{1}" f\u00F6r elementet "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = Tomt utrymme kr\u00E4vs f\u00F6re attributstandardv\u00E4rde i deklarationen f\u00F6r attributet "{1}" f\u00F6r elementet "{0}".
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = Det finns fler \u00E4n en attributdefinition f\u00F6r samma attribut "{1}" f\u00F6r angivet element "{0}".
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Tomt utrymme m\u00E5ste anges efter \"NOTATION\" i attributdeklarationen \"{1}\".
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Tecknet ''('' m\u00E5ste anges efter \"NOTATION\" i attributdeklarationen \"{1}\".
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Notationsnamn m\u00E5ste anges i notationstyplistan f\u00F6r attributdeklarationen \"{1}\".
+-        NotationTypeUnterminated = Notationstyplistan m\u00E5ste avslutas med '')'' i attributdeklarationen \"{1}\".
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Namntecken m\u00E5ste anges i uppr\u00E4kningstyplistan f\u00F6r attributdeklarationen \"{1}\".
+-        EnumerationUnterminated = Uppr\u00E4kningstyplistan m\u00E5ste avslutas med '')'' i attributdeklarationen \"{1}\".
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = Uppr\u00E4kningsv\u00E4rdet \"{1}\" har angetts fler \u00E4n en g\u00E5ng i attributdeklarationen \"{2}\" f\u00F6r elementet \"{0}\". Alla NMTOKENS i en och samma attributdeklaration f\u00F6r Enumeration m\u00E5ste vara unika.
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = Uppr\u00E4kningsv\u00E4rdet \"{1}\" har angetts fler \u00E4n en g\u00E5ng i attributdeklarationen \"{2}\" f\u00F6r elementet \"{0}\". Alla NOTATION-namn i en och samma attributdeklaration f\u00F6r NotationType m\u00E5ste vara unika.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = Tomt utrymme m\u00E5ste anges efter "NOTATION" i attributdeklarationen "{1}".
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = Tecknet ''('' m\u00E5ste anges efter "NOTATION" i attributdeklarationen "{1}".
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = Notationsnamn m\u00E5ste anges i notationstyplistan f\u00F6r attributdeklarationen "{1}".
++        NotationTypeUnterminated = Notationstyplistan m\u00E5ste avslutas med '')'' i attributdeklarationen "{1}".
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = Namntecken m\u00E5ste anges i uppr\u00E4kningstyplistan f\u00F6r attributdeklarationen "{1}".
++        EnumerationUnterminated = Uppr\u00E4kningstyplistan m\u00E5ste avslutas med '')'' i attributdeklarationen "{1}".
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = Uppr\u00E4kningsv\u00E4rdet "{1}" har angetts fler \u00E4n en g\u00E5ng i attributdeklarationen "{2}" f\u00F6r elementet "{0}". Alla NMTOKENS i en och samma attributdeklaration f\u00F6r Enumeration m\u00E5ste vara unika.
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = Uppr\u00E4kningsv\u00E4rdet "{1}" har angetts fler \u00E4n en g\u00E5ng i attributdeklarationen "{2}" f\u00F6r elementet "{0}". Alla NOTATION-namn i en och samma attributdeklaration f\u00F6r NotationType m\u00E5ste vara unika.
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Tomt utrymme m\u00E5ste anges efter \"FIXED\" i attributdeklarationen \"{1}\".
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = Tomt utrymme m\u00E5ste anges efter "FIXED" i attributdeklarationen "{1}".
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = Inkluderat villkorsavsnitt m\u00E5ste avslutas med \"]]>\".
+-        IgnoreSectUnterminated = Exkluderat villkorsavsnitt m\u00E5ste avslutas med \"]]>\".
++        IncludeSectUnterminated = Inkluderat villkorsavsnitt m\u00E5ste avslutas med "]]>".
++        IgnoreSectUnterminated = Exkluderat villkorsavsnitt m\u00E5ste avslutas med "]]>".
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = Enhetsnamnet m\u00E5ste omedelbart f\u00F6ljas av '%' i parameterreferensen.
+-        SemicolonRequiredInPEReference = Parameterreferensen \"%{0};\" m\u00E5ste avslutas med '';''-avgr\u00E4nsare.
++        SemicolonRequiredInPEReference = Parameterreferensen "%{0};" m\u00E5ste avslutas med '';''-avgr\u00E4nsare.
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Tomt utrymme kr\u00E4vs efter \"<!ENTITY\" i enhetsdeklarationen.
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Tomt utrymme kr\u00E4vs mellan \"<!ENTITY\" och '%'-tecknet i parameterdeklarationen.
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = Tomt utrymme kr\u00E4vs efter "<!ENTITY" i enhetsdeklarationen.
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = Tomt utrymme kr\u00E4vs mellan "<!ENTITY" och '%'-tecknet i parameterdeklarationen.
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = Tomt utrymme kr\u00E4vs mellan '%' och enhetsnamnet i parameterdeklarationen.
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = Namnet p\u00E5 enheten m\u00E5ste anges i enhetsdeklarationen.
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Tomt utrymme kr\u00E4vs mellan enhetsnamnet \"{0}\" och definitionen i enhetsdeklarationen.
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Tomt utrymme kr\u00E4vs mellan \"NDATA\" och notationsnamnet i deklarationen f\u00F6r enheten \"{0}\".
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Tomt utrymme kr\u00E4vs f\u00F6re \"NDATA\" i deklarationen f\u00F6r enheten \"{0}\".
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Notationsnamnet m\u00E5ste anges efter \"NDATA\" i deklarationen f\u00F6r enheten \"{0}\".
+-        EntityDeclUnterminated = Deklarationen f\u00F6r enheten \"{0}\" m\u00E5ste avslutas med ''>''.
+-	MSG_DUPLICATE_ENTITY_DEFINITION = Enheten \"{0}\" har deklarerats mer \u00E4n en g\u00E5ng.        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = Tomt utrymme kr\u00E4vs mellan enhetsnamnet "{0}" och definitionen i enhetsdeklarationen.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = Tomt utrymme kr\u00E4vs mellan "NDATA" och notationsnamnet i deklarationen f\u00F6r enheten "{0}".
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = Tomt utrymme kr\u00E4vs f\u00F6re "NDATA" i deklarationen f\u00F6r enheten "{0}".
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = Notationsnamnet m\u00E5ste anges efter "NDATA" i deklarationen f\u00F6r enheten "{0}".
++        EntityDeclUnterminated = Deklarationen f\u00F6r enheten "{0}" m\u00E5ste avslutas med ''>''.
++	MSG_DUPLICATE_ENTITY_DEFINITION = Enheten "{0}" har deklarerats mer \u00E4n en g\u00E5ng.        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = Den externa enhetsdeklarationen m\u00E5ste inledas med antingen \"SYSTEM\" eller \"PUBLIC\".
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Tomt utrymme kr\u00E4vs mellan \"PUBLIC\" och den allm\u00E4nna identifieraren.
++        ExternalIDRequired = Den externa enhetsdeklarationen m\u00E5ste inledas med antingen "SYSTEM" eller "PUBLIC".
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = Tomt utrymme kr\u00E4vs mellan "PUBLIC" och den allm\u00E4nna identifieraren.
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = Tomt utrymme kr\u00E4vs mellan den allm\u00E4nna identifieraren och systemidentifieraren.
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Tomt utrymme kr\u00E4vs mellan \"SYSTEM\" och systemidentifieraren.
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = Fragmentidentifieraren f\u00E5r inte anges som del av systemidentifieraren \"{0}\".
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = Tomt utrymme kr\u00E4vs mellan "SYSTEM" och systemidentifieraren.
++        MSG_URI_FRAGMENT_IN_SYSTEMID = Fragmentidentifieraren f\u00E5r inte anges som del av systemidentifieraren "{0}".
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Tomt utrymme kr\u00E4vs efter \"<!NOTATION\" i notationsdeklarationen.
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = Tomt utrymme kr\u00E4vs efter "<!NOTATION" i notationsdeklarationen.
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = Namnet p\u00E5 notationen m\u00E5ste anges i notationsdeklarationen.
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Tomt utrymme kr\u00E4vs efter notationsnamnet \"{0}\" i notationsdeklarationen.
+-        ExternalIDorPublicIDRequired = Deklarationen f\u00F6r notationen \"{0}\" m\u00E5ste inkludera systemidentifierare eller allm\u00E4n identifierare.
+-        NotationDeclUnterminated = Deklarationen f\u00F6r notationen \"{0}\" m\u00E5ste avslutas med ''>''.
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = Tomt utrymme kr\u00E4vs efter notationsnamnet "{0}" i notationsdeklarationen.
++        ExternalIDorPublicIDRequired = Deklarationen f\u00F6r notationen "{0}" m\u00E5ste inkludera systemidentifierare eller allm\u00E4n identifierare.
++        NotationDeclUnterminated = Deklarationen f\u00F6r notationen "{0}" m\u00E5ste avslutas med ''>''.
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = Elementtyp \"{1}\" har redan angetts i modellen med inneh\u00E5ll f\u00F6r elementdeklarationen \"{0}\".
+-        ENTITIESInvalid = Attributv\u00E4rdet \"{1}\" av typen ENTITIES m\u00E5ste motsvara namnen p\u00E5 en eller flera otolkade enheter.
+-        ENTITYInvalid = Attributv\u00E4rdet \"{1}\" av typen ENTITY m\u00E5ste motsvara namnet p\u00E5 en otolkad enhet.
+-        IDDefaultTypeInvalid = Id-attributet \"{0}\" m\u00E5ste inneh\u00E5lla deklarerat standardv\u00E4rde \"#IMPLIED\" eller \"#REQUIRED\".
+-        IDInvalid = Attributv\u00E4rdet \"{0}\" av typen ID m\u00E5ste vara ett namn.
+-        IDInvalidWithNamespaces = Attributv\u00E4rdet \"{0}\" av typen ID m\u00E5ste vara NCName om namnrymder anv\u00E4nds.
+-        IDNotUnique = Attributv\u00E4rdet \"{0}\" av typen ID m\u00E5ste vara unikt inom dokumentet.
+-        IDREFInvalid = Attributv\u00E4rdet \"{0}\" av typen IDREF m\u00E5ste vara ett namn.
+-        IDREFInvalidWithNamespaces = Attributv\u00E4rdet \"{0}\" av typen IDREF m\u00E5ste vara NCName om namnrymder anv\u00E4nds.
+-        IDREFSInvalid = Attributv\u00E4rdet \"{0}\" av typen IDREFS m\u00E5ste vara ett eller flera namn.
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Ers\u00E4ttningstexten f\u00F6r parameterenheten \"{0}\" m\u00E5ste inkludera korrekt kapslade deklarationer om enhetsreferensen anv\u00E4nds som fullst\u00E4ndig deklaration.
+-        ImproperDeclarationNesting = Ers\u00E4ttningstexten f\u00F6r parameterenheten \"{0}\" m\u00E5ste inkludera deklarationer som \u00E4r korrekt kapslade.
+-        ImproperGroupNesting = Ers\u00E4ttningstexten f\u00F6r parameterenheten \"{0}\" m\u00E5ste inkludera parentespar som \u00E4r korrekt kapslade.
+-        INVALID_PE_IN_CONDITIONAL = Ers\u00E4ttningstexten f\u00F6r parameterenheten \"{0}\" m\u00E5st inkludera hela villkorsavsnittet eller endast INCLUDE eller IGNORE.
+-        MSG_ATTRIBUTE_NOT_DECLARED = Attributet \"{1}\" m\u00E5ste deklareras f\u00F6r elementtyp \"{0}\".
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = Attributet \"{0}\" med v\u00E4rdet \"{1}\" m\u00E5ste ha ett v\u00E4rde fr\u00E5n listan \"{2}\".
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = V\u00E4rdet \"{1}\" f\u00F6r attributet \"{0}\" f\u00E5r inte \u00E4ndras vid normalisering (till \"{2}\") i ett frist\u00E5ende dokument.
+-        MSG_CONTENT_INCOMPLETE = Inneh\u00E5llet i elementtyp \"{0}\" \u00E4r ofullst\u00E4ndigt, det m\u00E5ste matcha \"{1}\".
+-        MSG_CONTENT_INVALID = Inneh\u00E5llet i elementtyp \"{0}\" m\u00E5ste matcha \"{1}\".
+-        MSG_CONTENT_INVALID_SPECIFIED = Inneh\u00E5llet i elementtyp \"{0}\" m\u00E5ste matcha \"{1}\". Underordnade till typ \"{2}\" \u00E4r inte till\u00E5tna.
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = Attributet \"{1}\" f\u00F6r elementtyp \"{0}\" har ett standardv\u00E4rde och m\u00E5ste anges i ett frist\u00E5ende dokument.
+-        MSG_DUPLICATE_ATTDEF = Attributet \"{1}\" har redan deklarerats f\u00F6r elementtyp \"{0}\".
+-        MSG_ELEMENT_ALREADY_DECLARED = Elementtyp \"{0}\" f\u00E5r deklareras endast en g\u00E5ng.
+-        MSG_ELEMENT_NOT_DECLARED = Elementtyp \"{0}\" m\u00E5ste deklareras.
++        DuplicateTypeInMixedContent = Elementtyp "{1}" har redan angetts i modellen med inneh\u00E5ll f\u00F6r elementdeklarationen "{0}".
++        ENTITIESInvalid = Attributv\u00E4rdet "{1}" av typen ENTITIES m\u00E5ste motsvara namnen p\u00E5 en eller flera otolkade enheter.
++        ENTITYInvalid = Attributv\u00E4rdet "{1}" av typen ENTITY m\u00E5ste motsvara namnet p\u00E5 en otolkad enhet.
++        IDDefaultTypeInvalid = Id-attributet "{0}" m\u00E5ste inneh\u00E5lla deklarerat standardv\u00E4rde "#IMPLIED" eller "#REQUIRED".
++        IDInvalid = Attributv\u00E4rdet "{0}" av typen ID m\u00E5ste vara ett namn.
++        IDInvalidWithNamespaces = Attributv\u00E4rdet "{0}" av typen ID m\u00E5ste vara NCName om namnrymder anv\u00E4nds.
++        IDNotUnique = Attributv\u00E4rdet "{0}" av typen ID m\u00E5ste vara unikt inom dokumentet.
++        IDREFInvalid = Attributv\u00E4rdet "{0}" av typen IDREF m\u00E5ste vara ett namn.
++        IDREFInvalidWithNamespaces = Attributv\u00E4rdet "{0}" av typen IDREF m\u00E5ste vara NCName om namnrymder anv\u00E4nds.
++        IDREFSInvalid = Attributv\u00E4rdet "{0}" av typen IDREFS m\u00E5ste vara ett eller flera namn.
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = Ers\u00E4ttningstexten f\u00F6r parameterenheten "{0}" m\u00E5ste inkludera korrekt kapslade deklarationer om enhetsreferensen anv\u00E4nds som fullst\u00E4ndig deklaration.
++        ImproperDeclarationNesting = Ers\u00E4ttningstexten f\u00F6r parameterenheten "{0}" m\u00E5ste inkludera deklarationer som \u00E4r korrekt kapslade.
++        ImproperGroupNesting = Ers\u00E4ttningstexten f\u00F6r parameterenheten "{0}" m\u00E5ste inkludera parentespar som \u00E4r korrekt kapslade.
++        INVALID_PE_IN_CONDITIONAL = Ers\u00E4ttningstexten f\u00F6r parameterenheten "{0}" m\u00E5st inkludera hela villkorsavsnittet eller endast INCLUDE eller IGNORE.
++        MSG_ATTRIBUTE_NOT_DECLARED = Attributet "{1}" m\u00E5ste deklareras f\u00F6r elementtyp "{0}".
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = Attributet "{0}" med v\u00E4rdet "{1}" m\u00E5ste ha ett v\u00E4rde fr\u00E5n listan "{2}".
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = V\u00E4rdet "{1}" f\u00F6r attributet "{0}" f\u00E5r inte \u00E4ndras vid normalisering (till "{2}") i ett frist\u00E5ende dokument.
++        MSG_CONTENT_INCOMPLETE = Inneh\u00E5llet i elementtyp "{0}" \u00E4r ofullst\u00E4ndigt, det m\u00E5ste matcha "{1}".
++        MSG_CONTENT_INVALID = Inneh\u00E5llet i elementtyp "{0}" m\u00E5ste matcha "{1}".
++        MSG_CONTENT_INVALID_SPECIFIED = Inneh\u00E5llet i elementtyp "{0}" m\u00E5ste matcha "{1}". Underordnade till typ "{2}" \u00E4r inte till\u00E5tna.
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = Attributet "{1}" f\u00F6r elementtyp "{0}" har ett standardv\u00E4rde och m\u00E5ste anges i ett frist\u00E5ende dokument.
++        MSG_DUPLICATE_ATTDEF = Attributet "{1}" har redan deklarerats f\u00F6r elementtyp "{0}".
++        MSG_ELEMENT_ALREADY_DECLARED = Elementtyp "{0}" f\u00E5r deklareras endast en g\u00E5ng.
++        MSG_ELEMENT_NOT_DECLARED = Elementtyp "{0}" m\u00E5ste deklareras.
+         MSG_GRAMMAR_NOT_FOUND = Dokumentet \u00E4r ogiltigt: hittade ingen grammatik.
+-        MSG_ELEMENT_WITH_ID_REQUIRED = Ett element med identifieraren \"{0}\" m\u00E5ste finnas med i dokumentet.
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = Referens till den externa enheten \"{0}\" \u00E4r inte till\u00E5tet i frist\u00E5ende dokument.
+-        MSG_FIXED_ATTVALUE_INVALID = Attributet \"{1}\" med v\u00E4rdet \"{2}\" m\u00E5ste ha v\u00E4rdet \"{3}\".
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Elementtyp \"{0}\" har redan attributet \"{1}\" av id-typ, ett andra attribut \"{2}\" av samma typ \u00E4r inte till\u00E5tet.
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Elementtyp \"{0}\" har redan attributet \"{1}\" av NOTATION-typ, ett andra attribut \"{2}\" av samma typ \u00E4r inte till\u00E5tet.
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = Notationen \"{1}\" m\u00E5ste deklareras vid referens i notationstyplistan f\u00F6r attributet \"{0}\".
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = Notationen \"{1}\" m\u00E5ste deklareras vid referens i otolkad enhetsdeklaration f\u00F6r \"{0}\".
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = Referensen till enheten \"{0}\" som har deklarerats i en externt tolkad enhet \u00E4r inte till\u00E5tet i frist\u00E5ende dokument.
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = Attributet \"{1}\" m\u00E5ste anges f\u00F6r elementtyp \"{0}\".
++        MSG_ELEMENT_WITH_ID_REQUIRED = Ett element med identifieraren "{0}" m\u00E5ste finnas med i dokumentet.
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = Referens till den externa enheten "{0}" \u00E4r inte till\u00E5tet i frist\u00E5ende dokument.
++        MSG_FIXED_ATTVALUE_INVALID = Attributet "{1}" med v\u00E4rdet "{2}" m\u00E5ste ha v\u00E4rdet "{3}".
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = Elementtyp "{0}" har redan attributet "{1}" av id-typ, ett andra attribut "{2}" av samma typ \u00E4r inte till\u00E5tet.
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = Elementtyp "{0}" har redan attributet "{1}" av NOTATION-typ, ett andra attribut "{2}" av samma typ \u00E4r inte till\u00E5tet.
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = Notationen "{1}" m\u00E5ste deklareras vid referens i notationstyplistan f\u00F6r attributet "{0}".
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = Notationen "{1}" m\u00E5ste deklareras vid referens i otolkad enhetsdeklaration f\u00F6r "{0}".
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = Referensen till enheten "{0}" som har deklarerats i en externt tolkad enhet \u00E4r inte till\u00E5tet i frist\u00E5ende dokument.
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = Attributet "{1}" m\u00E5ste anges f\u00F6r elementtyp "{0}".
+         MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = Tomt utrymme f\u00E5r inte f\u00F6rekomma mellan element som har deklarerats i en externt tolkad enhet med elementinneh\u00E5ll i frist\u00E5ende dokument.
+-        NMTOKENInvalid = Attributv\u00E4rdet \"{0}\" av typen NMTOKEN m\u00E5ste vara ett namntecken.
+-        NMTOKENSInvalid = Attributv\u00E4rdet \"{0}\" av typen NMTOKENS m\u00E5ste vara ett eller flera namntecken.
+-        NoNotationOnEmptyElement = Elementtyp \"{0}\" med deklarationen EMPTY kan inte deklareras med attributet \"{1}\" av typen NOTATION.
+-        RootElementTypeMustMatchDoctypedecl = Dokumentrotelementet \"{1}\" m\u00E5ste matcha DOCTYPE-roten \"{0}\".
+-        UndeclaredElementInContentSpec = Modellen med inneh\u00E5ll f\u00F6r elementet \"{0}\" refererar till elementet \"{1}\" som inte har deklarerats.
+-        UniqueNotationName = Deklarationen f\u00F6r notationen \"{0}\" \u00E4r inte unik. Ett namn f\u00E5r inte deklareras i fler \u00E4n en notationsdeklaration.
++        NMTOKENInvalid = Attributv\u00E4rdet "{0}" av typen NMTOKEN m\u00E5ste vara ett namntecken.
++        NMTOKENSInvalid = Attributv\u00E4rdet "{0}" av typen NMTOKENS m\u00E5ste vara ett eller flera namntecken.
++        NoNotationOnEmptyElement = Elementtyp "{0}" med deklarationen EMPTY kan inte deklareras med attributet "{1}" av typen NOTATION.
++        RootElementTypeMustMatchDoctypedecl = Dokumentrotelementet "{1}" m\u00E5ste matcha DOCTYPE-roten "{0}".
++        UndeclaredElementInContentSpec = Modellen med inneh\u00E5ll f\u00F6r elementet "{0}" refererar till elementet "{1}" som inte har deklarerats.
++        UniqueNotationName = Deklarationen f\u00F6r notationen "{0}" \u00E4r inte unik. Ett namn f\u00E5r inte deklareras i fler \u00E4n en notationsdeklaration.
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype-validerare: Behov att anropa initieringsmetod med giltig grammatikreferens utf\u00F6rdes inte. \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\" \u00E4r otolkat.
+-        ENTITYNotValid = ENTITY \"{0}\" \u00E4r inte giltigt.
++        ENTITYNotUnparsed = ENTITY "{0}" \u00E4r otolkat.
++        ENTITYNotValid = ENTITY "{0}" \u00E4r inte giltigt.
+         EmptyList = V\u00E4rdet f\u00F6r typ ENTITIES, IDREFS och NMTOKENS f\u00E5r inte vara en tom lista.
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = Den externa enhetsreferensen \"&{0};\" till\u00E5ts inte i ett attributv\u00E4rde.
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = Den externa enhetsreferensen "&{0};" till\u00E5ts inte i ett attributv\u00E4rde.
++        AccessExternalDTD = Extern DTD: Kunde inte l\u00E4sa extern DTD ''{0}'', eftersom ''{1}'' \u00E5tkomst inte till\u00E5ts p\u00E5 grund av begr\u00E4nsning som anges av accessExternalDTD-egenskapen.
++        AccessExternalEntity = Extern enhet: Kunde inte l\u00E4sa externt dokument ''{0}'', eftersom ''{1}'' \u00E5tkomst inte till\u00E5ts p\u00E5 grund av begr\u00E4nsning som anges av accessExternalDTD-egenskapen.
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = Enheten \"{0}\" har refererats, men \u00E4r inte deklarerad.
+-        ReferenceToUnparsedEntity = Den otolkade enhetsreferensen \"&{0};\" \u00E4r inte till\u00E5ten.
+-        RecursiveReference = Rekursiv enhetsreferens \"{0}\". (Referenss\u00F6kv\u00E4g: {1}),
+-        RecursiveGeneralReference = Rekursiv allm\u00E4n enhetsreferens \"&{0};\". (Referenss\u00F6kv\u00E4g: {1}),
+-        RecursivePEReference = Rekursiv parameterreferens \"%{0};\". (Referenss\u00F6kv\u00E4g: {1}),
++        EntityNotDeclared = Enheten "{0}" har refererats, men \u00E4r inte deklarerad.
++        ReferenceToUnparsedEntity = Den otolkade enhetsreferensen "&{0};" \u00E4r inte till\u00E5ten.
++        RecursiveReference = Rekursiv enhetsreferens "{0}". (Referenss\u00F6kv\u00E4g: {1}),
++        RecursiveGeneralReference = Rekursiv allm\u00E4n enhetsreferens "&{0};". (Referenss\u00F6kv\u00E4g: {1}),
++        RecursivePEReference = Rekursiv parameterreferens "%{0};". (Referenss\u00F6kv\u00E4g: {1}),
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = Kodningen \"{0}\" st\u00F6ds inte.
++        EncodingNotSupported = Kodningen "{0}" st\u00F6ds inte.
+         EncodingRequired = En tolkad enhet som inte \u00E4r kodad i varken UTF-8 eller UTF-16 m\u00E5ste ha en kodningsdeklaration.
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = Element eller attribut matchar inte QName-produktion: QName::=(NCName':')?NCName. 
+-        ElementXMLNSPrefix = Elementet \"{0}\" kan inte anv\u00E4ndas med \"xmlns\" som prefix.
+-        ElementPrefixUnbound = Prefixet \"{0}\" f\u00F6r elementet \"{1}\" \u00E4r inte bundet.
+-        AttributePrefixUnbound = Prefixet \"{2}\" f\u00F6r attributet \"{1}\" som associeras med elementtyp \"{0}\" \u00E4r inte bundet.
+-        EmptyPrefixedAttName = Ogiltigt v\u00E4rde f\u00F6r attributet \"{0}\". Namnrymdsbindningar som prefix kanske inte \u00E4r tomma.
+-        PrefixDeclared = Namnrymdsprefixet \"{0}\" har inte deklarerats.
++        ElementXMLNSPrefix = Elementet "{0}" kan inte anv\u00E4ndas med "xmlns" som prefix.
++        ElementPrefixUnbound = Prefixet "{0}" f\u00F6r elementet "{1}" \u00E4r inte bundet.
++        AttributePrefixUnbound = Prefixet "{2}" f\u00F6r attributet "{1}" som associeras med elementtyp "{0}" \u00E4r inte bundet.
++        EmptyPrefixedAttName = Ogiltigt v\u00E4rde f\u00F6r attributet "{0}". Namnrymdsbindningar som prefix kanske inte \u00E4r tomma.
++        PrefixDeclared = Namnrymdsprefixet "{0}" har inte deklarerats.
+         CantBindXMLNS = Prefixet "xmlns" kan inte bindas till en specifik namnrymd och namnrymden f\u00F6r "xmlns" kan inte heller bindas till ett specifikt prefix.
+         CantBindXML = Prefixet "xml" kan inte bindas till en namnrymd ut\u00F6ver den vanliga och namnrymden f\u00F6r "xml" kan inte heller bindas till n\u00E5got annat prefix \u00E4n "xml".
+-        MSG_ATT_DEFAULT_INVALID = defaultValue \"{1}\" f\u00F6r attributet \"{0}\" \u00E4r inte till\u00E5tet vad g\u00E4ller de lexikala begr\u00E4nsningarna f\u00F6r denna attributtyp.
++        MSG_ATT_DEFAULT_INVALID = defaultValue "{1}" f\u00F6r attributet "{0}" \u00E4r inte till\u00E5tet vad g\u00E4ller de lexikala begr\u00E4nsningarna f\u00F6r denna attributtyp.
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=Parsern har p\u00E5tr\u00E4ffat fler \u00E4n \"{0}\" enhetstill\u00E4gg i dokumentet - applikationens gr\u00E4nsv\u00E4rde har uppn\u00E5tts.
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: Parsern har p\u00E5tr\u00E4ffat fler \u00E4n "{0}" enhetstill\u00E4gg i dokumentet - gr\u00E4nsv\u00E4rdet f\u00F6r JDK har uppn\u00E5tts.
++        ElementAttributeLimit=JAXP00010002:  Elementet "{0}" har fler \u00E4n "{1}" attribut, "{1}" \u00E4r gr\u00E4nsv\u00E4rdet f\u00F6r JDK.
++        MaxEntitySizeLimit=JAXP00010003: L\u00E4ngden p\u00E5 enheten "{0}" \u00E4r "{1}" som \u00F6verskriver gr\u00E4nsv\u00E4rdet p\u00E5 "{2}" som anges av "{3}".
++        TotalEntitySizeLimit=JAXP00010004: Den ackumulerade storleken "{0}" f\u00F6r enheter \u00F6verskred gr\u00E4nsv\u00E4rdet p\u00E5 "{1}" som anges av "{2}".
++        MaxXMLNameLimit=JAXP00010005: Namnet "{0}" \u00F6verskred gr\u00E4nsv\u00E4rdet p\u00E5 "{1}" som anges av "{2}".
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= Elementet \"{0}\" har fler \u00E4n \"{1}\" attribut, \"{1}\" \u00E4r applikationens gr\u00E4nsv\u00E4rde.
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,26 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +44,14 @@
+         InvalidCharInProlog = \u5728\u6587\u6863\u524D\u8A00\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{0})\u3002
+         InvalidCharInXMLDecl = \u5728 XML \u58F0\u660E\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{0})\u3002
+ # 2.4 Character Data and Markup
+-        CDEndInContent = \u9664\u975E\u4F7F\u7528\u5B57\u7B26\u5E8F\u5217 \"]]>\" \u6765\u6807\u8BB0 CDATA \u8282\u7684\u7ED3\u5C3E, \u5426\u5219\u8BE5\u5B57\u7B26\u5E8F\u5217\u4E0D\u80FD\u51FA\u73B0\u5728\u5185\u5BB9\u4E2D\u3002
++        CDEndInContent = \u9664\u975E\u4F7F\u7528\u5B57\u7B26\u5E8F\u5217 "]]>" \u6765\u6807\u8BB0 CDATA \u8282\u7684\u7ED3\u5C3E, \u5426\u5219\u8BE5\u5B57\u7B26\u5E8F\u5217\u4E0D\u80FD\u51FA\u73B0\u5728\u5185\u5BB9\u4E2D\u3002
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = CDATA \u8282\u5FC5\u987B\u4EE5 \"]]>\" \u7ED3\u5C3E\u3002
++        CDSectUnterminated = CDATA \u8282\u5FC5\u987B\u4EE5 "]]>" \u7ED3\u5C3E\u3002
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = XML \u58F0\u660E\u53EA\u80FD\u51FA\u73B0\u5728\u6587\u6863\u7684\u6700\u5F00\u5934\u5904\u3002
+-        EqRequiredInXMLDecl = \u5728 XML \u58F0\u660E\u4E2D, \"{0}\" \u540E\u9762\u5FC5\u987B\u8DDF\u6709 '' = '' \u5B57\u7B26\u3002
+-        QuoteRequiredInXMLDecl = XML \u58F0\u660E\u4E2D \"{0}\" \u540E\u9762\u8DDF\u968F\u7684\u503C\u5FC5\u987B\u662F\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u7684\u5B57\u7B26\u4E32\u3002
+-        XMLDeclUnterminated = XML \u58F0\u660E\u5FC5\u987B\u4EE5 \"?>\" \u7ED3\u5C3E\u3002
++        EqRequiredInXMLDecl = \u5728 XML \u58F0\u660E\u4E2D, "{0}" \u540E\u9762\u5FC5\u987B\u8DDF\u6709 '' = '' \u5B57\u7B26\u3002
++        QuoteRequiredInXMLDecl = XML \u58F0\u660E\u4E2D "{0}" \u540E\u9762\u8DDF\u968F\u7684\u503C\u5FC5\u987B\u662F\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u7684\u5B57\u7B26\u4E32\u3002
++        XMLDeclUnterminated = XML \u58F0\u660E\u5FC5\u987B\u4EE5 "?>" \u7ED3\u5C3E\u3002
+         VersionInfoRequired = XML \u58F0\u660E\u4E2D\u9700\u8981\u6B64\u7248\u672C\u3002
+         SpaceRequiredBeforeVersionInXMLDecl = \u5728 XML \u58F0\u660E\u4E2D\u7684\u7248\u672C\u4F2A\u5C5E\u6027\u524D\u9762\u5FC5\u987B\u6709\u7A7A\u683C\u3002
+         SpaceRequiredBeforeEncodingInXMLDecl = \u5728 XML \u58F0\u660E\u4E2D\u7684\u7F16\u7801\u4F2A\u5C5E\u6027\u524D\u9762\u5FC5\u987B\u6709\u7A7A\u683C\u3002
+@@ -71,85 +67,86 @@
+         ReferenceIllegalInTrailingMisc=\u5C3E\u968F\u8282\u4E2D\u4E0D\u5141\u8BB8\u6709\u5F15\u7528\u3002
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = \u72EC\u7ACB\u6587\u6863\u58F0\u660E\u503C\u5FC5\u987B\u4E3A \"\u662F\" \u6216 \"\u5426\", \u4E0D\u80FD\u4E3A \"{0}\"\u3002
++        SDDeclInvalid = \u72EC\u7ACB\u6587\u6863\u58F0\u660E\u503C\u5FC5\u987B\u4E3A "\u662F" \u6216 "\u5426", \u4E0D\u80FD\u4E3A "{0}"\u3002
++        SDDeclNameInvalid = XML \u58F0\u660E\u4E2D\u7684\u72EC\u7ACB\u540D\u79F0\u53EF\u80FD\u62FC\u5199\u6709\u8BEF\u3002
+ # 2.12 Language Identification
+-        XMLLangInvalid = xml:lang \u5C5E\u6027\u503C \"{0}\" \u662F\u65E0\u6548\u7684\u8BED\u8A00\u6807\u8BC6\u7B26\u3002
++        XMLLangInvalid = xml:lang \u5C5E\u6027\u503C "{0}" \u662F\u65E0\u6548\u7684\u8BED\u8A00\u6807\u8BC6\u7B26\u3002
+ # 3. Logical Structures
+-        ETagRequired = \u5143\u7D20\u7C7B\u578B \"{0}\" \u5FC5\u987B\u7531\u5339\u914D\u7684\u7ED3\u675F\u6807\u8BB0 \"</{0}>\" \u7EC8\u6B62\u3002
++        ETagRequired = \u5143\u7D20\u7C7B\u578B "{0}" \u5FC5\u987B\u7531\u5339\u914D\u7684\u7ED3\u675F\u6807\u8BB0 "</{0}>" \u7EC8\u6B62\u3002
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = \u5143\u7D20\u7C7B\u578B \"{0}\" \u5FC5\u987B\u540E\u8DDF\u5C5E\u6027\u89C4\u8303 \">\" \u6216 \"/>\"\u3002
+-        EqRequiredInAttribute = \u4E0E\u5143\u7D20\u7C7B\u578B \"{0}\" \u76F8\u5173\u8054\u7684\u5C5E\u6027\u540D \"{1}\" \u5FC5\u987B\u540E\u8DDF '' = '' \u5B57\u7B26\u3002
+-        OpenQuoteExpected = \u4E0E\u5143\u7D20\u7C7B\u578B \"{0}\" \u76F8\u5173\u8054\u7684\u5C5E\u6027 \"{1}\" \u5E94\u6709\u5DE6\u5F15\u53F7\u3002
+-        CloseQuoteExpected = \u4E0E\u5143\u7D20\u7C7B\u578B \"{0}\" \u76F8\u5173\u8054\u7684\u5C5E\u6027 \"{1}\" \u5E94\u6709\u53F3\u5F15\u53F7\u3002
+-        AttributeNotUnique = \u5DF2\u7ECF\u4E3A\u5143\u7D20 \"{0}\" \u6307\u5B9A\u5C5E\u6027 \"{1}\"\u3002
+-        AttributeNSNotUnique = \u5DF2\u7ECF\u4E3A\u5143\u7D20 \"{0}\" \u6307\u5B9A\u7ED1\u5B9A\u5230\u540D\u79F0\u7A7A\u95F4 \"{2}\" \u7684\u5C5E\u6027 \"{1}\"\u3002
+-        ETagUnterminated = \u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u7ED3\u675F\u6807\u8BB0\u5FC5\u987B\u4EE5 ''>'' \u5206\u9694\u7B26\u7ED3\u675F\u3002
++        ElementUnterminated = \u5143\u7D20\u7C7B\u578B "{0}" \u5FC5\u987B\u540E\u8DDF\u5C5E\u6027\u89C4\u8303 ">" \u6216 "/>"\u3002
++        EqRequiredInAttribute = \u4E0E\u5143\u7D20\u7C7B\u578B "{0}" \u76F8\u5173\u8054\u7684\u5C5E\u6027\u540D "{1}" \u5FC5\u987B\u540E\u8DDF '' = '' \u5B57\u7B26\u3002
++        OpenQuoteExpected = \u4E0E\u5143\u7D20\u7C7B\u578B "{0}" \u76F8\u5173\u8054\u7684\u5C5E\u6027 "{1}" \u5E94\u6709\u5DE6\u5F15\u53F7\u3002
++        CloseQuoteExpected = \u4E0E\u5143\u7D20\u7C7B\u578B "{0}" \u76F8\u5173\u8054\u7684\u5C5E\u6027 "{1}" \u5E94\u6709\u53F3\u5F15\u53F7\u3002
++        AttributeNotUnique = \u5DF2\u7ECF\u4E3A\u5143\u7D20 "{0}" \u6307\u5B9A\u5C5E\u6027 "{1}"\u3002
++        AttributeNSNotUnique = \u5DF2\u7ECF\u4E3A\u5143\u7D20 "{0}" \u6307\u5B9A\u7ED1\u5B9A\u5230\u540D\u79F0\u7A7A\u95F4 "{2}" \u7684\u5C5E\u6027 "{1}"\u3002
++        ETagUnterminated = \u5143\u7D20\u7C7B\u578B "{0}" \u7684\u7ED3\u675F\u6807\u8BB0\u5FC5\u987B\u4EE5 ''>'' \u5206\u9694\u7B26\u7ED3\u675F\u3002
+         MarkupNotRecognizedInContent = \u5143\u7D20\u5185\u5BB9\u5FC5\u987B\u7531\u683C\u5F0F\u6B63\u786E\u7684\u5B57\u7B26\u6570\u636E\u6216\u6807\u8BB0\u7EC4\u6210\u3002
+         DoctypeIllegalInContent = \u5185\u5BB9\u4E2D\u4E0D\u5141\u8BB8\u6709 DOCTYPE\u3002
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = \u5F15\u7528\u5FC5\u987B\u4EE5 ';' \u5206\u9694\u7B26\u7EC8\u6B62\u3002
+ # 4.3.2 Well-Formed Parsed Entities
+-        ReferenceNotInOneEntity = \u5F15\u7528\u5FC5\u987B\u5B8C\u5168\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5DF2\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u5185\u3002
+-        ElementEntityMismatch = \u5143\u7D20 \"{0}\" \u5FC5\u987B\u4ECE\u5934\u81F3\u5C3E\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5B9E\u4F53\u5185\u3002
++        ReferenceNotInOneEntity = \u5F15\u7528\u5FC5\u987B\u5B8C\u5168\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5DF2\u89E3\u6790\u5B9E\u4F53\u5185\u3002
++        ElementEntityMismatch = \u5143\u7D20 "{0}" \u5FC5\u987B\u4ECE\u5934\u81F3\u5C3E\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5B9E\u4F53\u5185\u3002
+         MarkupEntityMismatch=XML \u6587\u6863\u7ED3\u6784\u5FC5\u987B\u4ECE\u5934\u81F3\u5C3E\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5B9E\u4F53\u5185\u3002
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = \u5728 \"{1}\" \u5C5E\u6027\u503C\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{2}), \u5E76\u4E14\u5143\u7D20\u4E3A \"{0}\"\u3002
++        InvalidCharInAttValue = \u5728 "{1}" \u5C5E\u6027\u503C\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{2}), \u5E76\u4E14\u5143\u7D20\u4E3A "{0}"\u3002
+         InvalidCharInComment = \u5728\u6CE8\u91CA\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{0})\u3002
+         InvalidCharInPI = \u5728\u5904\u7406\u6307\u4EE4\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{0})\u3002
+         InvalidCharInInternalSubset = \u5728 DTD \u7684\u5185\u90E8\u5B50\u96C6\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{0})\u3002
+         InvalidCharInTextDecl = \u5728\u6587\u672C\u58F0\u660E\u4E2D\u627E\u5230\u65E0\u6548\u7684 XML \u5B57\u7B26 (Unicode: 0x{0})\u3002
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = \"{1}\" \u5C5E\u6027\u503C\u5FC5\u987B\u4EE5\u5355\u5F15\u53F7\u5B57\u7B26\u6216\u53CC\u5F15\u53F7\u5B57\u7B26\u5F00\u5934\u3002
+-        LessthanInAttValue = \u4E0E\u5143\u7D20\u7C7B\u578B \"{0}\" \u76F8\u5173\u8054\u7684 \"{1}\" \u5C5E\u6027\u503C\u4E0D\u80FD\u5305\u542B ''<'' \u5B57\u7B26\u3002
+-        AttributeValueUnterminated = \"{1}\" \u5C5E\u6027\u503C\u5FC5\u987B\u4EE5\u5339\u914D\u7684\u5F15\u53F7\u5B57\u7B26\u7ED3\u5C3E\u3002
++        QuoteRequiredInAttValue = "{1}" \u5C5E\u6027\u503C\u5FC5\u987B\u4EE5\u5355\u5F15\u53F7\u5B57\u7B26\u6216\u53CC\u5F15\u53F7\u5B57\u7B26\u5F00\u5934\u3002
++        LessthanInAttValue = \u4E0E\u5143\u7D20\u7C7B\u578B "{0}" \u76F8\u5173\u8054\u7684 "{1}" \u5C5E\u6027\u503C\u4E0D\u80FD\u5305\u542B ''<'' \u5B57\u7B26\u3002
++        AttributeValueUnterminated = "{1}" \u5C5E\u6027\u503C\u5FC5\u987B\u4EE5\u5339\u914D\u7684\u5F15\u53F7\u5B57\u7B26\u7ED3\u5C3E\u3002
+ # 2.5 Comments
+-        InvalidCommentStart = \u6CE8\u91CA\u5FC5\u987B\u4EE5 \"<!--\" \u5F00\u5934\u3002
+-        DashDashInComment = \u6CE8\u91CA\u4E2D\u4E0D\u5141\u8BB8\u51FA\u73B0\u5B57\u7B26\u4E32 \"--\"\u3002
+-        CommentUnterminated = \u6CE8\u91CA\u5FC5\u987B\u4EE5 \"-->\" \u7ED3\u5C3E\u3002
++        InvalidCommentStart = \u6CE8\u91CA\u5FC5\u987B\u4EE5 "<!--" \u5F00\u5934\u3002
++        DashDashInComment = \u6CE8\u91CA\u4E2D\u4E0D\u5141\u8BB8\u51FA\u73B0\u5B57\u7B26\u4E32 "--"\u3002
++        CommentUnterminated = \u6CE8\u91CA\u5FC5\u987B\u4EE5 "-->" \u7ED3\u5C3E\u3002
+         COMMENT_NOT_IN_ONE_ENTITY = \u6CE8\u91CA\u6CA1\u6709\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5B9E\u4F53\u5185\u3002
+ # 2.6 Processing Instructions
+         PITargetRequired = \u5904\u7406\u6307\u4EE4\u5FC5\u987B\u4EE5\u76EE\u6807\u540D\u79F0\u5F00\u5934\u3002
+         SpaceRequiredInPI = \u5728\u5904\u7406\u6307\u4EE4\u76EE\u6807\u548C\u6570\u636E\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        PIUnterminated = \u5904\u7406\u6307\u4EE4\u5FC5\u987B\u4EE5 \"?>\" \u7ED3\u5C3E\u3002
+-        ReservedPITarget = \u4E0D\u5141\u8BB8\u6709\u5339\u914D \"[xX][mM][lL]\" \u7684\u5904\u7406\u6307\u4EE4\u76EE\u6807\u3002
++        PIUnterminated = \u5904\u7406\u6307\u4EE4\u5FC5\u987B\u4EE5 "?>" \u7ED3\u5C3E\u3002
++        ReservedPITarget = \u4E0D\u5141\u8BB8\u6709\u5339\u914D "[xX][mM][lL]" \u7684\u5904\u7406\u6307\u4EE4\u76EE\u6807\u3002
+         PI_NOT_IN_ONE_ENTITY = \u5904\u7406\u6307\u4EE4\u6CA1\u6709\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5B9E\u4F53\u5185\u3002
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = \u7248\u672C \"{0}\" \u65E0\u6548\u3002
+-        VersionNotSupported = \u4E0D\u652F\u6301 XML \u7248\u672C \"{0}\", \u53EA\u652F\u6301 XML 1.0\u3002
+-        VersionNotSupported11 = \u4E0D\u652F\u6301 XML \u7248\u672C \"{0}\", \u53EA\u652F\u6301 XML 1.0 \u548C XML 1.1\u3002
++        VersionInfoInvalid = \u7248\u672C "{0}" \u65E0\u6548\u3002
++        VersionNotSupported = \u4E0D\u652F\u6301 XML \u7248\u672C "{0}", \u53EA\u652F\u6301 XML 1.0\u3002
++        VersionNotSupported11 = \u4E0D\u652F\u6301 XML \u7248\u672C "{0}", \u53EA\u652F\u6301 XML 1.0 \u548C XML 1.1\u3002
+         VersionMismatch= \u5B9E\u4F53\u4E0D\u80FD\u5305\u542B\u8F83\u9AD8\u7248\u672C\u7684\u53E6\u4E00\u4E2A\u5B9E\u4F53\u3002
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = \u5728\u5B57\u7B26\u5F15\u7528\u4E2D, \u5341\u8FDB\u5236\u8868\u793A\u65B9\u6CD5\u5FC5\u987B\u7D27\u8DDF\u5728 \"&#\" \u540E\u9762\u3002
+-        HexdigitRequiredInCharRef = \u5728\u5B57\u7B26\u5F15\u7528\u4E2D, \u5341\u516D\u8FDB\u5236\u8868\u793A\u65B9\u6CD5\u5FC5\u987B\u7D27\u8DDF\u5728 \"&#x\" \u540E\u9762\u3002
++        DigitRequiredInCharRef = \u5728\u5B57\u7B26\u5F15\u7528\u4E2D, \u5341\u8FDB\u5236\u8868\u793A\u65B9\u6CD5\u5FC5\u987B\u7D27\u8DDF\u5728 "&#" \u540E\u9762\u3002
++        HexdigitRequiredInCharRef = \u5728\u5B57\u7B26\u5F15\u7528\u4E2D, \u5341\u516D\u8FDB\u5236\u8868\u793A\u65B9\u6CD5\u5FC5\u987B\u7D27\u8DDF\u5728 "&#x" \u540E\u9762\u3002
+         SemicolonRequiredInCharRef = \u5B57\u7B26\u5F15\u7528\u5FC5\u987B\u4EE5 ';' \u5206\u9694\u7B26\u7ED3\u5C3E\u3002
+-        InvalidCharRef = \u5B57\u7B26\u5F15\u7528 \"&#{0}\" \u662F\u65E0\u6548\u7684 XML \u5B57\u7B26\u3002
++        InvalidCharRef = \u5B57\u7B26\u5F15\u7528 "&#{0}" \u662F\u65E0\u6548\u7684 XML \u5B57\u7B26\u3002
+         NameRequiredInReference = \u5728\u5B9E\u4F53\u5F15\u7528\u4E2D, \u5B9E\u4F53\u540D\u79F0\u5FC5\u987B\u7D27\u8DDF\u5728 '&' \u540E\u9762\u3002
+-        SemicolonRequiredInReference = \u5BF9\u5B9E\u4F53 \"{0}\" \u7684\u5F15\u7528\u5FC5\u987B\u4EE5 '';'' \u5206\u9694\u7B26\u7ED3\u5C3E\u3002
++        SemicolonRequiredInReference = \u5BF9\u5B9E\u4F53 "{0}" \u7684\u5F15\u7528\u5FC5\u987B\u4EE5 '';'' \u5206\u9694\u7B26\u7ED3\u5C3E\u3002
+ # 4.3.1 The Text Declaration
+-        TextDeclMustBeFirst = \u6587\u672C\u58F0\u660E\u53EA\u80FD\u51FA\u73B0\u5728\u5DF2\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5916\u90E8\u5B9E\u4F53\u7684\u6700\u5F00\u5934\u5904\u3002
+-        EqRequiredInTextDecl = \u5728\u6587\u672C\u58F0\u660E\u4E2D, \"{0}\" \u540E\u9762\u5FC5\u987B\u8DDF\u6709 '' = '' \u5B57\u7B26\u3002
+-        QuoteRequiredInTextDecl = \u6587\u672C\u58F0\u660E\u4E2D \"{0}\" \u540E\u9762\u8DDF\u968F\u7684\u503C\u5FC5\u987B\u662F\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u7684\u5B57\u7B26\u4E32\u3002
+-        CloseQuoteMissingInTextDecl = \u6587\u672C\u58F0\u660E\u4E2D \"{0}\" \u540E\u9762\u8DDF\u968F\u7684\u503C\u7F3A\u5C11\u53F3\u5F15\u53F7\u3002
++        TextDeclMustBeFirst = \u6587\u672C\u58F0\u660E\u53EA\u80FD\u51FA\u73B0\u5728\u5DF2\u89E3\u6790\u7684\u5916\u90E8\u5B9E\u4F53\u7684\u6700\u5F00\u5934\u5904\u3002
++        EqRequiredInTextDecl = \u5728\u6587\u672C\u58F0\u660E\u4E2D, "{0}" \u540E\u9762\u5FC5\u987B\u8DDF\u6709 '' = '' \u5B57\u7B26\u3002
++        QuoteRequiredInTextDecl = \u6587\u672C\u58F0\u660E\u4E2D "{0}" \u540E\u9762\u8DDF\u968F\u7684\u503C\u5FC5\u987B\u662F\u7528\u5F15\u53F7\u62EC\u8D77\u6765\u7684\u5B57\u7B26\u4E32\u3002
++        CloseQuoteMissingInTextDecl = \u6587\u672C\u58F0\u660E\u4E2D "{0}" \u540E\u9762\u8DDF\u968F\u7684\u503C\u7F3A\u5C11\u53F3\u5F15\u53F7\u3002
+         SpaceRequiredBeforeVersionInTextDecl = \u5728\u6587\u672C\u58F0\u660E\u4E2D\u7684\u7248\u672C\u4F2A\u5C5E\u6027\u524D\u9762\u5FC5\u987B\u6709\u7A7A\u683C\u3002
+         SpaceRequiredBeforeEncodingInTextDecl = \u5728\u6587\u672C\u58F0\u660E\u4E2D\u7684\u7F16\u7801\u4F2A\u5C5E\u6027\u524D\u9762\u5FC5\u987B\u6709\u7A7A\u683C\u3002
+-        TextDeclUnterminated = \u6587\u672C\u58F0\u660E\u5FC5\u987B\u4EE5 \"?>\" \u7ED3\u5C3E\u3002
++        TextDeclUnterminated = \u6587\u672C\u58F0\u660E\u5FC5\u987B\u4EE5 "?>" \u7ED3\u5C3E\u3002
+         EncodingDeclRequired = \u6587\u672C\u58F0\u660E\u4E2D\u9700\u8981\u7F16\u7801\u58F0\u660E\u3002
+         NoMorePseudoAttributes = \u4E0D\u5141\u8BB8\u4F7F\u7528\u66F4\u591A\u7684\u4F2A\u5C5E\u6027\u3002
+         MorePseudoAttributes = \u5E94\u8BE5\u6709\u66F4\u591A\u7684\u4F2A\u5C5E\u6027\u3002
+         PseudoAttrNameExpected = \u5E94\u8BE5\u6709\u4F2A\u5C5E\u6027\u540D\u3002
+ # 4.3.2 Well-Formed Parsed Entities
+-        CommentNotInOneEntity = \u6CE8\u91CA\u5FC5\u987B\u5B8C\u5168\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5DF2\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u5185\u3002
+-        PINotInOneEntity = \u5904\u7406\u6307\u4EE4\u5FC5\u987B\u5B8C\u5168\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5DF2\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u5185\u3002
++        CommentNotInOneEntity = \u6CE8\u91CA\u5FC5\u987B\u5B8C\u5168\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5DF2\u89E3\u6790\u5B9E\u4F53\u5185\u3002
++        PINotInOneEntity = \u5904\u7406\u6307\u4EE4\u5FC5\u987B\u5B8C\u5168\u5305\u542B\u5728\u540C\u4E00\u4E2A\u5DF2\u89E3\u6790\u5B9E\u4F53\u5185\u3002
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = \u7F16\u7801\u540D\u79F0 \"{0}\" \u65E0\u6548\u3002
+-        EncodingByteOrderUnsupported = \u4E0D\u652F\u6301\u7F16\u7801 \"{0}\" \u7684\u7ED9\u5B9A\u5B57\u8282\u987A\u5E8F\u3002
++        EncodingDeclInvalid = \u7F16\u7801\u540D\u79F0 "{0}" \u65E0\u6548\u3002
++        EncodingByteOrderUnsupported = \u4E0D\u652F\u6301\u7F16\u7801 "{0}" \u7684\u7ED9\u5B9A\u5B57\u8282\u987A\u5E8F\u3002
+         InvalidByte = {1} \u5B57\u8282\u7684 UTF-8 \u5E8F\u5217\u7684\u5B57\u8282 {0} \u65E0\u6548\u3002
+         ExpectedByte = \u5E94\u4E3A {1} \u5B57\u8282\u7684 UTF-8 \u5E8F\u5217\u7684\u5B57\u8282 {0}\u3002
+         InvalidHighSurrogate = UTF-8 \u5E8F\u5217\u4E2D\u7684\u9AD8\u4EE3\u7406\u4F4D\u4E0D\u80FD\u8D85\u8FC7 0x10, \u4F46\u627E\u5230 0x{0}\u3002
+-        OperationNotSupported = {1}\u8BFB\u8FDB\u7A0B\u4E0D\u652F\u6301\u64CD\u4F5C \"{0}\"\u3002
+-        InvalidASCII = \u5B57\u8282 \"{0}\" \u4E0D\u662F (7 \u4F4D) ASCII \u5B57\u7B26\u96C6\u7684\u6210\u5458\u3002
++        OperationNotSupported = {1}\u8BFB\u8FDB\u7A0B\u4E0D\u652F\u6301\u64CD\u4F5C "{0}"\u3002
++        InvalidASCII = \u5B57\u8282 "{0}" \u4E0D\u662F (7 \u4F4D) ASCII \u5B57\u7B26\u96C6\u7684\u6210\u5458\u3002
+         CharConversionFailure = \u786E\u5B9A\u5C5E\u4E8E\u67D0\u4E2A\u7F16\u7801\u7684\u5B9E\u4F53\u4E0D\u80FD\u5305\u542B\u5728\u8BE5\u7F16\u7801\u4E2D\u975E\u6CD5\u7684\u5E8F\u5217\u3002
+         
+ # DTD Messages
+@@ -169,150 +166,150 @@
+         PubidCharIllegal = \u516C\u5171\u6807\u8BC6\u7B26\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u8BE5\u5B57\u7B26 (Unicode: 0x{0})\u3002
+         SpaceRequiredBetweenPublicAndSystem = \u5728 publicId \u548C systemId \u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u5728\u6587\u6863\u7C7B\u578B\u58F0\u660E\u4E2D\u7684 \"<!DOCTYPE\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u5728\u6587\u6863\u7C7B\u578B\u58F0\u660E\u4E2D, \u6839\u5143\u7D20\u7C7B\u578B\u5FC5\u987B\u51FA\u73B0\u5728 \"<!DOCTYPE\" \u540E\u9762\u3002
+-        DoctypedeclUnterminated = \u6839\u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u6587\u6863\u7C7B\u578B\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
+-        PEReferenceWithinMarkup = \u53C2\u6570\u5B9E\u4F53\u5F15\u7528 \"%{0};\" \u4E0D\u80FD\u51FA\u73B0\u5728 DTD \u7684\u5185\u90E8\u5B50\u96C6\u4E2D\u7684\u6807\u8BB0\u5185\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u5728\u6587\u6863\u7C7B\u578B\u58F0\u660E\u4E2D\u7684 "<!DOCTYPE" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u5728\u6587\u6863\u7C7B\u578B\u58F0\u660E\u4E2D, \u6839\u5143\u7D20\u7C7B\u578B\u5FC5\u987B\u51FA\u73B0\u5728 "<!DOCTYPE" \u540E\u9762\u3002
++        DoctypedeclUnterminated = \u6839\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u6587\u6863\u7C7B\u578B\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
++        PEReferenceWithinMarkup = \u53C2\u6570\u5B9E\u4F53\u5F15\u7528 "%{0};" \u4E0D\u80FD\u51FA\u73B0\u5728 DTD \u7684\u5185\u90E8\u5B50\u96C6\u4E2D\u7684\u6807\u8BB0\u5185\u3002
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \u6587\u6863\u7C7B\u578B\u58F0\u660E\u5305\u542B\u6216\u6307\u5411\u7684\u6807\u8BB0\u58F0\u660E\u5FC5\u987B\u683C\u5F0F\u6B63\u786E\u3002
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = \"xml:space\" \u7684\u5C5E\u6027\u58F0\u660E\u5FC5\u987B\u6307\u5B9A\u4E3A\u679A\u4E3E\u7C7B\u578B, \u5B83\u7684\u53EF\u80FD\u503C\u53EA\u6709 \"default\" \u548C \"preserve\"\u3002
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = "xml:space" \u7684\u5C5E\u6027\u58F0\u660E\u5FC5\u987B\u6307\u5B9A\u4E3A\u679A\u4E3E\u7C7B\u578B, \u5B83\u7684\u53EF\u80FD\u503C\u53EA\u6709 "default" \u548C "preserve"\u3002
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u5728\u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u7684 \"<!ELEMENT\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u5728\u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u7684 "<!ELEMENT" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = \u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5143\u7D20\u7C7B\u578B\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u5728\u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u7684\u5143\u7D20\u7C7B\u578B \"{0}\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u5728\u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u7684\u5143\u7D20\u7C7B\u578B \"{0}\" \u540E\u9762\u9700\u8981\u6709\u7EA6\u675F\u6761\u4EF6\u3002
+-        ElementDeclUnterminated = \u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u5728\u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u7684\u5143\u7D20\u7C7B\u578B "{0}" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u5728\u5143\u7D20\u7C7B\u578B\u58F0\u660E\u4E2D\u7684\u5143\u7D20\u7C7B\u578B "{0}" \u540E\u9762\u9700\u8981\u6709\u7EA6\u675F\u6761\u4EF6\u3002
++        ElementDeclUnterminated = \u5143\u7D20\u7C7B\u578B "{0}" \u7684\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u5728\u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709 ''('' \u5B57\u7B26\u6216\u5143\u7D20\u7C7B\u578B\u3002
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u5728\u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709 '')''\u3002
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u5728\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709 ''('' \u5B57\u7B26\u6216\u5143\u7D20\u7C7B\u578B\u3002
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u5728\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709 '')''\u3002
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u5728\u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5143\u7D20\u7C7B\u578B\u3002
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u5728\u5143\u7D20\u7C7B\u578B \"{0}\" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709 '')''\u3002
+-        MixedContentUnterminated = \u5F53\u5B50\u5143\u7D20\u7C7B\u578B\u53D7\u7EA6\u675F\u65F6, \u6DF7\u5408\u5185\u5BB9\u6A21\u578B \"{0}\" \u5FC5\u987B\u4EE5 \")*\" \u7ED3\u5C3E\u3002
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u5728\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5143\u7D20\u7C7B\u578B\u3002
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u5728\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709 '')''\u3002
++        MixedContentUnterminated = \u5F53\u5B50\u5143\u7D20\u7C7B\u578B\u53D7\u7EA6\u675F\u65F6, \u6DF7\u5408\u5185\u5BB9\u6A21\u578B "{0}" \u5FC5\u987B\u4EE5 ")*" \u7ED3\u5C3E\u3002
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u5728\u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u7684 \"<!ATTLIST\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u5728\u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u7684 "<!ATTLIST" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = \u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5143\u7D20\u7C7B\u578B\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u7684\u5C5E\u6027\u540D\u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        AttNameRequiredInAttDef = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u5FC5\u987B\u6307\u5B9A\u5C5E\u6027\u540D\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027 \"{1}\" \u7684\u58F0\u660E\u4E2D, \u5728\u5C5E\u6027\u7C7B\u578B\u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        AttTypeRequiredInAttDef = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027 \"{1}\" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5C5E\u6027\u7C7B\u578B\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027 \"{1}\" \u7684\u58F0\u660E\u4E2D, \u5728\u5C5E\u6027\u9ED8\u8BA4\u503C\u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \u4E3A\u6307\u5B9A\u5143\u7D20 \"{0}\" \u7684\u540C\u4E00\u5C5E\u6027 \"{1}\" \u63D0\u4F9B\u4E86\u591A\u4E2A\u5C5E\u6027\u5B9A\u4E49\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u7684\u5C5E\u6027\u540D\u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        AttNameRequiredInAttDef = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027\u5217\u8868\u58F0\u660E\u4E2D\u5FC5\u987B\u6307\u5B9A\u5C5E\u6027\u540D\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027 "{1}" \u7684\u58F0\u660E\u4E2D, \u5728\u5C5E\u6027\u7C7B\u578B\u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        AttTypeRequiredInAttDef = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027 "{1}" \u7684\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5C5E\u6027\u7C7B\u578B\u3002
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027 "{1}" \u7684\u58F0\u660E\u4E2D, \u5728\u5C5E\u6027\u9ED8\u8BA4\u503C\u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \u4E3A\u6307\u5B9A\u5143\u7D20 "{0}" \u7684\u540C\u4E00\u5C5E\u6027 "{1}" \u63D0\u4F9B\u4E86\u591A\u4E2A\u5C5E\u6027\u5B9A\u4E49\u3002
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u4E2D, \u7A7A\u683C\u5FC5\u987B\u51FA\u73B0\u5728 \"NOTATION\" \u540E\u9762\u3002
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u4E2D, \"NOTATION\" \u540E\u9762\u5FC5\u987B\u8DDF\u6709 ''('' \u5B57\u7B26\u3002
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u7684\u8BB0\u53F7\u7C7B\u578B\u5217\u8868\u4E2D\u9700\u8981\u6709\u8BB0\u53F7\u540D\u79F0\u3002
+-        NotationTypeUnterminated = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u4E2D, \u8BB0\u53F7\u7C7B\u578B\u5217\u8868\u5FC5\u987B\u4EE5 '')'' \u7ED3\u5C3E\u3002
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u7684\u679A\u4E3E\u7C7B\u578B\u5217\u8868\u4E2D\u9700\u8981\u6709\u540D\u79F0\u6807\u8BB0\u3002
+-        EnumerationUnterminated = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u4E2D, \u679A\u4E3E\u7C7B\u578B\u5217\u8868\u5FC5\u987B\u4EE5 '')'' \u7ED3\u5C3E\u3002
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027 \"{2}\" \u7684\u58F0\u660E\u4E2D, \u679A\u4E3E\u503C \"{1}\" \u6307\u5B9A\u4E86\u591A\u6B21\u3002\u5355\u4E2A\u679A\u4E3E\u5C5E\u6027\u58F0\u660E\u4E2D\u7684 NMTOKENS \u5FC5\u987B\u5168\u90E8\u4E0D\u76F8\u540C\u3002
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \u5728\u5143\u7D20 \"{0}\" \u7684\u5C5E\u6027 \"{2}\" \u7684\u58F0\u660E\u4E2D, \u679A\u4E3E\u503C \"{1}\" \u6307\u5B9A\u4E86\u591A\u6B21\u3002\u5355\u4E2A NotationType \u5C5E\u6027\u58F0\u660E\u4E2D\u7684 NOTATION \u540D\u79F0\u5FC5\u987B\u5168\u90E8\u4E0D\u76F8\u540C\u3002
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u4E2D, \u7A7A\u683C\u5FC5\u987B\u51FA\u73B0\u5728 "NOTATION" \u540E\u9762\u3002
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u4E2D, "NOTATION" \u540E\u9762\u5FC5\u987B\u8DDF\u6709 ''('' \u5B57\u7B26\u3002
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u7684\u8BB0\u53F7\u7C7B\u578B\u5217\u8868\u4E2D\u9700\u8981\u6709\u8BB0\u53F7\u540D\u79F0\u3002
++        NotationTypeUnterminated = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u4E2D, \u8BB0\u53F7\u7C7B\u578B\u5217\u8868\u5FC5\u987B\u4EE5 '')'' \u7ED3\u5C3E\u3002
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u7684\u679A\u4E3E\u7C7B\u578B\u5217\u8868\u4E2D\u9700\u8981\u6709\u540D\u79F0\u6807\u8BB0\u3002
++        EnumerationUnterminated = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u4E2D, \u679A\u4E3E\u7C7B\u578B\u5217\u8868\u5FC5\u987B\u4EE5 '')'' \u7ED3\u5C3E\u3002
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027 "{2}" \u7684\u58F0\u660E\u4E2D, \u679A\u4E3E\u503C "{1}" \u6307\u5B9A\u4E86\u591A\u6B21\u3002\u5355\u4E2A\u679A\u4E3E\u5C5E\u6027\u58F0\u660E\u4E2D\u7684 NMTOKENS \u5FC5\u987B\u5168\u90E8\u4E0D\u76F8\u540C\u3002
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \u5728\u5143\u7D20 "{0}" \u7684\u5C5E\u6027 "{2}" \u7684\u58F0\u660E\u4E2D, \u679A\u4E3E\u503C "{1}" \u6307\u5B9A\u4E86\u591A\u6B21\u3002\u5355\u4E2A NotationType \u5C5E\u6027\u58F0\u660E\u4E2D\u7684 NOTATION \u540D\u79F0\u5FC5\u987B\u5168\u90E8\u4E0D\u76F8\u540C\u3002
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = \u5728 \"{1}\" \u5C5E\u6027\u58F0\u660E\u4E2D, \u7A7A\u683C\u5FC5\u987B\u51FA\u73B0\u5728 \"FIXED\" \u540E\u9762\u3002
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = \u5728 "{1}" \u5C5E\u6027\u58F0\u660E\u4E2D, \u7A7A\u683C\u5FC5\u987B\u51FA\u73B0\u5728 "FIXED" \u540E\u9762\u3002
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = \u5305\u542B\u7684\u6761\u4EF6\u8282\u5FC5\u987B\u4EE5 \"]]>\" \u7ED3\u5C3E\u3002
+-        IgnoreSectUnterminated = \u6392\u9664\u7684\u6761\u4EF6\u8282\u5FC5\u987B\u4EE5 \"]]>\" \u7ED3\u5C3E\u3002
++        IncludeSectUnterminated = \u5305\u542B\u7684\u6761\u4EF6\u8282\u5FC5\u987B\u4EE5 "]]>" \u7ED3\u5C3E\u3002
++        IgnoreSectUnterminated = \u6392\u9664\u7684\u6761\u4EF6\u8282\u5FC5\u987B\u4EE5 "]]>" \u7ED3\u5C3E\u3002
+ # 4.1 Character and Entity References
+         NameRequiredInPEReference = \u5728\u53C2\u6570\u5B9E\u4F53\u5F15\u7528\u4E2D, \u5B9E\u4F53\u540D\u79F0\u5FC5\u987B\u7D27\u8DDF\u5728 '%' \u540E\u9762\u3002
+-        SemicolonRequiredInPEReference = \u53C2\u6570\u5B9E\u4F53\u5F15\u7528 \"%{0};\" \u5FC5\u987B\u4EE5 '';'' \u5206\u9694\u7B26\u7ED3\u5C3E\u3002
++        SemicolonRequiredInPEReference = \u53C2\u6570\u5B9E\u4F53\u5F15\u7528 "%{0};" \u5FC5\u987B\u4EE5 '';'' \u5206\u9694\u7B26\u7ED3\u5C3E\u3002
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u5728\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684 \"<!ENTITY\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u5728\u53C2\u6570\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684 \"<!ENTITY\" \u548C '%' \u5B57\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u5728\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684 "<!ENTITY" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u5728\u53C2\u6570\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684 "<!ENTITY" \u548C '%' \u5B57\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+         MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = \u5728\u53C2\u6570\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684 '%' \u548C\u5B9E\u4F53\u540D\u79F0\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+         MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = \u5B9E\u4F53\u58F0\u660E\u4E2D\u9700\u8981\u6709\u5B9E\u4F53\u540D\u79F0\u3002
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u5728\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684\u5B9E\u4F53\u540D\u79F0 \"{0}\" \u548C\u5B9A\u4E49\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u5728\u5B9E\u4F53 \"{0}\" \u7684\u58F0\u660E\u4E2D\u7684 \"NDATA\" \u548C\u8BB0\u53F7\u540D\u79F0\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u5728\u5B9E\u4F53 \"{0}\" \u7684\u58F0\u660E\u4E2D\u7684 \"NDATA\" \u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \u5728\u5B9E\u4F53 \"{0}\" \u7684\u58F0\u660E\u4E2D\u7684 \"NDATA\" \u540E\u9762\u9700\u8981\u6709\u8BB0\u53F7\u540D\u79F0\u3002
+-        EntityDeclUnterminated = \u5B9E\u4F53 \"{0}\" \u7684\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
+-	MSG_DUPLICATE_ENTITY_DEFINITION = \u5B9E\u4F53 \"{0}\" \u58F0\u660E\u4E86\u591A\u6B21\u3002        
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u5728\u5B9E\u4F53\u58F0\u660E\u4E2D\u7684\u5B9E\u4F53\u540D\u79F0 "{0}" \u548C\u5B9A\u4E49\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u5728\u5B9E\u4F53 "{0}" \u7684\u58F0\u660E\u4E2D\u7684 "NDATA" \u548C\u8BB0\u53F7\u540D\u79F0\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u5728\u5B9E\u4F53 "{0}" \u7684\u58F0\u660E\u4E2D\u7684 "NDATA" \u524D\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \u5728\u5B9E\u4F53 "{0}" \u7684\u58F0\u660E\u4E2D\u7684 "NDATA" \u540E\u9762\u9700\u8981\u6709\u8BB0\u53F7\u540D\u79F0\u3002
++        EntityDeclUnterminated = \u5B9E\u4F53 "{0}" \u7684\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
++	MSG_DUPLICATE_ENTITY_DEFINITION = \u5B9E\u4F53 "{0}" \u58F0\u660E\u4E86\u591A\u6B21\u3002        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = \u5916\u90E8\u5B9E\u4F53\u58F0\u660E\u5FC5\u987B\u4EE5 \"SYSTEM\" \u6216 \"PUBLIC\" \u5F00\u5934\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \u5728 \"PUBLIC\" \u548C\u516C\u5171\u6807\u8BC6\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
++        ExternalIDRequired = \u5916\u90E8\u5B9E\u4F53\u58F0\u660E\u5FC5\u987B\u4EE5 "SYSTEM" \u6216 "PUBLIC" \u5F00\u5934\u3002
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \u5728 "PUBLIC" \u548C\u516C\u5171\u6807\u8BC6\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = \u5728\u516C\u5171\u6807\u8BC6\u7B26\u548C\u7CFB\u7EDF\u6807\u8BC6\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \u5728 \"SYSTEM\" \u548C\u7CFB\u7EDF\u6807\u8BC6\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = \u7247\u6BB5\u6807\u8BC6\u7B26\u4E0D\u80FD\u6307\u5B9A\u4E3A\u7CFB\u7EDF\u6807\u8BC6\u7B26 \"{0}\" \u7684\u4E00\u90E8\u5206\u3002
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \u5728 "SYSTEM" \u548C\u7CFB\u7EDF\u6807\u8BC6\u7B26\u4E4B\u95F4\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_URI_FRAGMENT_IN_SYSTEMID = \u7247\u6BB5\u6807\u8BC6\u7B26\u4E0D\u80FD\u6307\u5B9A\u4E3A\u7CFB\u7EDF\u6807\u8BC6\u7B26 "{0}" \u7684\u4E00\u90E8\u5206\u3002
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8BB0\u53F7\u58F0\u660E\u4E2D\u7684 \"<!NOTATION\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8BB0\u53F7\u58F0\u660E\u4E2D\u7684 "<!NOTATION" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = \u8BB0\u53F7\u58F0\u660E\u4E2D\u9700\u8981\u6709\u8BB0\u53F7\u540D\u79F0\u3002
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8BB0\u53F7\u58F0\u660E\u4E2D\u7684\u8BB0\u53F7\u540D\u79F0 \"{0}\" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        ExternalIDorPublicIDRequired = \u8BB0\u53F7 \"{0}\" \u7684\u58F0\u660E\u5FC5\u987B\u5305\u542B\u7CFB\u7EDF\u6807\u8BC6\u7B26\u6216\u516C\u5171\u6807\u8BC6\u7B26\u3002
+-        NotationDeclUnterminated = \u8BB0\u53F7 \"{0}\" \u7684\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8BB0\u53F7\u58F0\u660E\u4E2D\u7684\u8BB0\u53F7\u540D\u79F0 "{0}" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
++        ExternalIDorPublicIDRequired = \u8BB0\u53F7 "{0}" \u7684\u58F0\u660E\u5FC5\u987B\u5305\u542B\u7CFB\u7EDF\u6807\u8BC6\u7B26\u6216\u516C\u5171\u6807\u8BC6\u7B26\u3002
++        NotationDeclUnterminated = \u8BB0\u53F7 "{0}" \u7684\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = \u5728\u5143\u7D20\u58F0\u660E \"{0}\" \u7684\u5185\u5BB9\u6A21\u578B\u4E2D\u5DF2\u7ECF\u6307\u5B9A\u4E86\u5143\u7D20\u7C7B\u578B \"{1}\"\u3002
+-        ENTITIESInvalid = \u7C7B\u578B\u4E3A ENTITIES \u7684\u5C5E\u6027\u503C \"{1}\" \u5FC5\u987B\u662F\u4E00\u4E2A\u6216\u591A\u4E2A\u672A\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u7684\u540D\u79F0\u3002
+-        ENTITYInvalid = \u7C7B\u578B\u4E3A ENTITY \u7684\u5C5E\u6027\u503C \"{1}\" \u5FC5\u987B\u662F\u672A\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u7684\u540D\u79F0\u3002
+-        IDDefaultTypeInvalid = ID \u5C5E\u6027 \"{0}\" \u5FC5\u987B\u5177\u6709\u5DF2\u58F0\u660E\u7684\u9ED8\u8BA4\u503C \"#IMPLIED\" \u6216 \"#REQUIRED\"\u3002
+-        IDInvalid = \u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F\u540D\u79F0\u3002
+-        IDInvalidWithNamespaces = \u542F\u7528\u540D\u79F0\u7A7A\u95F4\u65F6, \u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F NCName\u3002
+-        IDNotUnique = \u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027\u503C \"{0}\" \u5728\u6587\u6863\u5185\u5FC5\u987B\u662F\u552F\u4E00\u7684\u3002
+-        IDREFInvalid = \u7C7B\u578B\u4E3A IDREF \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F\u540D\u79F0\u3002
+-        IDREFInvalidWithNamespaces = \u542F\u7528\u540D\u79F0\u7A7A\u95F4\u65F6, \u7C7B\u578B\u4E3A IDREF \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F NCName\u3002
+-        IDREFSInvalid = \u7C7B\u578B\u4E3A IDREFS \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F\u4E00\u4E2A\u6216\u591A\u4E2A\u540D\u79F0\u3002
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \u5F53\u5B9E\u4F53\u5F15\u7528\u7528\u4F5C\u5B8C\u6574\u58F0\u660E\u65F6, \u53C2\u6570\u5B9E\u4F53 \"{0}\" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6B63\u786E\u5D4C\u5957\u7684\u58F0\u660E\u3002
+-        ImproperDeclarationNesting = \u53C2\u6570\u5B9E\u4F53 \"{0}\" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6B63\u786E\u5D4C\u5957\u7684\u58F0\u660E\u3002
+-        ImproperGroupNesting = \u53C2\u6570\u5B9E\u4F53 \"{0}\" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6B63\u786E\u5D4C\u5957\u7684\u62EC\u53F7\u5BF9\u3002
+-        INVALID_PE_IN_CONDITIONAL = \u53C2\u6570\u5B9E\u4F53 \"{0}\" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6574\u4E2A\u6761\u4EF6\u8282, \u6216\u8005\u4EC5\u5305\u542B INCLUDE \u6216 IGNORE\u3002
+-        MSG_ATTRIBUTE_NOT_DECLARED = \u5FC5\u987B\u4E3A\u5143\u7D20\u7C7B\u578B \"{0}\" \u58F0\u660E\u5C5E\u6027 \"{1}\"\u3002
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \u503C\u4E3A \"{1}\" \u7684\u5C5E\u6027 \"{0}\" \u5FC5\u987B\u5177\u6709\u5217\u8868 \"{2}\" \u4E2D\u7684\u503C\u3002
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \u5728\u72EC\u7ACB\u6587\u6863\u4E2D, \u5C5E\u6027 \"{0}\" \u7684\u503C \"{1}\" \u4E0D\u80FD\u901A\u8FC7\u89C4\u8303\u5316\u8FDB\u884C\u66F4\u6539 (\u66F4\u6539\u4E3A \"{2}\")\u3002
+-        MSG_CONTENT_INCOMPLETE = \u5143\u7D20\u7C7B\u578B\u4E3A \"{0}\" \u7684\u5185\u5BB9\u4E0D\u5B8C\u6574, \u5B83\u5FC5\u987B\u5339\u914D \"{1}\"\u3002
+-        MSG_CONTENT_INVALID = \u5143\u7D20\u7C7B\u578B\u4E3A \"{0}\" \u7684\u5185\u5BB9\u5FC5\u987B\u5339\u914D \"{1}\"\u3002
+-        MSG_CONTENT_INVALID_SPECIFIED = \u5143\u7D20\u7C7B\u578B\u4E3A \"{0}\" \u7684\u5185\u5BB9\u5FC5\u987B\u5339\u914D \"{1}\"\u3002\u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u4E3A \"{2}\" \u7684\u5B50\u7EA7\u3002
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \u5143\u7D20\u7C7B\u578B\u4E3A \"{0}\" \u7684\u5C5E\u6027 \"{1}\" \u5177\u6709\u9ED8\u8BA4\u503C, \u5E76\u4E14\u5FC5\u987B\u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u6307\u5B9A\u3002
+-        MSG_DUPLICATE_ATTDEF = \u5DF2\u7ECF\u4E3A\u5143\u7D20\u7C7B\u578B \"{0}\" \u58F0\u660E\u5C5E\u6027 \"{1}\"\u3002
+-        MSG_ELEMENT_ALREADY_DECLARED = \u5143\u7D20\u7C7B\u578B \"{0}\" \u4E0D\u80FD\u58F0\u660E\u591A\u6B21\u3002
+-        MSG_ELEMENT_NOT_DECLARED = \u5FC5\u987B\u58F0\u660E\u5143\u7D20\u7C7B\u578B \"{0}\"\u3002
++        DuplicateTypeInMixedContent = \u5728\u5143\u7D20\u58F0\u660E "{0}" \u7684\u5185\u5BB9\u6A21\u578B\u4E2D\u5DF2\u7ECF\u6307\u5B9A\u4E86\u5143\u7D20\u7C7B\u578B "{1}"\u3002
++        ENTITIESInvalid = \u7C7B\u578B\u4E3A ENTITIES \u7684\u5C5E\u6027\u503C "{1}" \u5FC5\u987B\u662F\u4E00\u4E2A\u6216\u591A\u4E2A\u672A\u89E3\u6790\u5B9E\u4F53\u7684\u540D\u79F0\u3002
++        ENTITYInvalid = \u7C7B\u578B\u4E3A ENTITY \u7684\u5C5E\u6027\u503C "{1}" \u5FC5\u987B\u662F\u672A\u89E3\u6790\u5B9E\u4F53\u7684\u540D\u79F0\u3002
++        IDDefaultTypeInvalid = ID \u5C5E\u6027 "{0}" \u5FC5\u987B\u5177\u6709\u5DF2\u58F0\u660E\u7684\u9ED8\u8BA4\u503C "#IMPLIED" \u6216 "#REQUIRED"\u3002
++        IDInvalid = \u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F\u540D\u79F0\u3002
++        IDInvalidWithNamespaces = \u542F\u7528\u540D\u79F0\u7A7A\u95F4\u65F6, \u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F NCName\u3002
++        IDNotUnique = \u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027\u503C "{0}" \u5728\u6587\u6863\u5185\u5FC5\u987B\u662F\u552F\u4E00\u7684\u3002
++        IDREFInvalid = \u7C7B\u578B\u4E3A IDREF \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F\u540D\u79F0\u3002
++        IDREFInvalidWithNamespaces = \u542F\u7528\u540D\u79F0\u7A7A\u95F4\u65F6, \u7C7B\u578B\u4E3A IDREF \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F NCName\u3002
++        IDREFSInvalid = \u7C7B\u578B\u4E3A IDREFS \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F\u4E00\u4E2A\u6216\u591A\u4E2A\u540D\u79F0\u3002
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \u5F53\u5B9E\u4F53\u5F15\u7528\u7528\u4F5C\u5B8C\u6574\u58F0\u660E\u65F6, \u53C2\u6570\u5B9E\u4F53 "{0}" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6B63\u786E\u5D4C\u5957\u7684\u58F0\u660E\u3002
++        ImproperDeclarationNesting = \u53C2\u6570\u5B9E\u4F53 "{0}" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6B63\u786E\u5D4C\u5957\u7684\u58F0\u660E\u3002
++        ImproperGroupNesting = \u53C2\u6570\u5B9E\u4F53 "{0}" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6B63\u786E\u5D4C\u5957\u7684\u62EC\u53F7\u5BF9\u3002
++        INVALID_PE_IN_CONDITIONAL = \u53C2\u6570\u5B9E\u4F53 "{0}" \u7684\u66FF\u6362\u6587\u672C\u5FC5\u987B\u5305\u542B\u6574\u4E2A\u6761\u4EF6\u8282, \u6216\u8005\u4EC5\u5305\u542B INCLUDE \u6216 IGNORE\u3002
++        MSG_ATTRIBUTE_NOT_DECLARED = \u5FC5\u987B\u4E3A\u5143\u7D20\u7C7B\u578B "{0}" \u58F0\u660E\u5C5E\u6027 "{1}"\u3002
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \u503C\u4E3A "{1}" \u7684\u5C5E\u6027 "{0}" \u5FC5\u987B\u5177\u6709\u5217\u8868 "{2}" \u4E2D\u7684\u503C\u3002
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \u5728\u72EC\u7ACB\u6587\u6863\u4E2D, \u5C5E\u6027 "{0}" \u7684\u503C "{1}" \u4E0D\u80FD\u901A\u8FC7\u89C4\u8303\u5316\u8FDB\u884C\u66F4\u6539 (\u66F4\u6539\u4E3A "{2}")\u3002
++        MSG_CONTENT_INCOMPLETE = \u5143\u7D20\u7C7B\u578B\u4E3A "{0}" \u7684\u5185\u5BB9\u4E0D\u5B8C\u6574, \u5B83\u5FC5\u987B\u5339\u914D "{1}"\u3002
++        MSG_CONTENT_INVALID = \u5143\u7D20\u7C7B\u578B\u4E3A "{0}" \u7684\u5185\u5BB9\u5FC5\u987B\u5339\u914D "{1}"\u3002
++        MSG_CONTENT_INVALID_SPECIFIED = \u5143\u7D20\u7C7B\u578B\u4E3A "{0}" \u7684\u5185\u5BB9\u5FC5\u987B\u5339\u914D "{1}"\u3002\u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u4E3A "{2}" \u7684\u5B50\u7EA7\u3002
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \u5143\u7D20\u7C7B\u578B\u4E3A "{0}" \u7684\u5C5E\u6027 "{1}" \u5177\u6709\u9ED8\u8BA4\u503C, \u5E76\u4E14\u5FC5\u987B\u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u6307\u5B9A\u3002
++        MSG_DUPLICATE_ATTDEF = \u5DF2\u7ECF\u4E3A\u5143\u7D20\u7C7B\u578B "{0}" \u58F0\u660E\u5C5E\u6027 "{1}"\u3002
++        MSG_ELEMENT_ALREADY_DECLARED = \u5143\u7D20\u7C7B\u578B "{0}" \u4E0D\u80FD\u58F0\u660E\u591A\u6B21\u3002
++        MSG_ELEMENT_NOT_DECLARED = \u5FC5\u987B\u58F0\u660E\u5143\u7D20\u7C7B\u578B "{0}"\u3002
+         MSG_GRAMMAR_NOT_FOUND = \u6587\u6863\u65E0\u6548: \u627E\u4E0D\u5230\u8BED\u6CD5\u3002
+-        MSG_ELEMENT_WITH_ID_REQUIRED = \u6587\u6863\u4E2D\u5FC5\u987B\u5305\u542B\u6807\u8BC6\u7B26\u4E3A \"{0}\" \u7684\u5143\u7D20\u3002
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5F15\u7528\u5916\u90E8\u5B9E\u4F53 \"{0}\"\u3002
+-        MSG_FIXED_ATTVALUE_INVALID = \u503C\u4E3A \"{2}\" \u7684\u5C5E\u6027 \"{1}\" \u5FC5\u987B\u5177\u6709 \"{3}\" \u7684\u503C\u3002
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \u5143\u7D20\u7C7B\u578B \"{0}\" \u5DF2\u7ECF\u5177\u6709\u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027 \"{1}\", \u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u4E3A ID \u7684\u53E6\u4E00\u4E2A\u5C5E\u6027 \"{2}\"\u3002
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \u5143\u7D20\u7C7B\u578B \"{0}\" \u5DF2\u7ECF\u5177\u6709\u7C7B\u578B\u4E3A NOTATION \u7684\u5C5E\u6027 \"{1}\", \u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u4E3A NOTATION \u7684\u53E6\u4E00\u4E2A\u5C5E\u6027 \"{2}\"\u3002
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \u5728\u5C5E\u6027 \"{0}\" \u7684\u8BB0\u53F7\u7C7B\u578B\u5217\u8868\u4E2D\u5F15\u7528\u8BB0\u53F7 \"{1}\" \u65F6, \u5FC5\u987B\u58F0\u660E\u8BE5\u8BB0\u53F7\u3002
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = \u5728 \"{0}\" \u7684\u672A\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u58F0\u660E\u4E2D\u5F15\u7528\u8BB0\u53F7 \"{1}\" \u65F6, \u5FC5\u987B\u58F0\u660E\u8BE5\u8BB0\u53F7\u3002
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5F15\u7528\u5DF2\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5916\u90E8\u5B9E\u4F53\u4E2D\u58F0\u660E\u7684\u5B9E\u4F53 \"{0}\"\u3002
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \u9700\u8981\u5C5E\u6027 \"{1}\", \u5E76\u4E14\u5FC5\u987B\u4E3A\u5143\u7D20\u7C7B\u578B \"{0}\" \u6307\u5B9A\u8BE5\u5C5E\u6027\u3002
+-        MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = \u5BF9\u4E8E\u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u5177\u6709\u5143\u7D20\u5185\u5BB9\u7684\u672A\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5916\u90E8\u5B9E\u4F53, \u5728\u8BE5\u5B9E\u4F53\u4E2D\u58F0\u660E\u7684\u5143\u7D20\u4E4B\u95F4\u4E0D\u80FD\u51FA\u73B0\u7A7A\u683C\u3002
+-        NMTOKENInvalid = \u7C7B\u578B\u4E3A NMTOKEN \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F\u540D\u79F0\u6807\u8BB0\u3002
+-        NMTOKENSInvalid = \u7C7B\u578B\u4E3A NMTOKENS \u7684\u5C5E\u6027\u503C \"{0}\" \u5FC5\u987B\u662F\u4E00\u4E2A\u6216\u591A\u4E2A\u540D\u79F0\u6807\u8BB0\u3002
+-        NoNotationOnEmptyElement = \u5DF2\u58F0\u660E\u4E3A EMPTY \u7684\u5143\u7D20\u7C7B\u578B \"{0}\" \u4E0D\u80FD\u58F0\u660E\u7C7B\u578B\u4E3A NOTATION \u7684\u5C5E\u6027 \"{1}\"\u3002
+-        RootElementTypeMustMatchDoctypedecl = \u6587\u6863\u6839\u5143\u7D20 \"{1}\" \u5FC5\u987B\u5339\u914D DOCTYPE \u6839 \"{0}\"\u3002
+-        UndeclaredElementInContentSpec = \u5143\u7D20 \"{0}\" \u7684\u5185\u5BB9\u6A21\u578B\u5F15\u7528\u672A\u58F0\u660E\u7684\u5143\u7D20 \"{1}\"\u3002
+-        UniqueNotationName = \u8BB0\u53F7 \"{0}\" \u7684\u58F0\u660E\u4E0D\u662F\u552F\u4E00\u7684\u3002\u4E0D\u80FD\u5728\u591A\u4E2A\u8BB0\u53F7\u58F0\u660E\u4E2D\u58F0\u660E\u6307\u5B9A\u7684\u540D\u79F0\u3002
++        MSG_ELEMENT_WITH_ID_REQUIRED = \u6587\u6863\u4E2D\u5FC5\u987B\u5305\u542B\u6807\u8BC6\u7B26\u4E3A "{0}" \u7684\u5143\u7D20\u3002
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5F15\u7528\u5916\u90E8\u5B9E\u4F53 "{0}"\u3002
++        MSG_FIXED_ATTVALUE_INVALID = \u503C\u4E3A "{2}" \u7684\u5C5E\u6027 "{1}" \u5FC5\u987B\u5177\u6709 "{3}" \u7684\u503C\u3002
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \u5143\u7D20\u7C7B\u578B "{0}" \u5DF2\u7ECF\u5177\u6709\u7C7B\u578B\u4E3A ID \u7684\u5C5E\u6027 "{1}", \u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u4E3A ID \u7684\u53E6\u4E00\u4E2A\u5C5E\u6027 "{2}"\u3002
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \u5143\u7D20\u7C7B\u578B "{0}" \u5DF2\u7ECF\u5177\u6709\u7C7B\u578B\u4E3A NOTATION \u7684\u5C5E\u6027 "{1}", \u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B\u578B\u4E3A NOTATION \u7684\u53E6\u4E00\u4E2A\u5C5E\u6027 "{2}"\u3002
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \u5728\u5C5E\u6027 "{0}" \u7684\u8BB0\u53F7\u7C7B\u578B\u5217\u8868\u4E2D\u5F15\u7528\u8BB0\u53F7 "{1}" \u65F6, \u5FC5\u987B\u58F0\u660E\u8BE5\u8BB0\u53F7\u3002
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = \u5728 "{0}" \u7684\u672A\u89E3\u6790\u5B9E\u4F53\u58F0\u660E\u4E2D\u5F15\u7528\u8BB0\u53F7 "{1}" \u65F6, \u5FC5\u987B\u58F0\u660E\u8BE5\u8BB0\u53F7\u3002
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5F15\u7528\u5DF2\u89E3\u6790\u7684\u5916\u90E8\u5B9E\u4F53\u4E2D\u58F0\u660E\u7684\u5B9E\u4F53 "{0}"\u3002
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \u9700\u8981\u5C5E\u6027 "{1}", \u5E76\u4E14\u5FC5\u987B\u4E3A\u5143\u7D20\u7C7B\u578B "{0}" \u6307\u5B9A\u8BE5\u5C5E\u6027\u3002
++        MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = \u5BF9\u4E8E\u5728\u72EC\u7ACB\u6587\u6863\u4E2D\u5177\u6709\u5143\u7D20\u5185\u5BB9\u7684\u5DF2\u89E3\u6790\u7684\u5916\u90E8\u5B9E\u4F53, \u5728\u8BE5\u5B9E\u4F53\u4E2D\u58F0\u660E\u7684\u5143\u7D20\u4E4B\u95F4\u4E0D\u80FD\u51FA\u73B0\u7A7A\u683C\u3002
++        NMTOKENInvalid = \u7C7B\u578B\u4E3A NMTOKEN \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F\u540D\u79F0\u6807\u8BB0\u3002
++        NMTOKENSInvalid = \u7C7B\u578B\u4E3A NMTOKENS \u7684\u5C5E\u6027\u503C "{0}" \u5FC5\u987B\u662F\u4E00\u4E2A\u6216\u591A\u4E2A\u540D\u79F0\u6807\u8BB0\u3002
++        NoNotationOnEmptyElement = \u5DF2\u58F0\u660E\u4E3A EMPTY \u7684\u5143\u7D20\u7C7B\u578B "{0}" \u4E0D\u80FD\u58F0\u660E\u7C7B\u578B\u4E3A NOTATION \u7684\u5C5E\u6027 "{1}"\u3002
++        RootElementTypeMustMatchDoctypedecl = \u6587\u6863\u6839\u5143\u7D20 "{1}" \u5FC5\u987B\u5339\u914D DOCTYPE \u6839 "{0}"\u3002
++        UndeclaredElementInContentSpec = \u5143\u7D20 "{0}" \u7684\u5185\u5BB9\u6A21\u578B\u5F15\u7528\u672A\u58F0\u660E\u7684\u5143\u7D20 "{1}"\u3002
++        UniqueNotationName = \u8BB0\u53F7 "{0}" \u7684\u58F0\u660E\u4E0D\u662F\u552F\u4E00\u7684\u3002\u4E0D\u80FD\u5728\u591A\u4E2A\u8BB0\u53F7\u58F0\u660E\u4E2D\u58F0\u660E\u6307\u5B9A\u7684\u540D\u79F0\u3002
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype \u9A8C\u8BC1\u7A0B\u5E8F: \u672A\u80FD\u4F7F\u7528\u6709\u6548\u7684\u8BED\u6CD5\u5F15\u7528\u8C03\u7528\u521D\u59CB\u5316\u65B9\u6CD5\u3002\t
+-        ENTITYNotUnparsed = ENTITY \"{0}\" \u672A\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u3002
+-        ENTITYNotValid = ENTITY \"{0}\" \u65E0\u6548\u3002
++        ENTITYNotUnparsed = ENTITY "{0}" \u4E0D\u662F\u672A\u89E3\u6790\u7684\u3002
++        ENTITYNotValid = ENTITY "{0}" \u65E0\u6548\u3002
+         EmptyList = \u7C7B\u578B\u4E3A ENTITIES, IDREFS \u548C NMTOKENS \u7684\u503C\u4E0D\u80FD\u662F\u7A7A\u5217\u8868\u3002
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = \u5C5E\u6027\u503C\u4E2D\u4E0D\u5141\u8BB8\u91C7\u7528\u5916\u90E8\u5B9E\u4F53\u5F15\u7528 \"&{0};\"\u3002
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = \u5C5E\u6027\u503C\u4E2D\u4E0D\u5141\u8BB8\u91C7\u7528\u5916\u90E8\u5B9E\u4F53\u5F15\u7528 "&{0};"\u3002
++        AccessExternalDTD = \u5916\u90E8 DTD: \u65E0\u6CD5\u8BFB\u53D6\u5916\u90E8 DTD ''{0}'', \u56E0\u4E3A accessExternalDTD \u5C5E\u6027\u8BBE\u7F6E\u7684\u9650\u5236\u5BFC\u81F4\u4E0D\u5141\u8BB8 ''{1}'' \u8BBF\u95EE\u3002
++        AccessExternalEntity = \u5916\u90E8\u5B9E\u4F53: \u65E0\u6CD5\u8BFB\u53D6\u5916\u90E8\u6587\u6863 ''{0}'', \u56E0\u4E3A accessExternalDTD \u5C5E\u6027\u8BBE\u7F6E\u7684\u9650\u5236\u5BFC\u81F4\u4E0D\u5141\u8BB8 ''{1}'' \u8BBF\u95EE\u3002
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = \u5F15\u7528\u4E86\u5B9E\u4F53 \"{0}\", \u4F46\u672A\u58F0\u660E\u5B83\u3002
+-        ReferenceToUnparsedEntity = \u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u5F15\u7528 \"&{0};\"\u3002
+-        RecursiveReference = \u9012\u5F52\u5B9E\u4F53\u5F15\u7528 \"{0}\"\u3002(\u5F15\u7528\u8DEF\u5F84: {1}),
+-        RecursiveGeneralReference = \u9012\u5F52\u4E00\u822C\u5B9E\u4F53\u5F15\u7528 \"&{0};\"\u3002(\u5F15\u7528\u8DEF\u5F84: {1}),
+-        RecursivePEReference = \u9012\u5F52\u53C2\u6570\u5B9E\u4F53\u5F15\u7528 \"%{0};\"\u3002(\u5F15\u7528\u8DEF\u5F84: {1}),
++        EntityNotDeclared = \u5F15\u7528\u4E86\u5B9E\u4F53 "{0}", \u4F46\u672A\u58F0\u660E\u5B83\u3002
++        ReferenceToUnparsedEntity = \u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u89E3\u6790\u7684\u5B9E\u4F53\u5F15\u7528 "&{0};"\u3002
++        RecursiveReference = \u9012\u5F52\u5B9E\u4F53\u5F15\u7528 "{0}"\u3002(\u5F15\u7528\u8DEF\u5F84: {1}),
++        RecursiveGeneralReference = \u9012\u5F52\u4E00\u822C\u5B9E\u4F53\u5F15\u7528 "&{0};"\u3002(\u5F15\u7528\u8DEF\u5F84: {1}),
++        RecursivePEReference = \u9012\u5F52\u53C2\u6570\u5B9E\u4F53\u5F15\u7528 "%{0};"\u3002(\u5F15\u7528\u8DEF\u5F84: {1}),
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = \u4E0D\u652F\u6301\u7F16\u7801 \"{0}\"\u3002
+-        EncodingRequired = \u5982\u679C\u5DF2\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u7684\u5B9E\u4F53\u672A\u4F7F\u7528 UTF-8 \u6216 UTF-16 \u8FDB\u884C\u7F16\u7801, \u5219\u8BE5\u5B9E\u4F53\u5FC5\u987B\u5305\u542B\u7F16\u7801\u58F0\u660E\u3002
++        EncodingNotSupported = \u4E0D\u652F\u6301\u7F16\u7801 "{0}"\u3002
++        EncodingRequired = \u5982\u679C\u5DF2\u89E3\u6790\u7684\u5B9E\u4F53\u672A\u4F7F\u7528 UTF-8 \u6216 UTF-16 \u8FDB\u884C\u7F16\u7801, \u5219\u8BE5\u5B9E\u4F53\u5FC5\u987B\u5305\u542B\u7F16\u7801\u58F0\u660E\u3002
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = \u5143\u7D20\u6216\u5C5E\u6027\u4E0D\u5339\u914D QName \u751F\u4EA7: QName::=(NCName':')?NCName\u3002
+-        ElementXMLNSPrefix = \u5143\u7D20 \"{0}\" \u4E0D\u80FD\u4F7F\u7528 \"xmlns\" \u4F5C\u4E3A\u524D\u7F00\u3002
+-        ElementPrefixUnbound = \u5143\u7D20 \"{1}\" \u7684\u524D\u7F00 \"{0}\" \u672A\u7ED1\u5B9A\u3002
+-        AttributePrefixUnbound = \u4E0E\u5143\u7D20\u7C7B\u578B \"{0}\" \u76F8\u5173\u8054\u7684\u5C5E\u6027 \"{1}\" \u7684\u524D\u7F00 \"{2}\" \u672A\u7ED1\u5B9A\u3002
+-        EmptyPrefixedAttName = \u5C5E\u6027 \"{0}\" \u7684\u503C\u65E0\u6548\u3002\u5E26\u524D\u7F00\u7684\u540D\u79F0\u7A7A\u95F4\u7ED1\u5B9A\u4E0D\u80FD\u4E3A\u7A7A\u3002
+-        PrefixDeclared = \u672A\u58F0\u660E\u540D\u79F0\u7A7A\u95F4\u524D\u7F00 \"{0}\"\u3002
++        ElementXMLNSPrefix = \u5143\u7D20 "{0}" \u4E0D\u80FD\u4F7F\u7528 "xmlns" \u4F5C\u4E3A\u524D\u7F00\u3002
++        ElementPrefixUnbound = \u5143\u7D20 "{1}" \u7684\u524D\u7F00 "{0}" \u672A\u7ED1\u5B9A\u3002
++        AttributePrefixUnbound = \u4E0E\u5143\u7D20\u7C7B\u578B "{0}" \u76F8\u5173\u8054\u7684\u5C5E\u6027 "{1}" \u7684\u524D\u7F00 "{2}" \u672A\u7ED1\u5B9A\u3002
++        EmptyPrefixedAttName = \u5C5E\u6027 "{0}" \u7684\u503C\u65E0\u6548\u3002\u5E26\u524D\u7F00\u7684\u540D\u79F0\u7A7A\u95F4\u7ED1\u5B9A\u4E0D\u80FD\u4E3A\u7A7A\u3002
++        PrefixDeclared = \u672A\u58F0\u660E\u540D\u79F0\u7A7A\u95F4\u524D\u7F00 "{0}"\u3002
+         CantBindXMLNS = \u524D\u7F00 "xmlns" \u4E0D\u80FD\u663E\u5F0F\u7ED1\u5B9A\u5230\u4EFB\u4F55\u540D\u79F0\u7A7A\u95F4; "xmlns" \u7684\u540D\u79F0\u7A7A\u95F4\u4E5F\u4E0D\u80FD\u663E\u5F0F\u7ED1\u5B9A\u5230\u4EFB\u4F55\u524D\u7F00\u3002
+         CantBindXML = \u524D\u7F00 "xml" \u4E0D\u80FD\u7ED1\u5B9A\u5230\u9664\u5B83\u7684\u5E38\u7528\u540D\u79F0\u7A7A\u95F4\u5916\u7684\u4EFB\u4F55\u540D\u79F0\u7A7A\u95F4; "xml" \u7684\u540D\u79F0\u7A7A\u95F4\u4E5F\u4E0D\u80FD\u7ED1\u5B9A\u5230\u9664 "xml" \u5916\u7684\u4EFB\u4F55\u524D\u7F00\u3002
+-        MSG_ATT_DEFAULT_INVALID = \u5C5E\u6027 \"{0}\" \u7684 defaultValue \"{1}\" \u975E\u6CD5, \u56E0\u4E3A\u6B64\u5C5E\u6027\u7C7B\u578B\u5177\u6709\u8BCD\u6C47\u7EA6\u675F\u6761\u4EF6\u3002
++        MSG_ATT_DEFAULT_INVALID = \u5C5E\u6027 "{0}" \u7684 defaultValue "{1}" \u975E\u6CD5, \u56E0\u4E3A\u6B64\u5C5E\u6027\u7C7B\u578B\u5177\u6709\u8BCD\u6C47\u7EA6\u675F\u6761\u4EF6\u3002
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +317,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=\u8BED\u6CD5\u5206\u6790\u5668\u5728\u6B64\u6587\u6863\u4E2D\u9047\u5230\u591A\u4E2A \"{0}\" \u5B9E\u4F53\u6269\u5C55; \u8FD9\u662F\u5E94\u7528\u7A0B\u5E8F\u65BD\u52A0\u7684\u9650\u5236\u3002
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: \u89E3\u6790\u5668\u5728\u6B64\u6587\u6863\u4E2D\u9047\u5230\u591A\u4E2A "{0}" \u5B9E\u4F53\u6269\u5C55; \u8FD9\u662F JDK \u65BD\u52A0\u7684\u9650\u5236\u3002
++        ElementAttributeLimit=JAXP00010002: \u5143\u7D20 "{0}" \u5177\u6709\u591A\u4E2A "{1}" \u5C5E\u6027, "{1}" \u662F JDK \u65BD\u52A0\u7684\u9650\u5236\u3002
++        MaxEntitySizeLimit=JAXP00010003: \u5B9E\u4F53 "{0}" \u7684\u957F\u5EA6\u4E3A "{1}", \u8D85\u8FC7\u4E86 "{3}" \u8BBE\u7F6E\u7684 "{2}" \u9650\u5236\u3002
++        TotalEntitySizeLimit=JAXP00010004: \u5B9E\u4F53\u7684\u7D2F\u8BA1\u5927\u5C0F "{0}" \u8D85\u8FC7\u4E86 "{2}" \u8BBE\u7F6E\u7684 "{1}" \u9650\u5236\u3002
++        MaxXMLNameLimit=JAXP00010005: \u540D\u79F0 "{0}" \u8D85\u8FC7\u4E86 "{2}" \u8BBE\u7F6E\u7684 "{1}" \u9650\u5236\u3002
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= \u5143\u7D20 \"{0}\" \u5177\u6709\u591A\u4E2A \"{1}\" \u5C5E\u6027, \"{1}\" \u662F\u5E94\u7528\u7A0B\u5E8F\u65BD\u52A0\u7684\u9650\u5236\u3002
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties	2013-12-14 21:11:06.000000000 -0500
+@@ -1,30 +1,27 @@
+-/*
+- * 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.
+- */
+-
+-/*
+- * Copyright (c) 2009 by Oracle Corporation. 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
++# 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.
++#
+ 
+ # This file contains error and warning messages related to XML
+ # The messages are arranged in key and value tuples in a ListResourceBundle.
+@@ -48,14 +45,14 @@
+         InvalidCharInProlog = \u5728\u6587\u4EF6\u5BA3\u544A\u96C6\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+ # 2.4 Character Data and Markup
+-        CDEndInContent = \u5B57\u5143\u9806\u5E8F \"]]>\" \u4E0D\u53EF\u51FA\u73FE\u5728\u5167\u5BB9\u4E2D\uFF0C\u9664\u975E\u7528\u65BC\u6A19\u793A CDATA \u6BB5\u843D\u7684\u7D50\u5C3E\u3002
++        CDEndInContent = \u5B57\u5143\u9806\u5E8F "]]>" \u4E0D\u53EF\u51FA\u73FE\u5728\u5167\u5BB9\u4E2D\uFF0C\u9664\u975E\u7528\u65BC\u6A19\u793A CDATA \u6BB5\u843D\u7684\u7D50\u5C3E\u3002
+ # 2.7 CDATA Sections
+-        CDSectUnterminated = CDATA \u6BB5\u843D\u7D50\u5C3E\u5FC5\u9808\u662F \"]]>\"\u3002
++        CDSectUnterminated = CDATA \u6BB5\u843D\u7D50\u5C3E\u5FC5\u9808\u662F "]]>"\u3002
+ # 2.8 Prolog and Document Type Declaration
+         XMLDeclMustBeFirst = XML \u5BA3\u544A\u50C5\u80FD\u51FA\u73FE\u5728\u6587\u4EF6\u7684\u958B\u982D\u3002
+-        EqRequiredInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\uFF0C'' = '' \u5B57\u5143\u5FC5\u9808\u7DCA\u63A5\u5728 \"{0}\" \u4E4B\u5F8C\u3002
+-        QuoteRequiredInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\uFF0C\"{0}\" \u4E4B\u5F8C\u7684\u503C\u5FC5\u9808\u662F\u4EE5\u5F15\u865F\u62EC\u4F4F\u7684\u5B57\u4E32\u3002
+-        XMLDeclUnterminated = XML \u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u662F \"?>\"\u3002
++        EqRequiredInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\uFF0C'' = '' \u5B57\u5143\u5FC5\u9808\u7DCA\u63A5\u5728 "{0}" \u4E4B\u5F8C\u3002
++        QuoteRequiredInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\uFF0C"{0}" \u4E4B\u5F8C\u7684\u503C\u5FC5\u9808\u662F\u4EE5\u5F15\u865F\u62EC\u4F4F\u7684\u5B57\u4E32\u3002
++        XMLDeclUnterminated = XML \u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u662F "?>"\u3002
+         VersionInfoRequired = XML \u5BA3\u544A\u4E2D\u9700\u8981\u7248\u672C\u3002
+         SpaceRequiredBeforeVersionInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\uFF0C\u7248\u672C\u865B\u64EC\u5C6C\u6027\u4E4B\u524D\u9700\u8981\u6709\u7A7A\u683C\u3002
+         SpaceRequiredBeforeEncodingInXMLDecl = \u5728 XML \u5BA3\u544A\u4E2D\uFF0C\u7DE8\u78BC\u865B\u64EC\u5C6C\u6027\u4E4B\u524D\u9700\u8981\u6709\u7A7A\u683C\u3002
+@@ -71,90 +68,91 @@
+         ReferenceIllegalInTrailingMisc=\u5C3E\u7AEF\u6BB5\u843D\u4E2D\u4E0D\u5141\u8A31\u53C3\u7167\u3002
+         
+ # 2.9 Standalone Document Declaration
+-        SDDeclInvalid = \u7368\u7ACB\u6587\u4EF6\u5BA3\u544A\u503C\u5FC5\u9808\u662F \"yes\" \u6216 \"no\"\uFF0C\u800C\u975E \"{0}\"\u3002
++        SDDeclInvalid = \u7368\u7ACB\u6587\u4EF6\u5BA3\u544A\u503C\u5FC5\u9808\u662F "yes" \u6216 "no"\uFF0C\u800C\u975E "{0}"\u3002
++        SDDeclNameInvalid = XML \u5BA3\u544A\u4E2D\u7684\u7368\u7ACB\u540D\u7A31\u53EF\u80FD\u62FC\u932F\u4E86\u3002
+ # 2.12 Language Identification
+-        XMLLangInvalid = xml:lang \u5C6C\u6027\u503C \"{0}\" \u70BA\u7121\u6548\u7684\u8A9E\u8A00 ID\u3002
++        XMLLangInvalid = xml:lang \u5C6C\u6027\u503C "{0}" \u70BA\u7121\u6548\u7684\u8A9E\u8A00 ID\u3002
+ # 3. Logical Structures
+-        ETagRequired = \u5143\u7D20\u985E\u578B \"{0}\" \u5FC5\u9808\u7531\u914D\u5C0D\u7684\u7D50\u675F\u6A19\u8A18 \"</{0}>\" \u7D42\u6B62\u3002
++        ETagRequired = \u5143\u7D20\u985E\u578B "{0}" \u5FC5\u9808\u7531\u914D\u5C0D\u7684\u7D50\u675F\u6A19\u8A18 "</{0}>" \u7D42\u6B62\u3002
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ElementUnterminated = \u5143\u7D20\u985E\u578B \"{0}\" \u4E4B\u5F8C\u5FC5\u9808\u7DCA\u63A5\u5C6C\u6027\u8A2D\u5B9A \">\" \u6216 \"/>\"\u3002
+-        EqRequiredInAttribute = \u95DC\u806F\u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5C6C\u6027\u540D\u7A31 \"{1}\" \u4E4B\u5F8C\u5FC5\u9808\u7DCA\u63A5 '' = '' \u5B57\u5143\u3002
+-        OpenQuoteExpected = \u95DC\u806F\u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5C6C\u6027 \"{1}\" \u9810\u671F\u6709\u958B\u982D\u5F15\u865F\u3002
+-        CloseQuoteExpected = \u95DC\u806F\u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5C6C\u6027 \"{1}\" \u9810\u671F\u6709\u7D50\u675F\u5F15\u865F\u3002
+-        AttributeNotUnique = \u5DF2\u7D93\u70BA\u5143\u7D20 \"{0}\" \u6307\u5B9A\u5C6C\u6027 \"{1}\"\u3002
+-        AttributeNSNotUnique = \u5DF2\u7D93\u70BA\u5143\u7D20 \"{0}\" \u6307\u5B9A\u9023\u7D50\u547D\u540D\u7A7A\u9593 \"{2}\" \u7684\u5C6C\u6027 \"{1}\"\u3002
+-        ETagUnterminated = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u7D50\u675F\u6A19\u8A18\u7D50\u5C3E\u5FC5\u9808\u662F ''>'' \u5206\u754C\u5B57\u5143\u3002
++        ElementUnterminated = \u5143\u7D20\u985E\u578B "{0}" \u4E4B\u5F8C\u5FC5\u9808\u7DCA\u63A5\u5C6C\u6027\u8A2D\u5B9A ">" \u6216 "/>"\u3002
++        EqRequiredInAttribute = \u95DC\u806F\u5143\u7D20\u985E\u578B "{0}" \u7684\u5C6C\u6027\u540D\u7A31 "{1}" \u4E4B\u5F8C\u5FC5\u9808\u7DCA\u63A5 '' = '' \u5B57\u5143\u3002
++        OpenQuoteExpected = \u95DC\u806F\u5143\u7D20\u985E\u578B "{0}" \u7684\u5C6C\u6027 "{1}" \u9810\u671F\u6709\u958B\u982D\u5F15\u865F\u3002
++        CloseQuoteExpected = \u95DC\u806F\u5143\u7D20\u985E\u578B "{0}" \u7684\u5C6C\u6027 "{1}" \u9810\u671F\u6709\u7D50\u675F\u5F15\u865F\u3002
++        AttributeNotUnique = \u5DF2\u7D93\u70BA\u5143\u7D20 "{0}" \u6307\u5B9A\u5C6C\u6027 "{1}"\u3002
++        AttributeNSNotUnique = \u5DF2\u7D93\u70BA\u5143\u7D20 "{0}" \u6307\u5B9A\u9023\u7D50\u547D\u540D\u7A7A\u9593 "{2}" \u7684\u5C6C\u6027 "{1}"\u3002
++        ETagUnterminated = \u5143\u7D20\u985E\u578B "{0}" \u7684\u7D50\u675F\u6A19\u8A18\u7D50\u5C3E\u5FC5\u9808\u662F ''>'' \u5206\u754C\u5B57\u5143\u3002
+         MarkupNotRecognizedInContent = \u5143\u7D20\u7684\u5167\u5BB9\u5FC5\u9808\u7531\u683C\u5F0F\u6B63\u78BA\u7684\u4F4D\u63CF\u8FF0\u8CC7\u6599\u6216\u6A19\u8A18\u6240\u7D44\u6210\u3002
+         DoctypeIllegalInContent = \u5167\u5BB9\u4E0D\u5141\u8A31 DOCTYPE\u3002
+ # 4.1 Character and Entity References
+         ReferenceUnterminated = \u53C3\u7167\u5FC5\u9808\u7531 ';' \u5206\u754C\u5B57\u5143\u7D42\u6B62\u3002
+ # 4.3.2 Well-Formed Parsed Entities
+-        ReferenceNotInOneEntity = \u53C3\u7167\u5FC5\u9808\u6574\u500B\u5305\u542B\u5728\u76F8\u540C\u7684\u5256\u6790\u500B\u9AD4\u5167\u3002
+-        ElementEntityMismatch = \u5143\u7D20 \"{0}\" \u7684\u958B\u982D\u8207\u7D50\u5C3E\u5FC5\u9808\u5728\u76F8\u540C\u500B\u9AD4\u5167\u3002
+-        MarkupEntityMismatch=XML \u6587\u4EF6\u7D50\u69CB\u7684\u958B\u982D\u8207\u7D50\u5C3E\u5FC5\u9808\u5728\u76F8\u540C\u500B\u9AD4\u5167\u3002
++        ReferenceNotInOneEntity = \u53C3\u7167\u5FC5\u9808\u6574\u500B\u5305\u542B\u5728\u76F8\u540C\u7684\u5256\u6790\u5BE6\u9AD4\u5167\u3002
++        ElementEntityMismatch = \u5143\u7D20 "{0}" \u7684\u958B\u982D\u8207\u7D50\u5C3E\u5FC5\u9808\u5728\u76F8\u540C\u5BE6\u9AD4\u5167\u3002
++        MarkupEntityMismatch=XML \u6587\u4EF6\u7D50\u69CB\u7684\u958B\u982D\u8207\u7D50\u5C3E\u5FC5\u9808\u5728\u76F8\u540C\u5BE6\u9AD4\u5167\u3002
+         
+ # Messages common to Document and DTD
+ # 2.2 Characters
+-        InvalidCharInAttValue = \u5728\u5C6C\u6027 \"{1}\" \u7684\u503C\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{2}) \u4E14\u5143\u7D20\u70BA \"{0}\"\u3002
++        InvalidCharInAttValue = \u5728\u5C6C\u6027 "{1}" \u7684\u503C\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{2}) \u4E14\u5143\u7D20\u70BA "{0}"\u3002
+         InvalidCharInComment = \u5728\u8A3B\u89E3\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInPI = \u5728\u8655\u7406\u6307\u793A\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInInternalSubset = \u5728 DTD \u5167\u90E8\u5B50\u96C6\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInTextDecl = \u5728\u6587\u5B57\u5BA3\u544A\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+ # 2.3 Common Syntactic Constructs
+-        QuoteRequiredInAttValue = \u5C6C\u6027 \"{1}\" \u7684\u503C\u958B\u982D\u5FC5\u9808\u70BA\u55AE\u5F15\u865F\u6216\u96D9\u5F15\u865F\u5B57\u5143\u3002
+-        LessthanInAttValue = \u95DC\u806F\u5143\u7D20\u985E\u578B \"{0}\" \u4E4B\u5C6C\u6027 \"{1}\" \u7684\u503C\u4E0D\u53EF\u5305\u542B ''<'' \u5B57\u5143\u3002
+-        AttributeValueUnterminated = \u5C6C\u6027 \"{1}\" \u7684\u503C\u7D50\u5C3E\u5FC5\u9808\u662F\u914D\u5C0D\u7684\u5F15\u865F\u5B57\u5143\u3002
++        QuoteRequiredInAttValue = \u5C6C\u6027 "{1}" \u7684\u503C\u958B\u982D\u5FC5\u9808\u70BA\u55AE\u5F15\u865F\u6216\u96D9\u5F15\u865F\u5B57\u5143\u3002
++        LessthanInAttValue = \u95DC\u806F\u5143\u7D20\u985E\u578B "{0}" \u4E4B\u5C6C\u6027 "{1}" \u7684\u503C\u4E0D\u53EF\u5305\u542B ''<'' \u5B57\u5143\u3002
++        AttributeValueUnterminated = \u5C6C\u6027 "{1}" \u7684\u503C\u7D50\u5C3E\u5FC5\u9808\u662F\u914D\u5C0D\u7684\u5F15\u865F\u5B57\u5143\u3002
+ # 2.5 Comments
+-        InvalidCommentStart = \u8A3B\u89E3\u958B\u982D\u5FC5\u9808\u70BA \"<!--\"\u3002
+-        DashDashInComment = \u8A3B\u89E3\u4E0D\u5141\u8A31\u5B57\u4E32 \"--\"\u3002
+-        CommentUnterminated = \u8A3B\u89E3\u7D50\u5C3E\u5FC5\u9808\u70BA \"-->\"\u3002
+-        COMMENT_NOT_IN_ONE_ENTITY = \u8A3B\u89E3\u672A\u5305\u542B\u5728\u76F8\u540C\u500B\u9AD4\u5167\u3002
++        InvalidCommentStart = \u8A3B\u89E3\u958B\u982D\u5FC5\u9808\u70BA "<!--"\u3002
++        DashDashInComment = \u8A3B\u89E3\u4E0D\u5141\u8A31\u5B57\u4E32 "--"\u3002
++        CommentUnterminated = \u8A3B\u89E3\u7D50\u5C3E\u5FC5\u9808\u70BA "-->"\u3002
++        COMMENT_NOT_IN_ONE_ENTITY = \u8A3B\u89E3\u672A\u5305\u542B\u5728\u76F8\u540C\u5BE6\u9AD4\u5167\u3002
+ # 2.6 Processing Instructions
+         PITargetRequired = \u8655\u7406\u6307\u793A\u7684\u958B\u982D\u5FC5\u9808\u662F\u76EE\u6A19\u7684\u540D\u7A31\u3002
+         SpaceRequiredInPI = \u8655\u7406\u6307\u793A\u76EE\u6A19\u8207\u8CC7\u6599\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        PIUnterminated = \u8655\u7406\u6307\u793A\u7D50\u5C3E\u5FC5\u9808\u662F \"?>\"\u3002
+-        ReservedPITarget = \u4E0D\u5141\u8A31\u7B26\u5408 \"[xX][mM][lL]\" \u7684\u8655\u7406\u6307\u793A\u76EE\u6A19\u3002
+-        PI_NOT_IN_ONE_ENTITY = \u8655\u7406\u6307\u793A\u672A\u5305\u542B\u5728\u76F8\u540C\u500B\u9AD4\u5167\u3002
++        PIUnterminated = \u8655\u7406\u6307\u793A\u7D50\u5C3E\u5FC5\u9808\u662F "?>"\u3002
++        ReservedPITarget = \u4E0D\u5141\u8A31\u7B26\u5408 "[xX][mM][lL]" \u7684\u8655\u7406\u6307\u793A\u76EE\u6A19\u3002
++        PI_NOT_IN_ONE_ENTITY = \u8655\u7406\u6307\u793A\u672A\u5305\u542B\u5728\u76F8\u540C\u5BE6\u9AD4\u5167\u3002
+ # 2.8 Prolog and Document Type Declaration
+-        VersionInfoInvalid = \u7121\u6548\u7684\u7248\u672C \"{0}\"\u3002
+-        VersionNotSupported = \u4E0D\u652F\u63F4 XML \u7248\u672C \"{0}\"\uFF0C\u50C5\u652F\u63F4 XML 1.0\u3002
+-        VersionNotSupported11 = \u4E0D\u652F\u63F4 XML \u7248\u672C \"{0}\"\uFF0C\u50C5\u652F\u63F4 XML 1.0 \u8207 XML 1.1\u3002
+-        VersionMismatch= \u500B\u9AD4\u4E0D\u53EF\u5305\u542B\u8F03\u65B0\u7248\u672C\u7684\u5176\u4ED6\u500B\u9AD4\u3002
++        VersionInfoInvalid = \u7121\u6548\u7684\u7248\u672C "{0}"\u3002
++        VersionNotSupported = \u4E0D\u652F\u63F4 XML \u7248\u672C "{0}"\uFF0C\u50C5\u652F\u63F4 XML 1.0\u3002
++        VersionNotSupported11 = \u4E0D\u652F\u63F4 XML \u7248\u672C "{0}"\uFF0C\u50C5\u652F\u63F4 XML 1.0 \u8207 XML 1.1\u3002
++        VersionMismatch= \u5BE6\u9AD4\u4E0D\u53EF\u5305\u542B\u8F03\u65B0\u7248\u672C\u7684\u5176\u4ED6\u5BE6\u9AD4\u3002
+ # 4.1 Character and Entity References
+-        DigitRequiredInCharRef = \u5728\u5B57\u5143\u53C3\u7167\u4E2D\uFF0C\u5341\u9032\u4F4D\u8868\u793A\u6CD5\u5FC5\u9808\u7DCA\u63A5\u5728 \"&#\" \u4E4B\u5F8C\u3002
+-        HexdigitRequiredInCharRef = \u5728\u5B57\u5143\u53C3\u7167\u4E2D\uFF0C\u5341\u516D\u9032\u4F4D\u8868\u793A\u6CD5\u5FC5\u9808\u7DCA\u63A5\u5728 \"&#x\" \u4E4B\u5F8C\u3002
++        DigitRequiredInCharRef = \u5728\u5B57\u5143\u53C3\u7167\u4E2D\uFF0C\u5341\u9032\u4F4D\u8868\u793A\u6CD5\u5FC5\u9808\u7DCA\u63A5\u5728 "&#" \u4E4B\u5F8C\u3002
++        HexdigitRequiredInCharRef = \u5728\u5B57\u5143\u53C3\u7167\u4E2D\uFF0C\u5341\u516D\u9032\u4F4D\u8868\u793A\u6CD5\u5FC5\u9808\u7DCA\u63A5\u5728 "&#x" \u4E4B\u5F8C\u3002
+         SemicolonRequiredInCharRef = \u5B57\u5143\u53C3\u7167\u7684\u7D50\u5C3E\u5FC5\u9808\u662F ';' \u5206\u754C\u5B57\u5143\u3002
+-        InvalidCharRef = \u5B57\u5143\u53C3\u7167 \"&#{0}\" \u70BA\u7121\u6548\u7684 XML \u5B57\u5143\u3002
+-        NameRequiredInReference = \u5728\u500B\u9AD4\u53C3\u7167\u4E2D\uFF0C\u500B\u9AD4\u540D\u7A31\u5FC5\u9808\u7DCA\u63A5\u5728 '&' \u4E4B\u5F8C\u3002
+-        SemicolonRequiredInReference = \u500B\u9AD4 \"{0}\" \u7684\u53C3\u7167\u7D50\u5C3E\u5FC5\u9808\u70BA '';'' \u5206\u754C\u5B57\u5143\u3002
++        InvalidCharRef = \u5B57\u5143\u53C3\u7167 "&#{0}" \u70BA\u7121\u6548\u7684 XML \u5B57\u5143\u3002
++        NameRequiredInReference = \u5728\u5BE6\u9AD4\u53C3\u7167\u4E2D\uFF0C\u5BE6\u9AD4\u540D\u7A31\u5FC5\u9808\u7DCA\u63A5\u5728 '&' \u4E4B\u5F8C\u3002
++        SemicolonRequiredInReference = \u5BE6\u9AD4 "{0}" \u7684\u53C3\u7167\u7D50\u5C3E\u5FC5\u9808\u70BA '';'' \u5206\u754C\u5B57\u5143\u3002
+ # 4.3.1 The Text Declaration
+-        TextDeclMustBeFirst = \u6587\u5B57\u5BA3\u544A\u50C5\u80FD\u51FA\u73FE\u5728\u5916\u90E8\u5256\u6790\u500B\u9AD4\u7684\u958B\u982D\u3002
+-        EqRequiredInTextDecl = \u5728\u6587\u5B57\u5BA3\u544A\u4E2D\uFF0C'' = '' \u5B57\u5143\u5FC5\u9808\u7DCA\u63A5\u5728 \"{0}\" \u4E4B\u5F8C\u3002
+-        QuoteRequiredInTextDecl = \u6587\u5B57\u5BA3\u544A\u4E2D \"{0}\" \u4E4B\u5F8C\u7684\u503C\u5FC5\u9808\u662F\u4EE5\u5F15\u865F\u62EC\u4F4F\u7684\u5B57\u4E32\u3002
+-        CloseQuoteMissingInTextDecl = \u6587\u5B57\u5BA3\u544A\u4E2D\uFF0C\u907A\u6F0F \"{0}\" \u4E4B\u5F8C\u7684\u503C\u7684\u7D50\u675F\u5F15\u865F\u3002
++        TextDeclMustBeFirst = \u6587\u5B57\u5BA3\u544A\u50C5\u80FD\u51FA\u73FE\u5728\u5916\u90E8\u5256\u6790\u5BE6\u9AD4\u7684\u958B\u982D\u3002
++        EqRequiredInTextDecl = \u5728\u6587\u5B57\u5BA3\u544A\u4E2D\uFF0C'' = '' \u5B57\u5143\u5FC5\u9808\u7DCA\u63A5\u5728 "{0}" \u4E4B\u5F8C\u3002
++        QuoteRequiredInTextDecl = \u6587\u5B57\u5BA3\u544A\u4E2D "{0}" \u4E4B\u5F8C\u7684\u503C\u5FC5\u9808\u662F\u4EE5\u5F15\u865F\u62EC\u4F4F\u7684\u5B57\u4E32\u3002
++        CloseQuoteMissingInTextDecl = \u6587\u5B57\u5BA3\u544A\u4E2D\uFF0C\u907A\u6F0F "{0}" \u4E4B\u5F8C\u7684\u503C\u7684\u7D50\u675F\u5F15\u865F\u3002
+         SpaceRequiredBeforeVersionInTextDecl = \u5728\u6587\u5B57\u5BA3\u544A\u4E2D\uFF0C\u7248\u672C\u865B\u64EC\u5C6C\u6027\u4E4B\u524D\u9700\u8981\u6709\u7A7A\u683C\u3002
+         SpaceRequiredBeforeEncodingInTextDecl = \u5728\u6587\u5B57\u5BA3\u544A\u4E2D\uFF0C\u7DE8\u78BC\u865B\u64EC\u5C6C\u6027\u4E4B\u524D\u9700\u8981\u6709\u7A7A\u683C\u3002
+-        TextDeclUnterminated = \u6587\u5B57\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u662F \"?>\"\u3002
++        TextDeclUnterminated = \u6587\u5B57\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u662F "?>"\u3002
+         EncodingDeclRequired = \u6587\u5B57\u5BA3\u544A\u4E2D\u9700\u8981\u7DE8\u78BC\u5BA3\u544A\u3002
+         NoMorePseudoAttributes = \u4E0D\u5141\u8A31\u66F4\u591A\u7684\u865B\u64EC\u5C6C\u6027\u3002
+         MorePseudoAttributes = \u9810\u671F\u66F4\u591A\u7684\u865B\u64EC\u5C6C\u6027\u3002
+         PseudoAttrNameExpected = \u9810\u671F\u4E00\u500B\u865B\u64EC\u5C6C\u6027\u540D\u7A31\u3002
+ # 4.3.2 Well-Formed Parsed Entities
+-        CommentNotInOneEntity = \u8A3B\u89E3\u5FC5\u9808\u6574\u500B\u5305\u542B\u5728\u76F8\u540C\u7684\u5256\u6790\u500B\u9AD4\u5167\u3002
+-        PINotInOneEntity = \u8655\u7406\u6307\u793A\u5FC5\u9808\u6574\u500B\u5305\u542B\u5728\u76F8\u540C\u7684\u5256\u6790\u500B\u9AD4\u5167\u3002
++        CommentNotInOneEntity = \u8A3B\u89E3\u5FC5\u9808\u6574\u500B\u5305\u542B\u5728\u76F8\u540C\u7684\u5256\u6790\u5BE6\u9AD4\u5167\u3002
++        PINotInOneEntity = \u8655\u7406\u6307\u793A\u5FC5\u9808\u6574\u500B\u5305\u542B\u5728\u76F8\u540C\u7684\u5256\u6790\u5BE6\u9AD4\u5167\u3002
+ # 4.3.3 Character Encoding in Entities
+-        EncodingDeclInvalid = \u7121\u6548\u7684\u7DE8\u78BC\u540D\u7A31 \"{0}\"\u3002
+-        EncodingByteOrderUnsupported = \u4E0D\u652F\u63F4\u7DE8\u78BC \"{0}\" \u7684\u6307\u5B9A\u4F4D\u5143\u7D44\u9806\u5E8F\u3002
++        EncodingDeclInvalid = \u7121\u6548\u7684\u7DE8\u78BC\u540D\u7A31 "{0}"\u3002
++        EncodingByteOrderUnsupported = \u4E0D\u652F\u63F4\u7DE8\u78BC "{0}" \u7684\u6307\u5B9A\u4F4D\u5143\u7D44\u9806\u5E8F\u3002
+         InvalidByte = {1}-byte UTF-8 \u5E8F\u5217\u7684\u7121\u6548\u4F4D\u5143\u7D44 {0}\u3002
+         ExpectedByte = {1}-byte UTF-8 \u5E8F\u5217\u9810\u671F\u7684\u4F4D\u5143\u7D44 {0}\u3002
+         InvalidHighSurrogate = UTF-8 \u5E8F\u5217\u4E2D\u9AD8\u66FF\u4EE3\u4F4D\u5143\u4E0D\u53EF\u8D85\u904E 0x10\uFF0C\u4F46\u627E\u5230 0x{0}\u3002
+-        OperationNotSupported = {1} \u8B80\u53D6\u5668\u4E0D\u652F\u63F4\u4F5C\u696D \"{0}\"\u3002
+-        InvalidASCII = \u7D44\u5143\u7D44 \"{0}\" \u4E0D\u662F (7 \u4F4D\u5143) ASCII \u5B57\u5143\u96C6\u7684\u6210\u54E1\u3002
+-        CharConversionFailure = \u6C7A\u5B9A\u4F7F\u7528\u7279\u5B9A\u7DE8\u78BC\u7684\u500B\u9AD4\uFF0C\u5728\u8A72\u7DE8\u78BC\u4E2D\u4E0D\u53EF\u5305\u542B\u7121\u6548\u7684\u5E8F\u5217\u3002
++        OperationNotSupported = {1} \u8B80\u53D6\u5668\u4E0D\u652F\u63F4\u4F5C\u696D "{0}"\u3002
++        InvalidASCII = \u7D44\u5143\u7D44 "{0}" \u4E0D\u662F (7 \u4F4D\u5143) ASCII \u5B57\u5143\u96C6\u7684\u6210\u54E1\u3002
++        CharConversionFailure = \u6C7A\u5B9A\u4F7F\u7528\u7279\u5B9A\u7DE8\u78BC\u7684\u5BE6\u9AD4\uFF0C\u5728\u8A72\u7DE8\u78BC\u4E2D\u4E0D\u53EF\u5305\u542B\u7121\u6548\u7684\u5E8F\u5217\u3002
+         
+ # DTD Messages
+ # 2.2 Characters
+-        InvalidCharInEntityValue = \u5728\u6587\u5B57\u500B\u9AD4\u503C\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
++        InvalidCharInEntityValue = \u5728\u6587\u5B57\u5BE6\u9AD4\u503C\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInExternalSubset = \u5728 DTD \u5916\u90E8\u5B50\u96C6\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInIgnoreSect = \u5728\u6392\u9664\u7684\u689D\u4EF6\u6027\u6BB5\u843D\u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+         InvalidCharInPublicID = \u5728\u516C\u7528 ID \u4E2D\u627E\u5230\u7121\u6548\u7684 XML \u5B57\u5143 (Unicode: 0x{0})\u3002
+@@ -169,150 +167,150 @@
+         PubidCharIllegal = \u516C\u7528 ID \u4E2D\u4E0D\u5141\u8A31\u5B57\u5143 (Unicode: 0x{0})\u3002
+         SpaceRequiredBetweenPublicAndSystem = publicId \u8207 systemId \u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+ # 2.8 Prolog and Document Type Declaration
+-        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u5728\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u4E2D \"<!DOCTYPE\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u5728\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u4E2D\uFF0C\u6839\u5143\u7D20\u985E\u578B\u5FC5\u9808\u51FA\u73FE\u5728 \"<!DOCTYPE\" \u4E4B\u5F8C\u3002
+-        DoctypedeclUnterminated = \u6839\u5143\u7D20\u985E\u578B \"{0}\" \u7684\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
+-        PEReferenceWithinMarkup = DTD \u5167\u90E8\u5B57\u96C6\u7684\u6A19\u8A18\u5167\u4E0D\u80FD\u51FA\u73FE\u53C3\u6578\u500B\u9AD4\u53C3\u7167 \"%{0};\"\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u5728\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u4E2D "<!DOCTYPE" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u5728\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u4E2D\uFF0C\u6839\u5143\u7D20\u985E\u578B\u5FC5\u9808\u51FA\u73FE\u5728 "<!DOCTYPE" \u4E4B\u5F8C\u3002
++        DoctypedeclUnterminated = \u6839\u5143\u7D20\u985E\u578B "{0}" \u7684\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
++        PEReferenceWithinMarkup = DTD \u5167\u90E8\u5B57\u96C6\u7684\u6A19\u8A18\u5167\u4E0D\u80FD\u51FA\u73FE\u53C3\u6578\u5BE6\u9AD4\u53C3\u7167 "%{0};"\u3002
+         MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \u6587\u4EF6\u985E\u578B\u5BA3\u544A\u5305\u542B\u6216\u6307\u5411\u7684\u6A19\u8A18\u5BA3\u544A\u5FC5\u9808\u683C\u5F0F\u6B63\u78BA\u3002
+ # 2.10 White Space Handling
+-        MSG_XML_SPACE_DECLARATION_ILLEGAL = \"xml:space\" \u7684\u5C6C\u6027\u5BA3\u544A\u5FC5\u9808\u6307\u5B9A\u70BA\u5217\u8209\u985E\u578B\uFF0C\u5176\u53EF\u80FD\u7684\u503C\u70BA \"default\" \u8207 \"preserve\"\u3002
++        MSG_XML_SPACE_DECLARATION_ILLEGAL = "xml:space" \u7684\u5C6C\u6027\u5BA3\u544A\u5FC5\u9808\u6307\u5B9A\u70BA\u5217\u8209\u985E\u578B\uFF0C\u5176\u53EF\u80FD\u7684\u503C\u70BA "default" \u8207 "preserve"\u3002
+ # 3.2 Element Type Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u5728\u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D \"<!ELEMENT\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ELEMENTDECL = \u5728\u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D "<!ELEMENT" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ELEMENTDECL = \u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D\u9700\u8981\u5143\u7D20\u985E\u578B\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u5728\u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D\u5143\u7D20\u985E\u578B \"{0}\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u5728\u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D\u5143\u7D20\u985E\u578B \"{0}\" \u4E4B\u5F8C\u9700\u8981\u9650\u5236\u689D\u4EF6\u3002
+-        ElementDeclUnterminated = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
++        MSG_SPACE_REQUIRED_BEFORE_CONTENTSPEC_IN_ELEMENTDECL = \u5728\u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D\u5143\u7D20\u985E\u578B "{0}" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        MSG_CONTENTSPEC_REQUIRED_IN_ELEMENTDECL = \u5728\u5143\u7D20\u985E\u578B\u5BA3\u544A\u4E2D\u5143\u7D20\u985E\u578B "{0}" \u4E4B\u5F8C\u9700\u8981\u9650\u5236\u689D\u4EF6\u3002
++        ElementDeclUnterminated = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
+ # 3.2.1 Element Content
+-        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B ''('' \u5B57\u5143\u6216\u5143\u7D20\u985E\u578B\u3002
+-        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B '')''\u3002
++        MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B ''('' \u5B57\u5143\u6216\u5143\u7D20\u985E\u578B\u3002
++        MSG_CLOSE_PAREN_REQUIRED_IN_CHILDREN = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B '')''\u3002
+ # 3.2.2 Mixed Content
+-        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B\u5143\u7D20\u985E\u578B\u3002
+-        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B '')''\u3002
+-        MixedContentUnterminated = \u5B50\u9805\u5143\u7D20\u7684\u985E\u578B\u53D7\u5230\u9650\u5236\u6642\uFF0C\u6DF7\u5408\u5167\u5BB9\u6A21\u578B \"{0}\" \u7684\u7D50\u5C3E\u5FC5\u9808\u70BA \")*\"\u3002
++        MSG_ELEMENT_TYPE_REQUIRED_IN_MIXED_CONTENT = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B\u5143\u7D20\u985E\u578B\u3002
++        MSG_CLOSE_PAREN_REQUIRED_IN_MIXED = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u4E00\u500B '')''\u3002
++        MixedContentUnterminated = \u5B50\u9805\u5143\u7D20\u7684\u985E\u578B\u53D7\u5230\u9650\u5236\u6642\uFF0C\u6DF7\u5408\u5167\u5BB9\u6A21\u578B "{0}" \u7684\u7D50\u5C3E\u5FC5\u9808\u70BA ")*"\u3002
+ # 3.3 Attribute-List Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u5728 attribute-list \u5BA3\u544A\u4E2D \"<!ATTLIST\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ELEMENT_TYPE_IN_ATTLISTDECL = \u5728 attribute-list \u5BA3\u544A\u4E2D "<!ATTLIST" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+         MSG_ELEMENT_TYPE_REQUIRED_IN_ATTLISTDECL = attribute-list \u5BA3\u544A\u4E2D\u9700\u8981\u5143\u7D20\u985E\u578B\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u5143\u7D20 \"{0}\" \u7684 attribute-list \u5BA3\u544A\u4E2D\uFF0C\u5C6C\u6027\u540D\u7A31\u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
+-        AttNameRequiredInAttDef = \u5143\u7D20 \"{0}\" \u7684 attribute-list \u5BA3\u544A\u5FC5\u9808\u6307\u5B9A\u5C6C\u6027\u540D\u7A31\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u5143\u7D20 \"{0}\" \u5C6C\u6027 \"{1}\" \u7684\u5BA3\u544A\u4E2D\uFF0C\u5C6C\u6027\u985E\u578B\u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
+-        AttTypeRequiredInAttDef = \u5143\u7D20 \"{0}\" \u5C6C\u6027 \"{1}\" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u5C6C\u6027\u985E\u578B\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u5143\u7D20 \"{0}\" \u5C6C\u6027 \"{1}\" \u7684\u5BA3\u544A\u4E2D\uFF0C\u5C6C\u6027\u9810\u8A2D\u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \u70BA\u6307\u5B9A\u5143\u7D20 \"{0}\" \u7684\u76F8\u540C\u5C6C\u6027 \"{1}\" \u63D0\u4F9B\u4E86\u8D85\u904E\u4E00\u500B\u4EE5\u4E0A\u7684\u5C6C\u6027\u5B9A\u7FA9\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ATTRIBUTE_NAME_IN_ATTDEF = \u5143\u7D20 "{0}" \u7684 attribute-list \u5BA3\u544A\u4E2D\uFF0C\u5C6C\u6027\u540D\u7A31\u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
++        AttNameRequiredInAttDef = \u5143\u7D20 "{0}" \u7684 attribute-list \u5BA3\u544A\u5FC5\u9808\u6307\u5B9A\u5C6C\u6027\u540D\u7A31\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ATTTYPE_IN_ATTDEF = \u5143\u7D20 "{0}" \u5C6C\u6027 "{1}" \u7684\u5BA3\u544A\u4E2D\uFF0C\u5C6C\u6027\u985E\u578B\u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
++        AttTypeRequiredInAttDef = \u5143\u7D20 "{0}" \u5C6C\u6027 "{1}" \u7684\u5BA3\u544A\u4E2D\u9700\u8981\u5C6C\u6027\u985E\u578B\u3002
++        MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF = \u5143\u7D20 "{0}" \u5C6C\u6027 "{1}" \u7684\u5BA3\u544A\u4E2D\uFF0C\u5C6C\u6027\u9810\u8A2D\u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
++        MSG_DUPLICATE_ATTRIBUTE_DEFINITION = \u70BA\u6307\u5B9A\u5143\u7D20 "{0}" \u7684\u76F8\u540C\u5C6C\u6027 "{1}" \u63D0\u4F9B\u4E86\u8D85\u904E\u4E00\u500B\u4EE5\u4E0A\u7684\u5C6C\u6027\u5B9A\u7FA9\u3002
+ # 3.3.1 Attribute Types
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = \"{1}\" \u5C6C\u6027\u5BA3\u544A\u4E2D \"NOTATION\" \u4E4B\u5F8C\u5FC5\u9808\u6709\u7A7A\u683C\u3002
+-        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = \u5728 \"{1}\" \u5C6C\u6027\u5BA3\u544A\u4E2D\uFF0C''('' \u5B57\u5143\u5FC5\u9808\u7DCA\u63A5\u5728 \"NOTATION\" \u4E4B\u5F8C\u3002
+-        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = \"{1}\" \u5C6C\u6027\u5BA3\u544A\u7684\u8868\u793A\u6CD5\u985E\u578B\u6E05\u55AE\u4E2D\uFF0C\u9700\u8981\u8868\u793A\u6CD5\u540D\u7A31\u3002
+-        NotationTypeUnterminated = \u5728 \"{1}\" \u5C6C\u6027\u5BA3\u544A\u4E2D\uFF0C\u8868\u793A\u6CD5\u985E\u578B\u6E05\u55AE\u7684\u7D50\u5C3E\u5FC5\u9808\u70BA '')''\u3002
+-        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = \"{1}\" \u5C6C\u6027\u5BA3\u544A\u7684\u5217\u8209\u985E\u578B\u6E05\u55AE\u4E2D\uFF0C\u9700\u8981\u540D\u7A31\u8A18\u865F\u3002
+-        EnumerationUnterminated = \u5728 \"{1}\" \u5C6C\u6027\u5BA3\u544A\u4E2D\uFF0C\u5217\u8209\u985E\u578B\u6E05\u55AE\u7684\u7D50\u5C3E\u5FC5\u9808\u70BA '')''\u3002
+-        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \u5143\u7D20 \"{0}\" \u7684\u5C6C\u6027 \"{2}\" \u5BA3\u544A\u4E2D\uFF0C\u6307\u5B9A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u7684\u5217\u8209\u503C \"{1}\"\u3002\u55AE\u4E00 Enumeration \u5C6C\u6027\u5BA3\u544A\u4E2D\u7684 NMTOKENS \u5FC5\u9808\u5168\u90E8\u90FD\u4E0D\u76F8\u540C\u3002
+-        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \u5143\u7D20 \"{0}\" \u5C6C\u6027 \"{2}\" \u7684\u5BA3\u544A\u4E2D\uFF0C\u6307\u5B9A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u7684\u5217\u8209\u503C \"{1}\"\u3002\u55AE\u4E00 NotationType \u5C6C\u6027\u5BA3\u544A\u4E2D\u7684 NOTATION \u540D\u7A31\u5FC5\u9808\u5168\u90E8\u90FD\u4E0D\u76F8\u540C\u3002
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_IN_NOTATIONTYPE = "{1}" \u5C6C\u6027\u5BA3\u544A\u4E2D "NOTATION" \u4E4B\u5F8C\u5FC5\u9808\u6709\u7A7A\u683C\u3002
++        MSG_OPEN_PAREN_REQUIRED_IN_NOTATIONTYPE = \u5728 "{1}" \u5C6C\u6027\u5BA3\u544A\u4E2D\uFF0C''('' \u5B57\u5143\u5FC5\u9808\u7DCA\u63A5\u5728 "NOTATION" \u4E4B\u5F8C\u3002
++        MSG_NAME_REQUIRED_IN_NOTATIONTYPE = "{1}" \u5C6C\u6027\u5BA3\u544A\u7684\u8868\u793A\u6CD5\u985E\u578B\u6E05\u55AE\u4E2D\uFF0C\u9700\u8981\u8868\u793A\u6CD5\u540D\u7A31\u3002
++        NotationTypeUnterminated = \u5728 "{1}" \u5C6C\u6027\u5BA3\u544A\u4E2D\uFF0C\u8868\u793A\u6CD5\u985E\u578B\u6E05\u55AE\u7684\u7D50\u5C3E\u5FC5\u9808\u70BA '')''\u3002
++        MSG_NMTOKEN_REQUIRED_IN_ENUMERATION = "{1}" \u5C6C\u6027\u5BA3\u544A\u7684\u5217\u8209\u985E\u578B\u6E05\u55AE\u4E2D\uFF0C\u9700\u8981\u540D\u7A31\u8A18\u865F\u3002
++        EnumerationUnterminated = \u5728 "{1}" \u5C6C\u6027\u5BA3\u544A\u4E2D\uFF0C\u5217\u8209\u985E\u578B\u6E05\u55AE\u7684\u7D50\u5C3E\u5FC5\u9808\u70BA '')''\u3002
++        MSG_DISTINCT_TOKENS_IN_ENUMERATION = \u5143\u7D20 "{0}" \u7684\u5C6C\u6027 "{2}" \u5BA3\u544A\u4E2D\uFF0C\u6307\u5B9A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u7684\u5217\u8209\u503C "{1}"\u3002\u55AE\u4E00 Enumeration \u5C6C\u6027\u5BA3\u544A\u4E2D\u7684 NMTOKENS \u5FC5\u9808\u5168\u90E8\u90FD\u4E0D\u76F8\u540C\u3002
++        MSG_DISTINCT_NOTATION_IN_ENUMERATION = \u5143\u7D20 "{0}" \u5C6C\u6027 "{2}" \u7684\u5BA3\u544A\u4E2D\uFF0C\u6307\u5B9A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u7684\u5217\u8209\u503C "{1}"\u3002\u55AE\u4E00 NotationType \u5C6C\u6027\u5BA3\u544A\u4E2D\u7684 NOTATION \u540D\u7A31\u5FC5\u9808\u5168\u90E8\u90FD\u4E0D\u76F8\u540C\u3002
+ # 3.3.2 Attribute Defaults
+-        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = \"{1}\" \u5C6C\u6027\u5BA3\u544A\u4E2D \"FIXED\" \u4E4B\u5F8C\u5FC5\u9808\u6709\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_AFTER_FIXED_IN_DEFAULTDECL = "{1}" \u5C6C\u6027\u5BA3\u544A\u4E2D "FIXED" \u4E4B\u5F8C\u5FC5\u9808\u6709\u7A7A\u683C\u3002
+ # 3.4 Conditional Sections
+-        IncludeSectUnterminated = \u5305\u542B\u689D\u4EF6\u6027\u6BB5\u843D\u7D50\u5C3E\u5FC5\u9808\u662F \"]]>\"\u3002
+-        IgnoreSectUnterminated = \u6392\u9664\u689D\u4EF6\u6027\u6BB5\u843D\u7D50\u5C3E\u5FC5\u9808\u662F \"]]>\"\u3002
++        IncludeSectUnterminated = \u5305\u542B\u689D\u4EF6\u6027\u6BB5\u843D\u7D50\u5C3E\u5FC5\u9808\u662F "]]>"\u3002
++        IgnoreSectUnterminated = \u6392\u9664\u689D\u4EF6\u6027\u6BB5\u843D\u7D50\u5C3E\u5FC5\u9808\u662F "]]>"\u3002
+ # 4.1 Character and Entity References
+-        NameRequiredInPEReference = \u5728\u53C3\u6578\u500B\u9AD4\u53C3\u7167\u4E2D\uFF0C\u500B\u9AD4\u540D\u7A31\u5FC5\u9808\u7DCA\u63A5\u5728 '%' \u4E4B\u5F8C\u3002
+-        SemicolonRequiredInPEReference = \u53C3\u6578\u500B\u9AD4\u53C3\u7167 \"%{0};\" \u7684\u7D50\u5C3E\u5FC5\u9808\u70BA '';'' \u5206\u754C\u5B57\u5143\u3002
++        NameRequiredInPEReference = \u5728\u53C3\u6578\u5BE6\u9AD4\u53C3\u7167\u4E2D\uFF0C\u5BE6\u9AD4\u540D\u7A31\u5FC5\u9808\u7DCA\u63A5\u5728 '%' \u4E4B\u5F8C\u3002
++        SemicolonRequiredInPEReference = \u53C3\u6578\u5BE6\u9AD4\u53C3\u7167 "%{0};" \u7684\u7D50\u5C3E\u5FC5\u9808\u70BA '';'' \u5206\u754C\u5B57\u5143\u3002
+ # 4.2 Entity Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u5728\u500B\u9AD4\u5BA3\u544A\u4E2D \"<!ENTITY\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u5728\u53C3\u6578\u500B\u9AD4\u5BA3\u544A\u4E2D\uFF0C\"<!ENTITY\" \u8207 '%' \u5B57\u5143\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = \u5728\u53C3\u6578\u500B\u9AD4\u5BA3\u544A\u4E2D\uFF0C'%' \u8207\u500B\u9AD4\u540D\u7A31\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = \u500B\u9AD4\u5BA3\u544A\u4E2D\u9700\u8981\u500B\u9AD4\u7684\u540D\u7A31\u3002
+-        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u5728\u500B\u9AD4\u5BA3\u544A\u4E2D\uFF0C\u500B\u9AD4\u540D\u7A31 \"{0}\" \u8207\u5B9A\u7FA9\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u5728\u500B\u9AD4 \"{0}\" \u7684\u5BA3\u544A\u4E2D\uFF0C\"NDATA\" \u8207\u8868\u793A\u6CD5\u540D\u7A31\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u5728\u500B\u9AD4 \"{0}\" \u7684\u5BA3\u544A\u4E2D\uFF0C\"NDATA\" \u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \u5728\u500B\u9AD4 \"{0}\" \u7684\u5BA3\u544A\u4E2D\uFF0C\"NDATA\" \u4E4B\u5F8C\u9700\u8981\u8868\u793A\u6CD5\u540D\u7A31\u3002
+-        EntityDeclUnterminated = \u500B\u9AD4 \"{0}\" \u7684\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
+-	MSG_DUPLICATE_ENTITY_DEFINITION = \u500B\u9AD4 \"{0}\" \u5BA3\u544A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u3002        
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL = \u5728\u5BE6\u9AD4\u5BA3\u544A\u4E2D "<!ENTITY" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_PERCENT_IN_PEDECL = \u5728\u53C3\u6578\u5BE6\u9AD4\u5BA3\u544A\u4E2D\uFF0C"<!ENTITY" \u8207 '%' \u5B57\u5143\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_PEDECL = \u5728\u53C3\u6578\u5BE6\u9AD4\u5BA3\u544A\u4E2D\uFF0C'%' \u8207\u5BE6\u9AD4\u540D\u7A31\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
++        MSG_ENTITY_NAME_REQUIRED_IN_ENTITYDECL = \u5BE6\u9AD4\u5BA3\u544A\u4E2D\u9700\u8981\u5BE6\u9AD4\u7684\u540D\u7A31\u3002
++        MSG_SPACE_REQUIRED_AFTER_ENTITY_NAME_IN_ENTITYDECL = \u5728\u5BE6\u9AD4\u5BA3\u544A\u4E2D\uFF0C\u5BE6\u9AD4\u540D\u7A31 "{0}" \u8207\u5B9A\u7FA9\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_UNPARSED_ENTITYDECL = \u5728\u5BE6\u9AD4 "{0}" \u7684\u5BA3\u544A\u4E2D\uFF0C"NDATA" \u8207\u8868\u793A\u6CD5\u540D\u7A31\u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NDATA_IN_UNPARSED_ENTITYDECL = \u5728\u5BE6\u9AD4 "{0}" \u7684\u5BA3\u544A\u4E2D\uFF0C"NDATA" \u4E4B\u524D\u9700\u8981\u7A7A\u683C\u3002
++        MSG_NOTATION_NAME_REQUIRED_FOR_UNPARSED_ENTITYDECL = \u5728\u5BE6\u9AD4 "{0}" \u7684\u5BA3\u544A\u4E2D\uFF0C"NDATA" \u4E4B\u5F8C\u9700\u8981\u8868\u793A\u6CD5\u540D\u7A31\u3002
++        EntityDeclUnterminated = \u5BE6\u9AD4 "{0}" \u7684\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
++	MSG_DUPLICATE_ENTITY_DEFINITION = \u5BE6\u9AD4 "{0}" \u5BA3\u544A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u3002        
+ # 4.2.2 External Entities
+-        ExternalIDRequired = \u5916\u90E8\u500B\u9AD4\u5BA3\u544A\u7684\u958B\u982D\u5FC5\u9808\u70BA \"SYSTEM\" \u6216 \"PUBLIC\"\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = \"PUBLIC\" \u8207\u516C\u7528 ID \u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
++        ExternalIDRequired = \u5916\u90E8\u5BE6\u9AD4\u5BA3\u544A\u7684\u958B\u982D\u5FC5\u9808\u70BA "SYSTEM" \u6216 "PUBLIC"\u3002
++        MSG_SPACE_REQUIRED_BEFORE_PUBIDLITERAL_IN_EXTERNALID = "PUBLIC" \u8207\u516C\u7528 ID \u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+         MSG_SPACE_REQUIRED_AFTER_PUBIDLITERAL_IN_EXTERNALID = \u516C\u7528 ID \u8207\u7CFB\u7D71 ID \u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = \"SYSTEM\" \u8207\u7CFB\u7D71 ID \u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
+-        MSG_URI_FRAGMENT_IN_SYSTEMID = \u7247\u6BB5 ID \u4E0D\u61C9\u6307\u5B9A\u70BA\u7CFB\u7D71 ID \"{0}\" \u7684\u4E00\u90E8\u5206\u3002
++        MSG_SPACE_REQUIRED_BEFORE_SYSTEMLITERAL_IN_EXTERNALID = "SYSTEM" \u8207\u7CFB\u7D71 ID \u4E4B\u9593\u9700\u8981\u7A7A\u683C\u3002
++        MSG_URI_FRAGMENT_IN_SYSTEMID = \u7247\u6BB5 ID \u4E0D\u61C9\u6307\u5B9A\u70BA\u7CFB\u7D71 ID "{0}" \u7684\u4E00\u90E8\u5206\u3002
+ # 4.7 Notation Declarations
+-        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D \"<!NOTATION\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        MSG_SPACE_REQUIRED_BEFORE_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D "<!NOTATION" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+         MSG_NOTATION_NAME_REQUIRED_IN_NOTATIONDECL = \u8868\u793A\u6CD5\u5BA3\u544A\u4E2D\u9700\u8981\u8868\u793A\u6CD5\u7684\u540D\u7A31\u3002
+-        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D\u8868\u793A\u6CD5\u540D\u7A31 \"{0}\" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
+-        ExternalIDorPublicIDRequired = \u8868\u793A\u6CD5 \"{0}\" \u7684\u5BA3\u544A\u5FC5\u9808\u5305\u542B\u7CFB\u7D71\u6216\u516C\u7528 ID\u3002
+-        NotationDeclUnterminated = \u8868\u793A\u6CD5 \"{0}\" \u7684\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
++        MSG_SPACE_REQUIRED_AFTER_NOTATION_NAME_IN_NOTATIONDECL = \u5728\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D\u8868\u793A\u6CD5\u540D\u7A31 "{0}" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
++        ExternalIDorPublicIDRequired = \u8868\u793A\u6CD5 "{0}" \u7684\u5BA3\u544A\u5FC5\u9808\u5305\u542B\u7CFB\u7D71\u6216\u516C\u7528 ID\u3002
++        NotationDeclUnterminated = \u8868\u793A\u6CD5 "{0}" \u7684\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
+         
+ # Validation messages
+-        DuplicateTypeInMixedContent = \u5143\u7D20\u5BA3\u544A \"{0}\" \u7684\u5167\u5BB9\u6A21\u578B\u4E2D\u5DF2\u7D93\u6307\u5B9A\u5143\u7D20\u985E\u578B \"{1}\"\u3002
+-        ENTITIESInvalid = \u985E\u578B ENTITIES \u7684\u5C6C\u6027\u503C \"{1}\" \u5FC5\u9808\u662F\u4E00\u6216\u591A\u500B\u672A\u5256\u6790\u500B\u9AD4\u7684\u540D\u7A31\u3002
+-        ENTITYInvalid = \u985E\u578B ENTITY \u7684\u5C6C\u6027\u503C \"{1}\" \u5FC5\u9808\u662F\u4E00\u500B\u672A\u5256\u6790\u500B\u9AD4\u7684\u540D\u7A31\u3002
+-        IDDefaultTypeInvalid = ID \u5C6C\u6027 \"{0}\" \u5FC5\u9808\u5177\u6709 \"#IMPLIED\" \u6216 \"#REQUIRED\" \u7684\u5BA3\u544A\u9810\u8A2D\u3002
+-        IDInvalid = \u985E\u578B ID \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F\u540D\u7A31\u3002
+-        IDInvalidWithNamespaces = \u555F\u7528\u547D\u540D\u7A7A\u9593\u6642\uFF0C\u985E\u578B ID \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F NCName\u3002
+-        IDNotUnique = \u985E\u578B ID \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F\u6587\u4EF6\u5167\u7684\u552F\u4E00\u503C\u3002
+-        IDREFInvalid = \u985E\u578B IDREF \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F\u540D\u7A31\u3002
+-        IDREFInvalidWithNamespaces = \u555F\u7528\u547D\u540D\u7A7A\u9593\u6642\uFF0C\u985E\u578B IDREF \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F NCName\u3002
+-        IDREFSInvalid = \u985E\u578B IDREFS \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F\u4E00\u6216\u591A\u500B\u540D\u7A31\u3002
+-        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \u7576\u500B\u9AD4\u53C3\u7167\u7576\u4F5C\u5B8C\u6574\u5BA3\u544A\u6642\uFF0C\u53C3\u6578\u500B\u9AD4 \"{0}\" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6B63\u78BA\u5DE2\u72C0\u7D50\u69CB\u7684\u5BA3\u544A\u3002
+-        ImproperDeclarationNesting = \u53C3\u6578\u500B\u9AD4 \"{0}\" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6B63\u78BA\u5DE2\u72C0\u7D50\u69CB\u7684\u5BA3\u544A\u3002
+-        ImproperGroupNesting = \u53C3\u6578\u500B\u9AD4 \"{0}\" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6B63\u78BA\u5DE2\u72C0\u7D50\u69CB\u7684\u6210\u5C0D\u62EC\u865F\u3002
+-        INVALID_PE_IN_CONDITIONAL = \u53C3\u6578\u500B\u9AD4 \"{0}\" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6574\u500B\u689D\u4EF6\u6027\u6BB5\u843D\u6216\u50C5\u5305\u542B INCLUDE \u6216 IGNORE\u3002
+-        MSG_ATTRIBUTE_NOT_DECLARED = \u5143\u7D20\u985E\u578B \"{0}\" \u5FC5\u9808\u5BA3\u544A\u5C6C\u6027 \"{1}\"\u3002
+-        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \u5177\u6709\u503C \"{1}\" \u7684\u5C6C\u6027 \"{0}\" \u5FC5\u9808\u5177\u6709\u4F86\u81EA\u6E05\u55AE \"{2}\" \u7684\u503C\u3002
+-        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\uFF0C\u5C6C\u6027 \"{0}\" \u7684\u503C \"{1}\" \u4E0D\u53EF\u900F\u904E\u6B63\u898F\u5316\u9032\u884C\u8B8A\u66F4 (\u6210\u70BA \"{2}\")\u3002
+-        MSG_CONTENT_INCOMPLETE = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5167\u5BB9\u4E0D\u5B8C\u6574\uFF0C\u5B83\u5FC5\u9808\u914D\u5C0D \"{1}\"\u3002
+-        MSG_CONTENT_INVALID = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5167\u5BB9\u5FC5\u9808\u914D\u5C0D \"{1}\"\u3002
+-        MSG_CONTENT_INVALID_SPECIFIED = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5167\u5BB9\u5FC5\u9808\u914D\u5C0D \"{1}\"\u3002\u4E0D\u5141\u8A31\u985E\u578B \"{2}\" \u7684\u5B50\u9805\u3002
+-        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \u5143\u7D20\u985E\u578B \"{0}\" \u7684\u5C6C\u6027 \"{1}\" \u5177\u6709\u9810\u8A2D\u503C\uFF0C\u4E14\u5FC5\u9808\u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\u6307\u5B9A\u3002
+-        MSG_DUPLICATE_ATTDEF = \u5143\u7D20\u985E\u578B \"{0}\" \u5DF2\u7D93\u5BA3\u544A\u5C6C\u6027 \"{1}\"\u3002
+-        MSG_ELEMENT_ALREADY_DECLARED = \u5143\u7D20\u985E\u578B \"{0}\" \u4E0D\u53EF\u5BA3\u544A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u3002
+-        MSG_ELEMENT_NOT_DECLARED = \u5FC5\u9808\u5BA3\u544A\u5143\u7D20\u985E\u578B \"{0}\"\u3002
++        DuplicateTypeInMixedContent = \u5143\u7D20\u5BA3\u544A "{0}" \u7684\u5167\u5BB9\u6A21\u578B\u4E2D\u5DF2\u7D93\u6307\u5B9A\u5143\u7D20\u985E\u578B "{1}"\u3002
++        ENTITIESInvalid = \u985E\u578B ENTITIES \u7684\u5C6C\u6027\u503C "{1}" \u5FC5\u9808\u662F\u4E00\u6216\u591A\u500B\u672A\u5256\u6790\u5BE6\u9AD4\u7684\u540D\u7A31\u3002
++        ENTITYInvalid = \u985E\u578B ENTITY \u7684\u5C6C\u6027\u503C "{1}" \u5FC5\u9808\u662F\u4E00\u500B\u672A\u5256\u6790\u5BE6\u9AD4\u7684\u540D\u7A31\u3002
++        IDDefaultTypeInvalid = ID \u5C6C\u6027 "{0}" \u5FC5\u9808\u5177\u6709 "#IMPLIED" \u6216 "#REQUIRED" \u7684\u5BA3\u544A\u9810\u8A2D\u3002
++        IDInvalid = \u985E\u578B ID \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F\u540D\u7A31\u3002
++        IDInvalidWithNamespaces = \u555F\u7528\u547D\u540D\u7A7A\u9593\u6642\uFF0C\u985E\u578B ID \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F NCName\u3002
++        IDNotUnique = \u985E\u578B ID \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F\u6587\u4EF6\u5167\u7684\u552F\u4E00\u503C\u3002
++        IDREFInvalid = \u985E\u578B IDREF \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F\u540D\u7A31\u3002
++        IDREFInvalidWithNamespaces = \u555F\u7528\u547D\u540D\u7A7A\u9593\u6642\uFF0C\u985E\u578B IDREF \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F NCName\u3002
++        IDREFSInvalid = \u985E\u578B IDREFS \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F\u4E00\u6216\u591A\u500B\u540D\u7A31\u3002
++        ILL_FORMED_PARAMETER_ENTITY_WHEN_USED_IN_DECL = \u7576\u5BE6\u9AD4\u53C3\u7167\u7576\u4F5C\u5B8C\u6574\u5BA3\u544A\u6642\uFF0C\u53C3\u6578\u5BE6\u9AD4 "{0}" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6B63\u78BA\u5DE2\u72C0\u7D50\u69CB\u7684\u5BA3\u544A\u3002
++        ImproperDeclarationNesting = \u53C3\u6578\u5BE6\u9AD4 "{0}" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6B63\u78BA\u5DE2\u72C0\u7D50\u69CB\u7684\u5BA3\u544A\u3002
++        ImproperGroupNesting = \u53C3\u6578\u5BE6\u9AD4 "{0}" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6B63\u78BA\u5DE2\u72C0\u7D50\u69CB\u7684\u6210\u5C0D\u62EC\u865F\u3002
++        INVALID_PE_IN_CONDITIONAL = \u53C3\u6578\u5BE6\u9AD4 "{0}" \u7684\u53D6\u4EE3\u6587\u5B57\u5FC5\u9808\u5305\u542B\u6574\u500B\u689D\u4EF6\u6027\u6BB5\u843D\u6216\u50C5\u5305\u542B INCLUDE \u6216 IGNORE\u3002
++        MSG_ATTRIBUTE_NOT_DECLARED = \u5143\u7D20\u985E\u578B "{0}" \u5FC5\u9808\u5BA3\u544A\u5C6C\u6027 "{1}"\u3002
++        MSG_ATTRIBUTE_VALUE_NOT_IN_LIST = \u5177\u6709\u503C "{1}" \u7684\u5C6C\u6027 "{0}" \u5FC5\u9808\u5177\u6709\u4F86\u81EA\u6E05\u55AE "{2}" \u7684\u503C\u3002
++        MSG_ATTVALUE_CHANGED_DURING_NORMALIZATION_WHEN_STANDALONE = \u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\uFF0C\u5C6C\u6027 "{0}" \u7684\u503C "{1}" \u4E0D\u53EF\u900F\u904E\u6B63\u898F\u5316\u9032\u884C\u8B8A\u66F4 (\u6210\u70BA "{2}")\u3002
++        MSG_CONTENT_INCOMPLETE = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5167\u5BB9\u4E0D\u5B8C\u6574\uFF0C\u5B83\u5FC5\u9808\u914D\u5C0D "{1}"\u3002
++        MSG_CONTENT_INVALID = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5167\u5BB9\u5FC5\u9808\u914D\u5C0D "{1}"\u3002
++        MSG_CONTENT_INVALID_SPECIFIED = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5167\u5BB9\u5FC5\u9808\u914D\u5C0D "{1}"\u3002\u4E0D\u5141\u8A31\u985E\u578B "{2}" \u7684\u5B50\u9805\u3002
++        MSG_DEFAULTED_ATTRIBUTE_NOT_SPECIFIED = \u5143\u7D20\u985E\u578B "{0}" \u7684\u5C6C\u6027 "{1}" \u5177\u6709\u9810\u8A2D\u503C\uFF0C\u4E14\u5FC5\u9808\u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\u6307\u5B9A\u3002
++        MSG_DUPLICATE_ATTDEF = \u5143\u7D20\u985E\u578B "{0}" \u5DF2\u7D93\u5BA3\u544A\u5C6C\u6027 "{1}"\u3002
++        MSG_ELEMENT_ALREADY_DECLARED = \u5143\u7D20\u985E\u578B "{0}" \u4E0D\u53EF\u5BA3\u544A\u8D85\u904E\u4E00\u6B21\u4EE5\u4E0A\u3002
++        MSG_ELEMENT_NOT_DECLARED = \u5FC5\u9808\u5BA3\u544A\u5143\u7D20\u985E\u578B "{0}"\u3002
+         MSG_GRAMMAR_NOT_FOUND = \u6587\u4EF6\u7121\u6548: \u627E\u4E0D\u5230\u6587\u6CD5\u3002
+-        MSG_ELEMENT_WITH_ID_REQUIRED = ID \u70BA \"{0}\" \u7684\u5143\u7D20\u5FC5\u9808\u51FA\u73FE\u5728\u6587\u4EF6\u4E2D\u3002
+-        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \u7368\u7ACB\u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u53C3\u7167\u5916\u90E8\u500B\u9AD4 \"{0}\"\u3002
+-        MSG_FIXED_ATTVALUE_INVALID = \u5177\u6709\u503C \"{2}\" \u7684\u5C6C\u6027 \"{1}\" \u5FC5\u9808\u5177\u6709 \"{3}\" \u7684\u503C\u3002
+-        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \u5143\u7D20\u985E\u578B \"{0}\" \u5DF2\u7D93\u5177\u6709\u985E\u578B ID \u7684\u5C6C\u6027 \"{1}\"\uFF0C\u4E0D\u5141\u8A31\u8A72\u985E\u578B ID \u7684\u7B2C\u4E8C\u500B\u5C6C\u6027 \"{2}\"\u3002
+-        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \u5143\u7D20\u985E\u578B \"{0}\" \u5DF2\u7D93\u5177\u6709\u985E\u578B NOTATION \u7684\u5C6C\u6027 \"{1}\"\uFF0C\u4E0D\u5141\u8A31\u8A72\u985E\u578B NOTATION \u7684\u7B2C\u4E8C\u500B\u5C6C\u6027 \"{2}\"\u3002
+-        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \u82E5\u8981\u5728\u5C6C\u6027 \"{0}\" \u7684\u8868\u793A\u6CD5\u985E\u578B\u6E05\u55AE\u4E2D\u53C3\u7167\u8868\u793A\u6CD5 \"{1}\"\uFF0C\u5FC5\u9808\u4E88\u4EE5\u5BA3\u544A\u3002
+-        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = \u82E5\u8981\u5728 \"{0}\" \u7684\u672A\u5256\u6790\u500B\u9AD4\u5BA3\u544A\u4E2D\u53C3\u7167\u8868\u793A\u6CD5 \"{1}\"\uFF0C\u5FC5\u9808\u4E88\u4EE5\u5BA3\u544A\u3002
+-        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\uFF0C\u4E0D\u5141\u8A31\u53C3\u7167\u5916\u90E8\u5256\u6790\u500B\u9AD4\u4E2D\u5BA3\u544A\u7684\u500B\u9AD4 \"{0}\"\u3002
+-        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \u5143\u7D20\u985E\u578B \"{0}\" \u9700\u8981\u5C6C\u6027 \"{1}\" \u4E14\u5FC5\u9808\u4E88\u4EE5\u6307\u5B9A\u3002
+-        MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = \u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\uFF0C\u5177\u6709\u5143\u7D20\u5167\u5BB9\u7684\u5916\u90E8\u5256\u6790\u500B\u9AD4\u4E2D\u5BA3\u544A\u7684\u5143\u7D20\u4E4B\u9593\uFF0C\u4E0D\u53EF\u6709\u7A7A\u683C\u3002
+-        NMTOKENInvalid = \u985E\u578B NMTOKEN \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F\u540D\u7A31\u8A18\u865F\u3002
+-        NMTOKENSInvalid = \u985E\u578B NMTOKENS \u7684\u5C6C\u6027\u503C \"{0}\" \u5FC5\u9808\u662F\u4E00\u6216\u591A\u500B\u540D\u7A31\u8A18\u865F\u3002
+-        NoNotationOnEmptyElement = \u5BA3\u544A EMPTY \u7684\u5143\u7D20\u985E\u578B \"{0}\" \u4E0D\u53EF\u5BA3\u544A\u985E\u578B NOTATION \u7684\u5C6C\u6027 \"{1}\"\u3002
+-        RootElementTypeMustMatchDoctypedecl = \u6587\u4EF6\u6839\u5143\u7D20 \"{1}\" \u5FC5\u9808\u914D\u5C0D DOCTYPE \u6839 \"{0}\"\u3002
+-        UndeclaredElementInContentSpec = \u5143\u7D20 \"{0}\" \u7684\u5167\u5BB9\u6A21\u578B\u53C3\u7167\u672A\u5BA3\u544A\u7684\u5143\u7D20 \"{1}\"\u3002
+-        UniqueNotationName = \u8868\u793A\u6CD5 \"{0}\" \u7684\u5BA3\u544A\u4E26\u975E\u552F\u4E00\u3002\u6307\u5B9A\u7684 Name \u4E0D\u80FD\u5728\u4E00\u500B\u4EE5\u4E0A\u7684\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D\u5BA3\u544A\u3002
++        MSG_ELEMENT_WITH_ID_REQUIRED = ID \u70BA "{0}" \u7684\u5143\u7D20\u5FC5\u9808\u51FA\u73FE\u5728\u6587\u4EF6\u4E2D\u3002
++        MSG_EXTERNAL_ENTITY_NOT_PERMITTED = \u7368\u7ACB\u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u53C3\u7167\u5916\u90E8\u5BE6\u9AD4 "{0}"\u3002
++        MSG_FIXED_ATTVALUE_INVALID = \u5177\u6709\u503C "{2}" \u7684\u5C6C\u6027 "{1}" \u5FC5\u9808\u5177\u6709 "{3}" \u7684\u503C\u3002
++        MSG_MORE_THAN_ONE_ID_ATTRIBUTE = \u5143\u7D20\u985E\u578B "{0}" \u5DF2\u7D93\u5177\u6709\u985E\u578B ID \u7684\u5C6C\u6027 "{1}"\uFF0C\u4E0D\u5141\u8A31\u8A72\u985E\u578B ID \u7684\u7B2C\u4E8C\u500B\u5C6C\u6027 "{2}"\u3002
++        MSG_MORE_THAN_ONE_NOTATION_ATTRIBUTE = \u5143\u7D20\u985E\u578B "{0}" \u5DF2\u7D93\u5177\u6709\u985E\u578B NOTATION \u7684\u5C6C\u6027 "{1}"\uFF0C\u4E0D\u5141\u8A31\u8A72\u985E\u578B NOTATION \u7684\u7B2C\u4E8C\u500B\u5C6C\u6027 "{2}"\u3002
++        MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE = \u82E5\u8981\u5728\u5C6C\u6027 "{0}" \u7684\u8868\u793A\u6CD5\u985E\u578B\u6E05\u55AE\u4E2D\u53C3\u7167\u8868\u793A\u6CD5 "{1}"\uFF0C\u5FC5\u9808\u4E88\u4EE5\u5BA3\u544A\u3002
++        MSG_NOTATION_NOT_DECLARED_FOR_UNPARSED_ENTITYDECL = \u82E5\u8981\u5728 "{0}" \u7684\u672A\u5256\u6790\u5BE6\u9AD4\u5BA3\u544A\u4E2D\u53C3\u7167\u8868\u793A\u6CD5 "{1}"\uFF0C\u5FC5\u9808\u4E88\u4EE5\u5BA3\u544A\u3002
++        MSG_REFERENCE_TO_EXTERNALLY_DECLARED_ENTITY_WHEN_STANDALONE = \u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\uFF0C\u4E0D\u5141\u8A31\u53C3\u7167\u5916\u90E8\u5256\u6790\u5BE6\u9AD4\u4E2D\u5BA3\u544A\u7684\u5BE6\u9AD4 "{0}"\u3002
++        MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED = \u5143\u7D20\u985E\u578B "{0}" \u9700\u8981\u5C6C\u6027 "{1}" \u4E14\u5FC5\u9808\u4E88\u4EE5\u6307\u5B9A\u3002
++        MSG_WHITE_SPACE_IN_ELEMENT_CONTENT_WHEN_STANDALONE = \u5728\u7368\u7ACB\u6587\u4EF6\u4E2D\uFF0C\u5177\u6709\u5143\u7D20\u5167\u5BB9\u7684\u5916\u90E8\u5256\u6790\u5BE6\u9AD4\u4E2D\u5BA3\u544A\u7684\u5143\u7D20\u4E4B\u9593\uFF0C\u4E0D\u53EF\u6709\u7A7A\u683C\u3002
++        NMTOKENInvalid = \u985E\u578B NMTOKEN \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F\u540D\u7A31\u8A18\u865F\u3002
++        NMTOKENSInvalid = \u985E\u578B NMTOKENS \u7684\u5C6C\u6027\u503C "{0}" \u5FC5\u9808\u662F\u4E00\u6216\u591A\u500B\u540D\u7A31\u8A18\u865F\u3002
++        NoNotationOnEmptyElement = \u5BA3\u544A EMPTY \u7684\u5143\u7D20\u985E\u578B "{0}" \u4E0D\u53EF\u5BA3\u544A\u985E\u578B NOTATION \u7684\u5C6C\u6027 "{1}"\u3002
++        RootElementTypeMustMatchDoctypedecl = \u6587\u4EF6\u6839\u5143\u7D20 "{1}" \u5FC5\u9808\u914D\u5C0D DOCTYPE \u6839 "{0}"\u3002
++        UndeclaredElementInContentSpec = \u5143\u7D20 "{0}" \u7684\u5167\u5BB9\u6A21\u578B\u53C3\u7167\u672A\u5BA3\u544A\u7684\u5143\u7D20 "{1}"\u3002
++        UniqueNotationName = \u8868\u793A\u6CD5 "{0}" \u7684\u5BA3\u544A\u4E26\u975E\u552F\u4E00\u3002\u6307\u5B9A\u7684 Name \u4E0D\u80FD\u5728\u4E00\u500B\u4EE5\u4E0A\u7684\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D\u5BA3\u544A\u3002
+         ENTITYFailedInitializeGrammar =  ENTITYDatatype \u9A57\u8B49\u7A0B\u5F0F: \u5931\u6557\u3002\u9700\u8981\u4F7F\u7528\u6709\u6548\u7684\u6587\u6CD5\u53C3\u7167\u4F86\u547C\u53EB\u8D77\u59CB\u65B9\u6CD5\u3002 \t
+-        ENTITYNotUnparsed = ENTITY \"{0}\" \u4E26\u975E\u672A\u7D93\u5256\u6790\u3002
+-        ENTITYNotValid = ENTITY \"{0}\" \u7121\u6548\u3002
++        ENTITYNotUnparsed = ENTITY "{0}" \u4E26\u975E\u672A\u7D93\u5256\u6790\u3002
++        ENTITYNotValid = ENTITY "{0}" \u7121\u6548\u3002
+         EmptyList = \u985E\u578B ENTITIES\u3001IDREFS \u8207 NMTOKENS \u7684\u503C\u4E0D\u53EF\u70BA\u7A7A\u767D\u6E05\u55AE\u3002
+ 
+ # Entity related messages
+ # 3.1 Start-Tags, End-Tags, and Empty-Element Tags
+-        ReferenceToExternalEntity = \u5C6C\u6027\u503C\u4E0D\u5141\u8A31\u53C3\u7167\u5916\u90E8\u500B\u9AD4 \"&{0};\"\u3002
+-        AccessExternalDTD = External DTD: Failed to read external DTD ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
+-        AccessExternalEntity = External Entity: Failed to read external document ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalDTD property.
++        ReferenceToExternalEntity = \u5C6C\u6027\u503C\u4E0D\u5141\u8A31\u53C3\u7167\u5916\u90E8\u5BE6\u9AD4 "&{0};"\u3002
++        AccessExternalDTD = \u5916\u90E8 DTD: \u7121\u6CD5\u8B80\u53D6\u5916\u90E8 DTD ''{0}''\uFF0C\u56E0\u70BA accessExternalDTD \u5C6C\u6027\u8A2D\u5B9A\u7684\u9650\u5236\uFF0C\u6240\u4EE5\u4E0D\u5141\u8A31 ''{1}'' \u5B58\u53D6\u3002
++        AccessExternalEntity = \u5916\u90E8\u5BE6\u9AD4: \u7121\u6CD5\u8B80\u53D6\u5916\u90E8\u6587\u4EF6 ''{0}''\uFF0C\u56E0\u70BA accessExternalDTD \u5C6C\u6027\u8A2D\u5B9A\u7684\u9650\u5236\uFF0C\u6240\u4EE5\u4E0D\u5141\u8A31 ''{1}'' \u5B58\u53D6\u3002
+ 
+ # 4.1 Character and Entity References
+-        EntityNotDeclared = \u53C3\u7167\u4E86\u500B\u9AD4 \"{0}\"\uFF0C\u4F46\u662F\u672A\u5BA3\u544A\u3002
+-        ReferenceToUnparsedEntity = \u4E0D\u5141\u8A31\u672A\u5256\u6790\u7684\u500B\u9AD4\u53C3\u7167 \"&{0};\"\u3002
+-        RecursiveReference = \u905E\u8FF4\u500B\u9AD4\u53C3\u7167 \"{0}\"\u3002(\u53C3\u7167\u8DEF\u5F91: {1})\uFF0C
+-        RecursiveGeneralReference = \u905E\u8FF4\u4E00\u822C\u500B\u9AD4\u53C3\u7167 \"&{0};\"\u3002(\u53C3\u7167\u8DEF\u5F91: {1})\uFF0C
+-        RecursivePEReference = \u905E\u8FF4\u53C3\u6578\u500B\u9AD4\u53C3\u7167 \"%{0};\"\u3002(\u53C3\u7167\u8DEF\u5F91: {1})\uFF0C
++        EntityNotDeclared = \u53C3\u7167\u4E86\u5BE6\u9AD4 "{0}"\uFF0C\u4F46\u662F\u672A\u5BA3\u544A\u3002
++        ReferenceToUnparsedEntity = \u4E0D\u5141\u8A31\u672A\u5256\u6790\u7684\u5BE6\u9AD4\u53C3\u7167 "&{0};"\u3002
++        RecursiveReference = \u905E\u8FF4\u5BE6\u9AD4\u53C3\u7167 "{0}"\u3002(\u53C3\u7167\u8DEF\u5F91: {1})\uFF0C
++        RecursiveGeneralReference = \u905E\u8FF4\u4E00\u822C\u5BE6\u9AD4\u53C3\u7167 "&{0};"\u3002(\u53C3\u7167\u8DEF\u5F91: {1})\uFF0C
++        RecursivePEReference = \u905E\u8FF4\u53C3\u6578\u5BE6\u9AD4\u53C3\u7167 "%{0};"\u3002(\u53C3\u7167\u8DEF\u5F91: {1})\uFF0C
+ # 4.3.3 Character Encoding in Entities
+-        EncodingNotSupported = \u4E0D\u652F\u63F4\u7DE8\u78BC \"{0}\"\u3002
+-        EncodingRequired = \u672A\u4F7F\u7528 UTF-8 \u6216 UTF-16 \u7DE8\u78BC\u7684\u5256\u6790\u500B\u9AD4\uFF0C\u5FC5\u9808\u5305\u542B\u7DE8\u78BC\u5BA3\u544A\u3002
++        EncodingNotSupported = \u4E0D\u652F\u63F4\u7DE8\u78BC "{0}"\u3002
++        EncodingRequired = \u672A\u4F7F\u7528 UTF-8 \u6216 UTF-16 \u7DE8\u78BC\u7684\u5256\u6790\u5BE6\u9AD4\uFF0C\u5FC5\u9808\u5305\u542B\u7DE8\u78BC\u5BA3\u544A\u3002
+         
+ # Namespaces support
+ # 4. Using Qualified Names
+         IllegalQName = \u5143\u7D20\u6216\u5C6C\u6027\u4E0D\u7B26\u5408 QName \u7522\u751F: QName::=(NCName':')?NCName\u3002 
+-        ElementXMLNSPrefix = \u5143\u7D20 \"{0}\" \u4E0D\u80FD\u4F7F\u7528 \"xmlns\" \u4F5C\u70BA\u524D\u7F6E\u78BC\u3002
+-        ElementPrefixUnbound = \u5143\u7D20 \"{1}\" \u7684\u524D\u7F6E\u78BC \"{0}\" \u672A\u9023\u7D50\u3002
+-        AttributePrefixUnbound = \u95DC\u806F\u5143\u7D20\u985E\u578B \"{0}\" \u4E4B\u5C6C\u6027 \"{1}\" \u7684\u524D\u7F6E\u78BC \"{2}\" \u672A\u9023\u7D50\u3002
+-        EmptyPrefixedAttName = \u5C6C\u6027 \"{0}\" \u7684\u503C\u7121\u6548\u3002\u524D\u7F6E\u7684\u547D\u540D\u7A7A\u9593\u9023\u7D50\u4E0D\u53EF\u70BA\u7A7A\u767D\u3002
+-        PrefixDeclared = \u672A\u5BA3\u544A\u547D\u540D\u7A7A\u9593\u524D\u7F6E\u78BC \"{0}\"\u3002
++        ElementXMLNSPrefix = \u5143\u7D20 "{0}" \u4E0D\u80FD\u4F7F\u7528 "xmlns" \u4F5C\u70BA\u524D\u7F6E\u78BC\u3002
++        ElementPrefixUnbound = \u5143\u7D20 "{1}" \u7684\u524D\u7F6E\u78BC "{0}" \u672A\u9023\u7D50\u3002
++        AttributePrefixUnbound = \u95DC\u806F\u5143\u7D20\u985E\u578B "{0}" \u4E4B\u5C6C\u6027 "{1}" \u7684\u524D\u7F6E\u78BC "{2}" \u672A\u9023\u7D50\u3002
++        EmptyPrefixedAttName = \u5C6C\u6027 "{0}" \u7684\u503C\u7121\u6548\u3002\u524D\u7F6E\u7684\u547D\u540D\u7A7A\u9593\u9023\u7D50\u4E0D\u53EF\u70BA\u7A7A\u767D\u3002
++        PrefixDeclared = \u672A\u5BA3\u544A\u547D\u540D\u7A7A\u9593\u524D\u7F6E\u78BC "{0}"\u3002
+         CantBindXMLNS = \u524D\u7F6E\u78BC "xmlns" \u7121\u6CD5\u660E\u78BA\u9023\u7D50\u4EFB\u4F55\u547D\u540D\u7A7A\u9593; "xmlns" \u7684\u547D\u540D\u7A7A\u9593\u4E5F\u7121\u6CD5\u660E\u78BA\u9023\u7D50\u4EFB\u4F55\u524D\u7F6E\u78BC\u3002
+         CantBindXML = \u524D\u7F6E\u78BC "xml" \u7121\u6CD5\u9023\u7D50\u4E00\u822C\u547D\u540D\u7A7A\u9593\u4E4B\u5916\u7684\u4EFB\u4F55\u547D\u540D\u7A7A\u9593; "xml" \u7684\u547D\u540D\u7A7A\u9593\u4E5F\u7121\u6CD5\u9023\u7D50 "xml" \u4E4B\u5916\u7684\u4EFB\u4F55\u547D\u540D\u7A7A\u9593\u3002
+-        MSG_ATT_DEFAULT_INVALID = \u7531\u65BC\u6B64\u5C6C\u6027\u985E\u578B\u7684\u8A9E\u5F59\u9650\u5236\u689D\u4EF6\uFF0C\u5C6C\u6027 \"{0}\" \u7684 defaultValue \"{1}\" \u7121\u6548\u3002
++        MSG_ATT_DEFAULT_INVALID = \u7531\u65BC\u6B64\u5C6C\u6027\u985E\u578B\u7684\u8A9E\u5F59\u9650\u5236\u689D\u4EF6\uFF0C\u5C6C\u6027 "{0}" \u7684 defaultValue "{1}" \u7121\u6548\u3002
+ 
+ # REVISIT: These need messages
+         MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID=MSG_SPACE_REQUIRED_AFTER_SYSTEMLITERAL_IN_EXTERNALID
+@@ -320,8 +318,10 @@
+         InvalidCharInLiteral=InvalidCharInLiteral
+ 
+ 
+-#Application can set the limit of number of entities that should be expanded by the parser.
+-EntityExpansionLimitExceeded=\u5256\u6790\u5668\u5728\u6B64\u6587\u4EF6\u4E2D\u906D\u9047 \"{0}\" \u500B\u4EE5\u4E0A\u7684\u500B\u9AD4\u64F4\u5145; \u6B64\u70BA\u61C9\u7528\u7A0B\u5F0F\u6240\u898F\u5B9A\u7684\u9650\u5236\u3002
++# Implementation limits
++        EntityExpansionLimitExceeded=JAXP00010001: \u5256\u6790\u5668\u5728\u6B64\u6587\u4EF6\u4E2D\u9047\u5230 "{0}" \u500B\u4EE5\u4E0A\u7684\u5BE6\u9AD4\u64F4\u5145; \u9019\u662F JDK \u6240\u898F\u5B9A\u7684\u9650\u5236\u3002
++        ElementAttributeLimit=JAXP00010002: \u5143\u7D20 "{0}" \u5177\u6709\u8D85\u904E "{1}" \u500B\u4EE5\u4E0A\u7684\u5C6C\u6027\uFF0C"{1}" \u662F JDK \u6240\u898F\u5B9A\u7684\u9650\u5236\u3002
++        MaxEntitySizeLimit=JAXP00010003: \u5BE6\u9AD4 "{0}" \u7684\u9577\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u6240\u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
++        TotalEntitySizeLimit=JAXP00010004: \u5BE6\u9AD4\u7684\u7D2F\u7A4D\u5927\u5C0F "{0}" \u8D85\u904E "{2}" \u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002
++        MaxXMLNameLimit=JAXP00010005: \u540D\u7A31 "{0}" \u8D85\u904E "{2}" \u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002
+ 
+-# Application can set the limit of number of attributes of entity that should be expanded by the parser.
+-ElementAttributeLimit= \u5143\u7D20 \"{0}\" \u5177\u6709\u8D85\u904E \"{1}\" \u500B\u4EE5\u4E0A\u7684\u5C6C\u6027\uFF0C\"{1}\" \u70BA\u61C9\u7528\u7A0B\u5F0F\u6240\u898F\u5B9A\u7684\u9650\u5236\u3002
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/models/CMNodeFactory.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/models/CMNodeFactory.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/models/CMNodeFactory.java	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/models/CMNodeFactory.java	2013-12-14 21:11:06.000000000 -0500
+@@ -21,13 +21,13 @@
+ 
+ package com.sun.org.apache.xerces.internal.impl.xs.models;
+ 
++import com.sun.org.apache.xerces.internal.impl.Constants;
+ import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter;
+-import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager ;
+ import com.sun.org.apache.xerces.internal.impl.dtd.models.CMNode;
+-import com.sun.org.apache.xerces.internal.xni.parser.XMLConfigurationException;
+ import com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter;
+-import com.sun.org.apache.xerces.internal.impl.Constants;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
++import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;
++import com.sun.org.apache.xerces.internal.xni.parser.XMLConfigurationException;
+ 
+ /**
+  *
+@@ -68,7 +68,7 @@
+ 
+     // stores defaults for different security holes (maxOccurLimit in current context) if it has
+     // been set on the configuration.
+-    private SecurityManager fSecurityManager = null;
++    private XMLSecurityManager fSecurityManager = null;
+ 
+     /** default constructor */
+     public CMNodeFactory() {
+@@ -77,10 +77,10 @@
+     public void reset(XMLComponentManager componentManager){
+         fErrorReporter = (XMLErrorReporter)componentManager.getProperty(ERROR_REPORTER);
+         try {
+-            fSecurityManager = (SecurityManager)componentManager.getProperty(SECURITY_MANAGER);
++            fSecurityManager = (XMLSecurityManager)componentManager.getProperty(SECURITY_MANAGER);
+             //we are setting the limit of number of nodes to 3times the maxOccur value..
+             if(fSecurityManager != null){
+-                maxNodeLimit = fSecurityManager.getMaxOccurNodeLimit() * MULTIPLICITY ;
++                maxNodeLimit = fSecurityManager.getLimit(XMLSecurityManager.Limit.MAX_OCCUR_NODE_LIMIT) * MULTIPLICITY ;
+             }
+         }
+         catch (XMLConfigurationException e) {
+@@ -109,7 +109,8 @@
+     }
+ 
+     public void nodeCountCheck(){
+-        if( fSecurityManager != null && nodeCount++ > maxNodeLimit){
++        if( fSecurityManager != null && !fSecurityManager.isNoLimit(maxNodeLimit) &&
++                nodeCount++ > maxNodeLimit){
+             if(DEBUG){
+                 System.out.println("nodeCount = " + nodeCount ) ;
+                 System.out.println("nodeLimit = " + maxNodeLimit ) ;
+@@ -150,8 +151,9 @@
+ 
+             if (suffixLength == Constants.SECURITY_MANAGER_PROPERTY.length() &&
+                 propertyId.endsWith(Constants.SECURITY_MANAGER_PROPERTY)) {
+-                fSecurityManager = (SecurityManager)value;
+-                maxNodeLimit = (fSecurityManager != null) ? fSecurityManager.getMaxOccurNodeLimit() * MULTIPLICITY : 0 ;
++                fSecurityManager = (XMLSecurityManager)value;
++                maxNodeLimit = (fSecurityManager != null) ?
++                        fSecurityManager.getLimit(XMLSecurityManager.Limit.MAX_OCCUR_NODE_LIMIT) * MULTIPLICITY : 0 ;
+                 return;
+             }
+             if (suffixLength == Constants.ERROR_REPORTER_PROPERTY.length() &&
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java	2013-12-14 21:11:06.000000000 -0500
+@@ -40,6 +40,7 @@
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
+ import com.sun.org.apache.xerces.internal.util.XMLChar;
+ import com.sun.org.apache.xerces.internal.util.XMLSymbols;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.xni.QName;
+ import com.sun.org.apache.xerces.internal.xs.XSConstants;
+ import java.util.HashMap;
+@@ -1194,8 +1195,8 @@
+                     if (!optimize) {
+                     //Revisit :: IMO this is not right place to check
+                     // maxOccurNodeLimit.
+-                    int maxOccurNodeLimit = fSchemaHandler.fSecureProcessing.getMaxOccurNodeLimit();
+-                    if (max > maxOccurNodeLimit) {
++                    int maxOccurNodeLimit = fSchemaHandler.fSecureProcessing.getLimit(XMLSecurityManager.Limit.MAX_OCCUR_NODE_LIMIT);
++                    if (max > maxOccurNodeLimit && !fSchemaHandler.fSecureProcessing.isNoLimit(maxOccurNodeLimit)) {
+                         reportSchemaFatalError("maxOccurLimit", new Object[] {new Integer(maxOccurNodeLimit)}, element);
+ 
+                         // reset max values in case processing continues on error
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java	2013-09-06 14:22:59.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java	2013-12-14 21:11:05.000000000 -0500
+@@ -70,7 +70,6 @@
+ import com.sun.org.apache.xerces.internal.util.DefaultErrorHandler;
+ import com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper;
+ import com.sun.org.apache.xerces.internal.util.SAXInputSource;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.StAXInputSource;
+ import com.sun.org.apache.xerces.internal.util.StAXLocationWrapper;
+ import com.sun.org.apache.xerces.internal.util.SymbolHash;
+@@ -78,6 +77,7 @@
+ import com.sun.org.apache.xerces.internal.util.XMLSymbols;
+ import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;
+ import com.sun.org.apache.xerces.internal.utils.SecuritySupport;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.QName;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+@@ -257,7 +257,7 @@
+      *
+      * <p>Protected to allow access by any traverser.</p>
+      */
+-    protected SecurityManager fSecureProcessing = null;
++    protected XMLSecurityManager fSecureProcessing = null;
+ 
+     private String fAccessExternalSchema;
+     private String fAccessExternalDTD;
+@@ -2251,12 +2251,12 @@
+                     }
+                     catch (SAXException se) {}
+ 
+-                    try {
+-                        parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, fAccessExternalDTD);
+-                    } catch (SAXNotRecognizedException exc) {
+-                        System.err.println("Warning: " + parser.getClass().getName() + ": " +
+-                                exc.getMessage());
+-                    }
++                     try {
++                             parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, fAccessExternalDTD);
++                     } catch (SAXNotRecognizedException exc) {
++                         System.err.println("Warning: " + parser.getClass().getName() + ": " +
++                                 exc.getMessage());
++                     }
+                 }
+                 // If XML names and Namespace URIs are already internalized we
+                 // can avoid running them through the SymbolTable.
+@@ -3509,7 +3509,7 @@
+ 
+         fSecureProcessing = null;
+         if( componentManager!=null ) {
+-            fSecureProcessing = (SecurityManager) componentManager.getProperty(SECURE_PROCESSING, null);
++            fSecureProcessing = (XMLSecurityManager) componentManager.getProperty(SECURE_PROCESSING, null);
+         }
+ 
+         //set entity resolver
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderImpl.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderImpl.java	2013-12-14 21:31:53.000000000 -0500
+@@ -36,7 +36,7 @@
+ import com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator;
+ import com.sun.org.apache.xerces.internal.jaxp.validation.XSGrammarPoolContainer;
+ import com.sun.org.apache.xerces.internal.parsers.DOMParser;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager.Property;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager.State;
+@@ -46,7 +46,6 @@
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLConfigurationException;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentSource;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration;
+-import javax.xml.XMLConstants;
+ import org.w3c.dom.DOMImplementation;
+ import org.w3c.dom.Document;
+ import org.xml.sax.EntityResolver;
+@@ -110,7 +109,6 @@
+     /** Property identifier: access to external schema */
+     public static final String ACCESS_EXTERNAL_SCHEMA = XMLConstants.ACCESS_EXTERNAL_SCHEMA;
+ 
+-
+     private final DOMParser domParser;
+     private final Schema grammar;
+ 
+@@ -125,6 +123,7 @@
+     /** Initial EntityResolver */
+     private final EntityResolver fInitEntityResolver;
+ 
++    private XMLSecurityManager fSecurityManager;
+     private XMLSecurityPropertyManager fSecurityPropertyMgr;
+ 
+     DocumentBuilderImpl(DocumentBuilderFactoryImpl dbf, Hashtable dbfAttrs, Hashtable features)
+@@ -173,10 +172,10 @@
+         fSecurityPropertyMgr = new XMLSecurityPropertyManager();
+         domParser.setProperty(XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
+ 
+-        // If the secure processing feature is on set a security manager.
+-        if (secureProcessing) {
+-            domParser.setProperty(SECURITY_MANAGER, new SecurityManager());
++        fSecurityManager = new XMLSecurityManager(secureProcessing);
++        domParser.setProperty(SECURITY_MANAGER, fSecurityManager);
+ 
++        if (secureProcessing) {
+             /**
+              * If secure processing is explicitly set on the factory, the
+              * access properties will be set unless the corresponding
+@@ -250,9 +249,9 @@
+                 String feature = (String) entry.getKey();
+                 boolean value = ((Boolean) entry.getValue()).booleanValue();
+                 domParser.setFeature(feature, value);
+-            }
+         }
+     }
++    }
+ 
+     /**
+      * Set any DocumentBuilderFactory attributes of our underlying DOMParser
+@@ -289,30 +288,33 @@
+                             // spec when schema validation is enabled
+                             domParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
+                         }
+-                     }
+-                 } else if(JAXP_SCHEMA_SOURCE.equals(name)){
+-                    if( isValidating() ) {
+-                        String value=(String)dbfAttrs.get(JAXP_SCHEMA_LANGUAGE);
+-                        if(value !=null && W3C_XML_SCHEMA.equals(value)){
+-                            domParser.setProperty(name, val);
+-                        }else{
++                    }
++                        } else if(JAXP_SCHEMA_SOURCE.equals(name)){
++                        if( isValidating() ) {
++                                                String value=(String)dbfAttrs.get(JAXP_SCHEMA_LANGUAGE);
++                                                if(value !=null && W3C_XML_SCHEMA.equals(value)){
++                                        domParser.setProperty(name, val);
++                                                }else{
+                             throw new IllegalArgumentException(
+                                 DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN,
+                                 "jaxp-order-not-supported",
+                                 new Object[] {JAXP_SCHEMA_LANGUAGE, JAXP_SCHEMA_SOURCE}));
++                                                }
++                                        }
++                } else {
++                    //check if the property is managed by security manager
++                    if (fSecurityManager == null ||
++                            !fSecurityManager.setLimit(name, XMLSecurityManager.State.APIPROPERTY, val)) {
++                        //check if the property is managed by security property manager
++                        if (fSecurityPropertyMgr == null ||
++                                !fSecurityPropertyMgr.setValue(name, XMLSecurityPropertyManager.State.APIPROPERTY, val)) {
++                            //fall back to the existing property manager
++                            domParser.setProperty(name, val);
+                         }
+-                     }
+-                  } else {
+-                    int index = fSecurityPropertyMgr.getIndex(name);
+-                    if (index > -1) {
+-                        fSecurityPropertyMgr.setValue(index,
+-                                XMLSecurityPropertyManager.State.APIPROPERTY, (String)val);
+-                    } else {
+-                        // Let Xerces code handle the property
+-                        domParser.setProperty(name, val);
+                     }
+-                  }
+-             }
++
++                }
++            }
+         }
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java	2013-12-14 21:31:53.000000000 -0500
+@@ -34,8 +34,8 @@
+ import com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator;
+ import com.sun.org.apache.xerces.internal.jaxp.validation.XSGrammarPoolContainer;
+ import com.sun.org.apache.xerces.internal.util.SAXMessageFormatter;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.Status;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XMLDocumentHandler;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLComponent;
+@@ -112,6 +112,7 @@
+     /** Initial EntityResolver */
+     private final EntityResolver fInitEntityResolver;
+ 
++    private final XMLSecurityManager fSecurityManager;
+     private final XMLSecurityPropertyManager fSecurityPropertyMgr;
+ 
+     /**
+@@ -130,10 +131,10 @@
+     SAXParserImpl(SAXParserFactoryImpl spf, Hashtable features, boolean secureProcessing)
+         throws SAXException
+     {
++        fSecurityManager = new XMLSecurityManager(secureProcessing);
+         fSecurityPropertyMgr = new XMLSecurityPropertyManager();
+-
+         // Instantiate a SAXParser directly and not through SAX so that we use the right ClassLoader
+-        xmlReader = new JAXPSAXParser(this, fSecurityPropertyMgr);
++        xmlReader = new JAXPSAXParser(this, fSecurityPropertyMgr, fSecurityManager);
+ 
+         // JAXP "namespaceAware" == SAX Namespaces feature
+         // Note: there is a compatibility problem here with default values:
+@@ -154,9 +155,9 @@
+ 
+         xmlReader.setProperty0(XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
+ 
+-        // If the secure processing feature is on set a security manager.
++        xmlReader.setProperty0(SECURITY_MANAGER, fSecurityManager);
++
+         if (secureProcessing) {
+-            xmlReader.setProperty0(SECURITY_MANAGER, new SecurityManager());
+             /**
+              * By default, secure processing is set, no external access is allowed.
+              * However, we need to check if it is actively set on the factory since we
+@@ -164,6 +165,7 @@
+              * the default value
+              */
+             if (features != null) {
++
+                 Object temp = features.get(XMLConstants.FEATURE_SECURE_PROCESSING);
+                 if (temp != null) {
+                     boolean value = ((Boolean) temp).booleanValue();
+@@ -172,7 +174,6 @@
+                                 XMLSecurityPropertyManager.State.FSP, Constants.EXTERNAL_ACCESS_DEFAULT_FSP);
+                         fSecurityPropertyMgr.setValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_SCHEMA,
+                                 XMLSecurityPropertyManager.State.FSP, Constants.EXTERNAL_ACCESS_DEFAULT_FSP);
+-
+                     }
+                 }
+             }
+@@ -398,22 +399,34 @@
+         private final HashMap fInitFeatures = new HashMap();
+         private final HashMap fInitProperties = new HashMap();
+         private final SAXParserImpl fSAXParser;
++        private XMLSecurityManager fSecurityManager;
+         private XMLSecurityPropertyManager fSecurityPropertyMgr;
+ 
+ 
+         public JAXPSAXParser() {
+-            this(null, null);
++            this(null, null, null);
+         }
+ 
+-        JAXPSAXParser(SAXParserImpl saxParser, XMLSecurityPropertyManager spm) {
++        JAXPSAXParser(SAXParserImpl saxParser, XMLSecurityPropertyManager securityPropertyMgr,
++                XMLSecurityManager securityManager) {
+             super();
+             fSAXParser = saxParser;
+-            fSecurityPropertyMgr = spm;
+-
++            fSecurityManager = securityManager;
++            fSecurityPropertyMgr = securityPropertyMgr;
+             /**
+              * This class may be used directly. So initialize the security manager if
+              * it is null.
+              */
++            if (fSecurityManager == null) {
++                fSecurityManager = new XMLSecurityManager(true);
++                try {
++                    super.setProperty(SECURITY_MANAGER, fSecurityManager);
++                } catch (SAXException e) {
++                    throw new UnsupportedOperationException(
++                        SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
++                        "property-not-recognized", new Object [] {SECURITY_MANAGER}), e);
++                }
++            }
+             if (fSecurityPropertyMgr == null) {
+                 fSecurityPropertyMgr = new XMLSecurityPropertyManager();
+                 try {
+@@ -421,7 +434,7 @@
+                 } catch (SAXException e) {
+                     throw new UnsupportedOperationException(
+                         SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
+-                        "property-not-recognized", new Object [] {SECURITY_MANAGER}), e);
++                        "property-not-recognized", new Object [] {XML_SECURITY_PROPERTY_MANAGER}), e);
+                 }
+             }
+         }
+@@ -439,7 +452,8 @@
+             }
+             if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
+                 try {
+-                    setProperty(SECURITY_MANAGER, value ? new SecurityManager() : null);
++                    fSecurityManager.setSecureProcessing(value);
++                    setProperty(SECURITY_MANAGER, fSecurityManager);
+                 }
+                 catch (SAXNotRecognizedException exc) {
+                     // If the property is not supported
+@@ -475,13 +489,7 @@
+                 throw new NullPointerException();
+             }
+             if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
+-                try {
+-                    return (super.getProperty(SECURITY_MANAGER) != null);
+-                }
+-                // If the property is not supported the value must be false.
+-                catch (SAXException exc) {
+-                    return false;
+-                }
++                return fSecurityManager.isSecureProcessing();
+             }
+             return super.getFeature(name);
+         }
+@@ -560,17 +568,21 @@
+             if (fSAXParser != null && fSAXParser.fSchemaValidator != null) {
+                 setSchemaValidatorProperty(name, value);
+             }
+-            /** Check to see if the property is managed by the property manager **/
+-            int index = (fSecurityPropertyMgr != null) ? fSecurityPropertyMgr.getIndex(name) : -1;
+-            if (index > -1) {
+-                fSecurityPropertyMgr.setValue(index,
+-                        XMLSecurityPropertyManager.State.APIPROPERTY, (String)value);
+-            } else {
+-                if (!fInitProperties.containsKey(name)) {
+-                    fInitProperties.put(name, super.getProperty(name));
++
++            //check if the property is managed by security manager
++            if (fSecurityManager == null ||
++                    !fSecurityManager.setLimit(name, XMLSecurityManager.State.APIPROPERTY, value)) {
++                //check if the property is managed by security property manager
++                if (fSecurityPropertyMgr == null ||
++                        !fSecurityPropertyMgr.setValue(name, XMLSecurityPropertyManager.State.APIPROPERTY, value)) {
++                    //fall back to the existing property manager
++                    if (!fInitProperties.containsKey(name)) {
++                        fInitProperties.put(name, super.getProperty(name));
++                    }
++                    super.setProperty(name, value);
+                 }
+-                super.setProperty(name, value);
+             }
++
+         }
+ 
+         public synchronized Object getProperty(String name)
+@@ -583,9 +595,18 @@
+                 // JAXP 1.2 support
+                 return fSAXParser.schemaLanguage;
+             }
+-            int index = (fSecurityPropertyMgr != null) ? fSecurityPropertyMgr.getIndex(name) : -1;
+-            if (index > -1) {
+-                return fSecurityPropertyMgr.getValueByIndex(index);
++
++            /** Check to see if the property is managed by the security manager **/
++            String propertyValue = (fSecurityManager != null) ?
++                    fSecurityManager.getLimitAsString(name) : null;
++            if (propertyValue != null) {
++                return propertyValue;
++            } else {
++                propertyValue = (fSecurityPropertyMgr != null) ?
++                    fSecurityPropertyMgr.getValue(name) : null;
++                if (propertyValue != null) {
++                    return propertyValue;
++                }
+             }
+ 
+             return super.getProperty(name);
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StAXValidatorHelper.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StAXValidatorHelper.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StAXValidatorHelper.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StAXValidatorHelper.java	2013-12-14 21:11:06.000000000 -0500
+@@ -26,6 +26,7 @@
+ package com.sun.org.apache.xerces.internal.jaxp.validation;
+ 
+ import com.sun.org.apache.xerces.internal.impl.Constants;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import java.io.IOException;
+ 
+ import javax.xml.transform.Result;
+@@ -73,6 +74,19 @@
+                     SAXTransformerFactory tf = fComponentManager.getFeature(Constants.ORACLE_FEATURE_SERVICE_MECHANISM) ?
+                                     (SAXTransformerFactory)SAXTransformerFactory.newInstance()
+                                     : (SAXTransformerFactory) TransformerFactory.newInstance(DEFAULT_TRANSFORMER_IMPL, StAXValidatorHelper.class.getClassLoader());
++                    XMLSecurityManager securityManager = (XMLSecurityManager)fComponentManager.getProperty(Constants.SECURITY_MANAGER);
++                    if (securityManager != null) {
++                        for (XMLSecurityManager.Limit limit : XMLSecurityManager.Limit.values()) {
++                            if (securityManager.isSet(limit.ordinal())){
++                                tf.setAttribute(limit.apiProperty(),
++                                        securityManager.getLimitValueAsString(limit));
++                            }
++                        }
++                        if (securityManager.printEntityCountInfo()) {
++                            tf.setAttribute(Constants.JDK_ENTITY_COUNT_INFO, "yes");
++                        }
++                    }
++
+                     identityTransformer1 = tf.newTransformer();
+                     identityTransformer2 = tf.newTransformerHandler();
+                 } catch (TransformerConfigurationException e) {
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StreamValidatorHelper.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StreamValidatorHelper.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StreamValidatorHelper.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/StreamValidatorHelper.java	2013-12-14 21:11:06.000000000 -0500
+@@ -20,28 +20,27 @@
+ 
+ package com.sun.org.apache.xerces.internal.jaxp.validation;
+ 
+-import java.lang.ref.SoftReference;
+-import java.io.IOException;
+-
+-import javax.xml.transform.Result;
+-import javax.xml.transform.Source;
+-import javax.xml.transform.sax.SAXTransformerFactory;
+-import javax.xml.transform.sax.TransformerHandler;
+-import javax.xml.transform.stream.StreamSource;
+-import javax.xml.transform.stream.StreamResult;
+-import javax.xml.transform.TransformerConfigurationException;
+-import javax.xml.transform.TransformerFactory;
+-import javax.xml.transform.TransformerFactoryConfigurationError;
+-import javax.xml.XMLConstants;
+-
+ import com.sun.org.apache.xerces.internal.impl.Constants;
+ import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter;
+ import com.sun.org.apache.xerces.internal.impl.msg.XMLMessageFormatter;
+ import com.sun.org.apache.xerces.internal.parsers.XML11Configuration;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLParseException;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration;
++import java.io.IOException;
++import java.lang.ref.SoftReference;
++import javax.xml.XMLConstants;
++import javax.xml.transform.Result;
++import javax.xml.transform.Source;
++import javax.xml.transform.TransformerConfigurationException;
++import javax.xml.transform.TransformerFactory;
++import javax.xml.transform.TransformerFactoryConfigurationError;
++import javax.xml.transform.sax.SAXTransformerFactory;
++import javax.xml.transform.sax.TransformerHandler;
++import javax.xml.transform.stream.StreamResult;
++import javax.xml.transform.stream.StreamSource;
+ import org.xml.sax.SAXException;
+ 
+ /**
+@@ -86,6 +85,11 @@
+         Constants.XERCES_PROPERTY_PREFIX + Constants.VALIDATION_MANAGER_PROPERTY;
+ 
+     private static final String DEFAULT_TRANSFORMER_IMPL = "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl";
++
++    /** Property id: security manager. */
++    private static final String SECURITY_MANAGER =
++        Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY;
++
+     //
+     // Data
+     //
+@@ -165,6 +169,9 @@
+ 
+     private XMLParserConfiguration initialize() {
+         XML11Configuration config = new XML11Configuration();
++        if (fComponentManager.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING)) {
++            config.setProperty(SECURITY_MANAGER, new XMLSecurityManager());
++        }
+         config.setProperty(ENTITY_RESOLVER, fComponentManager.getProperty(ENTITY_RESOLVER));
+         config.setProperty(ERROR_HANDLER, fComponentManager.getProperty(ERROR_HANDLER));
+         XMLErrorReporter errorReporter = (XMLErrorReporter) fComponentManager.getProperty(ERROR_REPORTER);
+@@ -182,6 +189,8 @@
+         config.setDTDContentModelHandler(null);
+         config.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER,
+                 fComponentManager.getProperty(Constants.XML_SECURITY_PROPERTY_MANAGER));
++        config.setProperty(Constants.SECURITY_MANAGER,
++                fComponentManager.getProperty(Constants.SECURITY_MANAGER));
+         fConfiguration = new SoftReference(config);
+         return config;
+     }
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorHandlerImpl.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorHandlerImpl.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorHandlerImpl.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorHandlerImpl.java	2013-12-14 21:11:06.000000000 -0500
+@@ -49,10 +49,10 @@
+ import com.sun.org.apache.xerces.internal.util.SAXMessageFormatter;
+ import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.URI;
+ import com.sun.org.apache.xerces.internal.util.XMLAttributesImpl;
+ import com.sun.org.apache.xerces.internal.util.XMLSymbols;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
+ import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
+@@ -679,10 +679,12 @@
+                                     SAXParserFactory.newInstance() : new SAXParserFactoryImpl();
+                     spf.setNamespaceAware(true);
+                     try {
++                        spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING,
++                                fComponentManager.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING));
+                         reader = spf.newSAXParser().getXMLReader();
+                         // If this is a Xerces SAX parser, set the security manager if there is one
+                         if (reader instanceof com.sun.org.apache.xerces.internal.parsers.SAXParser) {
+-                           SecurityManager securityManager = (SecurityManager) fComponentManager.getProperty(SECURITY_MANAGER);
++                           XMLSecurityManager securityManager = (XMLSecurityManager) fComponentManager.getProperty(SECURITY_MANAGER);
+                            if (securityManager != null) {
+                                try {
+                                    reader.setProperty(SECURITY_MANAGER, securityManager);
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java	2013-12-14 21:11:06.000000000 -0500
+@@ -41,10 +41,10 @@
+ import com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper;
+ import com.sun.org.apache.xerces.internal.util.SAXInputSource;
+ import com.sun.org.apache.xerces.internal.util.SAXMessageFormatter;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.StAXInputSource;
+ import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.XMLGrammarPoolImpl;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+ import com.sun.org.apache.xerces.internal.xni.grammars.Grammar;
+@@ -79,7 +79,7 @@
+     private static final String XMLGRAMMAR_POOL =
+         Constants.XERCES_PROPERTY_PREFIX + Constants.XMLGRAMMAR_POOL_PROPERTY;
+ 
+-    /** Property identifier: SecurityManager. */
++    /** Property identifier: XMLSecurityManager. */
+     private static final String SECURITY_MANAGER =
+         Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY;
+ 
+@@ -87,7 +87,6 @@
+     private static final String XML_SECURITY_PROPERTY_MANAGER =
+             Constants.XML_SECURITY_PROPERTY_MANAGER;
+ 
+-
+     //
+     // Data
+     //
+@@ -108,7 +107,7 @@
+     private ErrorHandlerWrapper fErrorHandlerWrapper;
+ 
+     /** The SecurityManager. */
+-    private SecurityManager fSecurityManager;
++    private XMLSecurityManager fSecurityManager;
+ 
+     /** The Security property manager. */
+     private XMLSecurityPropertyManager fSecurityPropertyMgr;
+@@ -122,8 +121,6 @@
+      * Note the default value (false) is the safe option..
+      */
+     private final boolean fUseServicesMechanism;
+-
+-
+     public XMLSchemaFactory() {
+         this(true);
+     }
+@@ -141,7 +138,7 @@
+         fXMLSchemaLoader.setErrorHandler(fErrorHandlerWrapper);
+ 
+         // Enable secure processing feature by default
+-        fSecurityManager = new SecurityManager();
++        fSecurityManager = new XMLSecurityManager(true);
+         fXMLSchemaLoader.setProperty(SECURITY_MANAGER, fSecurityManager);
+ 
+         fSecurityPropertyMgr = new XMLSecurityPropertyManager();
+@@ -301,7 +298,7 @@
+                     "FeatureNameNull", null));
+         }
+         if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
+-            return (fSecurityManager != null);
++            return (fSecurityManager !=null && fSecurityManager.isSecureProcessing());
+         }
+         try {
+             return fXMLSchemaLoader.getFeature(name);
+@@ -365,17 +362,15 @@
+                         SAXMessageFormatter.formatMessage(null,
+                         "jaxp-secureprocessing-feature", null));
+             }
+-            if (value) {
+-                fSecurityManager = new SecurityManager();
+ 
++            fSecurityManager.setSecureProcessing(value);
++            if (value) {
+                 if (Constants.IS_JDK8_OR_ABOVE) {
+                     fSecurityPropertyMgr.setValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD,
+                             XMLSecurityPropertyManager.State.FSP, Constants.EXTERNAL_ACCESS_DEFAULT_FSP);
+                     fSecurityPropertyMgr.setValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_SCHEMA,
+                             XMLSecurityPropertyManager.State.FSP, Constants.EXTERNAL_ACCESS_DEFAULT_FSP);
+                 }
+-            } else {
+-                fSecurityManager = null;
+             }
+ 
+             fXMLSchemaLoader.setProperty(SECURITY_MANAGER, fSecurityManager);
+@@ -410,9 +405,17 @@
+                     "ProperyNameNull", null));
+         }
+         if (name.equals(SECURITY_MANAGER)) {
+-            fSecurityManager = (SecurityManager) object;
++            fSecurityManager = XMLSecurityManager.convert(object, fSecurityManager);
+             fXMLSchemaLoader.setProperty(SECURITY_MANAGER, fSecurityManager);
+             return;
++        } else if (name.equals(Constants.XML_SECURITY_PROPERTY_MANAGER)) {
++            if (object == null) {
++                fSecurityPropertyMgr = new XMLSecurityPropertyManager();
++            } else {
++                fSecurityPropertyMgr = (XMLSecurityPropertyManager)object;
++            }
++            fXMLSchemaLoader.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
++            return;
+         }
+         else if (name.equals(XMLGRAMMAR_POOL)) {
+             throw new SAXNotSupportedException(
+@@ -420,12 +423,15 @@
+                     "property-not-supported", new Object [] {name}));
+         }
+         try {
+-            int index = fSecurityPropertyMgr.getIndex(name);
+-            if (index > -1) {
+-                fSecurityPropertyMgr.setValue(index,
+-                        XMLSecurityPropertyManager.State.APIPROPERTY, (String)object);
+-            } else {
+-                fXMLSchemaLoader.setProperty(name, object);
++            //check if the property is managed by security manager
++            if (fSecurityManager == null ||
++                    !fSecurityManager.setLimit(name, XMLSecurityManager.State.APIPROPERTY, object)) {
++                //check if the property is managed by security property manager
++                if (fSecurityPropertyMgr == null ||
++                        !fSecurityPropertyMgr.setValue(name, XMLSecurityPropertyManager.State.APIPROPERTY, object)) {
++                    //fall back to the existing property manager
++                    fXMLSchemaLoader.setProperty(name, object);
++                }
+             }
+         }
+         catch (XMLConfigurationException e) {
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java	2013-12-14 21:11:06.000000000 -0500
+@@ -39,9 +39,9 @@
+ import com.sun.org.apache.xerces.internal.util.NamespaceSupport;
+ import com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings;
+ import com.sun.org.apache.xerces.internal.util.PropertyState;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+@@ -181,7 +181,7 @@
+     private final HashMap fInitProperties = new HashMap();
+ 
+     /** Stores the initial security manager. */
+-    private final SecurityManager fInitSecurityManager;
++    private XMLSecurityManager fInitSecurityManager;
+ 
+     /** Stores the initial security property manager. */
+     private final XMLSecurityPropertyManager fSecurityPropertyMgr;
+@@ -221,12 +221,6 @@
+         fComponents.put(ENTITY_RESOLVER, null);
+         fComponents.put(ERROR_HANDLER, null);
+ 
+-        if (System.getSecurityManager() != null) {
+-            _isSecureMode = true;
+-            setProperty(SECURITY_MANAGER, new SecurityManager());
+-        } else {
+-            fComponents.put(SECURITY_MANAGER, null);
+-        }
+         fComponents.put(SYMBOL_TABLE, new SymbolTable());
+ 
+         // setup grammar pool
+@@ -241,15 +235,21 @@
+         addRecognizedParamsAndSetDefaults(fErrorReporter, grammarContainer);
+         addRecognizedParamsAndSetDefaults(fSchemaValidator, grammarContainer);
+ 
+-        // if the secure processing feature is set to true, add a security manager to the configuration
+-        Boolean secureProcessing = grammarContainer.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING);
+-        if (Boolean.TRUE.equals(secureProcessing)) {
+-            fInitSecurityManager = new SecurityManager();
++        boolean secureProcessing = grammarContainer.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING);
++        if (System.getSecurityManager() != null) {
++            _isSecureMode = true;
++            secureProcessing = true;
+         }
+-        else {
+-            fInitSecurityManager = null;
++
++        fInitSecurityManager = (XMLSecurityManager)
++                grammarContainer.getProperty(SECURITY_MANAGER);
++        if (fInitSecurityManager != null ) {
++            fInitSecurityManager.setSecureProcessing(secureProcessing);
++        } else {
++            fInitSecurityManager = new XMLSecurityManager(secureProcessing);
+         }
+-        fComponents.put(SECURITY_MANAGER, fInitSecurityManager);
++
++        setProperty(SECURITY_MANAGER, fInitSecurityManager);
+ 
+         //pass on properties set on SchemaFactory
+         fSecurityPropertyMgr = (XMLSecurityPropertyManager)
+@@ -281,7 +281,7 @@
+             return FeatureState.is(fUseGrammarPoolOnly);
+         }
+         else if (XMLConstants.FEATURE_SECURE_PROCESSING.equals(featureId)) {
+-            return FeatureState.is(getProperty(SECURITY_MANAGER) != null);
++            return FeatureState.is(fInitSecurityManager.isSecureProcessing());
+         }
+         else if (SCHEMA_ELEMENT_DEFAULT.equals(featureId)) {
+             return FeatureState.is(true); //pre-condition: VALIDATION and SCHEMA_VALIDATION are always true
+@@ -311,7 +311,8 @@
+             if (_isSecureMode && !value) {
+                 throw new XMLConfigurationException(Status.NOT_ALLOWED, XMLConstants.FEATURE_SECURE_PROCESSING);
+             }
+-            setProperty(SECURITY_MANAGER, value ? new SecurityManager() : null);
++            fInitSecurityManager.setSecureProcessing(value);
++            setProperty(SECURITY_MANAGER, fInitSecurityManager);
+ 
+             if (value && Constants.IS_JDK8_OR_ABOVE) {
+                 fSecurityPropertyMgr.setValue(XMLSecurityPropertyManager.Property.ACCESS_EXTERNAL_DTD,
+@@ -390,10 +391,20 @@
+             fComponents.put(propertyId, value);
+             return;
+         }
+-        if (!fInitProperties.containsKey(propertyId)) {
+-            fInitProperties.put(propertyId, super.getProperty(propertyId));
++
++        //check if the property is managed by security manager
++        if (fInitSecurityManager == null ||
++                !fInitSecurityManager.setLimit(propertyId, XMLSecurityManager.State.APIPROPERTY, value)) {
++            //check if the property is managed by security property manager
++            if (fSecurityPropertyMgr == null ||
++                    !fSecurityPropertyMgr.setValue(propertyId, XMLSecurityPropertyManager.State.APIPROPERTY, value)) {
++                //fall back to the existing property manager
++                if (!fInitProperties.containsKey(propertyId)) {
++                    fInitProperties.put(propertyId, super.getProperty(propertyId));
++                }
++                super.setProperty(propertyId, value);
++            }
+         }
+-        super.setProperty(propertyId, value);
+     }
+ 
+     /**
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java	2013-12-14 21:11:06.000000000 -0500
+@@ -20,18 +20,15 @@
+ 
+ package com.sun.org.apache.xerces.internal.parsers;
+ 
+-import java.io.IOException;
+-import java.util.Locale;
+-
+ import com.sun.org.apache.xerces.internal.impl.Constants;
+-import com.sun.org.apache.xerces.internal.util.Status;
+-import com.sun.org.apache.xerces.internal.xs.PSVIProvider;
+-import com.sun.org.apache.xerces.internal.util.EntityResolverWrapper;
+ import com.sun.org.apache.xerces.internal.util.EntityResolver2Wrapper;
++import com.sun.org.apache.xerces.internal.util.EntityResolverWrapper;
+ import com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper;
+ import com.sun.org.apache.xerces.internal.util.SAXMessageFormatter;
++import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.SymbolHash;
+ import com.sun.org.apache.xerces.internal.util.XMLSymbols;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
+ import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
+ import com.sun.org.apache.xerces.internal.xni.QName;
+@@ -48,15 +45,17 @@
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration;
+ import com.sun.org.apache.xerces.internal.xs.AttributePSVI;
+ import com.sun.org.apache.xerces.internal.xs.ElementPSVI;
++import com.sun.org.apache.xerces.internal.xs.PSVIProvider;
++import java.io.IOException;
++import java.util.Locale;
++import javax.xml.XMLConstants;
+ import org.xml.sax.AttributeList;
+-import org.xml.sax.Attributes;
+ import org.xml.sax.ContentHandler;
+ import org.xml.sax.DTDHandler;
+ import org.xml.sax.DocumentHandler;
+ import org.xml.sax.EntityResolver;
+ import org.xml.sax.ErrorHandler;
+ import org.xml.sax.InputSource;
+-import org.xml.sax.Locator;
+ import org.xml.sax.Parser;
+ import org.xml.sax.SAXException;
+ import org.xml.sax.SAXNotRecognizedException;
+@@ -131,6 +130,10 @@
+     protected static final String DOM_NODE =
+         Constants.SAX_PROPERTY_PREFIX + Constants.DOM_NODE_PROPERTY;
+ 
++    /** Property id: security manager. */
++    private static final String SECURITY_MANAGER =
++        Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY;
++
+     /** Recognized properties. */
+     private static final String[] RECOGNIZED_PROPERTIES = {
+         LEXICAL_HANDLER,
+@@ -1645,19 +1648,13 @@
+                 // Drop through and perform default processing
+                 //
+             }
+-
+-            //
+-            // Xerces Features
+-            //
+-
+-            /*
+-            else if (featureId.startsWith(XERCES_FEATURES_PREFIX)) {
+-                String feature = featureId.substring(XERCES_FEATURES_PREFIX.length());
+-                //
+-                // Drop through and perform default processing
+-                //
++            else if (featureId.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
++                if (state) {
++                    if (fConfiguration.getProperty(SECURITY_MANAGER )==null) {
++                        fConfiguration.setProperty(SECURITY_MANAGER, new XMLSecurityManager());
++                    }
++                }
+             }
+-            */
+ 
+             //
+             // Default handling
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/DOMParser.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/DOMParser.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/DOMParser.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/DOMParser.java	2013-12-14 21:11:06.000000000 -0500
+@@ -29,6 +29,7 @@
+ import com.sun.org.apache.xerces.internal.util.SAXMessageFormatter;
+ import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+ import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
+@@ -531,7 +532,54 @@
+      */
+     public void setProperty(String propertyId, Object value)
+         throws SAXNotRecognizedException, SAXNotSupportedException {
++        /**
++         * It's possible for users to set a security manager through the interface.
++         * If it's the old SecurityManager, convert it to the new XMLSecurityManager
++         */
++        if (propertyId.equals(Constants.SECURITY_MANAGER)) {
++            securityManager = XMLSecurityManager.convert(value, securityManager);
++            setProperty0(Constants.SECURITY_MANAGER, securityManager);
++            return;
++        }
++        if (propertyId.equals(Constants.XML_SECURITY_PROPERTY_MANAGER)) {
++            if (value == null) {
++                securityPropertyManager = new XMLSecurityPropertyManager();
++            } else {
++                securityPropertyManager = (XMLSecurityPropertyManager)value;
++            }
++            setProperty0(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager);
++            return;
++        }
++
++        if (securityManager == null) {
++            securityManager = new XMLSecurityManager(true);
++            setProperty0(Constants.SECURITY_MANAGER, securityManager);
++        }
++
++        if (securityPropertyManager == null) {
++            securityPropertyManager = new XMLSecurityPropertyManager();
++            setProperty0(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager);
++        }
++        int index = securityPropertyManager.getIndex(propertyId);
++
++        if (index > -1) {
++            /**
++             * this is a direct call to this parser, not a subclass since
++             * internally the support of this property is done through
++             * XMLSecurityPropertyManager
++             */
++            securityPropertyManager.setValue(index, XMLSecurityPropertyManager.State.APIPROPERTY, (String)value);
++        } else {
++            //check if the property is managed by security manager
++            if (!securityManager.setLimit(propertyId, XMLSecurityManager.State.APIPROPERTY, value)) {
++                //fall back to the default configuration to handle the property
++                setProperty0(propertyId, value);
++            }
++        }
++    }
+ 
++    public void setProperty0(String propertyId, Object value)
++        throws SAXNotRecognizedException, SAXNotSupportedException {
+         try {
+             fConfiguration.setProperty(propertyId, value);
+         }
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java	2013-12-14 21:11:06.000000000 -0500
+@@ -38,7 +38,6 @@
+ import com.sun.org.apache.xerces.internal.util.PropertyState;
+ import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
+-import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XMLLocator;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+ import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
+@@ -189,6 +188,9 @@
+     protected static final String XML_SECURITY_PROPERTY_MANAGER =
+             Constants.XML_SECURITY_PROPERTY_MANAGER;
+ 
++    /** Property identifier: Security manager. */
++    private static final String SECURITY_MANAGER = Constants.SECURITY_MANAGER;
++
+     // debugging
+ 
+     /** Set to true and recompile to print exception stack trace. */
+@@ -334,6 +336,7 @@
+             JAXP_SCHEMA_SOURCE,
+             JAXP_SCHEMA_LANGUAGE,
+             LOCALE,
++            SECURITY_MANAGER,
+             XML_SECURITY_PROPERTY_MANAGER
+         };
+         addRecognizedProperties(recognizedProperties);
+@@ -411,8 +414,6 @@
+             // do nothing
+             // REVISIT: What is the right thing to do? -Ac
+         }
+-
+-        setProperty(XML_SECURITY_PROPERTY_MANAGER, new XMLSecurityPropertyManager());
+     } // <init>(SymbolTable,XMLGrammarPool)
+ 
+     //
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java	2013-12-14 21:11:06.000000000 -0500
+@@ -36,7 +36,6 @@
+ import com.sun.org.apache.xerces.internal.util.PropertyState;
+ import com.sun.org.apache.xerces.internal.util.Status;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
+-import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XMLLocator;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+ import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
+@@ -162,6 +161,9 @@
+     protected static final String XML_SECURITY_PROPERTY_MANAGER =
+             Constants.XML_SECURITY_PROPERTY_MANAGER;
+ 
++    /** Property identifier: Security manager. */
++    private static final String SECURITY_MANAGER = Constants.SECURITY_MANAGER;
++
+     // debugging
+ 
+     /** Set to true and recompile to print exception stack trace. */
+@@ -316,6 +318,7 @@
+             DATATYPE_VALIDATOR_FACTORY,
+             VALIDATION_MANAGER,
+             LOCALE,
++            SECURITY_MANAGER,
+             XML_SECURITY_PROPERTY_MANAGER
+         };
+         addRecognizedProperties(recognizedProperties);
+@@ -372,8 +375,6 @@
+             // do nothing
+             // REVISIT: What is the right thing to do? -Ac
+         }
+-
+-        setProperty(XML_SECURITY_PROPERTY_MANAGER, new XMLSecurityPropertyManager());
+     } // <init>(SymbolTable,XMLGrammarPool)
+ 
+     //
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java	2013-12-14 21:11:06.000000000 -0500
+@@ -22,6 +22,7 @@
+ 
+ import com.sun.org.apache.xerces.internal.impl.Constants;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration;
+@@ -76,7 +77,7 @@
+         XMLGRAMMAR_POOL,
+     };
+ 
+-    XMLSecurityPropertyManager securityPropertyManager;
++
+     //
+     // Constructors
+     //
+@@ -130,11 +131,36 @@
+      */
+     public void setProperty(String name, Object value)
+         throws SAXNotRecognizedException, SAXNotSupportedException {
++        /**
++         * It's possible for users to set a security manager through the interface.
++         * If it's the old SecurityManager, convert it to the new XMLSecurityManager
++         */
++        if (name.equals(Constants.SECURITY_MANAGER)) {
++            securityManager = XMLSecurityManager.convert(value, securityManager);
++            super.setProperty(Constants.SECURITY_MANAGER, securityManager);
++            return;
++        }
++        if (name.equals(Constants.XML_SECURITY_PROPERTY_MANAGER)) {
++            if (value == null) {
++                securityPropertyManager = new XMLSecurityPropertyManager();
++            } else {
++                securityPropertyManager = (XMLSecurityPropertyManager)value;
++            }
++            super.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager);
++            return;
++        }
++
++        if (securityManager == null) {
++            securityManager = new XMLSecurityManager(true);
++            super.setProperty(Constants.SECURITY_MANAGER, securityManager);
++        }
++
+         if (securityPropertyManager == null) {
+             securityPropertyManager = new XMLSecurityPropertyManager();
++            super.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager);
+         }
+-        int index = securityPropertyManager.getIndex(name);
+ 
++        int index = securityPropertyManager.getIndex(name);
+         if (index > -1) {
+             /**
+              * this is a direct call to this parser, not a subclass since
+@@ -142,9 +168,12 @@
+              * XMLSecurityPropertyManager
+              */
+             securityPropertyManager.setValue(index, XMLSecurityPropertyManager.State.APIPROPERTY, (String)value);
+-            super.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager);
+         } else {
+-            super.setProperty(name, value);
++            //check if the property is managed by security manager
++            if (!securityManager.setLimit(name, XMLSecurityManager.State.APIPROPERTY, value)) {
++                //fall back to the default configuration to handle the property
++                super.setProperty(name, value);
++            }
+         }
+     }
+ } // class SAXParser
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/SecurityConfiguration.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/SecurityConfiguration.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/SecurityConfiguration.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/SecurityConfiguration.java	2013-12-14 21:11:06.000000000 -0500
+@@ -23,8 +23,8 @@
+ import com.sun.org.apache.xerces.internal.impl.Constants;
+ import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ 
+ /**
+  * This configuration allows Xerces to behave in a security-conscious manner; that is,
+@@ -44,6 +44,7 @@
+  *
+  * @author Neil Graham, IBM
+  *
++ * @version $Id: SecurityConfiguration.java,v 1.6 2010-11-01 04:40:09 joehw Exp $
+  */
+ public class SecurityConfiguration extends XIncludeAwareParserConfiguration
+ {
+@@ -107,7 +108,7 @@
+         super(symbolTable, grammarPool, parentSettings);
+ 
+         // create the SecurityManager property:
+-        setProperty(SECURITY_MANAGER_PROPERTY, new SecurityManager());
++        setProperty(SECURITY_MANAGER_PROPERTY, new XMLSecurityManager(true));
+     } // <init>(SymbolTable,XMLGrammarPool)
+ 
+ } // class SecurityConfiguration
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XML11Configuration.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/XML11Configuration.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XML11Configuration.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/XML11Configuration.java	2013-12-14 21:11:06.000000000 -0500
+@@ -52,6 +52,7 @@
+ import com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings;
+ import com.sun.org.apache.xerces.internal.util.PropertyState;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XMLDTDContentModelHandler;
+ import com.sun.org.apache.xerces.internal.xni.XMLDTDHandler;
+@@ -279,6 +280,8 @@
+     private static final String XML_SECURITY_PROPERTY_MANAGER =
+             Constants.XML_SECURITY_PROPERTY_MANAGER;
+ 
++    /** Property identifier: Security manager. */
++    private static final String SECURITY_MANAGER = Constants.SECURITY_MANAGER;
+ 
+     // debugging
+ 
+@@ -289,33 +292,33 @@
+     // Data
+     //
+ 
+-        protected SymbolTable fSymbolTable;
++    protected SymbolTable fSymbolTable;
+     protected XMLInputSource fInputSource;
+     protected ValidationManager fValidationManager;
+-        protected XMLVersionDetector fVersionDetector;
++    protected XMLVersionDetector fVersionDetector;
+     protected XMLLocator fLocator;
+-        protected Locale fLocale;
++    protected Locale fLocale;
+ 
+-        /** XML 1.0 Components. */
+-        protected ArrayList fComponents;
++    /** XML 1.0 Components. */
++    protected ArrayList fComponents;
+ 
+-        /** XML 1.1. Components. */
+-        protected ArrayList fXML11Components = null;
++    /** XML 1.1. Components. */
++    protected ArrayList fXML11Components = null;
+ 
+-        /** Common components: XMLEntityManager, XMLErrorReporter, XMLSchemaValidator */
+-        protected ArrayList fCommonComponents = null;
++    /** Common components: XMLEntityManager, XMLErrorReporter, XMLSchemaValidator */
++    protected ArrayList fCommonComponents = null;
+ 
+-        /** The document handler. */
+-        protected XMLDocumentHandler fDocumentHandler;
++    /** The document handler. */
++    protected XMLDocumentHandler fDocumentHandler;
+ 
+-        /** The DTD handler. */
+-        protected XMLDTDHandler fDTDHandler;
++    /** The DTD handler. */
++    protected XMLDTDHandler fDTDHandler;
+ 
+-        /** The DTD content model handler. */
+-        protected XMLDTDContentModelHandler fDTDContentModelHandler;
++    /** The DTD content model handler. */
++    protected XMLDTDContentModelHandler fDTDContentModelHandler;
+ 
+-        /** Last component in the document pipeline */
+-        protected XMLDocumentSource fLastComponent;
++    /** Last component in the document pipeline */
++    protected XMLDocumentSource fLastComponent;
+ 
+     /**
+      * True if a parse is in progress. This state is needed because
+@@ -495,31 +498,31 @@
+                 fFeatures.put(SCHEMA_ELEMENT_DEFAULT, Boolean.TRUE);
+                 fFeatures.put(NORMALIZE_DATA, Boolean.TRUE);
+                 fFeatures.put(SCHEMA_AUGMENT_PSVI, Boolean.TRUE);
+-                fFeatures.put(GENERATE_SYNTHETIC_ANNOTATIONS, Boolean.FALSE);
+-                fFeatures.put(VALIDATE_ANNOTATIONS, Boolean.FALSE);
+-                fFeatures.put(HONOUR_ALL_SCHEMALOCATIONS, Boolean.FALSE);
+-                fFeatures.put(NAMESPACE_GROWTH, Boolean.FALSE);
+-                fFeatures.put(TOLERATE_DUPLICATES, Boolean.FALSE);
+-                fFeatures.put(USE_GRAMMAR_POOL_ONLY, Boolean.FALSE);
++        fFeatures.put(GENERATE_SYNTHETIC_ANNOTATIONS, Boolean.FALSE);
++        fFeatures.put(VALIDATE_ANNOTATIONS, Boolean.FALSE);
++        fFeatures.put(HONOUR_ALL_SCHEMALOCATIONS, Boolean.FALSE);
++        fFeatures.put(NAMESPACE_GROWTH, Boolean.FALSE);
++        fFeatures.put(TOLERATE_DUPLICATES, Boolean.FALSE);
++        fFeatures.put(USE_GRAMMAR_POOL_ONLY, Boolean.FALSE);
+                 fFeatures.put(PARSER_SETTINGS, Boolean.TRUE);
+                 fFeatures.put(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+ 
+         // add default recognized properties
+         final String[] recognizedProperties =
+             {
+-                SYMBOL_TABLE,
+-                ERROR_HANDLER,
+-                ENTITY_RESOLVER,
++                                SYMBOL_TABLE,
++                                ERROR_HANDLER,
++                                ENTITY_RESOLVER,
+                 ERROR_REPORTER,
+                 ENTITY_MANAGER,
+                 DOCUMENT_SCANNER,
+                 DTD_SCANNER,
+                 DTD_PROCESSOR,
+                 DTD_VALIDATOR,
+-                DATATYPE_VALIDATOR_FACTORY,
+-                VALIDATION_MANAGER,
+-                SCHEMA_VALIDATOR,
+-                XML_STRING,
++                                DATATYPE_VALIDATOR_FACTORY,
++                                VALIDATION_MANAGER,
++                                SCHEMA_VALIDATOR,
++                                XML_STRING,
+                 XMLGRAMMAR_POOL,
+                 JAXP_SCHEMA_SOURCE,
+                 JAXP_SCHEMA_LANGUAGE,
+@@ -531,19 +534,20 @@
+                 SCHEMA_NONS_LOCATION,
+                 LOCALE,
+                 SCHEMA_DV_FACTORY,
++                SECURITY_MANAGER,
+                 XML_SECURITY_PROPERTY_MANAGER
+         };
+         addRecognizedProperties(recognizedProperties);
+ 
+-        if (symbolTable == null) {
+-                symbolTable = new SymbolTable();
+-        }
+-        fSymbolTable = symbolTable;
+-        fProperties.put(SYMBOL_TABLE, fSymbolTable);
++                if (symbolTable == null) {
++                        symbolTable = new SymbolTable();
++                }
++                fSymbolTable = symbolTable;
++                fProperties.put(SYMBOL_TABLE, fSymbolTable);
+ 
+         fGrammarPool = grammarPool;
+         if (fGrammarPool != null) {
+-            fProperties.put(XMLGRAMMAR_POOL, fGrammarPool);
++                        fProperties.put(XMLGRAMMAR_POOL, fGrammarPool);
+         }
+ 
+         fEntityManager = new XMLEntityManager();
+@@ -579,8 +583,6 @@
+ 
+         fVersionDetector = new XMLVersionDetector();
+ 
+-        fProperties.put(XML_SECURITY_PROPERTY_MANAGER, new XMLSecurityPropertyManager());
+-
+         // add message formatters
+         if (fErrorReporter.getMessageFormatter(XMLMessageFormatter.XML_DOMAIN) == null) {
+             XMLMessageFormatter xmft = new XMLMessageFormatter();
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLParser.java ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLParser.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLParser.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLParser.java	2013-12-14 21:11:06.000000000 -0500
+@@ -23,6 +23,8 @@
+ import java.io.IOException;
+ 
+ import com.sun.org.apache.xerces.internal.impl.Constants;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager;
+ import com.sun.org.apache.xerces.internal.xni.XNIException;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource;
+ import com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration;
+@@ -78,6 +80,13 @@
+     /** The parser configuration. */
+     protected XMLParserConfiguration fConfiguration;
+ 
++    /** The XML Security Manager. */
++    XMLSecurityManager securityManager;
++
++    /** The XML Security Property Manager. */
++    XMLSecurityPropertyManager securityPropertyManager;
++
++
+     //
+     // Constructors
+     //
+@@ -118,6 +127,15 @@
+      */
+     public void parse(XMLInputSource inputSource)
+         throws XNIException, IOException {
++        // null indicates that the parser is called directly, initialize them
++        if (securityManager == null) {
++            securityManager = new XMLSecurityManager(true);
++            fConfiguration.setProperty(Constants.SECURITY_MANAGER, securityManager);
++        }
++        if (securityPropertyManager == null) {
++            securityPropertyManager = new XMLSecurityPropertyManager();
++            fConfiguration.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager);
++        }
+ 
+         reset();
+         fConfiguration.parse(inputSource);
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java ./jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/util/SecurityManager.java	2013-12-14 21:31:53.000000000 -0500
+@@ -61,8 +61,6 @@
+ 
+ package com.sun.org.apache.xerces.internal.util;
+ import com.sun.org.apache.xerces.internal.impl.Constants;
+-import java.security.AccessController;
+-import java.security.PrivilegedAction;
+ /**
+  * This class is a container for parser settings that relate to
+  * security, or more specifically, it is intended to be used to prevent denial-of-service
+@@ -79,7 +77,6 @@
+  *
+  * @author  Neil Graham, IBM
+  *
+- * @version $Id: SecurityManager.java,v 1.5 2010-11-01 04:40:14 joehw Exp $
+  */
+ public final class SecurityManager {
+ 
+@@ -179,48 +176,40 @@
+ 
+         private void readSystemProperties(){
+ 
+-            //TODO: also read SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT
+-            try {
+-                    String value = getSystemProperty(Constants.ENTITY_EXPANSION_LIMIT);
+-                    if(value != null && !value.equals("")){
+-                            entityExpansionLimit = Integer.parseInt(value);
+-                            if (entityExpansionLimit < 0)
+-                                    entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
+-                    }
+-                    else
+-                            entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
+-            }catch(Exception ex){}
+-
+-            try {
+-                    String value = getSystemProperty(Constants.MAX_OCCUR_LIMIT);
+-                    if(value != null && !value.equals("")){
+-                            maxOccurLimit = Integer.parseInt(value);
+-                            if (maxOccurLimit < 0)
+-                                    maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
+-                    }
+-                    else
+-                            maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
+-            }catch(Exception ex){}
+-
+-            try {
+-                    String value = getSystemProperty(Constants.SYSTEM_PROPERTY_ELEMENT_ATTRIBUTE_LIMIT);
+-                    if(value != null && !value.equals("")){
+-                            fElementAttributeLimit = Integer.parseInt(value);
+-                            if ( fElementAttributeLimit < 0)
+-                                    fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
+-                    }
+-                    else
+-                            fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
++                try {
++                        String value = System.getProperty(Constants.ENTITY_EXPANSION_LIMIT);
++                        if(value != null && !value.equals("")){
++                                entityExpansionLimit = Integer.parseInt(value);
++                                if (entityExpansionLimit < 0)
++                                        entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
++                        }
++                        else
++                                entityExpansionLimit = DEFAULT_ENTITY_EXPANSION_LIMIT;
++                }catch(Exception ex){}
++
++                try {
++                        String value = System.getProperty(Constants.MAX_OCCUR_LIMIT);
++                        if(value != null && !value.equals("")){
++                                maxOccurLimit = Integer.parseInt(value);
++                                if (maxOccurLimit < 0)
++                                        maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
++                        }
++                        else
++                                maxOccurLimit = DEFAULT_MAX_OCCUR_NODE_LIMIT;
++                }catch(Exception ex){}
++
++                try {
++                        String value = System.getProperty(Constants.ELEMENT_ATTRIBUTE_LIMIT);
++                        if(value != null && !value.equals("")){
++                                fElementAttributeLimit = Integer.parseInt(value);
++                                if ( fElementAttributeLimit < 0)
++                                        fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
++                        }
++                        else
++                                fElementAttributeLimit = DEFAULT_ELEMENT_ATTRIBUTE_LIMIT;
+ 
+                 }catch(Exception ex){}
+ 
+         }
+ 
+-    private String getSystemProperty(final String propName) {
+-        return AccessController.doPrivileged(new PrivilegedAction<String>() {
+-            public String run() {
+-                return System.getProperty(propName);
+-            }
+-        });
+-    }
+ } // class SecurityManager
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/util/SymbolTable.java ./jaxp/src/com/sun/org/apache/xerces/internal/util/SymbolTable.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/util/SymbolTable.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/util/SymbolTable.java	2013-12-14 21:11:06.000000000 -0500
+@@ -173,7 +173,7 @@
+         for (int i = 0; i < length; i++) {
+             code = code * 37 + symbol.charAt(i);
+         }
+-        return code & 0x7FFFFFF;
++        return code & 0x7FFFFFFF;
+ 
+     } // hash(String):int
+ 
+@@ -194,7 +194,7 @@
+         for (int i = 0; i < length; i++) {
+             code = code * 37 + buffer[offset + i];
+         }
+-        return code & 0x7FFFFFF;
++        return code & 0x7FFFFFFF;
+ 
+     } // hash(char[],int,int):int
+ 
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java ./jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java	2013-12-14 21:11:06.000000000 -0500
+@@ -0,0 +1,239 @@
++/*
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
++ *
++ * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
++ *
++ * The contents of this file are subject to the terms of either the GNU
++ * General Public License Version 2 only ("GPL") or the Common Development
++ * and Distribution License("CDDL") (collectively, the "License").  You
++ * may not use this file except in compliance with the License.  You can
++ * obtain a copy of the License at
++ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
++ * or packager/legal/LICENSE.txt.  See the License for the specific
++ * language governing permissions and limitations under the License.
++ *
++ * When distributing the software, include this License Header Notice in each
++ * file and include the License file at packager/legal/LICENSE.txt.
++ *
++ * GPL Classpath Exception:
++ * Oracle designates this particular file as subject to the "Classpath"
++ * exception as provided by Oracle in the GPL Version 2 section of the License
++ * file that accompanied this code.
++ *
++ * Modifications:
++ * If applicable, add the following below the License Header, with the fields
++ * enclosed by brackets [] replaced by your own identifying information:
++ * "Portions Copyright [year] [name of copyright owner]"
++ *
++ * Contributor(s):
++ * If you wish your version of this file to be governed by only the CDDL or
++ * only the GPL Version 2, indicate your decision by adding "[Contributor]
++ * elects to include this software in this distribution under the [CDDL or GPL
++ * Version 2] license."  If you don't indicate a single choice of license, a
++ * recipient has the option to distribute your version of this file under
++ * either the CDDL, the GPL Version 2 or to extend the choice of license to
++ * its licensees as provided above.  However, if you add GPL Version 2 code
++ * and therefore, elected the GPL Version 2 license, then the option applies
++ * only if the new code is made subject to such option by the copyright
++ * holder.
++ */
++package com.sun.org.apache.xerces.internal.utils;
++
++import com.sun.org.apache.xerces.internal.impl.Constants;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager.Limit;
++import java.util.Formatter;
++import java.util.HashMap;
++import java.util.Map;
++
++/**
++ * A helper for analyzing entity expansion limits
++ *
++ * @author Joe Wang Oracle Corp.
++ *
++ */
++public final class XMLLimitAnalyzer {
++
++    /**
++     * Map old property names with the new ones
++     */
++    public static enum NameMap {
++        ENTITY_EXPANSION_LIMIT(Constants.SP_ENTITY_EXPANSION_LIMIT, Constants.ENTITY_EXPANSION_LIMIT),
++        MAX_OCCUR_NODE_LIMIT(Constants.SP_MAX_OCCUR_LIMIT, Constants.MAX_OCCUR_LIMIT),
++        ELEMENT_ATTRIBUTE_LIMIT(Constants.SP_ELEMENT_ATTRIBUTE_LIMIT, Constants.ELEMENT_ATTRIBUTE_LIMIT);
++
++        final String newName;
++        final String oldName;
++
++        NameMap(String newName, String oldName) {
++            this.newName = newName;
++            this.oldName = oldName;
++        }
++
++        String getOldName(String newName) {
++            if (newName.equals(this.newName)) {
++                return oldName;
++            }
++            return null;
++        }
++    }
++
++    private XMLSecurityManager securityManager;
++    /**
++     * Max value accumulated for each property
++     */
++    private final int[] values;
++    /**
++     * Names of the entities corresponding to their max values
++     */
++    private final String[] names;
++    /**
++     * Total value of accumulated entities
++     */
++    private final int[] totalValue;
++
++    /**
++     * Maintain values of the top 10 elements in the process of parsing
++     */
++    private final Map[] caches;
++
++    private String entityStart, entityEnd;
++    /**
++     * Default constructor. Establishes default values for known security
++     * vulnerabilities.
++     */
++    public XMLLimitAnalyzer(XMLSecurityManager securityManager) {
++        this.securityManager = securityManager;
++        values = new int[Limit.values().length];
++        totalValue = new int[Limit.values().length];
++        names = new String[Limit.values().length];
++        caches = new Map[Limit.values().length];
++    }
++
++    /**
++     * Add the value to the current max count for the specified property
++     * To find the max value of all entities, set no limit
++     *
++     * @param limit the type of the property
++     * @param entityName the name of the entity
++     * @param value the value of the entity
++     */
++    public void addValue(Limit limit, String entityName, int value) {
++        addValue(limit.ordinal(), entityName, value);
++    }
++
++    /**
++     * Add the value to the current count by the index of the property
++     * @param index the index of the property
++     * @param entityName the name of the entity
++     * @param value the value of the entity
++     */
++    public void addValue(int index, String entityName, int value) {
++        if (index == Limit.ENTITY_EXPANSION_LIMIT.ordinal() ||
++                index == Limit.MAX_OCCUR_NODE_LIMIT.ordinal() ||
++                index == Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal()) {
++            totalValue[index] += value;
++            return;
++        }
++
++        Map<String, Integer> cache;
++        if (caches[index] == null) {
++            cache = new HashMap<String, Integer>(10);
++            caches[index] = cache;
++        } else {
++            cache = caches[index];
++        }
++
++        int accumulatedValue = value;
++        if (cache.containsKey(entityName)) {
++            accumulatedValue += cache.get(entityName).intValue();
++            cache.put(entityName, Integer.valueOf(accumulatedValue));
++        } else {
++            cache.put(entityName, Integer.valueOf(value));
++        }
++
++        if (accumulatedValue > values[index]) {
++            values[index] = accumulatedValue;
++            names[index] = entityName;
++        }
++
++
++        if (index == Limit.GENEAL_ENTITY_SIZE_LIMIT.ordinal() ||
++                index == Limit.PARAMETER_ENTITY_SIZE_LIMIT.ordinal()) {
++            totalValue[Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal()] += value;
++        }
++    }
++
++    /**
++     * Return the value of the current max count for the specified property
++     *
++     * @param limit the property
++     * @return the value of the property
++     */
++    public int getValue(Limit limit) {
++        return values[limit.ordinal()];
++    }
++
++    public int getValue(int index) {
++        return values[index];
++    }
++    /**
++     * Return the total value accumulated so far
++     *
++     * @param limit the property
++     * @return the accumulated value of the property
++     */
++    public int getTotalValue(Limit limit) {
++        return totalValue[limit.ordinal()];
++    }
++
++    public int getTotalValue(int index) {
++        return totalValue[index];
++    }
++    /**
++     * Return the current max value (count or length) by the index of a property
++     * @param index the index of a property
++     * @return count of a property
++     */
++    public int getValueByIndex(int index) {
++        return values[index];
++    }
++
++    public void startEntity(String name) {
++        entityStart = name;
++    }
++
++    public boolean isTracking(String name) {
++        if (entityStart == null) {
++            return false;
++        }
++        return entityStart.equals(name);
++    }
++    /**
++     * Stop tracking the entity
++     * @param limit the limit property
++     * @param name the name of an entity
++     */
++    public void endEntity(Limit limit, String name) {
++        entityStart = "";
++        Map<String, Integer> cache = caches[limit.ordinal()];
++        if (cache != null) {
++            cache.remove(name);
++        }
++    }
++
++    public void debugPrint() {
++        Formatter formatter = new Formatter();
++        System.out.println(formatter.format("%30s %15s %15s %15s %30s",
++                "Property","Limit","Total size","Size","Entity Name"));
++
++        for (Limit limit : Limit.values()) {
++            formatter = new Formatter();
++            System.out.println(formatter.format("%30s %15d %15d %15d %30s",
++                    limit.name(),
++                    securityManager.getLimit(limit),
++                    totalValue[limit.ordinal()],
++                    values[limit.ordinal()],
++                    names[limit.ordinal()]));
++        }
++    }
++}
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java ./jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java	2013-12-14 21:11:06.000000000 -0500
+@@ -0,0 +1,555 @@
++/*
++ * 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.org.apache.xerces.internal.utils;
++
++import com.sun.org.apache.xerces.internal.impl.Constants;
++import com.sun.org.apache.xerces.internal.util.SecurityManager;
++
++/**
++ * This class manages standard and implementation-specific limitations.
++ *
++ */
++public final class XMLSecurityManager {
++
++    /**
++     * States of the settings of a property, in the order: default value, value
++     * set by FEATURE_SECURE_PROCESSING, jaxp.properties file, jaxp system
++     * properties, and jaxp api properties
++     */
++    public static enum State {
++        //this order reflects the overriding order
++
++        DEFAULT("default"), FSP("FEATURE_SECURE_PROCESSING"),
++        JAXPDOTPROPERTIES("jaxp.properties"), SYSTEMPROPERTY("system property"),
++        APIPROPERTY("property");
++
++        final String literal;
++        State(String literal) {
++            this.literal = literal;
++        }
++
++        String literal() {
++            return literal;
++        }
++    }
++
++    /**
++     * Limits managed by the security manager
++     */
++    public static enum Limit {
++
++        ENTITY_EXPANSION_LIMIT(Constants.JDK_ENTITY_EXPANSION_LIMIT, Constants.SP_ENTITY_EXPANSION_LIMIT, 0, 64000),
++        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),
++        PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000);
++
++        final String apiProperty;
++        final String systemProperty;
++        final int defaultValue;
++        final int secureValue;
++
++        Limit(String apiProperty, String systemProperty, int value, int secureValue) {
++            this.apiProperty = apiProperty;
++            this.systemProperty = systemProperty;
++            this.defaultValue = value;
++            this.secureValue = secureValue;
++        }
++
++        public boolean equalsAPIPropertyName(String propertyName) {
++            return (propertyName == null) ? false : apiProperty.equals(propertyName);
++        }
++
++        public boolean equalsSystemPropertyName(String propertyName) {
++            return (propertyName == null) ? false : systemProperty.equals(propertyName);
++        }
++
++        public String apiProperty() {
++            return apiProperty;
++        }
++
++        String systemProperty() {
++            return systemProperty;
++        }
++
++        int defaultValue() {
++            return defaultValue;
++        }
++
++        int secureValue() {
++            return secureValue;
++        }
++    }
++
++    /**
++     * Map old property names with the new ones
++     */
++    public static enum NameMap {
++
++        ENTITY_EXPANSION_LIMIT(Constants.SP_ENTITY_EXPANSION_LIMIT, Constants.ENTITY_EXPANSION_LIMIT),
++        MAX_OCCUR_NODE_LIMIT(Constants.SP_MAX_OCCUR_LIMIT, Constants.MAX_OCCUR_LIMIT),
++        ELEMENT_ATTRIBUTE_LIMIT(Constants.SP_ELEMENT_ATTRIBUTE_LIMIT, Constants.ELEMENT_ATTRIBUTE_LIMIT);
++        final String newName;
++        final String oldName;
++
++        NameMap(String newName, String oldName) {
++            this.newName = newName;
++            this.oldName = oldName;
++        }
++
++        String getOldName(String newName) {
++            if (newName.equals(this.newName)) {
++                return oldName;
++            }
++            return null;
++        }
++    }
++    private static final int NO_LIMIT = 0;
++    /**
++     * Values of the properties
++     */
++    private final int[] values;
++    /**
++     * States of the settings for each property
++     */
++    private State[] states;
++    /**
++     * Flag indicating if secure processing is set
++     */
++    boolean secureProcessing;
++
++    /**
++     * States that determine if properties are set explicitly
++     */
++    private boolean[] isSet;
++
++
++    private XMLLimitAnalyzer limitAnalyzer;
++    /**
++     * Index of the special entityCountInfo property
++     */
++    private int indexEntityCountInfo = 10000;
++    private String printEntityCountInfo = "";
++
++    /**
++     * Default constructor. Establishes default values for known security
++     * vulnerabilities.
++     */
++    public XMLSecurityManager() {
++        this(false);
++    }
++
++    /**
++     * Instantiate Security Manager in accordance with the status of
++     * secure processing
++     * @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];
++        this.secureProcessing = secureProcessing;
++        for (Limit limit : Limit.values()) {
++            if (secureProcessing) {
++                values[limit.ordinal()] = limit.secureValue;
++                states[limit.ordinal()] = State.FSP;
++            } else {
++                values[limit.ordinal()] = limit.defaultValue();
++                states[limit.ordinal()] = State.DEFAULT;
++            }
++        }
++        //read system properties or jaxp.properties
++        readSystemProperties();
++    }
++
++    /**
++     * Setting FEATURE_SECURE_PROCESSING explicitly
++     */
++    public void setSecureProcessing(boolean secure) {
++        secureProcessing = secure;
++        for (Limit limit : Limit.values()) {
++            if (secure) {
++                setLimit(limit.ordinal(), State.FSP, limit.secureValue());
++            } else {
++                setLimit(limit.ordinal(), State.FSP, limit.defaultValue());
++            }
++        }
++    }
++
++    /**
++     * Return the state of secure processing
++     * @return the state of secure processing
++     */
++    public boolean isSecureProcessing() {
++        return secureProcessing;
++    }
++
++
++    /**
++     * Set limit by property name and state
++     * @param propertyName property name
++     * @param state the state of the property
++     * @param value the value of the property
++     * @return true if the property is managed by the security manager; false
++     *              if otherwise.
++     */
++    public boolean setLimit(String propertyName, State state, Object value) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            setLimit(index, state, value);
++            return true;
++        }
++        return false;
++    }
++
++    /**
++     * Set the value for a specific limit.
++     *
++     * @param limit the limit
++     * @param state the state of the property
++     * @param value the value of the property
++     */
++    public void setLimit(Limit limit, State state, int value) {
++        setLimit(limit.ordinal(), state, value);
++    }
++
++    /**
++     * Set the value of a property by its index
++     *
++     * @param index the index of the property
++     * @param state the state of the property
++     * @param value the value of the property
++     */
++    public void setLimit(int index, State state, Object value) {
++        if (index == indexEntityCountInfo) {
++            printEntityCountInfo = (String)value;
++        } else {
++            int temp = 0;
++            try {
++                temp = Integer.parseInt((String) value);
++                if (temp < 0) {
++                    temp = 0;
++                }
++            } catch (NumberFormatException e) {}
++            setLimit(index, state, temp);
++        }
++    }
++
++    /**
++     * Set the value of a property by its index
++     *
++     * @param index the index of the property
++     * @param state the state of the property
++     * @param value the value of the property
++     */
++    public void setLimit(int index, State state, int value) {
++        if (index == indexEntityCountInfo) {
++            //if it's explicitly set, it's treated as yes no matter the value
++            printEntityCountInfo = Constants.JDK_YES;
++        } else {
++            //only update if it shall override
++            if (state.compareTo(states[index]) >= 0) {
++                values[index] = value;
++                states[index] = state;
++                isSet[index] = true;
++            }
++        }
++    }
++
++    /**
++     * Return the value of the specified property
++     *
++     * @param propertyName the property name
++     * @return the value of the property as a string. If a property is managed
++     * by this manager, its value shall not be null.
++     */
++    public String getLimitAsString(String propertyName) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            return getLimitValueByIndex(index);
++        }
++
++        return null;
++    }
++    /**
++     * Return the value of the specified property
++     *
++     * @param limit the property
++     * @return the value of the property
++     */
++    public int getLimit(Limit limit) {
++        return values[limit.ordinal()];
++    }
++
++    /**
++     * Return the value of a property by its ordinal
++     *
++     * @param limit the property
++     * @return value of a property
++     */
++    public String getLimitValueAsString(Limit limit) {
++        return Integer.toString(values[limit.ordinal()]);
++    }
++
++    /**
++     * Return the value of a property by its ordinal
++     *
++     * @param index the index of a property
++     * @return limit of a property as a string
++     */
++    public String getLimitValueByIndex(int index) {
++        if (index == indexEntityCountInfo) {
++            return printEntityCountInfo;
++        }
++
++        return Integer.toString(values[index]);
++    }
++
++    /**
++     * Return the state of the limit property
++     *
++     * @param limit the limit
++     * @return the state of the limit property
++     */
++    public State getState(Limit limit) {
++        return states[limit.ordinal()];
++    }
++
++    /**
++     * Return the state of the limit property
++     *
++     * @param limit the limit
++     * @return the state of the limit property
++     */
++    public String getStateLiteral(Limit limit) {
++        return states[limit.ordinal()].literal();
++    }
++
++    /**
++     * Get the index by property name
++     *
++     * @param propertyName property name
++     * @return the index of the property if found; return -1 if not
++     */
++    public int getIndex(String propertyName) {
++        for (Limit limit : Limit.values()) {
++            if (limit.equalsAPIPropertyName(propertyName)) {
++                //internally, ordinal is used as index
++                return limit.ordinal();
++            }
++        }
++        //special property to return entity count info
++        if (propertyName.equals(Constants.JDK_ENTITY_COUNT_INFO)) {
++            return indexEntityCountInfo;
++        }
++        return -1;
++    }
++
++    /**
++     * Check if there's no limit defined by the Security Manager
++     * @param limit
++     * @return
++     */
++    public boolean isNoLimit(int limit) {
++        return limit==NO_LIMIT;
++    }
++    /**
++     * Check if the size (length or count) of the specified limit property is
++     * over the limit
++     *
++     * @param limit the type of the limit property
++     * @param entityName the name of the entity
++     * @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);
++    }
++
++    /**
++     * Check if the value (length or count) of the specified limit property is
++     * over the limit
++     *
++     * @param index the index of the limit property
++     * @param entityName the name of the entity
++     * @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) {
++        if (values[index] == NO_LIMIT) {
++            return false;
++        }
++        if (size > values[index]) {
++            limitAnalyzer.addValue(index, entityName, size);
++            return true;
++        }
++        return false;
++    }
++
++    /**
++     * Check against cumulated value
++     *
++     * @param limit the type of the limit property
++     * @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(int index) {
++        if (values[index] == NO_LIMIT) {
++            return false;
++        }
++
++        if (index==Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() ||
++                index==Limit.ENTITY_EXPANSION_LIMIT.ordinal() ||
++                index==Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal()) {
++            return (limitAnalyzer.getTotalValue(index) > values[index]);
++        } else {
++            return (limitAnalyzer.getValue(index) > values[index]);
++        }
++    }
++
++    public void debugPrint() {
++        if (printEntityCountInfo.equals(Constants.JDK_YES)) {
++            limitAnalyzer.debugPrint();
++        }
++    }
++
++    /**
++     * 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
++     * @param index
++     * @return
++     */
++    public boolean isSet(int index) {
++        return isSet[index];
++    }
++
++    public boolean printEntityCountInfo() {
++        return printEntityCountInfo.equals(Constants.JDK_YES);
++    }
++
++    /**
++     * Read from system properties, or those in jaxp.properties
++     */
++    private void readSystemProperties() {
++
++        for (Limit limit : Limit.values()) {
++            if (!getSystemProperty(limit, limit.systemProperty())) {
++                //if system property is not found, try the older form if any
++                for (NameMap nameMap : NameMap.values()) {
++                    String oldName = nameMap.getOldName(limit.systemProperty());
++                    if (oldName != null) {
++                        getSystemProperty(limit, oldName);
++                    }
++                }
++            }
++        }
++
++    }
++
++    /**
++     * Read from system properties, or those in jaxp.properties
++     *
++     * @param property the type of the property
++     * @param sysPropertyName the name of system property
++     */
++    private boolean getSystemProperty(Limit limit, String sysPropertyName) {
++        try {
++            String value = SecuritySupport.getSystemProperty(sysPropertyName);
++            if (value != null && !value.equals("")) {
++                values[limit.ordinal()] = Integer.parseInt(value);
++                states[limit.ordinal()] = State.SYSTEMPROPERTY;
++                return true;
++            }
++
++            value = SecuritySupport.readJAXPProperty(sysPropertyName);
++            if (value != null && !value.equals("")) {
++                values[limit.ordinal()] = Integer.parseInt(value);
++                states[limit.ordinal()] = State.JAXPDOTPROPERTIES;
++                return true;
++            }
++        } catch (NumberFormatException e) {
++            //invalid setting
++            throw new NumberFormatException("Invalid setting for system property: " + limit.systemProperty());
++        }
++        return false;
++    }
++
++
++    /**
++     * Convert a value set through setProperty to XMLSecurityManager.
++     * If the value is an instance of XMLSecurityManager, use it to override the default;
++     * If the value is an old SecurityManager, convert to the new XMLSecurityManager.
++     *
++     * @param value user specified security manager
++     * @param securityManager an instance of XMLSecurityManager
++     * @return an instance of the new security manager XMLSecurityManager
++     */
++    static public XMLSecurityManager convert(Object value, XMLSecurityManager securityManager) {
++        if (value == null) {
++            if (securityManager == null) {
++                securityManager = new XMLSecurityManager(true);
++            }
++            return securityManager;
++        }
++        if (XMLSecurityManager.class.isAssignableFrom(value.getClass())) {
++            return (XMLSecurityManager)value;
++        } else {
++            if (securityManager == null) {
++                securityManager = new XMLSecurityManager(true);
++            }
++            if (SecurityManager.class.isAssignableFrom(value.getClass())) {
++                SecurityManager origSM = (SecurityManager)value;
++                securityManager.setLimit(Limit.MAX_OCCUR_NODE_LIMIT, State.APIPROPERTY, origSM.getMaxOccurNodeLimit());
++                securityManager.setLimit(Limit.ENTITY_EXPANSION_LIMIT, State.APIPROPERTY, origSM.getEntityExpansionLimit());
++                securityManager.setLimit(Limit.ELEMENT_ATTRIBUTE_LIMIT, State.APIPROPERTY, origSM.getElementAttrLimit());
++            }
++            return securityManager;
++        }
++    }
++}
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager.java ./jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager.java	2013-12-14 21:11:06.000000000 -0500
+@@ -91,6 +91,24 @@
+         readSystemProperties();
+     }
+ 
++
++    /**
++     * Set limit by property name and state
++     * @param propertyName property name
++     * @param state the state of the property
++     * @param value the value of the property
++     * @return true if the property is managed by the security property manager;
++     *         false if otherwise.
++     */
++    public boolean setValue(String propertyName, State state, Object value) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            setValue(index, state, (String)value);
++            return true;
++        }
++        return false;
++    }
++
+     /**
+      * Set the value for a specific property.
+      *
+@@ -119,6 +137,23 @@
+             states[index] = state;
+         }
+     }
++
++
++    /**
++     * Return the value of the specified property
++     *
++     * @param propertyName the property name
++     * @return the value of the property as a string
++     */
++    public String getValue(String propertyName) {
++        int index = getIndex(propertyName);
++        if (index > -1) {
++            return getValueByIndex(index);
++        }
++
++        return null;
++    }
++
+     /**
+      * Return the value of the specified property
+      *
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java ./jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java	2013-09-06 14:23:00.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java	2013-12-14 21:11:06.000000000 -0500
+@@ -37,7 +37,6 @@
+ import com.sun.org.apache.xerces.internal.util.HTTPInputSource;
+ import com.sun.org.apache.xerces.internal.util.IntStack;
+ import com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings;
+-import com.sun.org.apache.xerces.internal.util.SecurityManager;
+ import com.sun.org.apache.xerces.internal.util.SymbolTable;
+ import com.sun.org.apache.xerces.internal.util.URI;
+ import com.sun.org.apache.xerces.internal.util.XMLAttributesImpl;
+@@ -45,6 +44,7 @@
+ import com.sun.org.apache.xerces.internal.util.XMLChar;
+ import com.sun.org.apache.xerces.internal.util.XMLSymbols;
+ import com.sun.org.apache.xerces.internal.util.URI.MalformedURIException;
++import com.sun.org.apache.xerces.internal.utils.XMLSecurityManager;
+ import com.sun.org.apache.xerces.internal.xni.Augmentations;
+ import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
+ import com.sun.org.apache.xerces.internal.xni.QName;
+@@ -289,7 +289,7 @@
+     protected SymbolTable fSymbolTable;
+     protected XMLErrorReporter fErrorReporter;
+     protected XMLEntityResolver fEntityResolver;
+-    protected SecurityManager fSecurityManager;
++    protected XMLSecurityManager fSecurityManager;
+     protected XMLSecurityPropertyManager fSecurityPropertyMgr;
+ 
+     // these are needed for text include processing
+@@ -517,8 +517,8 @@
+ 
+         // Get security manager.
+         try {
+-            SecurityManager value =
+-                (SecurityManager)componentManager.getProperty(
++            XMLSecurityManager value =
++                (XMLSecurityManager)componentManager.getProperty(
+                     SECURITY_MANAGER);
+ 
+             if (value != null) {
+@@ -674,7 +674,7 @@
+             return;
+         }
+         if (propertyId.equals(SECURITY_MANAGER)) {
+-            fSecurityManager = (SecurityManager)value;
++            fSecurityManager = (XMLSecurityManager)value;
+             if (fChildConfig != null) {
+                 fChildConfig.setProperty(propertyId, value);
+             }
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java ./jaxp/src/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java
+--- /tmp/openjdk/jaxp/src/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java	2013-09-06 14:23:03.000000000 -0400
++++ ./jaxp/src/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java	2013-12-14 21:11:06.000000000 -0500
+@@ -25,12 +25,15 @@
+ import com.sun.org.apache.xalan.internal.XalanConstants;
+ import com.sun.org.apache.xalan.internal.utils.FactoryImpl;
+ import com.sun.org.apache.xalan.internal.utils.SecuritySupport;
++import com.sun.org.apache.xalan.internal.utils.XMLSecurityManager;
+ import java.util.HashMap;
++
+ import javax.xml.XMLConstants;
+ import javax.xml.parsers.FactoryConfigurationError;
+ import javax.xml.parsers.ParserConfigurationException;
+ import javax.xml.parsers.SAXParserFactory;
+ import org.xml.sax.SAXException;
++import org.xml.sax.SAXNotRecognizedException;
+ import org.xml.sax.XMLReader;
+ import org.xml.sax.helpers.XMLReaderFactory;
+ 
+@@ -63,11 +66,15 @@
+     private HashMap m_inUse;
+ 
+     private boolean m_useServicesMechanism = true;
++
++    private boolean _secureProcessing;
+      /**
+      * protocols allowed for external DTD references in source file and/or stylesheet.
+      */
+     private String _accessExternalDTD = XalanConstants.EXTERNAL_ACCESS_DEFAULT;
+ 
++    private XMLSecurityManager _xmlSecurityManager;
++
+     /**
+      * Hidden constructor
+      */
+@@ -118,7 +125,12 @@
+                     // TransformerFactory creates a reader via the
+                     // XMLReaderFactory if setXMLReader is not used
+                     reader = XMLReaderFactory.createXMLReader();
+-
++                    try {
++                        reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, _secureProcessing);
++                    } catch (SAXNotRecognizedException e) {
++                        System.err.println("Warning:  " + reader.getClass().getName() + ": "
++                                + e.getMessage());
++                    }
+                 } catch (Exception e) {
+                    try {
+                         // If unable to create an instance, let's try to use
+@@ -164,6 +176,21 @@
+                         + se.getMessage());
+         }
+ 
++        try {
++            if (_xmlSecurityManager != null) {
++                for (XMLSecurityManager.Limit limit : XMLSecurityManager.Limit.values()) {
++                    reader.setProperty(limit.apiProperty(),
++                            _xmlSecurityManager.getLimitValueAsString(limit));
++                }
++                if (_xmlSecurityManager.printEntityCountInfo()) {
++                    reader.setProperty(XalanConstants.JDK_ENTITY_COUNT_INFO, XalanConstants.JDK_YES);
++                }
++            }
++        } catch (SAXException se) {
++            System.err.println("Warning:  " + reader.getClass().getName() + ": "
++                        + se.getMessage());
++        }
++
+         return reader;
+     }
+ 
+@@ -195,11 +222,22 @@
+     }
+ 
+     /**
++     * Set feature
++     */
++    public void setFeature(String name, boolean value) {
++        if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
++            _secureProcessing = value;
++        }
++    }
++
++    /**
+      * Get property value
+      */
+-    public String getProperty(String name) {
++    public Object getProperty(String name) {
+         if (name.equals(XMLConstants.ACCESS_EXTERNAL_DTD)) {
+             return _accessExternalDTD;
++        } else if (name.equals(XalanConstants.SECURITY_MANAGER)) {
++            return _xmlSecurityManager;
+         }
+         return null;
+     }
+@@ -207,9 +245,11 @@
+     /**
+      * Set property.
+      */
+-    public void setProperty(String name, String value) {
++    public void setProperty(String name, Object value) {
+         if (name.equals(XMLConstants.ACCESS_EXTERNAL_DTD)) {
+             _accessExternalDTD = (String)value;
++        } else if (name.equals(XalanConstants.SECURITY_MANAGER)) {
++            _xmlSecurityManager = (XMLSecurityManager)value;
+         }
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/javax/xml/stream/FactoryFinder.java ./jaxp/src/javax/xml/stream/FactoryFinder.java
+--- /tmp/openjdk/jaxp/src/javax/xml/stream/FactoryFinder.java	2013-09-06 14:23:04.000000000 -0400
++++ ./jaxp/src/javax/xml/stream/FactoryFinder.java	2013-12-14 21:11:06.000000000 -0500
+@@ -204,13 +204,15 @@
+      *                              a property name
+      * @param fallbackClassName     Implementation class name, if nothing else
+      *                              is found.  Use null to mean no fallback.
++     * @param standardId            Indicate whether the factoryId is standard
++     *                              or user specified.
+      *
+      * Package private so this code can be shared.
+      */
+-    static Object find(String factoryId, String fallbackClassName)
++    static Object find(String factoryId, String fallbackClassName, boolean standardId)
+         throws ConfigurationError
+     {
+-        return find(factoryId, null, fallbackClassName);
++        return find(factoryId, null, fallbackClassName, standardId);
+     }
+ 
+     /**
+@@ -227,23 +229,34 @@
+      * @param fallbackClassName     Implementation class name, if nothing else
+      *                              is found.  Use null to mean no fallback.
+      *
++     * @param standardId            Indicate whether the factoryId is standard
++     *                              or user specified.
++     *
+      * Package private so this code can be shared.
+      */
+-    static Object find(String factoryId, ClassLoader cl, String fallbackClassName)
++    static Object find(String factoryId, ClassLoader cl, String fallbackClassName,
++            boolean standardId)
+         throws ConfigurationError
+     {
+         dPrint("find factoryId =" + factoryId);
+ 
+         // Use the system property first
+         try {
+-            String systemProp = ss.getSystemProperty(factoryId);
++            String systemProp;
++            if (standardId) {
++                systemProp = ss.getSystemProperty(factoryId);
++            } else {
++                systemProp = System.getProperty(factoryId);
++            }
++
+             if (systemProp != null) {
+                 dPrint("found system property, value=" + systemProp);
+                 return newInstance(systemProp, null, true);
+             }
+         }
+         catch (SecurityException se) {
+-            if (debug) se.printStackTrace();
++            throw new ConfigurationError(
++                "Failed to read factoryId '" + factoryId + "'", se);
+         }
+ 
+         // Try read $java.home/lib/stax.properties followed by
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/javax/xml/stream/XMLEventFactory.java ./jaxp/src/javax/xml/stream/XMLEventFactory.java
+--- /tmp/openjdk/jaxp/src/javax/xml/stream/XMLEventFactory.java	2013-09-06 14:23:04.000000000 -0400
++++ ./jaxp/src/javax/xml/stream/XMLEventFactory.java	2013-12-14 21:11:06.000000000 -0500
+@@ -60,9 +60,7 @@
+   public static XMLEventFactory newInstance()
+     throws FactoryConfigurationError
+   {
+-    return (XMLEventFactory) FactoryFinder.find(
+-      JAXPFACTORYID,
+-      DEFAULIMPL);
++    return (XMLEventFactory) FactoryFinder.find(JAXPFACTORYID, DEFAULIMPL, true);
+   }
+ 
+   /**
+@@ -93,9 +91,7 @@
+   public static XMLEventFactory newFactory()
+     throws FactoryConfigurationError
+   {
+-    return (XMLEventFactory) FactoryFinder.find(
+-      JAXPFACTORYID,
+-      DEFAULIMPL);
++    return (XMLEventFactory) FactoryFinder.find(JAXPFACTORYID, DEFAULIMPL, true);
+   }
+ 
+   /**
+@@ -118,7 +114,8 @@
+           throws FactoryConfigurationError {
+       try {
+           //do not fallback if given classloader can't find the class, throw exception
+-          return (XMLEventFactory) FactoryFinder.find(factoryId, classLoader, null);
++            return (XMLEventFactory) FactoryFinder.find(factoryId, classLoader,
++                    null, factoryId.equals(JAXPFACTORYID) ? true : false);
+       } catch (FactoryFinder.ConfigurationError e) {
+           throw new FactoryConfigurationError(e.getException(),
+                   e.getMessage());
+@@ -145,7 +142,8 @@
+           throws FactoryConfigurationError {
+       try {
+           //do not fallback if given classloader can't find the class, throw exception
+-          return (XMLEventFactory) FactoryFinder.find(factoryId, classLoader, null);
++            return (XMLEventFactory) FactoryFinder.find(factoryId, classLoader,
++                    null, factoryId.equals(JAXPFACTORYID) ? true : false);
+       } catch (FactoryFinder.ConfigurationError e) {
+           throw new FactoryConfigurationError(e.getException(),
+                   e.getMessage());
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/javax/xml/stream/XMLInputFactory.java ./jaxp/src/javax/xml/stream/XMLInputFactory.java
+--- /tmp/openjdk/jaxp/src/javax/xml/stream/XMLInputFactory.java	2013-09-06 14:23:04.000000000 -0400
++++ ./jaxp/src/javax/xml/stream/XMLInputFactory.java	2013-12-14 21:11:06.000000000 -0500
+@@ -139,6 +139,7 @@
+   public static final String ALLOCATOR=
+     "javax.xml.stream.allocator";
+ 
++  static final String JAXPFACTORYID = "javax.xml.stream.XMLInputFactory";
+   static final String DEFAULIMPL = "com.sun.xml.internal.stream.XMLInputFactoryImpl";
+ 
+   protected XMLInputFactory(){}
+@@ -150,9 +151,7 @@
+   public static XMLInputFactory newInstance()
+     throws FactoryConfigurationError
+   {
+-    return (XMLInputFactory) FactoryFinder.find(
+-      "javax.xml.stream.XMLInputFactory",
+-      DEFAULIMPL);
++    return (XMLInputFactory) FactoryFinder.find(JAXPFACTORYID, DEFAULIMPL, true);
+   }
+ 
+   /**
+@@ -183,9 +182,7 @@
+   public static XMLInputFactory newFactory()
+     throws FactoryConfigurationError
+   {
+-    return (XMLInputFactory) FactoryFinder.find(
+-      "javax.xml.stream.XMLInputFactory",
+-      DEFAULIMPL);
++    return (XMLInputFactory) FactoryFinder.find(JAXPFACTORYID, DEFAULIMPL, true);
+   }
+ 
+   /**
+@@ -208,7 +205,8 @@
+           throws FactoryConfigurationError {
+       try {
+           //do not fallback if given classloader can't find the class, throw exception
+-          return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader, null);
++          return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader,
++                  null, factoryId.equals(JAXPFACTORYID) ? true : false);
+       } catch (FactoryFinder.ConfigurationError e) {
+           throw new FactoryConfigurationError(e.getException(),
+                   e.getMessage());
+@@ -235,7 +233,8 @@
+           throws FactoryConfigurationError {
+       try {
+           //do not fallback if given classloader can't find the class, throw exception
+-          return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader, null);
++          return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader,
++                  null, factoryId.equals(JAXPFACTORYID) ? true : false);
+       } catch (FactoryFinder.ConfigurationError e) {
+           throw new FactoryConfigurationError(e.getException(),
+                   e.getMessage());
+diff -ruN -x .hg /tmp/openjdk/jaxp/src/javax/xml/stream/XMLOutputFactory.java ./jaxp/src/javax/xml/stream/XMLOutputFactory.java
+--- /tmp/openjdk/jaxp/src/javax/xml/stream/XMLOutputFactory.java	2013-09-06 14:23:04.000000000 -0400
++++ ./jaxp/src/javax/xml/stream/XMLOutputFactory.java	2013-12-14 21:11:06.000000000 -0500
+@@ -115,6 +115,7 @@
+   public static final String IS_REPAIRING_NAMESPACES=
+     "javax.xml.stream.isRepairingNamespaces";
+ 
++  static final String JAXPFACTORYID = "javax.xml.stream.XMLOutputFactory";
+   static final String DEFAULIMPL = "com.sun.xml.internal.stream.XMLOutputFactoryImpl";
+ 
+   protected XMLOutputFactory(){}
+@@ -126,8 +127,7 @@
+   public static XMLOutputFactory newInstance()
+     throws FactoryConfigurationError
+   {
+-    return (XMLOutputFactory) FactoryFinder.find("javax.xml.stream.XMLOutputFactory",
+-                                                 DEFAULIMPL);
++    return (XMLOutputFactory) FactoryFinder.find(JAXPFACTORYID, DEFAULIMPL, true);
+   }
+ 
+   /**
+@@ -158,8 +158,7 @@
+   public static XMLOutputFactory newFactory()
+     throws FactoryConfigurationError
+   {
+-    return (XMLOutputFactory) FactoryFinder.find("javax.xml.stream.XMLOutputFactory",
+-                                                 DEFAULIMPL);
++    return (XMLOutputFactory) FactoryFinder.find(JAXPFACTORYID, DEFAULIMPL, true);
+   }
+ 
+   /**
+@@ -181,7 +180,8 @@
+           throws FactoryConfigurationError {
+       try {
+           //do not fallback if given classloader can't find the class, throw exception
+-          return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader, null);
++          return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader,
++                  null, factoryId.equals(JAXPFACTORYID) ? true : false);
+       } catch (FactoryFinder.ConfigurationError e) {
+           throw new FactoryConfigurationError(e.getException(),
+                   e.getMessage());
+@@ -210,7 +210,8 @@
+           throws FactoryConfigurationError {
+       try {
+           //do not fallback if given classloader can't find the class, throw exception
+-          return (XMLOutputFactory) FactoryFinder.find(factoryId, classLoader, null);
++          return (XMLOutputFactory) FactoryFinder.find(factoryId, classLoader,
++                  null, factoryId.equals(JAXPFACTORYID) ? true : false);
+       } catch (FactoryFinder.ConfigurationError e) {
+           throw new FactoryConfigurationError(e.getException(),
+                   e.getMessage());
+diff -ruN -x .hg /tmp/openjdk/jaxws/.hgtags ./jaxws/.hgtags
+--- /tmp/openjdk/jaxws/.hgtags	2013-09-06 14:23:51.000000000 -0400
++++ ./jaxws/.hgtags	2013-12-14 21:31:53.000000000 -0500
+@@ -302,6 +302,22 @@
+ 0cd0d4e7331f7fc9f9ee77f2275113571bcf67cf jdk7u25-b09
+ 105cdfd4f40837917d0065e3e58052d2854df7da jdk7u25-b10
+ 6de7fec036abf91ce962c74f11a6266491df3fd8 jdk7u25-b11
++a367ebf0c21512867f4ab5cdd206dd8c7817c004 jdk7u14-b16
++74c34f35912d8d7145b3ff34fefea2d2f189f2b4 jdk7u14-b17
++c93a35b3638f45de91013d65543217a002577684 jdk7u14-b18
++82be38857de3b2f6d8def98034f3e7b0827fd9f0 jdk7u14-b19
++82be38857de3b2f6d8def98034f3e7b0827fd9f0 jdk7u14-b19
++d63b21e6c3d29305400dbfc1500090cab89f25d1 jdk7u14-b19
++dd695ad6c5ec797fe61db31600a3fd2dbc62247b jdk7u14-b20
++97bbac299eb801709a924fe777b3ee9c96829d8b jdk7u14-b21
++6e74b3e1773cfbac99998431a5a54c70baaf1dc5 jdk7u14-b22
++e9bbdf789d2b512550e0ca80629980e96f02146d jdk7u40-b23
++adaf9cf486fab1b14c5af9fc6525565760bb9c11 jdk7u40-b24
++aafab1efbd4ced5e05695aa1887813f9f5de9d5c jdk7u40-b25
++6581f9739031120bb7515d3b09fa3501653d11af jdk7u40-b26
++46ebac943288218b14d7ce3df23aa42a70fa4cf9 jdk7u40-b27
++016957700ac905ebf3432ae8ba17d3576a51e585 jdk7u40-b28
++15a82c84d9f7f6c99310380d4766fc68a3882671 jdk7u40-b29
+ 4c5d242efa0d6e0cdb688e41e722bff671dfbfec jdk7u25-b12
+ 6b4a165221304d809f678a18f51c7a8cb042d60b jdk7u25-b13
+ 03073e4e6d3f600102d31e862154f56730838b11 jdk7u25-b14
+@@ -343,3 +359,20 @@
+ 89f6c9663d75d9e4b672aed16f885b84232e9c93 jdk7u40-b42
+ 3ee85b3793de16855e20272336a3565af8477b6b jdk7u40-b43
+ cbeef786ce489096c39ec5effee4f8f9e770b4af jdk7u40-b60
++000becfcb945d8592cfdef6ef1704b532af56762 jdk7u45-b01
++817632baca26f7566e36c7708455494c15113d88 jdk7u45-b02
++f65baba9400aec6cb29bc06b3139623bb4663225 jdk7u45-b03
++80ff2468f520ed1940915815ceb85e05bd2bc568 jdk7u45-b04
++1128d3934b643660a219532aa1ca554877d89375 jdk7u45-b05
++8da3d41d946925a07a9f1001795959bfdb4c02c6 jdk7u45-b06
++38f5b376c38035f13ede456f158ee26d0cf8d99c jdk7u45-b07
++86f3efd1edae3c0f47ad14bef992e7566eaa94d4 jdk7u45-b08
++ab835f7247e40dd7fb457830eaa31c550b434413 jdk7u45-b09
++bbd594e6cf45ebfc37c71e217772b7f37a9c5750 jdk7u45-b10
++c01eab96821e3c0315c4637e61a8015cbfe63b6a jdk7u45-b11
++05f1274a8aa019584b4ceb05c73fc89bf7b7f4de jdk7u45-b12
++3271849829b7c8ac32f6bb17b763d8a85a1a0a32 jdk7u45-b13
++842dd63be9c633b8448e1837a5bb7b803dfdaad9 jdk7u45-b14
++93a3fb090be58a5a45464f866a7093f24205dae2 jdk7u45-b15
++5524cced32d3959d95ed414add230273bc10c38d jdk7u45-b16
++a8baf22b5972e269a97f7b3b7eec2ad63a8c5aed jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/InstanceResolver.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/InstanceResolver.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/InstanceResolver.java	2013-09-06 14:24:04.000000000 -0400
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/InstanceResolver.java	2013-12-14 21:11:13.000000000 -0500
+@@ -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
+@@ -232,7 +232,7 @@
+             public Object invoke(Packet p, Method m, Object... args) throws InvocationTargetException, IllegalAccessException {
+                 T t = resolve(p);
+                 try {
+-                    return m.invoke(t, args );
++                    return MethodUtil.invoke(t, m, args );
+                 } finally {
+                     postInvoke(p,t);
+                 }
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/MethodUtil.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/MethodUtil.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/MethodUtil.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/MethodUtil.java	2013-12-14 21:11:13.000000000 -0500
+@@ -0,0 +1,94 @@
++/*
++ * 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.api.server;
++
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.util.logging.Level;
++import java.util.logging.Logger;
++
++/**
++ * Utility class to invoke sun.reflect.misc.MethodUtil.invoke() if available. If not (other then Oracle JDK) fallbacks
++ * to java.lang,reflect.Method.invoke()
++ *
++ * Be careful, copy of this class exists in several packages, iny modification must be done to other copies too!
++ */
++class MethodUtil {
++
++    private static final Logger LOGGER = Logger.getLogger(MethodUtil.class.getName());
++    private static final Method INVOKE_METHOD;
++
++    static {
++        Method method;
++        try {
++            Class<?> clazz = Class.forName("sun.reflect.misc.MethodUtil");
++            method = clazz.getMethod("invoke", Method.class, Object.class, Object[].class);
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil found; it will be used to invoke methods.");
++            }
++        } catch (Throwable t) {
++            method = null;
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil not found, probably non-Oracle JVM");
++            }
++        }
++        INVOKE_METHOD = method;
++    }
++
++    static Object invoke(Object target, Method method, Object[] args) throws IllegalAccessException, InvocationTargetException {
++        if (INVOKE_METHOD != null) {
++            // sun.reflect.misc.MethodUtil.invoke(method, owner, args)
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method using sun.reflect.misc.MethodUtil");
++            }
++            try {
++                return INVOKE_METHOD.invoke(null, method, target, args);
++            } catch (InvocationTargetException ite) {
++                // unwrap invocation exception added by reflection code ...
++                throw unwrapException(ite);
++            }
++        } else {
++            // other then Oracle JDK ...
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method directly, probably non-Oracle JVM");
++            }
++            return method.invoke(target, args);
++        }
++    }
++
++    private static InvocationTargetException unwrapException(InvocationTargetException ite) {
++        Throwable targetException = ite.getTargetException();
++        if (targetException != null && targetException instanceof InvocationTargetException) {
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Unwrapping invocation target exception");
++            }
++            return (InvocationTargetException) targetException;
++        } else {
++            return ite;
++        }
++    }
++
++}
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/MethodUtil.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/MethodUtil.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/MethodUtil.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/MethodUtil.java	2013-12-14 21:11:14.000000000 -0500
+@@ -0,0 +1,94 @@
++/*
++ * 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.client.sei;
++
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.util.logging.Level;
++import java.util.logging.Logger;
++
++/**
++ * Utility class to invoke sun.reflect.misc.MethodUtil.invoke() if available. If not (other then Oracle JDK) fallbacks
++ * to java.lang,reflect.Method.invoke()
++ * <p/>
++ * Be careful, copy of this class exists in several packages, iny modification must be done to other copies too!
++ */
++class MethodUtil {
++
++    private static final Logger LOGGER = Logger.getLogger(MethodUtil.class.getName());
++    private static final Method INVOKE_METHOD;
++
++    static {
++        Method method;
++        try {
++            Class<?> clazz = Class.forName("sun.reflect.misc.MethodUtil");
++            method = clazz.getMethod("invoke", Method.class, Object.class, Object[].class);
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil found; it will be used to invoke methods.");
++            }
++        } catch (Throwable t) {
++            method = null;
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil not found, probably non-Oracle JVM");
++            }
++        }
++        INVOKE_METHOD = method;
++    }
++
++    static Object invoke(Object target, Method method, Object[] args) throws IllegalAccessException, InvocationTargetException {
++        if (INVOKE_METHOD != null) {
++            // sun.reflect.misc.MethodUtil.invoke(method, owner, args)
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method using sun.reflect.misc.MethodUtil");
++            }
++            try {
++                return INVOKE_METHOD.invoke(null, method, target, args);
++            } catch (InvocationTargetException ite) {
++                // unwrap invocation exception added by reflection code ...
++                throw unwrapException(ite);
++            }
++        } else {
++            // other then Oracle JDK ...
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method directly, probably non-Oracle JVM");
++            }
++            return method.invoke(target, args);
++        }
++    }
++
++    private static InvocationTargetException unwrapException(InvocationTargetException ite) {
++        Throwable targetException = ite.getTargetException();
++        if (targetException != null && targetException instanceof InvocationTargetException) {
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Unwrapping invocation target exception");
++            }
++            return (InvocationTargetException) targetException;
++        } else {
++            return ite;
++        }
++    }
++
++}
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java	2013-09-06 14:24:05.000000000 -0400
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java	2013-12-14 21:11:14.000000000 -0500
+@@ -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
+@@ -28,17 +28,20 @@
+ import com.sun.istack.internal.NotNull;
+ import com.sun.istack.internal.Nullable;
+ import com.sun.xml.internal.ws.api.SOAPVersion;
+-import com.sun.xml.internal.ws.api.client.WSPortInfo;
+ import com.sun.xml.internal.ws.api.addressing.WSEndpointReference;
++import com.sun.xml.internal.ws.api.client.WSPortInfo;
+ import com.sun.xml.internal.ws.api.message.Header;
+ import com.sun.xml.internal.ws.api.message.Headers;
+ import com.sun.xml.internal.ws.api.message.Packet;
+ import com.sun.xml.internal.ws.api.model.MEP;
+ import com.sun.xml.internal.ws.api.model.wsdl.WSDLBoundOperation;
+-import com.sun.xml.internal.ws.api.pipe.Tube;
+ import com.sun.xml.internal.ws.api.pipe.Fiber;
++import com.sun.xml.internal.ws.api.pipe.Tube;
+ import com.sun.xml.internal.ws.binding.BindingImpl;
+-import com.sun.xml.internal.ws.client.*;
++import com.sun.xml.internal.ws.client.RequestContext;
++import com.sun.xml.internal.ws.client.ResponseContextReceiver;
++import com.sun.xml.internal.ws.client.Stub;
++import com.sun.xml.internal.ws.client.WSServiceDelegate;
+ import com.sun.xml.internal.ws.model.JavaMethodImpl;
+ import com.sun.xml.internal.ws.model.SOAPSEIModel;
+ import com.sun.xml.internal.ws.wsdl.OperationDispatcher;
+@@ -47,6 +50,8 @@
+ import java.lang.reflect.InvocationHandler;
+ import java.lang.reflect.InvocationTargetException;
+ import java.lang.reflect.Method;
++import java.lang.reflect.Modifier;
++import java.lang.reflect.Proxy;
+ import java.util.HashMap;
+ import java.util.Map;
+ 
+@@ -124,13 +129,14 @@
+     private final Map<Method, MethodHandler> methodHandlers = new HashMap<Method, MethodHandler>();
+ 
+     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
++        validateInputs(proxy, method);
+         MethodHandler handler = methodHandlers.get(method);
+         if (handler != null) {
+             return handler.invoke(proxy, args);
+         } else {
+             // we handle the other method invocations by ourselves
+             try {
+-                return method.invoke(this, args);
++                return MethodUtil.invoke(this, method, args);
+             } catch (IllegalAccessException e) {
+                 // impossible
+                 throw new AssertionError(e);
+@@ -142,6 +148,17 @@
+         }
+     }
+ 
++    private void validateInputs(Object proxy, Method method) {
++        if (proxy == null || !Proxy.isProxyClass(proxy.getClass())) {
++            throw new IllegalStateException("Passed object is not proxy!");
++        }
++        Class<?> declaringClass = method.getDeclaringClass();
++        if (method == null || declaringClass == null
++                || Modifier.isStatic(method.getModifiers())) {
++            throw new IllegalStateException("Invoking static method is not allowed!");
++        }
++    }
++
+     public final Packet doProcess(Packet request, RequestContext rc, ResponseContextReceiver receiver) {
+         return super.process(request, rc, receiver);
+     }
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/MethodUtil.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/MethodUtil.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/MethodUtil.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/MethodUtil.java	2013-12-14 21:11:13.000000000 -0500
+@@ -0,0 +1,92 @@
++/*
++ * 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.policy.privateutil;
++
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.util.logging.Level;
++import java.util.logging.Logger;
++
++/**
++ * Utility class to invoke sun.reflect.misc.MethodUtil.invoke() if available. If not (other then Oracle JDK) fallbacks
++ * to java.lang,reflect.Method.invoke()
++ */
++class MethodUtil {
++
++    private static final Logger LOGGER = Logger.getLogger(MethodUtil.class.getName());
++    private static final Method INVOKE_METHOD;
++
++    static {
++        Method method;
++        try {
++            Class<?> clazz = Class.forName("sun.reflect.misc.MethodUtil");
++            method = clazz.getMethod("invoke", Method.class, Object.class, Object[].class);
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil found; it will be used to invoke methods.");
++            }
++        } catch (Throwable t) {
++            method = null;
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil not found, probably non-Oracle JVM");
++            }
++        }
++        INVOKE_METHOD = method;
++    }
++
++    static Object invoke(Object target, Method method, Object[] args) throws IllegalAccessException, InvocationTargetException {
++        if (INVOKE_METHOD != null) {
++            // sun.reflect.misc.MethodUtil.invoke(method, owner, args)
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method using sun.reflect.misc.MethodUtil");
++            }
++            try {
++                return INVOKE_METHOD.invoke(null, method, target, args);
++            } catch (InvocationTargetException ite) {
++                // unwrap invocation exception added by reflection code ...
++                throw unwrapException(ite);
++            }
++        } else {
++            // other then Oracle JDK ...
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method directly, probably non-Oracle JVM");
++            }
++            return method.invoke(target, args);
++        }
++    }
++
++    private static InvocationTargetException unwrapException(InvocationTargetException ite) {
++        Throwable targetException = ite.getTargetException();
++        if (targetException != null && targetException instanceof InvocationTargetException) {
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Unwrapping invocation target exception");
++            }
++            return (InvocationTargetException) targetException;
++        } else {
++            return ite;
++        }
++    }
++
++}
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/PolicyUtils.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/PolicyUtils.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/PolicyUtils.java	2013-09-06 14:24:07.000000000 -0400
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/policy/privateutil/PolicyUtils.java	2013-12-14 21:11:13.000000000 -0500
+@@ -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
+@@ -282,13 +282,13 @@
+     /**
+      * Reflection utilities wrapper
+      */
+-    public static class Reflection {
++    static class Reflection {
+         private static final PolicyLogger LOGGER = PolicyLogger.getLogger(PolicyUtils.Reflection.class);
+ 
+         /**
+          * Reflectively invokes specified method on the specified target
+          */
+-        public static <T> T invoke(final Object target, final String methodName,
++        static <T> T invoke(final Object target, final String methodName,
+                 final Class<T> resultClass, final Object... parameters) throws RuntimePolicyUtilsException {
+             Class[] parameterTypes;
+             if (parameters != null && parameters.length > 0) {
+@@ -311,7 +311,7 @@
+                 final Object[] parameters, final Class[] parameterTypes) throws RuntimePolicyUtilsException {
+             try {
+                 final Method method = target.getClass().getMethod(methodName, parameterTypes);
+-                final Object result = method.invoke(target, parameters);
++                final Object result = MethodUtil.invoke(target, method,parameters);
+ 
+                 return resultClass.cast(result);
+             } catch (IllegalArgumentException e) {
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/AbstractInstanceResolver.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/AbstractInstanceResolver.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/AbstractInstanceResolver.java	2013-09-06 14:24:07.000000000 -0400
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/AbstractInstanceResolver.java	2013-12-14 21:11:13.000000000 -0500
+@@ -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
+@@ -157,7 +157,7 @@
+                     if (!method.isAccessible()) {
+                         method.setAccessible(true);
+                     }
+-                    method.invoke(instance,args);
++                    MethodUtil.invoke(instance,method,args);
+                 } catch (IllegalAccessException e) {
+                     throw new ServerRtException("server.rt.err",e);
+                 } catch (InvocationTargetException e) {
+diff -ruN -x .hg /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/MethodUtil.java ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/MethodUtil.java
+--- /tmp/openjdk/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/MethodUtil.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/server/MethodUtil.java	2013-12-14 21:11:13.000000000 -0500
+@@ -0,0 +1,94 @@
++/*
++ * 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.server;
++
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.util.logging.Level;
++import java.util.logging.Logger;
++
++/**
++ * Utility class to invoke sun.reflect.misc.MethodUtil.invoke() if available. If not (other then Oracle JDK) fallbacks
++ * to java.lang,reflect.Method.invoke()
++ *
++ * Be careful, copy of this class exists in several packages, iny modification must be done to other copies too!
++ */
++class MethodUtil {
++
++    private static final Logger LOGGER = Logger.getLogger(MethodUtil.class.getName());
++    private static final Method INVOKE_METHOD;
++
++    static {
++        Method method;
++        try {
++            Class<?> clazz = Class.forName("sun.reflect.misc.MethodUtil");
++            method = clazz.getMethod("invoke", Method.class, Object.class, Object[].class);
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil found; it will be used to invoke methods.");
++            }
++        } catch (Throwable t) {
++            method = null;
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Class sun.reflect.misc.MethodUtil not found, probably non-Oracle JVM");
++            }
++        }
++        INVOKE_METHOD = method;
++    }
++
++    static Object invoke(Object target, Method method, Object[] args) throws IllegalAccessException, InvocationTargetException {
++        if (INVOKE_METHOD != null) {
++            // sun.reflect.misc.MethodUtil.invoke(method, owner, args)
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method using sun.reflect.misc.MethodUtil");
++            }
++            try {
++                return INVOKE_METHOD.invoke(null, method, target, args);
++            } catch (InvocationTargetException ite) {
++                // unwrap invocation exception added by reflection code ...
++                throw unwrapException(ite);
++            }
++        } else {
++            // other then Oracle JDK ...
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Invoking method directly, probably non-Oracle JVM");
++            }
++            return method.invoke(target, args);
++        }
++    }
++
++    private static InvocationTargetException unwrapException(InvocationTargetException ite) {
++        Throwable targetException = ite.getTargetException();
++        if (targetException != null && targetException instanceof InvocationTargetException) {
++            if (LOGGER.isLoggable(Level.FINE)) {
++                LOGGER.log(Level.FINE, "Unwrapping invocation target exception");
++            }
++            return (InvocationTargetException) targetException;
++        } else {
++            return ite;
++        }
++    }
++
++}
+diff -ruN -x .hg /tmp/openjdk/jdk/.hgtags ./jdk/.hgtags
+--- /tmp/openjdk/jdk/.hgtags	2013-09-06 14:27:36.000000000 -0400
++++ ./jdk/.hgtags	2013-12-14 21:31:54.000000000 -0500
+@@ -342,3 +342,21 @@
+ b479996d5c924128c3490165b592bf66a3034932 jdk7u40-b42
+ fb25cdef17e9610db5cb89fc35c0c4abef5ad781 jdk7u40-b43
+ ed444a09a5fd32237deaef6e43804e20ba4f6352 jdk7u40-b60
++55f01444cf58c8004df9a9634c1bd7ff87caa370 jdk7u25-b32
++b06abd965701459a868e88af9a3e564c0301971c jdk7u45-b01
++d23a877da2d5dad6520a268c83f183295a9e7299 jdk7u45-b02
++a56eb4f801232c409d34cd1190df4eec5fefe8a9 jdk7u45-b03
++702c8d83dd8c5b6c76fe53a694244a36d23fa860 jdk7u45-b04
++a70540e8a5e96773b83c7dc0accdb323d946c045 jdk7u45-b05
++f39399baf36761571719f6ff5dc69c514d97842d jdk7u45-b06
++a35d4a4ebcfa895202544c2f6b2d09e0b29bddfc jdk7u45-b07
++2f01847eb9530ed5ec08b1b663f3a02cac57b048 jdk7u45-b08
++6e2313d45f0c50d824531b32d3f577aa0b357551 jdk7u45-b09
++d4506b816f63330489e00ba0b9e3c6583a8a9efa jdk7u45-b10
++ee87452ba9e2b4b7d847bd2a7910a8aaeacfea7b jdk7u45-b11
++d5e393a55e6adc2f1b9aaa752a5004fa07561480 jdk7u45-b12
++34997920efe962b2e4422e2c2de8ae91cd1d563d jdk7u45-b13
++59a78e4ca635a469a763ee408b11f8e1033f2584 jdk7u45-b14
++96782fe0c38c41cc4806e27ee64b20dc647ea808 jdk7u45-b15
++3c9a6d9eafd31be44b0ade0354e60f5078b417a4 jdk7u45-b16
++3a65c1b0c6d15fb24298bcd133d7ab4baa741ae2 jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/jdk/make/bridge/Jabswitch/Makefile ./jdk/make/bridge/Jabswitch/Makefile
+--- /tmp/openjdk/jdk/make/bridge/Jabswitch/Makefile	2013-09-06 14:27:36.000000000 -0400
++++ ./jdk/make/bridge/Jabswitch/Makefile	2013-12-14 21:14:08.000000000 -0500
+@@ -53,7 +53,7 @@
+ buildexe : 
+ 	$(CD) $(TEMPDIR)  
+ 	$(RC) $(RC_FLAGS) $(VERSIONINFO_RESOURCE) 
+-	$(CC) $(CPPFLAGS) $(JAB_SRC) $(LDDFLAGS) $(VERSIONRES) -o $(JAB_EXE) 
++	$(CC) $(CPPFLAGS) $(JAB_SRC) $(VERSIONRES) /link $(LDDFLAGS) -out:$(JAB_EXE)
+ 	$(MT) /nologo /verbose /manifest $(JAB_MANIFEST_INP) /outputresource:$(JAB_EXE)  
+ 
+ copyfilejab : 
+diff -ruN -x .hg /tmp/openjdk/jdk/make/com/sun/jmx/Makefile ./jdk/make/com/sun/jmx/Makefile
+--- /tmp/openjdk/jdk/make/com/sun/jmx/Makefile	2013-09-06 14:27:36.000000000 -0400
++++ ./jdk/make/com/sun/jmx/Makefile	2013-12-14 21:14:08.000000000 -0500
+@@ -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
+@@ -115,6 +115,8 @@
+ 
+ ifeq ($(CROSS_COMPILE_ARCH),)
+ RMIC = $(RMIC_JAVA) $(JAVA_TOOLS_FLAGS) -cp $(OUTPUTDIR)/classes sun.rmi.rmic.Main
++else
++RMIC = $(BOOT_JAVA_CMD)  $(JAVA_TOOLS_FLAGS) -cp $(OUTPUTDIR)/classes sun.rmi.rmic.Main
+ endif  
+ 
+ $(CLASSDESTDIR)/%_Stub.class: $(CLASSDESTDIR)/%.class
+@@ -130,11 +132,13 @@
+ 	$(RMIC) -classpath "$(CLASSDESTDIR)"    \
+                 -d $(CLASSDESTDIR)              \
+                 -iiop -v1.2                     \
++                -emitPermissionCheck            \
+                 $(subst /,.,$(<:$(CLASSDESTDIR)/%.class=%))
+ 	$(RMIC) $(HOTSPOT_INTERPRETER_FLAG) -classpath "$(CLASSDESTDIR)"    \
+                 -d $(CLASSDESTDIR)              \
+                 -iiop -v1.2                     \
+                 -standardPackage                \
++                -emitPermissionCheck            \
+                 $(subst /,.,$(<:$(CLASSDESTDIR)/%.class=%))
+ 	@$(java-vm-cleanup)
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/make/common/Program.gmk ./jdk/make/common/Program.gmk
+--- /tmp/openjdk/jdk/make/common/Program.gmk	2013-09-06 14:27:37.000000000 -0400
++++ ./jdk/make/common/Program.gmk	2013-12-14 21:14:09.000000000 -0500
+@@ -101,17 +101,14 @@
+   ifeq ($(PLATFORM), solaris)
+     ifeq ($(ARCH_DATA_MODEL), 32)
+       LDFLAGS += -R \$$ORIGIN/../lib/$(LIBARCH)/jli
+-      LDFLAGS += -R \$$ORIGIN/../jre/lib/$(LIBARCH)/jli
+     else # ! ARCH_DATA_MODEL 64-bit
+       LDFLAGS += -R \$$ORIGIN/../../lib/$(LIBARCH)/jli
+-      LDFLAGS += -R \$$ORIGIN/../../jre/lib/$(LIBARCH)/jli
+     endif # ARCH_DATA_MODEL
+   endif # PLATFORM SOLARIS
+   ifeq ($(PLATFORM), linux)
+     LDFLAGS += $(LDFLAG_Z_ORIGIN)
+     LDFLAGS += -Wl,--allow-shlib-undefined
+     LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
+-    LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
+   endif # PLATFORM LINUX
+ endif # PLATFORM linux solaris
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/make/common/Release.gmk ./jdk/make/common/Release.gmk
+--- /tmp/openjdk/jdk/make/common/Release.gmk	2013-09-06 14:27:37.000000000 -0400
++++ ./jdk/make/common/Release.gmk	2013-12-14 21:14:09.000000000 -0500
+@@ -982,6 +982,11 @@
+   endif
+ 	$(RM) -rf $(JDK_IMAGE_DIR)/jre/man
+ 	$(CHMOD) a+rx `$(FIND) $(JDK_IMAGE_DIR) -type d`
++  ifneq (,$(findstring $(PLATFORM), linux solaris)) # If linux or solaris 
++	($(CD) $(LIBDIR)/.. && $(TAR) cf - \
++	    `$(FIND) lib -name $(LIB_PREFIX)jli.$(LIB_SUFFIX) -print `) | \
++	    ($(CD) $(JDK_IMAGE_DIR) && $(TAR) xf -)
++  endif # PLATFORM
+ 
+ initial-image-jdk64-bindemos:
+ 	for dir in bin demo ; do \
+@@ -1030,7 +1035,7 @@
+ 		    initial-image-jdk-db \
+ 		    $(JDK_DOCFILES) \
+ 		    $(JDK_DEMOS_AND_SAMPLES_DOCFILES)
+-	$(MKDIR) $(JDK_IMAGE_DIR)/lib
++	$(MKDIR) -p $(JDK_IMAGE_DIR)/lib
+ 	@#
+ 	@# Copy in the jars in lib that only belong in the JDK
+ 	@#
+diff -ruN -x .hg /tmp/openjdk/jdk/make/common/shared/Defs.gmk ./jdk/make/common/shared/Defs.gmk
+--- /tmp/openjdk/jdk/make/common/shared/Defs.gmk	2013-09-06 14:27:37.000000000 -0400
++++ ./jdk/make/common/shared/Defs.gmk	2013-12-14 21:14:09.000000000 -0500
+@@ -296,10 +296,8 @@
+   RELEASE      = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
+ endif
+ 
+-# FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set
+-ifdef BUILD_NUMBER
+-  FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
+-else
++# Define default USER_RELEASE_SUFFIX if BUILD_NUMBER and USER_RELEASE_SUFFIX are not set
++ifndef BUILD_NUMBER
+   BUILD_NUMBER = b00
+   ifndef USER_RELEASE_SUFFIX
+     BUILD_DATE := $(shell $(DATE) '+%Y_%m_%d_%H_%M')
+@@ -307,6 +305,12 @@
+     USER_RELEASE_SUFFIX := $(shell $(ECHO) "$(CLEAN_USERNAME)_$(BUILD_DATE)" | $(TR) '[:upper:]' '[:lower:]' )
+   endif
+   export USER_RELEASE_SUFFIX
++endif
++
++# FULL_VERSION is RELEASE and BUILD_NUMBER if USER_RELEASE_SUFFIX is not set
++ifndef USER_RELEASE_SUFFIX
++  FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
++else
+   FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
+ endif
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/make/java/management/mapfile-vers ./jdk/make/java/management/mapfile-vers
+--- /tmp/openjdk/jdk/make/java/management/mapfile-vers	2013-09-06 14:27:37.000000000 -0400
++++ ./jdk/make/java/management/mapfile-vers	2013-12-14 21:14:09.000000000 -0500
+@@ -53,7 +53,7 @@
+ 	    Java_sun_management_GcInfoBuilder_fillGcAttributeInfo;
+ 	    Java_sun_management_GcInfoBuilder_getLastGcInfo0;
+ 	    Java_sun_management_GcInfoBuilder_getNumGcExtAttributes;
+-	    Java_sun_management_HotSpotDiagnostic_dumpHeap;
++	    Java_sun_management_HotSpotDiagnostic_dumpHeap0;
+ 	    Java_sun_management_HotspotThread_getInternalThreadCount;
+ 	    Java_sun_management_HotspotThread_getInternalThreadTimes0;
+ 	    Java_sun_management_MemoryImpl_getMemoryManagers0;
+diff -ruN -x .hg /tmp/openjdk/jdk/make/sun/awt/FILES_c_macosx.gmk ./jdk/make/sun/awt/FILES_c_macosx.gmk
+--- /tmp/openjdk/jdk/make/sun/awt/FILES_c_macosx.gmk	2013-09-06 14:27:39.000000000 -0400
++++ ./jdk/make/sun/awt/FILES_c_macosx.gmk	1969-12-31 19:00:00.000000000 -0500
+@@ -1,28 +0,0 @@
+-#
+-# Copyright (c) 1995, 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.  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.
+-#
+-
+-FILES_AWT_objc = \
+-        $(TARGDIR)MacOSXResourceBundle.m
+-
+diff -ruN -x .hg /tmp/openjdk/jdk/make/sun/awt/FILES_export_macosx.gmk ./jdk/make/sun/awt/FILES_export_macosx.gmk
+--- /tmp/openjdk/jdk/make/sun/awt/FILES_export_macosx.gmk	2013-09-06 14:27:39.000000000 -0400
++++ ./jdk/make/sun/awt/FILES_export_macosx.gmk	1969-12-31 19:00:00.000000000 -0500
+@@ -1,29 +0,0 @@
+-#
+-# Copyright (c) 1995, 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.  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.
+-#
+-
+-# FILES_export definitions for Mac OS X
+-
+-FILES_export += \
+-	com/apple/resources/MacOSXResourceBundle.java
+diff -ruN -x .hg /tmp/openjdk/jdk/make/sun/awt/Makefile ./jdk/make/sun/awt/Makefile
+--- /tmp/openjdk/jdk/make/sun/awt/Makefile	2013-09-06 14:27:39.000000000 -0400
++++ ./jdk/make/sun/awt/Makefile	2013-12-14 21:31:54.000000000 -0500
+@@ -145,8 +145,6 @@
+ #
+ # Files
+ #
+-include FILES_c_macosx.gmk
+-include FILES_export_macosx.gmk
+ 
+ FILES_objc = $(FILES_AWT_objc)
+ OTHER_LDLIBS = -lmlib_image $(JVMLIB) $(LIBM) \
+diff -ruN -x .hg /tmp/openjdk/jdk/make/sun/font/Makefile ./jdk/make/sun/font/Makefile
+--- /tmp/openjdk/jdk/make/sun/font/Makefile	2013-09-06 14:27:40.000000000 -0400
++++ ./jdk/make/sun/font/Makefile	2013-12-14 21:14:10.000000000 -0500
+@@ -36,7 +36,11 @@
+ CPLUSPLUSLIBRARY=true
+ 
+ # Use higher optimization level
+-OPTIMIZATION_LEVEL = HIGHER
++ifeq ($(PLATFORM), windows)
++  OPTIMIZATION_LEVEL = HIGHEST
++else
++  OPTIMIZATION_LEVEL = HIGHER
++endif
+ 
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/make/sun/nio/cs/FILES_java.gmk ./jdk/make/sun/nio/cs/FILES_java.gmk
+--- /tmp/openjdk/jdk/make/sun/nio/cs/FILES_java.gmk	2013-09-06 14:27:40.000000000 -0400
++++ ./jdk/make/sun/nio/cs/FILES_java.gmk	2013-12-14 21:14:10.000000000 -0500
+@@ -329,6 +329,7 @@
+ 	sun/nio/cs/ext/IBM280.java \
+ 	sun/nio/cs/ext/IBM284.java \
+ 	sun/nio/cs/ext/IBM285.java \
++	sun/nio/cs/ext/IBM290.java \
+ 	sun/nio/cs/ext/IBM297.java \
+ 	sun/nio/cs/ext/IBM420.java \
+ 	sun/nio/cs/ext/IBM424.java \
+diff -ruN -x .hg /tmp/openjdk/jdk/make/tools/CharsetMapping/IBM290.c2b ./jdk/make/tools/CharsetMapping/IBM290.c2b
+--- /tmp/openjdk/jdk/make/tools/CharsetMapping/IBM290.c2b	1969-12-31 19:00:00.000000000 -0500
++++ ./jdk/make/tools/CharsetMapping/IBM290.c2b	2013-12-14 21:14:11.000000000 -0500
+@@ -0,0 +1,100 @@
++# 
++# Diff of 
++# b2c: cdctables.zip/Package2.zip/IBM-290.zip/012234B0.TPMAP100
++# c2b: cdctables.zip/Package2.zip/IBM-290.zip/012234B0.UPMAP100
++#
++# fullwidth form
++0x4B    U+FF0E
++0x4C    U+FF1C
++0x4D    U+FF08
++0x4E    U+FF0B
++0x4F    U+FF5C
++0x50    U+FF06
++0x5A    U+FF01
++0x5C    U+FF0A
++0x5D    U+FF09
++0x5E    U+FF1B
++0x60    U+FF0D
++0x61    U+FF0F
++0x62    U+FF41
++0x63    U+FF42
++0x64    U+FF43
++0x65    U+FF44
++0x66    U+FF45
++0x67    U+FF46
++0x68    U+FF47
++0x69    U+FF48
++0x6B    U+FF0C
++0x6C    U+FF05
++0x6D    U+FF3F
++0x6E    U+FF1E
++0x6F    U+FF1F
++0x70    U+FF3B
++0x71    U+FF49
++0x72    U+FF4A
++0x73    U+FF4B
++0x74    U+FF4C
++0x75    U+FF4D
++0x76    U+FF4E
++0x77    U+FF4F
++0x78    U+FF50
++0x79    U+FF40
++0x7A    U+FF1A
++0x7B    U+FF03
++0x7C    U+FF20
++0x7D    U+FF07
++0x7E    U+FF1D
++0x7F    U+FF02
++0x80    U+FF3D
++0x8B    U+FF51
++0x9B    U+FF52
++0xA0    U+FF5E
++0xAB    U+FF53
++0xB0    U+FF3E
++0xB2    U+FF3C
++0xB3    U+FF54
++0xB4    U+FF55
++0xB5    U+FF56
++0xB6    U+FF57
++0xB7    U+FF58
++0xB8    U+FF59
++0xB9    U+FF5A
++0xC0    U+FF5B
++0xC1    U+FF21
++0xC2    U+FF22
++0xC3    U+FF23
++0xC4    U+FF24
++0xC5    U+FF25
++0xC6    U+FF26
++0xC7    U+FF27
++0xC8    U+FF28
++0xC9    U+FF29
++0xD0    U+FF5D
++0xD1    U+FF2A
++0xD2    U+FF2B
++0xD3    U+FF2C
++0xD4    U+FF2D
++0xD5    U+FF2E
++0xD6    U+FF2F
++0xD7    U+FF30
++0xD8    U+FF31
++0xD9    U+FF32
++0xE0    U+FF04
++0xE2    U+FF33
++0xE3    U+FF34
++0xE4    U+FF35
++0xE5    U+FF36
++0xE6    U+FF37
++0xE7    U+FF38
++0xE8    U+FF39
++0xE9    U+FF3A
++0xF0    U+FF10
++0xF1    U+FF11
++0xF2    U+FF12
++0xF3    U+FF13
++0xF4    U+FF14
++0xF5    U+FF15
++0xF6    U+FF16
++0xF7    U+FF17
++0xF8    U+FF18
++0xF9    U+FF19
+diff -ruN -x .hg /tmp/openjdk/jdk/make/tools/CharsetMapping/IBM290.map ./jdk/make/tools/CharsetMapping/IBM290.map
+--- /tmp/openjdk/jdk/make/tools/CharsetMapping/IBM290.map	1969-12-31 19:00:00.000000000 -0500
++++ ./jdk/make/tools/CharsetMapping/IBM290.map	2013-12-14 21:14:11.000000000 -0500
+@@ -0,0 +1,232 @@
++#
++# b2c mapping for IBM290, generated from
++# cdctables.zip/Package2.zip/IBM-290.zip/012234B0.TPMAP100
++#
++0x00    U+0000
++0x01    U+0001
++0x02    U+0002
++0x03    U+0003
++0x04    U+009C
++0x05    U+0009
++0x06    U+0086
++0x07    U+007F
++0x08    U+0097
++0x09    U+008D
++0x0A    U+008E
++0x0B    U+000B
++0x0C    U+000C
++0x0D    U+000D
++0x0E    U+000E
++0x0F    U+000F
++0x10    U+0010
++0x11    U+0011
++0x12    U+0012
++0x13    U+0013
++0x14    U+009D
++0x15    U+0085
++0x16    U+0008
++0x17    U+0087
++0x18    U+0018
++0x19    U+0019
++0x1A    U+0092
++0x1B    U+008F
++0x1C    U+001C
++0x1D    U+001D
++0x1E    U+001E
++0x1F    U+001F
++0x20    U+0080
++0x21    U+0081
++0x22    U+0082
++0x23    U+0083
++0x24    U+0084
++0x25    U+000A
++0x26    U+0017
++0x27    U+001B
++0x28    U+0088
++0x29    U+0089
++0x2A    U+008A
++0x2B    U+008B
++0x2C    U+008C
++0x2D    U+0005
++0x2E    U+0006
++0x2F    U+0007
++0x30    U+0090
++0x31    U+0091
++0x32    U+0016
++0x33    U+0093
++0x34    U+0094
++0x35    U+0095
++0x36    U+0096
++0x37    U+0004
++0x38    U+0098
++0x39    U+0099
++0x3A    U+009A
++0x3B    U+009B
++0x3C    U+0014
++0x3D    U+0015
++0x3E    U+009E
++0x3F    U+001A
++0x40    U+0020
++0x41    U+FF61
++0x42    U+FF62
++0x43    U+FF63
++0x44    U+FF64
++0x45    U+FF65
++0x46    U+FF66
++0x47    U+FF67
++0x48    U+FF68
++0x49    U+FF69
++0x4A    U+00A3
++0x4B    U+002E
++0x4C    U+003C
++0x4D    U+0028
++0x4E    U+002B
++0x4F    U+007C
++0x50    U+0026
++0x51    U+FF6A
++0x52    U+FF6B
++0x53    U+FF6C
++0x54    U+FF6D
++0x55    U+FF6E
++0x56    U+FF6F
++0x58    U+FF70
++0x5A    U+0021
++0x5B    U+00A5
++0x5C    U+002A
++0x5D    U+0029
++0x5E    U+003B
++0x5F    U+00AC
++0x60    U+002D
++0x61    U+002F
++0x62    U+0061
++0x63    U+0062
++0x64    U+0063
++0x65    U+0064
++0x66    U+0065
++0x67    U+0066
++0x68    U+0067
++0x69    U+0068
++0x6B    U+002C
++0x6C    U+0025
++0x6D    U+005F
++0x6E    U+003E
++0x6F    U+003F
++0x70    U+005B
++0x71    U+0069
++0x72    U+006A
++0x73    U+006B
++0x74    U+006C
++0x75    U+006D
++0x76    U+006E
++0x77    U+006F
++0x78    U+0070
++0x79    U+0060
++0x7A    U+003A
++0x7B    U+0023
++0x7C    U+0040
++0x7D    U+0027
++0x7E    U+003D
++0x7F    U+0022
++0x80    U+005D
++0x81    U+FF71
++0x82    U+FF72
++0x83    U+FF73
++0x84    U+FF74
++0x85    U+FF75
++0x86    U+FF76
++0x87    U+FF77
++0x88    U+FF78
++0x89    U+FF79
++0x8A    U+FF7A
++0x8B    U+0071
++0x8C    U+FF7B
++0x8D    U+FF7C
++0x8E    U+FF7D
++0x8F    U+FF7E
++0x90    U+FF7F
++0x91    U+FF80
++0x92    U+FF81
++0x93    U+FF82
++0x94    U+FF83
++0x95    U+FF84
++0x96    U+FF85
++0x97    U+FF86
++0x98    U+FF87
++0x99    U+FF88
++0x9A    U+FF89
++0x9B    U+0072
++0x9D    U+FF8A
++0x9E    U+FF8B
++0x9F    U+FF8C
++0xA0    U+007E
++0xA1    U+203E
++0xA2    U+FF8D
++0xA3    U+FF8E
++0xA4    U+FF8F
++0xA5    U+FF90
++0xA6    U+FF91
++0xA7    U+FF92
++0xA8    U+FF93
++0xA9    U+FF94
++0xAA    U+FF95
++0xAB    U+0073
++0xAC    U+FF96
++0xAD    U+FF97
++0xAE    U+FF98
++0xAF    U+FF99
++0xB0    U+005E
++0xB1    U+00A2
++0xB2    U+005C
++0xB3    U+0074
++0xB4    U+0075
++0xB5    U+0076
++0xB6    U+0077
++0xB7    U+0078
++0xB8    U+0079
++0xB9    U+007A
++0xBA    U+FF9A
++0xBB    U+FF9B
++0xBC    U+FF9C
++0xBD    U+FF9D
++0xBE    U+FF9E
++0xBF    U+FF9F
++0xC0    U+007B
++0xC1    U+0041
++0xC2    U+0042
++0xC3    U+0043
++0xC4    U+0044
++0xC5    U+0045
++0xC6    U+0046
++0xC7    U+0047
++0xC8    U+0048
++0xC9    U+0049
++0xD0    U+007D
++0xD1    U+004A
++0xD2    U+004B
++0xD3    U+004C
++0xD4    U+004D
++0xD5    U+004E
++0xD6    U+004F
++0xD7    U+0050
++0xD8    U+0051
++0xD9    U+0052
++0xE0    U+0024
++0xE2    U+0053
++0xE3    U+0054
++0xE4    U+0055
++0xE5    U+0056
++0xE6    U+0057
++0xE7    U+0058
++0xE8    U+0059
++0xE9    U+005A
++0xF0    U+0030
++0xF1    U+0031
++0xF2    U+0032
++0xF3    U+0033
++0xF4    U+0034
++0xF5    U+0035
++0xF6    U+0036
++0xF7    U+0037
++0xF8    U+0038
++0xF9    U+0039
++0xFF    U+009F
+diff -ruN -x .hg /tmp/openjdk/jdk/make/tools/CharsetMapping/extsbcs ./jdk/make/tools/CharsetMapping/extsbcs
+--- /tmp/openjdk/jdk/make/tools/CharsetMapping/extsbcs	2013-09-06 14:27:42.000000000 -0400
++++ ./jdk/make/tools/CharsetMapping/extsbcs	2013-12-14 21:14:11.000000000 -0500
+@@ -28,6 +28,7 @@
+ IBM280		IBM280		Cp280		false		sun.nio.cs.ext
+ IBM284		IBM284		Cp284		false		sun.nio.cs.ext
+ IBM285		IBM285		Cp285		false		sun.nio.cs.ext
++IBM290		IBM290		Cp290		false		sun.nio.cs.ext
+ IBM297		IBM297		Cp297		false		sun.nio.cs.ext
+ IBM420		IBM420		Cp420		false		sun.nio.cs.ext
+ IBM424		IBM424		Cp424		false		sun.nio.cs.ext
+diff -ruN -x .hg /tmp/openjdk/jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java ./jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java
+--- /tmp/openjdk/jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java	2013-09-06 14:27:48.000000000 -0400
++++ ./jdk/src/macosx/classes/com/apple/laf/AquaLookAndFeel.java	2013-12-14 21:14:15.000000000 -0500
+@@ -37,8 +37,6 @@
+ import sun.swing.*;
+ import apple.laf.*;
+ 
+-import com.apple.resources.MacOSXResourceBundle;
+-
+ public class AquaLookAndFeel extends BasicLookAndFeel {
+     static final String sOldPropertyPrefix = "com.apple.macos."; // old prefix for things like 'useScreenMenuBar'
+     static final String sPropertyPrefix = "apple.laf."; // new prefix for things like 'useScreenMenuBar'
+@@ -246,7 +244,7 @@
+         table.setDefaultLocale(Locale.getDefault());
+         table.addResourceBundle(PKG_PREFIX + "resources.aqua");
+         try {
+-            final ResourceBundle aquaProperties = MacOSXResourceBundle.getMacResourceBundle(PKG_PREFIX + "resources.aqua");
++            final ResourceBundle aquaProperties = ResourceBundle.getBundle(PKG_PREFIX + "resources.aqua");
+             final Enumeration<String> propertyKeys = aquaProperties.getKeys();
+ 
+             while (propertyKeys.hasMoreElements()) {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java ./jdk/src/macosx/classes/com/apple/laf/AquaUtils.java
+--- /tmp/openjdk/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java	2013-09-06 14:27:48.000000000 -0400
++++ ./jdk/src/macosx/classes/com/apple/laf/AquaUtils.java	2013-12-14 21:14:15.000000000 -0500
+@@ -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
+@@ -29,6 +29,7 @@
+ import java.awt.image.*;
+ import java.lang.ref.SoftReference;
+ import java.lang.reflect.Method;
++import java.security.AccessController;
+ import java.security.PrivilegedAction;
+ import java.util.*;
+ 
+@@ -41,56 +42,68 @@
+ import sun.lwawt.macosx.CImage;
+ import sun.lwawt.macosx.CImage.Creator;
+ import sun.lwawt.macosx.CPlatformWindow;
++import sun.misc.Launcher;
++import sun.reflect.misc.ReflectUtil;
++import sun.security.action.GetPropertyAction;
+ import sun.swing.SwingUtilities2;
+ 
+ import com.apple.laf.AquaImageFactory.SlicedImageControl;
+ 
+-public class AquaUtils {
+-    final static String ANIMATIONS_SYSTEM_PROPERTY = "swing.enableAnimations";
++final class AquaUtils {
+ 
+-    /*
++    private static final String ANIMATIONS_PROPERTY = "swing.enableAnimations";
++
++    /**
++     * Suppresses default constructor, ensuring non-instantiability.
++     */
++    private AquaUtils() {
++    }
++
++    /**
+      * Convenience function for determining ComponentOrientation.  Helps us
+      * avoid having Munge directives throughout the code.
+      */
+-    public static boolean isLeftToRight(final Component c) {
++    static boolean isLeftToRight(final Component c) {
+         return c.getComponentOrientation().isLeftToRight();
+     }
+ 
+-    public static void enforceComponentOrientation(Component c, ComponentOrientation orientation) {
++    static void enforceComponentOrientation(final Component c, final ComponentOrientation orientation) {
+         c.setComponentOrientation(orientation);
+         if (c instanceof Container) {
+-            for (Component child : ((Container)c).getComponents()) {
++            for (final Component child : ((Container)c).getComponents()) {
+                 enforceComponentOrientation(child, orientation);
+             }
+         }
+     }
+ 
+-    private static CImage.Creator getCImageCreatorInternal() {
+-        return java.security.AccessController.doPrivileged(new PrivilegedAction<CImage.Creator>() {
++    private static Creator getCImageCreatorInternal() {
++        return AccessController.doPrivileged(new PrivilegedAction<Creator>() {
++            @Override
+             public Creator run() {
+                 try {
+                     final Method getCreatorMethod = CImage.class.getDeclaredMethod("getCreator", new Class[] {});
+                     getCreatorMethod.setAccessible(true);
+-                    return (CImage.Creator)getCreatorMethod.invoke(null, new Object[] {});
+-                } catch (final Exception e) {
++                    return (Creator)getCreatorMethod.invoke(null, new Object[] {});
++                } catch (final Exception ignored) {
+                     return null;
+                 }
+             }
+         });
+     }
+ 
+-    private static final RecyclableSingleton<CImage.Creator> cImageCreator = new RecyclableSingleton<CImage.Creator>() {
++    private static final RecyclableSingleton<Creator> cImageCreator = new RecyclableSingleton<Creator>() {
+         @Override
+         protected Creator getInstance() {
+             return getCImageCreatorInternal();
+         }
+     };
+-    static CImage.Creator getCImageCreator() {
++    static Creator getCImageCreator() {
+         return cImageCreator.get();
+     }
+ 
+-    protected static Image generateSelectedDarkImage(final Image image) {
++    static Image generateSelectedDarkImage(final Image image) {
+         final ImageProducer prod = new FilteredImageSource(image.getSource(), new IconImageFilter() {
++            @Override
+             int getGreyFor(final int gray) {
+                 return gray * 75 / 100;
+             }
+@@ -98,8 +111,9 @@
+         return Toolkit.getDefaultToolkit().createImage(prod);
+     }
+ 
+-    protected static Image generateDisabledImage(final Image image) {
++    static Image generateDisabledImage(final Image image) {
+         final ImageProducer prod = new FilteredImageSource(image.getSource(), new IconImageFilter() {
++            @Override
+             int getGreyFor(final int gray) {
+                 return 255 - ((255 - gray) * 65 / 100);
+             }
+@@ -107,19 +121,20 @@
+         return Toolkit.getDefaultToolkit().createImage(prod);
+     }
+ 
+-    protected static Image generateLightenedImage(final Image image, final int percent) {
++    static Image generateLightenedImage(final Image image, final int percent) {
+         final GrayFilter filter = new GrayFilter(true, percent);
+         final ImageProducer prod = new FilteredImageSource(image.getSource(), filter);
+         return Toolkit.getDefaultToolkit().createImage(prod);
+     }
+ 
+-    static abstract class IconImageFilter extends RGBImageFilter {
+-        public IconImageFilter() {
++    private abstract static class IconImageFilter extends RGBImageFilter {
++        IconImageFilter() {
+             super();
+             canFilterIndexColorModel = true;
+         }
+ 
+-        public int filterRGB(final int x, final int y, final int rgb) {
++        @Override
++        public final int filterRGB(final int x, final int y, final int rgb) {
+             final int red = (rgb >> 16) & 0xff;
+             final int green = (rgb >> 8) & 0xff;
+             final int blue = rgb & 0xff;
+@@ -135,14 +150,14 @@
+             return result;
+         }
+ 
+-        abstract int getGreyFor(final int gray);
++        abstract int getGreyFor(int gray);
+     }
+ 
+-    public abstract static class RecyclableObject<T> {
+-        protected SoftReference<T> objectRef = null;
++    abstract static class RecyclableObject<T> {
++        private SoftReference<T> objectRef;
+ 
+-        public T get() {
+-            T referent = null;
++        T get() {
++            T referent;
+             if (objectRef != null && (referent = objectRef.get()) != null) return referent;
+             referent = create();
+             objectRef = new SoftReference<T>(referent);
+@@ -152,8 +167,8 @@
+         protected abstract T create();
+     }
+ 
+-    public abstract static class RecyclableSingleton<T> {
+-        public T get() {
++    abstract static class RecyclableSingleton<T> {
++        final T get() {
+             final AppContext appContext = AppContext.getAppContext();
+             SoftReference<T> ref = (SoftReference<T>) appContext.get(this);
+             if (ref != null) {
+@@ -166,38 +181,36 @@
+             return object;
+         }
+ 
+-        public void reset() {
+-            AppContext appContext = AppContext.getAppContext();
+-            appContext.remove(this);
++        void reset() {
++            AppContext.getAppContext().remove(this);
+         }
+ 
+-        protected abstract T getInstance();
++        abstract T getInstance();
+     }
+ 
+-    public static class RecyclableSingletonFromDefaultConstructor<T> extends RecyclableSingleton<T> {
+-        protected final Class<T> clazz;
++    static class RecyclableSingletonFromDefaultConstructor<T> extends RecyclableSingleton<T> {
++        private final Class<T> clazz;
+ 
+-        public RecyclableSingletonFromDefaultConstructor(final Class<T> clazz) {
++        RecyclableSingletonFromDefaultConstructor(final Class<T> clazz) {
+             this.clazz = clazz;
+         }
+ 
+-        protected T getInstance() {
++        @Override
++        T getInstance() {
+             try {
++                ReflectUtil.checkPackageAccess(clazz);
+                 return clazz.newInstance();
+-            } catch (final InstantiationException e) {
+-                e.printStackTrace();
+-            } catch (final IllegalAccessException e) {
+-                e.printStackTrace();
++            } catch (InstantiationException | IllegalAccessException ignored) {
+             }
+             return null;
+         }
+     }
+ 
+-    public abstract static class LazyKeyedSingleton<K, V> {
+-        protected Map<K, V> refs;
++    abstract static class LazyKeyedSingleton<K, V> {
++        private Map<K, V> refs;
+ 
+-        public V get(final K key) {
+-            if (refs == null) refs = new HashMap<K, V>();
++        V get(final K key) {
++            if (refs == null) refs = new HashMap<>();
+ 
+             final V cachedValue = refs.get(key);
+             if (cachedValue != null) return cachedValue;
+@@ -207,44 +220,45 @@
+             return value;
+         }
+ 
+-        protected abstract V getInstance(final K key);
++        protected abstract V getInstance(K key);
+     }
+ 
+-    static final RecyclableSingleton<Boolean> enableAnimations = new RecyclableSingleton<Boolean>() {
++    private static final RecyclableSingleton<Boolean> enableAnimations = new RecyclableSingleton<Boolean>() {
+         @Override
+         protected Boolean getInstance() {
+-            final String sizeProperty = (String)java.security.AccessController.doPrivileged((PrivilegedAction<?>)new sun.security.action.GetPropertyAction(ANIMATIONS_SYSTEM_PROPERTY));
+-            return new Boolean(!"false".equals(sizeProperty)); // should be true by default
++            final String sizeProperty = (String) AccessController.doPrivileged((PrivilegedAction<?>)new GetPropertyAction(
++                    ANIMATIONS_PROPERTY));
++            return !"false".equals(sizeProperty); // should be true by default
+         }
+     };
+-    static boolean animationsEnabled() {
++    private static boolean animationsEnabled() {
+         return enableAnimations.get();
+     }
+ 
+-    static final int MENU_BLINK_DELAY = 50; // 50ms == 3/60 sec, according to the spec
+-    protected static void blinkMenu(final Selectable selectable) {
++    private static final int MENU_BLINK_DELAY = 50; // 50ms == 3/60 sec, according to the spec
++    static void blinkMenu(final Selectable selectable) {
+         if (!animationsEnabled()) return;
+         try {
+             selectable.paintSelected(false);
+             Thread.sleep(MENU_BLINK_DELAY);
+             selectable.paintSelected(true);
+             Thread.sleep(MENU_BLINK_DELAY);
+-        } catch (final InterruptedException e) { }
++        } catch (final InterruptedException ignored) { }
+     }
+ 
+     interface Selectable {
+-        void paintSelected(final boolean selected);
++        void paintSelected(boolean selected);
+     }
+ 
+     interface JComponentPainter {
+-        public void paint(JComponent c, Graphics g, int x, int y, int w, int h);
++        void paint(JComponent c, Graphics g, int x, int y, int w, int h);
+     }
+ 
+     interface Painter {
+-        public void paint(final Graphics g, int x, int y, int w, int h);
++        void paint(Graphics g, int x, int y, int w, int h);
+     }
+ 
+-    public static void paintDropShadowText(final Graphics g, final JComponent c, final Font font, final FontMetrics metrics, final int x, final int y, final int offsetX, final int offsetY, final Color textColor, final Color shadowColor, final String text) {
++    static void paintDropShadowText(final Graphics g, final JComponent c, final Font font, final FontMetrics metrics, final int x, final int y, final int offsetX, final int offsetY, final Color textColor, final Color shadowColor, final String text) {
+         g.setFont(font);
+         g.setColor(shadowColor);
+         SwingUtilities2.drawString(c, g, text, x + offsetX, y + offsetY + metrics.getAscent());
+@@ -252,22 +266,22 @@
+         SwingUtilities2.drawString(c, g, text, x, y + metrics.getAscent());
+     }
+ 
+-    public static class ShadowBorder implements Border {
+-        final Painter prePainter;
+-        final Painter postPainter;
+-
+-        final int offsetX;
+-        final int offsetY;
+-        final float distance;
+-        final int blur;
+-        final Insets insets;
+-        final ConvolveOp blurOp;
++    static class ShadowBorder implements Border {
++        private final Painter prePainter;
++        private final Painter postPainter;
++
++        private final int offsetX;
++        private final int offsetY;
++        private final float distance;
++        private final int blur;
++        private final Insets insets;
++        private final ConvolveOp blurOp;
+ 
+-        public ShadowBorder(final Painter prePainter, final Painter postPainter, final int offsetX, final int offsetY, final float distance, final float intensity, final int blur) {
++        ShadowBorder(final Painter prePainter, final Painter postPainter, final int offsetX, final int offsetY, final float distance, final float intensity, final int blur) {
+             this.prePainter = prePainter; this.postPainter = postPainter;
+             this.offsetX = offsetX; this.offsetY = offsetY; this.distance = distance; this.blur = blur;
+             final int halfBlur = blur / 2;
+-            this.insets = new Insets(halfBlur - offsetY, halfBlur - offsetX, halfBlur + offsetY, halfBlur + offsetX);
++            insets = new Insets(halfBlur - offsetY, halfBlur - offsetX, halfBlur + offsetY, halfBlur + offsetX);
+ 
+             final float blurry = intensity / (blur * blur);
+             final float[] blurKernel = new float[blur * blur];
+@@ -275,14 +289,17 @@
+             blurOp = new ConvolveOp(new Kernel(blur, blur, blurKernel));
+         }
+ 
+-        public boolean isBorderOpaque() {
++        @Override
++        public final boolean isBorderOpaque() {
+             return false;
+         }
+ 
+-        public Insets getBorderInsets(final Component c) {
++        @Override
++        public final Insets getBorderInsets(final Component c) {
+             return insets;
+         }
+ 
++        @Override
+         public void paintBorder(final Component c, final Graphics g, final int x, final int y, final int width, final int height) {
+             final BufferedImage img = new BufferedImage(width + blur * 2, height + blur * 2, BufferedImage.TYPE_INT_ARGB_PRE);
+             paintToImage(img, x, y, width, height);
+@@ -290,7 +307,7 @@
+             g.drawImage(img, -blur, -blur, null);
+         }
+ 
+-        protected void paintToImage(final BufferedImage img, final int x, final int y, final int width, final int height) {
++        private void paintToImage(final BufferedImage img, final int x, final int y, final int width, final int height) {
+             // clear the prior image
+             Graphics2D imgG = (Graphics2D)img.getGraphics();
+             imgG.setComposite(AlphaComposite.Clear);
+@@ -319,10 +336,10 @@
+         }
+     }
+ 
+-    public static class SlicedShadowBorder extends ShadowBorder {
+-        final SlicedImageControl slices;
++    static class SlicedShadowBorder extends ShadowBorder {
++        private final SlicedImageControl slices;
+ 
+-        public SlicedShadowBorder(final Painter prePainter, final Painter postPainter, final int offsetX, final int offsetY, final float distance, final float intensity, final int blur, final int templateWidth, final int templateHeight, final int leftCut, final int topCut, final int rightCut, final int bottomCut) {
++        SlicedShadowBorder(final Painter prePainter, final Painter postPainter, final int offsetX, final int offsetY, final float distance, final float intensity, final int blur, final int templateWidth, final int templateHeight, final int leftCut, final int topCut, final int rightCut, final int bottomCut) {
+             super(prePainter, postPainter, offsetX, offsetY, distance, intensity, blur);
+ 
+             final BufferedImage i = new BufferedImage(templateWidth, templateHeight, BufferedImage.TYPE_INT_ARGB_PRE);
+@@ -331,15 +348,12 @@
+             slices = new SlicedImageControl(i, leftCut, topCut, rightCut, bottomCut, false);
+         }
+ 
++        @Override
+         public void paintBorder(final Component c, final Graphics g, final int x, final int y, final int width, final int height) {
+             slices.paint(g, x, y, width, height);
+         }
+     }
+ 
+-    public interface NineSliceMetricsProvider {
+-
+-    }
+-
+ //    static void debugFrame(String name, Image image) {
+ //        JFrame f = new JFrame(name);
+ //        f.setContentPane(new JLabel(new ImageIcon(image)));
+@@ -350,28 +364,30 @@
+     // special casing naughty applications, like InstallAnywhere
+     // <rdar://problem/4851533> REGR: JButton: Myst IV: the buttons of 1.0.3 updater have redraw issue
+     static boolean shouldUseOpaqueButtons() {
+-        final ClassLoader launcherClassLoader = sun.misc.Launcher.getLauncher().getClassLoader();
++        final ClassLoader launcherClassLoader = Launcher.getLauncher().getClassLoader();
+         if (classExists(launcherClassLoader, "com.installshield.wizard.platform.macosx.MacOSXUtils")) return true;
+         return false;
+     }
+ 
+-    static boolean classExists(final ClassLoader classLoader, final String clazzName) {
++    private static boolean classExists(final ClassLoader classLoader, final String clazzName) {
+         try {
+             return Class.forName(clazzName, false, classLoader) != null;
+-        } catch (final Throwable e) { }
++        } catch (final Throwable ignored) { }
+         return false;
+     }
+ 
+-    private static RecyclableSingleton<Method> getJComponentGetFlagMethod = new RecyclableSingleton<Method>() {
++    private static final RecyclableSingleton<Method> getJComponentGetFlagMethod = new RecyclableSingleton<Method>() {
++        @Override
+         protected Method getInstance() {
+-            return java.security.AccessController.doPrivileged(
++            return AccessController.doPrivileged(
+                 new PrivilegedAction<Method>() {
++                    @Override
+                     public Method run() {
+                         try {
+                             final Method method = JComponent.class.getDeclaredMethod("getFlag", new Class[] { int.class });
+                             method.setAccessible(true);
+                             return method;
+-                        } catch (final Throwable e) {
++                        } catch (final Throwable ignored) {
+                             return null;
+                         }
+                     }
+@@ -380,18 +396,18 @@
+         }
+     };
+ 
+-    private static final Integer OPAQUE_SET_FLAG = new Integer(24); // private int JComponent.OPAQUE_SET
+-    protected static boolean hasOpaqueBeenExplicitlySet(final JComponent c) {
++    private static final Integer OPAQUE_SET_FLAG = 24; // private int JComponent.OPAQUE_SET
++    static boolean hasOpaqueBeenExplicitlySet(final JComponent c) {
+         final Method method = getJComponentGetFlagMethod.get();
+         if (method == null) return false;
+         try {
+             return Boolean.TRUE.equals(method.invoke(c, OPAQUE_SET_FLAG));
+-        } catch (final Throwable e) {
++        } catch (final Throwable ignored) {
+             return false;
+         }
+     }
+ 
+-    protected static boolean isWindowTextured(final Component c) {
++    private static boolean isWindowTextured(final Component c) {
+         if (!(c instanceof JComponent)) {
+             return false;
+         }
+@@ -412,13 +428,12 @@
+         return new Color(color.getRed(), color.getGreen(), color.getBlue(), 0);
+     }
+ 
+-    protected static void fillRect(final Graphics g, final Component c) {
++    static void fillRect(final Graphics g, final Component c) {
+         fillRect(g, c, c.getBackground(), 0, 0, c.getWidth(), c.getHeight());
+     }
+ 
+-    protected static void fillRect(final Graphics g, final Component c,
+-                                   final Color color, final int x, final int y,
+-                                   final int w, final int h) {
++    static void fillRect(final Graphics g, final Component c, final Color color,
++                         final int x, final int y, final int w, final int h) {
+         if (!(g instanceof Graphics2D)) {
+             return;
+         }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java ./jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java
+--- /tmp/openjdk/jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java	2013-09-06 14:27:48.000000000 -0400
++++ ./jdk/src/macosx/classes/com/apple/laf/ScreenMenu.java	2013-12-14 21:14:15.000000000 -0500
+@@ -37,26 +37,31 @@
+ import sun.lwawt.LWToolkit;
+ import sun.lwawt.macosx.*;
+ 
+-class ScreenMenu extends Menu implements ContainerListener, ComponentListener, ScreenMenuPropertyHandler {
++final class ScreenMenu extends Menu
++        implements ContainerListener, ComponentListener,
++                   ScreenMenuPropertyHandler {
++
+     static {
+         java.security.AccessController.doPrivileged((PrivilegedAction<?>)new sun.security.action.LoadLibraryAction("awt"));
+     }
+ 
+     // screen menu stuff
+-    public static native long addMenuListeners(ScreenMenu listener, long nativeMenu);
+-    public static native void removeMenuListeners(long modelPtr);
++    private static native long addMenuListeners(ScreenMenu listener, long nativeMenu);
++    private static native void removeMenuListeners(long modelPtr);
+ 
+-    long fModelPtr = 0;
++    private transient long fModelPtr;
+ 
+-    Hashtable<Component, MenuItem> fItems;
+-    JMenu fInvoker;
++    private final Hashtable<Component, MenuItem> fItems;
++    private final JMenu fInvoker;
+ 
+-    Component fLastMouseEventTarget;
+-    Rectangle fLastTargetRect;
++    private Component fLastMouseEventTarget;
++    private Rectangle fLastTargetRect;
+     private volatile Rectangle[] fItemBounds;
+ 
++    private ScreenMenuPropertyListener fPropertyListener;
++
+     // Array of child hashes used to see if we need to recreate the Menu.
+-    int childHashArray[];
++    private int childHashArray[];
+ 
+     ScreenMenu(final JMenu invoker) {
+         super(invoker.getText());
+@@ -69,25 +74,12 @@
+         updateItems();
+     }
+ 
+-    // I'm always 'visible', but never on screen
+-    static class ScreenMenuComponent extends Container {
+-        public boolean isVisible() { return true; }
+-        public boolean isShowing() { return true; }
+-        public void setVisible(final boolean b) {}
+-        public void show() {}
+-    }
+-
+-    ScreenMenuComponent makeScreenMenuComponent() {
+-        return new ScreenMenuComponent();
+-    }
+-
+-
+     /**
+      * Determine if we need to tear down the Menu and re-create it, since the contents may have changed in the Menu opened listener and
+      * we do not get notified of it, because EDT is busy in our code. We only need to update if the menu contents have changed in some
+      * way, such as the number of menu items, the text of the menuitems, icon, shortcut etc.
+      */
+-    static boolean needsUpdate(final Component items[], final int childHashArray[]) {
++    private static boolean needsUpdate(final Component items[], final int childHashArray[]) {
+       if (items == null || childHashArray == null) {
+         return true;
+       }
+@@ -107,7 +99,7 @@
+      * Used to recreate the AWT based Menu structure that implements the Screen Menu.
+      * Also computes hashcode and stores them so that we can compare them later in needsUpdate.
+      */
+-    void updateItems() {
++    private void updateItems() {
+         final int count = fInvoker.getMenuComponentCount();
+         final Component[] items = fInvoker.getMenuComponents();
+         if (needsUpdate(items, childHashArray)) {
+@@ -158,16 +150,14 @@
+             LWCToolkit.invokeAndWait(new Runnable() {
+                 public void run() {
+                     invoker.setSelected(false);
+-
+-            // Null out the tracking rectangles and the array.
++                    // Null out the tracking rectangles and the array.
+                     if (fItemBounds != null) {
+-            for (int i = 0; i < fItemBounds.length; i++) {
+-                fItemBounds[i] = null;
+-            }
++                        for (int i = 0; i < fItemBounds.length; i++) {
++                            fItemBounds[i] = null;
++                        }
+                     }
+-
+-            fItemBounds = null;
+-    }
++                    fItemBounds = null;
++                }
+             }, invoker);
+         } catch (final Exception e) {
+             e.printStackTrace();
+@@ -232,49 +222,56 @@
+         });
+     }
+ 
+-    ScreenMenuPropertyListener fPropertyListener;
++    @Override
+     public void addNotify() {
+-        super.addNotify();
+-        if (fModelPtr == 0) {
+-        fInvoker.addContainerListener(this);
+-        fInvoker.addComponentListener(this);
+-        fPropertyListener = new ScreenMenuPropertyListener(this);
+-        fInvoker.addPropertyChangeListener(fPropertyListener);
+-
+-        final Icon icon = fInvoker.getIcon();
+-        if (icon != null) {
+-            this.setIcon(icon);
+-        }
++        synchronized (getTreeLock()) {
++            super.addNotify();
++            if (fModelPtr == 0) {
++                fInvoker.addContainerListener(this);
++                fInvoker.addComponentListener(this);
++                fPropertyListener = new ScreenMenuPropertyListener(this);
++                fInvoker.addPropertyChangeListener(fPropertyListener);
++
++                final Icon icon = fInvoker.getIcon();
++                if (icon != null) {
++                    setIcon(icon);
++                }
+ 
+-        final String tooltipText = fInvoker.getToolTipText();
+-        if (tooltipText != null) {
+-            this.setToolTipText(tooltipText);
+-        }
+-        final MenuComponentPeer peer = getPeer();
+-        if (peer instanceof CMenu) {
+-            final CMenu menu = (CMenu)peer;
+-            final long nativeMenu = menu.getNativeMenu();
+-            fModelPtr = addMenuListeners(this, nativeMenu);
++                final String tooltipText = fInvoker.getToolTipText();
++                if (tooltipText != null) {
++                    setToolTipText(tooltipText);
++                }
++                final MenuComponentPeer peer = getPeer();
++                if (peer instanceof CMenu) {
++                    final CMenu menu = (CMenu) peer;
++                    final long nativeMenu = menu.getNativeMenu();
++                    fModelPtr = addMenuListeners(this, nativeMenu);
++                }
+             }
+         }
+     }
+ 
++    @Override
+     public void removeNotify() {
+-        // Call super so that the NSMenu has been removed, before we release the delegate in removeMenuListeners
+-        super.removeNotify();
+-        fItems.clear();
+-        if (fModelPtr != 0) {
+-            removeMenuListeners(fModelPtr);
+-            fModelPtr = 0;
+-            fInvoker.removeContainerListener(this);
+-            fInvoker.removeComponentListener(this);
+-            fInvoker.removePropertyChangeListener(fPropertyListener);
++        synchronized (getTreeLock()) {
++            // Call super so that the NSMenu has been removed, before we release
++            // the delegate in removeMenuListeners
++            super.removeNotify();
++            fItems.clear();
++            if (fModelPtr != 0) {
++                removeMenuListeners(fModelPtr);
++                fModelPtr = 0;
++                fInvoker.removeContainerListener(this);
++                fInvoker.removeComponentListener(this);
++                fInvoker.removePropertyChangeListener(fPropertyListener);
++            }
+         }
+     }
+ 
+     /**
+      * Invoked when a component has been added to the container.
+      */
++    @Override
+     public void componentAdded(final ContainerEvent e) {
+         addItem(e.getChild());
+     }
+@@ -282,23 +279,26 @@
+     /**
+      * Invoked when a component has been removed from the container.
+      */
++    @Override
+     public void componentRemoved(final ContainerEvent e) {
+         final Component child = e.getChild();
+         final MenuItem sm = fItems.get(child);
+         if (sm == null) return;
+ 
+-            remove(sm);
+-            fItems.remove(sm);
+-        }
++        remove(sm);
++        fItems.remove(sm);
++    }
+ 
+     /**
+      * Invoked when the component's size changes.
+      */
++    @Override
+     public void componentResized(final ComponentEvent e) {}
+ 
+     /**
+      * Invoked when the component's position changes.
+      */
++    @Override
+     public void componentMoved(final ComponentEvent e) {}
+ 
+     /**
+@@ -306,6 +306,7 @@
+      * See componentHidden - we should still have a MenuItem
+      * it just isn't inserted
+      */
++    @Override
+     public void componentShown(final ComponentEvent e) {
+         setVisible(true);
+     }
+@@ -316,11 +317,12 @@
+      * so we remove the ScreenMenuItem from the ScreenMenu
+      * but leave it in fItems
+      */
++    @Override
+     public void componentHidden(final ComponentEvent e) {
+         setVisible(false);
+     }
+ 
+-    public void setVisible(final boolean b) {
++    private void setVisible(final boolean b) {
+         // Tell our parent to add/remove us
+         final MenuContainer parent = getParent();
+ 
+@@ -328,20 +330,24 @@
+             if (parent instanceof ScreenMenu) {
+                 final ScreenMenu sm = (ScreenMenu)parent;
+                 sm.setChildVisible(fInvoker, b);
+-    }
++            }
+         }
+     }
+ 
++    @Override
+     public void setChildVisible(final JMenuItem child, final boolean b) {
+         fItems.remove(child);
+         updateItems();
+     }
+ 
++    @Override
+     public void setAccelerator(final KeyStroke ks) {}
+ 
+     // only check and radio items can be indeterminate
++    @Override
+     public void setIndeterminate(boolean indeterminate) { }
+ 
++    @Override
+     public void setToolTipText(final String text) {
+         final MenuComponentPeer peer = getPeer();
+         if (!(peer instanceof CMenuItem)) return;
+@@ -350,6 +356,7 @@
+         cmi.setToolTipText(text);
+     }
+ 
++    @Override
+     public void setIcon(final Icon i) {
+         final MenuComponentPeer peer = getPeer();
+         if (!(peer instanceof CMenuItem)) return;
+@@ -369,9 +376,8 @@
+     /**
+      * Gets a hashCode for a JMenu or JMenuItem or subclass so that we can compare for
+      * changes in the Menu.
+-     *
+      */
+-    static int getHashCode(final Component m) {
++    private static int getHashCode(final Component m) {
+         int hashCode = m.hashCode();
+ 
+         if (m instanceof JMenuItem) {
+@@ -403,7 +409,7 @@
+         return hashCode;
+     }
+ 
+-    void addItem(final Component m) {
++    private void addItem(final Component m) {
+         if (!m.isVisible()) return;
+         MenuItem sm = fItems.get(m);
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/macosx/classes/com/apple/resources/MacOSXResourceBundle.java ./jdk/src/macosx/classes/com/apple/resources/MacOSXResourceBundle.java
+--- /tmp/openjdk/jdk/src/macosx/classes/com/apple/resources/MacOSXResourceBundle.java	2013-09-06 14:27:48.000000000 -0400
++++ ./jdk/src/macosx/classes/com/apple/resources/MacOSXResourceBundle.java	1969-12-31 19:00:00.000000000 -0500
+@@ -1,110 +0,0 @@
+-/*
+- * Copyright (c) 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.  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.apple.resources;
+-
+-import java.security.*;
+-import java.util.PropertyResourceBundle;
+-import java.util.ResourceBundle;
+-import java.io.*;
+-
+-public class MacOSXResourceBundle extends PropertyResourceBundle {
+-    MacOSXResourceBundle(InputStream stream) throws IOException {
+-        super(stream);
+-    }
+-
+-    void setItsParent(ResourceBundle rb) {
+-        setParent(rb);
+-    }
+-
+-    public static ResourceBundle getMacResourceBundle(String baseJavaBundle) throws Exception {
+-        return getMacResourceBundle(baseJavaBundle, null);
+-    }
+-
+-    public static ResourceBundle getMacResourceBundle(String baseJavaBundle, String filename) throws Exception {
+-        LoadNativeBundleAction lnba = new LoadNativeBundleAction(baseJavaBundle, filename);
+-        return (ResourceBundle)java.security.AccessController.doPrivileged(lnba);
+-    }
+-}
+-
+-class LoadNativeBundleAction implements PrivilegedExceptionAction {
+-    String mBaseJavaBundle;
+-    String mFilenameOverride;
+-
+-    LoadNativeBundleAction(String baseJavaBundle, String filenameOverride) {
+-        mBaseJavaBundle = baseJavaBundle;
+-        mFilenameOverride = filenameOverride;
+-    }
+-
+-    public Object run() {
+-        java.util.ResourceBundle returnValue = null;
+-        MacOSXResourceBundle macOSrb = null;
+-
+-        // Load the Mac OS X resources.
+-        // Use a base filename if we were given one. Otherwise, we will look for the last piece of the bundle path
+-        // with '.properties' appended. Either way, the native method will take care of the extension.
+-        String filename = mFilenameOverride;
+-
+-        if (filename == null) {
+-            filename = mBaseJavaBundle.substring(mBaseJavaBundle.lastIndexOf('.') + 1);
+-        }
+-
+-        File propsFile = null;
+-        String propertyFileName = getPathToBundleFile(filename);
+-        InputStream stream = null;
+-
+-        try {
+-            propsFile = new File(propertyFileName);
+-            stream = new FileInputStream(propsFile);
+-            stream = new java.io.BufferedInputStream(stream);
+-            macOSrb = new MacOSXResourceBundle(stream);
+-        } catch (Exception e) {
+-            //e.printStackTrace();
+-            //System.out.println("Failed to create resources from application bundle.  Using Java-based resources.");
+-        } finally {
+-            try {
+-                if (stream != null) stream.close();
+-                stream = null;
+-            } catch (Exception e) {
+-                e.printStackTrace();
+-            }
+-        }
+-
+-        returnValue = ResourceBundle.getBundle(mBaseJavaBundle);
+-
+-        // If we have a platform-specific bundle, make it the parent of the generic bundle, so failures propagate up to the parent.
+-        if (returnValue != null) {
+-            if (macOSrb != null) {
+-                macOSrb.setItsParent(returnValue);
+-                returnValue = macOSrb;
+-            }
+-        }
+-
+-        return returnValue;
+-    }
+-
+-    private static native String getPathToBundleFile(String filename);
+-}
+-
+diff -ruN -x .hg /tmp/openjdk/jdk/src/macosx/native/com/apple/resources/MacOSXResourceBundle.m ./jdk/src/macosx/native/com/apple/resources/MacOSXResourceBundle.m
+--- /tmp/openjdk/jdk/src/macosx/native/com/apple/resources/MacOSXResourceBundle.m	2013-09-06 14:27:49.000000000 -0400
++++ ./jdk/src/macosx/native/com/apple/resources/MacOSXResourceBundle.m	1969-12-31 19:00:00.000000000 -0500
+@@ -1,110 +0,0 @@
+-/*
+- * Copyright (c) 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.  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.
+- */
+-
+-#import <dlfcn.h>
+-#import <Cocoa/Cocoa.h>
+-#import <JavaNativeFoundation/JavaNativeFoundation.h>
+-
+-#ifndef MAXPATHLEN
+-#define MAXPATHLEN PATH_MAX
+-#endif
+-
+-static jboolean
+-GetPathFromCurrentBinary(char *buf, jint bufsize)
+-{
+-    Dl_info dlinfo;
+-    dladdr((void *)GetPathFromCurrentBinary, &dlinfo);
+-    if (realpath(dlinfo.dli_fname, buf) == NULL) {
+-//      fprintf(stderr, "Error: realpath(`%s') failed.\n", dlinfo.dli_fname);
+-        return JNI_FALSE;
+-    }
+-
+-    const char *libawt = "lib/libawt.dylib";
+-    int strLen, libawtLen;
+-
+-    strLen = strlen(buf);
+-    libawtLen = strlen(libawt);
+-
+-    if (strLen < libawtLen ||
+-        strcmp(buf + strLen - libawtLen, libawt) != 0) {
+-        return JNI_FALSE;
+-    }
+-
+-    buf[strLen - libawtLen] = '\0';
+-
+-    return JNI_TRUE;
+-}
+-
+-#define JAVA_DLL "libjava.dylib"
+-
+-static jboolean
+-GetJREPath(char *buf, jint bufsize)
+-{
+-    /* try to get the path from the current binary, if not, bail to the framework */
+-    if (GetPathFromCurrentBinary(buf, bufsize) == JNI_TRUE) {
+-        /* does the rest of the JRE exist? */
+-        char libjava[MAXPATHLEN];
+-        snprintf(libjava, MAXPATHLEN, "%s/lib/" JAVA_DLL, buf);
+-        if (access(libjava, F_OK) == 0) {
+-            return JNI_TRUE;
+-        }
+-    }
+-
+-    return JNI_FALSE;
+-}
+-
+-static NSString *getRunningJavaBundle()
+-{
+-    char path[MAXPATHLEN];
+-    GetJREPath(path, MAXPATHLEN);
+-    return [[NSString alloc] initWithFormat:@"%@/bundle", [NSString stringWithUTF8String:path]];
+-}
+-
+-/*
+- * Class:     com_apple_resources_LoadNativeBundleAction
+- * Method:    getPathToBundleFile
+- * Signature: (Ljava/lang/String)Ljava/lang/String;
+- */
+-JNIEXPORT jstring JNICALL
+-Java_com_apple_resources_LoadNativeBundleAction_getPathToBundleFile
+-    (JNIEnv *env, jclass klass, jstring filename)
+-{
+-    jstring returnVal = NULL;
+-    if (filename == NULL) {
+-        return NULL;
+-    }
+-
+-JNF_COCOA_ENTER(env);
+-    NSBundle *javaBundle = [NSBundle bundleWithPath:getRunningJavaBundle()];
+-    NSString *baseFilename = JNFJavaToNSString(env, filename);
+-    NSString *propertyFilePath = [javaBundle pathForResource:baseFilename ofType:@"properties"];
+-
+-    if (propertyFilePath != nil) {
+-        returnVal = JNFNSToJavaString(env, propertyFilePath);
+-    }
+-JNF_COCOA_EXIT(env);
+-
+-    return returnVal;
+-}
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/crypto/provider/DHPrivateKey.java ./jdk/src/share/classes/com/sun/crypto/provider/DHPrivateKey.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/crypto/provider/DHPrivateKey.java	2013-09-06 14:27:53.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/crypto/provider/DHPrivateKey.java	2013-12-14 21:14:17.000000000 -0500
+@@ -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
+@@ -280,22 +280,6 @@
+             return new DHParameterSpec(this.p, this.g);
+     }
+ 
+-    public String toString() {
+-        String LINE_SEP = System.getProperty("line.separator");
+-
+-        StringBuffer strbuf
+-            = new StringBuffer("SunJCE Diffie-Hellman Private Key:"
+-                               + LINE_SEP + "x:" + LINE_SEP
+-                               + Debug.toHexString(this.x)
+-                               + LINE_SEP + "p:" + LINE_SEP
+-                               + Debug.toHexString(this.p)
+-                               + LINE_SEP + "g:" + LINE_SEP
+-                               + Debug.toHexString(this.g));
+-        if (this.l != 0)
+-            strbuf.append(LINE_SEP + "l:" + LINE_SEP + "    " + this.l);
+-        return strbuf.toString();
+-    }
+-
+     private void parseKeyBits() throws InvalidKeyException {
+         try {
+             DerInputStream in = new DerInputStream(this.key);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/demo/jvmti/hprof/Tracker.java ./jdk/src/share/classes/com/sun/demo/jvmti/hprof/Tracker.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/demo/jvmti/hprof/Tracker.java	2013-09-06 14:27:53.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/demo/jvmti/hprof/Tracker.java	2013-12-14 21:14:17.000000000 -0500
+@@ -53,7 +53,10 @@
+ 
+     public static void ObjectInit(Object obj)
+     {
+-        if ( engaged != 0 ) {
++        if ( engaged != 0) {
++            if (obj == null) {
++                throw new IllegalArgumentException("Null object.");
++            }
+             nativeObjectInit(Thread.currentThread(), obj);
+         }
+     }
+@@ -66,7 +69,10 @@
+ 
+     public static void NewArray(Object obj)
+     {
+-        if ( engaged != 0 ) {
++        if ( engaged != 0) {
++            if (obj == null) {
++                throw new IllegalArgumentException("Null object.");
++            }
+             nativeNewArray(Thread.currentThread(), obj);
+         }
+     }
+@@ -82,6 +88,14 @@
+     public static void CallSite(int cnum, int mnum)
+     {
+         if ( engaged != 0 ) {
++            if (cnum < 0) {
++                throw new IllegalArgumentException("Negative class index");
++            }
++
++            if (mnum < 0) {
++                throw new IllegalArgumentException("Negative method index");
++            }
++
+             nativeCallSite(Thread.currentThread(), cnum, mnum);
+         }
+     }
+@@ -95,6 +109,14 @@
+     public static void ReturnSite(int cnum, int mnum)
+     {
+         if ( engaged != 0 ) {
++            if (cnum < 0) {
++                throw new IllegalArgumentException("Negative class index");
++            }
++
++            if (mnum < 0) {
++                throw new IllegalArgumentException("Negative method index");
++            }
++
+             nativeReturnSite(Thread.currentThread(), cnum, mnum);
+         }
+     }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java ./jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java	2013-09-06 14:27:53.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java	2013-12-14 21:14:18.000000000 -0500
+@@ -1160,6 +1160,11 @@
+             target = imRas;
+         }
+         int [] bandSizes = target.getSampleModel().getSampleSize();
++        for (int i = 0; i < bandSizes.length; i++) {
++            if (bandSizes[i] <= 0 || bandSizes[i] > 8) {
++                throw new IIOException("Illegal band size: should be 0 < size <= 8");
++            }
++        }
+ 
+         /*
+          * If the process is sequential, and we have restart markers,
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java ./jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java	2013-09-06 14:27:53.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java	2013-12-14 21:14:18.000000000 -0500
+@@ -490,8 +490,8 @@
+             // handle <= 8-bit samples.  We now check the band sizes and throw
+             // an exception for images, such as USHORT_GRAY, with > 8 bits
+             // per sample.
+-            if (bandSizes[i] > 8) {
+-                throw new IIOException("Sample size must be <= 8");
++            if (bandSizes[i] <= 0 || bandSizes[i] > 8) {
++                throw new IIOException("Illegal band size: should be 0 < size <= 8");
+             }
+             // 4450894 part 2: We expand IndexColorModel images to full 24-
+             // or 32-bit in grabPixels() for each scanline.  For indexed
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/jmx/remote/protocol/iiop/IIOPProxyImpl.java ./jdk/src/share/classes/com/sun/jmx/remote/protocol/iiop/IIOPProxyImpl.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/jmx/remote/protocol/iiop/IIOPProxyImpl.java	2013-09-06 14:27:56.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/jmx/remote/protocol/iiop/IIOPProxyImpl.java	2013-12-14 21:14:09.000000000 -0500
+@@ -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
+@@ -36,13 +36,34 @@
+ import java.rmi.NoSuchObjectException;
+ 
+ import com.sun.jmx.remote.internal.IIOPProxy;
++import java.io.SerializablePermission;
++import java.security.AccessControlContext;
++import java.security.AccessController;
++import java.security.Permissions;
++import java.security.PrivilegedActionException;
++import java.security.PrivilegedExceptionAction;
++import java.security.ProtectionDomain;
+ 
+ /**
+- * An implementatin of IIOPProxy that simply delegates to the appropriate
++ * An implementation of IIOPProxy that simply delegates to the appropriate
+  * RMI-IIOP and CORBA APIs.
+  */
+ 
+ public class IIOPProxyImpl implements IIOPProxy {
++    // special ACC used to initialize the IIOP stub
++    // the only allowed privilege is SerializablePermission("enableSubclassImplementation")
++    private static final AccessControlContext STUB_ACC;
++
++    static {
++        Permissions p = new Permissions();
++        p.add(new SerializablePermission("enableSubclassImplementation"));
++        STUB_ACC = new AccessControlContext(
++            new ProtectionDomain[]{
++                new ProtectionDomain(null, p)
++            }
++        );
++    }
++
+     public IIOPProxyImpl() { }
+ 
+     @Override
+@@ -113,7 +134,24 @@
+     }
+ 
+     @Override
+-    public Remote toStub(Remote obj) throws NoSuchObjectException {
+-        return PortableRemoteObject.toStub(obj);
++    public Remote toStub(final Remote obj) throws NoSuchObjectException {
++        if (System.getSecurityManager() == null) {
++            return PortableRemoteObject.toStub(obj);
++        } else {
++            try {
++                return AccessController.doPrivileged(new PrivilegedExceptionAction<Remote>() {
++
++                    @Override
++                    public Remote run() throws Exception {
++                        return PortableRemoteObject.toStub(obj);
++                    }
++                }, STUB_ACC);
++            } catch (PrivilegedActionException e) {
++                if (e.getException() instanceof NoSuchObjectException) {
++                    throw (NoSuchObjectException)e.getException();
++                }
++                throw new RuntimeException("Unexpected exception type", e.getException());
++            }
++        }
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java ./jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	2013-09-06 14:27:58.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	2013-12-14 21:14:09.000000000 -0500
+@@ -25,11 +25,12 @@
+ 
+ package com.sun.jndi.ldap;
+ 
+-import java.net.URL;
+ import java.net.URLClassLoader;
+ import java.net.MalformedURLException;
++import java.security.AccessControlContext;
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
++import sun.misc.SharedSecrets;
+ 
+ final class VersionHelper12 extends VersionHelper {
+ 
+@@ -82,12 +83,16 @@
+     }
+ 
+     Thread createThread(final Runnable r) {
+-        return (Thread) AccessController.doPrivileged(
+-            new PrivilegedAction() {
+-                public Object run() {
+-                    return new Thread(r);
++        final AccessControlContext acc = AccessController.getContext();
++        // 4290486: doPrivileged is needed to create a thread in
++        // an environment that restricts "modifyThreadGroup".
++        return AccessController.doPrivileged(
++                new PrivilegedAction<Thread>() {
++                    public Thread run() {
++                        return SharedSecrets.getJavaLangAccess()
++                                .newThreadWithAcc(r, acc);
++                    }
+                 }
+-            }
+         );
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java ./jdk/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	2013-09-06 14:27:59.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	2013-12-14 21:14:10.000000000 -0500
+@@ -66,6 +66,11 @@
+      *                     cannot be created, opened, or written to.
+      * @throws UnsupportedOperationException if this operation is not supported.
+      * @throws NullPointerException if <tt>outputFile</tt> is <tt>null</tt>.
++     * @throws SecurityException
++     *         If a security manager exists and its {@link
++     *         java.lang.SecurityManager#checkWrite(java.lang.String)}
++     *         method denies write access to the named file
++     *         or the caller does not have ManagmentPermission("control").
+      */
+     public void dumpHeap(String outputFile, boolean live) throws java.io.IOException;
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream.java ./jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream.java	2013-09-06 14:28:02.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream.java	2013-12-14 21:14:11.000000000 -0500
+@@ -44,6 +44,9 @@
+     }
+ 
+     public void write(byte[] arg0) {
++        if ((Integer.MAX_VALUE - pos) < arg0.length) {
++            throw new OutOfMemoryError();
++        }
+         int newPos = pos + arg0.length;
+         if (newPos > size) {
+             expandSize(newPos);
+@@ -53,6 +56,9 @@
+     }
+ 
+     public void write(byte[] arg0, int arg1, int arg2) {
++        if ((Integer.MAX_VALUE - pos) < arg2) {
++            throw new OutOfMemoryError();
++        }
+         int newPos = pos + arg2;
+         if (newPos > size) {
+             expandSize(newPos);
+@@ -62,6 +68,9 @@
+     }
+ 
+     public void write(int arg0) {
++        if ((Integer.MAX_VALUE - pos) == 0) {
++            throw new OutOfMemoryError();
++        }
+         int newPos = pos + 1;
+         if (newPos > size) {
+             expandSize(newPos);
+@@ -82,7 +91,11 @@
+     private void expandSize(int newPos) {
+         int newSize = size;
+         while (newPos > newSize) {
+-            newSize = newSize<<2;
++            newSize = newSize << 1;
++            // Deal with overflow
++            if (newSize < 0) {
++                newSize = Integer.MAX_VALUE;
++            }
+         }
+         byte newBuf[] = new byte[newSize];
+         System.arraycopy(buf, 0, newBuf, 0, pos);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/script/util/InterfaceImplementor.java ./jdk/src/share/classes/com/sun/script/util/InterfaceImplementor.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/script/util/InterfaceImplementor.java	2013-09-06 14:28:02.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/script/util/InterfaceImplementor.java	2013-12-14 21:14:11.000000000 -0500
+@@ -28,6 +28,7 @@
+ import javax.script.*;
+ import java.lang.reflect.*;
+ import java.security.*;
++import sun.reflect.misc.ReflectUtil;
+ 
+ /*
+  * java.lang.reflect.Proxy based interface implementor. This is meant
+@@ -85,8 +86,18 @@
+         if (! isImplemented(thiz, iface)) {
+             return null;
+         }
++
++        if (System.getSecurityManager() != null &&
++           !Modifier.isPublic(iface.getModifiers())) {
++            throw new SecurityException("attempt to implement non-public interface");
++        }
++
++        // make sure restricted package interfaces are not attempted.
++        ReflectUtil.checkPackageAccess(iface.getName());
++
+         AccessControlContext accCtxt = AccessController.getContext();
+-        return iface.cast(Proxy.newProxyInstance(iface.getClassLoader(),
++        return iface.cast(Proxy.newProxyInstance(
++            getLoaderForProxy(iface),
+             new Class[]{iface},
+             new InterfaceImplementorInvocationHandler(thiz, accCtxt)));
+     }
+@@ -108,4 +119,20 @@
+         // default is identity conversion
+         return args;
+     }
++
++    // get appropriate ClassLoader for generated Proxy class
++    private static ClassLoader getLoaderForProxy(Class<?> iface) {
++        ClassLoader loader = iface.getClassLoader();
++
++        // if bootstrap class, try TCCL
++        if (loader == null) {
++            loader = Thread.currentThread().getContextClassLoader();
++        }
++
++        // if TCCL is also null, try System class loader
++        if (loader == null) {
++            loader = ClassLoader.getSystemClassLoader();
++        }
++        return loader;
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java	2013-12-14 21:14:12.000000000 -0500
+@@ -84,7 +84,7 @@
+             lastPackage = pkg;
+             printClass(clazz);
+             if (clazz.getId() != -1) {
+-                out.print(" [" + clazz.getIdString() + "]");
++                print(" [" + clazz.getIdString() + "]");
+             }
+             out.println("<br>");
+         }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java	2013-12-14 21:14:12.000000000 -0500
+@@ -112,12 +112,12 @@
+         out.println("<h2>Instances</h2>");
+ 
+         printAnchorStart();
+-        out.print("instances/" + encodeForURL(clazz));
++        print("instances/" + encodeForURL(clazz));
+         out.print("\">");
+         out.println("Exclude subclasses</a><br>");
+ 
+         printAnchorStart();
+-        out.print("allInstances/" + encodeForURL(clazz));
++        print("allInstances/" + encodeForURL(clazz));
+         out.print("\">");
+         out.println("Include subclasses</a><br>");
+ 
+@@ -126,19 +126,19 @@
+             out.println("<h2>New Instances</h2>");
+ 
+             printAnchorStart();
+-            out.print("newInstances/" + encodeForURL(clazz));
++            print("newInstances/" + encodeForURL(clazz));
+             out.print("\">");
+             out.println("Exclude subclasses</a><br>");
+ 
+             printAnchorStart();
+-            out.print("allNewInstances/" + encodeForURL(clazz));
++            print("allNewInstances/" + encodeForURL(clazz));
+             out.print("\">");
+             out.println("Include subclasses</a><br>");
+         }
+ 
+         out.println("<h2>References summary by Type</h2>");
+         printAnchorStart();
+-        out.print("refsByType/" + encodeForURL(clazz));
++        print("refsByType/" + encodeForURL(clazz));
+         out.print("\">");
+         out.println("References summary by type</a>");
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/HttpReader.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/HttpReader.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/HttpReader.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/HttpReader.java	2013-12-14 21:14:12.000000000 -0500
+@@ -41,21 +41,17 @@
+ 
+ 
+ import java.net.Socket;
+-import java.net.ServerSocket;
+-import java.net.InetAddress;
+ 
+ import java.io.InputStream;
+ import java.io.BufferedInputStream;
+ import java.io.IOException;
+-import java.io.Writer;
+ import java.io.BufferedWriter;
+ import java.io.PrintWriter;
+-import java.io.OutputStream;
+ import java.io.OutputStreamWriter;
+-import java.io.BufferedOutputStream;
+ 
+ import com.sun.tools.hat.internal.model.Snapshot;
+ import com.sun.tools.hat.internal.oql.OQLEngine;
++import com.sun.tools.hat.internal.util.Misc;
+ 
+ public class HttpReader implements Runnable {
+ 
+@@ -87,7 +83,7 @@
+                 outputError("Protocol error");
+             }
+             int data;
+-            StringBuffer queryBuf = new StringBuffer();
++            StringBuilder queryBuf = new StringBuilder();
+             while ((data = in.read()) != -1 && data != ' ') {
+                 char ch = (char) data;
+                 queryBuf.append(ch);
+@@ -217,7 +213,7 @@
+     private void outputError(String msg) {
+         out.println();
+         out.println("<html><body bgcolor=\"#ffffff\">");
+-        out.println(msg);
++        out.println(Misc.encodeHtml(msg));
+         out.println("</body></html>");
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java	2013-12-14 21:14:12.000000000 -0500
+@@ -102,7 +102,7 @@
+             int count = clazz.getInstancesCount(false);
+             print("" + count);
+             printAnchorStart();
+-            out.print("instances/" + encodeForURL(classes[i]));
++            print("instances/" + encodeForURL(classes[i]));
+             out.print("\"> ");
+             if (count == 1) {
+                 print("instance");
+@@ -121,7 +121,7 @@
+                 }
+                 print("(");
+                 printAnchorStart();
+-                out.print("newInstances/" + encodeForURL(classes[i]));
++                print("newInstances/" + encodeForURL(classes[i]));
+                 out.print("\">");
+                 print("" + newInst + " new");
+                 out.print("</a>) ");
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java	2013-12-14 21:14:12.000000000 -0500
+@@ -54,10 +54,7 @@
+                 out.print((char)ch);
+             }
+         } catch (Exception exp) {
+-            out.println(exp.getMessage());
+-            out.println("<pre>");
+-            exp.printStackTrace(out);
+-            out.println("</pre>");
++            printException(exp);
+         }
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java	2013-12-14 21:14:12.000000000 -0500
+@@ -32,10 +32,7 @@
+ 
+ package com.sun.tools.hat.internal.server;
+ 
+-import com.sun.tools.hat.internal.model.*;
+ import com.sun.tools.hat.internal.oql.*;
+-import com.sun.tools.hat.internal.util.ArraySorter;
+-import com.sun.tools.hat.internal.util.Comparer;
+ 
+ /**
+  * This handles Object Query Language (OQL) queries.
+@@ -68,7 +65,7 @@
+         out.println("<p align='center'>");
+         out.println("<textarea name='query' cols=80 rows=10>");
+         if (oql != null) {
+-            out.println(oql);
++            println(oql);
+         }
+         out.println("</textarea>");
+         out.println("</p>");
+@@ -91,10 +88,7 @@
+                          try {
+                              out.println(engine.toHtml(o));
+                          } catch (Exception e) {
+-                             out.println(e.getMessage());
+-                             out.println("<pre>");
+-                             e.printStackTrace(out);
+-                             out.println("</pre>");
++                             printException(e);
+                          }
+                          out.println("</td></tr>");
+                          return false;
+@@ -102,10 +96,7 @@
+                  });
+             out.println("</table>");
+         } catch (OQLException exp) {
+-            out.println(exp.getMessage());
+-            out.println("<pre>");
+-            exp.printStackTrace(out);
+-            out.println("</pre>");
++            printException(exp);
+         }
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java	2013-12-14 21:14:12.000000000 -0500
+@@ -36,6 +36,7 @@
+ 
+ import com.sun.tools.hat.internal.model.*;
+ import com.sun.tools.hat.internal.util.Misc;
++import java.io.StringWriter;
+ 
+ import java.net.URLEncoder;
+ import java.io.UnsupportedEncodingException;
+@@ -96,7 +97,7 @@
+     }
+ 
+     protected void error(String msg) {
+-        out.println(msg);
++        println(msg);
+     }
+ 
+     protected void printAnchorStart() {
+@@ -160,7 +161,6 @@
+             out.println("null");
+             return;
+         }
+-        String name = clazz.getName();
+         printAnchorStart();
+         out.print("class/");
+         print(encodeForURL(clazz));
+@@ -208,6 +208,15 @@
+         }
+     }
+ 
++    protected void printException(Throwable t) {
++        println(t.getMessage());
++        out.println("<pre>");
++        StringWriter sw = new StringWriter();
++        t.printStackTrace(new PrintWriter(sw));
++        print(sw.toString());
++        out.println("</pre>");
++    }
++
+     protected void printHex(long addr) {
+         if (snapshot.getIdentifierSize() == 4) {
+             out.print(Misc.toHex((int)addr));
+@@ -223,4 +232,8 @@
+     protected void print(String str) {
+         out.print(Misc.encodeHtml(str));
+     }
++
++    protected void println(String str) {
++        out.println(Misc.encodeHtml(str));
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java ./jdk/src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java
+--- /tmp/openjdk/jdk/src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java	2013-09-06 14:28:04.000000000 -0400
++++ ./jdk/src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java	2013-12-14 21:14:12.000000000 -0500
+@@ -89,7 +89,7 @@
+             out.println("<p align='center'>");
+             printClass(clazz);
+             if (clazz.getId() != -1) {
+-                out.println("[" + clazz.getIdString() + "]");
++                println("[" + clazz.getIdString() + "]");
+             }
+             out.println("</p>");
+ 
+@@ -125,9 +125,9 @@
+             JavaClass clazz = classes[i];
+             out.println("<tr><td>");
+             out.print("<a href='/refsByType/");
+-            out.print(clazz.getIdString());
++            print(clazz.getIdString());
+             out.print("'>");
+-            out.print(clazz.getName());
++            print(clazz.getName());
+             out.println("</a>");
+             out.println("</td><td>");
+             out.println(map.get(clazz));
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java ./jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java
+--- /tmp/openjdk/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java	2013-09-06 14:28:06.000000000 -0400
++++ ./jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java	2013-12-14 21:14:15.000000000 -0500
+@@ -25,12 +25,14 @@
+ 
+ package java.awt.datatransfer;
+ 
+-import java.awt.Toolkit;
+ import java.io.*;
+ import java.nio.*;
+ import java.util.*;
+ 
+ import sun.awt.datatransfer.DataTransferer;
++import sun.reflect.misc.ReflectUtil;
++
++import static sun.security.util.SecurityConstants.GET_CLASSLOADER_PERMISSION;
+ 
+ /**
+  * A {@code DataFlavor} provides meta information about data. {@code DataFlavor}
+@@ -117,27 +119,33 @@
+                                                    ClassLoader fallback)
+         throws ClassNotFoundException
+     {
+-        ClassLoader systemClassLoader = (ClassLoader)
+-            java.security.AccessController.doPrivileged(
+-                new java.security.PrivilegedAction() {
+-                    public Object run() {
+-                        ClassLoader cl = Thread.currentThread().
+-                            getContextClassLoader();
+-                        return (cl != null)
+-                            ? cl
+-                            : ClassLoader.getSystemClassLoader();
+-                    }
+-                    });
+-
++        ReflectUtil.checkPackageAccess(className);
+         try {
+-            return Class.forName(className, true, systemClassLoader);
+-        } catch (ClassNotFoundException e2) {
+-            if (fallback != null) {
+-                return Class.forName(className, true, fallback);
+-            } else {
+-                throw new ClassNotFoundException(className);
++            SecurityManager sm = System.getSecurityManager();
++            if (sm != null) {
++                sm.checkPermission(GET_CLASSLOADER_PERMISSION);
++            }
++            ClassLoader loader = ClassLoader.getSystemClassLoader();
++            try {
++                // bootstrap class loader and system class loader if present
++                return Class.forName(className, true, loader);
++            }
++            catch (ClassNotFoundException exception) {
++                // thread context class loader if and only if present
++                loader = Thread.currentThread().getContextClassLoader();
++                if (loader != null) {
++                    try {
++                        return Class.forName(className, true, loader);
++                    }
++                    catch (ClassNotFoundException e) {
++                        // fallback to user's class loader
++                    }
++                }
+             }
++        } catch (SecurityException exception) {
++            // ignore secured class loaders
+         }
++        return Class.forName(className, true, fallback);
+     }
+ 
+     /*
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/beans/Beans.java ./jdk/src/share/classes/java/beans/Beans.java
+--- /tmp/openjdk/jdk/src/share/classes/java/beans/Beans.java	2013-09-06 14:28:08.000000000 -0400
++++ ./jdk/src/share/classes/java/beans/Beans.java	2013-12-14 21:14:16.000000000 -0500
+@@ -42,6 +42,8 @@
+ import java.io.ObjectStreamClass;
+ import java.io.StreamCorruptedException;
+ 
++import java.lang.reflect.Modifier;
++
+ import java.net.URL;
+ 
+ import java.security.AccessController;
+@@ -222,6 +224,10 @@
+                 throw ex;
+             }
+ 
++            if (!Modifier.isPublic(cl.getModifiers())) {
++                throw new ClassNotFoundException("" + cl + " : no public access");
++            }
++
+             /*
+              * Try to instantiate the class.
+              */
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/beans/DefaultPersistenceDelegate.java ./jdk/src/share/classes/java/beans/DefaultPersistenceDelegate.java
+--- /tmp/openjdk/jdk/src/share/classes/java/beans/DefaultPersistenceDelegate.java	2013-09-06 14:28:08.000000000 -0400
++++ ./jdk/src/share/classes/java/beans/DefaultPersistenceDelegate.java	2013-12-14 21:14:16.000000000 -0500
+@@ -220,6 +220,9 @@
+     // Write out the properties of this instance.
+     private void initBean(Class type, Object oldInstance, Object newInstance, Encoder out) {
+         for (Field field : type.getFields()) {
++            if (!ReflectUtil.isPackageAccessible(field.getDeclaringClass())) {
++                continue;
++            }
+             int mod = field.getModifiers();
+             if (Modifier.isFinal(mod) || Modifier.isStatic(mod) || Modifier.isTransient(mod)) {
+                 continue;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/beans/MetaData.java ./jdk/src/share/classes/java/beans/MetaData.java
+--- /tmp/openjdk/jdk/src/share/classes/java/beans/MetaData.java	2013-09-06 14:28:08.000000000 -0400
++++ ./jdk/src/share/classes/java/beans/MetaData.java	2013-12-14 21:14:16.000000000 -0500
+@@ -42,6 +42,7 @@
+ import java.lang.reflect.Constructor;
+ import java.lang.reflect.Field;
+ import java.lang.reflect.Method;
++import java.lang.reflect.Modifier;
+ import java.lang.reflect.InvocationTargetException;
+ 
+ import java.security.AccessController;
+@@ -56,7 +57,7 @@
+ 
+ import sun.swing.PrintColorUIResource;
+ 
+-import java.util.Objects;
++import static sun.reflect.misc.ReflectUtil.isPackageAccessible;
+ 
+ /*
+  * Like the <code>Intropector</code>, the <code>MetaData</code> class
+@@ -850,13 +851,15 @@
+ 
+ static class StaticFieldsPersistenceDelegate extends PersistenceDelegate {
+     protected void installFields(Encoder out, Class<?> cls) {
+-        Field fields[] = cls.getFields();
+-        for(int i = 0; i < fields.length; i++) {
+-            Field field = fields[i];
+-            // Don't install primitives, their identity will not be preserved
+-            // by wrapping.
+-            if (Object.class.isAssignableFrom(field.getType())) {
+-                out.writeExpression(new Expression(field, "get", new Object[]{null}));
++        if (Modifier.isPublic(cls.getModifiers()) && isPackageAccessible(cls)) {
++            Field fields[] = cls.getFields();
++            for(int i = 0; i < fields.length; i++) {
++                Field field = fields[i];
++                // Don't install primitives, their identity will not be preserved
++                // by wrapping.
++                if (Object.class.isAssignableFrom(field.getType())) {
++                    out.writeExpression(new Expression(field, "get", new Object[]{null}));
++                }
+             }
+         }
+     }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/io/File.java ./jdk/src/share/classes/java/io/File.java
+--- /tmp/openjdk/jdk/src/share/classes/java/io/File.java	2013-09-06 14:28:09.000000000 -0400
++++ ./jdk/src/share/classes/java/io/File.java	2013-12-14 21:14:16.000000000 -0500
+@@ -1885,10 +1885,18 @@
+             } else {
+                 n = Math.abs(n);
+             }
++
++            // Use only the file name from the supplied prefix
++            prefix = (new File(prefix)).getName();
++
+             String name = prefix + Long.toString(n) + suffix;
+             File f = new File(dir, name);
+-            if (!name.equals(f.getName()))
+-                throw new IOException("Unable to create temporary file");
++            if (!name.equals(f.getName())) {
++                if (System.getSecurityManager() != null)
++                    throw new IOException("Unable to create temporary file");
++                else
++                    throw new IOException("Unable to create temporary file, " + f);
++            }
+             return f;
+         }
+     }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java ./jdk/src/share/classes/java/io/ObjectInputStream.java
+--- /tmp/openjdk/jdk/src/share/classes/java/io/ObjectInputStream.java	2013-09-06 14:28:09.000000000 -0400
++++ ./jdk/src/share/classes/java/io/ObjectInputStream.java	2013-12-14 21:14:16.000000000 -0500
+@@ -490,11 +490,12 @@
+     public void defaultReadObject()
+         throws IOException, ClassNotFoundException
+     {
+-        if (curContext == null) {
++        SerialCallbackContext ctx = curContext;
++        if (ctx == null) {
+             throw new NotActiveException("not in call to readObject");
+         }
+-        Object curObj = curContext.getObj();
+-        ObjectStreamClass curDesc = curContext.getDesc();
++        Object curObj = ctx.getObj();
++        ObjectStreamClass curDesc = ctx.getDesc();
+         bin.setBlockDataMode(false);
+         defaultReadFields(curObj, curDesc);
+         bin.setBlockDataMode(true);
+@@ -528,11 +529,12 @@
+     public ObjectInputStream.GetField readFields()
+         throws IOException, ClassNotFoundException
+     {
+-        if (curContext == null) {
++        SerialCallbackContext ctx = curContext;
++        if (ctx == null) {
+             throw new NotActiveException("not in call to readObject");
+         }
+-        Object curObj = curContext.getObj();
+-        ObjectStreamClass curDesc = curContext.getDesc();
++        Object curObj = ctx.getObj();
++        ObjectStreamClass curDesc = ctx.getDesc();
+         bin.setBlockDataMode(false);
+         GetFieldImpl getField = new GetFieldImpl(curDesc);
+         getField.readFields();
+@@ -1965,7 +1967,6 @@
+     private void defaultReadFields(Object obj, ObjectStreamClass desc)
+         throws IOException
+     {
+-        // REMIND: is isInstance check necessary?
+         Class cl = desc.forClass();
+         if (cl != null && obj != null && !cl.isInstance(obj)) {
+             throw new ClassCastException();
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/io/ObjectOutputStream.java ./jdk/src/share/classes/java/io/ObjectOutputStream.java
+--- /tmp/openjdk/jdk/src/share/classes/java/io/ObjectOutputStream.java	2013-09-06 14:28:09.000000000 -0400
++++ ./jdk/src/share/classes/java/io/ObjectOutputStream.java	2013-12-14 21:14:16.000000000 -0500
+@@ -430,11 +430,12 @@
+      *          <code>OutputStream</code>
+      */
+     public void defaultWriteObject() throws IOException {
+-        if ( curContext == null ) {
++        SerialCallbackContext ctx = curContext;
++        if (ctx == null) {
+             throw new NotActiveException("not in call to writeObject");
+         }
+-        Object curObj = curContext.getObj();
+-        ObjectStreamClass curDesc = curContext.getDesc();
++        Object curObj = ctx.getObj();
++        ObjectStreamClass curDesc = ctx.getDesc();
+         bout.setBlockDataMode(false);
+         defaultWriteFields(curObj, curDesc);
+         bout.setBlockDataMode(true);
+@@ -452,11 +453,12 @@
+      */
+     public ObjectOutputStream.PutField putFields() throws IOException {
+         if (curPut == null) {
+-            if (curContext == null) {
++            SerialCallbackContext ctx = curContext;
++            if (ctx == null) {
+                 throw new NotActiveException("not in call to writeObject");
+             }
+-            Object curObj = curContext.getObj();
+-            ObjectStreamClass curDesc = curContext.getDesc();
++            Object curObj = ctx.getObj();
++            ObjectStreamClass curDesc = ctx.getDesc();
+             curPut = new PutFieldImpl(curDesc);
+         }
+         return curPut;
+@@ -1516,7 +1518,11 @@
+     private void defaultWriteFields(Object obj, ObjectStreamClass desc)
+         throws IOException
+     {
+-        // REMIND: perform conservative isInstance check here?
++        Class<?> cl = desc.forClass();
++        if (cl != null && obj != null && !cl.isInstance(obj)) {
++            throw new ClassCastException();
++        }
++
+         desc.checkDefaultSerialize();
+ 
+         int primDataSize = desc.getPrimDataSize();
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/Class.java ./jdk/src/share/classes/java/lang/Class.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/Class.java	2013-09-06 14:28:09.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/Class.java	2013-12-14 21:14:16.000000000 -0500
+@@ -1096,7 +1096,17 @@
+      * @return the declaring class for this class
+      * @since JDK1.1
+      */
+-    public native Class<?> getDeclaringClass();
++    @CallerSensitive
++    public Class<?> getDeclaringClass() {
++        final Class<?> candidate = getDeclaringClass0();
++
++        if (candidate != null)
++            candidate.checkPackageAccess(
++                    ClassLoader.getClassLoader(Reflection.getCallerClass()), true);
++        return candidate;
++    }
++
++    private native Class<?> getDeclaringClass0();
+ 
+ 
+     /**
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/ClassLoader.java ./jdk/src/share/classes/java/lang/ClassLoader.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/ClassLoader.java	2013-09-06 14:28:09.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/ClassLoader.java	2013-12-14 21:14:16.000000000 -0500
+@@ -58,6 +58,7 @@
+ import sun.misc.VM;
+ import sun.reflect.CallerSensitive;
+ import sun.reflect.Reflection;
++import sun.reflect.misc.ReflectUtil;
+ import sun.security.util.SecurityConstants;
+ 
+ /**
+@@ -487,6 +488,13 @@
+     private void checkPackageAccess(Class cls, ProtectionDomain pd) {
+         final SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
++            if (ReflectUtil.isNonPublicProxyClass(cls)) {
++                for (Class intf: cls.getInterfaces()) {
++                    checkPackageAccess(intf, pd);
++                }
++                return;
++            }
++
+             final String name = cls.getName();
+             final int i = name.lastIndexOf('.');
+             if (i != -1) {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/System.java ./jdk/src/share/classes/java/lang/System.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/System.java	2013-09-06 14:28:10.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/System.java	2013-12-14 21:14:16.000000000 -0500
+@@ -25,6 +25,7 @@
+ package java.lang;
+ 
+ import java.io.*;
++import java.security.AccessControlContext;
+ import java.util.Properties;
+ import java.util.PropertyPermission;
+ import java.util.StringTokenizer;
+@@ -1202,6 +1203,9 @@
+             public int getStringHash32(String string) {
+                 return string.hash32();
+             }
++            public Thread newThreadWithAcc(Runnable target, AccessControlContext acc) {
++                return new Thread(target, acc);
++            }
+         });
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/Thread.java ./jdk/src/share/classes/java/lang/Thread.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/Thread.java	2013-09-06 14:28:10.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/Thread.java	2013-12-14 21:14:16.000000000 -0500
+@@ -341,6 +341,15 @@
+     }
+ 
+     /**
++     * Initializes a Thread with the current AccessControlContext.
++     * @see #init(ThreadGroup,Runnable,String,long,AccessControlContext)
++     */
++    private void init(ThreadGroup g, Runnable target, String name,
++                      long stackSize) {
++        init(g, target, name, stackSize, null);
++    }
++
++    /**
+      * Initializes a Thread.
+      *
+      * @param g the Thread group
+@@ -348,9 +357,11 @@
+      * @param name the name of the new Thread
+      * @param stackSize the desired stack size for the new thread, or
+      *        zero to indicate that this parameter is to be ignored.
++     * @param acc the AccessControlContext to inherit, or
++     *            AccessController.getContext() if null
+      */
+     private void init(ThreadGroup g, Runnable target, String name,
+-                      long stackSize) {
++                      long stackSize, AccessControlContext acc) {
+         if (name == null) {
+             throw new NullPointerException("name cannot be null");
+         }
+@@ -396,7 +407,8 @@
+             this.contextClassLoader = parent.getContextClassLoader();
+         else
+             this.contextClassLoader = parent.contextClassLoader;
+-        this.inheritedAccessControlContext = AccessController.getContext();
++        this.inheritedAccessControlContext =
++                acc != null ? acc : AccessController.getContext();
+         this.target = target;
+         setPriority(priority);
+         if (parent.inheritableThreadLocals != null)
+@@ -449,6 +461,14 @@
+     }
+ 
+     /**
++     * Creates a new Thread that inherits the given AccessControlContext.
++     * This is not a public constructor.
++     */
++    Thread(Runnable target, AccessControlContext acc) {
++        init(null, target, "Thread-" + nextThreadNum(), 0, acc);
++    }
++
++    /**
+      * Allocates a new {@code Thread} object. This constructor has the same
+      * effect as {@linkplain #Thread(ThreadGroup,Runnable,String) Thread}
+      * {@code (group, target, gname)} ,where {@code gname} is a newly generated
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java ./jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-09-06 14:28:10.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-12-14 21:14:17.000000000 -0500
+@@ -456,6 +456,7 @@
+         case "getDeclaredField":
+         case "getDeclaredMethod":
+         case "getDeclaredConstructor":
++        case "getDeclaringClass":
+         case "getEnclosingClass":
+         case "getEnclosingMethod":
+         case "getEnclosingConstructor":
+@@ -491,6 +492,7 @@
+             return defc == java.lang.ClassLoader.class;
+         case "registerAsParallelCapable":
+             return defc == java.lang.ClassLoader.class;
++        case "getInvocationHandler":
+         case "getProxyClass":
+         case "newProxyInstance":
+             return defc == java.lang.reflect.Proxy.class;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/invoke/MethodHandles.java ./jdk/src/share/classes/java/lang/invoke/MethodHandles.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	2013-09-06 14:28:10.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/invoke/MethodHandles.java	2013-12-14 21:14:17.000000000 -0500
+@@ -426,7 +426,7 @@
+ 
+         Lookup(Class<?> lookupClass) {
+             this(lookupClass, ALL_MODES);
+-            checkUnprivilegedlookupClass(lookupClass);
++            checkUnprivilegedlookupClass(lookupClass, ALL_MODES);
+         }
+ 
+         private Lookup(Class<?> lookupClass, int allowedModes) {
+@@ -480,7 +480,7 @@
+                 // No permissions.
+                 newModes = 0;
+             }
+-            checkUnprivilegedlookupClass(requestedLookupClass);
++            checkUnprivilegedlookupClass(requestedLookupClass, newModes);
+             return new Lookup(requestedLookupClass, newModes);
+         }
+ 
+@@ -496,10 +496,19 @@
+         /** Package-private version of lookup which is trusted. */
+         static final Lookup IMPL_LOOKUP = new Lookup(Object.class, TRUSTED);
+ 
+-        private static void checkUnprivilegedlookupClass(Class<?> lookupClass) {
++        private static void checkUnprivilegedlookupClass(Class<?> lookupClass, int allowedModes) {
+             String name = lookupClass.getName();
+             if (name.startsWith("java.lang.invoke."))
+                 throw newIllegalArgumentException("illegal lookupClass: "+lookupClass);
++
++            // For caller-sensitive MethodHandles.lookup()
++            // disallow lookup more restricted packages
++            if (allowedModes == ALL_MODES && lookupClass.getClassLoader() == null) {
++                if (name.startsWith("java.") ||
++                        (name.startsWith("sun.") && !name.startsWith("sun.invoke."))) {
++                    throw newIllegalArgumentException("illegal lookupClass: " + lookupClass);
++                }
++            }
+         }
+ 
+         /**
+@@ -1316,6 +1325,10 @@
+                         : resolveOrFail(refKind, defc, name, (Class<?>) type);
+                 return getDirectField(refKind, defc, field);
+             } else if (MethodHandleNatives.refKindIsMethod(refKind)) {
++                if (defc == MethodHandle.class && refKind == REF_invokeVirtual) {
++                    MethodHandle mh = findVirtualForMH(name, (MethodType) type);
++                    if (mh != null)  return mh;
++                }
+                 MemberName method = (resolved != null) ? resolved
+                         : resolveOrFail(refKind, defc, name, (MethodType) type);
+                 return getDirectMethod(refKind, defc, method, lookupClass);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/lang/reflect/Proxy.java ./jdk/src/share/classes/java/lang/reflect/Proxy.java
+--- /tmp/openjdk/jdk/src/share/classes/java/lang/reflect/Proxy.java	2013-09-06 14:28:11.000000000 -0400
++++ ./jdk/src/share/classes/java/lang/reflect/Proxy.java	2013-12-14 21:31:54.000000000 -0500
+@@ -788,6 +788,7 @@
+      * @throws  IllegalArgumentException if the argument is not a
+      *          proxy instance
+      */
++    @CallerSensitive
+     public static InvocationHandler getInvocationHandler(Object proxy)
+         throws IllegalArgumentException
+     {
+@@ -798,8 +799,19 @@
+             throw new IllegalArgumentException("not a proxy instance");
+         }
+ 
+-        Proxy p = (Proxy) proxy;
+-        return p.h;
++        final Proxy p = (Proxy) proxy;
++        final InvocationHandler ih = p.h;
++        if (System.getSecurityManager() != null) {
++            Class<?> ihClass = ih.getClass();
++            Class<?> caller = Reflection.getCallerClass();
++            if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(),
++                                                    ihClass.getClassLoader()))
++            {
++                ReflectUtil.checkPackageAccess(ihClass);
++            }
++        }
++
++        return ih;
+     }
+ 
+     private static native Class defineClass0(ClassLoader loader, String name,
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/net/Inet6Address.java ./jdk/src/share/classes/java/net/Inet6Address.java
+--- /tmp/openjdk/jdk/src/share/classes/java/net/Inet6Address.java	2013-09-06 14:28:11.000000000 -0400
++++ ./jdk/src/share/classes/java/net/Inet6Address.java	2013-12-14 21:14:17.000000000 -0500
+@@ -26,6 +26,8 @@
+ package java.net;
+ 
+ import java.io.ObjectInputStream;
++import java.io.ObjectOutputStream;
++import java.io.ObjectStreamField;
+ import java.io.IOException;
+ import java.io.InvalidObjectException;
+ import java.util.Enumeration;
+@@ -171,36 +173,196 @@
+      */
+     private transient int cached_scope_id = 0;
+ 
+-    /**
+-     * Holds a 128-bit (16 bytes) IPv6 address.
+-     *
+-     * @serial
+-     */
+-    byte[] ipaddress;
++    private class Inet6AddressHolder {
+ 
+-    /**
+-     * scope_id. The scope specified when the object is created. If the object is created
+-     * with an interface name, then the scope_id is not determined until the time it is needed.
+-     */
+-    private int scope_id = 0;
++        private Inet6AddressHolder() {
++            ipaddress = new byte[INADDRSZ];
++        }
+ 
+-    /**
+-     * This will be set to true when the scope_id field contains a valid
+-     * integer scope_id.
+-     */
+-    private boolean scope_id_set = false;
++        private Inet6AddressHolder(
++            byte[] ipaddress, int scope_id, boolean scope_id_set,
++            NetworkInterface ifname, boolean scope_ifname_set)
++        {
++            this.ipaddress = ipaddress;
++            this.scope_id = scope_id;
++            this.scope_id_set = scope_id_set;
++            this.scope_ifname_set = scope_ifname_set;
++            this.scope_ifname = ifname;
++        }
++
++        /**
++         * Holds a 128-bit (16 bytes) IPv6 address.
++         */
++        byte[] ipaddress;
++
++        /**
++         * scope_id. The scope specified when the object is created. If the object is created
++         * with an interface name, then the scope_id is not determined until the time it is needed.
++         */
++        int scope_id = 0;
++
++        /**
++         * This will be set to true when the scope_id field contains a valid
++         * integer scope_id.
++         */
++        boolean scope_id_set = false;
++
++        /**
++         * scoped interface. scope_id is derived from this as the scope_id of the first
++         * address whose scope is the same as this address for the named interface.
++         */
++        NetworkInterface scope_ifname = null;
++
++        /**
++         * set if the object is constructed with a scoped interface instead of a
++         * numeric scope id.
++         */
++        boolean scope_ifname_set = false;
++
++        void setAddr(byte addr[]) {
++            if (addr.length == INADDRSZ) { // normal IPv6 address
++                System.arraycopy(addr, 0, ipaddress, 0, INADDRSZ);
++            }
++        }
+ 
+-    /**
+-     * scoped interface. scope_id is derived from this as the scope_id of the first
+-     * address whose scope is the same as this address for the named interface.
+-     */
+-    private transient NetworkInterface scope_ifname = null;
++        void init(byte addr[], int scope_id) {
++            setAddr(addr);
+ 
+-    /**
+-     * set if the object is constructed with a scoped interface instead of a
+-     * numeric scope id.
+-     */
+-    private boolean scope_ifname_set = false;
++            if (scope_id >= 0) {
++                this.scope_id = scope_id;
++                this.scope_id_set = true;
++            }
++        }
++
++        void init(byte addr[], NetworkInterface nif)
++            throws UnknownHostException
++        {
++            setAddr(addr);
++
++            if (nif != null) {
++                this.scope_id = deriveNumericScope(ipaddress, nif);
++                this.scope_id_set = true;
++                this.scope_ifname = nif;
++                this.scope_ifname_set = true;
++            }
++        }
++
++        String getHostAddress() {
++            String s = numericToTextFormat(ipaddress);
++            if (scope_ifname_set) { /* must check this first */
++                s = s + "%" + scope_ifname.getName();
++            } else if (scope_id_set) {
++                s = s + "%" + scope_id;
++            }
++            return s;
++        }
++
++        public boolean equals(Object o) {
++            if (! (o instanceof Inet6AddressHolder)) {
++                return false;
++            }
++            Inet6AddressHolder that = (Inet6AddressHolder)o;
++
++            for (int i = 0; i < INADDRSZ; i++) {
++                if (this.ipaddress[i] != that.ipaddress[i])
++                    return false;
++            }
++
++            return true;
++        }
++
++        public int hashCode() {
++            if (ipaddress != null) {
++
++                int hash = 0;
++                int i=0;
++                while (i<INADDRSZ) {
++                    int j=0;
++                    int component=0;
++                    while (j<4 && i<INADDRSZ) {
++                        component = (component << 8) + ipaddress[i];
++                        j++;
++                        i++;
++                    }
++                    hash += component;
++                }
++                return hash;
++
++            } else {
++                return 0;
++            }
++        }
++
++        boolean isIPv4CompatibleAddress() {
++            if ((ipaddress[0] == 0x00) && (ipaddress[1] == 0x00) &&
++                (ipaddress[2] == 0x00) && (ipaddress[3] == 0x00) &&
++                (ipaddress[4] == 0x00) && (ipaddress[5] == 0x00) &&
++                (ipaddress[6] == 0x00) && (ipaddress[7] == 0x00) &&
++                (ipaddress[8] == 0x00) && (ipaddress[9] == 0x00) &&
++                (ipaddress[10] == 0x00) && (ipaddress[11] == 0x00))  {
++                return true;
++            }
++            return false;
++        }
++
++        boolean isMulticastAddress() {
++            return ((ipaddress[0] & 0xff) == 0xff);
++        }
++
++        boolean isAnyLocalAddress() {
++            byte test = 0x00;
++            for (int i = 0; i < INADDRSZ; i++) {
++                test |= ipaddress[i];
++            }
++            return (test == 0x00);
++        }
++
++        boolean isLoopbackAddress() {
++            byte test = 0x00;
++            for (int i = 0; i < 15; i++) {
++                test |= ipaddress[i];
++            }
++            return (test == 0x00) && (ipaddress[15] == 0x01);
++        }
++
++        boolean isLinkLocalAddress() {
++            return ((ipaddress[0] & 0xff) == 0xfe
++                    && (ipaddress[1] & 0xc0) == 0x80);
++        }
++
++
++        boolean isSiteLocalAddress() {
++            return ((ipaddress[0] & 0xff) == 0xfe
++                    && (ipaddress[1] & 0xc0) == 0xc0);
++        }
++
++        boolean isMCGlobal() {
++            return ((ipaddress[0] & 0xff) == 0xff
++                    && (ipaddress[1] & 0x0f) == 0x0e);
++        }
++
++        boolean isMCNodeLocal() {
++            return ((ipaddress[0] & 0xff) == 0xff
++                    && (ipaddress[1] & 0x0f) == 0x01);
++        }
++
++        boolean isMCLinkLocal() {
++            return ((ipaddress[0] & 0xff) == 0xff
++                    && (ipaddress[1] & 0x0f) == 0x02);
++        }
++
++        boolean isMCSiteLocal() {
++            return ((ipaddress[0] & 0xff) == 0xff
++                    && (ipaddress[1] & 0x0f) == 0x05);
++        }
++
++        boolean isMCOrgLocal() {
++            return ((ipaddress[0] & 0xff) == 0xff
++                    && (ipaddress[1] & 0x0f) == 0x08);
++        }
++    }
++
++    private final transient Inet6AddressHolder holder6;
+ 
+     private static final long serialVersionUID = 6880410070516793377L;
+ 
+@@ -213,37 +375,33 @@
+ 
+     Inet6Address() {
+         super();
+-        holder().hostName = null;
+-        ipaddress = new byte[INADDRSZ];
+-        holder().family = IPv6;
++        holder.init(null, IPv6);
++        holder6 = new Inet6AddressHolder();
+     }
+ 
+     /* checking of value for scope_id should be done by caller
+      * scope_id must be >= 0, or -1 to indicate not being set
+      */
+     Inet6Address(String hostName, byte addr[], int scope_id) {
+-        holder().hostName = hostName;
+-        if (addr.length == INADDRSZ) { // normal IPv6 address
+-            holder().family = IPv6;
+-            ipaddress = addr.clone();
+-        }
+-        if (scope_id >= 0) {
+-            this.scope_id = scope_id;
+-            scope_id_set = true;
+-        }
++        holder.init(hostName, IPv6);
++        holder6 = new Inet6AddressHolder();
++        holder6.init(addr, scope_id);
+     }
+ 
+     Inet6Address(String hostName, byte addr[]) {
++        holder6 = new Inet6AddressHolder();
+         try {
+             initif (hostName, addr, null);
+         } catch (UnknownHostException e) {} /* cant happen if ifname is null */
+     }
+ 
+     Inet6Address (String hostName, byte addr[], NetworkInterface nif) throws UnknownHostException {
++        holder6 = new Inet6AddressHolder();
+         initif (hostName, addr, nif);
+     }
+ 
+     Inet6Address (String hostName, byte addr[], String ifname) throws UnknownHostException {
++        holder6 = new Inet6AddressHolder();
+         initstr (hostName, addr, ifname);
+     }
+ 
+@@ -325,17 +483,13 @@
+     }
+ 
+     private void initif(String hostName, byte addr[],NetworkInterface nif) throws UnknownHostException {
+-        holder().hostName = hostName;
++        int family = -1;
++        holder6.init(addr, nif);
++
+         if (addr.length == INADDRSZ) { // normal IPv6 address
+-            holder().family = IPv6;
+-            ipaddress = addr.clone();
+-        }
+-        if (nif != null) {
+-            this.scope_ifname = nif;
+-            scope_ifname_set = true;
+-            scope_id = deriveNumericScope (nif);
+-            scope_id_set = true;
++            family = IPv6;
+         }
++        holder.init(hostName, family);
+     }
+ 
+     /* check the two Ipv6 addresses and return false if they are both
+@@ -343,18 +497,21 @@
+      * (ie. one is sitelocal and the other linklocal)
+      * return true otherwise.
+      */
+-    private boolean differentLocalAddressTypes(Inet6Address other) {
++    private static boolean differentLocalAddressTypes(
++        byte[] thisAddr, byte[] otherAddr) {
+ 
+-        if (isLinkLocalAddress() && !other.isLinkLocalAddress()) {
++        if (Inet6Address.isLinkLocalAddress(thisAddr) &&
++                !Inet6Address.isLinkLocalAddress(otherAddr)) {
+             return false;
+         }
+-        if (isSiteLocalAddress() && !other.isSiteLocalAddress()) {
++        if (Inet6Address.isSiteLocalAddress(thisAddr) &&
++                !Inet6Address.isSiteLocalAddress(otherAddr)) {
+             return false;
+         }
+         return true;
+     }
+ 
+-    private int deriveNumericScope (NetworkInterface ifc) throws UnknownHostException {
++    private static int deriveNumericScope (byte[] thisAddr, NetworkInterface ifc) throws UnknownHostException {
+         Enumeration<InetAddress> addresses = ifc.getInetAddresses();
+         while (addresses.hasMoreElements()) {
+             InetAddress addr = addresses.nextElement();
+@@ -363,12 +520,12 @@
+             }
+             Inet6Address ia6_addr = (Inet6Address)addr;
+             /* check if site or link local prefixes match */
+-            if (!differentLocalAddressTypes(ia6_addr)){
++            if (!differentLocalAddressTypes(thisAddr, ia6_addr.getAddress())){
+                 /* type not the same, so carry on searching */
+                 continue;
+             }
+             /* found a matching address - return its scope_id */
+-            return ia6_addr.scope_id;
++            return ia6_addr.getScopeId();
+         }
+         throw new UnknownHostException ("no scope_id found");
+     }
+@@ -383,41 +540,61 @@
+         while (en.hasMoreElements()) {
+             NetworkInterface ifc = en.nextElement();
+             if (ifc.getName().equals (ifname)) {
+-                Enumeration addresses = ifc.getInetAddresses();
+-                while (addresses.hasMoreElements()) {
+-                    InetAddress addr = (InetAddress)addresses.nextElement();
+-                    if (!(addr instanceof Inet6Address)) {
+-                        continue;
+-                    }
+-                    Inet6Address ia6_addr = (Inet6Address)addr;
+-                    /* check if site or link local prefixes match */
+-                    if (!differentLocalAddressTypes(ia6_addr)){
+-                        /* type not the same, so carry on searching */
+-                        continue;
+-                    }
+-                    /* found a matching address - return its scope_id */
+-                    return ia6_addr.scope_id;
+-                }
++                return deriveNumericScope(holder6.ipaddress, ifc);
+             }
+         }
+         throw new UnknownHostException ("No matching address found for interface : " +ifname);
+     }
+ 
+     /**
++     * @serialField ipaddress byte[]
++     * @serialField scope_id int
++     * @serialField scope_id_set boolean
++     * @serialField scope_ifname_set boolean
++     * @serialField ifname String
++     */
++
++    private static final ObjectStreamField[] serialPersistentFields = {
++         new ObjectStreamField("ipaddress", byte[].class),
++         new ObjectStreamField("scope_id", int.class),
++         new ObjectStreamField("scope_id_set", boolean.class),
++         new ObjectStreamField("scope_ifname_set", boolean.class),
++         new ObjectStreamField("ifname", String.class)
++    };
++
++    private static final long FIELDS_OFFSET;
++    private static final sun.misc.Unsafe UNSAFE;
++
++    static {
++        try {
++            sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
++            FIELDS_OFFSET = unsafe.objectFieldOffset(
++                    Inet6Address.class.getDeclaredField("holder6"));
++            UNSAFE = unsafe;
++        } catch (ReflectiveOperationException e) {
++            throw new Error(e);
++        }
++    }
++
++    /**
+      * restore the state of this object from stream
+      * including the scope information, only if the
+      * scoped interface name is valid on this system
+      */
+     private void readObject(ObjectInputStream s)
+         throws IOException, ClassNotFoundException {
+-        scope_ifname = null;
+-        scope_ifname_set = false;
++        NetworkInterface scope_ifname = null;
+ 
+         if (getClass().getClassLoader() != null) {
+             throw new SecurityException ("invalid address type");
+         }
+ 
+-        s.defaultReadObject();
++        ObjectInputStream.GetField gf = s.readFields();
++        byte[] ipaddress = (byte[])gf.get("ipaddress", null);
++        int scope_id = (int)gf.get("scope_id", -1);
++        boolean scope_id_set = (boolean)gf.get("scope_id_set", false);
++        boolean scope_ifname_set = (boolean)gf.get("scope_ifname_set", false);
++        String ifname = (String)gf.get("ifname", null);
+ 
+         if (ifname != null && !"".equals (ifname)) {
+             try {
+@@ -430,7 +607,7 @@
+                     scope_id = 0;
+                 } else {
+                     try {
+-                        scope_id = deriveNumericScope (scope_ifname);
++                        scope_id = deriveNumericScope (ipaddress, scope_ifname);
+                     } catch (UnknownHostException e) {
+                         // typically should not happen, but it may be that
+                         // the machine being used for deserialization has
+@@ -438,8 +615,8 @@
+                     }
+                 }
+             } catch (SocketException e) {}
+-
+         }
++
+         /* if ifname was not supplied, then the numeric info is used */
+ 
+         ipaddress = ipaddress.clone();
+@@ -450,9 +627,37 @@
+                                              ipaddress.length);
+         }
+ 
+-        if (holder().getFamily() != IPv6) {
++        if (holder.getFamily() != IPv6) {
+             throw new InvalidObjectException("invalid address family type");
+         }
++
++        Inet6AddressHolder h = new Inet6AddressHolder(
++            ipaddress, scope_id, scope_id_set, scope_ifname, scope_ifname_set
++        );
++
++        UNSAFE.putObject(this, FIELDS_OFFSET, h);
++    }
++
++    /**
++     * default behavior is overridden in order to write the
++     * scope_ifname field as a String, rather than a NetworkInterface
++     * which is not serializable
++     */
++    private synchronized void writeObject(ObjectOutputStream s)
++        throws IOException
++    {
++            String ifname = null;
++
++        if (holder6.scope_ifname_set) {
++            ifname = holder6.scope_ifname.getName();
++        }
++        ObjectOutputStream.PutField pfields = s.putFields();
++        pfields.put("ipaddress", holder6.ipaddress);
++        pfields.put("scope_id", holder6.scope_id);
++        pfields.put("scope_id_set", holder6.scope_id_set);
++        pfields.put("scope_ifname_set", holder6.scope_ifname_set);
++        pfields.put("ifname", ifname);
++        s.writeFields();
+     }
+ 
+     /**
+@@ -466,7 +671,7 @@
+      */
+     @Override
+     public boolean isMulticastAddress() {
+-        return ((ipaddress[0] & 0xff) == 0xff);
++        return holder6.isMulticastAddress();
+     }
+ 
+     /**
+@@ -477,11 +682,7 @@
+      */
+     @Override
+     public boolean isAnyLocalAddress() {
+-        byte test = 0x00;
+-        for (int i = 0; i < INADDRSZ; i++) {
+-            test |= ipaddress[i];
+-        }
+-        return (test == 0x00);
++        return holder6.isAnyLocalAddress();
+     }
+ 
+     /**
+@@ -493,11 +694,7 @@
+      */
+     @Override
+     public boolean isLoopbackAddress() {
+-        byte test = 0x00;
+-        for (int i = 0; i < 15; i++) {
+-            test |= ipaddress[i];
+-        }
+-        return (test == 0x00) && (ipaddress[15] == 0x01);
++        return holder6.isLoopbackAddress();
+     }
+ 
+     /**
+@@ -509,6 +706,11 @@
+      */
+     @Override
+     public boolean isLinkLocalAddress() {
++        return holder6.isLinkLocalAddress();
++    }
++
++    /* static version of above */
++    static boolean isLinkLocalAddress(byte[] ipaddress) {
+         return ((ipaddress[0] & 0xff) == 0xfe
+                 && (ipaddress[1] & 0xc0) == 0x80);
+     }
+@@ -522,6 +724,11 @@
+      */
+     @Override
+     public boolean isSiteLocalAddress() {
++        return holder6.isSiteLocalAddress();
++    }
++
++    /* static version of above */
++    static boolean isSiteLocalAddress(byte[] ipaddress) {
+         return ((ipaddress[0] & 0xff) == 0xfe
+                 && (ipaddress[1] & 0xc0) == 0xc0);
+     }
+@@ -536,8 +743,7 @@
+      */
+     @Override
+     public boolean isMCGlobal() {
+-        return ((ipaddress[0] & 0xff) == 0xff
+-                && (ipaddress[1] & 0x0f) == 0x0e);
++        return holder6.isMCGlobal();
+     }
+ 
+     /**
+@@ -550,8 +756,7 @@
+      */
+     @Override
+     public boolean isMCNodeLocal() {
+-        return ((ipaddress[0] & 0xff) == 0xff
+-                && (ipaddress[1] & 0x0f) == 0x01);
++        return holder6.isMCNodeLocal();
+     }
+ 
+     /**
+@@ -564,8 +769,7 @@
+      */
+     @Override
+     public boolean isMCLinkLocal() {
+-        return ((ipaddress[0] & 0xff) == 0xff
+-                && (ipaddress[1] & 0x0f) == 0x02);
++        return holder6.isMCLinkLocal();
+     }
+ 
+     /**
+@@ -578,8 +782,7 @@
+      */
+     @Override
+     public boolean isMCSiteLocal() {
+-        return ((ipaddress[0] & 0xff) == 0xff
+-                && (ipaddress[1] & 0x0f) == 0x05);
++        return holder6.isMCSiteLocal();
+     }
+ 
+     /**
+@@ -593,10 +796,8 @@
+      */
+     @Override
+     public boolean isMCOrgLocal() {
+-        return ((ipaddress[0] & 0xff) == 0xff
+-                && (ipaddress[1] & 0x0f) == 0x08);
++        return holder6.isMCOrgLocal();
+     }
+-
+     /**
+      * Returns the raw IP address of this <code>InetAddress</code>
+      * object. The result is in network byte order: the highest order
+@@ -606,7 +807,7 @@
+      */
+     @Override
+     public byte[] getAddress() {
+-        return ipaddress.clone();
++        return holder6.ipaddress.clone();
+     }
+ 
+     /**
+@@ -617,7 +818,7 @@
+      * @since 1.5
+      */
+      public int getScopeId () {
+-        return scope_id;
++        return holder6.scope_id;
+      }
+ 
+     /**
+@@ -628,7 +829,7 @@
+      * @since 1.5
+      */
+      public NetworkInterface getScopedInterface () {
+-        return scope_ifname;
++        return holder6.scope_ifname;
+      }
+ 
+     /**
+@@ -641,13 +842,7 @@
+      */
+     @Override
+     public String getHostAddress() {
+-        String s = numericToTextFormat(ipaddress);
+-        if (scope_ifname_set) { /* must check this first */
+-            s = s + "%" + scope_ifname.getName();
+-        } else if (scope_id_set) {
+-            s = s + "%" + scope_id;
+-        }
+-        return s;
++        return holder6.getHostAddress();
+     }
+ 
+     /**
+@@ -657,25 +852,7 @@
+      */
+     @Override
+     public int hashCode() {
+-        if (ipaddress != null) {
+-
+-            int hash = 0;
+-            int i=0;
+-            while (i<INADDRSZ) {
+-                int j=0;
+-                int component=0;
+-                while (j<4 && i<INADDRSZ) {
+-                    component = (component << 8) + ipaddress[i];
+-                    j++;
+-                    i++;
+-                }
+-                hash += component;
+-            }
+-            return hash;
+-
+-        } else {
+-            return 0;
+-        }
++        return holder6.hashCode();
+     }
+ 
+     /**
+@@ -702,12 +879,7 @@
+ 
+         Inet6Address inetAddr = (Inet6Address)obj;
+ 
+-        for (int i = 0; i < INADDRSZ; i++) {
+-            if (ipaddress[i] != inetAddr.ipaddress[i])
+-                return false;
+-        }
+-
+-        return true;
++        return holder6.equals(inetAddr.holder6);
+     }
+ 
+     /**
+@@ -719,15 +891,7 @@
+      * @since 1.4
+      */
+     public boolean isIPv4CompatibleAddress() {
+-        if ((ipaddress[0] == 0x00) && (ipaddress[1] == 0x00) &&
+-            (ipaddress[2] == 0x00) && (ipaddress[3] == 0x00) &&
+-            (ipaddress[4] == 0x00) && (ipaddress[5] == 0x00) &&
+-            (ipaddress[6] == 0x00) && (ipaddress[7] == 0x00) &&
+-            (ipaddress[8] == 0x00) && (ipaddress[9] == 0x00) &&
+-            (ipaddress[10] == 0x00) && (ipaddress[11] == 0x00))  {
+-            return true;
+-        }
+-        return false;
++        return holder6.isIPv4CompatibleAddress();
+     }
+ 
+     // Utilities
+@@ -757,23 +921,4 @@
+      * Perform class load-time initializations.
+      */
+     private static native void init();
+-
+-    /**
+-     * Following field is only used during (de)/serialization
+-     */
+-    private String ifname;
+-
+-    /**
+-     * default behavior is overridden in order to write the
+-     * scope_ifname field as a String, rather than a NetworkInterface
+-     * which is not serializable
+-     */
+-    private synchronized void writeObject(java.io.ObjectOutputStream s)
+-        throws IOException
+-    {
+-        if (scope_ifname_set) {
+-            ifname = scope_ifname.getName();
+-        }
+-        s.defaultWriteObject();
+-    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/net/InetAddress.java ./jdk/src/share/classes/java/net/InetAddress.java
+--- /tmp/openjdk/jdk/src/share/classes/java/net/InetAddress.java	2013-09-06 14:28:11.000000000 -0400
++++ ./jdk/src/share/classes/java/net/InetAddress.java	2013-12-14 21:14:17.000000000 -0500
+@@ -213,6 +213,13 @@
+             this.family = family;
+         }
+ 
++        void init(String hostName, int family) {
++            this.hostName = hostName;
++            if (family != -1) {
++                this.family = family;
++            }
++        }
++
+         String hostName;
+ 
+         String getHostName() {
+@@ -1594,7 +1601,6 @@
+         pf.put("address", holder().address);
+         pf.put("family", holder().family);
+         s.writeFields();
+-        s.flush();
+     }
+ }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/java/util/TimeZone.java ./jdk/src/share/classes/java/util/TimeZone.java
+--- /tmp/openjdk/jdk/src/share/classes/java/util/TimeZone.java	2013-09-06 14:28:15.000000000 -0400
++++ ./jdk/src/share/classes/java/util/TimeZone.java	2013-12-14 21:31:54.000000000 -0500
+@@ -165,6 +165,11 @@
+     // Proclaim serialization compatibility with JDK 1.1
+     static final long serialVersionUID = 3581463369166924961L;
+ 
++    // TimeZone.setDefault maintains the compatible behavior of the AppContext-based
++    // default setting for untrusted code if allowSetDefault is true.
++    private static final boolean allowSetDefault = AccessController.doPrivileged(
++        new sun.security.action.GetPropertyAction("jdk.util.TimeZone.allowSetDefault")) != null;
++
+     /**
+      * Gets the time zone offset, for current date, modified in case of
+      * daylight savings. This is the offset to add to UTC to get local time.
+@@ -689,6 +694,9 @@
+                 sm.checkPermission(new PropertyPermission
+                                    ("user.timezone", "write"));
+             } catch (SecurityException e) {
++                if (!allowSetDefault) {
++                    throw e;
++                }
+                 hasPermission = false;
+             }
+         }
+@@ -719,6 +727,7 @@
+      * Returns the default TimeZone in an AppContext if any AppContext
+      * has ever used. null is returned if any AppContext hasn't been
+      * used or if the AppContext doesn't have the default TimeZone.
++     * null is also returned if allowSetDefault is false.
+      *
+      * Note that javaAWTAccess may be null if sun.awt.AppContext class hasn't
+      * been loaded. If so, it implies that AWTSecurityManager is not our
+@@ -726,18 +735,20 @@
+      * This works around a build time issue.
+      */
+     private static TimeZone getDefaultInAppContext() {
+-        // JavaAWTAccess provides access implementation-private methods without using reflection.
+-        JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess();
+-        if (javaAWTAccess == null) {
+-            return mainAppContextDefault;
+-        } else {
+-            if (!javaAWTAccess.isDisposed()) {
+-                TimeZone tz = (TimeZone)
+-                    javaAWTAccess.get(TimeZone.class);
+-                if (tz == null && javaAWTAccess.isMainAppContext()) {
+-                    return mainAppContextDefault;
+-                } else {
+-                    return tz;
++        if (allowSetDefault) {
++            // JavaAWTAccess provides access implementation-private methods without using reflection.
++            JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess();
++            if (javaAWTAccess == null) {
++                return mainAppContextDefault;
++            } else {
++                if (!javaAWTAccess.isDisposed()) {
++                    TimeZone tz = (TimeZone)
++                        javaAWTAccess.get(TimeZone.class);
++                    if (tz == null && javaAWTAccess.isMainAppContext()) {
++                        return mainAppContextDefault;
++                    } else {
++                        return tz;
++                    }
+                 }
+             }
+         }
+@@ -745,9 +756,9 @@
+     }
+ 
+     /**
+-     * Sets the default TimeZone in the AppContext to the given
+-     * tz. null is handled special: do nothing if any AppContext
+-     * hasn't been used, remove the default TimeZone in the
++     * Sets the default TimeZone in the AppContext to the given tz if
++     * allowSetDefault is true. null is handled special: do nothing if any
++     * AppContext hasn't been used, remove the default TimeZone in the
+      * AppContext otherwise.
+      *
+      * Note that javaAWTAccess may be null if sun.awt.AppContext class hasn't
+@@ -756,15 +767,17 @@
+      * This works around a build time issue.
+      */
+     private static void setDefaultInAppContext(TimeZone tz) {
+-        // JavaAWTAccess provides access implementation-private methods without using reflection.
+-        JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess();
+-        if (javaAWTAccess == null) {
+-            mainAppContextDefault = tz;
+-        } else {
+-            if (!javaAWTAccess.isDisposed()) {
+-                javaAWTAccess.put(TimeZone.class, tz);
+-                if (javaAWTAccess.isMainAppContext()) {
+-                    mainAppContextDefault = null;
++        if (allowSetDefault) {
++            // JavaAWTAccess provides access implementation-private methods without using reflection.
++            JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess();
++            if (javaAWTAccess == null) {
++                mainAppContextDefault = tz;
++            } else {
++                if (!javaAWTAccess.isDisposed()) {
++                    javaAWTAccess.put(TimeZone.class, tz);
++                    if (javaAWTAccess.isMainAppContext()) {
++                        mainAppContextDefault = null;
++                    }
+                 }
+             }
+         }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/BadAttributeValueExpException.java ./jdk/src/share/classes/javax/management/BadAttributeValueExpException.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/BadAttributeValueExpException.java	2013-09-06 14:28:18.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/BadAttributeValueExpException.java	2013-12-14 21:14:10.000000000 -0500
+@@ -25,6 +25,9 @@
+ 
+ package javax.management;
+ 
++import java.io.IOException;
++import java.io.ObjectInputStream;
++
+ 
+ /**
+  * Thrown when an invalid MBean attribute is passed to a query
+@@ -51,7 +54,7 @@
+      * @param val the inappropriate value.
+      */
+     public BadAttributeValueExpException (Object val) {
+-        this.val = val;
++        this.val = val == null ? null : val.toString();
+     }
+ 
+ 
+@@ -62,4 +65,25 @@
+         return "BadAttributeValueException: " + val;
+     }
+ 
++    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
++        ObjectInputStream.GetField gf = ois.readFields();
++        Object valObj = gf.get("val", null);
++
++        if (valObj == null) {
++            val = null;
++        } else if (valObj instanceof String) {
++            val= valObj;
++        } else if (System.getSecurityManager() == null
++                || valObj instanceof Long
++                || valObj instanceof Integer
++                || valObj instanceof Float
++                || valObj instanceof Double
++                || valObj instanceof Byte
++                || valObj instanceof Short
++                || valObj instanceof Boolean) {
++            val = valObj.toString();
++        } else { // the serialized object is from a version without JDK-8019292 fix
++            val = System.identityHashCode(valObj) + "@" + valObj.getClass().getName();
++        }
++    }
+  }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/MBeanNotificationInfo.java ./jdk/src/share/classes/javax/management/MBeanNotificationInfo.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/MBeanNotificationInfo.java	2013-09-06 14:28:18.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/MBeanNotificationInfo.java	2013-12-14 21:31:54.000000000 -0500
+@@ -25,6 +25,9 @@
+ 
+ package javax.management;
+ 
++import java.io.IOException;
++import java.io.InvalidObjectException;
++import java.io.ObjectInputStream;
+ import java.util.Arrays;
+ 
+ /**
+@@ -67,7 +70,7 @@
+     /**
+      * @serial The different types of the notification.
+      */
+-    private final String[] types;
++    private String[] types;
+ 
+     /** @see MBeanInfo#arrayGettersSafe */
+     private final transient boolean arrayGettersSafe;
+@@ -114,9 +117,8 @@
+            notifType, though it doesn't explicitly allow it
+            either.  */
+ 
+-        if (notifTypes == null)
+-            notifTypes = NO_TYPES;
+-        this.types = notifTypes;
++        this.types = (notifTypes != null && notifTypes.length > 0) ?
++                        notifTypes.clone() : NO_TYPES;
+         this.arrayGettersSafe =
+             MBeanInfo.arrayGettersSafe(this.getClass(),
+                                        MBeanNotificationInfo.class);
+@@ -203,4 +205,11 @@
+             hash ^= types[i].hashCode();
+         return hash;
+     }
++
++    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
++        ObjectInputStream.GetField gf = ois.readFields();
++        String[] t = (String[])gf.get("types", null);
++
++        types = (t != null && t.length != 0) ? t.clone() : NO_TYPES;
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/MBeanTrustPermission.java ./jdk/src/share/classes/javax/management/MBeanTrustPermission.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/MBeanTrustPermission.java	2013-09-06 14:28:18.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/MBeanTrustPermission.java	2013-12-14 21:14:10.000000000 -0500
+@@ -26,6 +26,9 @@
+ package javax.management;
+ 
+ import java.security.BasicPermission;
++import java.io.IOException;
++import java.io.InvalidObjectException;
++import java.io.ObjectInputStream;
+ 
+ /**
+  * This permission represents "trust" in a signer or codebase.
+@@ -75,15 +78,31 @@
+      */
+     public MBeanTrustPermission(String name, String actions) {
+         super(name, actions);
++        validate(name,actions);
++    }
++
++    private static void validate(String name, String actions) {
+         /* Check that actions is a null empty string */
+-        if (actions != null && actions.length() > 0)
+-            throw new IllegalArgumentException("MBeanTrustPermission " +
+-                                               "actions must be null: " +
++        if (actions != null && actions.length() > 0) {
++            throw new IllegalArgumentException("MBeanTrustPermission actions must be null: " +
+                                                actions);
++        }
+ 
+-        if (!name.equals("register") && !name.equals("*"))
+-            throw new IllegalArgumentException("MBeanTrustPermission: " +
+-                                               "Unknown target name " +
++        if (!name.equals("register") && !name.equals("*")) {
++            throw new IllegalArgumentException("MBeanTrustPermission: Unknown target name " +
+                                                "[" + name + "]");
++        }
++    }
++
++    private void readObject(ObjectInputStream in)
++         throws IOException, ClassNotFoundException {
++
++        // Reading private fields of base class
++        in.defaultReadObject();
++        try {
++            validate(super.getName(),super.getActions());
++        } catch (IllegalArgumentException e) {
++            throw new InvalidObjectException(e.getMessage());
++        }
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java ./jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java	2013-09-06 14:28:18.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java	2013-12-14 21:14:11.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2012, 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
+@@ -298,11 +298,15 @@
+                     RequiredModelMBean.class.getName(),
+                 "setModelMBeanInfo(ModelMBeanInfo)",
+                 "Setting ModelMBeanInfo to " + printModelMBeanInfo(mbi));
++            int noOfNotifications = 0;
++            if (mbi.getNotifications() != null) {
++                noOfNotifications = mbi.getNotifications().length;
++            }
+             MODELMBEAN_LOGGER.logp(Level.FINER,
+                     RequiredModelMBean.class.getName(),
+                 "setModelMBeanInfo(ModelMBeanInfo)",
+                 "ModelMBeanInfo notifications has " +
+-                (mbi.getNotifications()).length + " elements");
++                noOfNotifications + " elements");
+         }
+ 
+         modelMBeanInfo = (ModelMBeanInfo)mbi.clone();
+@@ -2997,4 +3001,4 @@
+             Void.class.getName()
+         };
+     }
+-}
+\ No newline at end of file
++}
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/remote/JMXPrincipal.java ./jdk/src/share/classes/javax/management/remote/JMXPrincipal.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/remote/JMXPrincipal.java	2013-09-06 14:28:19.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/remote/JMXPrincipal.java	2013-12-14 21:14:11.000000000 -0500
+@@ -26,6 +26,9 @@
+ 
+ package javax.management.remote;
+ 
++import java.io.IOException;
++import java.io.InvalidObjectException;
++import java.io.ObjectInputStream;
+ import java.io.Serializable;
+ import java.security.Principal;
+ 
+@@ -64,9 +67,7 @@
+      * <code>null</code>.
+      */
+     public JMXPrincipal(String name) {
+-        if (name == null)
+-            throw new NullPointerException("illegal null input");
+-
++        validate(name);
+         this.name = name;
+     }
+ 
+@@ -130,4 +131,20 @@
+     public int hashCode() {
+         return name.hashCode();
+     }
++
++    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
++        ObjectInputStream.GetField gf = ois.readFields();
++        String principalName = (String)gf.get("name", null);
++        try {
++            validate(principalName);
++            this.name = principalName;
++        } catch (NullPointerException e) {
++            throw new InvalidObjectException(e.getMessage());
++        }
++    }
++
++    private static void validate(String name) throws NullPointerException {
++        if (name == null)
++            throw new NullPointerException("illegal null input");
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java ./jdk/src/share/classes/javax/management/remote/JMXServiceURL.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java	2013-09-06 14:28:19.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/remote/JMXServiceURL.java	2013-12-14 21:14:11.000000000 -0500
+@@ -29,6 +29,9 @@
+ 
+ import com.sun.jmx.remote.util.ClassLogger;
+ import com.sun.jmx.remote.util.EnvHelp;
++import java.io.IOException;
++import java.io.InvalidObjectException;
++import java.io.ObjectInputStream;
+ 
+ import java.io.Serializable;
+ import java.net.InetAddress;
+@@ -297,7 +300,7 @@
+                If we're given an explicit host name that is illegal we
+                have to reject it.  (Bug 5057532.)  */
+             try {
+-                validateHost(host);
++                validateHost(host, port);
+             } catch (MalformedURLException e) {
+                 if (logger.fineOn()) {
+                     logger.fine("JMXServiceURL",
+@@ -336,36 +339,82 @@
+         validate();
+     }
+ 
+-    private void validate() throws MalformedURLException {
++    private static final String INVALID_INSTANCE_MSG =
++            "Trying to deserialize an invalid instance of JMXServiceURL";
++    private void readObject(ObjectInputStream  inputStream) throws IOException, ClassNotFoundException {
++        ObjectInputStream.GetField gf = inputStream.readFields();
++        String h = (String)gf.get("host", null);
++        int p = (int)gf.get("port", -1);
++        String proto = (String)gf.get("protocol", null);
++        String url = (String)gf.get("urlPath", null);
+ 
+-        // Check protocol
++        if (proto == null || url == null || h == null) {
++            StringBuilder sb = new StringBuilder(INVALID_INSTANCE_MSG).append('[');
++            boolean empty = true;
++            if (proto == null) {
++                sb.append("protocol=null");
++                empty = false;
++            }
++            if (h == null) {
++                sb.append(empty ? "" : ",").append("host=null");
++                empty = false;
++            }
++            if (url == null) {
++                sb.append(empty ? "" : ",").append("urlPath=null");
++            }
++            sb.append(']');
++            throw new InvalidObjectException(sb.toString());
++        }
+ 
+-        final int protoEnd = indexOfFirstNotInSet(protocol, protocolBitSet, 0);
+-        if (protoEnd == 0 || protoEnd < protocol.length()
+-            || !alphaBitSet.get(protocol.charAt(0))) {
++        if (h.contains("[") || h.contains("]")) {
++            throw new InvalidObjectException("Invalid host name: " + h);
++        }
++
++        try {
++            validate(proto, h, p, url);
++            this.protocol = proto;
++            this.host = h;
++            this.port = p;
++            this.urlPath = url;
++        } catch (MalformedURLException e) {
++            throw new InvalidObjectException(INVALID_INSTANCE_MSG + ": " +
++                                             e.getMessage());
++        }
++
++    }
++
++    private void validate(String proto, String h, int p, String url)
++        throws MalformedURLException {
++        // Check protocol
++        final int protoEnd = indexOfFirstNotInSet(proto, protocolBitSet, 0);
++        if (protoEnd == 0 || protoEnd < proto.length()
++            || !alphaBitSet.get(proto.charAt(0))) {
+             throw new MalformedURLException("Missing or invalid protocol " +
+-                                            "name: \"" + protocol + "\"");
++                                            "name: \"" + proto + "\"");
+         }
+ 
+         // Check host
+-
+-        validateHost();
++        validateHost(h, p);
+ 
+         // Check port
+-
+-        if (port < 0)
+-            throw new MalformedURLException("Bad port: " + port);
++        if (p < 0)
++            throw new MalformedURLException("Bad port: " + p);
+ 
+         // Check URL path
+-
+-        if (urlPath.length() > 0) {
+-            if (!urlPath.startsWith("/") && !urlPath.startsWith(";"))
+-                throw new MalformedURLException("Bad URL path: " + urlPath);
++        if (url.length() > 0) {
++            if (!url.startsWith("/") && !url.startsWith(";"))
++                throw new MalformedURLException("Bad URL path: " + url);
+         }
+     }
+ 
+-    private void validateHost() throws MalformedURLException {
+-        if (host.length() == 0) {
++    private void validate() throws MalformedURLException {
++        validate(this.protocol, this.host, this.port, this.urlPath);
++    }
++
++    private static void validateHost(String h, int port)
++            throws MalformedURLException {
++
++        if (h.length() == 0) {
+             if (port != 0) {
+                 throw new MalformedURLException("Cannot give port number " +
+                                                 "without host name");
+@@ -373,12 +422,6 @@
+             return;
+         }
+ 
+-        validateHost(host);
+-    }
+-
+-    private static void validateHost(String h)
+-            throws MalformedURLException {
+-
+         if (isNumericIPv6Address(h)) {
+             /* We assume J2SE >= 1.4 here.  Otherwise you can't
+                use the address anyway.  We can't call
+@@ -663,22 +706,22 @@
+     /**
+      * The value returned by {@link #getProtocol()}.
+      */
+-    private final String protocol;
++    private String protocol;
+ 
+     /**
+      * The value returned by {@link #getHost()}.
+      */
+-    private final String host;
++    private String host;
+ 
+     /**
+      * The value returned by {@link #getPort()}.
+      */
+-    private final int port;
++    private int port;
+ 
+     /**
+      * The value returned by {@link #getURLPath()}.
+      */
+-    private final String urlPath;
++    private String urlPath;
+ 
+     /**
+      * Cached result of {@link #toString()}.
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/remote/NotificationResult.java ./jdk/src/share/classes/javax/management/remote/NotificationResult.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/remote/NotificationResult.java	2013-09-06 14:28:19.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/remote/NotificationResult.java	2013-12-14 21:14:11.000000000 -0500
+@@ -25,6 +25,9 @@
+ 
+ package javax.management.remote;
+ 
++import java.io.IOException;
++import java.io.InvalidObjectException;
++import java.io.ObjectInputStream;
+ import java.io.Serializable;
+ 
+ /**
+@@ -76,17 +79,7 @@
+     public NotificationResult(long earliestSequenceNumber,
+                               long nextSequenceNumber,
+                               TargetedNotification[] targetedNotifications) {
+-        if (targetedNotifications == null) {
+-            final String msg = "Notifications null";
+-            throw new IllegalArgumentException(msg);
+-        }
+-
+-        if (earliestSequenceNumber < 0 || nextSequenceNumber < 0)
+-            throw new IllegalArgumentException("Bad sequence numbers");
+-        /* We used to check nextSequenceNumber >= earliestSequenceNumber
+-           here.  But in fact the opposite can legitimately be true if
+-           notifications have been lost.  */
+-
++        validate(targetedNotifications, earliestSequenceNumber, nextSequenceNumber);
+         this.earliestSequenceNumber = earliestSequenceNumber;
+         this.nextSequenceNumber = nextSequenceNumber;
+         this.targetedNotifications = (targetedNotifications.length == 0 ? targetedNotifications : targetedNotifications.clone());
+@@ -138,7 +131,40 @@
+             getTargetedNotifications().length;
+     }
+ 
+-    private final long earliestSequenceNumber;
+-    private final long nextSequenceNumber;
+-    private final TargetedNotification[] targetedNotifications;
++    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
++        ois.defaultReadObject();
++        try {
++            validate(
++                this.targetedNotifications,
++                this.earliestSequenceNumber,
++                this.nextSequenceNumber
++            );
++
++            this.targetedNotifications = this.targetedNotifications.length == 0 ?
++                                            this.targetedNotifications :
++                                            this.targetedNotifications.clone();
++        } catch (IllegalArgumentException e) {
++            throw new InvalidObjectException(e.getMessage());
++        }
++    }
++
++    private long earliestSequenceNumber;
++    private long nextSequenceNumber;
++    private TargetedNotification[] targetedNotifications;
++
++    private static void validate(TargetedNotification[] targetedNotifications,
++                                 long earliestSequenceNumber,
++                                 long nextSequenceNumber)
++        throws IllegalArgumentException {
++        if (targetedNotifications == null) {
++            final String msg = "Notifications null";
++            throw new IllegalArgumentException(msg);
++        }
++
++        if (earliestSequenceNumber < 0 || nextSequenceNumber < 0)
++            throw new IllegalArgumentException("Bad sequence numbers");
++        /* We used to check nextSequenceNumber >= earliestSequenceNumber
++           here.  But in fact the opposite can legitimately be true if
++           notifications have been lost.  */
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/remote/TargetedNotification.java ./jdk/src/share/classes/javax/management/remote/TargetedNotification.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/remote/TargetedNotification.java	2013-09-06 14:28:19.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/remote/TargetedNotification.java	2013-12-14 21:14:11.000000000 -0500
+@@ -26,6 +26,9 @@
+ 
+ package javax.management.remote;
+ 
++import java.io.IOException;
++import java.io.InvalidObjectException;
++import java.io.ObjectInputStream;
+ import java.io.Serializable;
+ import javax.management.Notification;
+ 
+@@ -73,12 +76,9 @@
+      */
+     public TargetedNotification(Notification notification,
+                                 Integer listenerID) {
++        validate(notification, listenerID);
+         // If we replace integer with int...
+         // this(notification,intValue(listenerID));
+-        if (notification == null) throw new
+-            IllegalArgumentException("Invalid notification: null");
+-        if (listenerID == null) throw new
+-            IllegalArgumentException("Invalid listener ID: null");
+         this.notif = notification;
+         this.id = listenerID;
+     }
+@@ -115,13 +115,13 @@
+      * @serial A notification to transmit to the other side.
+      * @see #getNotification()
+      **/
+-    private final Notification notif;
++    private Notification notif;
+     /**
+      * @serial The ID of the listener to which the notification is
+      *         targeted.
+      * @see #getListenerID()
+      **/
+-    private final Integer id;
++    private Integer id;
+     //private final int id;
+ 
+ // Needed if we use int instead of Integer...
+@@ -130,4 +130,22 @@
+ //          IllegalArgumentException("Invalid listener ID: null");
+ //      return id.intValue();
+ //     }
++
++    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
++        ois.defaultReadObject();
++        try {
++            validate(this.notif, this.id);
++        } catch (IllegalArgumentException e) {
++            throw new InvalidObjectException(e.getMessage());
++        }
++    }
++
++    private static void validate(Notification notif, Integer id) throws IllegalArgumentException {
++        if (notif == null) {
++            throw new IllegalArgumentException("Invalid notification: null");
++        }
++        if (id == null) {
++            throw new IllegalArgumentException("Invalid listener ID: null");
++        }
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java ./jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java	2013-09-06 14:28:19.000000000 -0400
++++ ./jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java	2013-12-14 21:31:54.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2010, 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
+@@ -61,6 +61,7 @@
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
+ import java.security.PrivilegedExceptionAction;
++import java.security.PrivilegedActionException;
+ import java.security.ProtectionDomain;
+ import java.util.Arrays;
+ import java.util.Collections;
+@@ -128,7 +129,6 @@
+             Map<String, ?> environment) {
+         if (rmiServer == null && address == null) throw new
+                 IllegalArgumentException("rmiServer and jmxServiceURL both null");
+-
+         initTransients();
+ 
+         this.rmiServer = rmiServer;
+@@ -239,10 +239,21 @@
+     //--------------------------------------------------------------------
+     // implements JMXConnector interface
+     //--------------------------------------------------------------------
++
++    /**
++     * @throws IOException if the connection could not be made because of a
++     *   communication problem, or in the case of the {@code iiop} protocol,
++     *   that RMI/IIOP is not supported
++     */
+     public void connect() throws IOException {
+         connect(null);
+     }
+ 
++    /**
++     * @throws IOException if the connection could not be made because of a
++     *   communication problem, or in the case of the {@code iiop} protocol,
++     *   that RMI/IIOP is not supported
++     */
+     public synchronized void connect(Map<String,?> environment)
+     throws IOException {
+         final boolean tracing = logger.traceOn();
+@@ -2359,13 +2370,21 @@
+         }
+     }
+ 
+-    private static RMIConnection shadowIiopStub(Object stub)
++  private static RMIConnection shadowIiopStub(Object stub)
+     throws InstantiationException, IllegalAccessException {
+-        Object proxyStub = proxyStubClass.newInstance();
++        Object proxyStub = null;
++        try {
++            proxyStub = AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
++                public Object run() throws Exception {
++                    return proxyStubClass.newInstance();
++                }
++            });
++        } catch (PrivilegedActionException e) {
++            throw new InternalError();
++        }
+         IIOPHelper.setDelegate(proxyStub, IIOPHelper.getDelegate(stub));
+         return (RMIConnection) proxyStub;
+     }
+-
+     private static RMIConnection getConnection(RMIServer server,
+             Object credentials,
+             boolean checkStub)
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/security/auth/Subject.java ./jdk/src/share/classes/javax/security/auth/Subject.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/security/auth/Subject.java	2013-09-06 14:28:21.000000000 -0400
++++ ./jdk/src/share/classes/javax/security/auth/Subject.java	2013-12-14 21:14:12.000000000 -0500
+@@ -1296,8 +1296,14 @@
+         {
+             ObjectInputStream.GetField fields = ois.readFields();
+             subject = (Subject) fields.get("this$0", null);
+-            elements = (LinkedList<E>) fields.get("elements", null);
+             which = fields.get("which", 0);
++
++            LinkedList<E> tmp = (LinkedList<E>) fields.get("elements", null);
++            if (tmp.getClass() != LinkedList.class) {
++                elements = new LinkedList<E>(tmp);
++            } else {
++                elements = tmp;
++            }
+         }
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/security/auth/kerberos/KeyTab.java ./jdk/src/share/classes/javax/security/auth/kerberos/KeyTab.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/security/auth/kerberos/KeyTab.java	2013-09-06 14:28:21.000000000 -0400
++++ ./jdk/src/share/classes/javax/security/auth/kerberos/KeyTab.java	2013-12-14 21:14:12.000000000 -0500
+@@ -26,6 +26,7 @@
+ package javax.security.auth.kerberos;
+ 
+ import java.io.File;
++import java.security.AccessControlException;
+ import java.util.Objects;
+ import sun.misc.SharedSecrets;
+ import sun.security.krb5.EncryptionKey;
+@@ -114,7 +115,19 @@
+ 
+     //Takes a snapshot of the keytab content
+     private sun.security.krb5.internal.ktab.KeyTab takeSnapshot() {
+-        return sun.security.krb5.internal.ktab.KeyTab.getInstance(file);
++        try {
++            return sun.security.krb5.internal.ktab.KeyTab.getInstance(file);
++        } catch (AccessControlException ace) {
++            if (file != null) {
++                // It's OK to show the name if caller specified it
++                throw ace;
++            } else {
++                AccessControlException ace2 = new AccessControlException(
++                        "Access to default keytab denied (modified exception)");
++                ace2.setStackTrace(ace.getStackTrace());
++                throw ace2;
++            }
++        }
+     }
+ 
+     /**
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/swing/JTable.java ./jdk/src/share/classes/javax/swing/JTable.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/swing/JTable.java	2013-09-06 14:28:23.000000000 -0400
++++ ./jdk/src/share/classes/javax/swing/JTable.java	2013-12-14 21:14:14.000000000 -0500
+@@ -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
+@@ -52,6 +52,7 @@
+ 
+ import javax.print.attribute.*;
+ import javax.print.PrintService;
++import sun.reflect.misc.ReflectUtil;
+ 
+ import sun.swing.SwingUtilities2;
+ import sun.swing.SwingUtilities2.Section;
+@@ -5460,14 +5461,16 @@
+             // they have the option to replace the value with
+             // null or use escape to restore the original.
+             // For Strings, return "" for backward compatibility.
+-            if ("".equals(s)) {
+-                if (constructor.getDeclaringClass() == String.class) {
+-                    value = s;
+-                }
+-                return super.stopCellEditing();
+-            }
+ 
+             try {
++                if ("".equals(s)) {
++                    if (constructor.getDeclaringClass() == String.class) {
++                        value = s;
++                    }
++                    return super.stopCellEditing();
++                }
++
++                SwingUtilities2.checkAccess(constructor.getModifiers());
+                 value = constructor.newInstance(new Object[]{s});
+             }
+             catch (Exception e) {
+@@ -5491,6 +5494,8 @@
+                 if (type == Object.class) {
+                     type = String.class;
+                 }
++                ReflectUtil.checkPackageAccess(type);
++                SwingUtilities2.checkAccess(type.getModifiers());
+                 constructor = type.getConstructor(argTypes);
+             }
+             catch (Exception e) {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/swing/UIDefaults.java ./jdk/src/share/classes/javax/swing/UIDefaults.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/swing/UIDefaults.java	2013-09-06 14:28:24.000000000 -0400
++++ ./jdk/src/share/classes/javax/swing/UIDefaults.java	2013-12-14 21:14:15.000000000 -0500
+@@ -53,6 +53,7 @@
+ 
+ import sun.reflect.misc.MethodUtil;
+ import sun.reflect.misc.ReflectUtil;
++import sun.swing.SwingUtilities2;
+ import sun.util.CoreResourceBundleControl;
+ 
+ /**
+@@ -1101,7 +1102,7 @@
+                         }
+                         ReflectUtil.checkPackageAccess(className);
+                         c = Class.forName(className, true, (ClassLoader)cl);
+-                        checkAccess(c.getModifiers());
++                        SwingUtilities2.checkAccess(c.getModifiers());
+                         if (methodName != null) {
+                             Class[] types = getClassArray(args);
+                             Method m = c.getMethod(methodName, types);
+@@ -1109,7 +1110,7 @@
+                         } else {
+                             Class[] types = getClassArray(args);
+                             Constructor constructor = c.getConstructor(types);
+-                            checkAccess(constructor.getModifiers());
++                            SwingUtilities2.checkAccess(constructor.getModifiers());
+                             return constructor.newInstance(args);
+                         }
+                     } catch(Exception e) {
+@@ -1124,13 +1125,6 @@
+             }, acc);
+         }
+ 
+-        private void checkAccess(int modifiers) {
+-            if(System.getSecurityManager() != null &&
+-                    !Modifier.isPublic(modifiers)) {
+-                throw new SecurityException("Resource is not accessible");
+-            }
+-        }
+-
+         /*
+          * Coerce the array of class types provided into one which
+          * looks the way the Reflection APIs expect.  This is done
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java ./jdk/src/share/classes/javax/swing/text/DefaultFormatter.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java	2013-09-06 14:28:27.000000000 -0400
++++ ./jdk/src/share/classes/javax/swing/text/DefaultFormatter.java	2013-12-14 21:14:16.000000000 -0500
+@@ -24,7 +24,8 @@
+  */
+ package javax.swing.text;
+ 
+-import sun.reflect.misc.ConstructorUtil;
++import sun.reflect.misc.ReflectUtil;
++import sun.swing.SwingUtilities2;
+ 
+ import java.io.Serializable;
+ import java.lang.reflect.*;
+@@ -247,7 +248,9 @@
+             Constructor cons;
+ 
+             try {
+-                cons = ConstructorUtil.getConstructor(vc, new Class[]{String.class});
++                ReflectUtil.checkPackageAccess(vc);
++                SwingUtilities2.checkAccess(vc.getModifiers());
++                cons = vc.getConstructor(new Class[]{String.class});
+ 
+             } catch (NoSuchMethodException nsme) {
+                 cons = null;
+@@ -255,6 +258,7 @@
+ 
+             if (cons != null) {
+                 try {
++                    SwingUtilities2.checkAccess(cons.getModifiers());
+                     return cons.newInstance(new Object[] { string });
+                 } catch (Throwable ex) {
+                     throw new ParseException("Error creating instance", 0);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/swing/text/NumberFormatter.java ./jdk/src/share/classes/javax/swing/text/NumberFormatter.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/swing/text/NumberFormatter.java	2013-09-06 14:28:27.000000000 -0400
++++ ./jdk/src/share/classes/javax/swing/text/NumberFormatter.java	2013-12-14 21:14:17.000000000 -0500
+@@ -27,6 +27,8 @@
+ import java.lang.reflect.*;
+ import java.text.*;
+ import java.util.*;
++import sun.reflect.misc.ReflectUtil;
++import sun.swing.SwingUtilities2;
+ 
+ /**
+  * <code>NumberFormatter</code> subclasses <code>InternationalFormatter</code>
+@@ -427,10 +429,12 @@
+                         valueClass = value.getClass();
+                     }
+                     try {
++                        ReflectUtil.checkPackageAccess(valueClass);
++                        SwingUtilities2.checkAccess(valueClass.getModifiers());
+                         Constructor cons = valueClass.getConstructor(
+                                               new Class[] { String.class });
+-
+                         if (cons != null) {
++                            SwingUtilities2.checkAccess(cons.getModifiers());
+                             return cons.newInstance(new Object[]{string});
+                         }
+                     } catch (Throwable ex) { }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/javax/swing/text/html/ObjectView.java ./jdk/src/share/classes/javax/swing/text/html/ObjectView.java
+--- /tmp/openjdk/jdk/src/share/classes/javax/swing/text/html/ObjectView.java	2013-09-06 14:28:27.000000000 -0400
++++ ./jdk/src/share/classes/javax/swing/text/html/ObjectView.java	2013-12-14 21:14:17.000000000 -0500
+@@ -31,6 +31,9 @@
+ import java.beans.*;
+ import java.lang.reflect.*;
+ 
++import sun.reflect.misc.MethodUtil;
++import sun.reflect.misc.ReflectUtil;
++
+ /**
+  * Component decorator that implements the view interface
+  * for &lt;object&gt; elements.
+@@ -87,6 +90,7 @@
+         AttributeSet attr = getElement().getAttributes();
+         String classname = (String) attr.getAttribute(HTML.Attribute.CLASSID);
+         try {
++            ReflectUtil.checkPackageAccess(classname);
+             Class c = Class.forName(classname, true,Thread.currentThread().
+                                     getContextClassLoader());
+             Object o = c.newInstance();
+@@ -116,28 +120,6 @@
+     }
+ 
+     /**
+-     * Get a Class object to use for loading the
+-     * classid.  If possible, the Classloader
+-     * used to load the associated Document is used.
+-     * This would typically be the same as the ClassLoader
+-     * used to load the EditorKit.  If the documents
+-     * ClassLoader is null,
+-     * <code>Class.forName</code> is used.
+-     */
+-    private Class getClass(String classname) throws ClassNotFoundException {
+-        Class klass;
+-
+-        Class docClass = getDocument().getClass();
+-        ClassLoader loader = docClass.getClassLoader();
+-        if (loader != null) {
+-            klass = loader.loadClass(classname);
+-        } else {
+-            klass = Class.forName(classname);
+-        }
+-        return klass;
+-    }
+-
+-    /**
+      * Initialize this component according the KEY/VALUEs passed in
+      * via the &lt;param&gt; elements in the corresponding
+      * &lt;object&gt; element.
+@@ -170,7 +152,7 @@
+                 }
+                 Object [] args = { value };
+                 try {
+-                    writer.invoke(comp, args);
++                    MethodUtil.invoke(writer, comp, args);
+                 } catch (Exception ex) {
+                     System.err.println("Invocation failed");
+                     // invocation code
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/font/FileFont.java ./jdk/src/share/classes/sun/font/FileFont.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/font/FileFont.java	2013-09-06 14:28:31.000000000 -0400
++++ ./jdk/src/share/classes/sun/font/FileFont.java	2013-12-14 21:14:18.000000000 -0500
+@@ -170,7 +170,9 @@
+                 }
+             }
+         }
+-        scaler.dispose();
++        if (scaler != null) {
++            scaler.dispose();
++        }
+         scaler = FontScaler.getNullScaler();
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/font/GlyphLayout.java ./jdk/src/share/classes/sun/font/GlyphLayout.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/font/GlyphLayout.java	2013-09-06 14:28:31.000000000 -0400
++++ ./jdk/src/share/classes/sun/font/GlyphLayout.java	2013-12-14 21:14:18.000000000 -0500
+@@ -468,9 +468,10 @@
+                         _gvdata.grow();
+                     }
+                 }
+-                if (_gvdata._count < 0) {
+-                    break;
+-                }
++            }
++            // Break out of the outer for loop if layout fails.
++            if (_gvdata._count < 0) {
++                break;
+             }
+         }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/font/StandardGlyphVector.java ./jdk/src/share/classes/sun/font/StandardGlyphVector.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/font/StandardGlyphVector.java	2013-09-06 14:28:31.000000000 -0400
++++ ./jdk/src/share/classes/sun/font/StandardGlyphVector.java	2013-12-14 21:14:18.000000000 -0500
+@@ -1740,8 +1740,9 @@
+                                                      tx,
+                                                      sgv.font.getStyle(),
+                                                      aa, fm);
+-
+-            FontStrike strike = sgv.font2D.getStrike(desc);  // !!! getStrike(desc, false)
++            // Get the strike via the handle. Shouldn't matter
++            // if we've invalidated the font but its an extra precaution.
++            FontStrike strike = sgv.font2D.handle.font2D.getStrike(desc);  // !!! getStrike(desc, false)
+ 
+             return new GlyphStrike(sgv, strike, dx, dy);
+         }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/font/TrueTypeFont.java ./jdk/src/share/classes/sun/font/TrueTypeFont.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/font/TrueTypeFont.java	2013-09-06 14:28:31.000000000 -0400
++++ ./jdk/src/share/classes/sun/font/TrueTypeFont.java	2013-12-14 21:14:19.000000000 -0500
+@@ -1037,6 +1037,9 @@
+             if (head_Table != null && head_Table.capacity() >= 18) {
+                 ShortBuffer sb = head_Table.asShortBuffer();
+                 upem = sb.get(9) & 0xffff;
++                if (upem < 16 || upem > 16384) {
++                    upem = 2048;
++                }
+             }
+ 
+             ByteBuffer os2_Table = getTableBuffer(os_2Tag);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/java2d/Disposer.java ./jdk/src/share/classes/sun/java2d/Disposer.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/java2d/Disposer.java	2013-09-06 14:28:34.000000000 -0400
++++ ./jdk/src/share/classes/sun/java2d/Disposer.java	2013-12-14 21:14:09.000000000 -0500
+@@ -150,8 +150,7 @@
+                 rec = null;
+                 clearDeferredRecords();
+             } catch (Exception e) {
+-                System.out.println("Exception while removing reference: " + e);
+-                e.printStackTrace();
++                System.out.println("Exception while removing reference.");
+             }
+         }
+     }
+@@ -177,7 +176,6 @@
+                 rec.dispose();
+             } catch (Exception e) {
+                 System.out.println("Exception while disposing deferred rec.");
+-                e.printStackTrace();
+             }
+         }
+         deferredRecords.clear();
+@@ -228,8 +226,7 @@
+                 }
+             }
+         } catch (Exception e) {
+-            System.out.println("Exception while removing reference: " + e);
+-            e.printStackTrace();
++            System.out.println("Exception while removing reference.");
+         } finally {
+             pollingQueue = false;
+         }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/management/HotSpotDiagnostic.java ./jdk/src/share/classes/sun/management/HotSpotDiagnostic.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/management/HotSpotDiagnostic.java	2013-09-06 14:28:35.000000000 -0400
++++ ./jdk/src/share/classes/sun/management/HotSpotDiagnostic.java	2013-12-14 21:14:09.000000000 -0500
+@@ -40,7 +40,17 @@
+     public HotSpotDiagnostic() {
+     }
+ 
+-    public native void dumpHeap(String outputFile, boolean live) throws IOException;
++    public void dumpHeap(String outputFile, boolean live) throws IOException {
++        SecurityManager security = System.getSecurityManager();
++        if (security != null) {
++            security.checkWrite(outputFile);
++            Util.checkControlAccess();
++        }
++
++        dumpHeap0(outputFile, live);
++    }
++
++    private native void dumpHeap0(String outputFile, boolean live) throws IOException;
+ 
+     public List<VMOption> getDiagnosticOptions() {
+         List<Flag> allFlags = Flag.getAllFlags();
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/misc/JavaLangAccess.java ./jdk/src/share/classes/sun/misc/JavaLangAccess.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/misc/JavaLangAccess.java	2013-09-06 14:28:37.000000000 -0400
++++ ./jdk/src/share/classes/sun/misc/JavaLangAccess.java	2013-12-14 21:14:10.000000000 -0500
+@@ -25,6 +25,7 @@
+ 
+ package sun.misc;
+ 
++import java.security.AccessControlContext;
+ import sun.reflect.ConstantPool;
+ import sun.reflect.annotation.AnnotationType;
+ import sun.nio.ch.Interruptible;
+@@ -88,4 +89,10 @@
+      * Returns the murmur hash value for the specified String.
+      */
+     int getStringHash32(String string);
++
++    /**
++     * Returns a new Thread with the given Runnable and an
++     * inherited AccessControlContext.
++     */
++    Thread newThreadWithAcc(Runnable target, AccessControlContext acc);
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	2013-09-06 14:28:39.000000000 -0400
++++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	2013-12-14 21:14:11.000000000 -0500
+@@ -1031,6 +1031,24 @@
+                     "ebcdic-s-871+euro"
+                 });
+ 
++        charset("IBM290", "IBM290",
++                new String[] {
++                    "cp290",
++                    "ibm290",
++                    "ibm-290",
++                    "csIBM290",
++                    "EBCDIC-JP-kana",
++                    "290"
++                });
++
++        charset("x-IBM300", "IBM300",
++                new String[] {
++                    "cp300",
++                    "ibm300",
++                    "ibm-300",
++                    "300"
++                });
++
+         // Macintosh MacOS/Apple char encodingd
+ 
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/nio/cs/ext/IBM300.java ./jdk/src/share/classes/sun/nio/cs/ext/IBM300.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/nio/cs/ext/IBM300.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jdk/src/share/classes/sun/nio/cs/ext/IBM300.java	2013-12-14 21:14:11.000000000 -0500
+@@ -0,0 +1,1875 @@
++/*
++ * 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.
++ */
++
++// -- This file was mechanically generated: Do not edit! -- //
++
++package sun.nio.cs.ext;
++
++import java.nio.charset.Charset;
++import java.nio.charset.CharsetDecoder;
++import java.nio.charset.CharsetEncoder;
++import java.util.Arrays;
++import sun.nio.cs.HistoricallyNamedCharset;
++import sun.nio.cs.ext.DoubleByte;
++
++public class IBM300 extends Charset
++                        implements HistoricallyNamedCharset
++{
++    public IBM300() {
++        super("x-IBM300", ExtendedCharsets.aliasesFor("x-IBM300"));
++    }
++
++        public String historicalName() { return "Cp300"; }
++
++    public boolean contains(Charset cs) {
++        return (cs instanceof IBM300);
++    }
++
++    public CharsetDecoder newDecoder() {
++        initb2c();
++        return new  DoubleByte.Decoder_EBCDIC_DBCSONLY(this, b2c, 0x40, 0xfe);
++    }
++
++    public CharsetEncoder newEncoder() {
++        initc2b();
++        return new DoubleByte.Encoder_EBCDIC_DBCSONLY(
++            this, new byte[]{ (byte)0x42, (byte)0x6f }, c2b, c2bIndex);
++    }
++    static final String b2cSBStr =
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" ;
++
++        static final String[] b2cStr = {
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++        "\u3000\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7" +
++        "\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF" +
++        "\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8" +
++        "\u03C9\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\u0391\u0392\u0393\u0394\u0395\u0396\u0397" +
++        "\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F" +
++        "\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8" +
++        "\u03A9\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436" +
++        "\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E" +
++        "\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446" +
++        "\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E" +
++        "\u044F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\u2170\u2171\u2172\u2173\u2174\u2175\u2176" +
++        "\u2177\u2178\u2179\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416" +
++        "\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E" +
++        "\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426" +
++        "\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E" +
++        "\u042F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\u2160\u2161\u2162\u2163\u2164\u2165\u2166" +
++        "\u2167\u2168\u2169\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFE1\uFF0E\uFF1C\uFF08\uFF0B\uFF5C" +
++        "\uFF06\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFF01\uFFE5\uFF0A\uFF09\uFF1B\uFFE2" +
++        "\uFF0D\uFF0F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFE4\uFF0C\uFF05\uFF3F\uFF1E\uFF1F" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFF40\uFF1A\uFF03\uFF20\uFF07\uFF1D\uFF02" +
++        "\uFFFD\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47" +
++        "\uFF48\uFF49\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50" +
++        "\uFF51\uFF52\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFE3\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58" +
++        "\uFF59\uFF5A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFF5B\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27" +
++        "\uFF28\uFF29\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFF5D\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30" +
++        "\uFF31\uFF32\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFF04\uFFFD\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38" +
++        "\uFF39\uFF3A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16\uFF17" +
++        "\uFF18\uFF19\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\u3002\u300C\u300D\u3001\u30FB\u30F2\u30A1" +
++        "\u30A3\u30A5\uFFE0\u2220\u22A5\u2312\u2202\u2207" +
++        "\uFFFD\u30A7\u30A9\u30E3\u30E5\u30E7\u30C3\u30EE" +
++        "\u30FC\u30F5\u30F6\u2261\u2252\u226A\u226B\u221A" +
++        "\u223D\u221D\u222B\u222C\u2208\u220B\u2286\u2287" +
++        "\u2282\u2283\u222A\u2229\u2227\u2228\u21D2\u21D4" +
++        "\u2200\u2203\u212B\u2030\u266F\u266D\u266A\u2020" +
++        "\u2021\u00B6\u25EF\uFFFD\u2500\u2502\u250C\u2510" +
++        "\uFFFD\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD" +
++        "\u30AF\u30B1\u30B3\uFFFD\u30B5\u30B7\u30B9\u30BB" +
++        "\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB" +
++        "\u30CC\u30CD\u30CE\uFFFD\uFFFD\u30CF\u30D2\u30D5" +
++        "\uFFFD\uFF5E\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1" +
++        "\u30E2\u30E4\u30E6\uFFFD\u30E8\u30E9\u30EA\u30EB" +
++        "\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501" +
++        "\u2503\u250F\u30EC\u30ED\u30EF\u30F3\u309B\u309C" +
++        "\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA" +
++        "\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0" +
++        "\u30D3\u30D6\u30D9\u30DC\u30F4\u30D1\u30D4\u30D7" +
++        "\u30DA\u30DD\u30F0\u30F1\u30FD\u30FE\uFFFD\uFFFD" +
++        "\uFF3C\u2513\u251B\u2517\u2523\u2533\u252B\u253B" +
++        "\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530" +
++        "\u2525\u2538\u2542\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\uFFFD\u300E\u300F\uFF3B\uFF3D\u3092\u3041" +
++        "\u3043\u3045\u2015\u00B1\u2260\u221E\u2103\uFFFD" +
++        "\u00B4\u3047\u3049\u3083\u3085\u3087\u3063\u308E" +
++        "\uFFFD\uFFFD\u2010\u3003\u4EDD\u3005\u3006\u3007" +
++        "\u00A8\u2018\u201C\u3014\u3008\u300A\u3010\u2266" +
++        "\u2234\u2642\u00A7\u203B\u3012\u3231\u2116\u2121" +
++        "\uFF3E\u2019\u201D\u3015\u3009\u300B\u3011\u2267" +
++        "\u2235\u2640\u00D7\u00F7\u2225\u3013\u2025\u2026" +
++        "\uFFFD\u3042\u3044\u3046\u3048\u304A\u304B\u304D" +
++        "\u304F\u3051\u3053\uFFFD\u3055\u3057\u3059\u305B" +
++        "\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B" +
++        "\u306C\u306D\u306E\uFFFD\uFFFD\u306F\u3072\u3075" +
++        "\uFFFD\uFFFD\u3078\u307B\u307E\u307F\u3080\u3081" +
++        "\u3082\u3084\u3086\uFFFD\u3088\u3089\u308A\u308B" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\u308C\u308D\u308F\u3093\uFFFD\uFFFD" +
++        "\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A" +
++        "\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070" +
++        "\u3073\u3076\u3079\u307C\uFFFD\u3071\u3074\u3077" +
++        "\u307A\u307D\u3090\u3091\u309D\u309E\uFFFD\uFFFD" +
++        "\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7" +
++        "\u25C6\u25A1\u25A0\u25BD\u25BC\u00B0\u2032\u2033" +
++        "\u2192\u2190\u2191\u2193\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03" +
++        "\u516B\u4E5D\u5341\u767E\u5343\u4E07\u5104\u90FD" +
++        "\u9053\u5E9C\u770C\u5E02\u533A\u753A\u6751\u6771" +
++        "\u897F\u5357\u5317\u5927\u4E2D\u5C0F\u4E0A\u4E0B" +
++        "\u5E74\u6708\u65E5\u7530\u5B50\u5C71\u672C\u5DDD" +
++        "\u85E4\u91CE\u5DE5\u696D\u6728\u4E95\u90CE\u5CF6" +
++        "\u96C4\u9AD8\u5CA1\u592B\u539F\u4EAC\u4F50\u6B63" +
++        "\u677E\u6A5F\u548C\u88FD\u7537\u7F8E\u5409\u5D0E" +
++        "\u77F3\u8C37\u96FB\u9577\u6CBB\u6CA2\u91D1\u65B0" +
++        "\u53E3\u6A4B\u4E45\u798F\u6240\u5E73\u5185\u56FD" +
++        "\u5316\u962A\u5BAE\u4EBA\u4F5C\u90E8\u6E05\u6B21" +
++        "\u7FA9\u751F\u4EE3\u51FA\u6C34\u68EE\u5149\u52A0" +
++        "\u5408\u795E\u6797\u91CD\u884C\u4FE1\u660E\u6D77" +
++        "\u5B89\u5E78\u4FDD\u592A\u5BCC\u6C5F\u9234\u524D" +
++        "\u77E5\u6B66\u4F0A\u662D\u5206\u52DD\u7528\u5E83" +
++        "\u9020\u6C17\u6210\u898B\u5229\u4F1A\u5B66\u5CA9" +
++        "\u7523\u9593\u5730\u81EA\u826F\u95A2\u611B\u653F" +
++        "\u5C3E\u8A08\u6587\u624B\u7236\u65B9\u4E8B\u6238" +
++        "\u54C1\u559C\u6E21\u5F18\u53E4\u8FBA\u5009\u9244" +
++        "\u4E4B\u5834\u6D0B\u57CE\u6D25\u7ACB\u5EA6\u5348" +
++        "\u4ECA\u5F66\u8A2D\u901A\u52D5\u5F8C\u5948\u5B9A" +
++        "\u6C60\u5C4B\u6D5C\u7406\u5742\u5B9F\u82F1\u7684" +
++        "\u53F8\u79C0\u6A2A\u540D\u5B5D\u7AF9\u535A\u529B" +
++        "\u5EAB\u8449\u6804\u6C38\u5668\u7389\u591A" ,
++        "\uFFFD\u8CC0\u771F\u6075\u9759\u5186\u8302\u654F" +
++        "\u8C4A\u5175\u6CD5\u767A\u9752\u5897\u6599\u5FE0" +
++        "\u8CC7\u6642\u7269\u8ECA\u5FB3\u8981\u5BFE\u585A" +
++        "\u79CB\u767D\u6CB3\u702C\u6CB9\u9686\u8535\u5F53" +
++        "\u4FCA\u5FD7\u6625\u793E\u99AC\u5165\u5EFA\u6839" +
++        "\u6749\u9032\u8208\u6D66\u7CBE\u540C\u6027\u7C73" +
++        "\u8005\u52A9\u679D\u8FD1\u76F4\u76EE\u6765\u753B" +
++        "\u76F8\u9ED2\u4E38\u8239\u7531\u58EB\u7B2C\u718A" +
++        "\u7D19\u5065\u68B0\u82B3\u571F\u6709\u5BB6\u7DDA" +
++        "\u7D4C\u8ABF\u5929\u671F\u7F6E\u6D45\u6589\u5F0F" +
++        "\u5F62\u9762\u7A2E\u8F38\u5916\u5143\u4F53\u9E7F" +
++        "\u5FA1\u5973\u5EB7\u4E16\u52C7\u5800\u597D\u5150" +
++        "\u5BFA\u92FC\u7279\u57FC\u9054\u5411\u53D6\u7B49" +
++        "\u667A\u56DE\u9580\u904B\u5099\u601D\u963F\u4E0D" +
++        "\u9808\u5168\u5BFF\u5584\u677F\u98EF\u8C9E\u73FE" +
++        "\u98DF\u7D44\u985E\u516C\u6750\u9999\u5546\u7D50" +
++        "\u8868\u77E2\u6F5F\u79C1\u5236\u90A6\u6CBC\u7CF8" +
++        "\u5B8F\u7B56\u6CE2\u54E1\u6570\u958B\u6E96\u6A39" +
++        "\u8CBB\u660C\u5F37\u7814\u53CB\u5B87\u82E5\u83CA" +
++        "\u6301\u82B1\u5F15\u7D00\u8352\u5225\u4FEE\u8D8A" +
++        "\u4F4F\u85AC\u6BDB\u9060\u554F\u5965\u578B\u5FC3" +
++        "\u767B\u65E9\u67F3\u6D69\u8CEA\u52D9\u6CC9\u5E38" +
++        "\u5B88\u57FA\u7BA1\u6CF0\u4F38\u6700\u4EE5\u6B4C" +
++        "\u88D5\u8D64\u8DB3\u898F\u6D41\u8AA0\u6607" ,
++        "\uFFFD\u5DDE\u7167\u5869\u9001\u96C5\u672B\u54F2" +
++        "\u5CB8\u4E5F\u5C90\u521D\u8328\u5247\u6BD4\u80FD" +
++        "\u8A71\u6295\u8EE2\u83C5\u9023\u4ED6\u6C11\u7D66" +
++        "\u9152\u7E41\u4FA1\u6E80\u671D\u4ED8\u6761\u7121" +
++        "\u8003\u697D\u4E3B\u610F\u6226\u5207\u5264\u7247" +
++        "\u7D30\u6E08\u7A32\u5E03\u91CC\u5C5E\u7AE0\u5909" +
++        "\u4F55\u685C\u5F7C\u67FB\u76CA\u58F2\u4EC1\u6DF1" +
++        "\u53F0\u9CE5\u9DB4\u652F\u6574\u89D2\u5609\u5473" +
++        "\u885B\u8B70\u5727\u7387\u8DEF\u706B\u961C\u8F1D" +
++        "\u70B9\u4E0E\u6E1B\u7551\u9280\u7A7A\u4EA4\u7FBD" +
++        "\u534A\u53CE\u592E\u7DCF\u8A18\u6674\u69CB\u969B" +
++        "\u6885\u5370\u8A00\u6817\u8EAB\u66F8\u514B\u7D20" +
++        "\u96C6\u7BC0\u5148\u6EDD\u6C7A\u6559\u7D14\u67F4" +
++        "\u63A5\u661F\u7740\u7559\u6620\u5DF1\u754C\u5177" +
++        "\u656C\u7FA4\u9806\u5171\u6D3B\u91CF\u6307\u89E3" +
++        "\u5BA4\u679C\u5404\u671B\u9632\u7D04\u61B2\u967D" +
++        "\u4E80\u56F3\u4E88\u8272\u7A0E\u690D\u53EF\u6052" +
++        "\u4F4D\u5178\u5FC5\u7D9A\u6025\u5728\u57A3\u541B" +
++        "\u5EF6\u5D8B\u4F01\u6803\u670D\u71B1\u5272\u5354" +
++        "\u6B69\u53F2\u512A\u658E\u623F\u5B97\u683C\u8FB0" +
++        "\u7B20\u5712\u8AF8\u8107\u5553\u8CE2\u5F25\u98A8" +
++        "\u5F97\u6613\u6253\u982D\u65ED\u6BB5\u52E2\u7136" +
++        "\u56E3\u984D\u843D\u914D\u7A0B\u8FBB\u543E\u611F" +
++        "\u5BDB\u53CD\u7A14\u9700\u6E90\u6C96\u984C" ,
++        "\uFFFD\u8FBC\u8349\u7B97\u76DB\u8FB2\u90A3\u7701" +
++        "\u69D8\u6BBF\u5C11\u4ECB\u53D7\u97F3\u7DE8\u59D4" +
++        "\u5E84\u4FC2\u72B6\u793A\u5E97\u5A9B\u682A\u6ECB" +
++        "\u68A8\u7E04\u53F3\u5DE6\u53CA\u9078\u5C45\u60C5" +
++        "\u7DF4\u70AD\u9928\u9271\u6A21\u6B8A\u7E3E\u4E9C" +
++        "\u7E4A\u4EF2\u5857\u6D88\u8853\u691C\u6717\u5B85" +
++        "\u529F\u5C1A\u8CBF\u60A6\u8102\u7BE0\u4F73\u7D21" +
++        "\u51A8\u6851\u78BA\u7267\u4E26\u5024\u89B3\u8CB4" +
++        "\u7DAD\u7D71\u5BBF\u4E21\u7CD6\u89AA\u9332\u6F84" +
++        "\u65BD\u5BB9\u98DB\u5C40\u7950\u904E\u6C0F\u6539" +
++        "\u76E4\u7A4D\u6E0B\u5DFB\u6DF3\u5FDC\u4E89\u8ECD" +
++        "\u88C5\u9178\u7E54\u67D3\u5E1D\u7DBF\u7C89\u822A" +
++        "\u7532\u5468\u4ED9\u5F85\u4F4E\u7DD1\u8EFD\u9EBB" +
++        "\u6176\u52B4\u78EF\u4E39\u80B2\u9650\u5C0E\u653E" +
++        "\u6643\u5EA7\u4EF6\u60F3\u9A13\u4ED5\u4F7F\u8F2A" +
++        "\u9854\u756A\u5F35\u805E\u4F9B\u6E6F\u6EB6\u6821" +
++        "\u9285\u92F3\u878D\u9756\u5199\u5B8C\u6E2F\u935B" +
++        "\u591C\u5145\u9F8D\u7DB1\u83F1\u901F\u52C9\u5237" +
++        "\u8D77\u6469\u53C2\u55B6\u7A42\u63A8\u8FD4\u8077" +
++        "\u6B62\u4F1D\u5E79\u7403\u6A29\u5C55\u5E61\u845B" +
++        "\u5EAD\u975E\u53F7\u5358\u6B73\u62E1\u51E6\u8A9E" +
++        "\u6628\u57DF\u6DF5\u518D\u50CD\u79D1\u9B5A\u7AEF" +
++        "\u9014\u6848\u5B57\u8AD6\u517C\u53C8\u632F\u6280" +
++        "\u5FB9\u672D\u7CFB\u5F93\u51B7\u614B\u5CF0" ,
++        "\uFFFD\u5931\u539A\u5074\u6CE8\u6E2C\u9803\u4E57" +
++        "\u8A66\u576A\u8429\u515A\u6C7D\u5B9D\u606D\u6A0B" +
++        "\u6E29\u6577\u8AAC\u82B8\u544A\u6B74\u822C\u98FE" +
++        "\u793C\u5C06\u96E3\u7802\u5224\u5F79\u5F71\u66FD" +
++        "\u5E2F\u9678\u938C\u8AC7\u5F70\u60AA\u6A19\u7533" +
++        "\u5BB3\u6BCD\u88DC\u5E4C\u58F0\u9664\u7B39\u5A66" +
++        "\u4E7E\u7AF6\u829D\u725B\u8CB7\u79FB\u785D\u8336" +
++        "\u52B9\u990A\u52F2\u80A5\u8B19\u7089\u590F\u5802" +
++        "\u67CF\u6255\u5E30\u713C\u786B\u8001\u7A76\u5BE9" +
++        "\u91DD\u65AD\u5C04\u5DEE\u5D50\u6298\u8010\u5BA3" +
++        "\u59CB\u5F8B\u6B8B\u666F\u8C61\u90F7\u5353\u96E2" +
++        "\u85AB\u6B7B\u8015\u64CD\u4EAE\u4E91\u90E1\u52E4" +
++        "\u6C42\u8CAB\u5B98\u59BB\u88CF\u773C\u4F2F\u7AAF" +
++        "\u7BC9\u968E\u63DB\u6842\u99C5\u68B6\u5747\u8CA1" +
++        "\u547D\u738B\u84B2\u90C1\u78E8\u7B11\u66F2\u6975" +
++        "\u5831\u63D0\u8A3C\u96EA\u9055\u88C1\u9996\u75C5" +
++        "\u6850\u4F59\u74E6\u4EE4\u5439\u732A\u672A\u525B" +
++        "\u8CA0\u4F34\u5100\u542B\u9069\u8FC4\u5C3B\u5DCC" +
++        "\u7B54\u8FFD\u8A0E\u4E08\u925B\u71C3\u8AB2\u70BA" +
++        "\u9662\u679A\u76AE\u8B77\u7DBE\u96E8\u6211\u5BC4" +
++        "\u837B\u62BC\u7D0D\u76E3\u7E2B\u964D\u572D\u7ADC" +
++        "\u7BC4\u6BBA\u8C9D\u698E\u9047\u6F14\u5360\u8FEB" +
++        "\u5287\u624D\u6566\u7D1A\u7D42\u6BCE\u7D79\u7E2E" +
++        "\u666E\u7965\u500B\u5C02\u99D2\u8A55\u7560" ,
++        "\uFFFD\u5B58\u8089\u50BE\u5E2B\u6DB2\u4F8B\u81E3" +
++        "\u81F3\u56E0\u7D99\u5DF2\u899A\u6E9D\u6D17\u8AAD" +
++        "\u8996\u731B\u5DE8\u7DB2\u888B\u4EFB\u5BC6\u8896" +
++        "\u6CC1\u8457\u8F03\u6BC5\u97FF\u8CA9\u5E45\u82E6" +
++        "\u63AA\u5F81\u78C1\u821E\u52AA\u7AAA\u5999\u6297" +
++        "\u8F14\u7FD2\u4FC3\u54C9\u967A\u66F4\u8B1B\u5E72" +
++        "\u5FA9\u8A2A\u6D3E\u7763\u6483\u8B58\u614E\u5A5A" +
++        "\u8D85\u71D0\u983C\u72E9\u583A\u5DFE\u8A8D\u67C4" +
++        "\u7DE0\u4F11\u77ED\u4F0F\u5BC5\u629C\u5C3C\u533B" +
++        "\u6DC0\u81FC\u96D1\u904A\u6D6E\u93E1\u5C64\u98FC" +
++        "\u524A\u6DFB\u8584\u968A\u56FA\u5883\u7766\u9805" +
++        "\u4E73\u8C46\u8A31\u7DD2\u8FF0\u6D6A\u4F9D\u6B6F" +
++        "\u6B27\u62C5\u511F\u9769\u5374\u9AA8\u6775\u887F" +
++        "\u5305\u7570\u8D70\u864E\u5CEF\u8CDE\u5FF5\u725F" +
++        "\u7686\u609F\u80CC\u59EB\u8131\u5E0C\u8A17\u9676" +
++        "\u82D7\u74B0\u84B8\u50D5\u96F2\u7248\u7834\u6DD1" +
++        "\u6E09\u67FF\u6F54\u5915\u500D\u72AC\u9EC4\u7B46" +
++        "\u9B3C\u6563\u53BB\u8A98\u91DC\u9818\u6FC3\u65C5" +
++        "\u501F\u7F8A\u6F64\u9031\u5F3E\u63F4\u9038\u8B66" +
++        "\u7BE4\u7206\u6843\u72EC\u65CF\u82A6\u5BA2\u6960" +
++        "\u9EA6\u52DF\u6790\u639B\u7D75\u9855\u5DF3\u5805" +
++        "\u8ACB\u95A3\u8863\u8CA8\u5B63\u5E8A\u5449\u786C" +
++        "\u7D2B\u8CA2\u5352\u7D76\u8CB8\u7070\u547C\u6545" +
++        "\u6676\u73B2\u56F2\u7BB1\u58A8\u7A81\u66AE" ,
++        "\uFFFD\u8087\u59FF\u8840\u56F0\u7B51\u6DF7\u5F01" +
++        "\u934B\u9000\u4FE3\u675F\u4FBF\u8CC3\u526F\u63A1" +
++        "\u5442\u8907\u698A\u5E2D\u5A18\u7518\u514D\u5E7E" +
++        "\u50B5\u5BDD\u68D2\u745E\u69FB\u5FAE\u55E3\u8A70" +
++        "\u5BF8\u5824\u8358\u5F13\u5E95\u706F\u751A\u7D05" +
++        "\u60E3\u7E70\u5012\u5238\u83EF\u5373\u5F31\u6A2B" +
++        "\u9CF4\u53CC\u6D32\u4EAB\u4E92\u842C\u8A8C\u65E2" +
++        "\u6F01\u80A9\u9DF9\u8B72\u7B52\u9589\u6D74\u63A2" +
++        "\u6590\u5BD2\u6319\u8AB0\u76DF\u99A8\u7A74\u8236" +
++        "\u8846\u8061\u6557\u5922\u9644\u88AB\u9326\u7B4B" +
++        "\u62B5\u5371\u5E81\u5BDF\u4F75\u58C1\u7058\u7DCA" +
++        "\u5438\u73E0\u52D8\u5208\u78D0\u6B23\u6838\u4E43" +
++        "\u690E\u8377\u6ED1\u98F2\u8170\u8857\u8EF8\u798E" +
++        "\u83DC\u8FCE\u7E01\u5510\u4EA8\u8A33\u9162\u5EFB" +
++        "\u606F\u4E86\u664B\u6368\u5217\u8056\u51FD\u7642" +
++        "\u821F\u9685\u50CF\u662F\u4F3C\u4E59\u6A3D\u4E71" +
++        "\u523A\u8ACF\u6A58\u66FF\u670B\u653B\u9732\u5EC3" +
++        "\u8A13\u5782\u604B\u866B\u95D8\u60A9\u4E01\u63CF" +
++        "\u6FC0\u659C\u8CAC\u8305\u7CA7\u6050\u96F7\u5FCD" +
++        "\u640D\u5B54\u900F\u62D3\u59B9\u7159\u51AC\u79F0" +
++        "\u552F\u5275\u6697\u80F8\u4E98\u4ECF\u51CD\u9D5C" +
++        "\u5144\u7A93\u67F1\u5841\u7C21\u8861\u5C31\u68DA" +
++        "\u91E7\u9DF2\u63EE\u6575\u84EE\u523B\u6B32\u7C98" +
++        "\u5982\u969C\u8987\u7C9F\u9006\u62DB\u66DC" ,
++        "\uFFFD\u6355\u6982\u50AC\u623B\u5FD8\u63DA\u75DB" +
++        "\u627F\u616E\u8266\u7C95\u716E\u96C7\u7F6A\u5426" +
++        "\u5200\u83D3\u5211\u594F\u9D28\u574A\u66C7\u9858" +
++        "\u820E\u6614\u733F\u50B7\u6551\u5EB8\u5B6B\u55AC" +
++        "\u5FEB\u6388\u8CAF\u676F\u5951\u5A01\u71E5\u5DE3" +
++        "\u8C6A\u6271\u81F4\u5C3A\u5F92\u9045\u7384\u7149" +
++        "\u79D8\u796D\u9003\u83CC\u5FB4\u5B8D\u6279\u64AE" +
++        "\u7D18\u723E\u5BEE\u65E7\u8D08\u9E78\u52E7\u5D07" +
++        "\u9F62\u6069\u536F\u6681\u9663\u5E3D\u62B1\u722A" +
++        "\u6E4A\u93AE\u79E6\u53E5\u809D\u88FE\u53B3\u6C88" +
++        "\u6E7F\u5141\u9091\u6F6E\u84C4\u85EA\u8129\u6BD2" +
++        "\u663C\u7F72\u73C2\u5F1F\u790E\u60B2\u72ED\u58EE" +
++        "\u8179\u8E8D\u5C65\u5DE7\u6C37\u6DE1\u862D\u72AF" +
++        "\u8E0A\u7C92\u8218\u8033\u63A7\u9291\u5019\u8155" +
++        "\u8A69\u8EDF\u66B4\u8133\u7591\u6B20\u6669\u90F5" +
++        "\u4E32\u73EA\u693F\u7687\u707D\u7D3A\u6148\u8607" +
++        "\u99FF\u59C9\u7832\u7815\u907F\u80A1\u5C3F\u66A2" +
++        "\u9418\u6D44\u5E55\u5854\u7B95\u8DE1\u4EA1\u8C5A" +
++        "\u81E8\u89E6\u9670\u5263\u74F6\u9A5A\u6012\u520A" +
++        "\u7434\u9801\u907A\u5504\u7956\u5230\u54B2\u8A34" +
++        "\u96A3\u4FF3\u9283\u91E3\u7D39\u9688\u4F51\u7D61" +
++        "\u5DBA\u9BAE\u5F80\u795D\u8597\u8DA3\u7C60\u5C0A" +
++        "\u7565\u85A9\u63D6\u9E97\u7D22\u5375\u9AEA\u9042" +
++        "\u6B3D\u7D0B\u6392\u80AA\u7DE9\u9F3B\u99C6" ,
++        "\uFFFD\u6D78\u6731\u5531\u6398\u7825\u5CB3\u5DE1" +
++        "\u92AD\u98FD\u9810\u6CE3\u6B64\u5321\u6B53\u5E8F" +
++        "\u7AE5\u502B\u6E56\u62BD\u8276\u6A9C\u4E18\u57F7" +
++        "\u752B\u7C97\u82EB\u9802\u811A\u73CD\u8F9B\u5C0B" +
++        "\u63E1\u7372\u8150\u80E1\u5B99\u76D7\u6291\u65EC" +
++        "\u8A3A\u5947\u65E8\u6E7E\u6696\u55AB\u8F09\u92ED" +
++        "\u9396\u4EEE\u755C\u6F38\u8F9E\u7981\u5C01\u62E0" +
++        "\u9BE8\u91C8\u6276\u65CB\u8E0F\u8B21\u699B\u6216" +
++        "\u5A92\u90B8\u50DA\u79DF\u6C41\u5270\u9175\u8B39" +
++        "\u685D\u5875\u819C\u5B9C\u8A89\u8A72\u9D8F\u6377" +
++        "\u5974\u8AA4\u52B1\u6962\u5C48\u9CE9\u673A\u75B2" +
++        "\u6D1E\u4F0D\u7E6D\u7B48\u7FCC\u65E6\u59A5\u79E9" +
++        "\u6212\u6EDE\u770B\u8CA7\u65BC\u885D\u6ADB\u5C4A" +
++        "\u8074\u9084\u8ECC\u65D7\u57F9\u708E\u6F06\u5E7C" +
++        "\u77AC\u4FF5\u5949\u81ED\u9B45\u7FFC\u8178\u69FD" +
++        "\u6CCA\u69C7\u79D2\u8B1D\u9ED9\u81D3\u7A3C\u7968" +
++        "\u6F5C\u63B2\u8DDD\u6383\u6E9C\u5E33\u61F8\u76BF" +
++        "\u642C\u7DB4\u6247\u6458\u6816\u5F69\u9022\u7A1A" +
++        "\u82B9\u70C8\u9A12\u6163\u6FEF\u53EB\u9D3B\u62FE" +
++        "\u60A0\u9591\u6D99\u6162\u9298\u635C\u9707\u8972" +
++        "\u683D\u51E1\u9B54\u608C\u5B22\u99C4\u7126\u8A73" +
++        "\u971C\u7396\u67D4\u60A3\u4E11\u4EF0\u8CDB\u8CB0" +
++        "\u7912\u9774\u8986\u5146\u57DC\u99D0\u80C3\u8338" +
++        "\u78A7\u86CD\u7F85\u5049\u8247\u690B\u7C4D" ,
++        "\uFFFD\u53EA\u5F26\u6E25\u6881\u9375\u5DFD\u5347" +
++        "\u9727\u643A\u75C7\u6FA4\u73A9\u77E9\u9451\u8B5C" +
++        "\u808C\u674E\u4EAD\u582F\u7573\u8ED2\u6CE5\u9320" +
++        "\u8FF7\u7D33\u72C2\u8217\u7422\u82C5\u9A30\u773A" +
++        "\u5F84\u9673\u64AD\u920D\u74DC\u60C7\u86ED\u4FFA" +
++        "\u52A3\u6A3A\u7720\u5320\u61B6\u5674\u8776\u6CBF" +
++        "\u505C\u602A\u8466\u6B96\u6DBC\u97D3\u968F\u6876" +
++        "\u60D1\u5378\u64A4\u51A0\u9154\u5DF4\u629E\u5E63" +
++        "\u929A\u7693\u6C5A\u6597\u50E7\u7C82\u5F6B\u6CE1" +
++        "\u5F6C\u5AC1\u6F2C\u852D\u6442\u5750\u58C7\u8CFC" +
++        "\u8A5E\u7A7F\u689D\u7E26\u7A40\u7344\u8AEB\u4FD7" +
++        "\u7A63\u8036\u7DEF\u80C6\u8AED\u731F\u8FEA\u4F0E" +
++        "\u758B\u518A\u6734\u5FD9\u61C7\u65AF\u9CF3\u5ECA" +
++        "\u9262\u68DF\u6CB8\u80F4\u57CB\u6C99\u96A0\u5B64" +
++        "\u58F1\u68C4\u5410\u982C\u8A87\u4E5E\u6167\u9BAB" +
++        "\u90AA\u55B0\u82BD\u596A\u66F3\u8299\u5893\u719F" +
++        "\u6284\u67D1\u9063\u5ACC\u6C57\u7CE7\u5851\u64B2" +
++        "\u58CA\u830E\u5968\u5302\u5A46\u8702\u6065\u72D9" +
++        "\u89A7\u6689\u66F9\u5D6F\u5BB0\u96BC\u636E\u60DC" +
++        "\u7948\u51DD\u8606\u5EC9\u7554\u596E\u6B04\u4F43" +
++        "\u7B94\u67DA\u62DD\u628A\u971E\u62ED\u6EC5\u508D" +
++        "\u67B6\u80E4\u9EBF\u5EB5\u638C\u85CD\u9867\u52C5" +
++        "\u6016\u68CB\u61D0\u5751\u8F29\u5FAA\u81A8\u7D62" +
++        "\u71C8\u54C0\u69CC\u6B3E\u65AC\u63C3\u4F46" ,
++        "\uFFFD\u7B1B\u6B86\u88F8\u5203\u732E\u6687\u7D17" +
++        "\u57F4\u570F\u618E\u970A\u7C3F\u8B00\u7881\u8CE0" +
++        "\u548B\u7B87\u745B\u7C11\u8870\u5398\u5448\u6CF3" +
++        "\u6F22\u53F6\u88B4\u5301\u7A6B\u8695\u586B\u5D29" +
++        "\u88C2\u62D2\u4E1E\u5036\u96C0\u7363\u8A3B\u5176" +
++        "\u7199\u7FE0\u8888\u7E1E\u4E4F\u84CB\u6F2B\u5859" +
++        "\u936C\u53E9\u865A\u9149\u86EF\u5E06\u5507\u902E" +
++        "\u6795\u846C\u5BA5\u82A5\u8431\u6D8C\u63FA\u4EA5" +
++        "\u51C6\u6328\u7F70\u5B5F\u5DBD\u99C8\u53EC\u7985" +
++        "\u8A54\u7962\u88DF\u5B09\u4FB5\u4F91\u9B8E\u5192" +
++        "\u96F0\u6DAF\u622F\u8490\u8CDC\u5075\u5CE0\u4E14" +
++        "\u4F83\u7C54\u84D1\u77B3\u8AEE\u5CE8\u62F6\u663B" +
++        "\u8A93\u8526\u8A95\u65FA\u6714\u53D4\u62AB\u8CE6" +
++        "\u88F3\u5BE7\u868A\u668E\u582A\u6170\u696F\u9F13" +
++        "\u7A92\u7893\u6A7F\u9017\u9266\u7D10\u7BC7\u6EF4" +
++        "\u821C\u5C3D\u62CD\u85C1\u6F02\u6E67\u6691\u85A6" +
++        "\u637A\u821B\u4F8D\u5091\u8A02\u62EC\u9BC9\u7A3D" +
++        "\u7C9B\u50C5\u9019\u708A\u7C8B\u64EC\u665F\u6562" +
++        "\u732B\u5339\u67A0\u55A7\u6D2A\u7A3F\u64E6\u79A7" +
++        "\u67D8\u7B26\u96BB\u6311\u72A0\u5C6F\u7026\u97EE" +
++        "\u60DF\u8AFE\u8B04\u8494\u9BD6\u82AF\u932C\u6606" +
++        "\u9640\u5BC2\u86C7\u7949\u8017\u6919\u7092\u963B" +
++        "\u7C7E\u59D3\u5B5C\u7D1B\u91D8\u6A80\u85E9\u6905" +
++        "\u6C93\u502D\u4EA6\u7FC1\u61A4\u8CCA\u9665" ,
++        "\uFFFD\u93D1\u53F1\u598A\u8EAC\u62D8\u6867\u71D5" +
++        "\u7B67\u504F\u67D0\u82D1\u978D\u748B\u80BA\u7336" +
++        "\u514E\u8105\u90CA\u584A\u67FE\u6FF1\u5FFD\u76C6" +
++        "\u9A0E\u507D\u9694\u5EF7\u7BB8\u904D\u6C4E\u85FB" +
++        "\u819D\u67AF\u564C\u5606\u8C8C\u56DA\u73ED\u8CC4" +
++        "\u8FC5\u96F6\u6C50\u8944\u8F3F\u7D5E\u60E8\u72FC" +
++        "\u7D9C\u8463\u5CFB\u5446\u5D16\u6CA1\u81B3\u58FA" +
++        "\u5BB4\u8108\u541F\u8CBC\u6182\u78A9\u6FE1\u91A4" +
++        "\u76F2\u6020\u76FE\u84C9\u7F36\u4EC7\u755D\u7A17" +
++        "\u84EC\u75F4\u4F3A\u676D\u7460\u62F3\u6F20\u79E4" +
++        "\u87F9\u6094\u6234\u66AB\u820C\u8499\u723A\u5FCC" +
++        "\u6109\u70CF\u7261\u7A50\u5098\u9AED\u5D69\u601C" +
++        "\u6667\u99B4\u5E7B\u643E\u5830\u53C9\u7A9F\u990C" +
++        "\u9B42\u8F5F\u7AAE\u5B9B\u68A2\u6249\u7984\u9DFA" +
++        "\u5451\u932F\u8AC4\u5F90\u8DF3\u5A2F\u80DE\u6D29" +
++        "\u7A4F\u84BC\u9D2B\u9010\u6D38\u916A\u6FC1\u9905" +
++        "\u6BBB\u5EB6\u91B8\u5076\u6F0F\u4E19\u540F\u9675" +
++        "\u6C72\u51B4\u5631\u9F20\u66A6\u5F0A\u75AB\u51F8" +
++        "\u674F\u8DF5\u6C70\u8A6B\u757F\u5CAC\u6841\u8CD3" +
++        "\u9BDB\u8475\u6893\u840C\u72DB\u7577\u8568\u783A" +
++        "\u847A\u5F10\u831C\u6813\u6E1A\u9DAF\u51F9\u7980" +
++        "\u4E99\u5EE3\u908A\u80AF\u59A8\u77DB\u8D74\u8A1F" +
++        "\u673D\u533F\u8A0A\u5618\u6756\u53D9\u4F10\u7409" +
++        "\u5A41\u4FF8\u79B0\u9838\u8E2A\u9D60\u8F44" ,
++        "\uFFFD\u65A5\u75BE\u906D\u867B\u60BC\u51B6\u5937" +
++        "\u7D2F\u916C\u69AE\u7CE0\u792A\u5D14\u64C1\u58EC" +
++        "\u589C\u8D66\u66D9\u61F2\u912D\u6E58\u9435\u965B" +
++        "\u7272\u5F6A\u5E9A\u8F1B\u5B95\u5C39\u9013\u834F" +
++        "\u7CCE\u620A\u90ED\u691B\u6E15\u65DB\u66FE\u4E9F" +
++        "\u55AA\u7A83\u83E9\u8B83\u846D\u83F0\u7F50\u918D" +
++        "\u9190\u758E\u95A5\u81E7\u75E2\u61A9\u8A50\u95B2" +
++        "\u53A8\u59F6\u9813\u7891\u7C17\u6B3A\u57E0\u620E" +
++        "\u83D6\u8AD2\u75D4\u927E\u59DC\u5289\u9087\u6FFE" +
++        "\u7473\u5C09\u9D6C\u84FC\u7CDF\u7BAD\u8A6E\u594E" +
++        "\u56A2\u819A\u7947\u6636\u53E1\u7887\u58CC\u9397" +
++        "\u6E13\u5256\u828B\u9E9F\u9583\u658C\u9E93\u7345" +
++        "\u6E26\u9D07\u5983\u7DAC\u96C1\u61BE\u6762\u9ECE" +
++        "\u90A8\u9187\u9F0E\u7C38\u51F1\u8599\u524C\u540E" +
++        "\u7901\u655E\u6668\u5CE1\u7566\u76C8\u8679\u531D" +
++        "\u5506\u7926\u8912\u77EF\u7CC0\u570B\u515C\u7E8A" +
++        "\u535C\u8A60\u65A7\u8766\u5766\u6AE8\u87FB\u5E16" +
++        "\u7AEA\u8D73\u771E\u737A\u66E0\u9410\u816B\u7B08" +
++        "\u91FC\u5737\u6FE4\u856A\u7E55\u9957\u87BA\u694A" +
++        "\u818F\u5EFF\u891C\u72D0\u9846\u9EDB\u8D99\u5DD6" +
++        "\u62B9\u64AB\u4F76\u613F\u68AF\u5F14\u800C\u92F8" +
++        "\u7BC1\u52FE\u664F\u9177\u51F6\u97A0\u839E\u647A" +
++        "\u9C3A\u67F5\u7C4F\u685F\u9B6F\u9F4B\u7FFB\u9348" +
++        "\u4FF6\u9E92\u9197\u96DB\u5BE6\u6CCC\u7CFE" ,
++        "\uFFFD\u9453\u6822\u66B9\u5BD4\u98F4\u8AE6\u8154" +
++        "\u7827\u74BD\u6ED3\u9288\u5A20\u5B8B\u86F8\u760D" +
++        "\u865C\u6641\u91C9\u5589\u7A4E\u59E5\u6042\u932B" +
++        "\u5B5A\u849C\u5C91\u96CD\u62D9\u675C\u6787\u5E7D" +
++        "\u8650\u9EB9\u5CB1\u80CE\u7A00\u8ABC\u5700\u8096" +
++        "\u7D72\u9211\u8098\u907C\u7761\u8737\u9075\u817A" +
++        "\u7C3E\u6EA2\u965E\u7E90\u72D7\u58FD\u60B3\u9786" +
++        "\u7E88\u587E\u6E20\u84DC\u6961\u77AD\u5197\u652A" +
++        "\u6777\u5DCD\u6101\u932E\u5954\u6367\u798D\u7AFF" +
++        "\u80D6\u58B3\u6168\u6AC3\u7483\u9B92\u660A\u642D" +
++        "\u5118\u6763\u809B\u9C10\u4FC9\u6953\u7A1C\u52FF" +
++        "\u6055\u768E\u817F\u5642\u5F6D\u7194\u70BB\u7436" +
++        "\u8000\u874B\u55DA\u7435\u7690\u96EB\u66DD\u751C" +
++        "\u633D\u6EC9\u7C64\u7CA5\u6D35\u935C\u7027\u5E25" +
++        "\u701D\u54BD\u611A\u6973\u6C6A\u559A\u6D19\u96CC" +
++        "\u5BE1\u59FB\u697C\u914C\u7709\u8500\u7A46\u7872" +
++        "\u92E4\u8CED\u7CFA\u9D1B\u814E\u9AC4\u68A0\u6DCB" +
++        "\u5918\u83B1\u5629\u9B41\u6897\u70B3\u9771\u9419" +
++        "\u67A2\u6802\u7895\u68A7\u50D6\u80B1\u5EF8\u82D4" +
++        "\u797A\u67CA\u7E4D\u69CD\u51C4\u723D\u6829\u99B3" +
++        "\u5F3C\u8F61\u682B\u6155\u6591\u8FB1\u7E1B\u9798" +
++        "\u9952\u8877\u5B2C\u6631\u4FA0\u6939\u6AFB\u5BB5" +
++        "\u7AC8\u5026\u5944\u9059\u7B25\u7B4F\u8E74\u8543" +
++        "\u5858\u8B0E\u5039\u8654\u97F6\u7569\u72F8" ,
++        "\uFFFD\u4EF7\u9D89\u5016\u51CC\u62CC\u91C6\u8755" +
++        "\u649A\u88F4\u91E6\u6854\u695A\u6C40\u7B6C\u6741" +
++        "\u77D7\u8823\u5384\u8EAF\u7280\u8C6B\u788D\u7165" +
++        "\u8207\u68B1\u8D04\u9077\u701E\u8FE6\u810A\u81BF" +
++        "\u89DC\u68B3\u6ADF\u92EA\u95C7\u7957\u7A20\u53A9" +
++        "\u8E5F\u786F\u79B9\u5F27\u5ED6\u6853\u93AC\u919C" +
++        "\u691A\u5806\u64B0\u7E4B\u7D8F\u68F2\u6EA5\u82DB" +
++        "\u9192\u5243\u8EB0\u9081\u721B\u7DCB\u7656\u59AC" +
++        "\u6FE0\u8B28\u80A2\u5544\u6070\u5F4A\u68C8\u633A" +
++        "\u9438\u9B4F\u81E5\u6A17\u70DD\u69A7\u614C\u920E" +
++        "\u9310\u9BAD\u52D7\u925E\u92F9\u5993\u7696\u66FB" +
++        "\u5769\u73CA\u7678\u6A1F\u7E9C\u9811\u8CD1\u5840" +
++        "\u6349\u871C\u62D0\u60B4\u6B89\u86EE\u5764\u581D" +
++        "\u8549\u7235\u7652\u983B\u8237\u5351\u5C24\u59BE" +
++        "\u5815\u901D\u69B4\u834A\u9EA9\u976B\u8086\u53AD" +
++        "\u6068\u4FAE\u76C3\u6A05\u689B\u937E\u99D5\u91C7" +
++        "\u5C16\u585E\u61A7\u9699\u4FDF\u8278\u9C52\u5F45" +
++        "\u6108\u7C8D\u806F\u5DF7\u8D6B\u57B0\u98E2\u5703" +
++        "\u79BF\u5996\u7941\u540A\u83DF\u9C39\u52D2\u6BD8" +
++        "\u86CB\u4EC0\u9A28\u5366\u8006\u7337\u6492\u8FED" +
++        "\u5AC9\u5420\u537F\u4FAF\u807E\u543B\u7515\u7B18" +
++        "\u8749\u54B3\u704C\u8997\u6CAB\u85FA\u7114\u696E" +
++        "\u9328\u745A\u59D1\u6E5B\u617E\u53E2\u8317\u76E7" +
++        "\u848B\u85AF\u6925\u5C60\u7259\u75D5\u8B90" ,
++        "\uFFFD\u6E07\u82AD\u5C4F\u7BED\u9784\u6F70\u764C" +
++        "\u88B7\u92D2\u4F36\u5EFE\u9061\u88E1\u8471\u711A" +
++        "\u6D1B\u80B4\u74E2\u7433\u5A7F\u905C\u980C\u5319" +
++        "\u906E\u6BB4\u85AA\u7897\u7AFA\u6AAE\u8910\u958F" +
++        "\u620C\u4F3D\u4F7C\u79BE\u9D0E\u4ED4\u57A2\u51A5" +
++        "\u6900\u6089\u707C\u7AE3\u8956\u93A7\u9C2D\u5112" +
++        "\u52FA\u7CCA\u60F9\u7078\u81C6\u559D\u6991\u96C9" +
++        "\u553E\u805A\u8304\u8332\u54FA\u565B\u8FBF\u5634" +
++        "\u6760\u5265\u840E\u5E5F\u7B65\u9035\u8387\u6B4E" +
++        "\u58BE\u6309\u727D\u97AD\u69D0\u546A\u984E\u632B" +
++        "\u714E\u8557\u7CDE\u6372\u68F9\u7511\u8602\u6EBA" +
++        "\u5A3C\u7A84\u851A\u95A4\u59D0\u60DA\u51EA\u5A29" +
++        "\u7169\u6F15\u696B\u63BB\u75E9\u4E4E\u7DBB\u6934" +
++        "\u8521\u8FFA\u9354\u9C3B\u5F17\u5ED3\u8258\u895F" +
++        "\u82E7\u52C3\u5C51\u83AB\u7826\u79E1\u7FF0\u626E" +
++        "\u60F0\u5CA8\u6F97\u71A8\u9909\u5132\u5E37\u5F04" +
++        "\u637B\u6753\u68D7\u6652\u9CF6\u88B0\u52AB\u4FC4" +
++        "\u4E3C\u67B3\u7BAA\u7F4D\u8A23\u63B4\u71E6\u65A4" +
++        "\u6F09\u853D\u5072\u7DBA\u5516\u7B04\u72FD\u6CD3" +
++        "\u8422\u621F\u50AD\u8235\u8718\u5919\u6028\u677C" +
++        "\u6F23\u75B9\u695C\u520E\u8018\u8B01\u71ED\u5713" +
++        "\u660F\u83EB\u7164\u7D9B\u5617\u7D7D\u8F4D\u9318" +
++        "\u8569\u5D17\u678C\u67DE\u87C7\u79AE\u5835\u8404" +
++        "\u9041\u7FD4\u6E8C\u8A63\u9D08\u670F\u939A" ,
++        "\uFFFD\u63AC\u602F\u64E2\u608D\u96B7\u6357\u8461" +
++        "\u914B\u75D8\u60E7\u9913\u9C57\u5984\u6DEB\u5E96" +
++        "\u6D9C\u9BF0\u58BB\u7977\u60B6\u633F\u5BF5\u9812" +
++        "\u558B\u82D3\u5147\u6190\u7953\u79BD\u6C5D\u9EBA" +
++        "\u9C48\u8DA8\u5EE0\u7D43\u5EFC\u854E\u8CE4\u5AE1" +
++        "\u54E8\u5023\u52BE\u7DEC\u8511\u6666\u6C3E\u724C" +
++        "\u8ADC\u9C0D\u77A5\u8B02\u8D05\u6F11\u9834\u97FB" +
++        "\u50FB\u7F75\u5A03\u8513\u4FB6\u634C\u9D61\u808B" +
++        "\u5294\u65A1\u567A\u5957\u8D0B\u6A35\u6AD3\u70F9" +
++        "\u865E\u6FB1\u51E7\u7FEB\u59EA\u5E87\u6B6A\u754F" +
++        "\u717D\u914E\u7D2C\u8C79\u6062\u621A\u7FA8\u5F1B" +
++        "\u6C8C\u86FE\u7562\u7B86\u9AB8\u6627\u7ABA\u844E" +
++        "\u6F81\u8B2C\u86A4\u6FEB\u7B8B\u7F77\u8F2F\u8E44" +
++        "\u7E23\u4E4D\u79A6\u8AFA\u903C\u50D1\u9ECD\u5EDF" +
++        "\u758F\u631F\u53DB\u9910\u826E\u62F7\u68FA\u725D" +
++        "\u803D\u58D5\u5C4D\u86D9\u540B\u8805\u92F2\u9237" +
++        "\u5C61\u985B\u86E4\u966A\u7262\u6955\u6CD7\u6994" +
++        "\u9C2F\u77E7\u68C9\u8DE8\u6D6C\u67C1\u9BAA\u619A" +
++        "\u63A9\u7015\u9306\u934D\u6A61\u6258\u5283\u7525" +
++        "\u5687\u6C83\u6834\u649E\u4E9B\u7252\u59E6\u8FC2" +
++        "\u5FBD\u6DD8\u85F7\u8A51\u9817\u99C1\u63A0\u7C81" +
++        "\u5B30\u8139\u5403\u7E82\u8106\u532A\u6A8E\u7F6B" +
++        "\u54E9\u5678\u8AB9\u6715\u5BD3\u6478\u64FE\u6B1D" +
++        "\u8CC2\u51CB\u7E8F\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\u5F0C\u4E10\u4E15\u4E28\u4E2A\u4E31\u4E36" +
++        "\u4E3F\u4E42\u4E56\u4E58\u4E62\u4E82\u4E85\u4E8A" +
++        "\u4E8E\u5F0D\u4E9E\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6" +
++        "\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4EE1\u4ED7\u4EDE" +
++        "\u4EED\u4EDF\u4EFC\u4F09\u4F1C\u4F00\u4F03\u4F5A" +
++        "\u4F30\u4F5D\u4F39\u4F57\u4F47\u4F5E\u4F56\u4F5B" +
++        "\u4F92\u4F8A\u4F88\u4F8F\u4F9A\u4FAD\u4F98\u4F7B" +
++        "\u4FAB\u4F69\u4F70\u4F94\u4F6F\u4F86\u4F96\u4FD4" +
++        "\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FCD\u4FE4" +
++        "\u4FE5\u501A\u5040\u5028\u5014\u502A\u5025\u5005" +
++        "\u5021\u5022\u5029\u502C\u4FFF\u4FFE\u4FEF\u5011" +
++        "\u501E\u5006\u5043\u5047\u5055\u5050\u5048\u505A" +
++        "\u5056\u500F\u5046\u5070\u5042\u506C\u5078\u5080" +
++        "\u5094\u509A\u5085\u50B4\u6703\u50B2\u50C9\u50CA" +
++        "\u50B3\u50C2\u50F4\u50DE\u50E5\u50D8\u50ED\u50E3" +
++        "\u50EE\u50F9\u50F5\u5109\u5101\u5102\u511A\u5115" +
++        "\u5114\u5116\u5121\u513A\u5137\u513C\u513B\u513F" +
++        "\u5140\u514A\u514C\u5152\u5154\u5162\u5164\u5169" +
++        "\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F" +
++        "\u5191\u5193\u5195\u5196\u519D\u51A4\u51A6\u51A2" +
++        "\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5" +
++        "\u51BE\u51BD\u51C5\u51C9\u51DB\u51E0\u51E9\u51EC" +
++        "\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u5215" +
++        "\u5227\u522A\u522E\u5233\u5239\u5244\u524B" ,
++        "\uFFFD\u524F\u525E\u5254\u5271\u526A\u5273\u5274" +
++        "\u5269\u527F\u527D\u528D\u5288\u5292\u5291\u529C" +
++        "\u52A6\u52AC\u52AD\u52BC\u52B5\u52C1\u52C0\u52CD" +
++        "\u52DB\u52DE\u52E3\u52E6\u52E0\u52F3\u52F5\u52F8" +
++        "\u52F9\u5300\u5306\u5307\u5308\u7538\u530D\u5310" +
++        "\u530F\u5315\u531A\u5324\u5323\u532F\u5331\u5333" +
++        "\u5338\u5340\u5345\u5346\u5349\u4E17\u534D\u51D6" +
++        "\u8209\u535E\u5369\u536E\u5372\u5377\u537B\u5382" +
++        "\u5393\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B2" +
++        "\u53B6\u53C3\u7C12\u53DD\u53DF\u66FC\uFA0E\u71EE" +
++        "\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C" +
++        "\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F" +
++        "\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B" +
++        "\u5480\u549C\u5476\u5484\u5490\u5486\u548A\u54C7" +
++        "\u54BC\u54AF\u54A2\u54B8\u54A5\u54AC\u54C4\u54D8" +
++        "\u54C8\u54A8\u54AB\u54C2\u54A4\u54A9\u54BE\u54E5" +
++        "\u54FF\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54E2" +
++        "\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556" +
++        "\u5557\u5538\u5533\u555D\u5599\u5580\u558A\u559F" +
++        "\u557B\u557E\u5598\u559E\u55AE\u557C\u5586\u5583" +
++        "\u55A9\u5587\u55A8\u55C5\u55DF\u55C4\u55DC\u55E4" +
++        "\u55D4\u55F9\u5614\u55F7\u5616\u55FE\u55FD\u561B" +
++        "\u564E\u5650\u5636\u5632\u5638\u566B\u5664\u5686" +
++        "\u562F\u566C\u566A\u71DF\u5694\u568F\u5680" ,
++        "\uFFFD\u568A\u56A0\u56A5\u56AE\u56B6\u56B4\u56C8" +
++        "\u56C2\u56BC\u56C1\u56C3\u56C0\u56CE\u56D3\u56D1" +
++        "\u56D7\u56EE\u56F9\u56FF\u5704\u5709\u5708\u570D" +
++        "\u55C7\u5718\u5716\u571C\u5726\u5738\u574E\u573B" +
++        "\u5759\u5740\u574F\u5765\u5788\u5761\u577F\u5789" +
++        "\u5793\u57A0\u57A4\u57B3\u57AC\u57AA\u57C3\u57C6" +
++        "\u57C8\u57C0\u57D4\u57C7\u57D2\u57D3\u57D6\uFA0F" +
++        "\u580A\u57E3\u580B\u5819\u5821\u584B\u5862\u6BC0" +
++        "\u583D\u5852\uFA10\u5870\u5879\u5885\u5872\u589F" +
++        "\u58AB\u58B8\u589E\u58AE\u58B2\u58B9\u58BA\u58C5" +
++        "\u58D3\u58D1\u58D7\u58D9\u58D8\u58DE\u58DC\u58DF" +
++        "\u58E4\u58E5\u58EF\u58F7\u58F9\u58FB\u58FC\u5902" +
++        "\u590A\u590B\u5910\u591B\u68A6\u5925\u592C\u592D" +
++        "\u5932\u5938\u593E\u5955\u5950\u5953\u595A\u5958" +
++        "\u595B\u595D\u5963\u5962\u5960\u5967\u596C\u5969" +
++        "\u5978\u5981\u598D\u599B\u599D\u59A3\u59A4\u59B2" +
++        "\u59BA\u59C6\u59E8\u59D9\u59DA\u5A25\u5A1F\u5A11" +
++        "\u5A1C\u5A1A\u5A09\u5A40\u5A6C\u5A49\u5A35\u5A36" +
++        "\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5AD0\u5ACB\u5AC2" +
++        "\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB" +
++        "\u5B0C\u5B0B\u5B16\u5B32\u5B2A\u5B36\u5B3E\u5B43" +
++        "\u5B45\u5B40\u5B51\u5B55\u5B56\u6588\u5B5B\u5B65" +
++        "\u5B69\u5B70\u5B73\u5B75\u5B78\u5B7A\u5B80\u5B83" +
++        "\u5BA6\u5BB8\u5BC3\u5BC7\u5BC0\u5BC9\u752F" ,
++        "\uFFFD\u5BD0\u5BD8\u5BDE\u5BEC\u5BE4\u5BE2\u5BE5" +
++        "\u5BEB\u5BF0\u5BF3\u5BF6\u5C05\u5C07\u5C08\u5C0D" +
++        "\u5C13\u5C1E\u5C20\u5C22\u5C28\u5C38\u5C41\u5C46" +
++        "\u5C4E\u5C53\u5C50\u5B71\u5C6C\u5C6E\u5C76\u5C79" +
++        "\u5C8C\u5C94\u5CBE\u5CAB\u5CBB\u5CB6\u5CB7\u5CA6" +
++        "\u5CBA\u5CC5\u5CBC\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA" +
++        "\u5CF5\u5CED\u5CEA\u5D0B\u5D15\u5D1F\u5D1B\u5D11" +
++        "\u5D27\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D53" +
++        "\uFA11\u5D5C\u5D4E\u5D4B\u5D42\u5D6C\u5D73\u5D6D" +
++        "\u5D76\u5D87\u5D84\u5D82\u5D8C\u5DA2\u5D9D\u5D90" +
++        "\u5DAC\u5DAE\u5DB7\u5DB8\u5DBC\u5DB9\u5DC9\u5DD0" +
++        "\u5DD3\u5DD2\u5DDB\u5DEB\u5DF5\u5E0B\u5E1A\u5E19" +
++        "\u5E11\u5E1B\u5E36\u5E44\u5E43\u5E40\u5E47\u5E4E" +
++        "\u5E57\u5E54\u5E62\u5E64\u5E75\u5E76\u5E7A\u5E7F" +
++        "\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\u5EDD\u5EDA" +
++        "\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF0\u5EF1" +
++        "\u5EF3\u5EF4\u5F03\u5F09\u5F0B\u5F11\u5F16\u5F21" +
++        "\u5F29\u5F2D\u5F2F\u5F34\u5F38\u5F41\u5F48\u5F4C" +
++        "\u5F4E\u5F51\u5F56\u5F57\u5F59\u5F5C\u5F5D\u5F61" +
++        "\u5F67\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88" +
++        "\u5F87\u5F91\u5F99\u5F9E\u5F98\u5FA0\u5FA8\u5FAD" +
++        "\u5FB7\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FF0" +
++        "\u5FDD\u5FDE\u5FFF\u6021\u6019\u6010\u6029\u600E" +
++        "\u6031\u601B\u6015\u602B\u6026\u600F\u603A" ,
++        "\uFFFD\u605A\u6041\u6060\u605D\u606A\u6077\u605F" +
++        "\u604A\u6046\u604D\u6063\u6043\u6064\u606C\u606B" +
++        "\u6059\u6085\u6081\u6083\u609A\u6084\u609B\u608A" +
++        "\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60DE" +
++        "\u60E0\u60D3\u60BD\u60C6\u60B5\u60D5\u60D8\u6120" +
++        "\u60F2\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA" +
++        "\u6103\u6121\u60FB\u60F1\u610D\u610E\u6111\u6147" +
++        "\u614D\u6137\u6128\u6127\u613E\u614A\u6130\u613C" +
++        "\u612C\u6134\u6165\u615D\u613D\u6142\u6144\u6173" +
++        "\u6187\u6177\u6158\u6159\u615A\u616B\u6174\u616F" +
++        "\u6171\u615F\u6153\u6175\u6198\u6199\u6196\u61AC" +
++        "\u6194\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9" +
++        "\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6" +
++        "\u61E3\u61F4\u61F7\u61F6\u61FD\u61FA\u61FF\u61FC" +
++        "\u61FE\u6200\u6208\u6209\u620D\u6213\u6214\u621B" +
++        "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241" +
++        "\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282" +
++        "\u6289\u6292\u627E\u6293\u6296\u6283\u6294\u62D7" +
++        "\u62D1\u62BB\u62CF\u62AC\u62C6\u62C8\u62DC\u62D4" +
++        "\u62CA\u62C2\u62A6\u62C7\u629B\u62C9\u630C\u62EE" +
++        "\u62F1\u6327\u6302\u6308\u62EF\u62F5\u62FF\u6350" +
++        "\u634D\u633E\u634F\u6396\u638E\u6380\u63AB\u6376" +
++        "\u63A3\u638F\u6389\u639F\u636B\u6369\u63B5\u63BE" +
++        "\u63E9\u63C0\u63C6\u63F5\u63E3\u63C9\u63D2" ,
++        "\uFFFD\u63F6\u63C4\u6434\u6406\u6413\u6426\u6436" +
++        "\u641C\u6417\u6428\u640F\u6416\u644E\u6467\u646F" +
++        "\u6460\u6476\u64B9\u649D\u64CE\u6495\u64BB\u6493" +
++        "\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7" +
++        "\u64D4\u64D8\u64C2\u64F1\u64E7\u64E0\u64E1\u64E3" +
++        "\u64EF\u64F4\u64F6\u64F2\u64FA\u6500\u64FD\u6518" +
++        "\u651C\u651D\u6505\u6524\u6523\u652B\u652C\u6534" +
++        "\u6535\u6537\u6536\u6538\u754B\u6548\u654E\u6556" +
++        "\u654D\u6558\u6555\u655D\u6572\u6578\u6582\u6583" +
++        "\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1" +
++        "\u65C4\u65CC\u65D2\u65D9\u65E1\u65E0\u65F1\u6600" +
++        "\u6615\u6602\u6772\u6603\u65FB\u6609\u663F\u6635" +
++        "\u662E\u661E\u6634\u661C\u6624\u6644\u6649\u6665" +
++        "\u6657\u665E\u6664\u6659\u6662\u665D\uFA12\u6673" +
++        "\u6670\u6683\u6688\u6684\u6699\u6698\u66A0\u669D" +
++        "\u66B2\u66C4\u66C1\u66BF\u66C9\u66BE\u66BC\u66B8" +
++        "\u66D6\u66DA\u66E6\u66E9\u66F0\u66F5\u66F7\u66FA" +
++        "\u670E\uF929\u6716\u671E\u7E22\u6726\u6727\u9738" +
++        "\u672E\u673F\u6736\u6737\u6738\u6746\u675E\u6759" +
++        "\u6766\u6764\u6789\u6785\u6770\u67A9\u676A\u678B" +
++        "\u6773\u67A6\u67A1\u67BB\u67B7\u67EF\u67B4\u67EC" +
++        "\u67E9\u67B8\u67E7\u67E4\u6852\u67DD\u67E2\u67EE" +
++        "\u67C0\u67CE\u67B9\u6801\u67C6\u681E\u6846\u684D" +
++        "\u6840\u6844\u6832\u684E\u6863\u6859\u688D" ,
++        "\uFFFD\u6877\u687F\u689F\u687E\u688F\u68AD\u6894" +
++        "\u6883\u68BC\u68B9\u6874\u68B5\u68BA\u690F\u6901" +
++        "\u68CA\u6908\u68D8\u6926\u68E1\u690C\u68CD\u68D4" +
++        "\u68E7\u68D5\u6912\u68EF\u6904\u68E3\u68E0\u68CF" +
++        "\u68C6\u6922\u692A\u6921\u6923\u6928\uFA13\u6979" +
++        "\u6977\u6936\u6978\u6954\u696A\u6974\u6968\u693D" +
++        "\u6959\u6930\u695E\u695D\u697E\u6981\u69B2\u69BF" +
++        "\uFA14\u6998\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA" +
++        "\u69B1\u69DD\u69BB\u69C3\u69A0\u699C\u6995\u69DE" +
++        "\u6A2E\u69E8\u6A02\u6A1B\u69FF\u69F9\u69F2\u69E7" +
++        "\u69E2\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A22\u6A12" +
++        "\u6A23\u6A13\u6A30\u6A6B\u6A44\u6A0C\u6AA0\u6A36" +
++        "\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A46\u6A38" +
++        "\u6A72\u6A73\u6A90\u6A8D\u6A84\u6AA2\u6AA3\u6A7E" +
++        "\u6A97\u6AAC\u6AAA\u6ABB\u6AC2\u6AB8\u6AB3\u6AC1" +
++        "\u6ADE\u6AE2\u6AD1\u6ADA\u6AE4\u8616\u8617\u6AEA" +
++        "\u6B05\u6B0A\u6AFA\u6B12\u6B16\u6B1F\u6B38\u6B37" +
++        "\u6B39\u76DC\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59" +
++        "\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80" +
++        "\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA" +
++        "\u6BAB\u6BAF\u6BB1\u6BB2\u6BB3\u6BB7\u6BBC\u6BC6" +
++        "\u6BCB\u6BD3\u6BD6\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF" +
++        "\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C3F\u6C5E" +
++        "\u6C55\u6C5C\u6C62\u6C82\u6C8D\u6C86\u6C6F" ,
++        "\uFFFD\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92" +
++        "\u6C90\u6CC4\u6CF1\u6CBD\u6CC5\u6CAE\u6CDA\u6CDD" +
++        "\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F" +
++        "\u6D04\u6D36\u6D2B\u6D3D\u6D33\u6D12\u6D0C\u6D63" +
++        "\u6D87\u6D93\u6D6F\u6D64\u6D5A\u6D79\u6D59\u6D8E" +
++        "\u6D95\u6D9B\u6D85\u6D96\u6DF9\u6E0A\u6E2E\u6DB5" +
++        "\u6DE6\u6DC7\u6DAC\u6DB8\u6DCF\u6DC6\u6DEC\u6DDE" +
++        "\u6DCC\u6DE8\u6DF8\u6DD2\u6DC5\u6DFA\u6DD9\u6DF2" +
++        "\u6DFC\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E19" +
++        "\u6E72\u6E5F\u6E39\u6E3E\u6E23\u6E6B\u6E5C\u6E2B" +
++        "\u6E76\u6E4D\u6E1F\u6E27\u6E43\u6E3C\u6E3A\u6E4E" +
++        "\u6E24\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EB7\u6EBD" +
++        "\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EBF\u6EC2" +
++        "\u6E9F\u6F41\u6F45\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2" +
++        "\u6F31\u6EEF\u6F32\u6ECC\u6EFF\u6F3E\u6F13\u6EF7" +
++        "\u6F86\u6F7A\u6F78\u6F80\u6F6F\u6F5B\u6F6D\u6F74" +
++        "\u6F82\u6F88\u6F7C\u6F58\u6FC6\u6F8E\u6F91\u6F66" +
++        "\u6FB3\u6FA3\u6FB5\u6FA1\u6FB9\u6FDB\u6FAA\u6FC2" +
++        "\u6FDF\u6FD5\u6FEC\u6FD8\u6FD4\u6FF5\u6FEE\u7005" +
++        "\u7007\u7009\u700B\u6FFA\u7011\u7001\u700F\u701B" +
++        "\u701A\u701F\u6FF3\u7028\u7018\u7030\u703E\u7032" +
++        "\u7051\u7063\u7085\u7099\u70AF\u70AB\u70AC\u70B8" +
++        "\u70AE\u70DF\u70CB\u70D9\u7109\u710F\u7104\u70F1" +
++        "\u70FD\u711C\u7119\u715C\u7146\u7147\u7166" ,
++        "\uFFFD\u7162\u714C\u7156\u716C\u7188\u718F\u7184" +
++        "\u7195\uFA15\u71AC\u71C1\u71B9\u71BE\u71D2\u71E7" +
++        "\u71C9\u71D4\u71D7\u71CE\u71F5\u71E0\u71EC\u71FB" +
++        "\u71FC\u71F9\u71FE\u71FF\u720D\u7210\u7228\u722D" +
++        "\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246" +
++        "\u724B\u7258\u7274\u727E\u7281\u7287\u7282\u7292" +
++        "\u7296\u72A2\u72A7\u72B1\u72B2\u72BE\u72C3\u72C6" +
++        "\u72C4\u72B9\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9" +
++        "\u72F7\u7317\u730A\u731C\u7316\u731D\u7324\u7334" +
++        "\u7329\u732F\uFA16\u7325\u733E\u734F\u734E\u7357" +
++        "\u9ED8\u736A\u7368\u7370\u7377\u7378\u7375\u737B" +
++        "\u73C8\u73BD\u73B3\u73CE\u73BB\u73C0\u73C9\u73D6" +
++        "\u73E5\u73E3\u73D2\u73EE\u73F1\u73DE\u73F8\u7407" +
++        "\u73F5\u7405\u7426\u742A\u7425\u7429\u742E\u7432" +
++        "\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469" +
++        "\u7470\u7463\u746A\u7464\u7462\u7489\u746F\u747E" +
++        "\u749F\u749E\u74A2\u74A7\u74CA\u74CF\u74D4\u74E0" +
++        "\u74E3\u74E7\u74E9\u74EE\u74F0\u74F2\u74F1\u74F7" +
++        "\u74F8\u7501\u7504\u7503\u7505\u750D\u750C\u750E" +
++        "\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A" +
++        "\u7549\u7546\u755B\u755A\u7564\u7567\u756B\u756F" +
++        "\u7574\u756D\u7578\u7576\u7582\u7586\u7587\u758A" +
++        "\u7589\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3" +
++        "\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD" ,
++        "\uFFFD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF" +
++        "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u7609" +
++        "\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630" +
++        "\u763B\u7647\u7648\u7658\u7646\u765C\u7661\u7662" +
++        "\u7668\u7669\u7667\u766A\u766C\u7670\u7672\u7676" +
++        "\u767C\u7682\u7680\u7683\u7688\u768B\u7699\u769A" +
++        "\u769C\u769E\u769B\u76A6\u76B0\u76B4\u76B8\u76B9" +
++        "\u76BA\u76C2\uFA17\u76CD\u76D6\u76D2\u76DE\u76E1" +
++        "\u76E5\u76EA\u862F\u76FB\u7708\u7707\u7704\u7724" +
++        "\u7729\u7725\u7726\u771B\u7737\u7738\u7746\u7747" +
++        "\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779" +
++        "\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9" +
++        "\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77DA\u77DC" +
++        "\u77E3\u77EE\u52AF\u77FC\u780C\u7812\u7821\u783F" +
++        "\u7820\u7845\u784E\u7864\u7874\u788E\u787A\u7886" +
++        "\u789A\u787C\u788C\u78A3\u78B5\u78AA\u78AF\u78D1" +
++        "\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC" +
++        "\u78E7\u78DA\u78FD\u78F4\u7907\u7911\u7919\u792C" +
++        "\u792B\u7930\uFA18\u7940\u7960\uFA19\u795F\u795A" +
++        "\u7955\uFA1A\u797F\u798A\u7994\uFA1B\u799D\u799B" +
++        "\u79AA\u79B3\u79BA\u79C9\u79D5\u79E7\u79EC\u79E3" +
++        "\u7A08\u7A0D\u7A18\u7A19\u7A1F\u7A31\u7A3E\u7A37" +
++        "\u7A3B\u7A43\u7A57\u7A49\u7A62\u7A61\u7A69\u9F9D" +
++        "\u7A70\u7A79\u7A7D\u7A88\u7A95\u7A98\u7A96" ,
++        "\uFFFD\u7A97\u7AA9\u7AB0\u7AB6\u9083\u7AC3\u7ABF" +
++        "\u7AC5\u7AC4\u7AC7\u7ACA\u7ACD\u7ACF\u7AD2\u7AD1" +
++        "\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6" +
++        "\u7AE7\uFA1C\u7AEB\u7AED\u7AF0\u7AF8\u7B02\u7B0F" +
++        "\u7B0B\u7B0A\u7B06\u7B33\u7B36\u7B19\u7B1E\u7B35" +
++        "\u7B28\u7B50\u7B4D\u7B4C\u7B45\u7B5D\u7B75\u7B7A" +
++        "\u7B74\u7B70\u7B71\u7B6E\u7B9D\u7B98\u7B9F\u7B8D" +
++        "\u7B9C\u7B9A\u7B92\u7B8F\u7B99\u7BCF\u7BCB\u7BCC" +
++        "\u7BB4\u7BC6\u7B9E\u7BDD\u7BE9\u7BE6\u7BF7\u7BE5" +
++        "\u7C14\u7C00\u7C13\u7C07\u7BF3\u7C0D\u7BF6\u7C23" +
++        "\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C40\u7C4C" +
++        "\u7C43\u7C56\u7C50\u7C58\u7C5F\u7C65\u7C6C\u7C75" +
++        "\u7C83\u7C90\u7CA4\u7CA2\u7CAB\u7CA1\u7CAD\u7CA8" +
++        "\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\uFA1D\u7CBD\u7CC5" +
++        "\u7CC2\u7CD2\u7CE2\u7CD8\u7CDC\u7CEF\u7CF2\u7CF4" +
++        "\u7CF6\u7D06\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B" +
++        "\u7D2E\u7D32\u7D3F\u7D35\u7D48\u7D46\u7D5C\u7D73" +
++        "\u7D56\u7D4E\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89" +
++        "\u7D5B\u7DAE\u7DA3\u7DB5\u7DB7\u7DC7\u7DBD\u7DAB" +
++        "\u7DA2\u7DAF\u7DA0\u7DB8\u7D9F\u7DB0\u7DD5\u7DD8" +
++        "\u7DDD\u7DD6\u7DE4\u7DDE\u7DFB\u7E0B\u7DF2\u7DE1" +
++        "\u7DDC\u7E05\u7E0A\u7E21\u7E12\u7E1F\u7E09\u7E3A" +
++        "\u7E46\u7E66\u7E31\u7E3D\u7E35\u7E3B\u7E39\u7E43" +
++        "\u7E37\u7E32\u7E5D\u7E56\u7E5E\u7E52\u7E59" ,
++        "\uFFFD\u7E5A\u7E67\u7E79\u7E6A\u7E69\u7E7C\u7E7B" +
++        "\u7E7D\u8FAE\u7E7F\u7E83\u7E89\u7E8E\u7E8C\u7E92" +
++        "\u7E93\u7E94\u7E96\u7E9B\u7F38\u7F3A\u7F45\u7F47" +
++        "\u7F4C\u7F4E\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60" +
++        "\u7F68\u7F67\u7F69\u7F78\u7F82\u7F86\u7F83\u7F87" +
++        "\u7F88\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA1\u7FA3" +
++        "\u7FAF\u7FAE\u7FB2\u7FB9\u7FB6\u7FB8\u8B71\uFA1E" +
++        "\u7FC5\u7FC6\u7FCA\u7FD5\u7FE1\u7FE6\u7FE9\u7FF3" +
++        "\u7FF9\u8004\u800B\u8012\u8019\u801C\u8021\u8028" +
++        "\u803F\u803B\u804A\u8046\u8052\u8058\u805F\u8062" +
++        "\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F" +
++        "\u8084\u8085\u8093\u809A\u80AD\u5190\u80AC\u80DB" +
++        "\u80E5\u80D9\u80DD\u80C4\u80DA\u8109\u80EF\u80F1" +
++        "\u811B\u8123\u812F\u814B\u8146\u813E\u8153\u8151" +
++        "\u80FC\u8171\u816E\u8165\u815F\u8166\u8174\u8183" +
++        "\u8188\u818A\u8180\u8182\u81A0\u8195\u81A3\u8193" +
++        "\u81B5\u81A4\u81A9\u81B8\u81B0\u81C8\u81BE\u81BD" +
++        "\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D8\u81D9" +
++        "\u81DA\u81DF\u81E0\u81FA\u81FB\u81FE\u8201\u8202" +
++        "\u8205\u820D\u8210\u8212\u8216\u8229\u822B\u822E" +
++        "\u8238\u8233\u8240\u8259\u825A\u825D\u825F\u8264" +
++        "\u8262\u8268\u826A\u826B\u8271\u8277\u827E\u828D" +
++        "\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF" +
++        "\u8301\u82D2\u82F4\u82F3\u8303\u82FB\u82F9" ,
++        "\uFFFD\u82DE\u8306\u82DC\u82FA\u8309\u82D9\u8335" +
++        "\u8362\u8334\u8316\u8331\u8340\u8339\u8350\u8345" +
++        "\u832F\u832B\u8318\u839A\u83AA\u839F\u83A2\u8396" +
++        "\u8323\u838E\u8375\u837F\u838A\u837C\u83B5\u8373" +
++        "\u8393\u83A0\u8385\u8389\u83A8\u83F4\u8413\u83C7" +
++        "\u83CE\u83F7\u83FD\u8403\u83D8\u840B\u83C1\u8407" +
++        "\u83E0\u83F2\u840D\u8420\u83F6\u83BD\u83FB\u842A" +
++        "\u8462\u843C\u8484\u8477\u846B\u8479\u8448\u846E" +
++        "\u8482\u8469\u8446\u846F\u8438\u8435\u84CA\u84B9" +
++        "\u84BF\u849F\u84B4\u84CD\u84BB\u84DA\u84D0\u84C1" +
++        "\u84AD\u84C6\u84D6\u84A1\u84D9\u84FF\u84F4\u8517" +
++        "\u8518\u852C\u851F\u8515\u8514\u8506\u8553\u855A" +
++        "\u8540\u8559\u8563\u8558\u8548\u8541\u854A\u854B" +
++        "\u856B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8" +
++        "\u856D\u8594\u859B\u85AE\u8587\u859C\u8577\u857E" +
++        "\u8590\uFA1F\u820A\u85B0\u85C9\u85BA\u85CF\u85B9" +
++        "\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613" +
++        "\u860B\u85FE\u8622\u861A\u8630\u863F\uFA20\u864D" +
++        "\u4E55\u8655\u865F\u8667\u8671\u8693\u86A3\u86A9" +
++        "\u868B\u86AA\u868C\u86B6\u86AF\u86C4\u86C6\u86B0" +
++        "\u86C9\u86CE\uFA21\u86AB\u86D4\u86DE\u86E9\u86EC" +
++        "\u86DF\u86DB\u8712\u8706\u8708\u8700\u8703\u86FB" +
++        "\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u873B" +
++        "\u8725\u8729\u871A\u875F\u8778\u874C\u874E" ,
++        "\uFFFD\u8774\u8757\u8768\u8782\u876A\u8760\u876E" +
++        "\u8759\u8753\u8763\u877F\u87A2\u87C6\u879F\u87AF" +
++        "\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3" +
++        "\u87D2\u87BB\u87EF\u87F2\u87E0\u880E\u8807\u880F" +
++        "\u8816\u880D\u87FE\u87F6\u87F7\u8811\u8815\u8822" +
++        "\u8821\u8827\u8831\u8836\u8839\u883B\u8842\u8844" +
++        "\u884D\u8852\u8859\u885E\u8862\u886B\u8881\u887E" +
++        "\u8875\u887D\u8872\u8882\u889E\u8897\u8892\u88AE" +
++        "\u8899\u88A2\u888D\u88A4\u88BF\u88B5\u88B1\u88C3" +
++        "\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC" +
++        "\u88F5\u88E8\u88F2\u8904\u890C\u892A\u891D\u890A" +
++        "\u8913\u891E\u8925\u892B\u8941\u893B\u8936\u8943" +
++        "\u8938\u894D\u894C\u8960\u895E\u8966\u896A\u8964" +
++        "\u896D\u896F\u8974\u8977\u897E\u8983\u8988\u898A" +
++        "\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2" +
++        "\u89BA\u89BF\u89BD\u89C0\u89DA\u89DD\u89E7\u89F4" +
++        "\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A12\u8A1B\u8A1D" +
++        "\u8A25\u8A36\u8A41\u8A37\u8A5B\u8A52\u8A46\u8A48" +
++        "\u8A7C\u8A6D\u8A6C\u8A62\u8A79\u8A85\u8A82\u8A84" +
++        "\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AA7" +
++        "\u8ACC\u8ABE\u8ACD\u8AC2\u8ADA\u8AF3\u8AE7\u8AE4" +
++        "\u8AF1\u8B14\u8AE0\u8AE2\u8AE1\u8ADF\uFA22\u8AF6" +
++        "\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8B16\u8B10" +
++        "\u8B17\u8B20\u8B33\u8B41\u97AB\u8B26\u8B2B" ,
++        "\uFFFD\u8B3E\u8B4C\u8B4F\u8B4E\u8B53\u8B49\u8B56" +
++        "\u8B5B\u8B5A\u8B74\u8B6B\u8B5F\u8B6C\u8B6F\u8B7D" +
++        "\u8B7F\u8B80\u8B8C\u8B8E\u8B99\u8B92\u8B93\u8B96" +
++        "\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50" +
++        "\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C7C\u8C82\u8C89" +
++        "\u8C85\u8C8A\u8C8D\u8C8E\u8C98\u8C94\u621D\u8CAD" +
++        "\u8CAA\u8CAE\u8CBD\u8CB2\u8CB3\u8CC1\u8CB6\u8CC8" +
++        "\u8CCE\u8CCD\u8CE3\u8CDA\u8CF0\u8CF4\u8CFD\u8CFA" +
++        "\u8CFB\u8D07\u8D0A\u8D0F\u8D0D\u8D12\u8D10\u8D13" +
++        "\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D76\uFA23\u8D81" +
++        "\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB" +
++        "\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8DFF" +
++        "\u8E09\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30" +
++        "\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59" +
++        "\u8E64\u8E60\u8E55\u8E63\u8E76\u8E72\u8E87\u8E7C" +
++        "\u8E81\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94" +
++        "\u8E99\u8EA1\u8EAA\u8EB1\u8EBE\u8EC6\u8EC5\u8EC8" +
++        "\u8ECB\u8ECF\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE" +
++        "\u8F0A\u8F0C\u8F05\u8F15\u8F12\u8F13\u8F1C\u8F19" +
++        "\u8F1F\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E" +
++        "\u8F49\u8F46\u8F4C\u8F4E\u8F57\u8F5C\u8F62\u8F63" +
++        "\u8F64\u8F9C\u8F9F\u8FA3\u8FA8\u8FA7\u8FAD\u8FAF" +
++        "\u8FB7\uFA24\u8FDA\u8FE5\u8FE2\u8FEF\u8FE9\u8FF4" +
++        "\u9005\u8FF9\u8FF8\u9011\u9015\u900E\u9021" ,
++        "\uFFFD\u900D\u901E\u9016\u900B\u9027\u9036\u9039" +
++        "\u904F\uFA25\u9050\u9051\u9052\u9049\u903E\u9056" +
++        "\u9058\u905E\u9068\u9067\u906F\u9076\u96A8\u9072" +
++        "\u9082\u907D\u9089\u9080\u908F\u6248\u90AF\u90B1" +
++        "\u90B5\u90E2\u90E4\u90DB\u90DE\u9102\uFA26\u9115" +
++        "\u9112\u9119\u9132\u9127\u9130\u914A\u9156\u9158" +
++        "\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182" +
++        "\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0" +
++        "\u91C1\u91CB\u91D0\u91DA\u91DB\u91D7\u91DE\u91D6" +
++        "\u91DF\u91E1\u91ED\u91F5\u91EE\u91E4\u91F6\u91E5" +
++        "\u9206\u921E\u91FF\u9210\u9214\u920A\u922C\u9215" +
++        "\u9229\u9257\u9245\u923A\u9249\u9264\u9240\u923C" +
++        "\u9248\u924E\u9250\u9259\u923F\u9251\u9239\u924B" +
++        "\u9267\u925A\u929C\u92A7\u9277\u9278\u9296\u9293" +
++        "\u929B\u9295\u92E9\u92CF\u92E7\u92D7\u92D9\u92D0" +
++        "\uFA27\u92D5\u92B9\u92B7\u92E0\u92D3\u933A\u9335" +
++        "\u930F\u9325\u92FA\u9321\u9344\u92FB\uFA28\u9319" +
++        "\u931E\u92FF\u9322\u931A\u931D\u9323\u9302\u933B" +
++        "\u9370\u9360\u937C\u936E\u9356\u9357\u93B9\u93B0" +
++        "\u93A4\u93AD\u9394\u93C8\u93D6\u93C6\u93D7\u93E8" +
++        "\u93E5\u93D8\u93C3\u93DD\u93DE\u93D0\u93E4\u941A" +
++        "\u93F8\u9414\u9413\u9421\u9403\u9407\u9436\u942B" +
++        "\u9431\u943A\u9441\u9452\u9445\u9444\u9448\u945B" +
++        "\u945A\u9460\u9462\u945E\u946A\u9475\u9470" ,
++        "\uFFFD\u9477\u947F\u947D\u947C\u947E\u9481\u9582" +
++        "\u9587\u958A\u9592\u9594\u9596\u9598\u9599\u95A0" +
++        "\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA" +
++        "\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC" +
++        "\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642" +
++        "\u964F\u964C\u964B\u965C\u965D\u965F\u9666\u9677" +
++        "\u9672\u966C\u968D\u968B\uF9DC\u9698\u9695\u9697" +
++        "\uFA29\u969D\u96A7\u96AA\u96B1\u96B2\u96B0\u96AF" +
++        "\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96D5\u96DC" +
++        "\u96D9\u96F9\u9704\u9706\u9708\u9719\u970D\u9713" +
++        "\u970E\u9711\u970F\u9716\u9724\u972A\u9730\u9733" +
++        "\u9739\u973B\u973D\u973E\u9746\u9744\u9743\u9748" +
++        "\u9742\u9749\u974D\u974F\u9751\u9755\u975C\u9760" +
++        "\u9764\u9766\u9768\u976D\u9779\u9785\u977C\u9781" +
++        "\u977A\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3" +
++        "\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED" +
++        "\u97F2\u7ADF\u97F5\u980F\u981A\u9824\u9821\u9837" +
++        "\u983D\u984F\u984B\u9857\u9865\u986B\u986F\u9870" +
++        "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4" +
++        "\u98C3\u98C6\u98DC\u98ED\u98E9\uFA2A\u98EB\uFA2B" +
++        "\u9903\u991D\u9912\u9914\u9918\u9927\uFA2C\u9921" +
++        "\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942" +
++        "\u9949\u9945\u9950\u994B\u9951\u994C\u9955\u9997" +
++        "\u9998\u999E\u99A5\u99AD\u99AE\u99BC\u99DF" ,
++        "\uFFFD\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99E2" +
++        "\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u9A19" +
++        "\u9A2B\u9A37\u9A40\u9A45\u9A42\u9A43\u9A3E\u9A55" +
++        "\u9A4D\u9A4E\u9A5B\u9A57\u9A5F\u9A62\u9A69\u9A65" +
++        "\u9A64\u9A6A\u9A6B\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF" +
++        "\u9AD3\u9AD4\u9AD1\u9AD9\u9ADC\u9ADE\u9ADF\u9AE2" +
++        "\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7" +
++        "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25" +
++        "\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B31\u9B32" +
++        "\u9B3B\u9B44\u9B43\u9B4D\u9B4E\u9B51\u9B58\u9B75" +
++        "\u9B74\u9B72\u9B93\u9B8F\u9B83\u9B91\u9B96\u9B97" +
++        "\u9B9F\u9BA0\u9BA8\u9BB1\u9BB4\u9BC0\u9BCA\u9BBB" +
++        "\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4" +
++        "\u9BD4\u9BE1\u9BF5\u9BF1\u9BF2\u9C04\u9C1B\u9C15" +
++        "\u9C14\u9C00\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12" +
++        "\u9C0A\u9C2E\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32" +
++        "\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CEB" +
++        "\u9CE7\u9CEC\u9CF0\u9D09\u9D03\u9D06\u9D2A\u9D26" +
++        "\u9D2C\u9D23\u9D1F\u9D15\u9D12\u9D41\u9D3F\u9D44" +
++        "\u9D3E\u9D46\u9D48\u9D5D\u9D5E\u9D59\u9D51\u9D50" +
++        "\u9D64\u9D72\u9D70\u9D87\u9D6B\u9D6F\u9D7A\u9D9A" +
++        "\u9DA4\u9DA9\u9DAB\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8" +
++        "\u9DBA\u9DC6\u9DCF\u9DC2\uFA2D\u9DD9\u9DD3\u9DF8" +
++        "\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E19" ,
++        "\uFFFD\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B" +
++        "\u9E8C\u9E95\u9E91\u9E9D\u9EA5\u9EB8\u9EAA\u9EAD" +
++        "\u9EBC\u9EBE\u9761\u9ECC\u9ECF\u9ED0\u9ED1\u9ED4" +
++        "\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4" +
++        "\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08" +
++        "\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F4E\u9F4F" +
++        "\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67" +
++        "\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0" +
++        "\u5C2D\u69D9\u9065\u7476\u51DC\u7155\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
++        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" ,
++        "\uFFFD\uE000\uE001\uE002\uE003\uE004\uE005\uE006" +
++        "\uE007\uE008\uE009\uE00A\uE00B\uE00C\uE00D\uE00E" +
++        "\uE00F\uE010\uE011\uE012\uE013\uE014\uE015\uE016" +
++        "\uE017\uE018\uE019\uE01A\uE01B\uE01C\uE01D\uE01E" +
++        "\uE01F\uE020\uE021\uE022\uE023\uE024\uE025\uE026" +
++        "\uE027\uE028\uE029\uE02A\uE02B\uE02C\uE02D\uE02E" +
++        "\uE02F\uE030\uE031\uE032\uE033\uE034\uE035\uE036" +
++        "\uE037\uE038\uE039\uE03A\uE03B\uE03C\uE03D\uE03E" +
++        "\uE03F\uE040\uE041\uE042\uE043\uE044\uE045\uE046" +
++        "\uE047\uE048\uE049\uE04A\uE04B\uE04C\uE04D\uE04E" +
++        "\uE04F\uE050\uE051\uE052\uE053\uE054\uE055\uE056" +
++        "\uE057\uE058\uE059\uE05A\uE05B\uE05C\uE05D\uE05E" +
++        "\uE05F\uE060\uE061\uE062\uE063\uE064\uE065\uE066" +
++        "\uE067\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E" +
++        "\uE06F\uE070\uE071\uE072\uE073\uE074\uE075\uE076" +
++        "\uE077\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E" +
++        "\uE07F\uE080\uE081\uE082\uE083\uE084\uE085\uE086" +
++        "\uE087\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E" +
++        "\uE08F\uE090\uE091\uE092\uE093\uE094\uE095\uE096" +
++        "\uE097\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E" +
++        "\uE09F\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6" +
++        "\uE0A7\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE" +
++        "\uE0AF\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6" +
++        "\uE0B7\uE0B8\uE0B9\uE0BA\uE0BB\uE0BC\uE0BD" ,
++        "\uFFFD\uE0BE\uE0BF\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4" +
++        "\uE0C5\uE0C6\uE0C7\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC" +
++        "\uE0CD\uE0CE\uE0CF\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4" +
++        "\uE0D5\uE0D6\uE0D7\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC" +
++        "\uE0DD\uE0DE\uE0DF\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4" +
++        "\uE0E5\uE0E6\uE0E7\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC" +
++        "\uE0ED\uE0EE\uE0EF\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4" +
++        "\uE0F5\uE0F6\uE0F7\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC" +
++        "\uE0FD\uE0FE\uE0FF\uE100\uE101\uE102\uE103\uE104" +
++        "\uE105\uE106\uE107\uE108\uE109\uE10A\uE10B\uE10C" +
++        "\uE10D\uE10E\uE10F\uE110\uE111\uE112\uE113\uE114" +
++        "\uE115\uE116\uE117\uE118\uE119\uE11A\uE11B\uE11C" +
++        "\uE11D\uE11E\uE11F\uE120\uE121\uE122\uE123\uE124" +
++        "\uE125\uE126\uE127\uE128\uE129\uE12A\uE12B\uE12C" +
++        "\uE12D\uE12E\uE12F\uE130\uE131\uE132\uE133\uE134" +
++        "\uE135\uE136\uE137\uE138\uE139\uE13A\uE13B\uE13C" +
++        "\uE13D\uE13E\uE13F\uE140\uE141\uE142\uE143\uE144" +
++        "\uE145\uE146\uE147\uE148\uE149\uE14A\uE14B\uE14C" +
++        "\uE14D\uE14E\uE14F\uE150\uE151\uE152\uE153\uE154" +
++        "\uE155\uE156\uE157\uE158\uE159\uE15A\uE15B\uE15C" +
++        "\uE15D\uE15E\uE15F\uE160\uE161\uE162\uE163\uE164" +
++        "\uE165\uE166\uE167\uE168\uE169\uE16A\uE16B\uE16C" +
++        "\uE16D\uE16E\uE16F\uE170\uE171\uE172\uE173\uE174" +
++        "\uE175\uE176\uE177\uE178\uE179\uE17A\uE17B" ,
++        "\uFFFD\uE17C\uE17D\uE17E\uE17F\uE180\uE181\uE182" +
++        "\uE183\uE184\uE185\uE186\uE187\uE188\uE189\uE18A" +
++        "\uE18B\uE18C\uE18D\uE18E\uE18F\uE190\uE191\uE192" +
++        "\uE193\uE194\uE195\uE196\uE197\uE198\uE199\uE19A" +
++        "\uE19B\uE19C\uE19D\uE19E\uE19F\uE1A0\uE1A1\uE1A2" +
++        "\uE1A3\uE1A4\uE1A5\uE1A6\uE1A7\uE1A8\uE1A9\uE1AA" +
++        "\uE1AB\uE1AC\uE1AD\uE1AE\uE1AF\uE1B0\uE1B1\uE1B2" +
++        "\uE1B3\uE1B4\uE1B5\uE1B6\uE1B7\uE1B8\uE1B9\uE1BA" +
++        "\uE1BB\uE1BC\uE1BD\uE1BE\uE1BF\uE1C0\uE1C1\uE1C2" +
++        "\uE1C3\uE1C4\uE1C5\uE1C6\uE1C7\uE1C8\uE1C9\uE1CA" +
++        "\uE1CB\uE1CC\uE1CD\uE1CE\uE1CF\uE1D0\uE1D1\uE1D2" +
++        "\uE1D3\uE1D4\uE1D5\uE1D6\uE1D7\uE1D8\uE1D9\uE1DA" +
++        "\uE1DB\uE1DC\uE1DD\uE1DE\uE1DF\uE1E0\uE1E1\uE1E2" +
++        "\uE1E3\uE1E4\uE1E5\uE1E6\uE1E7\uE1E8\uE1E9\uE1EA" +
++        "\uE1EB\uE1EC\uE1ED\uE1EE\uE1EF\uE1F0\uE1F1\uE1F2" +
++        "\uE1F3\uE1F4\uE1F5\uE1F6\uE1F7\uE1F8\uE1F9\uE1FA" +
++        "\uE1FB\uE1FC\uE1FD\uE1FE\uE1FF\uE200\uE201\uE202" +
++        "\uE203\uE204\uE205\uE206\uE207\uE208\uE209\uE20A" +
++        "\uE20B\uE20C\uE20D\uE20E\uE20F\uE210\uE211\uE212" +
++        "\uE213\uE214\uE215\uE216\uE217\uE218\uE219\uE21A" +
++        "\uE21B\uE21C\uE21D\uE21E\uE21F\uE220\uE221\uE222" +
++        "\uE223\uE224\uE225\uE226\uE227\uE228\uE229\uE22A" +
++        "\uE22B\uE22C\uE22D\uE22E\uE22F\uE230\uE231\uE232" +
++        "\uE233\uE234\uE235\uE236\uE237\uE238\uE239" ,
++        "\uFFFD\uE23A\uE23B\uE23C\uE23D\uE23E\uE23F\uE240" +
++        "\uE241\uE242\uE243\uE244\uE245\uE246\uE247\uE248" +
++        "\uE249\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F\uE250" +
++        "\uE251\uE252\uE253\uE254\uE255\uE256\uE257\uE258" +
++        "\uE259\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F\uE260" +
++        "\uE261\uE262\uE263\uE264\uE265\uE266\uE267\uE268" +
++        "\uE269\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F\uE270" +
++        "\uE271\uE272\uE273\uE274\uE275\uE276\uE277\uE278" +
++        "\uE279\uE27A\uE27B\uE27C\uE27D\uE27E\uE27F\uE280" +
++        "\uE281\uE282\uE283\uE284\uE285\uE286\uE287\uE288" +
++        "\uE289\uE28A\uE28B\uE28C\uE28D\uE28E\uE28F\uE290" +
++        "\uE291\uE292\uE293\uE294\uE295\uE296\uE297\uE298" +
++        "\uE299\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F\uE2A0" +
++        "\uE2A1\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7\uE2A8" +
++        "\uE2A9\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF\uE2B0" +
++        "\uE2B1\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7\uE2B8" +
++        "\uE2B9\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF\uE2C0" +
++        "\uE2C1\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7\uE2C8" +
++        "\uE2C9\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF\uE2D0" +
++        "\uE2D1\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7\uE2D8" +
++        "\uE2D9\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF\uE2E0" +
++        "\uE2E1\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7\uE2E8" +
++        "\uE2E9\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF\uE2F0" +
++        "\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7" ,
++        "\uFFFD\uE2F8\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE" +
++        "\uE2FF\uE300\uE301\uE302\uE303\uE304\uE305\uE306" +
++        "\uE307\uE308\uE309\uE30A\uE30B\uE30C\uE30D\uE30E" +
++        "\uE30F\uE310\uE311\uE312\uE313\uE314\uE315\uE316" +
++        "\uE317\uE318\uE319\uE31A\uE31B\uE31C\uE31D\uE31E" +
++        "\uE31F\uE320\uE321\uE322\uE323\uE324\uE325\uE326" +
++        "\uE327\uE328\uE329\uE32A\uE32B\uE32C\uE32D\uE32E" +
++        "\uE32F\uE330\uE331\uE332\uE333\uE334\uE335\uE336" +
++        "\uE337\uE338\uE339\uE33A\uE33B\uE33C\uE33D\uE33E" +
++        "\uE33F\uE340\uE341\uE342\uE343\uE344\uE345\uE346" +
++        "\uE347\uE348\uE349\uE34A\uE34B\uE34C\uE34D\uE34E" +
++        "\uE34F\uE350\uE351\uE352\uE353\uE354\uE355\uE356" +
++        "\uE357\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E" +
++        "\uE35F\uE360\uE361\uE362\uE363\uE364\uE365\uE366" +
++        "\uE367\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E" +
++        "\uE36F\uE370\uE371\uE372\uE373\uE374\uE375\uE376" +
++        "\uE377\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E" +
++        "\uE37F\uE380\uE381\uE382\uE383\uE384\uE385\uE386" +
++        "\uE387\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E" +
++        "\uE38F\uE390\uE391\uE392\uE393\uE394\uE395\uE396" +
++        "\uE397\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E" +
++        "\uE39F\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6" +
++        "\uE3A7\uE3A8\uE3A9\uE3AA\uE3AB\uE3AC\uE3AD\uE3AE" +
++        "\uE3AF\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5" ,
++        "\uFFFD\uE3B6\uE3B7\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC" +
++        "\uE3BD\uE3BE\uE3BF\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4" +
++        "\uE3C5\uE3C6\uE3C7\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC" +
++        "\uE3CD\uE3CE\uE3CF\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4" +
++        "\uE3D5\uE3D6\uE3D7\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC" +
++        "\uE3DD\uE3DE\uE3DF\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4" +
++        "\uE3E5\uE3E6\uE3E7\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC" +
++        "\uE3ED\uE3EE\uE3EF\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4" +
++        "\uE3F5\uE3F6\uE3F7\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC" +
++        "\uE3FD\uE3FE\uE3FF\uE400\uE401\uE402\uE403\uE404" +
++        "\uE405\uE406\uE407\uE408\uE409\uE40A\uE40B\uE40C" +
++        "\uE40D\uE40E\uE40F\uE410\uE411\uE412\uE413\uE414" +
++        "\uE415\uE416\uE417\uE418\uE419\uE41A\uE41B\uE41C" +
++        "\uE41D\uE41E\uE41F\uE420\uE421\uE422\uE423\uE424" +
++        "\uE425\uE426\uE427\uE428\uE429\uE42A\uE42B\uE42C" +
++        "\uE42D\uE42E\uE42F\uE430\uE431\uE432\uE433\uE434" +
++        "\uE435\uE436\uE437\uE438\uE439\uE43A\uE43B\uE43C" +
++        "\uE43D\uE43E\uE43F\uE440\uE441\uE442\uE443\uE444" +
++        "\uE445\uE446\uE447\uE448\uE449\uE44A\uE44B\uE44C" +
++        "\uE44D\uE44E\uE44F\uE450\uE451\uE452\uE453\uE454" +
++        "\uE455\uE456\uE457\uE458\uE459\uE45A\uE45B\uE45C" +
++        "\uE45D\uE45E\uE45F\uE460\uE461\uE462\uE463\uE464" +
++        "\uE465\uE466\uE467\uE468\uE469\uE46A\uE46B\uE46C" +
++        "\uE46D\uE46E\uE46F\uE470\uE471\uE472\uE473" ,
++        "\uFFFD\uE474\uE475\uE476\uE477\uE478\uE479\uE47A" +
++        "\uE47B\uE47C\uE47D\uE47E\uE47F\uE480\uE481\uE482" +
++        "\uE483\uE484\uE485\uE486\uE487\uE488\uE489\uE48A" +
++        "\uE48B\uE48C\uE48D\uE48E\uE48F\uE490\uE491\uE492" +
++        "\uE493\uE494\uE495\uE496\uE497\uE498\uE499\uE49A" +
++        "\uE49B\uE49C\uE49D\uE49E\uE49F\uE4A0\uE4A1\uE4A2" +
++        "\uE4A3\uE4A4\uE4A5\uE4A6\uE4A7\uE4A8\uE4A9\uE4AA" +
++        "\uE4AB\uE4AC\uE4AD\uE4AE\uE4AF\uE4B0\uE4B1\uE4B2" +
++        "\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7\uE4B8\uE4B9\uE4BA" +
++        "\uE4BB\uE4BC\uE4BD\uE4BE\uE4BF\uE4C0\uE4C1\uE4C2" +
++        "\uE4C3\uE4C4\uE4C5\uE4C6\uE4C7\uE4C8\uE4C9\uE4CA" +
++        "\uE4CB\uE4CC\uE4CD\uE4CE\uE4CF\uE4D0\uE4D1\uE4D2" +
++        "\uE4D3\uE4D4\uE4D5\uE4D6\uE4D7\uE4D8\uE4D9\uE4DA" +
++        "\uE4DB\uE4DC\uE4DD\uE4DE\uE4DF\uE4E0\uE4E1\uE4E2" +
++        "\uE4E3\uE4E4\uE4E5\uE4E6\uE4E7\uE4E8\uE4E9\uE4EA" +
++        "\uE4EB\uE4EC\uE4ED\uE4EE\uE4EF\uE4F0\uE4F1\uE4F2" +
++        "\uE4F3\uE4F4\uE4F5\uE4F6\uE4F7\uE4F8\uE4F9\uE4FA" +
++        "\uE4FB\uE4FC\uE4FD\uE4FE\uE4FF\uE500\uE501\uE502" +
++        "\uE503\uE504\uE505\uE506\uE507\uE508\uE509\uE50A" +
++        "\uE50B\uE50C\uE50D\uE50E\uE50F\uE510\uE511\uE512" +
++        "\uE513\uE514\uE515\uE516\uE517\uE518\uE519\uE51A" +
++        "\uE51B\uE51C\uE51D\uE51E\uE51F\uE520\uE521\uE522" +
++        "\uE523\uE524\uE525\uE526\uE527\uE528\uE529\uE52A" +
++        "\uE52B\uE52C\uE52D\uE52E\uE52F\uE530\uE531" ,
++        "\uFFFD\uE532\uE533\uE534\uE535\uE536\uE537\uE538" +
++        "\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F\uE540" +
++        "\uE541\uE542\uE543\uE544\uE545\uE546\uE547\uE548" +
++        "\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F\uE550" +
++        "\uE551\uE552\uE553\uE554\uE555\uE556\uE557\uE558" +
++        "\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F\uE560" +
++        "\uE561\uE562\uE563\uE564\uE565\uE566\uE567\uE568" +
++        "\uE569\uE56A\uE56B\uE56C\uE56D\uE56E\uE56F\uE570" +
++        "\uE571\uE572\uE573\uE574\uE575\uE576\uE577\uE578" +
++        "\uE579\uE57A\uE57B\uE57C\uE57D\uE57E\uE57F\uE580" +
++        "\uE581\uE582\uE583\uE584\uE585\uE586\uE587\uE588" +
++        "\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F\uE590" +
++        "\uE591\uE592\uE593\uE594\uE595\uE596\uE597\uE598" +
++        "\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F\uE5A0" +
++        "\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7\uE5A8" +
++        "\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF\uE5B0" +
++        "\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7\uE5B8" +
++        "\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF\uE5C0" +
++        "\uE5C1\uE5C2\uE5C3\uE5C4\uE5C5\uE5C6\uE5C7\uE5C8" +
++        "\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF\uE5D0" +
++        "\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7\uE5D8" +
++        "\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF\uE5E0" +
++        "\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uE5E6\uE5E7\uE5E8" +
++        "\uE5E9\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF" ,
++        "\uFFFD\uE5F0\uE5F1\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6" +
++        "\uE5F7\uE5F8\uE5F9\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE" +
++        "\uE5FF\uE600\uE601\uE602\uE603\uE604\uE605\uE606" +
++        "\uE607\uE608\uE609\uE60A\uE60B\uE60C\uE60D\uE60E" +
++        "\uE60F\uE610\uE611\uE612\uE613\uE614\uE615\uE616" +
++        "\uE617\uE618\uE619\uE61A\uE61B\uE61C\uE61D\uE61E" +
++        "\uE61F\uE620\uE621\uE622\uE623\uE624\uE625\uE626" +
++        "\uE627\uE628\uE629\uE62A\uE62B\uE62C\uE62D\uE62E" +
++        "\uE62F\uE630\uE631\uE632\uE633\uE634\uE635\uE636" +
++        "\uE637\uE638\uE639\uE63A\uE63B\uE63C\uE63D\uE63E" +
++        "\uE63F\uE640\uE641\uE642\uE643\uE644\uE645\uE646" +
++        "\uE647\uE648\uE649\uE64A\uE64B\uE64C\uE64D\uE64E" +
++        "\uE64F\uE650\uE651\uE652\uE653\uE654\uE655\uE656" +
++        "\uE657\uE658\uE659\uE65A\uE65B\uE65C\uE65D\uE65E" +
++        "\uE65F\uE660\uE661\uE662\uE663\uE664\uE665\uE666" +
++        "\uE667\uE668\uE669\uE66A\uE66B\uE66C\uE66D\uE66E" +
++        "\uE66F\uE670\uE671\uE672\uE673\uE674\uE675\uE676" +
++        "\uE677\uE678\uE679\uE67A\uE67B\uE67C\uE67D\uE67E" +
++        "\uE67F\uE680\uE681\uE682\uE683\uE684\uE685\uE686" +
++        "\uE687\uE688\uE689\uE68A\uE68B\uE68C\uE68D\uE68E" +
++        "\uE68F\uE690\uE691\uE692\uE693\uE694\uE695\uE696" +
++        "\uE697\uE698\uE699\uE69A\uE69B\uE69C\uE69D\uE69E" +
++        "\uE69F\uE6A0\uE6A1\uE6A2\uE6A3\uE6A4\uE6A5\uE6A6" +
++        "\uE6A7\uE6A8\uE6A9\uE6AA\uE6AB\uE6AC\uE6AD" ,
++        "\uFFFD\uE6AE\uE6AF\uE6B0\uE6B1\uE6B2\uE6B3\uE6B4" +
++        "\uE6B5\uE6B6\uE6B7\uE6B8\uE6B9\uE6BA\uE6BB\uE6BC" +
++        "\uE6BD\uE6BE\uE6BF\uE6C0\uE6C1\uE6C2\uE6C3\uE6C4" +
++        "\uE6C5\uE6C6\uE6C7\uE6C8\uE6C9\uE6CA\uE6CB\uE6CC" +
++        "\uE6CD\uE6CE\uE6CF\uE6D0\uE6D1\uE6D2\uE6D3\uE6D4" +
++        "\uE6D5\uE6D6\uE6D7\uE6D8\uE6D9\uE6DA\uE6DB\uE6DC" +
++        "\uE6DD\uE6DE\uE6DF\uE6E0\uE6E1\uE6E2\uE6E3\uE6E4" +
++        "\uE6E5\uE6E6\uE6E7\uE6E8\uE6E9\uE6EA\uE6EB\uE6EC" +
++        "\uE6ED\uE6EE\uE6EF\uE6F0\uE6F1\uE6F2\uE6F3\uE6F4" +
++        "\uE6F5\uE6F6\uE6F7\uE6F8\uE6F9\uE6FA\uE6FB\uE6FC" +
++        "\uE6FD\uE6FE\uE6FF\uE700\uE701\uE702\uE703\uE704" +
++        "\uE705\uE706\uE707\uE708\uE709\uE70A\uE70B\uE70C" +
++        "\uE70D\uE70E\uE70F\uE710\uE711\uE712\uE713\uE714" +
++        "\uE715\uE716\uE717\uE718\uE719\uE71A\uE71B\uE71C" +
++        "\uE71D\uE71E\uE71F\uE720\uE721\uE722\uE723\uE724" +
++        "\uE725\uE726\uE727\uE728\uE729\uE72A\uE72B\uE72C" +
++        "\uE72D\uE72E\uE72F\uE730\uE731\uE732\uE733\uE734" +
++        "\uE735\uE736\uE737\uE738\uE739\uE73A\uE73B\uE73C" +
++        "\uE73D\uE73E\uE73F\uE740\uE741\uE742\uE743\uE744" +
++        "\uE745\uE746\uE747\uE748\uE749\uE74A\uE74B\uE74C" +
++        "\uE74D\uE74E\uE74F\uE750\uE751\uE752\uE753\uE754" +
++        "\uE755\uE756\uE757\uE758\uE759\uE75A\uE75B\uE75C" +
++        "\uE75D\uE75E\uE75F\uE760\uE761\uE762\uE763\uE764" +
++        "\uE765\uE766\uE767\uE768\uE769\uE76A\uE76B" ,
++        "\uFFFD\uE76C\uE76D\uE76E\uE76F\uE770\uE771\uE772" +
++        "\uE773\uE774\uE775\uE776\uE777\uE778\uE779\uE77A" +
++        "\uE77B\uE77C\uE77D\uE77E\uE77F\uE780\uE781\uE782" +
++        "\uE783\uE784\uE785\uE786\uE787\uE788\uE789\uE78A" +
++        "\uE78B\uE78C\uE78D\uE78E\uE78F\uE790\uE791\uE792" +
++        "\uE793\uE794\uE795\uE796\uE797\uE798\uE799\uE79A" +
++        "\uE79B\uE79C\uE79D\uE79E\uE79F\uE7A0\uE7A1\uE7A2" +
++        "\uE7A3\uE7A4\uE7A5\uE7A6\uE7A7\uE7A8\uE7A9\uE7AA" +
++        "\uE7AB\uE7AC\uE7AD\uE7AE\uE7AF\uE7B0\uE7B1\uE7B2" +
++        "\uE7B3\uE7B4\uE7B5\uE7B6\uE7B7\uE7B8\uE7B9\uE7BA" +
++        "\uE7BB\uE7BC\uE7BD\uE7BE\uE7BF\uE7C0\uE7C1\uE7C2" +
++        "\uE7C3\uE7C4\uE7C5\uE7C6\uE7C7\uE7C8\uE7C9\uE7CA" +
++        "\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF\uE7D0\uE7D1\uE7D2" +
++        "\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7\uE7D8\uE7D9\uE7DA" +
++        "\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF\uE7E0\uE7E1\uE7E2" +
++        "\uE7E3\uE7E4\uE7E5\uE7E6\uE7E7\uE7E8\uE7E9\uE7EA" +
++        "\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF\uE7F0\uE7F1\uE7F2" +
++        "\uE7F3\uE7F4\uE7F5\uE7F6\uE7F7\uE7F8\uE7F9\uE7FA" +
++        "\uE7FB\uE7FC\uE7FD\uE7FE\uE7FF\uE800\uE801\uE802" +
++        "\uE803\uE804\uE805\uE806\uE807\uE808\uE809\uE80A" +
++        "\uE80B\uE80C\uE80D\uE80E\uE80F\uE810\uE811\uE812" +
++        "\uE813\uE814\uE815\uE816\uE817\uE818\uE819\uE81A" +
++        "\uE81B\uE81C\uE81D\uE81E\uE81F\uE820\uE821\uE822" +
++        "\uE823\uE824\uE825\uE826\uE827\uE828\uE829" ,
++        "\uFFFD\uE82A\uE82B\uE82C\uE82D\uE82E\uE82F\uE830" +
++        "\uE831\uE832\uE833\uE834\uE835\uE836\uE837\uE838" +
++        "\uE839\uE83A\uE83B\uE83C\uE83D\uE83E\uE83F\uE840" +
++        "\uE841\uE842\uE843\uE844\uE845\uE846\uE847\uE848" +
++        "\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uE84F\uE850" +
++        "\uE851\uE852\uE853\uE854\uE855\uE856\uE857\uE858" +
++        "\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F\uE860" +
++        "\uE861\uE862\uE863\uE864\uE865\uE866\uE867\uE868" +
++        "\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F\uE870" +
++        "\uE871\uE872\uE873\uE874\uE875\uE876\uE877\uE878" +
++        "\uE879\uE87A\uE87B\uE87C\uE87D\uE87E\uE87F\uE880" +
++        "\uE881\uE882\uE883\uE884\uE885\uE886\uE887\uE888" +
++        "\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F\uE890" +
++        "\uE891\uE892\uE893\uE894\uE895\uE896\uE897\uE898" +
++        "\uE899\uE89A\uE89B\uE89C\uE89D\uE89E\uE89F\uE8A0" +
++        "\uE8A1\uE8A2\uE8A3\uE8A4\uE8A5\uE8A6\uE8A7\uE8A8" +
++        "\uE8A9\uE8AA\uE8AB\uE8AC\uE8AD\uE8AE\uE8AF\uE8B0" +
++        "\uE8B1\uE8B2\uE8B3\uE8B4\uE8B5\uE8B6\uE8B7\uE8B8" +
++        "\uE8B9\uE8BA\uE8BB\uE8BC\uE8BD\uE8BE\uE8BF\uE8C0" +
++        "\uE8C1\uE8C2\uE8C3\uE8C4\uE8C5\uE8C6\uE8C7\uE8C8" +
++        "\uE8C9\uE8CA\uE8CB\uE8CC\uE8CD\uE8CE\uE8CF\uE8D0" +
++        "\uE8D1\uE8D2\uE8D3\uE8D4\uE8D5\uE8D6\uE8D7\uE8D8" +
++        "\uE8D9\uE8DA\uE8DB\uE8DC\uE8DD\uE8DE\uE8DF\uE8E0" +
++        "\uE8E1\uE8E2\uE8E3\uE8E4\uE8E5\uE8E6\uE8E7" ,
++        "\uFFFD\uE8E8\uE8E9\uE8EA\uE8EB\uE8EC\uE8ED\uE8EE" +
++        "\uE8EF\uE8F0\uE8F1\uE8F2\uE8F3\uE8F4\uE8F5\uE8F6" +
++        "\uE8F7\uE8F8\uE8F9\uE8FA\uE8FB\uE8FC\uE8FD\uE8FE" +
++        "\uE8FF\uE900\uE901\uE902\uE903\uE904\uE905\uE906" +
++        "\uE907\uE908\uE909\uE90A\uE90B\uE90C\uE90D\uE90E" +
++        "\uE90F\uE910\uE911\uE912\uE913\uE914\uE915\uE916" +
++        "\uE917\uE918\uE919\uE91A\uE91B\uE91C\uE91D\uE91E" +
++        "\uE91F\uE920\uE921\uE922\uE923\uE924\uE925\uE926" +
++        "\uE927\uE928\uE929\uE92A\uE92B\uE92C\uE92D\uE92E" +
++        "\uE92F\uE930\uE931\uE932\uE933\uE934\uE935\uE936" +
++        "\uE937\uE938\uE939\uE93A\uE93B\uE93C\uE93D\uE93E" +
++        "\uE93F\uE940\uE941\uE942\uE943\uE944\uE945\uE946" +
++        "\uE947\uE948\uE949\uE94A\uE94B\uE94C\uE94D\uE94E" +
++        "\uE94F\uE950\uE951\uE952\uE953\uE954\uE955\uE956" +
++        "\uE957\uE958\uE959\uE95A\uE95B\uE95C\uE95D\uE95E" +
++        "\uE95F\uE960\uE961\uE962\uE963\uE964\uE965\uE966" +
++        "\uE967\uE968\uE969\uE96A\uE96B\uE96C\uE96D\uE96E" +
++        "\uE96F\uE970\uE971\uE972\uE973\uE974\uE975\uE976" +
++        "\uE977\uE978\uE979\uE97A\uE97B\uE97C\uE97D\uE97E" +
++        "\uE97F\uE980\uE981\uE982\uE983\uE984\uE985\uE986" +
++        "\uE987\uE988\uE989\uE98A\uE98B\uE98C\uE98D\uE98E" +
++        "\uE98F\uE990\uE991\uE992\uE993\uE994\uE995\uE996" +
++        "\uE997\uE998\uE999\uE99A\uE99B\uE99C\uE99D\uE99E" +
++        "\uE99F\uE9A0\uE9A1\uE9A2\uE9A3\uE9A4\uE9A5" ,
++        "\uFFFD\uE9A6\uE9A7\uE9A8\uE9A9\uE9AA\uE9AB\uE9AC" +
++        "\uE9AD\uE9AE\uE9AF\uE9B0\uE9B1\uE9B2\uE9B3\uE9B4" +
++        "\uE9B5\uE9B6\uE9B7\uE9B8\uE9B9\uE9BA\uE9BB\uE9BC" +
++        "\uE9BD\uE9BE\uE9BF\uE9C0\uE9C1\uE9C2\uE9C3\uE9C4" +
++        "\uE9C5\uE9C6\uE9C7\uE9C8\uE9C9\uE9CA\uE9CB\uE9CC" +
++        "\uE9CD\uE9CE\uE9CF\uE9D0\uE9D1\uE9D2\uE9D3\uE9D4" +
++        "\uE9D5\uE9D6\uE9D7\uE9D8\uE9D9\uE9DA\uE9DB\uE9DC" +
++        "\uE9DD\uE9DE\uE9DF\uE9E0\uE9E1\uE9E2\uE9E3\uE9E4" +
++        "\uE9E5\uE9E6\uE9E7\uE9E8\uE9E9\uE9EA\uE9EB\uE9EC" +
++        "\uE9ED\uE9EE\uE9EF\uE9F0\uE9F1\uE9F2\uE9F3\uE9F4" +
++        "\uE9F5\uE9F6\uE9F7\uE9F8\uE9F9\uE9FA\uE9FB\uE9FC" +
++        "\uE9FD\uE9FE\uE9FF\uEA00\uEA01\uEA02\uEA03\uEA04" +
++        "\uEA05\uEA06\uEA07\uEA08\uEA09\uEA0A\uEA0B\uEA0C" +
++        "\uEA0D\uEA0E\uEA0F\uEA10\uEA11\uEA12\uEA13\uEA14" +
++        "\uEA15\uEA16\uEA17\uEA18\uEA19\uEA1A\uEA1B\uEA1C" +
++        "\uEA1D\uEA1E\uEA1F\uEA20\uEA21\uEA22\uEA23\uEA24" +
++        "\uEA25\uEA26\uEA27\uEA28\uEA29\uEA2A\uEA2B\uEA2C" +
++        "\uEA2D\uEA2E\uEA2F\uEA30\uEA31\uEA32\uEA33\uEA34" +
++        "\uEA35\uEA36\uEA37\uEA38\uEA39\uEA3A\uEA3B\uEA3C" +
++        "\uEA3D\uEA3E\uEA3F\uEA40\uEA41\uEA42\uEA43\uEA44" +
++        "\uEA45\uEA46\uEA47\uEA48\uEA49\uEA4A\uEA4B\uEA4C" +
++        "\uEA4D\uEA4E\uEA4F\uEA50\uEA51\uEA52\uEA53\uEA54" +
++        "\uEA55\uEA56\uEA57\uEA58\uEA59\uEA5A\uEA5B\uEA5C" +
++        "\uEA5D\uEA5E\uEA5F\uEA60\uEA61\uEA62\uEA63" ,
++        "\uFFFD\uEA64\uEA65\uEA66\uEA67\uEA68\uEA69\uEA6A" +
++        "\uEA6B\uEA6C\uEA6D\uEA6E\uEA6F\uEA70\uEA71\uEA72" +
++        "\uEA73\uEA74\uEA75\uEA76\uEA77\uEA78\uEA79\uEA7A" +
++        "\uEA7B\uEA7C\uEA7D\uEA7E\uEA7F\uEA80\uEA81\uEA82" +
++        "\uEA83\uEA84\uEA85\uEA86\uEA87\uEA88\uEA89\uEA8A" +
++        "\uEA8B\uEA8C\uEA8D\uEA8E\uEA8F\uEA90\uEA91\uEA92" +
++        "\uEA93\uEA94\uEA95\uEA96\uEA97\uEA98\uEA99\uEA9A" +
++        "\uEA9B\uEA9C\uEA9D\uEA9E\uEA9F\uEAA0\uEAA1\uEAA2" +
++        "\uEAA3\uEAA4\uEAA5\uEAA6\uEAA7\uEAA8\uEAA9\uEAAA" +
++        "\uEAAB\uEAAC\uEAAD\uEAAE\uEAAF\uEAB0\uEAB1\uEAB2" +
++        "\uEAB3\uEAB4\uEAB5\uEAB6\uEAB7\uEAB8\uEAB9\uEABA" +
++        "\uEABB\uEABC\uEABD\uEABE\uEABF\uEAC0\uEAC1\uEAC2" +
++        "\uEAC3\uEAC4\uEAC5\uEAC6\uEAC7\uEAC8\uEAC9\uEACA" +
++        "\uEACB\uEACC\uEACD\uEACE\uEACF\uEAD0\uEAD1\uEAD2" +
++        "\uEAD3\uEAD4\uEAD5\uEAD6\uEAD7\uEAD8\uEAD9\uEADA" +
++        "\uEADB\uEADC\uEADD\uEADE\uEADF\uEAE0\uEAE1\uEAE2" +
++        "\uEAE3\uEAE4\uEAE5\uEAE6\uEAE7\uEAE8\uEAE9\uEAEA" +
++        "\uEAEB\uEAEC\uEAED\uEAEE\uEAEF\uEAF0\uEAF1\uEAF2" +
++        "\uEAF3\uEAF4\uEAF5\uEAF6\uEAF7\uEAF8\uEAF9\uEAFA" +
++        "\uEAFB\uEAFC\uEAFD\uEAFE\uEAFF\uEB00\uEB01\uEB02" +
++        "\uEB03\uEB04\uEB05\uEB06\uEB07\uEB08\uEB09\uEB0A" +
++        "\uEB0B\uEB0C\uEB0D\uEB0E\uEB0F\uEB10\uEB11\uEB12" +
++        "\uEB13\uEB14\uEB15\uEB16\uEB17\uEB18\uEB19\uEB1A" +
++        "\uEB1B\uEB1C\uEB1D\uEB1E\uEB1F\uEB20\uEB21" ,
++        "\uFFFD\uEB22\uEB23\uEB24\uEB25\uEB26\uEB27\uEB28" +
++        "\uEB29\uEB2A\uEB2B\uEB2C\uEB2D\uEB2E\uEB2F\uEB30" +
++        "\uEB31\uEB32\uEB33\uEB34\uEB35\uEB36\uEB37\uEB38" +
++        "\uEB39\uEB3A\uEB3B\uEB3C\uEB3D\uEB3E\uEB3F\uEB40" +
++        "\uEB41\uEB42\uEB43\uEB44\uEB45\uEB46\uEB47\uEB48" +
++        "\uEB49\uEB4A\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F\uEB50" +
++        "\uEB51\uEB52\uEB53\uEB54\uEB55\uEB56\uEB57\uEB58" +
++        "\uEB59\uEB5A\uEB5B\uEB5C\uEB5D\uEB5E\uEB5F\uEB60" +
++        "\uEB61\uEB62\uEB63\uEB64\uEB65\uEB66\uEB67\uEB68" +
++        "\uEB69\uEB6A\uEB6B\uEB6C\uEB6D\uEB6E\uEB6F\uEB70" +
++        "\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76\uEB77\uEB78" +
++        "\uEB79\uEB7A\uEB7B\uEB7C\uEB7D\uEB7E\uEB7F\uEB80" +
++        "\uEB81\uEB82\uEB83\uEB84\uEB85\uEB86\uEB87\uEB88" +
++        "\uEB89\uEB8A\uEB8B\uEB8C\uEB8D\uEB8E\uEB8F\uEB90" +
++        "\uEB91\uEB92\uEB93\uEB94\uEB95\uEB96\uEB97\uEB98" +
++        "\uEB99\uEB9A\uEB9B\uEB9C\uEB9D\uEB9E\uEB9F\uEBA0" +
++        "\uEBA1\uEBA2\uEBA3\uEBA4\uEBA5\uEBA6\uEBA7\uEBA8" +
++        "\uEBA9\uEBAA\uEBAB\uEBAC\uEBAD\uEBAE\uEBAF\uEBB0" +
++        "\uEBB1\uEBB2\uEBB3\uEBB4\uEBB5\uEBB6\uEBB7\uEBB8" +
++        "\uEBB9\uEBBA\uEBBB\uEBBC\uEBBD\uEBBE\uEBBF\uEBC0" +
++        "\uEBC1\uEBC2\uEBC3\uEBC4\uEBC5\uEBC6\uEBC7\uEBC8" +
++        "\uEBC9\uEBCA\uEBCB\uEBCC\uEBCD\uEBCE\uEBCF\uEBD0" +
++        "\uEBD1\uEBD2\uEBD3\uEBD4\uEBD5\uEBD6\uEBD7\uEBD8" +
++        "\uEBD9\uEBDA\uEBDB\uEBDC\uEBDD\uEBDE\uEBDF" ,
++        "\uFFFD\uEBE0\uEBE1\uEBE2\uEBE3\uEBE4\uEBE5\uEBE6" +
++        "\uEBE7\uEBE8\uEBE9\uEBEA\uEBEB\uEBEC\uEBED\uEBEE" +
++        "\uEBEF\uEBF0\uEBF1\uEBF2\uEBF3\uEBF4\uEBF5\uEBF6" +
++        "\uEBF7\uEBF8\uEBF9\uEBFA\uEBFB\uEBFC\uEBFD\uEBFE" +
++        "\uEBFF\uEC00\uEC01\uEC02\uEC03\uEC04\uEC05\uEC06" +
++        "\uEC07\uEC08\uEC09\uEC0A\uEC0B\uEC0C\uEC0D\uEC0E" +
++        "\uEC0F\uEC10\uEC11\uEC12\uEC13\uEC14\uEC15\uEC16" +
++        "\uEC17\uEC18\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\uEC1E" +
++        "\uEC1F\uEC20\uEC21\uEC22\uEC23\uEC24\uEC25\uEC26" +
++        "\uEC27\uEC28\uEC29\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E" +
++        "\uEC2F\uEC30\uEC31\uEC32\uEC33\uEC34\uEC35\uEC36" +
++        "\uEC37\uEC38\uEC39\uEC3A\uEC3B\uEC3C\uEC3D\uEC3E" +
++        "\uEC3F\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46" +
++        "\uEC47\uEC48\uEC49\uEC4A\uEC4B\uEC4C\uEC4D\uEC4E" +
++        "\uEC4F\uEC50\uEC51\uEC52\uEC53\uEC54\uEC55\uEC56" +
++        "\uEC57\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E" +
++        "\uEC5F\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66" +
++        "\uEC67\uEC68\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E" +
++        "\uEC6F\uEC70\uEC71\uEC72\uEC73\uEC74\uEC75\uEC76" +
++        "\uEC77\uEC78\uEC79\uEC7A\uEC7B\uEC7C\uEC7D\uEC7E" +
++        "\uEC7F\uEC80\uEC81\uEC82\uEC83\uEC84\uEC85\uEC86" +
++        "\uEC87\uEC88\uEC89\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E" +
++        "\uEC8F\uEC90\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96" +
++        "\uEC97\uEC98\uEC99\uEC9A\uEC9B\uEC9C\uEC9D" ,
++        "\uFFFD\uEC9E\uEC9F\uECA0\uECA1\uECA2\uECA3\uECA4" +
++        "\uECA5\uECA6\uECA7\uECA8\uECA9\uECAA\uECAB\uECAC" +
++        "\uECAD\uECAE\uECAF\uECB0\uECB1\uECB2\uECB3\uECB4" +
++        "\uECB5\uECB6\uECB7\uECB8\uECB9\uECBA\uECBB\uECBC" +
++        "\uECBD\uECBE\uECBF\uECC0\uECC1\uECC2\uECC3\uECC4" +
++        "\uECC5\uECC6\uECC7\uECC8\uECC9\uECCA\uECCB\uECCC" +
++        "\uECCD\uECCE\uECCF\uECD0\uECD1\uECD2\uECD3\uECD4" +
++        "\uECD5\uECD6\uECD7\uECD8\uECD9\uECDA\uECDB\uECDC" +
++        "\uECDD\uECDE\uECDF\uECE0\uECE1\uECE2\uECE3\uECE4" +
++        "\uECE5\uECE6\uECE7\uECE8\uECE9\uECEA\uECEB\uECEC" +
++        "\uECED\uECEE\uECEF\uECF0\uECF1\uECF2\uECF3\uECF4" +
++        "\uECF5\uECF6\uECF7\uECF8\uECF9\uECFA\uECFB\uECFC" +
++        "\uECFD\uECFE\uECFF\uED00\uED01\uED02\uED03\uED04" +
++        "\uED05\uED06\uED07\uED08\uED09\uED0A\uED0B\uED0C" +
++        "\uED0D\uED0E\uED0F\uED10\uED11\uED12\uED13\uED14" +
++        "\uED15\uED16\uED17\uED18\uED19\uED1A\uED1B\uED1C" +
++        "\uED1D\uED1E\uED1F\uED20\uED21\uED22\uED23\uED24" +
++        "\uED25\uED26\uED27\uED28\uED29\uED2A\uED2B\uED2C" +
++        "\uED2D\uED2E\uED2F\uED30\uED31\uED32\uED33\uED34" +
++        "\uED35\uED36\uED37\uED38\uED39\uED3A\uED3B\uED3C" +
++        "\uED3D\uED3E\uED3F\uED40\uED41\uED42\uED43\uED44" +
++        "\uED45\uED46\uED47\uED48\uED49\uED4A\uED4B\uED4C" +
++        "\uED4D\uED4E\uED4F\uED50\uED51\uED52\uED53\uED54" +
++        "\uED55\uED56\uED57\uED58\uED59\uED5A\uED5B" ,
++        "\uFFFD\uED5C\uED5D\uED5E\uED5F\uED60\uED61\uED62" +
++        "\uED63\uED64\uED65\uED66\uED67\uED68\uED69\uED6A" +
++        "\uED6B\uED6C\uED6D\uED6E\uED6F\uED70\uED71\uED72" +
++        "\uED73\uED74\uED75\uED76\uED77\uED78\uED79\uED7A" +
++        "\uED7B\uED7C\uED7D\uED7E\uED7F\uED80\uED81\uED82" +
++        "\uED83\uED84\uED85\uED86\uED87\uED88\uED89\uED8A" +
++        "\uED8B\uED8C\uED8D\uED8E\uED8F\uED90\uED91\uED92" +
++        "\uED93\uED94\uED95\uED96\uED97\uED98\uED99\uED9A" +
++        "\uED9B\uED9C\uED9D\uED9E\uED9F\uEDA0\uEDA1\uEDA2" +
++        "\uEDA3\uEDA4\uEDA5\uEDA6\uEDA7\uEDA8\uEDA9\uEDAA" +
++        "\uEDAB\uEDAC\uEDAD\uEDAE\uEDAF\uEDB0\uEDB1\uEDB2" +
++        "\uEDB3\uEDB4\uEDB5\uEDB6\uEDB7\uEDB8\uEDB9\uEDBA" +
++        "\uEDBB\uEDBC\uEDBD\uEDBE\uEDBF\uEDC0\uEDC1\uEDC2" +
++        "\uEDC3\uEDC4\uEDC5\uEDC6\uEDC7\uEDC8\uEDC9\uEDCA" +
++        "\uEDCB\uEDCC\uEDCD\uEDCE\uEDCF\uEDD0\uEDD1\uEDD2" +
++        "\uEDD3\uEDD4\uEDD5\uEDD6\uEDD7\uEDD8\uEDD9\uEDDA" +
++        "\uEDDB\uEDDC\uEDDD\uEDDE\uEDDF\uEDE0\uEDE1\uEDE2" +
++        "\uEDE3\uEDE4\uEDE5\uEDE6\uEDE7\uEDE8\uEDE9\uEDEA" +
++        "\uEDEB\uEDEC\uEDED\uEDEE\uEDEF\uEDF0\uEDF1\uEDF2" +
++        "\uEDF3\uEDF4\uEDF5\uEDF6\uEDF7\uEDF8\uEDF9\uEDFA" +
++        "\uEDFB\uEDFC\uEDFD\uEDFE\uEDFF\uEE00\uEE01\uEE02" +
++        "\uEE03\uEE04\uEE05\uEE06\uEE07\uEE08\uEE09\uEE0A" +
++        "\uEE0B\uEE0C\uEE0D\uEE0E\uEE0F\uEE10\uEE11\uEE12" +
++        "\uEE13\uEE14\uEE15\uEE16\uEE17\uEE18\uEE19" ,
++        "\uFFFD\uEE1A\uEE1B\uEE1C\uEE1D\uEE1E\uEE1F\uEE20" +
++        "\uEE21\uEE22\uEE23\uEE24\uEE25\uEE26\uEE27\uEE28" +
++        "\uEE29\uEE2A\uEE2B\uEE2C\uEE2D\uEE2E\uEE2F\uEE30" +
++        "\uEE31\uEE32\uEE33\uEE34\uEE35\uEE36\uEE37\uEE38" +
++        "\uEE39\uEE3A\uEE3B\uEE3C\uEE3D\uEE3E\uEE3F\uEE40" +
++        "\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47\uEE48" +
++        "\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F\uEE50" +
++        "\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57\uEE58" +
++        "\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F\uEE60" +
++        "\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67\uEE68" +
++        "\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F\uEE70" +
++        "\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77\uEE78" +
++        "\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE7F\uEE80" +
++        "\uEE81\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87\uEE88" +
++        "\uEE89\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F\uEE90" +
++        "\uEE91\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97\uEE98" +
++        "\uEE99\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F\uEEA0" +
++        "\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7\uEEA8" +
++        "\uEEA9\uEEAA\uEEAB\uEEAC\uEEAD\uEEAE\uEEAF\uEEB0" +
++        "\uEEB1\uEEB2\uEEB3\uEEB4\uEEB5\uEEB6\uEEB7\uEEB8" +
++        "\uEEB9\uEEBA\uEEBB\uEEBC\uEEBD\uEEBE\uEEBF\uEEC0" +
++        "\uEEC1\uEEC2\uEEC3\uEEC4\uEEC5\uEEC6\uEEC7\uEEC8" +
++        "\uEEC9\uEECA\uEECB\uEECC\uEECD\uEECE\uEECF\uEED0" +
++        "\uEED1\uEED2\uEED3\uEED4\uEED5\uEED6\uEED7" ,
++        "\uFFFD\uEED8\uEED9\uEEDA\uEEDB\uEEDC\uEEDD\uEEDE" +
++        "\uEEDF\uEEE0\uEEE1\uEEE2\uEEE3\uEEE4\uEEE5\uEEE6" +
++        "\uEEE7\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uEEED\uEEEE" +
++        "\uEEEF\uEEF0\uEEF1\uEEF2\uEEF3\uEEF4\uEEF5\uEEF6" +
++        "\uEEF7\uEEF8\uEEF9\uEEFA\uEEFB\uEEFC\uEEFD\uEEFE" +
++        "\uEEFF\uEF00\uEF01\uEF02\uEF03\uEF04\uEF05\uEF06" +
++        "\uEF07\uEF08\uEF09\uEF0A\uEF0B\uEF0C\uEF0D\uEF0E" +
++        "\uEF0F\uEF10\uEF11\uEF12\uEF13\uEF14\uEF15\uEF16" +
++        "\uEF17\uEF18\uEF19\uEF1A\uEF1B\uEF1C\uEF1D\uEF1E" +
++        "\uEF1F\uEF20\uEF21\uEF22\uEF23\uEF24\uEF25\uEF26" +
++        "\uEF27\uEF28\uEF29\uEF2A\uEF2B\uEF2C\uEF2D\uEF2E" +
++        "\uEF2F\uEF30\uEF31\uEF32\uEF33\uEF34\uEF35\uEF36" +
++        "\uEF37\uEF38\uEF39\uEF3A\uEF3B\uEF3C\uEF3D\uEF3E" +
++        "\uEF3F\uEF40\uEF41\uEF42\uEF43\uEF44\uEF45\uEF46" +
++        "\uEF47\uEF48\uEF49\uEF4A\uEF4B\uEF4C\uEF4D\uEF4E" +
++        "\uEF4F\uEF50\uEF51\uEF52\uEF53\uEF54\uEF55\uEF56" +
++        "\uEF57\uEF58\uEF59\uEF5A\uEF5B\uEF5C\uEF5D\uEF5E" +
++        "\uEF5F\uEF60\uEF61\uEF62\uEF63\uEF64\uEF65\uEF66" +
++        "\uEF67\uEF68\uEF69\uEF6A\uEF6B\uEF6C\uEF6D\uEF6E" +
++        "\uEF6F\uEF70\uEF71\uEF72\uEF73\uEF74\uEF75\uEF76" +
++        "\uEF77\uEF78\uEF79\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E" +
++        "\uEF7F\uEF80\uEF81\uEF82\uEF83\uEF84\uEF85\uEF86" +
++        "\uEF87\uEF88\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E" +
++        "\uEF8F\uEF90\uEF91\uEF92\uEF93\uEF94\uEF95" ,
++        "\uFFFD\uEF96\uEF97\uEF98\uEF99\uEF9A\uEF9B\uEF9C" +
++        "\uEF9D\uEF9E\uEF9F\uEFA0\uEFA1\uEFA2\uEFA3\uEFA4" +
++        "\uEFA5\uEFA6\uEFA7\uEFA8\uEFA9\uEFAA\uEFAB\uEFAC" +
++        "\uEFAD\uEFAE\uEFAF\uEFB0\uEFB1\uEFB2\uEFB3\uEFB4" +
++        "\uEFB5\uEFB6\uEFB7\uEFB8\uEFB9\uEFBA\uEFBB\uEFBC" +
++        "\uEFBD\uEFBE\uEFBF\uEFC0\uEFC1\uEFC2\uEFC3\uEFC4" +
++        "\uEFC5\uEFC6\uEFC7\uEFC8\uEFC9\uEFCA\uEFCB\uEFCC" +
++        "\uEFCD\uEFCE\uEFCF\uEFD0\uEFD1\uEFD2\uEFD3\uEFD4" +
++        "\uEFD5\uEFD6\uEFD7\uEFD8\uEFD9\uEFDA\uEFDB\uEFDC" +
++        "\uEFDD\uEFDE\uEFDF\uEFE0\uEFE1\uEFE2\uEFE3\uEFE4" +
++        "\uEFE5\uEFE6\uEFE7\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC" +
++        "\uEFED\uEFEE\uEFEF\uEFF0\uEFF1\uEFF2\uEFF3\uEFF4" +
++        "\uEFF5\uEFF6\uEFF7\uEFF8\uEFF9\uEFFA\uEFFB\uEFFC" +
++        "\uEFFD\uEFFE\uEFFF\uF000\uF001\uF002\uF003\uF004" +
++        "\uF005\uF006\uF007\uF008\uF009\uF00A\uF00B\uF00C" +
++        "\uF00D\uF00E\uF00F\uF010\uF011\uF012\uF013\uF014" +
++        "\uF015\uF016\uF017\uF018\uF019\uF01A\uF01B\uF01C" +
++        "\uF01D\uF01E\uF01F\uF020\uF021\uF022\uF023\uF024" +
++        "\uF025\uF026\uF027\uF028\uF029\uF02A\uF02B\uF02C" +
++        "\uF02D\uF02E\uF02F\uF030\uF031\uF032\uF033\uF034" +
++        "\uF035\uF036\uF037\uF038\uF039\uF03A\uF03B\uF03C" +
++        "\uF03D\uF03E\uF03F\uF040\uF041\uF042\uF043\uF044" +
++        "\uF045\uF046\uF047\uF048\uF049\uF04A\uF04B\uF04C" +
++        "\uF04D\uF04E\uF04F\uF050\uF051\uF052\uF053" ,
++        "\uFFFD\uF054\uF055\uF056\uF057\uF058\uF059\uF05A" +
++        "\uF05B\uF05C\uF05D\uF05E\uF05F\uF060\uF061\uF062" +
++        "\uF063\uF064\uF065\uF066\uF067\uF068\uF069\uF06A" +
++        "\uF06B\uF06C\uF06D\uF06E\uF06F\uF070\uF071\uF072" +
++        "\uF073\uF074\uF075\uF076\uF077\uF078\uF079\uF07A" +
++        "\uF07B\uF07C\uF07D\uF07E\uF07F\uF080\uF081\uF082" +
++        "\uF083\uF084\uF085\uF086\uF087\uF088\uF089\uF08A" +
++        "\uF08B\uF08C\uF08D\uF08E\uF08F\uF090\uF091\uF092" +
++        "\uF093\uF094\uF095\uF096\uF097\uF098\uF099\uF09A" +
++        "\uF09B\uF09C\uF09D\uF09E\uF09F\uF0A0\uF0A1\uF0A2" +
++        "\uF0A3\uF0A4\uF0A5\uF0A6\uF0A7\uF0A8\uF0A9\uF0AA" +
++        "\uF0AB\uF0AC\uF0AD\uF0AE\uF0AF\uF0B0\uF0B1\uF0B2" +
++        "\uF0B3\uF0B4\uF0B5\uF0B6\uF0B7\uF0B8\uF0B9\uF0BA" +
++        "\uF0BB\uF0BC\uF0BD\uF0BE\uF0BF\uF0C0\uF0C1\uF0C2" +
++        "\uF0C3\uF0C4\uF0C5\uF0C6\uF0C7\uF0C8\uF0C9\uF0CA" +
++        "\uF0CB\uF0CC\uF0CD\uF0CE\uF0CF\uF0D0\uF0D1\uF0D2" +
++        "\uF0D3\uF0D4\uF0D5\uF0D6\uF0D7\uF0D8\uF0D9\uF0DA" +
++        "\uF0DB\uF0DC\uF0DD\uF0DE\uF0DF\uF0E0\uF0E1\uF0E2" +
++        "\uF0E3\uF0E4\uF0E5\uF0E6\uF0E7\uF0E8\uF0E9\uF0EA" +
++        "\uF0EB\uF0EC\uF0ED\uF0EE\uF0EF\uF0F0\uF0F1\uF0F2" +
++        "\uF0F3\uF0F4\uF0F5\uF0F6\uF0F7\uF0F8\uF0F9\uF0FA" +
++        "\uF0FB\uF0FC\uF0FD\uF0FE\uF0FF\uF100\uF101\uF102" +
++        "\uF103\uF104\uF105\uF106\uF107\uF108\uF109\uF10A" +
++        "\uF10B\uF10C\uF10D\uF10E\uF10F\uF110\uF111" ,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++            null,
++        };
++
++    static char[][] b2c = new char[b2cStr.length][];
++    private static volatile boolean b2cInitialized = false;
++
++    static void initb2c() {
++        if (b2cInitialized)
++            return;
++        synchronized (b2c) {
++            if (b2cInitialized)
++                return;
++            for (int i = 0; i < b2cStr.length; i++) {
++                if (b2cStr[i] == null)
++                    b2c[i] = DoubleByte.B2C_UNMAPPABLE;
++                else
++                    b2c[i] = b2cStr[i].toCharArray();
++            }
++            b2cInitialized = true;
++        }
++    }
++
++    static char[] c2b = new char[0x7400];
++    static char[] c2bIndex = new char[0x100];
++    private static volatile boolean c2bInitialized = false;
++
++    static void initc2b() {
++        if (c2bInitialized)
++            return;
++        synchronized (c2b) {
++            if (c2bInitialized)
++                return;
++            String b2cNR = null;
++            String c2bNR =
++        "\u4260\u2212\u426A\u00A6\u43A1\u301C\u444A\u2014" +
++        "\u446E\uF86F\u447C\u2016\u4C7D\u9E7C\u4EB3\u9830" +
++        "\u4F5E\u5861\u507F\u91AC\u5190\u56CA\u51F1\u6805" +
++        "\u51FA\u91B1\u5261\u9EB4\u52A1\u881F\u52C9\u840A" +
++        "\u52DA\u7E61\u52EC\u4FE0\u5353\u8EC0\u5373\u7E6B" +
++        "\u53B3\u8346\u53DA\u9A52\u53E8\u87EC\u53EE\u7130" +
++        "\u53F8\u8523\u5443\u5C5B\u5464\u9DD7\u547D\u5699" +
++        "\u5481\u525D\u54A3\u6414\u54A4\u7626\u54CA\u7C1E" +
++        "\u54CD\u6451\u54D4\u555E\u54FA\u6F51\u5550\u7006" +
++        "\u5553\u79B1\u555F\u9EB5\u55C0\u5C62\u55C1\u985A" +
++        "\u5B72\u6522\u5BFE\u688E\u60F1\u7E48\u61B0\u8141" +
++        "\u66C8\u9839" ;
++
++            DoubleByte.Encoder.initC2B(b2cStr, b2cSBStr, b2cNR, c2bNR,
++                                       0x40, 0xfe,
++                                       c2b, c2bIndex);
++            c2bInitialized = true;
++        }
++    }
++}
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java ./jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java	2013-09-06 14:28:41.000000000 -0400
++++ ./jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java	2013-12-14 21:14:12.000000000 -0500
+@@ -26,8 +26,10 @@
+ 
+ package sun.reflect.misc;
+ 
++import java.lang.reflect.Method;
+ import java.lang.reflect.Modifier;
+ import java.lang.reflect.Proxy;
++import java.util.Arrays;
+ import sun.reflect.Reflection;
+ 
+ public final class ReflectUtil {
+@@ -249,4 +251,50 @@
+         String pkg = (i != -1) ? name.substring(0, i) : "";
+         return Proxy.isProxyClass(cls) && !pkg.equals(PROXY_PACKAGE);
+     }
++
++    /**
++     * Check if the given method is a method declared in the proxy interface
++     * implemented by the given proxy instance.
++     *
++     * @param proxy a proxy instance
++     * @param method an interface method dispatched to a InvocationHandler
++     *
++     * @throws IllegalArgumentException if the given proxy or method is invalid.
++     */
++    public static void checkProxyMethod(Object proxy, Method method) {
++        // check if it is a valid proxy instance
++        if (proxy == null || !Proxy.isProxyClass(proxy.getClass())) {
++            throw new IllegalArgumentException("Not a Proxy instance");
++}
++        if (Modifier.isStatic(method.getModifiers())) {
++            throw new IllegalArgumentException("Can't handle static method");
++        }
++
++        Class<?> c = method.getDeclaringClass();
++        if (c == Object.class) {
++            String name = method.getName();
++            if (name.equals("hashCode") || name.equals("equals") || name.equals("toString")) {
++                return;
++            }
++        }
++
++        if (isSuperInterface(proxy.getClass(), c)) {
++            return;
++        }
++
++        // disallow any method not declared in one of the proxy intefaces
++        throw new IllegalArgumentException("Can't handle: " + method);
++    }
++
++    private static boolean isSuperInterface(Class<?> c, Class<?> intf) {
++        for (Class<?> i : c.getInterfaces()) {
++            if (i == intf) {
++                return true;
++            }
++            if (isSuperInterface(i, intf)) {
++                return true;
++            }
++        }
++        return false;
++    }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/ec/ECPrivateKeyImpl.java ./jdk/src/share/classes/sun/security/ec/ECPrivateKeyImpl.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/ec/ECPrivateKeyImpl.java	2013-09-06 14:28:42.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/ec/ECPrivateKeyImpl.java	2013-12-14 21:14:13.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006, 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
+@@ -153,12 +153,4 @@
+             throw new InvalidKeyException("Invalid EC private key", e);
+         }
+     }
+-
+-    // return a string representation of this key for debugging
+-    public String toString() {
+-        return "Sun EC private key, " + params.getCurve().getField().getFieldSize()
+-            + " bits\n  private value:  "
+-            + s + "\n  parameters: " + params;
+-    }
+-
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/jgss/GSSCredentialImpl.java ./jdk/src/share/classes/sun/security/jgss/GSSCredentialImpl.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/jgss/GSSCredentialImpl.java	2013-09-06 14:28:42.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/jgss/GSSCredentialImpl.java	2013-12-14 21:14:13.000000000 -0500
+@@ -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
+@@ -630,7 +630,7 @@
+                 buffer.append(element.isAcceptorCredential() ?
+                               " Accept" : "");
+                 buffer.append(" [");
+-                buffer.append(element.toString());
++                buffer.append(element.getClass());
+                 buffer.append(']');
+             } catch (GSSException e) {
+                 // skip to next element
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/krb5/KdcComm.java ./jdk/src/share/classes/sun/security/krb5/KdcComm.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/krb5/KdcComm.java	2013-09-06 14:28:43.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/krb5/KdcComm.java	2013-12-14 21:14:13.000000000 -0500
+@@ -239,11 +239,15 @@
+                 savedException = e;
+             }
+         }
+-        if (ibuf == null && savedException != null) {
+-            if (savedException instanceof IOException) {
+-                throw (IOException) savedException;
++        if (ibuf == null) {
++            if (savedException != null) {
++                if (savedException instanceof IOException) {
++                    throw (IOException) savedException;
++                } else {
++                    throw (KrbException) savedException;
++                }
+             } else {
+-                throw (KrbException) savedException;
++                throw new IOException("Cannot get a KDC reply");
+             }
+         }
+         return ibuf;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/krb5/internal/NetClient.java ./jdk/src/share/classes/sun/security/krb5/internal/NetClient.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/krb5/internal/NetClient.java	2013-09-06 14:28:43.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/krb5/internal/NetClient.java	2013-12-14 21:14:14.000000000 -0500
+@@ -31,6 +31,8 @@
+ 
+ package sun.security.krb5.internal;
+ 
++import sun.misc.IOUtils;
++
+ import java.io.*;
+ import java.net.*;
+ 
+@@ -102,17 +104,15 @@
+             return null;
+         }
+ 
+-        byte data[] = new byte[len];
+-        count = readFully(data, len);
+-        if (count != len) {
++        try {
++            return IOUtils.readFully(in, len, true);
++        } catch (IOException ioe) {
+             if (Krb5.DEBUG) {
+                 System.out.println(
+                     ">>>DEBUG: TCPClient could not read complete packet (" +
+                     len + "/" + count + ")");
+             }
+             return null;
+-        } else {
+-            return data;
+         }
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/pkcs/PKCS8Key.java ./jdk/src/share/classes/sun/security/pkcs/PKCS8Key.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/pkcs/PKCS8Key.java	2013-09-06 14:28:44.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/pkcs/PKCS8Key.java	2013-12-14 21:14:14.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2004, 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
+@@ -304,17 +304,6 @@
+         return encodedKey.clone();
+     }
+ 
+-    /*
+-     * Returns a printable representation of the key
+-     */
+-    public String toString ()
+-    {
+-        HexDumpEncoder  encoder = new HexDumpEncoder ();
+-
+-        return "algorithm = " + algid.toString ()
+-            + ", unparsed keybits = \n" + encoder.encodeBuffer (key);
+-    }
+-
+     /**
+      * Initialize an PKCS8Key object from an input stream.  The data
+      * on that input stream must be encoded using DER, obeying the
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Key.java ./jdk/src/share/classes/sun/security/pkcs11/P11Key.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	2013-09-06 14:28:44.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/pkcs11/P11Key.java	2013-12-14 21:14:15.000000000 -0500
+@@ -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
+@@ -542,27 +542,6 @@
+             fetchValues();
+             return coeff;
+         }
+-        public String toString() {
+-            fetchValues();
+-            StringBuilder sb = new StringBuilder(super.toString());
+-            sb.append("\n  modulus:          ");
+-            sb.append(n);
+-            sb.append("\n  public exponent:  ");
+-            sb.append(e);
+-            sb.append("\n  private exponent: ");
+-            sb.append(d);
+-            sb.append("\n  prime p:          ");
+-            sb.append(p);
+-            sb.append("\n  prime q:          ");
+-            sb.append(q);
+-            sb.append("\n  prime exponent p: ");
+-            sb.append(pe);
+-            sb.append("\n  prime exponent q: ");
+-            sb.append(qe);
+-            sb.append("\n  crt coefficient:  ");
+-            sb.append(coeff);
+-            return sb.toString();
+-        }
+     }
+ 
+     // RSA non-CRT private key
+@@ -616,15 +595,6 @@
+             fetchValues();
+             return d;
+         }
+-        public String toString() {
+-            fetchValues();
+-            StringBuilder sb = new StringBuilder(super.toString());
+-            sb.append("\n  modulus:          ");
+-            sb.append(n);
+-            sb.append("\n  private exponent: ");
+-            sb.append(d);
+-            return sb.toString();
+-        }
+     }
+ 
+     private static final class P11RSAPublicKey extends P11Key
+@@ -794,11 +764,6 @@
+             fetchValues();
+             return params;
+         }
+-        public String toString() {
+-            fetchValues();
+-            return super.toString() +  "\n  x: " + x + "\n  p: " + params.getP()
+-                + "\n  q: " + params.getQ() + "\n  g: " + params.getG();
+-        }
+     }
+ 
+     private static final class P11DHPrivateKey extends P11Key
+@@ -856,11 +821,6 @@
+             fetchValues();
+             return params;
+         }
+-        public String toString() {
+-            fetchValues();
+-            return super.toString() +  "\n  x: " + x + "\n  p: " + params.getP()
+-                + "\n  g: " + params.getG();
+-        }
+     }
+ 
+     private static final class P11DHPublicKey extends P11Key
+@@ -977,12 +937,6 @@
+             fetchValues();
+             return params;
+         }
+-        public String toString() {
+-            fetchValues();
+-        return super.toString()
+-            + "\n  private value:  " + s
+-            + "\n  parameters: " + params;
+-        }
+     }
+ 
+     private static final class P11ECPublicKey extends P11Key
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/provider/DSAPrivateKey.java ./jdk/src/share/classes/sun/security/provider/DSAPrivateKey.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/provider/DSAPrivateKey.java	2013-09-06 14:28:44.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/provider/DSAPrivateKey.java	2013-12-14 21:14:15.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2002, 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
+@@ -142,11 +142,6 @@
+         }
+     }
+ 
+-    public String toString() {
+-        return "Sun DSA Private Key \nparameters:" + algid + "\nx: " +
+-            Debug.toHexString(x) + "\n";
+-    }
+-
+     protected void parseKeyBits() throws InvalidKeyException {
+         try {
+             DerInputStream in = new DerInputStream(key);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java ./jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	2013-09-06 14:28:45.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	2013-12-14 21:14:15.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2008, 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
+@@ -225,29 +225,4 @@
+         }
+         return b;
+     }
+-
+-    // return a string representation of this key for debugging
+-    public String toString() {
+-        StringBuffer sb = new StringBuffer();
+-        sb.append("Sun RSA private CRT key, ");
+-        sb.append(n.bitLength());
+-        sb.append(" bits\n  modulus:          ");
+-        sb.append(n);
+-        sb.append("\n  public exponent:  ");
+-        sb.append(e);
+-        sb.append("\n  private exponent: ");
+-        sb.append(d);
+-        sb.append("\n  prime p:          ");
+-        sb.append(p);
+-        sb.append("\n  prime q:          ");
+-        sb.append(q);
+-        sb.append("\n  prime exponent p: ");
+-        sb.append(pe);
+-        sb.append("\n  prime exponent q: ");
+-        sb.append(qe);
+-        sb.append("\n  crt coefficient:  ");
+-        sb.append(coeff);
+-        return sb.toString();
+-    }
+-
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java ./jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java	2013-09-06 14:28:45.000000000 -0400
++++ ./jdk/src/share/classes/sun/security/rsa/RSAPrivateKeyImpl.java	2013-12-14 21:14:15.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2008, 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
+@@ -98,11 +98,4 @@
+     public BigInteger getPrivateExponent() {
+         return d;
+     }
+-
+-    // return a string representation of this key for debugging
+-    public String toString() {
+-        return "Sun RSA private key, " + n.bitLength() + " bits\n  modulus: "
+-                + n + "\n  private exponent: " + d;
+-    }
+-
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/swing/SwingLazyValue.java ./jdk/src/share/classes/sun/swing/SwingLazyValue.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/swing/SwingLazyValue.java	2013-09-06 14:28:47.000000000 -0400
++++ ./jdk/src/share/classes/sun/swing/SwingLazyValue.java	2013-12-14 21:14:16.000000000 -0500
+@@ -30,6 +30,7 @@
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
+ import javax.swing.UIDefaults;
++import sun.reflect.misc.ReflectUtil;
+ 
+ /**
+  * SwingLazyValue is a copy of ProxyLazyValue that does not snapshot the
+@@ -63,7 +64,7 @@
+ 
+     public Object createValue(final UIDefaults table) {
+         try {
+-            Object cl;
++            ReflectUtil.checkPackageAccess(className);
+             Class<?> c = Class.forName(className, true, null);
+             if (methodName != null) {
+                 Class[] types = getClassArray(args);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java ./jdk/src/share/classes/sun/swing/SwingUtilities2.java
+--- /tmp/openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java	2013-09-06 14:28:47.000000000 -0400
++++ ./jdk/src/share/classes/sun/swing/SwingUtilities2.java	2013-12-14 21:31:54.000000000 -0500
+@@ -1301,6 +1301,19 @@
+     }
+ 
+     /**
++     * Utility method that throws SecurityException if SecurityManager is set
++     * and modifiers are not public
++     *
++     * @param modifiers a set of modifiers
++     */
++    public static void checkAccess(int modifiers) {
++        if (System.getSecurityManager() != null
++                && !Modifier.isPublic(modifiers)) {
++            throw new SecurityException("Resource is not accessible");
++        }
++    }
++
++    /**
+      * Returns true if EventQueue.getCurrentEvent() has the permissions to
+      * access the system clipboard and if it is allowed gesture (if
+      * checkGesture true)
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/demo/jvmti/hprof/hprof_class.c ./jdk/src/share/demo/jvmti/hprof/hprof_class.c
+--- /tmp/openjdk/jdk/src/share/demo/jvmti/hprof/hprof_class.c	2013-09-06 14:28:55.000000000 -0400
++++ ./jdk/src/share/demo/jvmti/hprof/hprof_class.c	2013-12-14 21:14:10.000000000 -0500
+@@ -527,7 +527,12 @@
+     jmethodID  method;
+ 
+     info = get_info(index);
+-    HPROF_ASSERT(mnum < info->method_count);
++    if (mnum >= info->method_count) {
++        jclass newExcCls = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
++        (*env)->ThrowNew(env, newExcCls, "Illegal mnum");
++
++        return NULL;
++    }
+     method = info->method[mnum].method_id;
+     if ( method == NULL ) {
+         char * name;
+@@ -535,7 +540,12 @@
+         jclass clazz;
+ 
+         name  = (char *)string_get(info->method[mnum].name_index);
+-        HPROF_ASSERT(name!=NULL);
++        if (name==NULL) {
++            jclass newExcCls = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
++            (*env)->ThrowNew(env, newExcCls, "Name not found");
++
++            return NULL;
++        }
+         sig   = (char *)string_get(info->method[mnum].sig_index);
+         HPROF_ASSERT(sig!=NULL);
+         clazz = class_get_class(env, index);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/demo/jvmti/hprof/hprof_event.c ./jdk/src/share/demo/jvmti/hprof/hprof_event.c
+--- /tmp/openjdk/jdk/src/share/demo/jvmti/hprof/hprof_event.c	2013-09-06 14:28:55.000000000 -0400
++++ ./jdk/src/share/demo/jvmti/hprof/hprof_event.c	2013-12-14 21:14:10.000000000 -0500
+@@ -195,7 +195,12 @@
+ 
+     HPROF_ASSERT(env!=NULL);
+     HPROF_ASSERT(thread!=NULL);
+-    HPROF_ASSERT(cnum!=0 && cnum!=gdata->tracker_cnum);
++    if (cnum == 0 || cnum == gdata->tracker_cnum) {
++        jclass newExcCls = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
++        (*env)->ThrowNew(env, newExcCls, "Illegal cnum.");
++
++        return;
++    }
+ 
+     /* Prevent recursion into any BCI function for this thread (pstatus). */
+     if ( tls_get_tracker_status(env, thread, JNI_FALSE,
+@@ -204,8 +209,10 @@
+ 
+         (*pstatus) = 1;
+         method      = class_get_methodID(env, cnum, mnum);
+-        HPROF_ASSERT(method!=NULL);
+-        tls_push_method(tls_index, method);
++        if (method != NULL) {
++            tls_push_method(tls_index, method);
++        }
++
+         (*pstatus) = 0;
+     }
+ }
+@@ -248,7 +255,13 @@
+ 
+     HPROF_ASSERT(env!=NULL);
+     HPROF_ASSERT(thread!=NULL);
+-    HPROF_ASSERT(cnum!=0 && cnum!=gdata->tracker_cnum);
++
++    if (cnum == 0 || cnum == gdata->tracker_cnum) {
++        jclass newExcCls = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
++        (*env)->ThrowNew(env, newExcCls, "Illegal cnum.");
++
++        return;
++    }
+ 
+     /* Prevent recursion into any BCI function for this thread (pstatus). */
+     if ( tls_get_tracker_status(env, thread, JNI_FALSE,
+@@ -257,8 +270,10 @@
+ 
+         (*pstatus) = 1;
+         method      = class_get_methodID(env, cnum, mnum);
+-        HPROF_ASSERT(method!=NULL);
+-        tls_pop_method(tls_index, thread, method);
++        if (method != NULL) {
++            tls_pop_method(tls_index, thread, method);
++        }
++
+         (*pstatus) = 0;
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/lib/security/java.security-linux ./jdk/src/share/lib/security/java.security-linux
+--- /tmp/openjdk/jdk/src/share/lib/security/java.security-linux	2013-09-06 14:28:57.000000000 -0400
++++ ./jdk/src/share/lib/security/java.security-linux	2013-12-14 21:31:54.000000000 -0500
+@@ -129,6 +129,7 @@
+                com.sun.istack.internal.,\
+                com.sun.jmx.,\
+                com.sun.proxy.,\
++               com.sun.script.,\
+                com.sun.org.apache.bcel.internal.,\
+                com.sun.org.apache.regexp.internal.,\
+                com.sun.org.apache.xerces.internal.,\
+@@ -166,6 +167,7 @@
+                    com.sun.istack.internal.,\
+                    com.sun.jmx.,\
+                    com.sun.proxy.,\
++                   com.sun.script.,\
+                    com.sun.org.apache.bcel.internal.,\
+                    com.sun.org.apache.regexp.internal.,\
+                    com.sun.org.apache.xerces.internal.,\
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/lib/security/java.security-macosx ./jdk/src/share/lib/security/java.security-macosx
+--- /tmp/openjdk/jdk/src/share/lib/security/java.security-macosx	2013-09-06 14:28:57.000000000 -0400
++++ ./jdk/src/share/lib/security/java.security-macosx	2013-12-14 21:31:54.000000000 -0500
+@@ -130,6 +130,7 @@
+                com.sun.istack.internal.,\
+                com.sun.jmx.,\
+                com.sun.proxy.,\
++               com.sun.script.,\
+                com.sun.org.apache.bcel.internal.,\
+                com.sun.org.apache.regexp.internal.,\
+                com.sun.org.apache.xerces.internal.,\
+@@ -169,6 +170,7 @@
+                    com.sun.istack.internal.,\
+                    com.sun.jmx.,\
+                    com.sun.proxy.,\
++                   com.sun.script.,\
+                    com.sun.org.apache.bcel.internal.,\
+                    com.sun.org.apache.regexp.internal.,\
+                    com.sun.org.apache.xerces.internal.,\
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/lib/security/java.security-solaris ./jdk/src/share/lib/security/java.security-solaris
+--- /tmp/openjdk/jdk/src/share/lib/security/java.security-solaris	2013-09-06 14:28:57.000000000 -0400
++++ ./jdk/src/share/lib/security/java.security-solaris	2013-12-14 21:31:54.000000000 -0500
+@@ -131,6 +131,7 @@
+                com.sun.istack.internal.,\
+                com.sun.jmx.,\
+                com.sun.proxy.,\
++               com.sun.script.,\
+                com.sun.org.apache.bcel.internal.,\
+                com.sun.org.apache.regexp.internal.,\
+                com.sun.org.apache.xerces.internal.,\
+@@ -169,6 +170,7 @@
+                    com.sun.istack.internal.,\
+                    com.sun.jmx.,\
+                    com.sun.proxy.,\
++                   com.sun.script.,\
+                    com.sun.org.apache.bcel.internal.,\
+                    com.sun.org.apache.regexp.internal.,\
+                    com.sun.org.apache.xerces.internal.,\
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/lib/security/java.security-windows ./jdk/src/share/lib/security/java.security-windows
+--- /tmp/openjdk/jdk/src/share/lib/security/java.security-windows	2013-09-06 14:28:57.000000000 -0400
++++ ./jdk/src/share/lib/security/java.security-windows	2013-12-14 21:31:54.000000000 -0500
+@@ -130,6 +130,7 @@
+                com.sun.istack.internal.,\
+                com.sun.jmx.,\
+                com.sun.proxy.,\
++               com.sun.script.,\
+                com.sun.org.apache.bcel.internal.,\
+                com.sun.org.apache.regexp.internal.,\
+                com.sun.org.apache.xerces.internal.,\
+@@ -169,6 +170,7 @@
+                    com.sun.istack.internal.,\
+                    com.sun.jmx.,\
+                    com.sun.proxy.,\
++                   com.sun.script.,\
+                    com.sun.org.apache.bcel.internal.,\
+                    com.sun.org.apache.regexp.internal.,\
+                    com.sun.org.apache.xerces.internal.,\
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
+--- /tmp/openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp	2013-09-06 14:28:57.000000000 -0400
++++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp	2013-12-14 21:31:54.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2001, 2008, 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
+@@ -340,6 +340,10 @@
+   struct tm sbuf;
+   (void)memset((void*)&sbuf,0, sizeof(sbuf));
+   struct tm* s = gmtime_r(&t, &sbuf);
++  if (s == NULL) {
++    fprintf(u->errstrm, "Error: gmtime failure, invalid input archive\n");
++    exit(2);
++  }
+   modtime_cache = modtime;
+   dostime_cache = dostime(s->tm_year + 1900, s->tm_mon + 1, s->tm_mday,
+                           s->tm_hour, s->tm_min, s->tm_sec);
+@@ -384,7 +388,7 @@
+   }
+ 
+   deflated.empty();
+-  zs.next_out  = (uchar*) deflated.grow(len + (len/2));
++  zs.next_out  = (uchar*) deflated.grow(add_size(len, (len/2)));
+   zs.avail_out = (int)deflated.size();
+ 
+   zs.next_in = (uchar*)head.ptr;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/java/lang/Class.c ./jdk/src/share/native/java/lang/Class.c
+--- /tmp/openjdk/jdk/src/share/native/java/lang/Class.c	2013-09-06 14:28:58.000000000 -0400
++++ ./jdk/src/share/native/java/lang/Class.c	2013-12-14 21:14:11.000000000 -0500
+@@ -70,7 +70,7 @@
+     {"getProtectionDomain0", "()" PD,       (void *)&JVM_GetProtectionDomain},
+     {"setProtectionDomain0", "(" PD ")V",   (void *)&JVM_SetProtectionDomain},
+     {"getDeclaredClasses0",  "()[" CLS,      (void *)&JVM_GetDeclaredClasses},
+-    {"getDeclaringClass",   "()" CLS,      (void *)&JVM_GetDeclaringClass},
++    {"getDeclaringClass0",   "()" CLS,      (void *)&JVM_GetDeclaringClass},
+     {"getGenericSignature", "()" STR,       (void *)&JVM_GetClassSignature},
+     {"getRawAnnotations",      "()" BA,        (void *)&JVM_GetClassAnnotations},
+     {"getConstantPool",     "()" CPL,       (void *)&JVM_GetClassConstantPool},
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/java/net/Inet6Address.c ./jdk/src/share/native/java/net/Inet6Address.c
+--- /tmp/openjdk/jdk/src/share/native/java/net/Inet6Address.c	2013-09-06 14:28:58.000000000 -0400
++++ ./jdk/src/share/native/java/net/Inet6Address.c	2013-12-14 21:14:11.000000000 -0500
+@@ -33,6 +33,8 @@
+  */
+ 
+ jclass ia6_class;
++jfieldID ia6_holder6ID;
++
+ jfieldID ia6_ipaddressID;
+ jfieldID ia6_scopeidID;
+ jfieldID ia6_cachedscopeidID;
+@@ -48,21 +50,26 @@
+  */
+ JNIEXPORT void JNICALL
+ Java_java_net_Inet6Address_init(JNIEnv *env, jclass cls) {
++    jclass ia6h_class;
+     jclass c = (*env)->FindClass(env, "java/net/Inet6Address");
+     CHECK_NULL(c);
+     ia6_class = (*env)->NewGlobalRef(env, c);
+     CHECK_NULL(ia6_class);
+-    ia6_ipaddressID = (*env)->GetFieldID(env, ia6_class, "ipaddress", "[B");
++    ia6h_class = (*env)->FindClass(env, "java/net/Inet6Address$Inet6AddressHolder");
++    CHECK_NULL(ia6h_class);
++    ia6_holder6ID = (*env)->GetFieldID(env, ia6_class, "holder6", "Ljava/net/Inet6Address$Inet6AddressHolder;");
++    CHECK_NULL(ia6_holder6ID);
++    ia6_ipaddressID = (*env)->GetFieldID(env, ia6h_class, "ipaddress", "[B");
+     CHECK_NULL(ia6_ipaddressID);
+-    ia6_scopeidID = (*env)->GetFieldID(env, ia6_class, "scope_id", "I");
++    ia6_scopeidID = (*env)->GetFieldID(env, ia6h_class, "scope_id", "I");
+     CHECK_NULL(ia6_scopeidID);
+     ia6_cachedscopeidID = (*env)->GetFieldID(env, ia6_class, "cached_scope_id", "I");
+     CHECK_NULL(ia6_cachedscopeidID);
+-    ia6_scopeidsetID = (*env)->GetFieldID(env, ia6_class, "scope_id_set", "Z");
++    ia6_scopeidsetID = (*env)->GetFieldID(env, ia6h_class, "scope_id_set", "Z");
+     CHECK_NULL(ia6_scopeidID);
+-    ia6_scopeifnameID = (*env)->GetFieldID(env, ia6_class, "scope_ifname", "Ljava/net/NetworkInterface;");
++    ia6_scopeifnameID = (*env)->GetFieldID(env, ia6h_class, "scope_ifname", "Ljava/net/NetworkInterface;");
+     CHECK_NULL(ia6_scopeifnameID);
+-    ia6_scopeifnamesetID = (*env)->GetFieldID(env, ia6_class, "scope_ifname_set", "Z");
++    ia6_scopeifnamesetID = (*env)->GetFieldID(env, ia6h_class, "scope_ifname_set", "Z");
+     CHECK_NULL(ia6_scopeifnamesetID);
+     ia6_ctrID = (*env)->GetMethodID(env, ia6_class, "<init>", "()V");
+     CHECK_NULL(ia6_ctrID);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/java/net/net_util.c ./jdk/src/share/native/java/net/net_util.c
+--- /tmp/openjdk/jdk/src/share/native/java/net/net_util.c	2013-09-06 14:28:58.000000000 -0400
++++ ./jdk/src/share/native/java/net/net_util.c	2013-12-14 21:14:11.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 2012, 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
+@@ -94,6 +94,111 @@
+ extern jfieldID iac_addressID;
+ extern jfieldID iac_familyID;
+ 
++/**
++ * set_ methods return JNI_TRUE on success JNI_FALSE on error
++ * get_ methods that return +ve int return -1 on error
++ * get_ methods that return objects return NULL on error.
++ */
++jobject getInet6Address_scopeifname(JNIEnv *env, jobject iaObj) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, NULL);
++    return (*env)->GetObjectField(env, holder, ia6_scopeifnameID);
++}
++
++int setInet6Address_scopeifname(JNIEnv *env, jobject iaObj, jobject scopeifname) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, JNI_FALSE);
++    (*env)->SetObjectField(env, holder, ia6_scopeifnameID, scopeifname);
++    return JNI_TRUE;
++}
++
++int getInet6Address_scopeifname_set(JNIEnv *env, jobject iaObj) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, -1);
++    return (*env)->GetBooleanField(env, holder, ia6_scopeifnamesetID);
++}
++
++int setInet6Address_scopeifname_set(JNIEnv *env, jobject iaObj, int scopeifname_set) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, JNI_FALSE);
++    (*env)->SetBooleanField(env, holder, ia6_scopeifnamesetID, scopeifname_set);
++    return JNI_TRUE;
++}
++
++int getInet6Address_scopeid_set(JNIEnv *env, jobject iaObj) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, -1);
++    return (*env)->GetBooleanField(env, holder, ia6_scopeidsetID);
++}
++
++int getInet6Address_scopeid(JNIEnv *env, jobject iaObj) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, -1);
++    return (*env)->GetIntField(env, holder, ia6_scopeidID);
++}
++
++int setInet6Address_scopeid(JNIEnv *env, jobject iaObj, int scopeid) {
++    jobject holder;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, JNI_FALSE);
++    (*env)->SetIntField(env, holder, ia6_scopeidID, scopeid);
++    if (scopeid > 0) {
++            (*env)->SetBooleanField(env, holder, ia6_scopeidsetID, JNI_TRUE);
++    }
++    return JNI_TRUE;
++}
++
++
++int getInet6Address_ipaddress(JNIEnv *env, jobject iaObj, char *dest) {
++    jobject holder, addr;
++    jbyteArray barr;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, JNI_FALSE);
++    addr =  (*env)->GetObjectField(env, holder, ia6_ipaddressID);
++    CHECK_NULL_RETURN(addr, JNI_FALSE);
++    (*env)->GetByteArrayRegion(env, addr, 0, 16, (jbyte *)dest);
++    return JNI_TRUE;
++}
++
++int setInet6Address_ipaddress(JNIEnv *env, jobject iaObj, char *address) {
++    jobject holder;
++    jbyteArray addr;
++
++    initInetAddrs(env);
++    holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID);
++    CHECK_NULL_RETURN(holder, JNI_FALSE);
++    addr =  (jbyteArray)(*env)->GetObjectField(env, holder, ia6_ipaddressID);
++    if (addr == NULL) {
++        addr = (*env)->NewByteArray(env, 16);
++        CHECK_NULL_RETURN(addr, JNI_FALSE);
++        (*env)->SetObjectField(env, holder, ia6_ipaddressID, addr);
++    }
++    (*env)->SetByteArrayRegion(env, addr, 0, 16, (jbyte *)address);
++    return JNI_TRUE;
++}
++
+ void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) {
+     jobject holder;
+     initInetAddrs(env);
+@@ -168,6 +273,7 @@
+         } else {
+             static jclass inet6Cls = 0;
+             jint scope;
++            int ret;
+             if (inet6Cls == 0) {
+                 jclass c = (*env)->FindClass(env, "java/net/Inet6Address");
+                 CHECK_NULL_RETURN(c, NULL);
+@@ -177,18 +283,11 @@
+             }
+             iaObj = (*env)->NewObject(env, inet6Cls, ia6_ctrID);
+             CHECK_NULL_RETURN(iaObj, NULL);
+-            ipaddress = (*env)->NewByteArray(env, 16);
+-            CHECK_NULL_RETURN(ipaddress, NULL);
+-            (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
+-                                       (jbyte *)&(him6->sin6_addr));
+-
+-            (*env)->SetObjectField(env, iaObj, ia6_ipaddressID, ipaddress);
+-
++            ret = setInet6Address_ipaddress(env, iaObj, (char *)&(him6->sin6_addr));
++            CHECK_NULL_RETURN(ret, NULL);
+             setInetAddress_family(env, iaObj, IPv6);
+             scope = getScopeID(him);
+-            (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+-            if (scope > 0)
+-                (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
++            setInet6Address_scopeid(env, iaObj, scope);
+         }
+         *port = ntohs(him6->sin6_port);
+     } else
+@@ -248,9 +347,8 @@
+             if (family == AF_INET) {
+                 return JNI_FALSE;
+             }
+-            ipaddress = (*env)->GetObjectField(env, iaObj, ia6_ipaddressID);
+-            scope = (*env)->GetIntField(env, iaObj, ia6_scopeidID);
+-            (*env)->GetByteArrayRegion(env, ipaddress, 0, 16, caddrCur);
++            scope = getInet6Address_scopeid(env, iaObj);
++            getInet6Address_ipaddress(env, iaObj, (char *)caddrCur);
+             if (NET_IsEqual(caddrNew, caddrCur) && cmpScopeID(scope, him)) {
+                 return JNI_TRUE;
+             } else {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/java/net/net_util.h ./jdk/src/share/native/java/net/net_util.h
+--- /tmp/openjdk/jdk/src/share/native/java/net/net_util.h	2013-09-06 14:28:58.000000000 -0400
++++ ./jdk/src/share/native/java/net/net_util.h	2013-12-14 21:14:11.000000000 -0500
+@@ -58,6 +58,22 @@
+ extern jfieldID iac_hostNameID;
+ extern jfieldID ia_preferIPv6AddressID;
+ 
++/** (Inet6Address accessors)
++ * set_ methods return JNI_TRUE on success JNI_FALSE on error
++ * get_ methods that return int/boolean, return -1 on error
++ * get_ methods that return objects return NULL on error.
++ */
++extern jobject getInet6Address_scopeifname(JNIEnv *env, jobject ia6Obj);
++extern int setInet6Address_scopeifname(JNIEnv *env, jobject ia6Obj, jobject scopeifname);
++extern int getInet6Address_scopeifname_set(JNIEnv *env, jobject ia6Obj);
++extern int setInet6Address_scopeifname_set(JNIEnv *env, jobject ia6Obj,
++        int scopeifname_set);
++extern int getInet6Address_scopeid_set(JNIEnv *env, jobject ia6Obj);
++extern int getInet6Address_scopeid(JNIEnv *env, jobject ia6Obj);
++extern int setInet6Address_scopeid(JNIEnv *env, jobject ia6Obj, int scopeid);
++extern int getInet6Address_ipaddress(JNIEnv *env, jobject ia6Obj, char *dest);
++extern int setInet6Address_ipaddress(JNIEnv *env, jobject ia6Obj, char *address);
++
+ extern void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address);
+ extern void setInetAddress_family(JNIEnv *env, jobject iaObj, int family);
+ extern void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject h);
+@@ -93,6 +109,7 @@
+ 
+ /* Inet6Address fields */
+ extern jclass ia6_class;
++extern jfieldID ia6_holder6ID;
+ extern jfieldID ia6_ipaddressID;
+ extern jfieldID ia6_scopeidID;
+ extern jfieldID ia6_cachedscopeidID;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/awt/image/awt_parseImage.c ./jdk/src/share/native/sun/awt/image/awt_parseImage.c
+--- /tmp/openjdk/jdk/src/share/native/sun/awt/image/awt_parseImage.c	2013-09-06 14:28:59.000000000 -0400
++++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c	2013-12-14 21:14:11.000000000 -0500
+@@ -808,363 +808,204 @@
+     return 1;
+ }
+ 
+-/*
+- * This routine will fill in a buffer of data for either 1 band or all
+- * bands (if band == -1).
+- */
+ #define MAX_TO_GRAB (10240)
+ 
+-int awt_getPixelByte(JNIEnv *env, int band, RasterS_t *rasterP,
+-                     unsigned char *bufferP) {
+-    int w = rasterP->width;
+-    int h = rasterP->height;
+-    int numBands = rasterP->numBands;
++typedef union {
++    void *pv;
++    unsigned char *pb;
++    unsigned short *ps;
++} PixelData_t;
++
++
++int awt_getPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) {
++    const int w = rasterP->width;
++    const int h = rasterP->height;
++    const int numBands = rasterP->numBands;
+     int y;
+     int i;
+-    int maxLines = (h < MAX_TO_GRAB/w ? h : MAX_TO_GRAB/w);
++    int maxLines;
+     jobject jsm;
+-    int off;
++    int off = 0;
+     jarray jdata = NULL;
+     jobject jdatabuffer;
+     int *dataP;
+-    int maxBytes = w;
++    int maxSamples;
++    PixelData_t p;
+ 
+-    jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
+-    jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
+-                                         g_RasterDataBufferID);
+-    jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
+-    if (JNU_IsNull(env, jdata)) {
+-        JNU_ThrowOutOfMemoryError(env, "Out of Memory");
++    if (bufferP == NULL) {
+         return -1;
+     }
+ 
+-    /* Here is the generic code */
+-    if (band >= 0) {
+-        int dOff;
+-        if (band >= numBands) {
+-            (*env)->DeleteLocalRef(env, jdata);
+-            JNU_ThrowInternalError(env, "Band out of range.");
+-            return -1;
+-        }
+-        off = 0;
+-        for (y=0; y < h; ) {
+-            (*env)->CallObjectMethod(env, jsm, g_SMGetPixelsMID,
+-                                     0, y, w,
+-                                     maxLines, jdata, jdatabuffer);
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
+-            }
+-            dOff = band;
+-            for (i=0; i < maxBytes; i++, dOff += numBands) {
+-                bufferP[off++] = (unsigned char) dataP[dOff];
+-            }
++    if (rasterP->dataType != BYTE_DATA_TYPE &&
++        rasterP->dataType != SHORT_DATA_TYPE)
++    {
++        return -1;
++    }
+ 
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
++    p.pv = bufferP;
+ 
+-            if (y+maxLines < h) {
+-                y += maxLines;
+-            }
+-            else {
+-                y++;
+-                maxBytes = w;
+-            }
+-        }
++    if (!SAFE_TO_MULT(w, numBands)) {
++        return -1;
+     }
+-    else {
+-        off = 0;
+-        maxBytes *= numBands;
+-        for (y=0; y < h; ) {
+-            (*env)->CallObjectMethod(env, jsm, g_SMGetPixelsMID,
+-                                     0, y, w,
+-                                     maxLines, jdata, jdatabuffer);
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
+-            }
+-            for (i=0; i < maxBytes; i++) {
+-                bufferP[off++] = (unsigned char) dataP[i];
+-            }
++    maxSamples = w * numBands;
+ 
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
+-
+-            if (y+maxLines < h) {
+-                y += maxLines;
+-            }
+-            else {
+-                y++;
+-                maxBytes = w*numBands;
+-            }
+-        }
++    maxLines = maxSamples > MAX_TO_GRAB ? 1 : (MAX_TO_GRAB / maxSamples);
++    if (maxLines > h) {
++        maxLines = h;
++    }
+ 
++    if (!SAFE_TO_MULT(maxSamples, maxLines)) {
++        return -1;
+     }
+-    (*env)->DeleteLocalRef(env, jdata);
+ 
+-    return 0;
+-}
+-int awt_setPixelByte(JNIEnv *env, int band, RasterS_t *rasterP,
+-                     unsigned char *bufferP) {
+-    int w = rasterP->width;
+-    int h = rasterP->height;
+-    int numBands = rasterP->numBands;
+-    int y;
+-    int i;
+-    int maxLines = (h < MAX_TO_GRAB/w ? h : MAX_TO_GRAB/w);
+-    jobject jsm;
+-    int off;
+-    jarray jdata = NULL;
+-    jobject jdatabuffer;
+-    int *dataP;
+-    int maxBytes = w;
++    maxSamples *= maxLines;
+ 
+     jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
+     jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
+                                          g_RasterDataBufferID);
+-    /* Here is the generic code */
+-    jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
++
++    jdata = (*env)->NewIntArray(env, maxSamples);
+     if (JNU_IsNull(env, jdata)) {
+         JNU_ThrowOutOfMemoryError(env, "Out of Memory");
+         return -1;
+     }
+-    if (band >= 0) {
+-        int dOff;
+-        if (band >= numBands) {
++
++    for (y = 0; y < h; y += maxLines) {
++        if (y + maxLines > h) {
++            maxLines = h - y;
++            maxSamples = w * numBands * maxLines;
++        }
++
++        (*env)->CallObjectMethod(env, jsm, g_SMGetPixelsMID,
++                                 0, y, w,
++                                 maxLines, jdata, jdatabuffer);
++
++        if ((*env)->ExceptionOccurred(env)) {
+             (*env)->DeleteLocalRef(env, jdata);
+-            JNU_ThrowInternalError(env, "Band out of range.");
+             return -1;
+         }
+-        off = 0;
+-        for (y=0; y < h; y+=maxLines) {
+-            if (y+maxLines > h) {
+-                maxBytes = w*numBands;
+-                maxLines = h - y;
+-            }
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
+-            }
+-            dOff = band;
+-            for (i=0; i < maxBytes; i++, dOff += numBands) {
+-                dataP[dOff] = bufferP[off++];
+-            }
+-
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
+ 
+-            (*env)->CallVoidMethod(env, jsm, g_SMSetPixelsMID,
+-                                   0, y, w,
+-                                   maxLines, jdata, jdatabuffer);
++        dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
++                                                          NULL);
++        if (dataP == NULL) {
++            (*env)->DeleteLocalRef(env, jdata);
++            return -1;
+         }
+-    }
+-    else {
+-        off = 0;
+-        maxBytes *= numBands;
+-        for (y=0; y < h; y+=maxLines) {
+-            if (y+maxLines > h) {
+-                maxBytes = w*numBands;
+-                maxLines = h - y;
+-            }
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
++
++        switch (rasterP->dataType) {
++        case BYTE_DATA_TYPE:
++            for (i = 0; i < maxSamples; i ++) {
++                p.pb[off++] = (unsigned char) dataP[i];
+             }
+-            for (i=0; i < maxBytes; i++) {
+-                dataP[i] = bufferP[off++];
++            break;
++        case SHORT_DATA_TYPE:
++            for (i = 0; i < maxSamples; i ++) {
++                p.ps[off++] = (unsigned short) dataP[i];
+             }
+-
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
+-
+-            (*env)->CallVoidMethod(env, jsm, g_SMSetPixelsMID,
+-                                     0, y, w,
+-                                     maxLines, jdata, jdatabuffer);
++            break;
+         }
+ 
++        (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
++                                              JNI_ABORT);
+     }
+-
+     (*env)->DeleteLocalRef(env, jdata);
+ 
+-    return 0;
++    return 1;
+ }
+-int awt_getPixelShort(JNIEnv *env, int band, RasterS_t *rasterP,
+-                     unsigned short *bufferP) {
+-    int w = rasterP->width;
+-    int h = rasterP->height;
+-    int numBands = rasterP->numBands;
++
++int awt_setPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP) {
++    const int w = rasterP->width;
++    const int h = rasterP->height;
++    const int numBands = rasterP->numBands;
++
+     int y;
+     int i;
+-    int maxLines = (h < MAX_TO_GRAB/w ? h : MAX_TO_GRAB/w);
++    int maxLines;
+     jobject jsm;
+-    int off;
++    int off = 0;
+     jarray jdata = NULL;
+     jobject jdatabuffer;
+     int *dataP;
+-    int maxBytes = w*maxLines;
++    int maxSamples;
++    PixelData_t p;
+ 
+-    jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
+-    jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
+-                                         g_RasterDataBufferID);
+-    jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
+-    if (JNU_IsNull(env, jdata)) {
+-        JNU_ThrowOutOfMemoryError(env, "Out of Memory");
++    if (bufferP == NULL) {
+         return -1;
+     }
+-    /* Here is the generic code */
+-    if (band >= 0) {
+-        int dOff;
+-        if (band >= numBands) {
+-            (*env)->DeleteLocalRef(env, jdata);
+-            JNU_ThrowInternalError(env, "Band out of range.");
+-            return -1;
+-        }
+-        off = 0;
+-        for (y=0; y < h; y += maxLines) {
+-            if (y+maxLines > h) {
+-                maxBytes = w*numBands;
+-                maxLines = h - y;
+-            }
+-            (*env)->CallObjectMethod(env, jsm, g_SMGetPixelsMID,
+-                                     0, y, w,
+-                                     maxLines, jdata, jdatabuffer);
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
+-            }
+ 
+-            dOff = band;
+-            for (i=0; i < maxBytes; i++, dOff += numBands) {
+-                bufferP[off++] = (unsigned short) dataP[dOff];
+-            }
++    if (rasterP->dataType != BYTE_DATA_TYPE &&
++        rasterP->dataType != SHORT_DATA_TYPE)
++    {
++        return -1;
++    }
+ 
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
+-        }
++    p.pv = bufferP;
++
++    if (!SAFE_TO_MULT(w, numBands)) {
++        return -1;
+     }
+-    else {
+-        off = 0;
+-        maxBytes *= numBands;
+-        for (y=0; y < h; y+=maxLines) {
+-            if (y+maxLines > h) {
+-                maxBytes = w*numBands;
+-                maxLines = h - y;
+-            }
+-            (*env)->CallObjectMethod(env, jsm, g_SMGetPixelsMID,
+-                                     0, y, w,
+-                                     maxLines, jdata, jdatabuffer);
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
+-            }
+-            for (i=0; i < maxBytes; i++) {
+-                bufferP[off++] = (unsigned short) dataP[i];
+-            }
++    maxSamples = w * numBands;
+ 
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
+-        }
++    maxLines = maxSamples > MAX_TO_GRAB ? 1 : (MAX_TO_GRAB / maxSamples);
++    if (maxLines > h) {
++        maxLines = h;
++    }
+ 
++    if (!SAFE_TO_MULT(maxSamples, maxLines)) {
++        return -1;
+     }
+ 
+-    (*env)->DeleteLocalRef(env, jdata);
+-    return 0;
+-}
+-int awt_setPixelShort(JNIEnv *env, int band, RasterS_t *rasterP,
+-                      unsigned short *bufferP) {
+-    int w = rasterP->width;
+-    int h = rasterP->height;
+-    int numBands = rasterP->numBands;
+-    int y;
+-    int i;
+-    int maxLines = (h < MAX_TO_GRAB/w ? h : MAX_TO_GRAB/w);
+-    jobject jsm;
+-    int off;
+-    jarray jdata = NULL;
+-    jobject jdatabuffer;
+-    int *dataP;
+-    int maxBytes = w;
++    maxSamples *= maxLines;
+ 
+     jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
+     jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
+                                          g_RasterDataBufferID);
+-    if (band >= numBands) {
+-        JNU_ThrowInternalError(env, "Band out of range.");
+-        return -1;
+-    }
+-    /* Here is the generic code */
+-    jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
++
++    jdata = (*env)->NewIntArray(env, maxSamples);
+     if (JNU_IsNull(env, jdata)) {
+         JNU_ThrowOutOfMemoryError(env, "Out of Memory");
+         return -1;
+     }
+-    if (band >= 0) {
+-        int dOff;
+-        off = 0;
+-        for (y=0; y < h; y+=maxLines) {
+-            if (y+maxLines > h) {
+-                maxBytes = w*numBands;
+-                maxLines = h - y;
+-            }
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
+-            }
+-            dOff = band;
+-            for (i=0; i < maxBytes; i++, dOff += numBands) {
+-                dataP[dOff] = bufferP[off++];
+-            }
+-
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
+ 
+-            (*env)->CallVoidMethod(env, jsm, g_SMSetPixelsMID,
+-                                   0, y, w,
+-                                   maxLines, jdata, jdatabuffer);
++    for (y = 0; y < h; y += maxLines) {
++        if (y + maxLines > h) {
++            maxLines = h - y;
++            maxSamples = w * numBands * maxLines;
++        }
++        dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
++                                                          NULL);
++        if (dataP == NULL) {
++            (*env)->DeleteLocalRef(env, jdata);
++            return -1;
+         }
+-    }
+-    else {
+-        off = 0;
+-        maxBytes *= numBands;
+-        for (y=0; y < h; y+=maxLines) {
+-            if (y+maxLines > h) {
+-                maxBytes = w*numBands;
+-                maxLines = h - y;
+-            }
+-            dataP = (int *) (*env)->GetPrimitiveArrayCritical(env, jdata,
+-                                                              NULL);
+-            if (dataP == NULL) {
+-                (*env)->DeleteLocalRef(env, jdata);
+-                return -1;
++
++        switch (rasterP->dataType) {
++        case BYTE_DATA_TYPE:
++            for (i = 0; i < maxSamples; i ++) {
++                dataP[i] = p.pb[off++];
+             }
+-            for (i=0; i < maxBytes; i++) {
+-                dataP[i] = bufferP[off++];
++            break;
++        case SHORT_DATA_TYPE:
++            for (i = 0; i < maxSamples; i ++) {
++                dataP[i] = p.ps[off++];
+             }
++            break;
++        }
+ 
+-            (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
+-                                                  JNI_ABORT);
++        (*env)->ReleasePrimitiveArrayCritical(env, jdata, dataP,
++                                              JNI_ABORT);
+ 
+-            (*env)->CallVoidMethod(env, jsm, g_SMSetPixelsMID,
+-                                   0, y, w,
+-                                   maxLines, jdata, jdatabuffer);
+-        }
++        (*env)->CallVoidMethod(env, jsm, g_SMSetPixelsMID,
++                               0, y, w,
++                               maxLines, jdata, jdatabuffer);
+ 
++        if ((*env)->ExceptionOccurred(env)) {
++            (*env)->DeleteLocalRef(env, jdata);
++            return -1;
++        }
+     }
+ 
+     (*env)->DeleteLocalRef(env, jdata);
+-    return 0;
++
++    return 1;
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/awt/image/awt_parseImage.h ./jdk/src/share/native/sun/awt/image/awt_parseImage.h
+--- /tmp/openjdk/jdk/src/share/native/sun/awt/image/awt_parseImage.h	2013-09-06 14:28:59.000000000 -0400
++++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.h	2013-12-14 21:14:11.000000000 -0500
+@@ -188,13 +188,8 @@
+ 
+ void awt_freeParsedImage(BufImageS_t *imageP, int freeImageP);
+ 
+-int awt_getPixelByte(JNIEnv *env, int band, RasterS_t *rasterP,
+-                     unsigned char *bufferP);
+-int awt_setPixelByte(JNIEnv *env, int band, RasterS_t *rasterP,
+-                     unsigned char *bufferP);
+-int awt_getPixelShort(JNIEnv *env, int band, RasterS_t *rasterP,
+-                     unsigned short *bufferP);
+-int awt_setPixelShort(JNIEnv *env, int band, RasterS_t *rasterP,
+-                      unsigned short *bufferP);
++int awt_getPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP);
++
++int awt_setPixels(JNIEnv *env, RasterS_t *rasterP, void *bufferP);
+ 
+ #endif /* AWT_PARSE_IMAGE_H */
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c ./jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c
+--- /tmp/openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2013-09-06 14:28:59.000000000 -0400
++++ ./jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2013-12-14 21:14:11.000000000 -0500
+@@ -930,9 +930,10 @@
+      * Now fill a complete buffer, or as much of one as the stream
+      * will give us if we are near the end.
+      */
++    RELEASE_ARRAYS(env, data, src->next_input_byte);
++
+     GET_IO_REF(input);
+ 
+-    RELEASE_ARRAYS(env, data, src->next_input_byte);
+     ret = (*env)->CallIntMethod(env,
+                                 input,
+                                 JPEGImageReader_readInputDataID,
+@@ -1017,9 +1018,11 @@
+         memcpy(sb->buf, src->next_input_byte, offset);
+     }
+ 
+-    GET_IO_REF(input);
+ 
+     RELEASE_ARRAYS(env, data, src->next_input_byte);
++
++    GET_IO_REF(input);
++
+     buflen = sb->bufferLength - offset;
+     if (buflen <= 0) {
+         if (!GET_ARRAYS(env, data, &(src->next_input_byte))) {
+@@ -1121,9 +1124,10 @@
+         return;
+     }
+ 
++    RELEASE_ARRAYS(env, data, src->next_input_byte);
++
+     GET_IO_REF(input);
+ 
+-    RELEASE_ARRAYS(env, data, src->next_input_byte);
+     ret = (*env)->CallLongMethod(env,
+                                  input,
+                                  JPEGImageReader_skipInputBytesID,
+@@ -2306,10 +2310,10 @@
+     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+     jobject output = NULL;
+ 
+-    GET_IO_REF(output);
+-
+     RELEASE_ARRAYS(env, data, (const JOCTET *)(dest->next_output_byte));
+ 
++    GET_IO_REF(output);
++
+     (*env)->CallVoidMethod(env,
+                            output,
+                            JPEGImageWriter_writeOutputDataID,
+@@ -2348,10 +2352,10 @@
+     if (datacount != 0) {
+         jobject output = NULL;
+ 
+-        GET_IO_REF(output);
+-
+         RELEASE_ARRAYS(env, data, (const JOCTET *)(dest->next_output_byte));
+ 
++        GET_IO_REF(output);
++
+         (*env)->CallVoidMethod(env,
+                                output,
+                                JPEGImageWriter_writeOutputDataID,
+@@ -2702,6 +2706,15 @@
+     bandSize = (*env)->GetIntArrayElements(env, bandSizes, NULL);
+ 
+     for (i = 0; i < numBands; i++) {
++        if (bandSize[i] <= 0 || bandSize[i] > JPEG_BAND_SIZE) {
++            (*env)->ReleaseIntArrayElements(env, bandSizes,
++                                            bandSize, JNI_ABORT);
++            JNU_ThrowByName(env, "javax/imageio/IIOException", "Invalid Image");
++            return JNI_FALSE;;
++        }
++    }
++
++    for (i = 0; i < numBands; i++) {
+         if (bandSize[i] != JPEG_BAND_SIZE) {
+             if (scale == NULL) {
+                 scale = (UINT8**) calloc(numBands, sizeof(UINT8*));
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c
+--- /tmp/openjdk/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	2013-09-06 14:29:00.000000000 -0400
++++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	2013-12-14 21:14:12.000000000 -0500
+@@ -700,22 +700,7 @@
+ 
+     /* Means that we couldn't write directly into the destination buffer */
+     if (ddata == NULL) {
+-        unsigned char *bdataP;
+-        unsigned short *sdataP;
+-
+-        /* Punt for now */
+-        switch (dstRasterP->dataType) {
+-        case BYTE_DATA_TYPE:
+-            bdataP  = (unsigned char *) mlib_ImageGetData(dst);
+-            retStatus = (awt_setPixelByte(env, -1, dstRasterP, bdataP) >= 0) ;
+-            break;
+-        case SHORT_DATA_TYPE:
+-            sdataP  = (unsigned short *) mlib_ImageGetData(dst);
+-            retStatus = (awt_setPixelShort(env, -1, dstRasterP, sdataP) >= 0) ;
+-            break;
+-        default:
+-            retStatus = 0;
+-        }
++        retStatus = awt_setPixels(env, dstRasterP, mlib_ImageGetData(dst));
+     }
+ 
+     /* Release the pinned memory */
+@@ -1119,24 +1104,9 @@
+ 
+     /* Means that we couldn't write directly into the destination buffer */
+     if (ddata == NULL) {
+-        unsigned char *bdataP;
+-        unsigned short *sdataP;
+-
+         /* Need to store it back into the array */
+         if (storeRasterArray(env, srcRasterP, dstRasterP, dst) < 0) {
+-            /* Punt for now */
+-            switch (dst->type) {
+-            case MLIB_BYTE:
+-                bdataP  = (unsigned char *) mlib_ImageGetData(dst);
+-                retStatus = (awt_setPixelByte(env, -1, dstRasterP, bdataP) >= 0) ;
+-                break;
+-            case MLIB_SHORT:
+-                sdataP  = (unsigned short *) mlib_ImageGetData(dst);
+-                retStatus = (awt_setPixelShort(env, -1, dstRasterP, sdataP) >= 0) ;
+-                break;
+-            default:
+-                retStatus = 0;
+-            }
++            retStatus = awt_setPixels(env, dstRasterP, mlib_ImageGetData(dst));
+         }
+     }
+ 
+@@ -1704,21 +1674,7 @@
+      * the destination buffer
+      */
+     if (ddata == NULL) {
+-        unsigned char*  bdataP;
+-        unsigned short* sdataP;
+-
+-        switch (dstRasterP->dataType) {
+-          case BYTE_DATA_TYPE:
+-            bdataP  = (unsigned char *) mlib_ImageGetData(dst);
+-            retStatus = (awt_setPixelByte(env, -1, dstRasterP, bdataP) >= 0) ;
+-            break;
+-          case SHORT_DATA_TYPE:
+-            sdataP  = (unsigned short *) mlib_ImageGetData(dst);
+-            retStatus = (awt_setPixelShort(env, -1, dstRasterP, sdataP) >= 0) ;
+-            break;
+-          default:
+-            retStatus = 0;
+-        }
++        retStatus = awt_setPixels(env, dstRasterP, mlib_ImageGetData(dst));
+     }
+ 
+     /* Release the LUT */
+@@ -2029,21 +1985,25 @@
+     return 0;
+ }
+ 
++#define NUM_LINES    10
++
+ static int
+ cvtCustomToDefault(JNIEnv *env, BufImageS_t *imageP, int component,
+                    unsigned char *dataP) {
+-    ColorModelS_t *cmP = &imageP->cmodel;
+-    RasterS_t *rasterP = &imageP->raster;
++    const RasterS_t *rasterP = &imageP->raster;
++    const int w = rasterP->width;
++    const int h = rasterP->height;
++
+     int y;
+-    jobject jpixels = NULL;
++    jintArray jpixels = NULL;
+     jint *pixels;
+     unsigned char *dP = dataP;
+-#define NUM_LINES    10
+-    int numLines = NUM_LINES;
++    int numLines = h > NUM_LINES ? NUM_LINES : h;
++
+     /* it is safe to calculate the scan length, because width has been verified
+      * on creation of the mlib image
+      */
+-    int scanLength = rasterP->width * 4;
++    const int scanLength = w * 4;
+ 
+     int nbytes = 0;
+     if (!SAFE_TO_MULT(numLines, scanLength)) {
+@@ -2052,42 +2012,70 @@
+ 
+     nbytes = numLines * scanLength;
+ 
+-    for (y=0; y < rasterP->height; y+=numLines) {
+-        /* getData, one scanline at a time */
+-        if (y+numLines > rasterP->height) {
+-            numLines = rasterP->height - y;
++    jpixels = (*env)->NewIntArray(env, nbytes);
++    if (JNU_IsNull(env, jpixels)) {
++        JNU_ThrowOutOfMemoryError(env, "Out of Memory");
++        return -1;
++    }
++
++    for (y = 0; y < h; y += numLines) {
++        if (y + numLines > h) {
++            numLines = h - y;
+             nbytes = numLines * scanLength;
+         }
+-        jpixels = (*env)->CallObjectMethod(env, imageP->jimage,
+-                                           g_BImgGetRGBMID, 0, y,
+-                                           rasterP->width, numLines,
+-                                           jpixels,0, rasterP->width);
+-        if (jpixels == NULL) {
+-            JNU_ThrowInternalError(env, "Can't retrieve pixels.");
++
++        (*env)->CallObjectMethod(env, imageP->jimage,
++                                 g_BImgGetRGBMID, 0, y,
++                                 w, numLines,
++                                 jpixels, 0, w);
++        if ((*env)->ExceptionOccurred(env)) {
++            (*env)->DeleteLocalRef(env, jpixels);
+             return -1;
+         }
+ 
+         pixels = (*env)->GetPrimitiveArrayCritical(env, jpixels, NULL);
++        if (pixels == NULL) {
++            (*env)->DeleteLocalRef(env, jpixels);
++            return -1;
++        }
++
+         memcpy(dP, pixels, nbytes);
+         dP += nbytes;
++
+         (*env)->ReleasePrimitiveArrayCritical(env, jpixels, pixels,
+                                               JNI_ABORT);
+     }
++
++    /* Need to release the array */
++    (*env)->DeleteLocalRef(env, jpixels);
++
+     return 0;
+ }
+ 
+ static int
+ cvtDefaultToCustom(JNIEnv *env, BufImageS_t *imageP, int component,
+                    unsigned char *dataP) {
+-    ColorModelS_t *cmP = &imageP->cmodel;
+-    RasterS_t *rasterP = &imageP->raster;
++    const RasterS_t *rasterP = &imageP->raster;
++    const int w = rasterP->width;
++    const int h = rasterP->height;
++
+     int y;
++    jintArray jpixels = NULL;
+     jint *pixels;
+     unsigned char *dP = dataP;
+-#define NUM_LINES    10
+-    int numLines = NUM_LINES;
+-    int nbytes = rasterP->width*4*NUM_LINES;
+-    jintArray jpixels;
++    int numLines = h > NUM_LINES ? NUM_LINES : h;
++
++    /* it is safe to calculate the scan length, because width has been verified
++     * on creation of the mlib image
++     */
++    const int scanLength = w * 4;
++
++    int nbytes = 0;
++    if (!SAFE_TO_MULT(numLines, scanLength)) {
++        return -1;
++    }
++
++    nbytes = numLines * scanLength;
+ 
+     jpixels = (*env)->NewIntArray(env, nbytes);
+     if (JNU_IsNull(env, jpixels)) {
+@@ -2095,14 +2083,15 @@
+         return -1;
+     }
+ 
+-    for (y=0; y < rasterP->height; y+=NUM_LINES) {
+-        if (y+numLines > rasterP->height) {
+-            numLines = rasterP->height - y;
+-            nbytes = rasterP->width*4*numLines;
++    for (y = 0; y < h; y += numLines) {
++        if (y + numLines > h) {
++            numLines = h - y;
++            nbytes = numLines * scanLength;
+         }
++
+         pixels = (*env)->GetPrimitiveArrayCritical(env, jpixels, NULL);
+         if (pixels == NULL) {
+-            /* JNI error */
++            (*env)->DeleteLocalRef(env, jpixels);
+             return -1;
+         }
+ 
+@@ -2111,12 +2100,11 @@
+ 
+        (*env)->ReleasePrimitiveArrayCritical(env, jpixels, pixels, 0);
+ 
+-       /* setData, one scanline at a time */
+-       /* Fix 4223648, 4184283 */
+        (*env)->CallVoidMethod(env, imageP->jimage, g_BImgSetRGBMID, 0, y,
+-                                rasterP->width, numLines, jpixels, 0,
+-                                rasterP->width);
++                                w, numLines, jpixels,
++                                0, w);
+        if ((*env)->ExceptionOccurred(env)) {
++           (*env)->DeleteLocalRef(env, jpixels);
+            return -1;
+        }
+     }
+@@ -2298,7 +2286,6 @@
+                     mlib_image **mlibImagePP, void **dataPP, int isSrc) {
+     void *dataP;
+     unsigned char *cDataP;
+-    unsigned short *sdataP;
+     int dataType = BYTE_DATA_TYPE;
+     int width;
+     int height;
+@@ -2484,8 +2471,7 @@
+             return -1;
+         }
+         if (isSrc) {
+-            cDataP  = (unsigned char *) mlib_ImageGetData(*mlibImagePP);
+-            if (awt_getPixelByte(env, -1, rasterP, cDataP) < 0) {
++            if (awt_getPixels(env, rasterP, mlib_ImageGetData(*mlibImagePP)) < 0) {
+                 (*sMlibSysFns.deleteImageFP)(*mlibImagePP);
+                 return -1;
+             }
+@@ -2499,8 +2485,7 @@
+             return -1;
+         }
+         if (isSrc) {
+-            sdataP  = (unsigned short *) mlib_ImageGetData(*mlibImagePP);
+-            if (awt_getPixelShort(env, -1, rasterP, sdataP) < 0) {
++            if (awt_getPixels(env, rasterP, mlib_ImageGetData(*mlibImagePP)) < 0) {
+                 (*sMlibSysFns.deleteImageFP)(*mlibImagePP);
+                 return -1;
+             }
+@@ -2550,60 +2535,6 @@
+     }
+ }
+ 
+-static int
+-storeDstArray(JNIEnv *env,  BufImageS_t *srcP, BufImageS_t *dstP,
+-              mlibHintS_t *hintP, mlib_image *mlibImP, void *ddata) {
+-    RasterS_t *rasterP = &dstP->raster;
+-
+-    /* Nothing to do since it is the same image type */
+-    if (srcP->imageType == dstP->imageType
+-        && srcP->imageType != java_awt_image_BufferedImage_TYPE_CUSTOM
+-        && srcP->imageType != java_awt_image_BufferedImage_TYPE_BYTE_INDEXED
+-        && srcP->imageType != java_awt_image_BufferedImage_TYPE_BYTE_BINARY) {
+-        /* REMIND: Should check the ICM LUTS to see if it is the same */
+-        return 0;
+-    }
+-
+-    /* These types are compatible with TYPE_INT_RGB */
+-    if (srcP->imageType == java_awt_image_BufferedImage_TYPE_INT_RGB
+-        && (dstP->imageType == java_awt_image_BufferedImage_TYPE_INT_ARGB ||
+-           dstP->imageType == java_awt_image_BufferedImage_TYPE_INT_ARGB_PRE)){
+-        return 0;
+-    }
+-
+-    if (hintP->cvtSrcToDefault &&
+-        (srcP->cmodel.isAlphaPre == dstP->cmodel.isAlphaPre)) {
+-        if (srcP->cmodel.isAlphaPre) {
+-            if (dstP->imageType ==
+-                java_awt_image_BufferedImage_TYPE_INT_ARGB_PRE)
+-            {
+-                return 0;
+-            }
+-            if (!srcP->cmodel.supportsAlpha &&
+-                dstP->imageType == java_awt_image_BufferedImage_TYPE_INT_RGB){
+-                return 0;
+-            }
+-        }
+-        else {
+-            /* REMIND: */
+-        }
+-    }
+-
+-    if (dstP->cmodel.cmType == DIRECT_CM_TYPE) {
+-        /* Just need to move bits */
+-        if (mlibImP->type == MLIB_BYTE) {
+-            return awt_setPixelByte(env, -1, &dstP->raster,
+-                                    (unsigned char *) mlibImP->data);
+-        }
+-        else if (mlibImP->type == MLIB_SHORT) {
+-            return awt_setPixelByte(env, -1, &dstP->raster,
+-                                    (unsigned char *) mlibImP->data);
+-        }
+-    }
+-
+-    return 0;
+-}
+-
+ #define ERR_BAD_IMAGE_LAYOUT (-2)
+ 
+ #define CHECK_DST_ARRAY(start_offset, elements_per_scan, elements_per_pixel) \
+@@ -2709,8 +2640,7 @@
+             }
+         }
+         else if (mlibImP->type == MLIB_SHORT) {
+-            return awt_setPixelShort(env, -1, rasterP,
+-                                    (unsigned short *) mlibImP->data);
++            return awt_setPixels(env, rasterP, mlibImP->data);
+         }
+     }
+     else {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/font/layout/GlyphIterator.cpp ./jdk/src/share/native/sun/font/layout/GlyphIterator.cpp
+--- /tmp/openjdk/jdk/src/share/native/sun/font/layout/GlyphIterator.cpp	2013-09-06 14:29:01.000000000 -0400
++++ ./jdk/src/share/native/sun/font/layout/GlyphIterator.cpp	2013-12-14 21:14:12.000000000 -0500
+@@ -66,6 +66,7 @@
+         nextLimit = -1;
+         prevLimit = glyphCount;
+     }
++    filterResetCache();
+ }
+ 
+ GlyphIterator::GlyphIterator(GlyphIterator &that)
+@@ -84,6 +85,7 @@
+     glyphGroup  = that.glyphGroup;
+     glyphClassDefinitionTable = that.glyphClassDefinitionTable;
+     markAttachClassDefinitionTable = that.markAttachClassDefinitionTable;
++    filterResetCache();
+ }
+ 
+ GlyphIterator::GlyphIterator(GlyphIterator &that, FeatureMask newFeatureMask)
+@@ -102,6 +104,7 @@
+     glyphGroup  = 0;
+     glyphClassDefinitionTable = that.glyphClassDefinitionTable;
+     markAttachClassDefinitionTable = that.markAttachClassDefinitionTable;
++    filterResetCache();
+ }
+ 
+ GlyphIterator::GlyphIterator(GlyphIterator &that, le_uint16 newLookupFlags)
+@@ -120,6 +123,7 @@
+     glyphGroup  = that.glyphGroup;
+     glyphClassDefinitionTable = that.glyphClassDefinitionTable;
+     markAttachClassDefinitionTable = that.markAttachClassDefinitionTable;
++    filterResetCache();
+ }
+ 
+ GlyphIterator::~GlyphIterator()
+@@ -133,6 +137,7 @@
+     featureMask  = newFeatureMask;
+     glyphGroup   = 0;
+     lookupFlags  = newLookupFlags;
++    filterResetCache();
+ }
+ 
+ LEGlyphID *GlyphIterator::insertGlyphs(le_int32 count, LEErrorCode& success)
+@@ -381,53 +386,68 @@
+     glyphPositionAdjustments->setCursiveGlyph(position, baselineIsLogicalEnd());
+ }
+ 
+-le_bool GlyphIterator::filterGlyph(le_uint32 index) const
++void GlyphIterator::filterResetCache(void) {
++  filterCacheValid = FALSE;
++    }
++
++le_bool GlyphIterator::filterGlyph(le_uint32 index)
+ {
+-    LEErrorCode success = LE_NO_ERROR;
+     LEGlyphID glyphID = glyphStorage[index];
+-    le_int32 glyphClass = gcdNoGlyphClass;
+ 
+-    if (LE_GET_GLYPH(glyphID) >= 0xFFFE) {
+-        return TRUE;
+-    }
++    if (!filterCacheValid || filterCache.id != glyphID) {
++      filterCache.id = glyphID;
+ 
++      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) {
++        filterResult = TRUE;
++      } else {
++        LEErrorCode success = LE_NO_ERROR;
++        le_int32 glyphClass = gcdNoGlyphClass;
+     if (glyphClassDefinitionTable.isValid()) {
+       glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphClassDefinitionTable, glyphID, success);
+     }
+-
+-    switch (glyphClass)
+-    {
++        switch (glyphClass) {
+     case gcdNoGlyphClass:
+-        return FALSE;
++          filterResult = FALSE;
++          break;
+ 
+     case gcdSimpleGlyph:
+-        return (lookupFlags & lfIgnoreBaseGlyphs) != 0;
++          filterResult = (lookupFlags & lfIgnoreBaseGlyphs) != 0;
++          break;
+ 
+     case gcdLigatureGlyph:
+-        return (lookupFlags & lfIgnoreLigatures) != 0;
++          filterResult = (lookupFlags & lfIgnoreLigatures) != 0;
++          break;
+ 
+     case gcdMarkGlyph:
+-    {
+         if ((lookupFlags & lfIgnoreMarks) != 0) {
+-            return TRUE;
+-        }
+-
++            filterResult = TRUE;
++          } else {
+         le_uint16 markAttachType = (lookupFlags & lfMarkAttachTypeMask) >> lfMarkAttachTypeShift;
+ 
+         if ((markAttachType != 0) && (markAttachClassDefinitionTable.isValid())) {
+-          return markAttachClassDefinitionTable
+-            -> getGlyphClass(markAttachClassDefinitionTable, glyphID, success) != markAttachType;
++              filterResult = (markAttachClassDefinitionTable
++                          -> getGlyphClass(markAttachClassDefinitionTable, glyphID, success) != markAttachType);
++            } else {
++              filterResult = FALSE;
+         }
+-
+-        return FALSE;
+     }
++          break;
+ 
+     case gcdComponentGlyph:
+-        return (lookupFlags & lfIgnoreBaseGlyphs) != 0;
++          filterResult = ((lookupFlags & lfIgnoreBaseGlyphs) != 0);
++          break;
+ 
+     default:
+-        return FALSE;
++          filterResult = FALSE;
++          break;
+     }
++      }
++      filterCacheValid = TRUE;
++        }
++
++    return filterCache.result;
+ }
+ 
+ le_bool GlyphIterator::hasFeatureTag(le_bool matchGroup) const
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/font/layout/GlyphIterator.h ./jdk/src/share/native/sun/font/layout/GlyphIterator.h
+--- /tmp/openjdk/jdk/src/share/native/sun/font/layout/GlyphIterator.h	2013-09-06 14:29:01.000000000 -0400
++++ ./jdk/src/share/native/sun/font/layout/GlyphIterator.h	2013-12-14 21:14:12.000000000 -0500
+@@ -98,7 +98,7 @@
+     le_int32 applyInsertions();
+ 
+ private:
+-    le_bool filterGlyph(le_uint32 index) const;
++    le_bool filterGlyph(le_uint32 index);
+     le_bool hasFeatureTag(le_bool matchGroup) const;
+     le_bool nextInternal(le_uint32 delta = 1);
+     le_bool prevInternal(le_uint32 delta = 1);
+@@ -121,6 +121,14 @@
+     LEReferenceTo<MarkAttachClassDefinitionTable> markAttachClassDefinitionTable;
+ 
+     GlyphIterator &operator=(const GlyphIterator &other); // forbid copying of this class
++
++    struct {
++      LEGlyphID   id;
++      le_bool     result;
++    } filterCache;
++    le_bool   filterCacheValid;
++
++    void filterResetCache(void);
+ };
+ 
+ U_NAMESPACE_END
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/font/layout/LETableReference.h ./jdk/src/share/native/sun/font/layout/LETableReference.h
+--- /tmp/openjdk/jdk/src/share/native/sun/font/layout/LETableReference.h	2013-09-06 14:29:01.000000000 -0400
++++ ./jdk/src/share/native/sun/font/layout/LETableReference.h	2013-12-14 21:14:13.000000000 -0500
+@@ -377,7 +377,7 @@
+    * @param success error status
+    * @param atPtr location of reference - if NULL, will be at offset zero (i.e. downcast of parent). Otherwise must be a pointer within parent's bounds.
+    */
+-  LEReferenceTo(const LETableReference &parent, LEErrorCode &success, const void* atPtr)
++ inline LEReferenceTo(const LETableReference &parent, LEErrorCode &success, const void* atPtr)
+     : LETableReference(parent, parent.ptrToOffset(atPtr, success), LE_UINTPTR_MAX, success) {
+     verifyLength(0, LETableVarSizer<T>::getSize(), success);
+     if(LE_FAILURE(success)) clear();
+@@ -385,31 +385,31 @@
+   /**
+    * ptr plus offset
+    */
+- LEReferenceTo(const LETableReference &parent, LEErrorCode &success, const void* atPtr, size_t offset)
++ inline LEReferenceTo(const LETableReference &parent, LEErrorCode &success, const void* atPtr, size_t offset)
+     : LETableReference(parent, parent.ptrToOffset(atPtr, success)+offset, LE_UINTPTR_MAX, success) {
+     verifyLength(0, LETableVarSizer<T>::getSize(), success);
+     if(LE_FAILURE(success)) clear();
+   }
+-  LEReferenceTo(const LETableReference &parent, LEErrorCode &success, size_t offset)
++ inline LEReferenceTo(const LETableReference &parent, LEErrorCode &success, size_t offset)
+     : LETableReference(parent, offset, LE_UINTPTR_MAX, success) {
+     verifyLength(0, LETableVarSizer<T>::getSize(), success);
+     if(LE_FAILURE(success)) clear();
+   }
+-  LEReferenceTo(const LETableReference &parent, LEErrorCode &success)
++ inline LEReferenceTo(const LETableReference &parent, LEErrorCode &success)
+     : LETableReference(parent, 0, LE_UINTPTR_MAX, success) {
+     verifyLength(0, LETableVarSizer<T>::getSize(), success);
+     if(LE_FAILURE(success)) clear();
+   }
+- LEReferenceTo(const LEFontInstance *font, LETag tableTag, LEErrorCode &success)
++ inline LEReferenceTo(const LEFontInstance *font, LETag tableTag, LEErrorCode &success)
+    : LETableReference(font, tableTag, success) {
+     verifyLength(0, LETableVarSizer<T>::getSize(), success);
+     if(LE_FAILURE(success)) clear();
+   }
+- LEReferenceTo(const le_uint8 *data, size_t length = LE_UINTPTR_MAX) : LETableReference(data, length) {}
+- LEReferenceTo(const T *data, size_t length = LE_UINTPTR_MAX) : LETableReference((const le_uint8*)data, length) {}
+-  LEReferenceTo() : LETableReference(NULL) {}
++ 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) {}
+ 
+-  LEReferenceTo<T>& operator=(const T* other) {
++ inline LEReferenceTo<T>& operator=(const T* other) {
+     setRaw(other);
+     return *this;
+   }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/font/layout/OpenTypeUtilities.cpp ./jdk/src/share/native/sun/font/layout/OpenTypeUtilities.cpp
+--- /tmp/openjdk/jdk/src/share/native/sun/font/layout/OpenTypeUtilities.cpp	2013-09-06 14:29:02.000000000 -0400
++++ ./jdk/src/share/native/sun/font/layout/OpenTypeUtilities.cpp	2013-12-14 21:14:13.000000000 -0500
+@@ -79,6 +79,7 @@
+ 
+ Offset OpenTypeUtilities::getTagOffset(LETag tag, const LEReferenceToArrayOf<TagAndOffsetRecord> &records, LEErrorCode &success)
+ {
++  const TagAndOffsetRecord *r0 = (const TagAndOffsetRecord*)records.getAlias();
+   if(LE_FAILURE(success)) return 0;
+ 
+   le_uint32 recordCount = records.getCount();
+@@ -89,17 +90,17 @@
+   le_int32 index = 0;
+ 
+   {
+-    const ATag &aTag = records.getAlias(extra,success)->tag;
++    const ATag &aTag = (r0+extra)->tag;
+     if (SWAPT(aTag) <= tag) {
+       index = extra;
+     }
+   }
+ 
+-  while (probe > (1 << 0) && LE_SUCCESS(success)) {
++  while (probe > (1 << 0)) {
+     probe >>= 1;
+ 
+     {
+-      const ATag &aTag = records.getAlias(index+probe,success)->tag;
++      const ATag &aTag = (r0+index+probe)->tag;
+       if (SWAPT(aTag) <= tag) {
+         index += probe;
+       }
+@@ -107,9 +108,9 @@
+   }
+ 
+   {
+-    const ATag &aTag = records.getAlias(index,success)->tag;
++    const ATag &aTag = (r0+index)->tag;
+     if (SWAPT(aTag) == tag) {
+-      return SWAPW(records.getAlias(index,success)->offset);
++      return SWAPW((r0+index)->offset);
+     }
+   }
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp ./jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp
+--- /tmp/openjdk/jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp	2013-09-06 14:29:02.000000000 -0400
++++ ./jdk/src/share/native/sun/font/layout/SunLayoutEngine.cpp	2013-12-14 21:14:13.000000000 -0500
+@@ -104,6 +104,10 @@
+ 
+ int putGV(JNIEnv* env, jint gmask, jint baseIndex, jobject gvdata, const LayoutEngine* engine, int glyphCount) {
+     int count = env->GetIntField(gvdata, gvdCountFID);
++    if (count < 0) {
++      JNU_ThrowInternalError(env, "count negative");
++      return 0;
++    }
+ 
+     jarray glyphArray = (jarray)env->GetObjectField(gvdata, gvdGlyphsFID);
+     if (IS_NULL(glyphArray)) {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c ./jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c
+--- /tmp/openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c	2013-09-06 14:29:02.000000000 -0400
++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c	2013-12-14 21:14:14.000000000 -0500
+@@ -1074,6 +1074,27 @@
+ }
+ 
+ 
++static
++cmsBool SanityCheck(_cmsICCPROFILE* profile)
++{
++    cmsIOHANDLER* io = profile->IOhandler;
++    if (!io) {
++        return FALSE;
++    }
++
++    if (!io->Seek ||
++        !(io->Seek==NULLSeek || io->Seek==MemorySeek || io->Seek==FileSeek))
++    {
++        return FALSE;
++    }
++    if (!io->Read ||
++        !(io->Read==NULLRead || io->Read==MemoryRead || io->Read==FileRead))
++    {
++        return FALSE;
++    }
++
++    return TRUE;
++}
+ 
+ // Dump tag contents. If the profile is being modified, untouched tags are copied from FileOrig
+ static
+@@ -1087,6 +1108,7 @@
+     cmsTagTypeSignature TypeBase;
+     cmsTagTypeHandler* TypeHandler;
+ 
++    if (!SanityCheck(FileOrig)) return FALSE;
+ 
+     for (i=0; i < Icc -> TagCount; i++) {
+ 
+@@ -1292,8 +1314,8 @@
+     // Should we just calculate the needed space?
+     if (MemPtr == NULL) {
+ 
+-           *BytesNeeded =  cmsSaveProfileToIOhandler(hProfile, NULL);
+-            return TRUE;
++        *BytesNeeded = cmsSaveProfileToIOhandler(hProfile, NULL);
++        return (*BytesNeeded == 0 ? FALSE : TRUE);
+     }
+ 
+     // That is a real write operation
+diff -ruN -x .hg /tmp/openjdk/jdk/src/share/native/sun/management/HotSpotDiagnostic.c ./jdk/src/share/native/sun/management/HotSpotDiagnostic.c
+--- /tmp/openjdk/jdk/src/share/native/sun/management/HotSpotDiagnostic.c	2013-09-06 14:29:03.000000000 -0400
++++ ./jdk/src/share/native/sun/management/HotSpotDiagnostic.c	2013-12-14 21:14:15.000000000 -0500
+@@ -29,7 +29,7 @@
+ #include "sun_management_HotSpotDiagnostic.h"
+ 
+ JNIEXPORT void JNICALL
+-Java_sun_management_HotSpotDiagnostic_dumpHeap
++Java_sun_management_HotSpotDiagnostic_dumpHeap0
+   (JNIEnv *env, jobject dummy, jstring outputfile, jboolean live)
+ {
+     jmm_interface->DumpHeap0(env, outputfile, live);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/bin/java_md_solinux.c ./jdk/src/solaris/bin/java_md_solinux.c
+--- /tmp/openjdk/jdk/src/solaris/bin/java_md_solinux.c	2013-09-06 14:29:05.000000000 -0400
++++ ./jdk/src/solaris/bin/java_md_solinux.c	2013-12-14 21:14:16.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 2012, 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
+@@ -956,9 +956,27 @@
+ 
+ void* SplashProcAddress(const char* name) {
+     if (!hSplashLib) {
+-        const char * splashLibPath;
+-        splashLibPath = SPLASHSCREEN_SO;
+-        hSplashLib = dlopen(splashLibPath, RTLD_LAZY | RTLD_GLOBAL);
++        int ret;
++        char jrePath[MAXPATHLEN];
++        char splashPath[MAXPATHLEN];
++
++        if (!GetJREPath(jrePath, sizeof(jrePath), GetArch(), JNI_FALSE)) {
++            JLI_ReportErrorMessage(JRE_ERROR1);
++            return NULL;
++        }
++        ret = JLI_Snprintf(splashPath, sizeof(splashPath), "%s/lib/%s/%s",
++                     jrePath, GetArch(), SPLASHSCREEN_SO);
++
++        if (ret >= (int) sizeof(splashPath)) {
++            JLI_ReportErrorMessage(JRE_ERROR11);
++            return NULL;
++        }
++        if (ret < 0) {
++            JLI_ReportErrorMessage(JRE_ERROR13);
++            return NULL;
++        }
++        hSplashLib = dlopen(splashPath, RTLD_LAZY | RTLD_GLOBAL);
++        JLI_TraceLauncher("Info: loaded %s\n", splashPath);
+     }
+     if (hSplashLib) {
+         void* sym = dlsym(hSplashLib, name);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java ./jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java
+--- /tmp/openjdk/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2013-09-06 14:29:08.000000000 -0400
++++ ./jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2013-12-14 21:14:17.000000000 -0500
+@@ -26,9 +26,11 @@
+ package sun.nio.ch;
+ 
+ import java.io.IOException;
++import java.security.AccessController;
+ import java.util.BitSet;
+ import java.util.Map;
+ import java.util.HashMap;
++import sun.security.action.GetIntegerAction;
+ 
+ 
+ /**
+@@ -78,10 +80,11 @@
+     static final int   NUM_POLLFDS   = Math.min(OPEN_MAX-1, 8192);
+ 
+     // Initial size of arrays for fd registration changes
+-    private final int INITIAL_PENDING_UPDATE_SIZE = 64;
++    private static final int INITIAL_PENDING_UPDATE_SIZE = 64;
+ 
+     // maximum size of updatesLow
+-    private final int MAX_UPDATE_ARRAY_SIZE = Math.min(OPEN_MAX, 64*1024);
++    private static final int MAX_UPDATE_ARRAY_SIZE = AccessController.doPrivileged(
++        new GetIntegerAction("sun.nio.ch.maxUpdateArraySize", Math.min(OPEN_MAX, 64*1024)));
+ 
+     // The pollfd array for results from devpoll driver
+     private final AllocatedNativeObject pollArray;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java ./jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java
+--- /tmp/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java	2013-09-06 14:29:08.000000000 -0400
++++ ./jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java	2013-12-14 21:14:17.000000000 -0500
+@@ -26,9 +26,11 @@
+ package sun.nio.ch;
+ 
+ import java.io.IOException;
++import java.security.AccessController;
+ import java.util.BitSet;
+ import java.util.HashMap;
+ import java.util.Map;
++import sun.security.action.GetIntegerAction;
+ 
+ /**
+  * Manipulates a native array of epoll_event structs on Linux:
+@@ -78,8 +80,8 @@
+     private static final int INITIAL_PENDING_UPDATE_SIZE = 64;
+ 
+     // maximum size of updatesLow
+-    private static final int MAX_UPDATE_ARRAY_SIZE = Math.min(OPEN_MAX, 64*1024);
+-
++    private static final int MAX_UPDATE_ARRAY_SIZE = AccessController.doPrivileged(
++        new GetIntegerAction("sun.nio.ch.maxUpdateArraySize", Math.min(OPEN_MAX, 64*1024)));
+ 
+     // The fd of the epoll driver
+     private final int epfd;
+@@ -164,6 +166,16 @@
+     }
+ 
+     /**
++     * Returns {@code true} if updates for the given key (file
++     * descriptor) are killed.
++     */
++    private boolean isEventsHighKilled(Integer key) {
++        assert key >= MAX_UPDATE_ARRAY_SIZE;
++        Byte value = eventsHigh.get(key);
++        return (value != null && value == KILLED);
++    }
++
++    /**
+      * Sets the pending update events for the given file descriptor. This
+      * method has no effect if the update events is already set to KILLED,
+      * unless {@code force} is {@code true}.
+@@ -175,7 +187,7 @@
+             }
+         } else {
+             Integer key = Integer.valueOf(fd);
+-            if ((eventsHigh.get(key) != KILLED) || force) {
++            if (!isEventsHighKilled(key) || force) {
+                 eventsHigh.put(key, Byte.valueOf(events));
+             }
+         }
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java ./jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java
+--- /tmp/openjdk/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java	2013-09-06 14:29:08.000000000 -0400
++++ ./jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java	2013-12-14 21:14:17.000000000 -0500
+@@ -25,9 +25,14 @@
+ 
+ package sun.nio.ch;
+ 
+-import sun.misc.Unsafe;
+ import java.io.IOException;
+-import java.util.*;
++import java.security.AccessController;
++import java.util.BitSet;
++import java.util.HashMap;
++import java.util.Map;
++
++import sun.misc.Unsafe;
++import sun.security.action.GetIntegerAction;
+ import static sun.nio.ch.SolarisEventPort.*;
+ 
+ /**
+@@ -49,7 +54,8 @@
+     private final int INITIAL_PENDING_UPDATE_SIZE = 256;
+ 
+     // maximum size of updateArray
+-    private final int MAX_UPDATE_ARRAY_SIZE = Math.min(OPEN_MAX, 64*1024);
++    private static final int MAX_UPDATE_ARRAY_SIZE = AccessController.doPrivileged(
++        new GetIntegerAction("sun.nio.ch.maxUpdateArraySize", Math.min(OPEN_MAX, 64*1024)));
+ 
+     // special update status to indicate that it should be ignored
+     private static final byte IGNORE = -1;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c
+--- /tmp/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c	2013-09-06 14:29:10.000000000 -0400
++++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c	2013-12-14 21:14:18.000000000 -0500
+@@ -122,7 +122,6 @@
+ static jclass ni_ia6cls;
+ static jmethodID ni_ia4ctrID;
+ static jmethodID ni_ia6ctrID;
+-static jfieldID ni_ia6ipaddressID;
+ static int initialized = 0;
+ 
+ /*
+@@ -158,7 +157,6 @@
+       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
+       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
+-      ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
+       initialized = 1;
+     }
+ 
+@@ -306,6 +304,7 @@
+             }
+ 
+             while (iterator != NULL) {
++              int ret1;
+               if (iterator->ai_family == AF_INET) {
+                 jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
+                 if (IS_NULL(iaObj)) {
+@@ -318,20 +317,17 @@
+                 inetIndex++;
+               } else if (iterator->ai_family == AF_INET6) {
+                 jint scope = 0;
+-                jbyteArray ipaddress;
+ 
+                 jobject iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
+                 if (IS_NULL(iaObj)) {
+                   ret = NULL;
+                   goto cleanupAndReturn;
+                 }
+-                ipaddress = (*env)->NewByteArray(env, 16);
+-                if (IS_NULL(ipaddress)) {
+-                  ret = NULL;
+-                  goto cleanupAndReturn;
++                ret1 = setInet6Address_ipaddress(env, iaObj, (char *)&(((struct sockaddr_in6*)iterator->ai_addr)->sin6_addr));
++                if (!ret1) {
++                    ret = NULL;
++                    goto cleanupAndReturn;
+                 }
+-                (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
+-                                           (jbyte *)&(((struct sockaddr_in6*)iterator->ai_addr)->sin6_addr));
+ #ifdef __linux__
+                 if (!kernelIsV22()) {
+                   scope = ((struct sockaddr_in6*)iterator->ai_addr)->sin6_scope_id;
+@@ -340,10 +336,8 @@
+                 scope = ((struct sockaddr_in6*)iterator->ai_addr)->sin6_scope_id;
+ #endif
+                 if (scope != 0) { /* zero is default value, no need to set */
+-                  (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+-                  (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
++                  setInet6Address_scopeid(env, iaObj, scope);
+                 }
+-                (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
+                 setInetAddress_hostName(env, iaObj, host);
+                 (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
+                 inet6Index++;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ./jdk/src/solaris/native/java/net/NetworkInterface.c
+--- /tmp/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c	2013-09-06 14:29:10.000000000 -0400
++++ ./jdk/src/solaris/native/java/net/NetworkInterface.c	2013-12-14 21:31:54.000000000 -0500
+@@ -118,7 +118,6 @@
+ static jmethodID ni_ia4ctrID;
+ static jmethodID ni_ia6ctrID;
+ static jmethodID ni_ibctrID;
+-static jfieldID ni_ia6ipaddressID;
+ static jfieldID ni_ibaddressID;
+ static jfieldID ni_ib4broadcastID;
+ static jfieldID ni_ib4maskID;
+@@ -193,7 +192,6 @@
+     ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+     ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
+     ni_ibctrID = (*env)->GetMethodID(env, ni_ibcls, "<init>", "()V");
+-    ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
+     ni_ibaddressID = (*env)->GetFieldID(env, ni_ibcls, "address", "Ljava/net/InetAddress;");
+     ni_ib4broadcastID = (*env)->GetFieldID(env, ni_ibcls, "broadcast", "Ljava/net/Inet4Address;");
+     ni_ib4maskID = (*env)->GetFieldID(env, ni_ibcls, "maskLength", "S");
+@@ -332,11 +330,9 @@
+ #ifdef AF_INET6
+                 if (family == AF_INET6) {
+                     jbyte *bytes = (jbyte *)&(((struct sockaddr_in6*)addrP->addr)->sin6_addr);
+-                    jbyteArray ipaddress = (*env)->GetObjectField(env, iaObj, ni_ia6ipaddressID);
+                     jbyte caddr[16];
+                     int i;
+-
+-                    (*env)->GetByteArrayRegion(env, ipaddress, 0, 16, caddr);
++                    getInet6Address_ipaddress(env, iaObj, (char *)caddr);
+                     i = 0;
+                     while (i < 16) {
+                         if (caddr[i] != bytes[i]) {
+@@ -670,21 +666,17 @@
+             int scope=0;
+             iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
+             if (iaObj) {
+-                jbyteArray ipaddress = (*env)->NewByteArray(env, 16);
+-                if (ipaddress == NULL) {
++                int ret = setInet6Address_ipaddress(env, iaObj, (char *)&(((struct sockaddr_in6*)addrP->addr)->sin6_addr));
++                if (ret == JNI_FALSE) {
+                     return NULL;
+                 }
+-                (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
+-                                                                        (jbyte *)&(((struct sockaddr_in6*)addrP->addr)->sin6_addr));
+ 
+                 scope = ((struct sockaddr_in6*)addrP->addr)->sin6_scope_id;
+ 
+                 if (scope != 0) { /* zero is default value, no need to set */
+-                    (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+-                    (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
+-                    (*env)->SetObjectField(env, iaObj, ia6_scopeifnameID, netifObj);
++                    setInet6Address_scopeid(env, iaObj, scope);
++                    setInet6Address_scopeifname(env, iaObj, netifObj);
+                 }
+-                (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
+             }
+             ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
+             if (ibObj) {
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
+--- /tmp/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	2013-09-06 14:29:10.000000000 -0400
++++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c	2013-12-14 21:14:18.000000000 -0500
+@@ -2359,8 +2359,7 @@
+             caddr[14] = ((address >> 8) & 0xff);
+             caddr[15] = (address & 0xff);
+         } else {
+-            ipaddress = (*env)->GetObjectField(env, iaObj, ia6_ipaddressID);
+-            (*env)->GetByteArrayRegion(env, ipaddress, 0, 16, caddr);
++            getInet6Address_ipaddress(env, iaObj, caddr);
+         }
+ 
+         memcpy((void *)&(mname6.ipv6mr_multiaddr), caddr, sizeof(struct in6_addr));
+diff -ruN -x .hg /tmp/openjdk/jdk/src/solaris/native/java/net/net_util_md.c ./jdk/src/solaris/native/java/net/net_util_md.c
+--- /tmp/openjdk/jdk/src/solaris/native/java/net/net_util_md.c	2013-09-06 14:29:10.000000000 -0400
++++ ./jdk/src/solaris/native/java/net/net_util_md.c	2013-12-14 21:31:54.000000000 -0500
+@@ -823,7 +823,6 @@
+     /* needs work. 1. family 2. clean up him6 etc deallocate memory */
+     if (ipv6_available() && !(family == IPv4 && v4MappedAddress == JNI_FALSE)) {
+         struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)him;
+-        jbyteArray ipaddress;
+         jbyte caddr[16];
+         jint address;
+ 
+@@ -844,8 +843,7 @@
+                 caddr[15] = (address & 0xff);
+             }
+         } else {
+-            ipaddress = (*env)->GetObjectField(env, iaObj, ia6_ipaddressID);
+-            (*env)->GetByteArrayRegion(env, ipaddress, 0, 16, caddr);
++            getInet6Address_ipaddress(env, iaObj, (char *)caddr);
+         }
+         memset((char *)him6, 0, sizeof(struct sockaddr_in6));
+         him6->sin6_port = htons(port);
+@@ -882,7 +880,7 @@
+                  */
+                 if (!cached_scope_id) {
+                     if (ia6_scopeidID) {
+-                        scope_id = (int)(*env)->GetIntField(env,iaObj,ia6_scopeidID);
++                        scope_id = getInet6Address_scopeid(env, iaObj);
+                     }
+                     if (scope_id != 0) {
+                         /* check user-specified value for loopback case
+@@ -928,7 +926,7 @@
+ 
+         if (family != IPv4) {
+             if (ia6_scopeidID) {
+-                him6->sin6_scope_id = (int)(*env)->GetIntField(env, iaObj, ia6_scopeidID);
++                him6->sin6_scope_id = getInet6Address_scopeid(env, iaObj);
+             }
+         }
+ #endif
+diff -ruN -x .hg /tmp/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c ./jdk/src/windows/native/java/net/Inet6AddressImpl.c
+--- /tmp/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c	2013-09-06 14:29:15.000000000 -0400
++++ ./jdk/src/windows/native/java/net/Inet6AddressImpl.c	2013-12-14 21:14:09.000000000 -0500
+@@ -77,7 +77,6 @@
+ static jclass ni_ia6cls;
+ static jmethodID ni_ia4ctrID;
+ static jmethodID ni_ia6ctrID;
+-static jfieldID ni_ia6ipaddressID;
+ static int initialized = 0;
+ 
+ JNIEXPORT jobjectArray JNICALL
+@@ -101,7 +100,6 @@
+       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
+       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
+-      ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
+       initialized = 1;
+     }
+     if (IS_NULL(host)) {
+@@ -242,26 +240,22 @@
+               (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
+                 inetIndex ++;
+             } else if (iterator->ai_family == AF_INET6) {
+-              jint scope = 0;
+-              jbyteArray ipaddress;
++              jint scope = 0, ret1;
+               jobject iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
+               if (IS_NULL(iaObj)) {
+                 ret = NULL;
+                 goto cleanupAndReturn;
+               }
+-              ipaddress = (*env)->NewByteArray(env, 16);
+-              if (IS_NULL(ipaddress)) {
++              ret1 = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(((struct sockaddr_in6*)iterator->ai_addr)->sin6_addr));
++
++              if (ret1 == JNI_FALSE) {
+                 ret = NULL;
+                 goto cleanupAndReturn;
+               }
+-              (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
+-                                         (jbyte *)&(((struct sockaddr_in6*)iterator->ai_addr)->sin6_addr));
+               scope = ((struct sockaddr_in6*)iterator->ai_addr)->sin6_scope_id;
+               if (scope != 0) { /* zero is default value, no need to set */
+-                (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+-                (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
++                setInet6Address_scopeid(env, iaObj, scope);
+               }
+-              (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
+               setInetAddress_hostName(env, iaObj, host);
+               (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
+               inet6Index ++;
+diff -ruN -x .hg /tmp/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c ./jdk/src/windows/native/java/net/NetworkInterface.c
+--- /tmp/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c	2013-09-06 14:29:15.000000000 -0400
++++ ./jdk/src/windows/native/java/net/NetworkInterface.c	2013-12-14 21:14:09.000000000 -0500
+@@ -72,8 +72,6 @@
+ 
+ jclass ni_ia6cls;           /* Inet6Address */
+ jmethodID ni_ia6ctrID;      /* Inet6Address() */
+-jfieldID ni_ia6ipaddressID;
+-jfieldID ni_ia6ipaddressID;
+ 
+ jclass ni_ibcls;            /* InterfaceAddress */
+ jmethodID ni_ibctrID;       /* InterfaceAddress() */
+@@ -482,7 +480,6 @@
+     ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
+     ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
+     ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
+-    ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
+ 
+     ni_ibcls = (*env)->FindClass(env, "java/net/InterfaceAddress");
+     ni_ibcls = (*env)->NewGlobalRef(env, ni_ibcls);
+@@ -583,19 +580,16 @@
+             int scope;
+             iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
+             if (iaObj) {
+-                jbyteArray ipaddress = (*env)->NewByteArray(env, 16);
+-                if (ipaddress == NULL) {
++                int ret = setInet6Address_ipaddress(env, iaObj,  (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr));
++                if (ret == JNI_FALSE) {
+                     return NULL;
+                 }
+-                (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
+-                    (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr));
++
+                 scope = addrs->addr.him6.sin6_scope_id;
+                 if (scope != 0) { /* zero is default value, no need to set */
+-                    (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+-                    (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
+-                    (*env)->SetObjectField(env, iaObj, ia6_scopeifnameID, netifObj);
++                    setInet6Address_scopeid(env, iaObj, scope);
++                    setInet6Address_scopeifname(env, iaObj, netifObj);
+                 }
+-                (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
+                 ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
+                 if (ibObj == NULL) {
+                   free_netaddr(netaddrP);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c ./jdk/src/windows/native/java/net/NetworkInterface_winXP.c
+--- /tmp/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c	2013-09-06 14:29:15.000000000 -0400
++++ ./jdk/src/windows/native/java/net/NetworkInterface_winXP.c	2013-12-14 21:14:09.000000000 -0500
+@@ -499,19 +499,15 @@
+             int scope;
+             iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
+             if (iaObj) {
+-                jbyteArray ipaddress = (*env)->NewByteArray(env, 16);
+-                if (ipaddress == NULL) {
++                int ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr));
++                if (ret == JNI_FALSE) {
+                     return NULL;
+                 }
+-                (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
+-                    (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr));
+                 scope = addrs->addr.him6.sin6_scope_id;
+                 if (scope != 0) { /* zero is default value, no need to set */
+-                    (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+-                    (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
+-                    (*env)->SetObjectField(env, iaObj, ia6_scopeifnameID, netifObj);
++                    setInet6Address_scopeid(env, iaObj, scope);
++                    setInet6Address_scopeifname(env, iaObj, netifObj);
+                 }
+-                (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
+                 ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
+                 if (ibObj == NULL) {
+                   free_netaddr(netaddrP);
+diff -ruN -x .hg /tmp/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c ./jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c
+--- /tmp/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c	2013-09-06 14:29:15.000000000 -0400
++++ ./jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c	2013-12-14 21:14:09.000000000 -0500
+@@ -728,7 +728,6 @@
+         setInetAddress_family(env, socketAddressObj, IPv4);
+         (*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj);
+     } else {
+-        jbyteArray addr;
+         /* AF_INET6 -> Inet6Address */
+         if (inet6Cls == 0) {
+             jclass c = (*env)->FindClass(env, "java/net/Inet6Address");
+@@ -751,10 +750,10 @@
+             NET_SocketClose(fd);
+             return;
+         }
+-        addr = (*env)->GetObjectField (env, socketAddressObj, ia6_ipaddressID);
+-        (*env)->SetByteArrayRegion (env, addr, 0, 16, (const char *)&him.him6.sin6_addr);
++        setInet6Address_ipaddress(env, socketAddressObj, (const char *)&him.him6.sin6_addr);
++
+         setInetAddress_family(env, socketAddressObj, IPv6);
+-        (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, him.him6.sin6_scope_id);
++        setInet6Address_scopeid(env, socketAddressObj, him.him6.sin6_scope_id);
+     }
+     /* fields common to AF_INET and AF_INET6 */
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/src/windows/native/java/net/net_util_md.c ./jdk/src/windows/native/java/net/net_util_md.c
+--- /tmp/openjdk/jdk/src/windows/native/java/net/net_util_md.c	2013-09-06 14:29:15.000000000 -0400
++++ ./jdk/src/windows/native/java/net/net_util_md.c	2013-12-14 21:14:09.000000000 -0500
+@@ -851,7 +851,6 @@
+     family = (iafam == IPv4)? AF_INET : AF_INET6;
+     if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) {
+         struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
+-        jbyteArray ipaddress;
+         jbyte caddr[16];
+         jint address, scopeid = 0;
+         jint cached_scope_id = 0;
+@@ -872,10 +871,9 @@
+                 caddr[15] = (address & 0xff);
+             }
+         } else {
+-            ipaddress = (*env)->GetObjectField(env, iaObj, ia6_ipaddressID);
+-            scopeid = (jint)(*env)->GetIntField(env, iaObj, ia6_scopeidID);
++            getInet6Address_ipaddress(env, iaObj, (char *)caddr);
++            scopeid = getInet6Address_scopeid(env, iaObj);
+             cached_scope_id = (jint)(*env)->GetIntField(env, iaObj, ia6_cachedscopeidID);
+-            (*env)->GetByteArrayRegion(env, ipaddress, 0, 16, caddr);
+         }
+ 
+         memset((char *)him6, 0, sizeof(struct SOCKADDR_IN6));
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/io/File/createTempFile/SpecialTempFile.java ./jdk/test/java/io/File/createTempFile/SpecialTempFile.java
+--- /tmp/openjdk/jdk/test/java/io/File/createTempFile/SpecialTempFile.java	2013-09-06 14:29:29.000000000 -0400
++++ ./jdk/test/java/io/File/createTempFile/SpecialTempFile.java	2013-12-14 21:14:16.000000000 -0500
+@@ -23,7 +23,7 @@
+ 
+ /*
+  * @test
+- * @bug 8013827 8011950
++ * @bug 8013827 8011950 8025128
+  * @summary Check whether File.createTempFile can handle special parameters
+  *          on Windows platforms
+  * @author Dan Xu
+@@ -34,7 +34,9 @@
+ 
+ public class SpecialTempFile {
+ 
+-    private static void test(String name, String[] prefix, String[] suffix) {
++    private static void test(String name, String[] prefix, String[] suffix,
++                             boolean expectedException) throws IOException
++    {
+         if (prefix == null || suffix == null
+             || prefix.length != suffix.length)
+         {
+@@ -42,39 +44,59 @@
+         }
+ 
+         final String exceptionMsg = "Unable to create temporary file";
+-        final String errMsg = "IOException is expected";
+ 
+         for (int i = 0; i < prefix.length; i++) {
+             boolean exceptionThrown = false;
+             File f = null;
+-            System.out.println("In test " + name
+-                               + ", creating temp file with prefix, "
+-                               + prefix[i] + ", suffix, " + suffix[i]);
+-            try {
+-                f = File.createTempFile(prefix[i], suffix[i]);
+-            } catch (IOException e) {
+-                if (exceptionMsg.equals(e.getMessage()))
+-                    exceptionThrown = true;
+-                else
+-                    System.out.println("Wrong error message:" + e.getMessage());
++
++            String[] dirs = { null, "." };
++
++            for (String dir : dirs ) {
++                System.out.println("In test " + name +
++                                   ", creating temp file with prefix, " +
++                                   prefix[i] + ", suffix, " + suffix[i] +
++                                   ", in dir, " + dir);
++
++                try {
++                    if (dir == null || dir.isEmpty())
++                        f = File.createTempFile(prefix[i], suffix[i]);
++                    else
++                        f = File.createTempFile(prefix[i], suffix[i], new File(dir));
++                } catch (IOException e) {
++                    if (expectedException) {
++                        if (e.getMessage().startsWith(exceptionMsg))
++                            exceptionThrown = true;
++                        else
++                            System.out.println("Wrong error message:" +
++                                               e.getMessage());
++                    } else {
++                        throw e;
++                    }
++                }
++
++                if (expectedException && (!exceptionThrown || f != null))
++                    throw new RuntimeException("IOException is expected");
+             }
+-            if (!exceptionThrown || f != null)
+-                throw new RuntimeException(errMsg);
+         }
+     }
+ 
+     public static void main(String[] args) throws Exception {
++        // Test JDK-8025128
++        String[] goodPre = { "///..///", "/foo" };
++        String[] goodSuf = { ".temp", ".tmp" };
++        test("goodName", goodPre, goodSuf, false);
++
++        // Test JDK-8011950
++        String[] slashPre = { "temp", "///..///", "/foo" };
++        String[] slashSuf = { "///..///..", "///..///..", "///..///.." };
++        test("SlashedName", slashPre, slashSuf, true);
++
+         if (!System.getProperty("os.name").startsWith("Windows"))
+             return;
+ 
+         // Test JDK-8013827
+         String[] resvPre = { "LPT1.package.zip", "com7.4.package.zip" };
+         String[] resvSuf = { ".temp", ".temp" };
+-        test("ReservedName", resvPre, resvSuf);
+-
+-        // Test JDK-8011950
+-        String[] slashPre = { "///..///", "temp", "///..///" };
+-        String[] slashSuf = { ".temp", "///..///..", "///..///.." };
+-        test("SlashedName", slashPre, slashSuf);
++        test("ReservedName", resvPre, resvSuf, true);
+     }
+ }
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/io/IOException/LastErrorString.java ./jdk/test/java/io/IOException/LastErrorString.java
+--- /tmp/openjdk/jdk/test/java/io/IOException/LastErrorString.java	2013-09-06 14:29:29.000000000 -0400
++++ ./jdk/test/java/io/IOException/LastErrorString.java	2013-12-14 21:31:54.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 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
+@@ -22,7 +22,8 @@
+  */
+ 
+ /* @test
+-   @bug 4167937
++   @bug 4167937 8023964
++   @ignore Test truncates system files when run as root, see 7042603
+    @summary Test code paths that use the JVM_LastErrorString procedure
+  */
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java ./jdk/test/java/lang/SecurityManager/CheckPackageAccess.java
+--- /tmp/openjdk/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java	2013-09-06 14:29:33.000000000 -0400
++++ ./jdk/test/java/lang/SecurityManager/CheckPackageAccess.java	2013-12-14 21:31:54.000000000 -0500
+@@ -74,6 +74,7 @@
+         "com.sun.org.apache.xml.internal.serializer.utils.",
+         "com.sun.org.apache.xml.internal.utils.",
+         "com.sun.org.glassfish.",
++        "com.sun.script.",
+         "oracle.jrockit.jfr.",
+         "org.jcp.xml.dsig.internal.",
+     };
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/lang/invoke/MethodHandleConstants.java ./jdk/test/java/lang/invoke/MethodHandleConstants.java
+--- /tmp/openjdk/jdk/test/java/lang/invoke/MethodHandleConstants.java	1969-12-31 19:00:00.000000000 -0500
++++ ./jdk/test/java/lang/invoke/MethodHandleConstants.java	2013-12-14 21:14:09.000000000 -0500
+@@ -0,0 +1,188 @@
++/*
++ * 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
++ * @bug 8022066
++ * @summary smoke test for method handle constants
++ * @build indify.Indify
++ * @compile MethodHandleConstants.java
++ * @run main/othervm
++ *      indify.Indify
++ *      --verify-specifier-count=0
++ *      --expand-properties --classpath ${test.classes}
++ *      --java test.java.lang.invoke.MethodHandleConstants --check-output
++ * @run main/othervm
++ *      indify.Indify
++ *      --expand-properties --classpath ${test.classes}
++ *      --java test.java.lang.invoke.MethodHandleConstants --security-manager
++ */
++
++package test.java.lang.invoke;
++
++import java.util.*;
++import java.io.*;
++import java.lang.invoke.*;
++import java.security.*;
++
++import static java.lang.invoke.MethodHandles.*;
++import static java.lang.invoke.MethodType.*;
++
++public class MethodHandleConstants {
++    public static void main(String... av) throws Throwable {
++        if (av.length > 0 && av[0].equals("--check-output"))  openBuf();
++        if (av.length > 0 && av[0].equals("--security-manager"))  setSM();
++        System.out.println("Obtaining method handle constants:");
++        testCase(MH_String_replace_C2(), String.class, "replace", String.class, String.class, char.class, char.class);
++        testCase(MH_MethodHandle_invokeExact_SC2(), MethodHandle.class, "invokeExact", String.class, MethodHandle.class, String.class, char.class, char.class);
++        testCase(MH_MethodHandle_invoke_SC2(), MethodHandle.class, "invoke", String.class, MethodHandle.class, String.class, char.class, char.class);
++        testCase(MH_Class_forName_S(), Class.class, "forName", Class.class, String.class);
++        testCase(MH_Class_forName_SbCL(), Class.class, "forName", Class.class, String.class, boolean.class, ClassLoader.class);
++        System.out.println("Done.");
++        closeBuf();
++    }
++
++    private static void testCase(MethodHandle mh, Class<?> defc, String name, Class<?> rtype, Class<?>... ptypes) throws Throwable {
++        System.out.println(mh);
++        // we include defc, because we assume it is a non-static MH:
++        MethodType mt = methodType(rtype, ptypes);
++        assertEquals(mh.type(), mt);
++        // FIXME: Use revealDirect to find out more
++    }
++    private static void assertEquals(Object exp, Object act) {
++        if (exp == act || (exp != null && exp.equals(act)))  return;
++        throw new AssertionError("not equal: "+exp+", "+act);
++    }
++
++    private static void setSM() {
++        Policy.setPolicy(new TestPolicy());
++        System.setSecurityManager(new SecurityManager());
++    }
++
++    private static PrintStream oldOut;
++    private static ByteArrayOutputStream buf;
++    private static void openBuf() {
++        oldOut = System.out;
++        buf = new ByteArrayOutputStream();
++        System.setOut(new PrintStream(buf));
++    }
++    private static void closeBuf() {
++        if (buf == null)  return;
++        System.out.flush();
++        System.setOut(oldOut);
++        String[] haveLines = new String(buf.toByteArray()).split("[\n\r]+");
++        for (String line : haveLines)  System.out.println(line);
++        Iterator<String> iter = Arrays.asList(haveLines).iterator();
++        for (String want : EXPECT_OUTPUT) {
++            String have = iter.hasNext() ? iter.next() : "[EOF]";
++            if (want.equals(have))  continue;
++            System.err.println("want line: "+want);
++            System.err.println("have line: "+have);
++            throw new AssertionError("unexpected output: "+have);
++        }
++        if (iter.hasNext())
++            throw new AssertionError("unexpected output: "+iter.next());
++    }
++    private static final String[] EXPECT_OUTPUT = {
++        "Obtaining method handle constants:",
++        "MethodHandle(String,char,char)String",
++        "MethodHandle(MethodHandle,String,char,char)String",
++        "MethodHandle(MethodHandle,String,char,char)String",
++        "MethodHandle(String)Class",
++        "MethodHandle(String,boolean,ClassLoader)Class",
++        "Done."
++    };
++
++    // String.replace(String, char, char)
++    private static MethodType MT_String_replace_C2() {
++        shouldNotCallThis();
++        return methodType(String.class, char.class, char.class);
++    }
++    private static MethodHandle MH_String_replace_C2() throws ReflectiveOperationException {
++        shouldNotCallThis();
++        return lookup().findVirtual(String.class, "replace", MT_String_replace_C2());
++    }
++
++    // MethodHandle.invokeExact(...)
++    private static MethodType MT_MethodHandle_invokeExact_SC2() {
++        shouldNotCallThis();
++        return methodType(String.class, String.class, char.class, char.class);
++    }
++    private static MethodHandle MH_MethodHandle_invokeExact_SC2() throws ReflectiveOperationException {
++        shouldNotCallThis();
++        return lookup().findVirtual(MethodHandle.class, "invokeExact", MT_MethodHandle_invokeExact_SC2());
++    }
++
++    // MethodHandle.invoke(...)
++    private static MethodType MT_MethodHandle_invoke_SC2() {
++        shouldNotCallThis();
++        return methodType(String.class, String.class, char.class, char.class);
++    }
++    private static MethodHandle MH_MethodHandle_invoke_SC2() throws ReflectiveOperationException {
++        shouldNotCallThis();
++        return lookup().findVirtual(MethodHandle.class, "invoke", MT_MethodHandle_invoke_SC2());
++    }
++
++    // Class.forName(String)
++    private static MethodType MT_Class_forName_S() {
++        shouldNotCallThis();
++        return methodType(Class.class, String.class);
++    }
++    private static MethodHandle MH_Class_forName_S() throws ReflectiveOperationException {
++        shouldNotCallThis();
++        return lookup().findStatic(Class.class, "forName", MT_Class_forName_S());
++    }
++
++    // Class.forName(String, boolean, ClassLoader)
++    private static MethodType MT_Class_forName_SbCL() {
++        shouldNotCallThis();
++        return methodType(Class.class, String.class, boolean.class, ClassLoader.class);
++    }
++    private static MethodHandle MH_Class_forName_SbCL() throws ReflectiveOperationException {
++        shouldNotCallThis();
++        return lookup().findStatic(Class.class, "forName", MT_Class_forName_SbCL());
++    }
++
++    private static void shouldNotCallThis() {
++        // if this gets called, the transformation has not taken place
++        if (System.getProperty("MethodHandleConstants.allow-untransformed") != null)  return;
++        throw new AssertionError("this code should be statically transformed away by Indify");
++    }
++
++    static class TestPolicy extends Policy {
++        final PermissionCollection permissions = new Permissions();
++        TestPolicy() {
++            permissions.add(new java.io.FilePermission("<<ALL FILES>>", "read"));
++        }
++        public PermissionCollection getPermissions(ProtectionDomain domain) {
++            return permissions;
++        }
++
++        public PermissionCollection getPermissions(CodeSource codesource) {
++            return permissions;
++        }
++
++        public boolean implies(ProtectionDomain domain, Permission perm) {
++            return permissions.implies(perm);
++        }
++    }
++}
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/net/Inet6Address/serialize/Serialize.java ./jdk/test/java/net/Inet6Address/serialize/Serialize.java
+--- /tmp/openjdk/jdk/test/java/net/Inet6Address/serialize/Serialize.java	2013-09-06 14:29:37.000000000 -0400
++++ ./jdk/test/java/net/Inet6Address/serialize/Serialize.java	2013-12-14 21:14:10.000000000 -0500
+@@ -94,7 +94,26 @@
+          } finally {
+              ois.close();
+          }
+-         System.out.println(nobj);
++
++         nobj = (Inet6Address)InetAddress.getByAddress("foo.com", new byte[] {
++             (byte)0xfe,(byte)0x80,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,
++             (byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)1
++         });
++         if (!test1(nobj, addr1)) {
++             throw new RuntimeException("failed with " + nobj.toString());
++         }
++         nobj = (Inet6Address)InetAddress.getByAddress("x.bar.com", new byte[] {
++             (byte)0xfe,(byte)0xC0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,
++             (byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)0,(byte)1
++         });
++         if (!test1(nobj, addr2)) {
++             throw new RuntimeException("failed with " + nobj.toString());
++         }
++         nobj = (Inet6Address)InetAddress.getByName("::1");
++         if (!test1(nobj, addr3)) {
++             throw new RuntimeException("failed with " + nobj.toString());
++         }
++
+          System.out.println("All tests passed");
+      }
+ 
+@@ -113,4 +132,162 @@
+              return false;
+          }
+      }
+- }
++
++    static boolean test1 (Inet6Address obj, byte[] buf) throws Exception {
++         ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buf));
++         Inet6Address nobj = (Inet6Address) ois.readObject();
++         ois.close();
++
++         if (nobj.equals(obj)) {
++             return true;
++         } else {
++             return false;
++         }
++    }
++
++    // Inet6Address instances serialized with JDK 6
++
++    static byte[] addr1 = {
++        (byte)0xac,(byte)0xed,(byte)0x00,(byte)0x05,(byte)0x73,(byte)0x72,
++        (byte)0x00,(byte)0x15,(byte)0x6a,(byte)0x61,(byte)0x76,(byte)0x61,
++        (byte)0x2e,(byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x2e,(byte)0x49,
++        (byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x36,(byte)0x41,(byte)0x64,
++        (byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x5f,
++        (byte)0x7c,(byte)0x20,(byte)0x81,(byte)0x52,(byte)0x2c,(byte)0x80,
++        (byte)0x21,(byte)0x03,(byte)0x00,(byte)0x05,(byte)0x49,(byte)0x00,
++        (byte)0x08,(byte)0x73,(byte)0x63,(byte)0x6f,(byte)0x70,(byte)0x65,
++        (byte)0x5f,(byte)0x69,(byte)0x64,(byte)0x5a,(byte)0x00,(byte)0x0c,
++        (byte)0x73,(byte)0x63,(byte)0x6f,(byte)0x70,(byte)0x65,(byte)0x5f,
++        (byte)0x69,(byte)0x64,(byte)0x5f,(byte)0x73,(byte)0x65,(byte)0x74,
++        (byte)0x5a,(byte)0x00,(byte)0x10,(byte)0x73,(byte)0x63,(byte)0x6f,
++        (byte)0x70,(byte)0x65,(byte)0x5f,(byte)0x69,(byte)0x66,(byte)0x6e,
++        (byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x5f,(byte)0x73,(byte)0x65,
++        (byte)0x74,(byte)0x4c,(byte)0x00,(byte)0x06,(byte)0x69,(byte)0x66,
++        (byte)0x6e,(byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x74,(byte)0x00,
++        (byte)0x12,(byte)0x4c,(byte)0x6a,(byte)0x61,(byte)0x76,(byte)0x61,
++        (byte)0x2f,(byte)0x6c,(byte)0x61,(byte)0x6e,(byte)0x67,(byte)0x2f,
++        (byte)0x53,(byte)0x74,(byte)0x72,(byte)0x69,(byte)0x6e,(byte)0x67,
++        (byte)0x3b,(byte)0x5b,(byte)0x00,(byte)0x09,(byte)0x69,(byte)0x70,
++        (byte)0x61,(byte)0x64,(byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,
++        (byte)0x73,(byte)0x74,(byte)0x00,(byte)0x02,(byte)0x5b,(byte)0x42,
++        (byte)0x78,(byte)0x72,(byte)0x00,(byte)0x14,(byte)0x6a,(byte)0x61,
++        (byte)0x76,(byte)0x61,(byte)0x2e,(byte)0x6e,(byte)0x65,(byte)0x74,
++        (byte)0x2e,(byte)0x49,(byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x41,
++        (byte)0x64,(byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,(byte)0x73,
++        (byte)0x2d,(byte)0x9b,(byte)0x57,(byte)0xaf,(byte)0x9f,(byte)0xe3,
++        (byte)0xeb,(byte)0xdb,(byte)0x02,(byte)0x00,(byte)0x03,(byte)0x49,
++        (byte)0x00,(byte)0x07,(byte)0x61,(byte)0x64,(byte)0x64,(byte)0x72,
++        (byte)0x65,(byte)0x73,(byte)0x73,(byte)0x49,(byte)0x00,(byte)0x06,
++        (byte)0x66,(byte)0x61,(byte)0x6d,(byte)0x69,(byte)0x6c,(byte)0x79,
++        (byte)0x4c,(byte)0x00,(byte)0x08,(byte)0x68,(byte)0x6f,(byte)0x73,
++        (byte)0x74,(byte)0x4e,(byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x71,
++        (byte)0x00,(byte)0x7e,(byte)0x00,(byte)0x01,(byte)0x78,(byte)0x70,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x02,(byte)0x74,(byte)0x00,(byte)0x07,(byte)0x66,
++        (byte)0x6f,(byte)0x6f,(byte)0x2e,(byte)0x63,(byte)0x6f,(byte)0x6d,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x70,(byte)0x75,(byte)0x72,(byte)0x00,(byte)0x02,(byte)0x5b,
++        (byte)0x42,(byte)0xac,(byte)0xf3,(byte)0x17,(byte)0xf8,(byte)0x06,
++        (byte)0x08,(byte)0x54,(byte)0xe0,(byte)0x02,(byte)0x00,(byte)0x00,
++        (byte)0x78,(byte)0x70,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x10,
++        (byte)0xfe,(byte)0x80,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x78
++    };
++
++    static byte[] addr2 = {
++        (byte)0xac,(byte)0xed,(byte)0x00,(byte)0x05,(byte)0x73,(byte)0x72,
++        (byte)0x00,(byte)0x15,(byte)0x6a,(byte)0x61,(byte)0x76,(byte)0x61,
++        (byte)0x2e,(byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x2e,(byte)0x49,
++        (byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x36,(byte)0x41,(byte)0x64,
++        (byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x5f,
++        (byte)0x7c,(byte)0x20,(byte)0x81,(byte)0x52,(byte)0x2c,(byte)0x80,
++        (byte)0x21,(byte)0x03,(byte)0x00,(byte)0x05,(byte)0x49,(byte)0x00,
++        (byte)0x08,(byte)0x73,(byte)0x63,(byte)0x6f,(byte)0x70,(byte)0x65,
++        (byte)0x5f,(byte)0x69,(byte)0x64,(byte)0x5a,(byte)0x00,(byte)0x0c,
++        (byte)0x73,(byte)0x63,(byte)0x6f,(byte)0x70,(byte)0x65,(byte)0x5f,
++        (byte)0x69,(byte)0x64,(byte)0x5f,(byte)0x73,(byte)0x65,(byte)0x74,
++        (byte)0x5a,(byte)0x00,(byte)0x10,(byte)0x73,(byte)0x63,(byte)0x6f,
++        (byte)0x70,(byte)0x65,(byte)0x5f,(byte)0x69,(byte)0x66,(byte)0x6e,
++        (byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x5f,(byte)0x73,(byte)0x65,
++        (byte)0x74,(byte)0x4c,(byte)0x00,(byte)0x06,(byte)0x69,(byte)0x66,
++        (byte)0x6e,(byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x74,(byte)0x00,
++        (byte)0x12,(byte)0x4c,(byte)0x6a,(byte)0x61,(byte)0x76,(byte)0x61,
++        (byte)0x2f,(byte)0x6c,(byte)0x61,(byte)0x6e,(byte)0x67,(byte)0x2f,
++        (byte)0x53,(byte)0x74,(byte)0x72,(byte)0x69,(byte)0x6e,(byte)0x67,
++        (byte)0x3b,(byte)0x5b,(byte)0x00,(byte)0x09,(byte)0x69,(byte)0x70,
++        (byte)0x61,(byte)0x64,(byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,
++        (byte)0x73,(byte)0x74,(byte)0x00,(byte)0x02,(byte)0x5b,(byte)0x42,
++        (byte)0x78,(byte)0x72,(byte)0x00,(byte)0x14,(byte)0x6a,(byte)0x61,
++        (byte)0x76,(byte)0x61,(byte)0x2e,(byte)0x6e,(byte)0x65,(byte)0x74,
++        (byte)0x2e,(byte)0x49,(byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x41,
++        (byte)0x64,(byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,(byte)0x73,
++        (byte)0x2d,(byte)0x9b,(byte)0x57,(byte)0xaf,(byte)0x9f,(byte)0xe3,
++        (byte)0xeb,(byte)0xdb,(byte)0x02,(byte)0x00,(byte)0x03,(byte)0x49,
++        (byte)0x00,(byte)0x07,(byte)0x61,(byte)0x64,(byte)0x64,(byte)0x72,
++        (byte)0x65,(byte)0x73,(byte)0x73,(byte)0x49,(byte)0x00,(byte)0x06,
++        (byte)0x66,(byte)0x61,(byte)0x6d,(byte)0x69,(byte)0x6c,(byte)0x79,
++        (byte)0x4c,(byte)0x00,(byte)0x08,(byte)0x68,(byte)0x6f,(byte)0x73,
++        (byte)0x74,(byte)0x4e,(byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x71,
++        (byte)0x00,(byte)0x7e,(byte)0x00,(byte)0x01,(byte)0x78,(byte)0x70,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x02,(byte)0x74,(byte)0x00,(byte)0x09,(byte)0x78,
++        (byte)0x2e,(byte)0x62,(byte)0x61,(byte)0x72,(byte)0x2e,(byte)0x63,
++        (byte)0x6f,(byte)0x6d,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x70,(byte)0x75,(byte)0x72,(byte)0x00,
++        (byte)0x02,(byte)0x5b,(byte)0x42,(byte)0xac,(byte)0xf3,(byte)0x17,
++        (byte)0xf8,(byte)0x06,(byte)0x08,(byte)0x54,(byte)0xe0,(byte)0x02,
++        (byte)0x00,(byte)0x00,(byte)0x78,(byte)0x70,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x10,(byte)0xfe,(byte)0xc0,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,
++        (byte)0x78
++    };
++
++    static byte[] addr3 = {
++        (byte)0xac,(byte)0xed,(byte)0x00,(byte)0x05,(byte)0x73,(byte)0x72,
++        (byte)0x00,(byte)0x15,(byte)0x6a,(byte)0x61,(byte)0x76,(byte)0x61,
++        (byte)0x2e,(byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x2e,(byte)0x49,
++        (byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x36,(byte)0x41,(byte)0x64,
++        (byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x5f,
++        (byte)0x7c,(byte)0x20,(byte)0x81,(byte)0x52,(byte)0x2c,(byte)0x80,
++        (byte)0x21,(byte)0x03,(byte)0x00,(byte)0x05,(byte)0x49,(byte)0x00,
++        (byte)0x08,(byte)0x73,(byte)0x63,(byte)0x6f,(byte)0x70,(byte)0x65,
++        (byte)0x5f,(byte)0x69,(byte)0x64,(byte)0x5a,(byte)0x00,(byte)0x0c,
++        (byte)0x73,(byte)0x63,(byte)0x6f,(byte)0x70,(byte)0x65,(byte)0x5f,
++        (byte)0x69,(byte)0x64,(byte)0x5f,(byte)0x73,(byte)0x65,(byte)0x74,
++        (byte)0x5a,(byte)0x00,(byte)0x10,(byte)0x73,(byte)0x63,(byte)0x6f,
++        (byte)0x70,(byte)0x65,(byte)0x5f,(byte)0x69,(byte)0x66,(byte)0x6e,
++        (byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x5f,(byte)0x73,(byte)0x65,
++        (byte)0x74,(byte)0x4c,(byte)0x00,(byte)0x06,(byte)0x69,(byte)0x66,
++        (byte)0x6e,(byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x74,(byte)0x00,
++        (byte)0x12,(byte)0x4c,(byte)0x6a,(byte)0x61,(byte)0x76,(byte)0x61,
++        (byte)0x2f,(byte)0x6c,(byte)0x61,(byte)0x6e,(byte)0x67,(byte)0x2f,
++        (byte)0x53,(byte)0x74,(byte)0x72,(byte)0x69,(byte)0x6e,(byte)0x67,
++        (byte)0x3b,(byte)0x5b,(byte)0x00,(byte)0x09,(byte)0x69,(byte)0x70,
++        (byte)0x61,(byte)0x64,(byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,
++        (byte)0x73,(byte)0x74,(byte)0x00,(byte)0x02,(byte)0x5b,(byte)0x42,
++        (byte)0x78,(byte)0x72,(byte)0x00,(byte)0x14,(byte)0x6a,(byte)0x61,
++        (byte)0x76,(byte)0x61,(byte)0x2e,(byte)0x6e,(byte)0x65,(byte)0x74,
++        (byte)0x2e,(byte)0x49,(byte)0x6e,(byte)0x65,(byte)0x74,(byte)0x41,
++        (byte)0x64,(byte)0x64,(byte)0x72,(byte)0x65,(byte)0x73,(byte)0x73,
++        (byte)0x2d,(byte)0x9b,(byte)0x57,(byte)0xaf,(byte)0x9f,(byte)0xe3,
++        (byte)0xeb,(byte)0xdb,(byte)0x02,(byte)0x00,(byte)0x03,(byte)0x49,
++        (byte)0x00,(byte)0x07,(byte)0x61,(byte)0x64,(byte)0x64,(byte)0x72,
++        (byte)0x65,(byte)0x73,(byte)0x73,(byte)0x49,(byte)0x00,(byte)0x06,
++        (byte)0x66,(byte)0x61,(byte)0x6d,(byte)0x69,(byte)0x6c,(byte)0x79,
++        (byte)0x4c,(byte)0x00,(byte)0x08,(byte)0x68,(byte)0x6f,(byte)0x73,
++        (byte)0x74,(byte)0x4e,(byte)0x61,(byte)0x6d,(byte)0x65,(byte)0x71,
++        (byte)0x00,(byte)0x7e,(byte)0x00,(byte)0x01,(byte)0x78,(byte)0x70,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x02,(byte)0x70,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x70,(byte)0x75,(byte)0x72,
++        (byte)0x00,(byte)0x02,(byte)0x5b,(byte)0x42,(byte)0xac,(byte)0xf3,
++        (byte)0x17,(byte)0xf8,(byte)0x06,(byte)0x08,(byte)0x54,(byte)0xe0,
++        (byte)0x02,(byte)0x00,(byte)0x00,(byte)0x78,(byte)0x70,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x10,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
++        (byte)0x01,(byte)0x78
++    };
++}
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/nio/channels/Selector/LotsOfChannels.java ./jdk/test/java/nio/channels/Selector/LotsOfChannels.java
+--- /tmp/openjdk/jdk/test/java/nio/channels/Selector/LotsOfChannels.java	2013-09-06 14:29:40.000000000 -0400
++++ ./jdk/test/java/nio/channels/Selector/LotsOfChannels.java	2013-12-14 21:14:11.000000000 -0500
+@@ -22,9 +22,10 @@
+  */
+ 
+ /* @test
+- * @bug 4503092
++ * @bug 4503092 8024883
+  * @summary Tests that Windows Selector can use more than 63 channels
+- * @run main/timeout=300 LotsOfChannels
++ * @run main LotsOfChannels
++ * @run main/othervm -Dsun.nio.ch.maxUpdateArraySize=64 LotsOfChannels
+  * @author kladko
+  */
+ 
+diff -ruN -x .hg /tmp/openjdk/jdk/test/java/nio/channels/Selector/SelectorLimit.java ./jdk/test/java/nio/channels/Selector/SelectorLimit.java
+--- /tmp/openjdk/jdk/test/java/nio/channels/Selector/SelectorLimit.java	2013-09-06 14:29:40.000000000 -0400
++++ ./jdk/test/java/nio/channels/Selector/SelectorLimit.java	2013-12-14 21:14:11.000000000 -0500
+@@ -22,12 +22,13 @@
+  */
+ 
+ /* @test
+- * @bug 4777504
++ * @bug 4777504 8024883
+  * @summary Ensure that a Selector can return at least 100 selected keys
+  * @author Mark Reinhold
+  * @library ..
+  * @build SelectorLimit
+  * @run main/othervm SelectorLimit
++ * @run main/othervm -Dsun.nio.ch.maxUpdateArraySize=128 SelectorLimit
+  */
+ 
+ import java.io.*;
+diff -ruN -x .hg /tmp/openjdk/jdk/test/javax/imageio/plugins/jpeg/JpegWriterLeakTest.java ./jdk/test/javax/imageio/plugins/jpeg/JpegWriterLeakTest.java
+--- /tmp/openjdk/jdk/test/javax/imageio/plugins/jpeg/JpegWriterLeakTest.java	2013-09-06 14:29:52.000000000 -0400
++++ ./jdk/test/javax/imageio/plugins/jpeg/JpegWriterLeakTest.java	2013-12-14 21:14:17.000000000 -0500
+@@ -23,7 +23,7 @@
+ 
+ /**
+  * @test
+- * @bug     8020983
++ * @bug     8020983 8024697
+  * @summary Test verifies that jpeg writer instances are collected
+  *          even if destroy() or reset() methods is not invoked.
+  *
+diff -ruN -x .hg /tmp/openjdk/jdk/test/javax/management/remote/mandatory/loading/MissingClassTest.java ./jdk/test/javax/management/remote/mandatory/loading/MissingClassTest.java
+--- /tmp/openjdk/jdk/test/javax/management/remote/mandatory/loading/MissingClassTest.java	2013-09-06 14:29:54.000000000 -0400
++++ ./jdk/test/javax/management/remote/mandatory/loading/MissingClassTest.java	2013-12-14 21:14:09.000000000 -0500
+@@ -23,7 +23,7 @@
+ 
+ /*
+  * @test
+- * @bug 4915825 4921009 4934965 4977469
++ * @bug 4915825 4921009 4934965 4977469 8019584
+  * @summary Tests behavior when client or server gets object of unknown class
+  * @author Eamonn McManus
+  * @run clean MissingClassTest SingleClassLoader
+diff -ruN -x .hg /tmp/openjdk/langtools/.hgtags ./langtools/.hgtags
+--- /tmp/openjdk/langtools/.hgtags	2013-09-06 14:31:03.000000000 -0400
++++ ./langtools/.hgtags	2013-12-14 21:31:53.000000000 -0500
+@@ -301,6 +301,22 @@
+ 17ee569d0c0130824ba27bc1b090114e6075c5f2 jdk7u25-b09
+ 41c1b02cd6a8fa7746752cc911da3dd4d380098d jdk7u25-b10
+ 0da9ef0d9fc5b017f960d65ae0cd07860a259621 jdk7u25-b11
++cf80c545434cfe44034e667079673ce42cc9cdbf jdk7u14-b16
++aecd58f25d7f21827ae1b020ae8cfb44857c439f jdk7u14-b17
++577f9625ec558c18e9de6e3428fd0f9cca823033 jdk7u14-b18
++5168a2c7af619364ddb342674ff880874c3b7897 jdk7u14-b19
++5168a2c7af619364ddb342674ff880874c3b7897 jdk7u14-b19
++e8c876a77def120b5eeb26535d0777c9b9f842f8 jdk7u14-b19
++86ae75a68cc375cfc0559699b5270951aab09eb0 jdk7u14-b20
++c31648d7a6ac692371f1e9abe95bc2856a7dc51c jdk7u14-b21
++eb1c9eacea1f07c07e7e700db624649d3573dae4 jdk7u14-b22
++e84535d2c292032669ac75a6a0afc5f23c708064 jdk7u40-b23
++d2b78e3b352dfb9b0cbd808669f9332e898147ed jdk7u40-b24
++e5635f70fe67192142cb5166bee08cc915a18bc4 jdk7u40-b25
++5bd6f156bc01b6a4e901fc5607663dfc249e9105 jdk7u40-b26
++12506bba2b67cd4b229550da67ff85b984549a28 jdk7u40-b27
++9f2eea2fae59c5242d1bb4cbca967bb6fbb99865 jdk7u40-b28
++bfe3575143fddbf71c2e570b580afef007d171e4 jdk7u40-b29
+ 28358b2489b2ca29c1a6b79f643204da8924a3d7 jdk7u25-b12
+ 5ed8c453480063838b632c74f528924f529361a2 jdk7u25-b13
+ c6342ec6a12f7283e2a73a80a44dcdd3683e2e8b jdk7u25-b14
+@@ -343,3 +359,20 @@
+ 765bea9bfcfc8c472df0a2daced5e576095f46ac jdk7u40-b42
+ 988ece7b686564084770e99ca26746c45ffb933f jdk7u40-b43
+ a67dbf96bf86989d0392cc5b66e5d4139cbceec7 jdk7u40-b60
++9bbfba4981e1db5016bbfbc23025763966021c26 jdk7u45-b01
++61d5b73ae0ac46268490e2f0dfa1f69a5acda73f jdk7u45-b02
++2fe27ae865e723473225756f1920d9d76d47b903 jdk7u45-b03
++bede296dc848533abae859e61584a517df2773ae jdk7u45-b04
++e989f2f2b5cb639a23a5e67da0d52766acf549a2 jdk7u45-b05
++6f492dc935adc6e2878bb6045aee001a829428a7 jdk7u45-b06
++4c51f98e1eb5b8d94dfca08f3b3160ff382b7c3a jdk7u45-b07
++6cf97c9859e731fba6bcff67c46f57dead8d7284 jdk7u45-b08
++a9c31d3f8188b344ed165ec0730ebc2fd11dfa5d jdk7u45-b09
++2c09352066ec34c8608ccff0f933f566a52033af jdk7u45-b10
++53d5c06766b05689cdccfc300b32075878e8aa1d jdk7u45-b11
++0b6aa6e95eb9da58a686edacf5b102116614d3ea jdk7u45-b12
++68862f365075a11dfa291033d05a062590db9337 jdk7u45-b13
++8c799b9f0cd8af3b1cfd151ba075a4f1630967df jdk7u45-b14
++36ae3f206b53f751a0ebf933e5dbf364097b48a5 jdk7u45-b15
++18d1864abca976ca68cb71612e9b20c908455d3d jdk7u45-b16
++b9aeec6b9d5aac0746f8d1764a7740f8b83334ab jdk7u45-b17
+diff -ruN -x .hg /tmp/openjdk/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java ./langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
+--- /tmp/openjdk/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java	2013-09-06 14:31:06.000000000 -0400
++++ ./langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java	2013-12-14 21:11:07.000000000 -0500
+@@ -292,7 +292,7 @@
+             script.addAttr(HtmlAttr.TYPE, "text/javascript");
+             String scriptCode = "<!--" + DocletConstants.NL +
+                     "    if (location.href.indexOf('is-external=true') == -1) {" + DocletConstants.NL +
+-                    "        parent.document.title=\"" + winTitle + "\";" + DocletConstants.NL +
++                    "        parent.document.title=\"" + escapeJavaScriptChars(winTitle) + "\";" + DocletConstants.NL +
+                     "    }" + DocletConstants.NL +
+                     "//-->" + DocletConstants.NL;
+             RawHtml scriptContent = new RawHtml(scriptCode);
+@@ -302,6 +302,53 @@
+     }
+ 
+     /**
++     * Returns a String with escaped special JavaScript characters.
++     *
++     * @param s String that needs to be escaped
++     * @return a valid escaped JavaScript string
++     */
++    private static String escapeJavaScriptChars(String s) {
++        StringBuilder sb = new StringBuilder();
++        for (int i = 0; i < s.length(); i++) {
++            char ch = s.charAt(i);
++            switch (ch) {
++                case '\b':
++                    sb.append("\\b");
++                    break;
++                case '\t':
++                    sb.append("\\t");
++                    break;
++                case '\n':
++                    sb.append("\\n");
++                    break;
++                case '\f':
++                    sb.append("\\f");
++                    break;
++                case '\r':
++                    sb.append("\\r");
++                    break;
++                case '"':
++                    sb.append("\\\"");
++                    break;
++                case '\'':
++                    sb.append("\\\'");
++                    break;
++                case '\\':
++                    sb.append("\\\\");
++                    break;
++                default:
++                    if (ch < 32 || ch >= 127) {
++                        sb.append(String.format("\\u%04X", (int)ch));
++                    } else {
++                        sb.append(ch);
++                    }
++                    break;
++            }
++        }
++        return sb.toString();
++    }
++
++    /**
+      * Returns a content tree for the SCRIPT tag for the main page(index.html).
+      *
+      * @return a content for the SCRIPT tag
+diff -ruN -x .hg /tmp/openjdk/langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java ./langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java
+--- /tmp/openjdk/langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java	2013-09-06 14:31:07.000000000 -0400
++++ ./langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java	2013-12-14 21:11:08.000000000 -0500
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2011, 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
+@@ -501,11 +501,10 @@
+     private void scanIdent() {
+         boolean isJavaIdentifierPart;
+         char high;
++        if (sp == sbuf.length) putChar(ch); else sbuf[sp++] = ch;
++        // optimization, was: putChar(ch);
++        scanChar();
+         do {
+-            if (sp == sbuf.length) putChar(ch); else sbuf[sp++] = ch;
+-            // optimization, was: putChar(ch);
+-
+-            scanChar();
+             switch (ch) {
+             case 'A': case 'B': case 'C': case 'D': case 'E':
+             case 'F': case 'G': case 'H': case 'I': case 'J':
+@@ -522,6 +521,7 @@
+             case '$': case '_':
+             case '0': case '1': case '2': case '3': case '4':
+             case '5': case '6': case '7': case '8': case '9':
++                break;
+             case '\u0000': case '\u0001': case '\u0002': case '\u0003':
+             case '\u0004': case '\u0005': case '\u0006': case '\u0007':
+             case '\u0008': case '\u000E': case '\u000F': case '\u0010':
+@@ -529,30 +529,37 @@
+             case '\u0015': case '\u0016': case '\u0017':
+             case '\u0018': case '\u0019': case '\u001B':
+             case '\u007F':
+-                break;
++                scanChar();
++                continue;
+             case '\u001A': // EOI is also a legal identifier part
+                 if (bp >= buflen) {
+                     name = names.fromChars(sbuf, 0, sp);
+                     token = keywords.key(name);
+                     return;
+                 }
+-                break;
++                scanChar();
++                continue;
+             default:
+                 if (ch < '\u0080') {
+                     // all ASCII range chars already handled, above
+                     isJavaIdentifierPart = false;
+                 } else {
+-                    high = scanSurrogates();
+-                    if (high != 0) {
+-                        if (sp == sbuf.length) {
+-                            putChar(high);
++                    if (Character.isIdentifierIgnorable(ch)) {
++                        scanChar();
++                        continue;
++                    } else {
++                        high = scanSurrogates();
++                        if (high != 0) {
++                            if (sp == sbuf.length) {
++                                putChar(high);
++                            } else {
++                                sbuf[sp++] = high;
++                            }
++                            isJavaIdentifierPart = Character.isJavaIdentifierPart(
++                                Character.toCodePoint(high, ch));
+                         } else {
+-                            sbuf[sp++] = high;
++                            isJavaIdentifierPart = Character.isJavaIdentifierPart(ch);
+                         }
+-                        isJavaIdentifierPart = Character.isJavaIdentifierPart(
+-                            Character.toCodePoint(high, ch));
+-                    } else {
+-                        isJavaIdentifierPart = Character.isJavaIdentifierPart(ch);
+                     }
+                 }
+                 if (!isJavaIdentifierPart) {
+@@ -561,6 +568,9 @@
+                     return;
+                 }
+             }
++            if (sp == sbuf.length) putChar(ch); else sbuf[sp++] = ch;
++            // optimization, was: putChar(ch);
++            scanChar();
+         } while (true);
+     }
+ 
+diff -ruN -x .hg /tmp/openjdk/langtools/test/com/sun/javadoc/testWindowTitle/TestWindowTitle.java ./langtools/test/com/sun/javadoc/testWindowTitle/TestWindowTitle.java
+--- /tmp/openjdk/langtools/test/com/sun/javadoc/testWindowTitle/TestWindowTitle.java	1969-12-31 19:00:00.000000000 -0500
++++ ./langtools/test/com/sun/javadoc/testWindowTitle/TestWindowTitle.java	2013-12-14 21:11:06.000000000 -0500
+@@ -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.
++ *
++ * 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 8016675
++ * @summary Test for window title.
++ * @author Bhavesh Patel
++ * @library ../lib/
++ * @build JavadocTester TestWindowTitle
++ * @run main TestWindowTitle
++ */
++
++public class TestWindowTitle extends JavadocTester {
++
++    private static final String BUG_ID = "8016675";
++    private static final String WIN_TITLE =
++            "Testing \"Window 'Title'\" with a \\ backslash and a / " +
++            "forward slash and a \u00e8 unicode char also a    tab and also a " +
++            "\t special character another \u0002 unicode)";
++    private static final String[][] TEST = {
++        {BUG_ID + FS  + "overview-summary.html",
++            "parent.document.title=\"Overview (Testing \\\"Window \\\'Title\\\'\\\" " +
++            "with a \\\\ backslash and a / forward slash and a \\u00E8 unicode char " +
++            "also a    tab and also a \\t special character another \\u0002 unicode))\";"
++        },
++    };
++    private static final String[][] NEG_TEST = {
++        {BUG_ID + FS + "overview-summary.html",
++            "parent.document.title=\"Overview (Testing \"Window \'Title\'\" " +
++            "with a \\ backslash and a / forward slash and a \u00E8 unicode char " +
++            "also a    tab and also a \t special character another \u0002 unicode))\";"
++        },
++    };
++    private static final String[] ARGS = new String[]{
++        "-d", BUG_ID, "-windowtitle", WIN_TITLE, "-sourcepath", SRC_DIR, "p1", "p2"
++    };
++
++    /**
++     * The entry point of the test.
++     * @param args the array of command line arguments.
++     */
++    public static void main(String[] args) {
++        TestWindowTitle tester = new TestWindowTitle();
++        run(tester, ARGS, TEST, NEG_TEST);
++        tester.printSummary();
++    }
++
++    /**
++     * {@inheritDoc}
++     */
++    public String getBugId() {
++        return BUG_ID;
++    }
++
++    /**
++     * {@inheritDoc}
++     */
++    public String getBugName() {
++        return getClass().getName();
++    }
++}
+diff -ruN -x .hg /tmp/openjdk/langtools/test/com/sun/javadoc/testWindowTitle/p1/C1.java ./langtools/test/com/sun/javadoc/testWindowTitle/p1/C1.java
+--- /tmp/openjdk/langtools/test/com/sun/javadoc/testWindowTitle/p1/C1.java	1969-12-31 19:00:00.000000000 -0500
++++ ./langtools/test/com/sun/javadoc/testWindowTitle/p1/C1.java	2013-12-14 21:11:06.000000000 -0500
+@@ -0,0 +1,27 @@
++/*
++ * 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.
++ */
++
++package p1;
++
++public class C1 {
++}
+diff -ruN -x .hg /tmp/openjdk/langtools/test/com/sun/javadoc/testWindowTitle/p2/C2.java ./langtools/test/com/sun/javadoc/testWindowTitle/p2/C2.java
+--- /tmp/openjdk/langtools/test/com/sun/javadoc/testWindowTitle/p2/C2.java	1969-12-31 19:00:00.000000000 -0500
++++ ./langtools/test/com/sun/javadoc/testWindowTitle/p2/C2.java	2013-12-14 21:11:06.000000000 -0500
+@@ -0,0 +1,27 @@
++/*
++ * 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.
++ */
++
++package p2;
++
++public class C2 {
++}
+diff -ruN -x .hg /tmp/openjdk/langtools/test/tools/javac/7144981/IgnoreIgnorableCharactersInInput.java ./langtools/test/tools/javac/7144981/IgnoreIgnorableCharactersInInput.java
+--- /tmp/openjdk/langtools/test/tools/javac/7144981/IgnoreIgnorableCharactersInInput.java	1969-12-31 19:00:00.000000000 -0500
++++ ./langtools/test/tools/javac/7144981/IgnoreIgnorableCharactersInInput.java	2013-12-14 21:11:07.000000000 -0500
+@@ -0,0 +1,92 @@
++
++/*
++ * @test  /nodynamiccopyright/
++ * @bug 7144981
++ * @summary javac should ignore ignorable characters in input
++ * @run main IgnoreIgnorableCharactersInInput
++ */
++
++import com.sun.source.util.JavacTask;
++import java.io.File;
++import java.net.URI;
++import java.util.Arrays;
++import java.util.Set;
++import java.util.TreeSet;
++import javax.tools.JavaCompiler;
++import javax.tools.JavaFileObject;
++import javax.tools.SimpleJavaFileObject;
++import javax.tools.ToolProvider;
++
++public class IgnoreIgnorableCharactersInInput {
++
++    public static void main(String... args) throws Exception {
++        new IgnoreIgnorableCharactersInInput().run();
++    }
++
++    void run() throws Exception {
++        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
++        File classesDir = new File(System.getProperty("user.dir"), "classes");
++        classesDir.mkdirs();
++        JavaSource[] sources = new JavaSource[]{
++            new JavaSource("TestOneIgnorableChar", "AA\\u0000BB"),
++            new JavaSource("TestMultipleIgnorableChar", "AA\\u0000\\u0000\\u0000BB")};
++        JavacTask ct = (JavacTask)comp.getTask(null, null, null,
++                Arrays.asList("-d", classesDir.getPath()),
++                null, Arrays.asList(sources));
++        try {
++            if (!ct.call()) {
++                throw new AssertionError("Error thrown when compiling test cases");
++            }
++        } catch (Throwable ex) {
++            throw new AssertionError("Error thrown when compiling test cases");
++        }
++        check(classesDir,
++                "TestOneIgnorableChar.class",
++                "TestOneIgnorableChar$AABB.class",
++                "TestMultipleIgnorableChar.class",
++                "TestMultipleIgnorableChar$AABB.class");
++        if (errors > 0)
++            throw new AssertionError("There are some errors in the test check the error output");
++    }
++
++    /**
++     *  Check that a directory contains the expected files.
++     */
++    void check(File dir, String... paths) {
++        Set<String> found = new TreeSet<String>(Arrays.asList(dir.list()));
++        Set<String> expect = new TreeSet<String>(Arrays.asList(paths));
++        if (found.equals(expect))
++            return;
++        for (String f: found) {
++            if (!expect.contains(f))
++                error("Unexpected file found: " + f);
++        }
++        for (String e: expect) {
++            if (!found.contains(e))
++                error("Expected file not found: " + e);
++        }
++    }
++
++    int errors;
++
++    void error(String msg) {
++        System.err.println(msg);
++        errors++;
++    }
++
++    class JavaSource extends SimpleJavaFileObject {
++
++        String internalSource =
++            "public class #O {public class #I {} }";
++        public JavaSource(String outerClassName, String innerClassName) {
++            super(URI.create(outerClassName + ".java"), JavaFileObject.Kind.SOURCE);
++            internalSource =
++                    internalSource.replace("#O", outerClassName).replace("#I", innerClassName);
++        }
++
++        @Override
++        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
++            return internalSource;
++        }
++    }
++}

Added: users/landonf/openjdk7/dports/java/openjdk7/files/patch-src-os-bsd-vm-os_bsd.cpp
===================================================================
--- users/landonf/openjdk7/dports/java/openjdk7/files/patch-src-os-bsd-vm-os_bsd.cpp	                        (rev 0)
+++ users/landonf/openjdk7/dports/java/openjdk7/files/patch-src-os-bsd-vm-os_bsd.cpp	2013-12-15 03:02:45 UTC (rev 114776)
@@ -0,0 +1,17 @@
+--- hotspot/src/os/bsd/vm/os_bsd.cpp.orig	2013-12-14 18:02:46.000000000 -0500
++++ hotspot/src/os/bsd/vm/os_bsd.cpp	2013-12-14 18:09:41.000000000 -0500
+@@ -459,7 +459,13 @@
+ 
+ #ifdef __APPLE__
+ #define SYS_EXTENSIONS_DIR   "/Library/Java/Extensions"
+-#define SYS_EXTENSIONS_DIRS  SYS_EXTENSIONS_DIR ":/Network" SYS_EXTENSIONS_DIR ":/System" SYS_EXTENSIONS_DIR ":/usr/lib/java"
++#define SYS_EXTENSIONS_DIRS  \
++	"@@PREFIX@@" SYS_EXTENSIONS_DIR \
++	":" SYS_EXTENSIONS_DIR \
++	":/Network" SYS_EXTENSIONS_DIR \
++	":/System" SYS_EXTENSIONS_DIR \
++	":@@PREFIX@@/lib/java" \
++	":/usr/lib/java"
+         const char *user_home_dir = get_home();
+         // the null in SYS_EXTENSIONS_DIRS counts for the size of the colon after user_home_dir
+         int system_ext_size = strlen(user_home_dir) + sizeof(SYS_EXTENSIONS_DIR) +
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20131214/f982aeeb/attachment-0001.html>


More information about the macports-changes mailing list