// /** @file
// This Package provides all definitions, library classes and libraries instances.
//
// It also provides the definitions(including PPIs/PROTOCOLs/GUIDs) of
// EFI1.10/UEFI2.4/PI1.3 and some Industry Standards.
//
// Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
// Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/


#string STR_PACKAGE_ABSTRACT            #language en-US "This Package provides all definitions, library classes and libraries instances."

#string STR_PACKAGE_DESCRIPTION         #language en-US "It also provides the definitions(including PPIs/PROTOCOLs/GUIDs) of EFI1.10/UEFI2.4/PI1.3 and some Industry Standards."



#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueEfiWatchDogTimerExpired_PROMPT  #language en-US "Progress Code for WatchDog Timer Expired"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueEfiWatchDogTimerExpired_HELP  #language en-US "Status code value for indicating a watchdog timer has expired. EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_TIMER_EXPIRED"

#string STR_gEfiMdePkgTokenSpaceGuid_ERR_80000003 #language en-US "Incorrect progress code provided."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueSetVirtualAddressMap_PROMPT  #language en-US "Progress Code for Invocation of SetVirtualAddressMap"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueSetVirtualAddressMap_HELP  #language en-US "Status code value for indicating the invocation of SetVirtualAddressMap() EFI_SOFTWARE_EFI_RUNTIME_SERVICE | EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMemoryTestStarted_PROMPT  #language en-US "Progress Code for Memory Test Start"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMemoryTestStarted_HELP  #language en-US "Status code value for indicating the start of memory test EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_PC_TEST"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueUncorrectableMemoryError_PROMPT  #language en-US "Progress Code for Memory Error"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueUncorrectableMemoryError_HELP  #language en-US "Status code value for indicating memory error in memory test EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_UNCORRECTABLE"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleError_PROMPT  #language en-US "Progress Code for Console Error"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleError_HELP  #language en-US "Status code value for console operation failure. EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_CONTROLLER_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleReset_PROMPT  #language en-US "Progress Code for Console Reset"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleReset_HELP  #language en-US "Status code value for console reset operation failure. EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_PC_RESET"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleInputError_PROMPT  #language en-US "Progress Code for Console Input Error"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleInputError_HELP  #language en-US "Status code value for console input operation failure. EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleOutputError_PROMPT  #language en-US "Progress Code for Console Output Error"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueRemoteConsoleOutputError_HELP  #language en-US "Status code value for console output operation failure. EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_OUTPUT_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseInterfaceError_PROMPT  #language en-US "Progress Code for Module Device Failure"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseInterfaceError_HELP  #language en-US "Status code value for mouse operation failure. EFI_PERIPHERAL_MOUSE | EFI_P_EC_INTERFACE_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseEnable_PROMPT  #language en-US "Progress Code for Enable Mouse Device"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseEnable_HELP  #language en-US "Status code value for indicating mouse device has been enabled. EFI_PERIPHERAL_MOUSE | EFI_P_PC_ENABLE"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseDisable_PROMPT  #language en-US "Progress Code for Disable Mouse Device"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseDisable_HELP  #language en-US "Status code value for indicating mouse device has been disabled. EFI_PERIPHERAL_MOUSE | EFI_P_PC_DISABLE"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardEnable_PROMPT  #language en-US "Progress Code for Enable Keyboard Device"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardEnable_HELP  #language en-US "Status code value for enabling keyboard device. EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_ENABLE"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardDisable_PROMPT  #language en-US "Progress Code for Disable Keyboard Device"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardDisable_HELP  #language en-US "Status code value for disabling keyboard device. EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_DISABLE"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardPresenceDetect_PROMPT  #language en-US "Progress Code for Detect Keyboard Device"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardPresenceDetect_HELP  #language en-US "Status code value for indicating presence of keyboard. EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_PRESENCE_DETECT"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardReset_PROMPT  #language en-US "Progress Code for Keyboard Device Reset"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardReset_HELP  #language en-US "Status code value for keyboard operation reset operation. EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_RESET"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardClearBuffer_PROMPT  #language en-US "Progress Code for Keyboard Device Clear Buffer"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardClearBuffer_HELP  #language en-US "Status code value for keyboard clear buffer operation. EFI_PERIPHERAL_KEYBOARD | EFI_P_KEYBOARD_PC_CLEAR_BUFFER"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardSelfTest_PROMPT  #language en-US "Progress Code for Keyboard Device SelfTest"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardSelfTest_HELP  #language en-US "Status code value for keyboard device self-test. EFI_PERIPHERAL_KEYBOARD | EFI_P_KEYBOARD_PC_SELF_TEST"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardInterfaceError_PROMPT  #language en-US "Progress Code for Keyboard Device Failure"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardInterfaceError_HELP  #language en-US "Status code value for indicating keyboard device failure. EFI_PERIPHERAL_KEYBOARD | EFI_P_EC_INTERFACE_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardInputError_PROMPT  #language en-US "Progress Code for Keyboard Input Failure"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueKeyboardInputError_HELP  #language en-US "Status code value for indicating keyboard input handler failure. EFI_PERIPHERAL_KEYBOARD | EFI_P_EC_INPUT_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseInputError_PROMPT  #language en-US "Progress Code for Mouse Input Failure"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseInputError_HELP  #language en-US "Status code value for mouse input handler failure. EFI_PERIPHERAL_MOUSE | EFI_P_EC_INPUT_ERROR"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseReset_PROMPT  #language en-US "Progress Code for Mouse Device Reset"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueMouseReset_HELP  #language en-US "Status code value for mouse device reset operation. EFI_PERIPHERAL_MOUSE | EFI_P_PC_RESET"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValuePeiHandoffToDxe_PROMPT  #language en-US "Progress Code for Handoff from PEI phase to DXE phase"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValuePeiHandoffToDxe_HELP  #language en-US "Status code value for indicating the handoff from PEI phase to DXE phase. EFI_SOFTWARE_PEI_CORE | EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValuePeimDispatch_PROMPT  #language en-US "Progress Code for Dispatching One PEIM"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValuePeimDispatch_HELP  #language en-US "Status code value for indicating one PEIM is dispatched. EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT_BEGIN"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValuePeiCoreEntry_PROMPT  #language en-US "Progress Code for PeiCore Entry"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValuePeiCoreEntry_HELP  #language en-US "Status code value for PeiCore entry. EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeCoreEntry_PROMPT  #language en-US "Progress Code for DxeCore Entry"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeCoreEntry_HELP  #language en-US "Status code value for DxeCore entry. EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_ENTRY_POINT"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeCoreHandoffToBds_PROMPT  #language en-US "Progress Code for Handoff from DxeCore to BDS"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeCoreHandoffToBds_HELP  #language en-US "Status code value for handoff from DxeCore to BDS. EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueBootServiceExit_PROMPT  #language en-US "Progress Code for Exit of Boot Service"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueBootServiceExit_HELP  #language en-US "Status code value for indicating boot service exit. EFI_SOFTWARE_EFI_BOOT_SERVICE | EFI_SW_BS_PC_EXIT_BOOT_SERVICES"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeDriverBegin_PROMPT  #language en-US "Progress Code for Begin of DXE Driver"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeDriverBegin_HELP  #language en-US "Status code value for indicating the beginning of DXE driver. EFI_SOFTWARE_DXE_CORE | EFI_SW_PC_INIT_BEGIN"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeDriverEnd_PROMPT  #language en-US "Progress Code for End of DXE Driver"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdStatusCodeValueDxeDriverEnd_HELP  #language en-US "Status code value for indicating the end of DXE drive. EFI_SOFTWARE_DXE_CORE | EFI_SW_PC_INIT_END"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumUnicodeStringLength_PROMPT  #language en-US "Maximum Length of Unicode String"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumUnicodeStringLength_HELP  #language en-US "Sets the maximum number of unicode characters used for string functions.  This affects the following BaseLib functions: StrLen(), StrSize(), StrCmp(), StrnCmp(), StrCpy(), StrnCpy()<BR><BR>\n"
                                                                                         "0  - No length check for unicode string.<BR>\n"
                                                                                         ">0 - Maximum length of unicode string.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdControlFlowEnforcementPropertyMask_PROMPT  #language en-US "Enable control flow enforcement."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdControlFlowEnforcementPropertyMask_HELP  #language en-US  "Indicates the control flow enforcement enabling state.\n"
                                                                                                  "If enabled, it uses control flow enforcement technology to prevent ROP or JOP.<BR><BR>\n"
                                                                                                  " BIT0 - SMM CET Shadow Stack is enabled.<BR>\n"
                                                                                                  " Other - reserved"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdSpeculationBarrierType_PROMPT  #language en-US "Speculation Barrier Type."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdSpeculationBarrierType_HELP  #language en-US  "Indicates the type of instruction sequence to use for a speculation.barrier.  The default instruction sequence is LFENCE.<BR><BR>\n"
                                                                                      "0x00 - No operation.<BR>\n"
                                                                                      "0x01 - LFENCE (IA32/X64).<BR>\n"
                                                                                      "0x02 - CPUID  (IA32/X64).<BR>\n"
                                                                                      "Other - reserved"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumAsciiStringLength_PROMPT  #language en-US "Maximum Length of Ascii String"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumAsciiStringLength_HELP  #language en-US "Sets the maximum number of ASCII characters used for string functions.  This affects the following BaseLib functions: AsciiStrLen(), AsciiStrSize(), AsciiStrCmp(), AsciiStrnCmp(), AsciiStrCpy(), AsciiStrnCpy(). <BR><BR>\n"
                                                                                       "0  - No length check for ASCII string.<BR>\n"
                                                                                       ">0 - Maximum length of ASCII string.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumLinkedListLength_PROMPT  #language en-US "Maximum Length of Linked List"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumLinkedListLength_HELP  #language en-US "Indicates the maximum node number of linked list.<BR><BR>\n"
                                                                                      "0  - No node number check for linked list.<BR>\n"
                                                                                      ">0 - Maximum node number of linked list.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumDevicePathNodeCount_PROMPT  #language en-US "Maximum node number of device path"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumDevicePathNodeCount_HELP  #language en-US "Indicates the maximum node number of device path.<BR><BR>\n"
                                                                                         "0  - No node number check for device path.<BR>\n"
                                                                                         ">0 - Maximum node number of device path.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdSpinLockTimeout_PROMPT  #language en-US "Spin Lock Timeout (us)"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdSpinLockTimeout_HELP  #language en-US "Indicates the timeout tick of holding spin lock.<BR><BR>\n"
                                                                              "0  - No timeout.<BR>\n"
                                                                              ">0 - Timeout tick of holding spin lock.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDebugPropertyMask_PROMPT  #language en-US "Debug Property"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDebugPropertyMask_HELP  #language en-US "The mask is used to control DebugLib behavior.<BR><BR>\n"
                                                                                "BIT0 - Enable Debug Assert.<BR>\n"
                                                                                "BIT1 - Enable Debug Print.<BR>\n"
                                                                                "BIT2 - Enable Debug Code.<BR>\n"
                                                                                "BIT3 - Enable Clear Memory.<BR>\n"
                                                                                "BIT4 - Enable BreakPoint as ASSERT.<BR>\n"
                                                                                "BIT5 - Enable DeadLoop as ASSERT.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_ERR_80000002 #language en-US "Reserved bits must be set to zero."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDebugPrintErrorLevel_PROMPT  #language en-US "Debug Message Print Level"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDebugPrintErrorLevel_HELP  #language en-US "This flag is used to control the print out Debug message.<BR><BR>\n"
                                                                                   "BIT0  - Initialization message.<BR>\n"
                                                                                   "BIT1  - Warning message.<BR>\n"
                                                                                   "BIT2  - Load Event message.<BR>\n"
                                                                                   "BIT3  - File System message.<BR>\n"
                                                                                   "BIT4  - Allocate or Free Pool message.<BR>\n"
                                                                                   "BIT5  - Allocate or Free Page message.<BR>\n"
                                                                                   "BIT6  - Information message.<BR>\n"
                                                                                   "BIT7  - Dispatcher message.<BR>\n"
                                                                                   "BIT8  - Variable message.<BR>\n"
                                                                                   "BIT10 - Boot Manager message.<BR>\n"
                                                                                   "BIT12 - BlockIo Driver message.<BR>\n"
                                                                                   "BIT14 - Network Driver message.<BR>\n"
                                                                                   "BIT16 - UNDI Driver message.<BR>\n"
                                                                                   "BIT17 - LoadFile message.<BR>\n"
                                                                                   "BIT19 - Event message.<BR>\n"
                                                                                   "BIT20 - Global Coherency Database changes message.<BR>\n"
                                                                                   "BIT21 - Memory range cacheability changes message.<BR>\n"
                                                                                   "BIT22 - Detailed debug message.<BR>\n"
                                                                                   "BIT31 - Error message.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdFixedDebugPrintErrorLevel_PROMPT  #language en-US "Fixed Debug Message Print Level"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdFixedDebugPrintErrorLevel_HELP  #language en-US "This flag is used to control build time optimization based on debug print level.<BR><BR>\n"
                                                                                   "BIT0  - Initialization message.<BR>\n"
                                                                                   "BIT1  - Warning message.<BR>\n"
                                                                                   "BIT2  - Load Event message.<BR>\n"
                                                                                   "BIT3  - File System message.<BR>\n"
                                                                                   "BIT4  - Allocate or Free Pool message.<BR>\n"
                                                                                   "BIT5  - Allocate or Free Page message.<BR>\n"
                                                                                   "BIT6  - Information message.<BR>\n"
                                                                                   "BIT7  - Dispatcher message.<BR>\n"
                                                                                   "BIT8  - Variable message.<BR>\n"
                                                                                   "BIT10 - Boot Manager message.<BR>\n"
                                                                                   "BIT12 - BlockIo Driver message.<BR>\n"
                                                                                   "BIT14 - Network Driver message.<BR>\n"
                                                                                   "BIT16 - UNDI Driver message.<BR>\n"
                                                                                   "BIT17 - LoadFile message.<BR>\n"
                                                                                   "BIT19 - Event message.<BR>\n"
                                                                                   "BIT20 - Global Coherency Database changes message.<BR>\n"
                                                                                   "BIT21 - Memory range cacheability changes message.<BR>\n"
                                                                                   "BIT22 - Detailed debug message.<BR>\n"
                                                                                   "BIT31 - Error message.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdReportStatusCodePropertyMask_PROMPT  #language en-US "Report Status Code Property"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdReportStatusCodePropertyMask_HELP  #language en-US "The mask is used to control ReportStatusCodeLib behavior.<BR><BR>\n"
                                                                                           "BIT0 - Enable Progress Code.<BR>\n"
                                                                                           "BIT1 - Enable Error Code.<BR>\n"
                                                                                           "BIT2 - Enable Debug Code.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDebugClearMemoryValue_PROMPT  #language en-US "Value to Clear Memory"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDebugClearMemoryValue_HELP  #language en-US "This value is used to fill a segment of memory when PcdDebugPropertyMask Clear Memory is enabled."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPerformanceLibraryPropertyMask_PROMPT  #language en-US "Performance Measurement Property"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPerformanceLibraryPropertyMask_HELP  #language en-US "The mask is used to control PerformanceLib behavior.<BR><BR>\n"
                                                                                             "BIT0 - Enable Performance Measurement.<BR>"
                                                                                             "BIT1 - Disable Start Image Logging.<BR>"
                                                                                             "BIT2 - Disable Load Image logging.<BR>"
                                                                                             "BIT3 - Disable Binding Support logging.<BR>"
                                                                                             "BIT4 - Disable Binding Start logging.<BR>"
                                                                                             "BIT5 - Disable Binding Stop logging.<BR>"
                                                                                             "BIT6 - Disable all other general Perfs.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPostCodePropertyMask_PROMPT  #language en-US "Post Code Property"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPostCodePropertyMask_HELP  #language en-US "The mask is used to control PostCodeLib behavior.<BR><BR>\n"
                                                                                   "BIT0 - Enable Post Code.<BR>\n"
                                                                                   "BIT1 - Enable Post Code with Description.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdFSBClock_PROMPT  #language en-US "FSB Clock"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdFSBClock_HELP  #language en-US "This value is used to configure X86 Processor FSB clock."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiLibMaxPrintBufferSize_PROMPT  #language en-US "Maximum Printable Number of Characters"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiLibMaxPrintBufferSize_HELP  #language en-US "The maximum printable number of characters. UefLib functions: AsciiPrint(), AsciiErrorPrint(), PrintXY(), AsciiPrintXY(), Print(), ErrorPrint() base on this PCD value to print characters."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumGuidedExtractHandler_PROMPT  #language en-US "Maximum Number of GuidedExtractHandler"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumGuidedExtractHandler_HELP  #language en-US "Indicates the allowable maximum number in extract handler table."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUsbTransferTimeoutValue_PROMPT  #language en-US "USB Transfer Timeout (ms)"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUsbTransferTimeoutValue_HELP  #language en-US "Indicates the default timeouts for USB transfers in milliseconds."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdGuidedExtractHandlerTableAddress_PROMPT  #language en-US "Memory Address of GuidedExtractHandler Table"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdGuidedExtractHandlerTableAddress_HELP  #language en-US "This value is used to set the available memory address to store Guided Extract Handlers. The required memory space is decided by the value of PcdMaximumGuidedExtractHandler."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPciExpressBaseAddress_PROMPT  #language en-US "PCI Express Base Address"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPciExpressBaseAddress_HELP  #language en-US "This value is used to set the base address of PCI express hierarchy."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultLangCodes_PROMPT  #language en-US "Default Value of LangCodes Variable"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultLangCodes_HELP  #language en-US "Default current ISO 639-2 language: English & French."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultLang_PROMPT  #language en-US "Default Value of Lang Variable"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultLang_HELP  #language en-US "Default current ISO 639-2 language: English."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultPlatformLangCodes_PROMPT  #language en-US "Default Value of PlatformLangCodes Variable"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultPlatformLangCodes_HELP  #language en-US "Default platform supported RFC 4646 languages: (American) English & French."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultPlatformLang_PROMPT  #language en-US "Default Value of PlatformLang Variable"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultPlatformLang_HELP  #language en-US "Default current RFC 4646 language: (American) English."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultBaudRate_PROMPT  #language en-US "Default UART Baud Rate"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultBaudRate_HELP  #language en-US "Indicates the default baud rate of UART."

#string STR_gEfiMdePkgTokenSpaceGuid_ERR_80000001 #language en-US "Invalid value provided."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultDataBits_PROMPT  #language en-US "Default UART Data Bit"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultDataBits_HELP  #language en-US "Indicates the number of efficient data bit in UART transaction."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultParity_PROMPT  #language en-US "Default UART Parity"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultParity_HELP  #language en-US "Indicates the setting of data parity in UART transaction.<BR><BR>\n"
                                                                                "0 - Default Parity.<BR>\n"
                                                                                "1 - No Parity.<BR>\n"
                                                                                "2 - Even Parity.<BR>\n"
                                                                                "3 - Odd Parity.<BR>\n"
                                                                                "4 - Mark Parity.<BR>\n"
                                                                                "5 - Space Parity.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultStopBits_PROMPT  #language en-US "Default UART Stop Bits"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultStopBits_HELP  #language en-US "Indicates the setting of stop bit in UART transaction.<BR><BR>\n"
                                                                                  "0 - Default Stop Bits.<BR>\n"
                                                                                  "1 - One Stop Bit.<BR>\n"
                                                                                  "2 - One Five Stop Bits.<BR>\n"
                                                                                  "3 - Two Stop Bits.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDefaultTerminalType_PROMPT  #language en-US "Default Terminal Type"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDefaultTerminalType_HELP  #language en-US "Selects default terminal type.<BR><BR>\n"
                                                                                  "0 - PCANSI<BR>\n"
                                                                                  "1 - VT100<BR>\n"
                                                                                  "2 - VT100+<BR>\n"
                                                                                  "3 - UTF8<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdComponentNameDisable_PROMPT  #language en-US "Disable Component Name Protocol"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdComponentNameDisable_HELP  #language en-US "Indicates if the component name protocol will be installed.<BR><BR>\n"
                                                                                   "TRUE  - Does not install component name protocol.<BR>\n"
                                                                                   "FALSE - Install component name protocol.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDriverDiagnosticsDisable_PROMPT  #language en-US "Disable Diagnostics Name protocol"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDriverDiagnosticsDisable_HELP  #language en-US "Indicates if the diagnostics name protocol will be installed.<BR><BR>\n"
                                                                                       "TRUE  - Does not install diagnostics name protocol.<BR>\n"
                                                                                       "FALSE - Install diagnostics name protocol.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdComponentName2Disable_PROMPT  #language en-US "Disable Component Name2 Protocol"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdComponentName2Disable_HELP  #language en-US "Indicates if the component name2 protocol will be installed.<BR><BR>\n"
                                                                                    "TRUE  - Does not install component name2 protocol.<BR>\n"
                                                                                    "FALSE - Install component name2 protocol.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDriverDiagnostics2Disable_PROMPT  #language en-US "Disable Diagnostics2 Name Protocol"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdDriverDiagnostics2Disable_HELP  #language en-US "Indicates if the diagnostics2 name protocol will be installed.<BR><BR>\n"
                                                                                        "TRUE  - Does not install diagnostics2 name protocol.<BR>\n"
                                                                                        "FALSE - Install diagnostics2 name protocol.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultLangDeprecate_PROMPT  #language en-US "Deprecate Global Variable LangCodes"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiVariableDefaultLangDeprecate_HELP  #language en-US "Indicates if EFI 1.1 ISO 639-2 language supports are obsolete<BR><BR>\n"
                                                                                               "TRUE  - Deprecate global variable LangCodes.<BR>\n"
                                                                                               "FALSE - Does not deprecate global variable LangCodes.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUgaConsumeSupport_PROMPT  #language en-US "Consume UGA Draw Protocol"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUgaConsumeSupport_HELP  #language en-US "Indicates if UGA Draw Protocol is still consumed.<BR><BR>\n"
                                                                                "TRUE  - Consume UGA Draw protocol.<BR>\n"
                                                                                "FALSE - Does not consume UGA Draw protocol.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdVerifyNodeInList_PROMPT  #language en-US "Verify Node In List"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdVerifyNodeInList_HELP  #language en-US "Indicates if a check will be made to see if a specified node is a member of linked list in the following BaseLib functions: GetNextNode(), IsNull(), IsNodeAtEnd(), SwapListEntries().<BR><BR>\n"
                                                                               "TRUE  - Verify a specified node is a member of linked list.<BR>\n"
                                                                               "FALSE - Does not verify a specified node is a member of linked list.<BR>"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdValidateOrderedCollection_PROMPT  #language en-US "Validate ORDERED_COLLECTION structure"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdValidateOrderedCollection_HELP  #language en-US "If TRUE, OrderedCollectionLib is instructed to validate the ORDERED_COLLECTION structure at the end of such operations (typically structure modifications) that justify validation of the structure for unit testing purposes."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiFileHandleLibPrintBufferSize_PROMPT  #language en-US "Number of Printable Characters."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUefiFileHandleLibPrintBufferSize_HELP  #language en-US "This is the print buffer length for FileHandleLib.\n"
                                                                                               "FileHandlePrintLine() sizes buffers based on this PCD value for printing."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdHardwareErrorRecordLevel_PROMPT  #language en-US "Error Level For Hardware Recorder"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdHardwareErrorRecordLevel_HELP  #language en-US "Error level for hardware recorder.\n"
                                                                                       "If value 0, platform does not support feature of hardware error record."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPlatformBootTimeOut_PROMPT  #language en-US "Boot Timeout (s)"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPlatformBootTimeOut_HELP  #language en-US "The number of seconds that the firmware will wait before initiating the original default boot selection.\n"
                                                                                  "A value of 0 indicates that the default boot selection is to be initiated immediately on boot.\n"
                                                                                  "The value of 0xFFFF then firmware will wait for user input before booting."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPort80DataWidth_PROMPT  #language en-US "Port80 Data Width"

#string STR_gEfiMdePkgTokenSpaceGuid_PcdPort80DataWidth_HELP  #language en-US "The bit width of data to be written to Port80. The default value is 8. "

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultReceiveFifoDepth_PROMPT  #language en-US "Default UART Receive FIFO Depth."

#string STR_gEfiMdePkgTokenSpaceGuid_PcdUartDefaultReceiveFifoDepth_HELP  #language en-US "Indicates the receive FIFO depth of UART controller.<BR><BR>"

