// /** @file
// S3 Resume Module installs EFI_PEI_S3_RESUME2_PPI.
//
// This module works with StandAloneBootScriptExecutor to S3 resume to OS.
// This module will excute the boot script saved during last boot and after that,
// control is passed to OS waking up handler.
//
// Copyright (c) 2010 - 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.
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "S3 Resume Module installs EFI_PEI_S3_RESUME2_PPI"

#string STR_MODULE_DESCRIPTION          #language en-US "This module works with StandAloneBootScriptExecutor to S3 resume to OS.\n"
                                                        "This module will execute the boot script saved during last boot and after that,\n"
                                                        "control is passed to the OS waking up handler."

