/** @file

  Root include file for Mde Package UEFI, UEFI_APPLICATION type modules.

  This is the include file for any module of type UEFI and UEFI_APPLICATION. Uefi modules only use 
  types defined via this include file and can be ported easily to any 
  environment. 

Copyright (c) 2006 - 2010, 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 __PI_UEFI_H__
#define __PI_UEFI_H__

#include <uefi/edk/Uefi/UefiBaseType.h>
#include <uefi/edk/Uefi/UefiSpec.h>

#endif

