###############################################################################
# Copyright (c) 2003, 2004 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
###############################################################################
AllAuthenticatedUsers_UI_=AllAuthenticatedUsers
AppName_UI_=AppName
The_appName_property_UI_=The appName property
Application_UI_=Application
The_application_property_UI_=The application property
AuthorizationTable_UI_=AuthorizationTable
The_authorizationTable_property_UI_=The authorizationTable property
RunAsMap_UI_=RunAsMap
The_runAsMap_property_UI_=The runAsMap property
ApplicationBinding_UI_=ApplicationBinding
Failed_to_load_image_for_ERROR_=IWAE0001E Failed to load image for
Create_Child_UI_=Create Child
Create_a_new_child_for_the_selected_UI_=Create a new child for the selected
Create_RoleAssignment_UI_=Create RoleAssignment
Create_a_child_of_type_RoleAssignment_for_the_selected_UI_=Create a child of type RoleAssignment for the selected
Everyone_UI_=Everyone
Create_User_UI_=Create User
Create_a_child_of_type_User_for_the_selected_UI_=Create a child of type User for the selected
Role_UI_=Role
The_role_property_UI_=The role property
RoleAssignment_UI_=RoleAssignment
Create_a_new_child_of_type_for_the_selected_UI_=Create a child for the selected
AuthData_UI_=AuthData
The_authData_property_UI_=The authData property
SecurityRole_UI_=SecurityRole
The_securityRole_property_UI_=The securityRole property
RunAsBinding_UI_=RunAsBinding
Create_RunAsBinding_UI_=Create RunAsBinding
Create_a_child_of_type_RunAsBinding_for_the_selected_UI_=Create a child of type RunAsBinding for the selected
SpecialSubject_UI_=SpecialSubject
Name_UI_=Name
The_name_property_UI_=The name property
AccessId_UI_=AccessId
The_accessId_property_UI_=The accessId property
Subject_UI_=Subject
Create_WebModuleExtension_UI_=Create WebModuleExtension
Create_a_child_of_type_WebModuleExtension_for_the_selected_UI_=Create a child of type WebModuleExtension for the selected
ReloadInterval_UI_=ReloadInterval
The_reloadInterval_property_UI_=The reloadInterval property
ApplicationExtension_UI_=ApplicationExtension
EJB_Module_Extension_UI_=EJB Module Extension
Client_Module_Extension_UI_=Client Module Extension
AltBindings_UI_=AltBindings
The_altBindings_property_UI_=The altBindings property
AltExtensions_UI_=AltExtensions
The_altExtensions_property_UI_=The altExtensions property
DependentClasspath_UI_=DependentClasspath
The_dependentClasspath_property_UI_=The dependentClasspath property
AbsolutePath_UI_=AbsolutePath
The_absolutePath_property_UI_=The absolutePath property
ApplicationExtension_1_UI_=ApplicationExtension
The_applicationExtension_property_UI_=The applicationExtension property
Module_UI_=Module
The_module_property_UI_=The module property
<<Unresolvable_ERROR_=IWAE0002E <<Unresolvable
Create_Module_UI_=Create Module
Create_a_child_of_type_Module_for_the_selected_UI_=Create a child of type Module for the selected
SmallIcon_UI_=SmallIcon
The_smallIcon_property_UI_=The smallIcon property
LargeIcon_UI_=LargeIcon
The_largeIcon_property_UI_=The largeIcon property
Description_UI_=Description
The_description_property_UI_=The description property
DisplayName_UI_=DisplayName
The_displayName_property_UI_=The displayName property
<<No_display_name>>_ERROR_=IWAE0003E <<No display name>>
Uri_UI_=Uri
The_uri_property_UI_=The URI property
AltDD_UI_=AltDD
The_altDD_property_UI_=The altDD property
<<URI_not_set>>_ERROR_=IWAE0004E <<URI not set>>
ContextRoot_UI_=ContextRoot
The_contextRoot_property_UI_=The contextRoot property
Create_a_child_for_the_selected_UI_=Create a child for the selected
Module_Extension_UI_=Module Extension
Web_Module_Extension_UI_=Web Module Extension
EARProjectMap_UI_=EARProjectMap
Project_Name_UI_=Project Name
The_project_name_property_of_the_module_mapping_UI_=The project name property of the module mapping
The_module_of_the_module_mapping_UI_=The module of the module mapping
ModuleMapping_UI_=ModuleMapping
Project_Name_1=Project Name
The_project_name_property_of_the_utility_jar_mapping_UI_=The project name property of the utility JAR mapping
The_uri_property_of_the_utility_jar_mapping_UI_=The uri property of the utility JAR mapping
_UI_JavaClientModule_type=JavaClient
_UI_EjbModule_type=EJB
_UI_WebModule_type=Web
_UI_ConnectorModule_type=Connector
