<<<<<<< .mine
<?xml version="1.0" encoding="UTF-8"?>
<!--

Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

-->
<projectDescription>
	<name>blazeds-opt</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
	</natures>
	<linkedResources>
		<link>
			<name>classes</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/classes</locationURI>
		</link>
		<link>
			<name>jrun</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/jrun</locationURI>
		</link>
		<link>
			<name>lib</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/lib</locationURI>
		</link>
		<link>
			<name>oracle</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/oracle</locationURI>
		</link>
		<link>
			<name>tomcat</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/tomcat</locationURI>
		</link>
		<link>
			<name>weblogic</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/weblogic</locationURI>
		</link>
		<link>
			<name>websphere</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/websphere</locationURI>
		</link>
	</linkedResources>
</projectDescription>
=======
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>blazeds-opt</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
	</natures>
	<linkedResources>
		<link>
			<name>classes</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/classes</locationURI>
		</link>
		<link>
			<name>jrun</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/jrun</locationURI>
		</link>
		<link>
			<name>lib</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/lib</locationURI>
		</link>
		<link>
			<name>oracle</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/oracle</locationURI>
		</link>
		<link>
			<name>tomcat</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/tomcat</locationURI>
		</link>
		<link>
			<name>weblogic</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/weblogic</locationURI>
		</link>
		<link>
			<name>websphere</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/opt/src/websphere</locationURI>
		</link>
	</linkedResources>
</projectDescription>
>>>>>>> .r22994
