/** @file
  GUID used as HII FormSet GUID in HII Resource Sample driver. 
  
Copyright (c) 2011, 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 that 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.

**/

#ifndef __HII_RESOURCE_SAMPLE_HII_GUID_H__
#define __HII_RESOURCE_SAMPLE_HII_GUID_H__

#define HII_RESOURCE_SAMPLE_FORM_SET_GUID  \
    { 0x4f4ef7f0, 0xaa29, 0x4ce9, { 0xba, 0x41, 0x64, 0x3e, 0x1, 0x23, 0xa9, 0x9f }}

extern EFI_GUID gHiiResourceSamleFormSetGuid;

#endif
