<?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.
-->
<classpath>
	<classpathentry kind="src" path="src/java"/>
	<classpathentry kind="src" output="target/test" path="src/test"/>
	<classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.0.4.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/dom4j-1.4.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-collections-3.1.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.2.1.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-digester-1.7.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.7.0.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.1.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/commons-codec-1.3.jar"/>
	<classpathentry exported="true" kind="lib" path="lib/jakarta-oro-2.0.8.jar"/>
	<classpathentry kind="lib" path="lib/build-only/ant-1.6.5.jar"/>
	<classpathentry kind="lib" path="lib/build-only/junit-3.8.2.jar"/>
	<classpathentry kind="lib" path="lib/stax-api-1.0.1.jar"/>
	<classpathentry kind="lib" path="lib/log4j-1.2.8.jar"/>
	<classpathentry kind="lib" path="lib/commons-betwixt-0.8.jar"/>
	<classpathentry kind="output" path="target/classes"/>
</classpath>
