#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
#include "winres.h"
#undef APSTUDIO_READONLY_SYMBOLS

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""winres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "1 TYPELIB ""IECrossfireExtension.tlb""\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "CompanyName", "Eclipse Foundation\0"
            VALUE "FileDescription", "IE Crossfire BHO\0"
            VALUE "FileVersion", "1.0.0.0\0"
            VALUE "LegalCopyright", "Copyright (c) 2011 IBM Corp.  All Rights Reserved.\0"
            VALUE "InternalName", "IECrossfireExtension\0"
            VALUE "OriginalFilename", "IECrossfireExtension.dll\0"
            VALUE "ProductName", "IE Crossfire Server\0"
            VALUE "ProductVersion", "0,0,0,0\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

IDR_IECrossfireExtension         REGISTRY                "IECrossfireExtension.rgs"
IDR_IECrossfireBHO               REGISTRY                "IECrossfireBHO.rgs"

STRINGTABLE 
BEGIN
    IDS_PROJNAME            "IECrossfireExtension"
END

#endif    // English resources

#ifndef APSTUDIO_INVOKED
1 TYPELIB "IECrossfireExtension.tlb"

#endif    // not APSTUDIO_INVOKED

