/** @file
  GUID for PerformancePkg PCD Token Space 

  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
  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.

**/

#ifndef _PERFORMANCEPKG_TOKEN_SPACE_GUID_H_
#define _PERFORMANCEPKG_TOKEN_SPACE_GUID_H_

#define PERFORMANCEPKG_TOKEN_SPACE_GUID \
  { \
    0x669346ef, 0xFDad, 0x4aeb, { 0x08, 0xa6, 0x21, 0x46, 0x2d, 0x3f, 0xef, 0x7d } \
  }

extern EFI_GUID gPerformancePkgTokenSpaceGuid;

#endif
