// *++
//
// Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.<BR>
// This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution.  The full text of the license 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.
//
// 
// Module Name:
//
//   MiscMemoryDevice.uni
// 
// Abstract:
// 
//   Memory Device	
//   Misc. subclass type 17.
//   SMBIOS type 17.
// 
// Revision History:
// 
// --*/


/=#

#langdef   en-US "English"

#string STR_MISC_MEM_DEV_LOCATOR_0          #language en-US  "MODULE 0"
#string STR_MISC_MEM_DEV_LOCATOR_1          #language en-US  "MODULE 1"
#string STR_MISC_MEM_DEV_LOCATOR0           #language en-US  "DIMM 0"
#string STR_MISC_MEM_DEV_LOCATOR1           #language en-US  "DIMM 1"
#string STR_MISC_MEM_BANK_LOCATOR0          #language en-US  "BANK 0"
#string STR_MISC_MEM_BANK_LOCATOR1          #language en-US  "BANK 1"
#string STR_MISC_MEM_MANUFACTURER          #language en-US  "Micron"
#string STR_MISC_MEM_SERIAL_NO             #language en-US  " "
#string STR_MISC_MEM_ASSET_TAG             #language en-US  " "
#string STR_MISC_MEM_PART_NUMBER           #language en-US  " "
