###############################################################################
# Copyright (c) 2000, 2017 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
#     Google Inc - add support for accepting multiple connections
###############################################################################

PacketReceiveManager_Got_IOException_from_Virtual_Machine_1=Got IOException from Virtual Machine
PacketReceiveManager_Got_IOException_from_Virtual_Machine_2=Got IOException from Virtual Machine
PacketSendManager_Got_IOException_from_Virtual_Machine_1=Got IOException from Virtual Machine
SocketAttachingConnectorImpl_Machine_name_to_which_to_attach_for_VM_connections_1=Machine name to which to attach for VM connections
SocketAttachingConnectorImpl_Host_2=&Host:
SocketAttachingConnectorImpl_Port_number_to_which_to_attach_for_VM_connections_3=Port number to which to attach for VM connections
SocketAttachingConnectorImpl_Port_4=Po&rt:
SocketAttachingConnectorImpl_1=Connection Timeout
SocketAttachingConnectorImpl_2=Connection Timeout:
SocketAttachingConnectorImpl_Attaches_by_socket_to_other_VMs_5=Attaches by socket to other VMs
SocketAttachingConnectorImpl_Connection_argument_is_not_of_the_right_type_6=Connection argument is not of the right type
SocketAttachingConnectorImpl_Necessary_connection_argument_is_null_7=Necessary connection argument is null
SocketAttachingConnectorImpl_Connection_argument_is_not_a_number_8=Connection argument is not a number
SocketLaunchingConnectorImpl_Home_directory_of_the_SDK_or_runtime_environment_used_to_launch_the_application_1=Home directory of the SDK or runtime environment used to launch the application
SocketLaunchingConnectorImpl_Home_2=Home:
SocketLaunchingConnectorImpl_Launched_VM_options_3=Launched VM options
SocketLaunchingConnectorImpl_Options_4=Options:
SocketLaunchingConnectorImpl_Main_class_and_arguments__or_if__jar_is_an_option__the_main_jar_file_and_arguments_5=Main class and arguments, or if -jar is an option, the main jar file and arguments
SocketLaunchingConnectorImpl_Main_6=Main:
SocketLaunchingConnectorImpl_All_threads_will_be_suspended_before_execution_of_main_7=All threads will be suspended before execution of main
SocketLaunchingConnectorImpl_Suspend_8=Suspend:
SocketLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_9=Character used to combine space-delimited text into a single command line argument
SocketLaunchingConnectorImpl_Quote_10=Quote:
SocketLaunchingConnectorImpl_Name_of_the_Java_VM_launcher_11=Name of the Java VM launcher
SocketLaunchingConnectorImpl_Launcher_12=Launcher:
SocketLaunchingConnectorImpl_Launches_target_using_Sun_Java_VM_command_line_and_attaches_to_it_13=Launches target using Sun Java VM command line and attaches to it
SocketLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_14=Connection argument is not of the right type
SocketLaunchingConnectorImpl_Necessary_connection_argument_is_null_15=Necessary connection argument is null
SocketLaunchingConnectorImpl_Connection_argument_is_not_a_number_16=Connection argument is not a number
SocketListeningConnectorImpl_Port_number_at_which_to_listen_for_VM_connections_1=Port number at which to listen for VM connections
SocketListeningConnectorImpl_Port_2=Po&rt:
SocketListeningConnectorImpl_Timeout_before_accept_returns_3=Timeout before accept returns
SocketListeningConnectorImpl_Timeout_4=Timeout:
SocketListeningConnectorImpl_Accepts_socket_connections_initiated_by_other_VMs_5=Accepts socket connections initiated by other VMs
SocketListeningConnectorImpl_Connection_argument_is_not_of_the_right_type_6=Connection argument is not of the right type
SocketListeningConnectorImpl_Necessary_connection_argument_is_null_7=Necessary connection argument is null
SocketListeningConnectorImpl_Connection_argument_is_not_a_number_8=Connection argument is not a number
SocketListeningConnectorImpl_Limit=Connection &limit:
SocketListeningConnectorImpl_Limit_incoming_connections=Limit incoming connections (0 = no limit)
SocketListeningConnectorImpl_ListeningConnector_Socket_Port=ListeningConnector Socket Port=
SocketRawLaunchingConnectorImpl_Raw_command_to_start_the_debugged_application_VM_1=Raw command to start the debugged application VM
SocketRawLaunchingConnectorImpl_Command_2=Command:
SocketRawLaunchingConnectorImpl_Address_from_which_to_listen_for_a_connection_after_the_raw_command_is_run_3=Address from which to listen for a connection after the raw command is run
SocketRawLaunchingConnectorImpl_Address_4=Address:
SocketRawLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_5=Character used to combine space-delimited text into a single command line argument
SocketRawLaunchingConnectorImpl_Quote_6=Quote:
SocketRawLaunchingConnectorImpl_Launches_target_using_user_specified_command_line_and_attaches_to_it_7=Launches target using user-specified command line and attaches to it
SocketRawLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_8=Connection argument is not of the right type
SocketRawLaunchingConnectorImpl_Necessary_connection_argument_is_null_9=Necessary connection argument is null
SocketRawLaunchingConnectorImpl_Connection_argument_is_not_a_number_10=Connection argument is not a number
SocketLaunchingConnectorImpl_VM_did_not_connect_within_given_time___0__ms_1=VM did not connect within given time: {0} ms
PacketSendManager_Got__0__from_Virtual_Machine_1=Got {0} from Virtual Machine
PacketSendManager_Got__0__from_Virtual_Machine___1__1=Got {0} from Virtual Machine: {1}
PacketReceiveManager_Got__0__from_Virtual_Machine_1=Got {0} from Virtual Machine
PacketReceiveManager_Got__0__from_Virtual_Machine___1__1=Got {0} from Virtual Machine: {1}
PacketReceiveManager_0=Timeout occurred while waiting for packet {0}.
SocketTransportService_0=Attach Thread
SocketTransportService_1=Handshake Thread
