Sync BaseTool trunk (version r2649) into EDKII BaseTools.
authorGao, Liming <liming.gao@intel.com>
Mon, 27 Jan 2014 05:23:15 +0000 (05:23 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 27 Jan 2014 05:23:15 +0000 (05:23 +0000)
Signed-off-by: Gao, Liming <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15188 6f19259b-4bc3-4df7-8a09-765794883524

96 files changed:
BaseTools/Bin/Win32/BPDG.exe
BaseTools/Bin/Win32/BootSectImage.exe
BaseTools/Bin/Win32/EfiLdrImage.exe
BaseTools/Bin/Win32/EfiRom.exe
BaseTools/Bin/Win32/GenBootSector.exe
BaseTools/Bin/Win32/GenCrc32.exe
BaseTools/Bin/Win32/GenDepex.exe
BaseTools/Bin/Win32/GenFds.exe
BaseTools/Bin/Win32/GenFfs.exe
BaseTools/Bin/Win32/GenFv.exe
BaseTools/Bin/Win32/GenFw.exe
BaseTools/Bin/Win32/GenPage.exe
BaseTools/Bin/Win32/GenPatchPcdTable.exe
BaseTools/Bin/Win32/GenSec.exe
BaseTools/Bin/Win32/GenVtf.exe
BaseTools/Bin/Win32/LzmaCompress.exe
BaseTools/Bin/Win32/PatchPcdValue.exe
BaseTools/Bin/Win32/Split.exe
BaseTools/Bin/Win32/TargetTool.exe
BaseTools/Bin/Win32/TianoCompress.exe
BaseTools/Bin/Win32/Trim.exe
BaseTools/Bin/Win32/UPT.exe
BaseTools/Bin/Win32/VfrCompile.exe
BaseTools/Bin/Win32/VolInfo.exe
BaseTools/Bin/Win32/build.exe
BaseTools/Conf/XMLSchema/DistributionPackage.xsd
BaseTools/Conf/tools_def.template
BaseTools/Source/C/GNUmakefile
BaseTools/Source/C/GenFw/Elf32Convert.c
BaseTools/Source/C/GenFw/Elf32Convert.h
BaseTools/Source/C/GenFw/Elf64Convert.c
BaseTools/Source/C/GenFw/Elf64Convert.h
BaseTools/Source/C/GenFw/ElfConvert.c
BaseTools/Source/C/GenFw/ElfConvert.h
BaseTools/Source/C/GenFw/GenFw.h
BaseTools/Source/C/GenFw/elf32.h
BaseTools/Source/C/GenFw/elf64.h
BaseTools/Source/C/GenFw/elf_common.h
BaseTools/Source/C/Include/Arm/ProcessorBind.h
BaseTools/Source/C/Include/Common/BuildVersion.h
BaseTools/Source/C/Makefiles/NmakeSubdirs.bat
BaseTools/Source/C/Makefiles/app.makefile
BaseTools/Source/C/Makefiles/footer.makefile
BaseTools/Source/C/Makefiles/ms.app
BaseTools/Source/C/Makefiles/ms.common
BaseTools/Source/C/Makefiles/ms.lib
BaseTools/Source/C/Makefiles/ms.rule
BaseTools/Source/C/PyEfiCompressor/Makefile
BaseTools/Source/C/PyUtility/Makefile
BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools/Source/C/VolInfo/VolInfo.c
BaseTools/Source/C/VolInfo/VolInfo.h
BaseTools/Source/Python/AutoGen/BuildEngine.py
BaseTools/Source/Python/AutoGen/GenC.py
BaseTools/Source/Python/AutoGen/GenMake.py
BaseTools/Source/Python/Common/BuildToolError.py
BaseTools/Source/Python/Common/BuildVersion.py
BaseTools/Source/Python/Common/EdkLogger.py
BaseTools/Source/Python/Common/GlobalData.py
BaseTools/Source/Python/Common/Misc.py
BaseTools/Source/Python/Ecc/CLexer.py
BaseTools/Source/Python/Ecc/CParser.py
BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py
BaseTools/Source/Python/Ecc/Xml/__init__.py
BaseTools/Source/Python/Eot/CLexer.py
BaseTools/Source/Python/Eot/CParser.py
BaseTools/Source/Python/Eot/FvImage.py
BaseTools/Source/Python/GenFds/EfiSection.py
BaseTools/Source/Python/GenFds/Fv.py
BaseTools/Source/Python/GenFds/GenFds.py
BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
BaseTools/Source/Python/GenPatchPcdTable/GenPatchPcdTable.py
BaseTools/Source/Python/PatchPcdValue/PatchPcdValue.py
BaseTools/Source/Python/Trim/Trim.py
BaseTools/Source/Python/UPT/BuildVersion.py
BaseTools/Source/Python/UPT/Core/__init__.py
BaseTools/Source/Python/UPT/GenMetaFile/__init__.py
BaseTools/Source/Python/UPT/Library/ExpressionValidate.py
BaseTools/Source/Python/UPT/Library/GlobalData.py
BaseTools/Source/Python/UPT/Library/Misc.py
BaseTools/Source/Python/UPT/Library/Xml/__init__.py
BaseTools/Source/Python/UPT/Library/__init__.py
BaseTools/Source/Python/UPT/Logger/Log.py
BaseTools/Source/Python/UPT/Logger/ToolError.py
BaseTools/Source/Python/UPT/Xml/__init__.py
BaseTools/Source/Python/Workspace/MetaFileParser.py
BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
BaseTools/Source/Python/sitecustomize.py
BaseTools/Tests/CToolsTests.py
BaseTools/Tests/CheckPythonSyntax.py
BaseTools/Tests/PythonToolsTests.py
BaseTools/Tests/RunTests.py
BaseTools/Tests/TestTools.py
BaseTools/Tests/TianoCompress.py
BaseTools/building-gcc.txt

index 76186caddd11509d0bda276a97f58dcf4b42b76e..7e7a62192f44e482852065f04934f7aba3c342c5 100644 (file)
Binary files a/BaseTools/Bin/Win32/BPDG.exe and b/BaseTools/Bin/Win32/BPDG.exe differ
index 7e4bd4dd16ce385ad47e5158ac5ed8af3322bc93..a2ea5caf229f039e00e55253d9fd1599d02696e0 100755 (executable)
Binary files a/BaseTools/Bin/Win32/BootSectImage.exe and b/BaseTools/Bin/Win32/BootSectImage.exe differ
index 45219e3c38c7c3d2d896692f7d445fbc3ec813af..a417b3052f097a717a6f0ba7db3ffec34d6e4043 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiLdrImage.exe and b/BaseTools/Bin/Win32/EfiLdrImage.exe differ
index bec9d9bcc2115038835859a96066d44fccb4114a..306e2da4cfb73474342196cdd337ae68120e8abc 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiRom.exe and b/BaseTools/Bin/Win32/EfiRom.exe differ
index ac0abfb5b7102e07fc890d8cf221ebc360ecda28..c87126002e8d6702dc706a1cf80967d1e2e06fa3 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenBootSector.exe and b/BaseTools/Bin/Win32/GenBootSector.exe differ
index 3f4c4d8ab4d89879f711c614b26b0c9f245fda73..3d21de0df4aa59a533a333fe271cee0d730bfa2f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenCrc32.exe and b/BaseTools/Bin/Win32/GenCrc32.exe differ
index 3f7452a38c81030c98d1f7d0c7dffbccea9761e8..540efbdd3bb2877d48463ada36b19e00eccc476e 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenDepex.exe and b/BaseTools/Bin/Win32/GenDepex.exe differ
index 2c7783bc309740a006a7bc92d008932a6e4a18da..0fe530a57f96180a87dcb46eebac7b82d241bb48 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFds.exe and b/BaseTools/Bin/Win32/GenFds.exe differ
index ad788da1948337aa7a048f2d0a0b15955afe8098..bd8d39f347035428355a87322b4bdc78be4f5315 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFfs.exe and b/BaseTools/Bin/Win32/GenFfs.exe differ
index c99b15c2be4179254625ba3ce76743f30d037cbb..e41175ec64ead24b79dbf6d49c542e06f732a32c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFv.exe and b/BaseTools/Bin/Win32/GenFv.exe differ
index df4199eca8b703ba51e86d83cfa3c2ae4d33847c..1c262ce07decca9d266ebb245987ebac8e7c015c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFw.exe and b/BaseTools/Bin/Win32/GenFw.exe differ
index a1d26dde3d148b7d50f7454a8ef4a1f9370548a5..ff4a21b255276183e6878afe449abfae155ce22c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPage.exe and b/BaseTools/Bin/Win32/GenPage.exe differ
index b551b21f761010872be314a06de317b8b48ecd98..6195250cf1e6f4a5b65bdd69114c3a9e1a1a1970 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPatchPcdTable.exe and b/BaseTools/Bin/Win32/GenPatchPcdTable.exe differ
index 8043691303fe34647a20fe1178474f403a5f1621..8ee01992360eb87496f4183e78b6909526f22ee2 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenSec.exe and b/BaseTools/Bin/Win32/GenSec.exe differ
index 3a0324cd4d3ed5648fd1997b5edcab612d173ce9..f3689914fe0fdaaba021332f52ee82746ca494f1 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenVtf.exe and b/BaseTools/Bin/Win32/GenVtf.exe differ
index b4915d657e665c5d7d4b78296468dbfede749124..f6dd28acf16ce20e48f1438c731c1610330c1292 100755 (executable)
Binary files a/BaseTools/Bin/Win32/LzmaCompress.exe and b/BaseTools/Bin/Win32/LzmaCompress.exe differ
index dc145cdef3f23c11c3c2e49ec435b0b41e46ff69..00d66c98c4e87fec8d1a585a0371c964f8d5ff4c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/PatchPcdValue.exe and b/BaseTools/Bin/Win32/PatchPcdValue.exe differ
index 9ea9592246257fc2a38cc4da2507a0f914cfc8c4..c8b56ecacf9b7ce125ba2c26a5682e1f890e2ac8 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Split.exe and b/BaseTools/Bin/Win32/Split.exe differ
index 6cda989ca69927dbca77852c19e8370f9dd0836a..eb436e2de59f435adebd9734b11d3878b1f13a4a 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TargetTool.exe and b/BaseTools/Bin/Win32/TargetTool.exe differ
index 0c756484b7ce8e9408af3166daf1613f824de37b..d48a3e1e1f73271d499820fab6ffa8ad9404112f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TianoCompress.exe and b/BaseTools/Bin/Win32/TianoCompress.exe differ
index feb0b1d9556de6f4dff7f108811ef36209abac9a..18ff1a6276b7ab7d2234e1f637a0a528da2c0011 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Trim.exe and b/BaseTools/Bin/Win32/Trim.exe differ
index bea44d9e0d8c02f49b779a01a4862aa7c01dbafb..684e12bb7cce705dfa6df90b96d13105c2372167 100644 (file)
Binary files a/BaseTools/Bin/Win32/UPT.exe and b/BaseTools/Bin/Win32/UPT.exe differ
index a35a4893eab79bb2d2d5f32945197e5475eb4558..c177920caa7592224c64c9e6427f038fcbc9e868 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VfrCompile.exe and b/BaseTools/Bin/Win32/VfrCompile.exe differ
index 0ef74aa94347b62a21356dfba6eae03f3e0a7c60..cfc971a97221d7c95d0995a029ab3bd6ac9e388b 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VolInfo.exe and b/BaseTools/Bin/Win32/VolInfo.exe differ
index c7aaa98dbccfb9278d21cfd5e6872303da7917b9..5953fa3d044d55bfb55c3c521649638ed7fcd8a8 100755 (executable)
Binary files a/BaseTools/Bin/Win32/build.exe and b/BaseTools/Bin/Win32/build.exe differ
index c1f2184ca620c2afc960b1e48223a106c29b170f..5fbbd59f93c7aee14163f3cfec3d2a974ed7b9bf 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Filename: DistributionPackage.xsd
-
-Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.
-
-This program and the accompanying materials are licensed and made available 
-under the terms and conditions of the BSD License which may be found at 
-    http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
-    targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">
-    <xs:element name="DistributionPackage">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package description (PKG)
-                file. It describes the content of:</xs:documentation>
-            <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>
-            <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary format. (Note that Binary format
-                is for FFS leaf section file types only, complete FFS files cannot be distributed using this
-                distribution format.) </xs:documentation>
-            <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify the binary images to
-                create UEFI/PI compliant images. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other miscellaneous content
-                that is not specific to UEFI/PI images. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of packages, while the
-                Module Surface Area provides information relevant to source and/or binary distributions.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This header contains (legal) information usually required
-                            for distributing both binary and/or source code. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Packages are groups of files and/or modules that are similar
-                            in nature.</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a package GUID and a
-                            package version. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> A package can declare public mappings of C names to GUID
-                            values. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> A package can provide header files for library classes
-                            and/or other industry standard definitions. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> A package can also declare public mappings of platform
-                            configuration database (PCD) &quot;knobs&quot; to control features and operation of modules
-                            within a platform. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Finally, a package lists the library instances and/or
-                            modules that are provided in a distribution package. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant modules in this
-                            distribution that are NOT part of a Package. Every module that is provided as part of a
-                            package needs to be described in a PackageSurfaceArea.Modules section. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section describes how each module in a
-                            distribution is coded, or, in the case of a binary module distribution, how it was built. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules are uniquely
-                            identified by the Module's GUID and version number. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> This section will typically be used for modules that don't
-                            require any additional files that would be included in a package. For example, the Enhanced
-                            FAT driver binary does not need to have a package description, as no additional files are
-                            provided. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is for distributing vendor specific executable
-                            tools, tool source code and/or configuration files. These tools are primarily for
-                            manipulating code and/or binary images. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create source code files
-                            and build scripts. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain types of text/unicode
-                            files. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 5) Implement external encoding/decoding/signature/GUIDed
-                            tools. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 6) Distribution Package create/install/remove tools.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The list of miscellaneous files in this distribution. Any
-                            files that are not listed in either the Package, Module or Tools sections can be listed
-                            here. This section can be used to distribute specifications for packages and modules that
-                            are not &quot;industry standards&quot; such as a specification for a chipset or a video
-                            device. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The UserExtensions section is used to disseminate processing
-                            instructions that may be custom to the content provided by the distribution. This section
-                            contains information that is common to all aspects of this disribution. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-            </xs:sequence>
-
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the DistributionPackage Description  -->
-
-    <xs:element name="DistributionHeader">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> This section defines the content of the UEIF/PI compliant Distribution
-                Package Header. This is the only required element of a UEFI/PI compliant distribution package.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="1" maxOccurs="1" name="Name">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Distribution
-                            Package. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely identified by it's
-                            GUID and Version number. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:normalizedString">
-                                <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> The reference name of the Distribution
-                                            Package file. This single word name can be used by tools as a keyword or for
-                                            directory and/or file creation. </xs:documentation>
-                                        <xs:documentation xml:lang="en-us"> White space and special characters (dash and
-                                            underscore characters may be used) are not permitted in this name.
-                                        </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version attribute uniquely
-                            identify this Distribution Package. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Backward compatible releases of a distribution package need
-                            only change the version number, while non-backward compatible changes require the GUID to
-                            change (resetting the version number to 1.0 is optional.) </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="RegistryFormatGuid">
-                                <xs:attribute name="Version" type="xs:decimal" use="required">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> This value, along with the GUID, is used to
-                                            uniquely identify this object. The higher the number, the more recent the
-                                            content. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A string identifying who created this distribution package.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The date and time this distribution was created. The format
-                            is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator
-                            between the calendar date and the time. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The copyright for this file that is generated by the creator
-                            of the distribution. If a derivative work is generated from an existing distribution, then
-                            the existing copyright must be maintained, and additional copyrights may be appended to the
-                            end of this element. It may also be the primary copyright for all code provided in the
-                            Distribution Package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:string">
-                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                    
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="unbounded" name="License">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A license that describes any restrictions on the use of this
-                            distribution. If a derivative work is allowed by the original license and a derivative work
-                            is generated from an existing distribution, then the existing license must be maintained,
-                            and additional licenses may be appended to the end of this element. It may also be the
-                            primary license for all code provided in the distribution file. Alternatively, this may
-                            point to a filename that contains the License. The file (included in the content zip file)
-                            will be stored in the same location as the distribution package's .pkg file.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:string">
-                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A one line description of the Distribution Package.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:normalizedString">
-                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A complete description of the Distribution Package. This
-                            description may include the release name of the file, the version of the file, and a
-                            complete description of the file contents and/or features including a description of the
-                            updates since the previous file release. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:string">
-                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The packaging utilities will use this MD5 sum value of the
-                            included ZIP file containing files and/or code. If this element is not present, then
-                            installation tools should assume that the content is correct, or that other methods may be
-                            needed to verify content. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> #1 Updated to present date and new version which is
-                            important to reflect the present state of the matter</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of UNDEFIND type 2 is
-                            important since there is a large body of legacy code for which the GUID’s and other
-                            code/data objects were not decorated with their usage. This document will allow for
-                            importing today’s source artifacts and producing decorations using the ‘Undefined’ versus
-                            having an error</xs:documentation>
-                        <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future architecture
-                            types</xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-            </xs:sequence>
-            <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> If set to true, all content within this Distribution Package
-                        should NOT be modified. The default permits modification of all content. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> If set to true, then the content can be repackaged into another
-                        distribution package. The default prohibits repackaging the Distribution content.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the DistributionHeader element. -->
-
-    <xs:element name="PackageSurfaceArea">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> A package is a collection of related objects - Includes, Libraries and
-                Modules. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> Each package is uniquely identified by it's GUID and Version number.
-                Backward compatible releases of a package need only change the version number, while non-backward
-                compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-
-                <xs:element minOccurs="1" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Name">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the User Interface Name for this
-                                        package. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> This is a single word BaseName
-                                                        of the package. This BaseName can be used by tools as a keyword
-                                                        and for directory/file creation. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
-                                        identify a given package. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal" use="required">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> This value, along with the GUID,
-                                                        is used to uniquely identify this object. </xs:documentation>
-                                                    <xs:documentation xml:lang="en-us"> Backward compatible changes must
-                                                        make sure this number is incremented from the most recent
-                                                        version. Non-backward compatible changes require a new GUID, and
-                                                        the version can be reset. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> If the package requires a different copyright
-                                        than the distribution package, this element can list one or more copyright
-                                        lines. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> If the package requires licenses that are
-                                        different from the distribution package license, this element can contain one or
-                                        more license text paragraphs (or license filenames.) </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A one line description of this package.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A complete description of a package. This
-                                        description may include the release name of the package, the version of the
-                                        package, and a complete description of the package contents and/or features
-                                        including a description of the updates since the previous package’s release.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This element is the location (in the ZIP file)
-                                        for the root directory of a package. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea Header element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The term cloned is used here to indicate that this package
-                            as been copied and modified to a completely different package. An example might be for a new
-                            generation of chipsets that have few or no elements in common with the original.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
-                                        identify the Package that this Package was copied from. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal" use="required">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> This value, along with the GUID,
-                                                        is used to uniquely identify the package that this package was
-                                                        cloned from. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea ClonedFrom element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> Library Classes are public interfaces that can be used by
-                            modules. One or more library instances can implement a library class, however only one
-                            library instance can be linked to an individual module. This provides the platform
-                            integrator with the flexibility of choosing one library instance's implementation over a
-                            different library instance. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> The header file provides definitions
-                                                    and function prototypes for a library class. Modules can be coded
-                                                    against these functions, using the definitions in this header,
-                                                    without concerning themselves about the libraries' implementation
-                                                    details. This is a PackagePath relative path and filename for the
-                                                    include file. </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                    <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This GUID and the
-                                                            Version attribute uniquely identify the Recommended Library
-                                                            Instance. </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="RegistryFormatGuid">
-                                                            <xs:attribute name="Version" type="xs:decimal"
-                                                            use="optional">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This value, along with
-                                                            the GUID, is used to uniquely identify this object. If this
-                                                            value is not specified, then any version of the library
-                                                            instance is recommended. </xs:documentation>
-                                                            </xs:annotation>
-                                                            </xs:attribute>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Keyword" type="xs:NCName" use="required">
-                                        <xs:annotation>
-                                            <xs:documentation xml:lang="en-us"> The single word name of the Library
-                                                Class that module developers will use to identify a library class
-                                                dependency. </xs:documentation>
-                                        </xs:annotation>
-                                    </xs:attribute>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea LibraryClassDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to list header files for industry
-                            standards not under the auspices of UEFI.org. For example, headers that contain definitions
-                            and data structures for the USB specifications. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> The package relative path and
-                                                    filename (in the content zip file) of the industry standard include
-                                                    file. </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea IndustryStdIncludes element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> All top level header files that are included by a package
-                            that are not listed above. They cannot be:</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This is the Package relative path
-                                                    and filename location within the content ZIP file.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                    <xs:extension base="xs:anyURI">
-                                                        <xs:attributeGroup ref="SupportedArchMod"/>
-                                                    </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea PackageIncluces element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Modules">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This section lists the Module Surface Area for
-                                        all modules provided with this package. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea Modules element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID C names to GUID
-                            values as a Registry Format GUID. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must specify their dependency
-                            on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
-                                            type="RegistryFormatGuid"/>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
-                                    <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea GuidDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section defines the mapping of Protocol C names to GUID
-                            values as a Registry Format GUID. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these Protocols must specify their
-                            dependency on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Individual Protocol Declarations
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
-                                            type="RegistryFormatGuid"/>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea ProtocolDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi C names to GUID
-                            values as a Registry Format GUID. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify their dependency on
-                            this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
-                                            type="RegistryFormatGuid"/>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea PpiDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to declare platform configuration knobs
-                            that are defined by this package. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these PCD values must specify their
-                            dependency on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname"
-                                            type="xs:NCName">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Specifies the C name of the Token
-                                                    Space GUID of which this PCD Entry is a member. This C name should
-                                                    also be listed in the GUIDs section, (specified above,) where the C
-                                                    name is assigned to a GUID value. </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="Token">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Specifies the 32-bit token value for
-                                                    this PCD Entry. The Token number must be unique to the Token Space
-                                                    that declares the PCD. </xs:documentation>
-                                                <xs:documentation xml:lang="en-us"> The minLength of 3 is required to
-                                                    handle the "0x" prefix to the hex number. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:simpleType>
-                                                <xs:restriction base="HexNumber">
-                                                    <xs:minLength value="3"/>
-                                                    <xs:maxLength value="10"/>
-                                                </xs:restriction>
-                                            </xs:simpleType>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> A string that contains the data type
-                                                    of this PCD Entry. PCD data types are restricted to the following
-                                                    set:UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> A string that contains one or more
-                                                    PCD Item types separated by spaces. The PCD Item types are
-                                                    restricted to FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
-                                            type="xs:normalizedString"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This is a recommended maximum data
-                                                    size for VOID* data types, the actual value should be defined by the
-                                                    Platform Integrator. It is not required for the other data types. </xs:documentation>
-                                                <xs:documentation xml:lang="en-us"> The minLength of 3 is required to
-                                                    handle the "0x" prefix to the hex number. </xs:documentation>
-
-                                            </xs:annotation>
-                                            <xs:simpleType>
-                                                <xs:restriction base="HexNumber">
-                                                    <xs:minLength value="3"/>
-                                                </xs:restriction>
-                                            </xs:simpleType>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-US"> This entry contains prompt
-                                                    information, that may used by tools to assist platform integrators
-                                                    with choosing the correct values </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                    <xs:extension base="xs:string">
-                                                        <xs:attribute name="Lang" type="xs:language" default="en-us"
-                                                            use="optional"/>
-                                                    </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-
-                                        <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Valid Error messages that may be
-                                                    implemented in a module for the PCD Entry. Only One Error Number per
-                                                    PcdError, (multiple ErrorMessage entries are permitted) and multiple
-                                                    PcdError elements are permitted. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                    <xs:choice minOccurs="1" maxOccurs="1">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> One of the following
-                                                            types of comparisons, which must be able to evaluate to
-                                                            either true or false. </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The PCD Value must be
-                                                            space separated list of values. Values are restricted to the
-                                                            data type of this PCD. </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="xs:normalizedString">
-                                                            <xs:attribute name="Lang" type="xs:language" use="optional"
-                                                            />
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                            </xs:complexType>
-                                                        </xs:element>
-                                                        <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange"
-                                                            type="xs:normalizedString">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The PCD must be within a
-                                                            specifed range of numeric values. Restricted to C style
-                                                            Relational, Equality and Logicial Operators and parenthesis
-                                                            are valid. Only the CName for this PCD is permitted in the
-                                                            ValidValueRange expression. All other values must be
-                                                            numeric.</xs:documentation>
-                                                            <xs:documentation xml:lang="en-us"> LValue (op RValue)+
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                        </xs:element>
-                                                        <xs:element minOccurs="0" maxOccurs="1" name="Expression"
-                                                            type="xs:normalizedString">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> A in-fix logical
-                                                            expression using C style logical operators.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                        </xs:element>
-                                                    </xs:choice>
-                                                    <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> A hexadecimal value for
-                                                            the error message as defined by specifications. </xs:documentation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number. </xs:documentation>
-
-                                                        </xs:annotation>
-                                                        <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            </xs:restriction>
-                                                        </xs:simpleType>
-                                                    </xs:element>
-                                                    <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This string should be
-                                                            defined by specifications. There are pre-defined error
-                                                            number ranges in the UEFI/PI specificaiton.
-                                                            </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="xs:string">
-                                                            <xs:attribute name="Lang" type="xs:language" default="en-us"
-                                                            use="optional"/>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                    </xs:sequence>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea PcdDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to describe any PCD interdependencies
-                            or relationships. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This entry must used
-                                        TokenSpaceGuidCName.PcdCname for every named PCD. Restricted to Relational,
-                                        Equality and Logical Operators (NOT, AND, OR, GT, GE, EQ, LE, LT and XOR) and
-                                        parenthesis are valid. Only the TokenSpaceGuidCName.PcdCname us permitted to
-                                        name PCDs in the expression. All other values must be numeric. </xs:documentation>
-                                    <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section contains files that are not part of the code
-                            distributed with this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Only required if different from the Package
-                                        Copyright. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Only required if different from the Package
-                                        License. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A one line description of this section's
-                                        content. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A complete description of the files in this
-                                        section. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the PackagePath relative path and
-                                        filename location within the ZIP file. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:anyURI">
-                                            <xs:attribute name="Executable" type="xs:boolean" default="false"
-                                                use="optional">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> If true, used by installation
-                                                        tools to ensure that a file that must be executable has the
-                                                        correct properties to permit execution. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea Misc element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used for any processing instructions that
-                            may be custom to the content provided by this package that are common to this package.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType mixed="true">
-                        <xs:sequence>
-                            <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="UserId" type="xs:NCName" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping
-                                    similar content that does not fit into previously defined sections or other sections
-                                    of the Distribution. </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="Identifier" type="xs:string" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This can be used to differentiate multiple sections
-                                    with a grouping. </xs:documentation>
-                                <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might indicate
-                                    specific steps and tools required before processing module content, while a
-                                    different UserExtensions section with a POST_PROCESS Identifier might describe steps
-                                    that need to be executed after operations on the modules in this package.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:anyAttribute processContents="lax"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea UserExtensions element. -->
-
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the PackageSurfaceArea element. -->
-
-    <xs:element name="ModuleSurfaceArea">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> Each module is uniquely identified by it's GUID and Version number.
-                Backward compatible releases of a module need only change the version number, while non-backward
-                compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-
-                <xs:element minOccurs="1" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Name">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Module.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> This is a single word BaseName
-                                                        that will be used to create a module meta-data file. </xs:documentation>
-                                                    <xs:documentation xml:lang="en-us"> This name should also be used to
-                                                        create output file names and directories. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
-                                        identify a given Module. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal" use="required">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> This value, along with the GUID,
-                                                        is used to uniquely identify this object. </xs:documentation>
-                                                    <xs:documentation xml:lang="en-us"> Backward compatible changes must
-                                                        make sure this number is incremented from the most recent
-                                                        version. Non-backward compatible changes require a new GUID, and
-                                                        the version can be reset. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
-                                        different from either the Package or Distribution copyright. Multiple copyright
-                                        lines are permitted within this section. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the license is
-                                        different from either the Package or Distribution license. Multiple licenses are
-                                        permitted within this section. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A brief text description of the module.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A complete description of the module contents
-                                        and/or features including a description of the updates since the previous module
-                                        release. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Module Surface Area Header Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> List general information about a module, including the
-                            Supported Architectures, this module's type, specifications the module is coded against, and
-                            other informational content. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> One of the Enumerated module types that limit
-                                        the use of a module. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> For stand-alone modules that are NOT part of any
-                                        package, this is the path to the root of the module as listed in the ZIP file.
-                                        For modules included in a package, this is the location, relative to the root of
-                                        the package (PackagePath) this module belongs to. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This element is only required for the PEIM that
-                                        produces the PCD PPI or the DXE Driver that produces the PCD Protocol.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:simpleType>
-                                    <xs:restriction base="xs:NCName">
-                                        <xs:enumeration value="PEI_PCD_DRIVER"/>
-                                        <xs:enumeration value="DXE_PCD_DRIVER"/>
-                                    </xs:restriction>
-                                </xs:simpleType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/>
-
-                            <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is a list of other specifications that this
-                                        module is written against. These entries can be used in #define statements
-                                        (depending on the build system implementation, they may be autogenerated.)
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:NCName">
-                                            <xs:attribute name="Version" type="xs:decimal" use="required"/>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Different firmware execution paths may be taken
-                                        based on a given state of the hardware, firmware, or through feature settings. A
-                                        BootMode may be declared (PRODUCES) or discovered (CONSUMES) based on these
-                                        states and feature settings. If the usage is UNDEFINE, it implies that a Boot
-                                        Mode is used, but the package creator does not know how it is used. The
-                                        supported boot modes map to the PI specification Boot Modes. The boot modes
-                                        listed with Recovery are to indicate that the BootMode is valid during a
-                                        recovery boot. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence minOccurs="0">
-                                        <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes">
-                                            <xs:simpleType>
-                                                <xs:list>
-                                                    <xs:simpleType>
-                                                        <xs:restriction base="xs:NCName">
-                                                            <xs:enumeration value="FULL"/>
-                                                            <xs:enumeration value="MINIMAL"/>
-                                                            <xs:enumeration value="NO_CHANGE"/>
-                                                            <xs:enumeration value="DIAGNOSTICS"/>
-                                                            <xs:enumeration value="DEFAULT"/>
-                                                            <xs:enumeration value="S2_RESUME"/>
-                                                            <xs:enumeration value="S3_RESUME"/>
-                                                            <xs:enumeration value="S4_RESUME"/>
-                                                            <xs:enumeration value="S5_RESUME"/>
-                                                            <xs:enumeration value="FLASH_UPDATE"/>
-                                                            <xs:enumeration value="RECOVERY_FULL"/>
-                                                            <xs:enumeration value="RECOVERY_MINIMAL"/>
-                                                            <xs:enumeration value="RECOVERY_NO_CHANGE"/>
-                                                            <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
-                                                            <xs:enumeration value="RECOVERY_DEFAULT"/>
-                                                            <xs:enumeration value="RECOVERY_S2_RESUME"/>
-                                                            <xs:enumeration value="RECOVERY_S3_RESUME"/>
-                                                            <xs:enumeration value="RECOVERY_S4_RESUME"/>
-                                                            <xs:enumeration value="RECOVERY_S5_RESUME"/>
-                                                            <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
-                                                            <xs:enumeration value="UNDEFINED"/>
-                                                        </xs:restriction>
-                                                    </xs:simpleType>
-                                                </xs:list>
-                                            </xs:simpleType>
-                                        </xs:element>
-
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module always supports
-                                                            the given boot modes. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module may support a
-                                                            given mode on some execution paths. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module will change the
-                                                            boot mode. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIME_PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module will change the
-                                                            boot mode on some exection paths. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The package creator does not
-                                                            know how the boot mode is used. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> The functions that make up the Event, Timer, and
-                                        Task Priority Services are used during preboot to create, close, signal, and
-                                        wait for events; to set timers; and to raise and restore task priority levels as
-                                        defined in the UEFI specification. GUIDed events should be listed in the Guids
-                                        section. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module will register a
-                                                            notification function and calls the function when it is
-                                                            signaled. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module will register a
-                                                            notification function and calls the function when it is
-                                                            signaled on some execution paths. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module will signal all
-                                                            events in an event group. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module will signal all
-                                                            events in an event group under some execution paths.
-                                                        </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The package creator does not
-                                                            know how an event is used. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="EventType" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
-                                                <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-
-
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed Hand Off Blocks
-                                        (HOBs) produced or consumed by this module. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="HobType" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PHIT"/>
-                                                <xs:enumeration value="MEMORY_ALLOCATION"/>
-                                                <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
-                                                <xs:enumeration value="FIRMWARE_VOLUME"/>
-                                                <xs:enumeration value="LOAD_PEIM"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> A HOB must be present in the
-                                                            system. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> If present, the HOB will be
-                                                            used. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The HOB is always produced
-                                                            by the module. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The HOB may be produced by
-                                                            the module under some execution paths. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The package creator knows
-                                                            that a HOB is used, but does not know how it is used.
-                                                        </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-
-                        </xs:sequence>
-                        <xs:attributeGroup ref="SupportedArchMod"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of ModuleProperties Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section may be included for Modules that are copied
-                            from a different module. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
-                                        identify the Module that this Module was copied from. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal" use="required">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> This value, along with the GUID,
-                                                        is used to uniquely identify this object. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!--  End of ClonedFrom Section. -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A list of the different Library Classes consumed by a
-                            driver, core and/or application module, or produced by a Library module. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us "> Used by tools to identify different
-                                                    instances of libraries that provide the library class. This keyword
-                                                    identifies the library class this module needs to be linked against.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
-                                            <xs:complexType>
-                                                <xs:all>
-                                                    <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This GUID and the
-                                                            Version attribute uniquely identify the recommended Library
-                                                            Instance for this module . </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="RegistryFormatGuid">
-                                                            <xs:attribute name="Version" type="xs:decimal"
-                                                            use="optional">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This value, along with
-                                                            the GUID, is used to uniquely identify this object.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            </xs:attribute>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                </xs:all>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Library instances can provide code
-                                                    for a library class, or may require other library instances
-                                                    themselves. Since different execution paths in a library (or module)
-                                                    may need different library classes based on some setting, library
-                                                    classes may not alway be required. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional">
-                                        <xs:annotation>
-                                            <xs:documentation xml:lang="en-us"> A FeatureFlag attribute must evaluate to
-                                                either true or false - it may be a fixed value of true or false, a C
-                                                name or an in-fix expression. </xs:documentation>
-                                        </xs:annotation>
-                                    </xs:attribute>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of LibraryClassDefinitions Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the module relative
-                                        (ModuleProperties.Path) path and filename location within the ZIP file.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:anyURI">
-                                            <xs:attribute name="Family" type="FamilyTypes" use="optional">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> The Family attribute is used to
-                                                        restrict usage to a given family of compilers, such as GCC or
-                                                        MSFT. Since not all code processing tools use the same syntax,
-                                                        especially for assembly, this field can be used to identify
-                                                        different syntax. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                            <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                            <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                            <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of SourceFiles Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This is the module relative
-                                                    (ModuleProperties.Path) path and filename location within the ZIP
-                                                    file. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                    <xs:extension base="xs:anyURI">
-                                                        <xs:attribute name="FileType" use="optional">
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="xs:NCName">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> Binary file distribution
-                                                            is limited to UEFI/PI FFS leaf section file types.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:enumeration value="GUID"/>
-                                                            <xs:enumeration value="FREEFORM"/>
-                                                            <xs:enumeration value="UEFI_IMAGE"/>
-                                                            <xs:enumeration value="PE32">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> A UEFI/PI FFS Leaf
-                                                            section file type, not a raw PE32 file. </xs:documentation>
-                                                            </xs:annotation>
-                                                            </xs:enumeration>
-                                                            <xs:enumeration value="PIC"/>
-                                                            <xs:enumeration value="PEI_DEPEX"/>
-                                                            <xs:enumeration value="DXE_DEPEX"/>
-                                                            <xs:enumeration value="SMM_DEPEX"/>
-                                                            <xs:enumeration value="COMPAT16"/>
-                                                            <xs:enumeration value="DISPOSABLE"/>
-                                                            <xs:enumeration value="TE"/>
-                                                            <xs:enumeration value="VER"/>
-                                                            <xs:enumeration value="UI"/>
-                                                            <xs:enumeration value="BIN"/>
-                                                            <xs:enumeration value="FV"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                        </xs:attribute>
-                                                        <xs:attribute name="GUID" use="optional"
-                                                            type="RegistryFormatGuid"/>
-                                                        <xs:attribute name="SupArchList" type="ArchListType"
-                                                            use="optional"/>
-                                                        <xs:attribute name="SupModList" type="ModuleListType"
-                                                            use="optional"/>
-                                                        <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                                            use="optional"/>
-                                                    </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This section contains information
-                                                    about how the module was coded, such as Compiler Tools, Flags, PCDs
-                                                    (only PatchPcd and/or PcdEx) and Library Class Instances used to
-                                                    build the binary. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:sequence>
-
-                                                    <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The element is the
-                                                            Patchable PCD Value that was used during the build.
-                                                            </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                            <xs:element minOccurs="1" maxOccurs="1"
-                                                            name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="PcdCName"
-                                                            type="xs:NCName"/>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="Token">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            <xs:maxLength value="10"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" 
-                                                            type="PcdDatumTypes"/>
-                                                            <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This field is required
-                                                            if the Pcd Datum Type is VOID* </xs:documentation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="Value"
-                                                            type="xs:normalizedString"/>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="Offset">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element ref="HelpText" minOccurs="0"
-                                                            maxOccurs="unbounded"/>
-                                                            <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                            name="PcdError">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> Error information
-                                                            implemented by the module. </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:complexType>
-                                                            <xs:sequence>
-                                                            <xs:choice>
-                                                              <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
-                                                                <xs:complexType>
-                                                                  <xs:simpleContent>
-                                                                    <xs:extension base="xs:normalizedString">
-                                                                    <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                                                                    </xs:extension>
-                                                                  </xs:simpleContent>
-                                                                </xs:complexType>
-                                                              </xs:element>
-                                                              <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
-                                                              <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
-                                                            </xs:choice>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                            name="ErrorMessage">
-                                                            <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="xs:string">
-                                                            <xs:attribute name="Lang" type="xs:language" default="en-us"
-                                                            use="optional"/>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                            </xs:complexType>
-                                                            </xs:element>
-                                                            </xs:sequence>
-                                                            </xs:complexType>
-                                                            </xs:element>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-
-                                                    <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The element is the
-                                                            DynamicEx PCD Value that was used during the build.
-                                                            </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                            <xs:element minOccurs="1" maxOccurs="1"
-                                                            name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="Token">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            <xs:maxLength value="10"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
-                                                            type="PcdDatumTypes"/>
-                                                            <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This field is required
-                                                            if the Pcd Datum Type is VOID* </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="Value"
-                                                            type="xs:normalizedString"/>
-                                                            <xs:element ref="HelpText" minOccurs="0"
-                                                            maxOccurs="unbounded"/>
-                                                            <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                            name="PcdError">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> Error information
-                                                            implemented by the module. </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:complexType>
-                                                            <xs:sequence>
-                                                            <xs:choice>
-                                                              <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
-                                                                <xs:complexType>
-                                                                  <xs:simpleContent>
-                                                                    <xs:extension base="xs:normalizedString">
-                                                                    <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                                                                      </xs:extension>
-                                                                  </xs:simpleContent>
-                                                                </xs:complexType>
-                                                              </xs:element>
-                                                              <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
-                                                              <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
-                                                            </xs:choice>
-                                                            <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> The minLength of 3 is
-                                                            required to handle the "0x" prefix to the hex number.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:simpleType>
-                                                            <xs:restriction base="HexNumber">
-                                                            <xs:minLength value="3"/>
-                                                            </xs:restriction>
-                                                            </xs:simpleType>
-                                                            </xs:element>
-                                                            <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                            name="ErrorMessage">
-                                                            <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="xs:string">
-                                                            <xs:attribute name="Lang" type="xs:language" default="en-us"
-                                                            use="optional"/>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                            </xs:complexType>
-                                                            </xs:element>
-                                                            </xs:sequence>
-                                                            </xs:complexType>
-                                                            </xs:element>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-
-                                                    <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances">
-                                                        <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This is the actual
-                                                            library instance that was used to link against the module.
-                                                            </xs:documentation>
-                                                        </xs:annotation>
-                                                        <xs:complexType>
-                                                            <xs:sequence>
-                                                            <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This GUID and the
-                                                            Version attribute uniquely identify the actual Library
-                                                            Instance linked in this module. </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:complexType>
-                                                            <xs:simpleContent>
-                                                            <xs:extension base="RegistryFormatGuid">
-                                                            <xs:attribute name="Version" type="xs:decimal"
-                                                            use="required">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This value, along with
-                                                            the GUID, is used to uniquely identify this object.
-                                                            </xs:documentation>
-                                                            </xs:annotation>
-                                                            </xs:attribute>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                            </xs:complexType>
-                                                            </xs:element>
-                                                            </xs:sequence>
-                                                        </xs:complexType>
-                                                    </xs:element>
-
-                                                    <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags">
-                                                        <xs:complexType mixed="true">
-                                                            <xs:simpleContent>
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> Any description of OS,
-                                                            Tool, and flags for the individual tool can go in this
-                                                            section. </xs:documentation>
-                                                            </xs:annotation>
-                                                            <xs:extension base="xs:string">
-                                                            <xs:anyAttribute processContents="lax"/>
-                                                            </xs:extension>
-                                                            </xs:simpleContent>
-                                                        </xs:complexType>
-                                                    </xs:element>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <!-- End of AsBuilt -->
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of BinaryFiles Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                    <xs:extension base="xs:string">
-                                                        <xs:attribute name="Lang" type="xs:language" default="en-us"
-                                                            use="optional"/>
-                                                    </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This GUID and the Version attribute
-                                                    uniquely identify Package that this Module depends on.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                    <xs:extension base="RegistryFormatGuid">
-                                                        <xs:attribute name="Version" type="xs:decimal" use="optional">
-                                                            <xs:annotation>
-                                                            <xs:documentation xml:lang="en-us"> This value, along with
-                                                            the GUID, is used to uniquely identify this object. If the
-                                                            version attribute is not specified, the most recent version
-                                                            of the package can be used. </xs:documentation>
-                                                            </xs:annotation>
-                                                        </xs:attribute>
-                                                    </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                    </xs:sequence>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageDependencies -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Guids">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
-                                            type="xs:normalizedString">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation>
-                                                <xs:documentation> This can be either a Hex Array or C string in unicode
-                                                    format: L"string" Data. </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us">The module does not install
-                                                            the GUID, and the GUID must be present for the module to
-                                                            execute. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module does not install
-                                                            the GUID, however, the GUID will be used if it is present.
-                                                        </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The module always installs
-                                                            the GUID. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The Module will install the
-                                                            GUID under certain execution paths. </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                    <xs:annotation>
-                                                        <xs:documentation xml:lang="en-us"> The package creator knows
-                                                            that a GUID is used, but does not know how it is used.
-                                                        </xs:documentation>
-                                                    </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="GuidType" type="GuidListType" use="required"/>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Guids Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A listing of protocols required or produced by this module.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>                                       
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="TO_START"/>
-                                                <xs:enumeration value="BY_START"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Protocols Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced by this module.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>                                        
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PPIs Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Externs">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> These elements specify additional information about the
-                            module. This area may be used by tools to generate code. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:choice minOccurs="1">
-                                            <xs:sequence>
-                                                <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint"
-                                                    type="xs:NCName"/>
-                                                <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage"
-                                                    type="xs:NCName"/>
-                                            </xs:sequence>
-                                            <xs:sequence>
-                                                <xs:element minOccurs="0" maxOccurs="1" name="Constructor"
-                                                    type="xs:NCName"/>
-                                                <xs:element minOccurs="0" maxOccurs="1" name="Destructor"
-                                                    type="xs:NCName"/>
-                                            </xs:sequence>
-                                        </xs:choice>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Externs Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section describes how a platform is coded with respect
-                            to the platform configuration knobs. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
-                                            type="xs:normalizedString"/>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
-                                    <xs:attribute name="PcdUsage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-
-
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PcdCoded Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the PEI dependency expression for a Dependency
-                            Section. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> An in-fix expression, of C identifiers and TRUE,
-                                        FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
-                                        notation. The operators are restricted to grammar defined in the PI
-                                        specification. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PeiDepex Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the DXE dependency expression for a Dependency
-                            Section. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> An in-fix expression, of C identifiers and TRUE,
-                                        FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
-                                        notation. The operators are restricted to grammar defined in the PI
-                                        specification. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of DxeDepex Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the SMM dependency expression for a Dependency
-                            Section. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> An in-fix expression, of C identifiers and TRUE,
-                                        FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
-                                        notation. The operators are restricted to grammar defined in the PI
-                                        specification. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of SmmDepex Section -->
-
-
-                <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to provide comments and/or list
-                            auxiliary files, such as pdb or map files. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the path and filename location within
-                                        the ZIP file. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:anyURI">
-                                            <xs:attribute name="Executable" type="xs:boolean" default="false"
-                                                use="optional">
-                                                <xs:annotation>
-                                                    <xs:documentation xml:lang="en-us"> If true, used by installation
-                                                        tools to ensure that a file that must be executable has the
-                                                        correct properties to permit execution. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Module Surface Area Misc Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used for any processing instructions that
-                            may be custom to the content provided by the distribution that are common to module. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> The content can be plain text as well as any user-defined,
-                            properly formatted XML structure. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType mixed="true">
-                        <xs:attribute name="UserId" type="xs:NCName" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping
-                                    similar content. For example, ReferenceBuild might be used to identify non-PI
-                                    compliant build steps, with two different UserExtensions sections, one with an
-                                    Identifier of Prebuild, and another of PostBuild. Both UserExtensions sections would
-                                    use the same UserId. </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="Identifier" type="xs:string" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or
-                                    identify this section from other UserExtensions sections. </xs:documentation>
-                                <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might indicate
-                                    specific steps and tools required before processing module content, while a
-                                    different UserExtensions section with a POST_PROCESS Identifier might describe steps
-                                    that need to be executed after operations on this module. </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:anyAttribute processContents="lax"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Module Surface Area UserExtensions Section -->
-
-            </xs:sequence>
-            <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This attribute is used when the binaries are distributed for
-                        this module and no code generation from source files is required. If set, then the BinaryFiles
-                        section should be used, and any files listed in the SourceFiles section do not have to be built.
-                        Additionally, the AsBuilt section for each binary file must be included. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-
-    </xs:element>
-    <!-- End of the ModuleSurfaceArea element. -->
-
-    <xs:element name="Tools">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us">This is the User Interface Name for this Tools
-                                        Distribution.</xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
-                                        different from the Distribution Package copyright. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the License is
-                                        different from the Distribution Package license. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the Abstract is
-                                        different from the Distribution Package Abstract. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                                        </xs:extension>                                        
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Description">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the Description is
-                                        different from the Distribution Package Description. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                                        </xs:extension>                                        
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                                
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:anyURI">
-                                <xs:attribute name="OS" type="SupportedOs" use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> This is required for tools that execute; it
-                                            should not be used for configuration files. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                                <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> If true, used by installation tools to
-                                            ensure that a file that must be executable has the correct properties to
-                                            permit execution. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the Tools element. -->
-
-    <xs:element name="MiscellaneousFiles">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> This section contains a list of files that are not part of the code
-                distributed with modules, packages or tools. </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> The User interface name for this content.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
-                                        different from the Distribution Package Copyright. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the License is
-                                        different from the Distribution Package License. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
-                                            />
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:anyURI">
-                                <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> If true, used by installation tools to
-                                            ensure that a file that must be executable has the correct properties to
-                                            permit execution. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the Misc element. -->
-
-    <xs:element name="UserExtensions">
-        <xs:complexType mixed="true">
-            <xs:sequence>
-                <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
-            </xs:sequence>
-            <xs:attribute name="UserId" type="xs:NCName" use="required">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping similar content.
-                        For example, ReferenceBuild might be used to identify non-PI compliant build steps, with two
-                        different UserExtensions sections, one with an Identifier of Prebuild, and another of PostBuild.
-                        Both UserExtensions sections would use the same UserId. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="Identifier" type="xs:string" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or identify this
-                        section from other UserExtensions sections. </xs:documentation>
-                    <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might indicate specific
-                        steps and tools required before processing distribution package content, while a different
-                        UserExtensions section with a POST_PROCESS Identifier might describe steps that need to be
-                        executed after operations on this content. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:anyAttribute processContents="lax"/>
-        </xs:complexType>
-    </xs:element>
-    <!-- The following elsements are common definitions used with the ref attribute for elements. -->
-
-    <xs:element name="HelpText">
-        <xs:complexType>
-            <xs:simpleContent>
-                <xs:extension base="xs:string">
-                    <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                </xs:extension>
-            </xs:simpleContent>
-        </xs:complexType>
-    </xs:element>
-
-    <!-- The following attribute groups are used in various elements above. -->
-
-    <xs:attributeGroup name="SupportedArchMod">
-        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-    </xs:attributeGroup>
-
-    <!-- The following data types are used to restrict content. -->
-
-    <xs:simpleType name="ArchListType">
-        <xs:list itemType="ArchTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="ArchTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="IA32"/>
-            <xs:enumeration value="X64"/>
-            <xs:enumeration value="IPF"/>
-            <xs:enumeration value="EBC"/>
-            <xs:enumeration value="ARM"/>
-            <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Any processor architecture not listed above. The Architecture
-                        must be a target architecture of one or more compiler tool chains. </xs:documentation>
-                </xs:annotation>
-            </xs:pattern>
-        </xs:restriction>
-    </xs:simpleType>
-
-
-    <xs:simpleType name="FamilyTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="MSFT"/>
-            <xs:enumeration value="GCC"/>
-            <xs:pattern value="[A-Z][a-zA-Z0-9]*">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Any other family of build utilities for which compiler tools
-                        exist. </xs:documentation>
-                </xs:annotation>
-            </xs:pattern>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="GuidListType">
-        <xs:list itemType="GuidTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="GuidTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="Event"/>
-            <xs:enumeration value="File"/>
-            <xs:enumeration value="FV"/>
-            <xs:enumeration value="GUID"/>
-            <xs:enumeration value="HII"/>
-            <xs:enumeration value="Hii"/>
-            <xs:enumeration value="HOB"/>
-            <xs:enumeration value="SystemTable"/>
-            <xs:enumeration value="TokenSpaceGuid"/>
-            <xs:enumeration value="Variable"/>
-            <xs:enumeration value="UNDEFINED"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="HexNumber">
-        <xs:restriction base="xs:hexBinary">
-            <xs:pattern value="0x([a-fA-F0-9])+"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="Md5Sum">
-        <xs:restriction base="xs:normalizedString">
-            <xs:pattern value="[a-zA-Z0-9]{32}"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="ModuleListType">
-        <xs:list itemType="ModuleTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="ModuleTypes">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> Module types for components and libraries defined for this distribution
-                mechanism. </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="BASE ">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_CORE">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE core.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE driver.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_RUNTIME_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE runtime driver.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_SAL_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE runtime driver.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_SMM_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM driver.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PEI_CORE">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI core.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PEIM">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="SEC">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to Security phase.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UEFI_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UEFI_RUNTIME_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
-                        drivers.</xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UEFI_APPLICATION">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for UEFI applications.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="SMM_CORE">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
-                        core.</xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="USER_DEFINED">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This content is restricted to a specific implementation.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UNDEFINED">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This enumeration is for use in a list that where the package
-                        creator does not know the what module types are supported by a module. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This pattern has been added for use in a module lists - for
-                        future expansion. </xs:documentation>
-                </xs:annotation>
-            </xs:pattern>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="PcdDatumTypes">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD specification (or PCD
-                section of the UEFI/PI specifications.) </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:normalizedString">
-            <xs:enumeration value="UINT8"/>
-            <xs:enumeration value="UINT16"/>
-            <xs:enumeration value="UINT32"/>
-            <xs:enumeration value="UINT64"/>
-            <xs:enumeration value="BOOLEAN"/>
-            <xs:enumeration value="VOID*"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="PcdItemListType">
-        <xs:list itemType="PcdItemTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="PcdItemTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="FeaturePcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The Feature PCD is a binary, evaluating to either true or false.
-                        This is used during build to include/exclude content. It can also be used during execution to
-                        force execution paths within drivers, or to enable/disable features within a driver for a given
-                        platform. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="FixedPcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set at build time.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PatchPcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is set at build time, and that
-                        can be modified within a binary file. Additional information, such as the offset location of the
-                        value, along with it's length may need to be provided.</xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="Pcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This PCD type has an overloaded definition. Prior to build, the
-                        platform integrator may choose to implement a PCD as Fixed, Patchable or a Dynamic PCD. If the
-                        platform integrator choose to use the PCD as dynamic, then a PCD driver is required in the
-                        platform (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. For Dynamic
-                        PCDs, the PcdGet* must pass in the token space guid and the token number to retrieve data
-                        (PcdSet* also needs these values.) </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PcdEx">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The PCD can only be used as Dynamic, and the platform firmware
-                        must contain a driver to maintain a 'database' of these items. For Dynamic PCDs, the PcdGet*
-                        must pass in the token space guid and the token number to retrieve data (PcdSet* also needs
-                        these values.) </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="RegistryFormatGuid">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal character sets that are
-                separated by a dash (-) character. </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="SupportedOs">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> The EDK II build system supports workstations running one of the
-                following supported operating systems. This is the OS for the developer's workstation, not the target
-                platform. </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="Win32">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="Win64">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="RedHat32"/>
-            <xs:enumeration value="RedHat64"/>
-            <xs:enumeration value="SuSE32"/>
-            <xs:enumeration value="SuSE64"/>
-            <xs:enumeration value="Linux32"/>
-            <xs:enumeration value="Linux64"/>
-            <xs:enumeration value="OS/X32"/>
-            <xs:enumeration value="OS/X64"/>
-            <xs:enumeration value="Generic"/>
-            <xs:enumeration value="GenericWin">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch files.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="GenericNix">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for any Linux and Mac
-                        OS/X. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Filename: DistributionPackage.xsd\r
+\r
+Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.\r
+\r
+This program and the accompanying materials are licensed and made available \r
+under the terms and conditions of the BSD License which may be found at \r
+    http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+-->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"\r
+    targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">\r
+    <xs:element name="DistributionPackage">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package description (PKG)\r
+                file. It describes the content of:</xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary format. (Note that Binary format\r
+                is for FFS leaf section file types only, complete FFS files cannot be distributed using this\r
+                distribution format.) </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify the binary images to\r
+                create UEFI/PI compliant images. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other miscellaneous content\r
+                that is not specific to UEFI/PI images. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of packages, while the\r
+                Module Surface Area provides information relevant to source and/or binary distributions.\r
+            </xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> This header contains (legal) information usually required\r
+                            for distributing both binary and/or source code. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Packages are groups of files and/or modules that are similar\r
+                            in nature.</xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a package GUID and a\r
+                            package version. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> A package can declare public mappings of C names to GUID\r
+                            values. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> A package can provide header files for library classes\r
+                            and/or other industry standard definitions. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> A package can also declare public mappings of platform\r
+                            configuration database (PCD) &quot;knobs&quot; to control features and operation of modules\r
+                            within a platform. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Finally, a package lists the library instances and/or\r
+                            modules that are provided in a distribution package. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant modules in this\r
+                            distribution that are NOT part of a Package. Every module that is provided as part of a\r
+                            package needs to be described in a PackageSurfaceArea.Modules section. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section describes how each module in a\r
+                            distribution is coded, or, in the case of a binary module distribution, how it was built. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules are uniquely\r
+                            identified by the Module's GUID and version number. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> This section will typically be used for modules that don't\r
+                            require any additional files that would be included in a package. For example, the Enhanced\r
+                            FAT driver binary does not need to have a package description, as no additional files are\r
+                            provided. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> This section is for distributing vendor specific executable\r
+                            tools, tool source code and/or configuration files. These tools are primarily for\r
+                            manipulating code and/or binary images. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create source code files\r
+                            and build scripts. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain types of text/unicode\r
+                            files. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> 5) Implement external encoding/decoding/signature/GUIDed\r
+                            tools. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> 6) Distribution Package create/install/remove tools.\r
+                        </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The list of miscellaneous files in this distribution. Any\r
+                            files that are not listed in either the Package, Module or Tools sections can be listed\r
+                            here. This section can be used to distribute specifications for packages and modules that\r
+                            are not &quot;industry standards&quot; such as a specification for a chipset or a video\r
+                            device. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The UserExtensions section is used to disseminate processing\r
+                            instructions that may be custom to the content provided by the distribution. This section\r
+                            contains information that is common to all aspects of this disribution. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+            </xs:sequence>\r
+\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <!-- End of the DistributionPackage Description  -->\r
+\r
+    <xs:element name="DistributionHeader">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en-us"> This section defines the content of the UEIF/PI compliant Distribution\r
+                Package Header. This is the only required element of a UEFI/PI compliant distribution package.\r
+            </xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Distribution\r
+                            Package. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely identified by it's\r
+                            GUID and Version number. </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:normalizedString">\r
+                                <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">\r
+                                    <xs:annotation>\r
+                                        <xs:documentation xml:lang="en-us"> The reference name of the Distribution\r
+                                            Package file. This single word name can be used by tools as a keyword or for\r
+                                            directory and/or file creation. </xs:documentation>\r
+                                        <xs:documentation xml:lang="en-us"> White space and special characters (dash and\r
+                                            underscore characters may be used) are not permitted in this name.\r
+                                        </xs:documentation>\r
+                                    </xs:annotation>\r
+                                </xs:attribute>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version attribute uniquely\r
+                            identify this Distribution Package. </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Backward compatible releases of a distribution package need\r
+                            only change the version number, while non-backward compatible changes require the GUID to\r
+                            change (resetting the version number to 1.0 is optional.) </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="RegistryFormatGuid">\r
+                                <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                                    <xs:annotation>\r
+                                        <xs:documentation xml:lang="en-us"> This value, along with the GUID, is used to\r
+                                            uniquely identify this object. The higher the number, the more recent the\r
+                                            content. </xs:documentation>\r
+                                    </xs:annotation>\r
+                                </xs:attribute>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> A string identifying who created this distribution package.\r
+                        </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The date and time this distribution was created. The format\r
+                            is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator\r
+                            between the calendar date and the time. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The copyright for this file that is generated by the creator\r
+                            of the distribution. If a derivative work is generated from an existing distribution, then\r
+                            the existing copyright must be maintained, and additional copyrights may be appended to the\r
+                            end of this element. It may also be the primary copyright for all code provided in the\r
+                            Distribution Package. </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:string">\r
+                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                    \r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="License">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> A license that describes any restrictions on the use of this\r
+                            distribution. If a derivative work is allowed by the original license and a derivative work\r
+                            is generated from an existing distribution, then the existing license must be maintained,\r
+                            and additional licenses may be appended to the end of this element. It may also be the\r
+                            primary license for all code provided in the distribution file. Alternatively, this may\r
+                            point to a filename that contains the License. The file (included in the content zip file)\r
+                            will be stored in the same location as the distribution package's .pkg file.\r
+                        </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:string">\r
+                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> A one line description of the Distribution Package.\r
+                        </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:normalizedString">\r
+                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> A complete description of the Distribution Package. This\r
+                            description may include the release name of the file, the version of the file, and a\r
+                            complete description of the file contents and/or features including a description of the\r
+                            updates since the previous file release. </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:string">\r
+                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The packaging utilities will use this MD5 sum value of the\r
+                            included ZIP file containing files and/or code. If this element is not present, then\r
+                            installation tools should assume that the content is correct, or that other methods may be\r
+                            needed to verify content. </xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> #1 Updated to present date and new version which is\r
+                            important to reflect the present state of the matter</xs:documentation>\r
+                        <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of UNDEFIND type 2 is\r
+                            important since there is a large body of legacy code for which the GUID’s and other\r
+                            code/data objects were not decorated with their usage. This document will allow for\r
+                            importing today’s source artifacts and producing decorations using the ‘Undefined’ versus\r
+                            having an error</xs:documentation>\r
+                        <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future architecture\r
+                            types</xs:documentation>\r
+                    </xs:annotation>\r
+                </xs:element>\r
+            </xs:sequence>\r
+            <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">\r
+                <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us"> If set to true, all content within this Distribution Package\r
+                        should NOT be modified. The default permits modification of all content. </xs:documentation>\r
+                </xs:annotation>\r
+            </xs:attribute>\r
+            <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">\r
+                <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us"> If set to true, then the content can be repackaged into another\r
+                        distribution package. The default prohibits repackaging the Distribution content.\r
+                    </xs:documentation>\r
+                </xs:annotation>\r
+            </xs:attribute>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <!-- End of the DistributionHeader element. -->\r
+\r
+    <xs:element name="PackageSurfaceArea">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en-us"> A package is a collection of related objects - Includes, Libraries and\r
+                Modules. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> Each package is uniquely identified by it's GUID and Version number.\r
+                Backward compatible releases of a package need only change the version number, while non-backward\r
+                compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)\r
+            </xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+\r
+                <xs:element minOccurs="1" maxOccurs="1" name="Header">\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> This is the User Interface Name for this\r
+                                        package. </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="xs:normalizedString">\r
+                                            <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">\r
+                                                <xs:annotation>\r
+                                                    <xs:documentation xml:lang="en-us"> This is a single word BaseName\r
+                                                        of the package. This BaseName can be used by tools as a keyword\r
+                                                        and for directory/file creation. </xs:documentation>\r
+                                                </xs:annotation>\r
+                                            </xs:attribute>\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely\r
+                                        identify a given package. </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="RegistryFormatGuid">\r
+                                            <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                                                <xs:annotation>\r
+                                                    <xs:documentation xml:lang="en-us"> This value, along with the GUID,\r
+                                                        is used to uniquely identify this object. </xs:documentation>\r
+                                                    <xs:documentation xml:lang="en-us"> Backward compatible changes must\r
+                                                        make sure this number is incremented from the most recent\r
+                                                        version. Non-backward compatible changes require a new GUID, and\r
+                                                        the version can be reset. </xs:documentation>\r
+                                                </xs:annotation>\r
+                                            </xs:attribute>\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> If the package requires a different copyright\r
+                                        than the distribution package, this element can list one or more copyright\r
+                                        lines. </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="xs:string">\r
+                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="unbounded" name="License">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> If the package requires licenses that are\r
+                                        different from the distribution package license, this element can contain one or\r
+                                        more license text paragraphs (or license filenames.) </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="xs:string">\r
+                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> A one line description of this package.\r
+                                    </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="xs:normalizedString">\r
+                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> A complete description of a package. This\r
+                                        description may include the release name of the package, the version of the\r
+                                        package, and a complete description of the package contents and/or features\r
+                                        including a description of the updates since the previous package’s release.\r
+                                    </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="xs:string">\r
+                                            <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> This element is the location (in the ZIP file)\r
+                                        for the root directory of a package. </xs:documentation>\r
+                                </xs:annotation>\r
+                            </xs:element>\r
+                        </xs:sequence>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <!-- End of PackageSurfaceArea Header element.  -->\r
+\r
+                <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> The term cloned is used here to indicate that this package\r
+                            as been copied and modified to a completely different package. An example might be for a new\r
+                            generation of chipsets that have few or no elements in common with the original.\r
+                        </xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely\r
+                                        identify the Package that this Package was copied from. </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+           &nbs