/*
* Add/Remove Programs resources
*
* Copyright 2001-2002, 2008 Owen Rudge
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*
*/
#include <windef.h>
#include <winbase.h>
#include <winuser.h>
#include <commctrl.h>

#include "res.h"

#include "De.rc"
#include "En.rc"
#include "Fr.rc"
#include "Ja.rc"
#include "Ko.rc"
#include "Lt.rc"
#include "Nl.rc"
#include "No.rc"
#include "Pt.rc"
#include "Ro.rc"
#include "Ru.rc"
#include "Si.rc"
#include "Zh.rc"

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

ICO_MAIN ICON "appwiz.ico"
