###############################################################################
# Copyright (c) 2000, 2010 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
###############################################################################

Breakpoint_no_associated_marker=Breakpoint does not have an associated marker.
BreakpointManager_Missing_breakpoint_definition=Missing breakpoint definition for marker type {0}
BreakpointManager_Missing_model_identifier=Breakpoint missing debug model identifier
DebugEvent_illegal_detail=detail is not one of the allowed constants, see IDebugEventConstants
DebugEvent_illegal_kind=kind is not one of the allowed constants, see IDebugEventConstants
DebugPlugin_Eclipse_runtime_does_not_support_working_directory_2=Eclipse runtime does not support working directory
DebugPlugin_1=Debug Event Dispatch
DebugPlugin_0=Exception occurred executing command line.
DebugPlugin_2=Internal message logged from Debug Core: {0}
DebugPlugin_3=Error logged from Debug Core: 
DebugPlugin_4=Invalid process factory extension contributed by {0}; id: {1}
DebugPlugin_5=Invalid status handler extension: {0}
DebugPlugin_6=An exception occurred in asynchronous runnable.
DebugPlugin_7=An exception occurred while filtering debug events.
DebugPlugin_8=An exception occurred while dispatching debug events.
EnvironmentVariableResolver_0=Environment variable not specified
SystemPropertyResolver_0=System property not specified
InputStreamMonitor_label=Input Stream Monitor
Launch_terminate_failed=Terminate failed
LaunchConfiguration_Failed_to_delete_launch_configuration__1=Failed to delete launch configuration.
LaunchConfiguration_9=Preparing launch delegate...
LaunchConfiguration_8=Performing pre-launch check...
LaunchConfiguration_7=Build before launch - 
LaunchConfiguration_6=Performing required build...
LaunchConfiguration_5=Performing incremental workspace build...
LaunchConfiguration_4=Performing final launch validation...
LaunchConfiguration_3=Initializing source locator...
LaunchConfiguration_2=Launching delegate...
LaunchConfiguration_0=Launch configuration has corrupt resource mapping attributes
LaunchConfiguration_11=No launch delegate found - launch canceled
LaunchConfiguration_13=Duplicate launcher detected - launch canceled
LaunchConfiguration_14=Incompatible launch mode: expecting {0} instead of {1}
LaunchConfiguration_16=Exception occurred creating launch configuration memento
LaunchConfiguration_17=Exception occurred parsing memento
LaunchConfiguration_18=Invalid launch configuration memento: missing path attribute
LaunchConfiguration_19=Invalid launch configuration memento: missing local attribute
LaunchConfigurationDelegate_6=Searching for errors
LaunchConfigurationDelegate_7=Searching for errors in {0}
LaunchConfigurationDelegate_scoped_incremental_build=Scoped incremental build before launch...
LaunchConfigurationInfo_Attribute__0__is_not_of_type_boolean__3=Attribute {0} is not of type boolean.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_int__2=Attribute {0} is not of type int.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_lang_String__1=Attribute {0} is not of type java.lang.String.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_List__1=Attribute {0} is not of type java.util.List.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_Map__1=Attribute {0} is not of type java.util.Map.
LaunchConfigurationInfo_Invalid_launch_configuration_XML__10=Invalid launch configuration XML.
LaunchConfigurationInfo_missing_type=Launch configuration type id \"{0}\" does not exist.\nPossible causes:\n\tMissing specification of a launch type (missing plug-in)\n\tIncorrect launch configuration XML
LaunchConfigurationInfo_36=A null key has been specified for an attribute in this launch configuration
LaunchConfigurationInfo_35=Attribute {0} is not of type java.util.Set.
LaunchConfigurationWorkingCopy__0__occurred_generating_launch_configuration_XML__1={0} occurred generating launch configuration XML.
LaunchConfigurationWorkingCopy_Specified_container_for_launch_configuration_does_not_exist_2=Specified container for launch configuration does not exist
LaunchConfigurationWorkingCopy_5=Unable to save launch configuration.
LaunchConfigurationWorkingCopy_0=Saving launch configuration [{0}]:
LaunchConfigurationWorkingCopy_1=Writing local file
LaunchConfigurationWorkingCopy_2=Creating new file {0}.launch in workspace
LaunchConfigurationWorkingCopy_3=Setting contents of {0}.launch
LaunchConfigurationWorkingCopy_4=Unable to obtain storage to write launch configuration
LaunchConfigurationWorkingCopy_6=Template cannot be a working copy.
LaunchConfigurationWorkingCopy_7=Templates cannot be nested
LaunchConfigurationWorkingCopy_8=Specified configuration is not a template
LaunchManager__0__occurred_while_reading_launch_configuration_file__1___1={0} occurred while reading launch configuration file: {1}.
LaunchManager_Invalid_launch_configuration_index__18=Invalid launch configuration index.
LaunchManager_does_not_exist=Launch configuration {0} at {1} does not exist.
LaunchManager_does_not_exist_no_store_found=Launch configuration {0} does not exist
LaunchManager_Source_locator_does_not_exist___0__13=Source locator does not exist: {0}
LaunchManager_26=Import failed
LaunchManager_27=Failed to import {0}.
LaunchManager_28=Importing {0}
LaunchManager_29=Importing launch configurations

# This describes the name of a single launch configuration
# {0} is the base name of the configuration
# {1} is the numerical modifier for the name
# For example if we have a config named 'test' and we created a new one from test
# we would get 'test (1)', where test is the basename, and 1 is the numerical modifier
LaunchManager_31={0} ({1})
LaunchManager_invalid_config_name=''{0}'' is an invalid configuration name
LaunchManager_invalid_config_name_char=''{0}'' is an invalid character in a configuration name
LaunchDelegate_0=No description provided.
LaunchDelegate_1={0} Launcher
LaunchDelegate_2={0} launcher
LaunchDelegate_3=Launch delegate for {0} does not implement required interface ILaunchConfigurationDelegate.
LaunchMode_0={0} As
LaunchMode_1=Required attribute {0} missing for launchMode extension.
LogicalStructureType_0=<Missing Description>
LogicalStructureType_1=Required attribute {0} missing for logicalStructureType extension.
LogicalStructureProvider_0=Required attribute modelIdentifier missing for logicalStructureType extension.
LogicalStructureProvider_1=Required attribute class missing for logicalStructureType extension.
OutputStreamMonitor_label=Output Stream Monitor
ProcessMonitorJob_0=Process monitor
RuntimeProcess_terminate_failed=Terminate failed
RuntimeProcess_Exit_value_not_available_until_process_terminates__1=Exit value not available until process terminates.
LaunchConfigurationType_0=Error retrieving template
LaunchConfigurationType_1=Error setting template
LaunchConfigurationType_2=Local configuration cannot be nested in a directory.
LaunchConfigurationType_7=Launch mode not supported: {0}
WatchExpression_0=(Watch expressions not supported)
NullStreamsProxy_0=Null Stream Monitor
RefreshingResources=Refresh resources...
RefreshingResourcesError=Exception(s) occurred during refresh.
RefreshUtil_0=Unable to restore resource memento: {0}
RefreshUtil_1=Refresh scope refers to non-existent resource {0}
