###############################################################################
# Copyright (c) 2001, 2005 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
rar_dtd_not_found_EXC_=IWAE0078E RAR file support: DTD file not found: {0}
io_ex_saving_EXC_=IWAE0079E IOException occurred saving {0}
could_not_create_file_EXC_=IWAE0080E Could not create the file named {0}
unsupported_encoding_EXC_=IWAE0081E {0} is not a supported encoding on this platform
unsupported_type_EXC_=IWAE0082E Type is unrecognized or not yet supported: PUBLIC_ID={0} SYSTEM_ID={1}
dtd_not_found_EXC_=IWAE0083E Could not parse xml because the resolved resource "{0}" could not be found in classpath
must_be_boolean_EXC_=IWAE0084E Exception occurred reading {0}.  Value must be a boolean: String value = {1}
must_be_int_EXC_=IWAE0085E Exception occurred reading {0}.  Value must be an integer: String value = {1}
empty_collection_EXC_=IWAE0086E Empty collection for {0} in {1}
missing_req_field_EXC_=IWAE0087E Missing required field {0} in {1}
An_Exception_occurred_whil_EXC_=IWAE0088E An Exception occurred while writing xml
Not_supported_in_this_rele_EXC_=IWAE0089E Not supported in this release
RAR_file_support__IO_excep_EXC_=IWAE0090E RAR file support: IO exception in custom DTD resolver.
An_IO_Exception_occurred_w_EXC_=IWAE0091E An IO Exception occurred while writing xml
Failure_occurred_reading_x_EXC_=IWAE0092E Failure occurred reading xml:
Invalid_value_for__EXC_=IWAE0093E Invalid value for
Valid_values_are___EXC_=IWAE0094E Valid values are:
Key1=

