/*******************************************************************************
 * Copyright (c) 2008 IBM Corporation.
 * 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
 */
package org.eclipse.ptp.core.messages;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.ptp.core.messages.messages"; //$NON-NLS-1$

	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	public static String AbstractProxyRuntimeSystem_0;

	public static String AbstractProxyRuntimeSystem_1;
	public static String AbstractProxyRuntimeSystem_10;
	public static String AbstractProxyRuntimeSystem_11;
	public static String AbstractProxyRuntimeSystem_12;
	public static String AbstractProxyRuntimeSystem_14;
	public static String AbstractProxyRuntimeSystem_15;
	public static String AbstractProxyRuntimeSystem_16;
	public static String AbstractProxyRuntimeSystem_17;
	public static String AbstractProxyRuntimeSystem_18;
	public static String AbstractProxyRuntimeSystem_19;
	public static String AbstractProxyRuntimeSystem_2;
	public static String AbstractProxyRuntimeSystem_20;
	public static String AbstractProxyRuntimeSystem_21;
	public static String AbstractProxyRuntimeSystem_22;
	public static String AbstractProxyRuntimeSystem_23;
	public static String AbstractProxyRuntimeSystem_3;
	public static String AbstractProxyRuntimeSystem_4;
	public static String AbstractProxyRuntimeSystem_5;
	public static String AbstractProxyRuntimeSystem_6;
	public static String AbstractProxyRuntimeSystem_7;
	public static String AbstractProxyRuntimeSystem_8;
	public static String AbstractProxyRuntimeSystem_9;

	public static String AbstractProxyRuntimeSystem_NoErrorMsgSupplied;

	public static String AbstractProxyRuntimeSystem_ReplacingEnvNotSupported;
	public static String AbstractResourceManager_1;
	public static String AbstractRuntimeResourceManager_1;
	public static String AbstractRuntimeResourceManager_12;
	public static String AbstractRuntimeResourceManager_5;
	public static String AbstractRuntimeResourceManager_2;
	public static String AbstractRuntimeResourceManager_3;
	public static String AbstractRuntimeResourceManager_4;
	public static String AbstractRuntimeResourceManager_6;
	public static String AbstractRuntimeResourceManager_7;
	public static String AbstractRuntimeResourceManager_8;
	public static String AbstractRuntimeResourceManager_9;
	public static String AbstractRuntimeResourceManager_cancelled;

	public static String AbstractRuntimeResourceManager_operationNotSupported;
	public static String BigIntegerAttribute_0;
	public static String BigIntegerAttribute_1;
	public static String BigIntegerAttribute_2;
	public static String BigIntegerAttributeDefinition_0;
	public static String BigIntegerAttributeDefinition_1;
	public static String BooleanAttribute_0;
	public static String DateAttribute_0;
	public static String DateAttribute_1;
	public static String DateAttribute_2;
	public static String DateAttribute_3;
	public static String DateAttribute_4;
	public static String DateAttribute_5;
	public static String DateAttribute_6;
	public static String DateAttribute_7;
	public static String DateAttributeDefinition_0;
	public static String DateAttributeDefinition_1;
	public static String DateAttributeDefinition_2;
	public static String DoubleAttribute_0;
	public static String DoubleAttribute_1;
	public static String DoubleAttributeDefinition_0;
	public static String DoubleAttributeDefinition_1;
	public static String ElementAttributes_0;
	public static String ElementAttributes_1;
	public static String EnumeratedAttribute_0;
	public static String ErrorAttributes_0;
	public static String ErrorAttributes_1;
	public static String IntegerAttribute_0;
	public static String IntegerAttribute_1;
	public static String IntegerAttributeDefinition_0;
	public static String IntegerAttributeDefinition_1;
	public static String JobAttributes_0;
	public static String JobAttributes_1;
	public static String JobAttributes_10;
	public static String JobAttributes_11;
	public static String JobAttributes_12;
	public static String JobAttributes_13;
	public static String JobAttributes_14;
	public static String JobAttributes_15;
	public static String JobAttributes_16;
	public static String JobAttributes_17;
	public static String JobAttributes_18;
	public static String JobAttributes_19;
	public static String JobAttributes_2;
	public static String JobAttributes_3;
	public static String JobAttributes_4;
	public static String JobAttributes_5;
	public static String JobAttributes_6;
	public static String JobAttributes_7;
	public static String JobAttributes_8;
	public static String JobAttributes_9;
	public static String MachineAttributes_0;
	public static String MachineAttributes_1;
	public static String MessageAttributes_0;
	public static String MessageAttributes_1;
	public static String MessageAttributes_2;
	public static String ModelManager_0;
	public static String NodeAttributes_0;
	public static String NodeAttributes_1;
	public static String NodeAttributes_2;
	public static String PNode_1;
	public static String ProcessAttributes_0;
	public static String ProcessAttributes_2;
	public static String ProcessAttributes_4;
	public static String ProcessAttributes_5;
	public static String ProcessAttributes_6;
	public static String ProcessAttributes_7;
	public static String ProcessAttributes_8;
	public static String PTPCorePlugin_0;
	public static String QueueAttributes_0;
	public static String QueueAttributes_1;
	public static String ResourceManagerAttributes_0;
	public static String ResourceManagerAttributes_1;
	public static String ResourceManagerAttributes_2;
	public static String ResourceManagerAttributes_3;
	public static String ResourceManagerAttributes_4;
	public static String StringSetAttribute_0;
	public static String StringSetAttribute_1;

	private Messages() {
		// Prevent instances.
	}
}
