<?xml version='1.0' ?>
<!--
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution, if
 *    any, must include the following acknowlegement:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in the software itself,
 *    if and wherever such third-party acknowlegements normally appear.
 *
 * 4. The names "The Jakarta Project", "Ant", and "Apache Software
 *    Foundation" must not be used to endorse or promote products derived
 *    from this software without prior written permission. For written
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache"
 *    nor may "Apache" appear in their names without prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
-->
<antlib version="1.5" >
  <task name="mkdir" class="org.apache.tools.ant.taskdefs.Mkdir"/>
  <task name="javac" class="org.apache.tools.ant.taskdefs.Javac"/>
  <task name="chmod" class="org.apache.tools.ant.taskdefs.Chmod"/>
  <task name="delete" class="org.apache.tools.ant.taskdefs.Delete"/>
  <task name="copy" class="org.apache.tools.ant.taskdefs.Copy"/>
  <task name="move" class="org.apache.tools.ant.taskdefs.Move"/>
  <task name="jar" class="org.apache.tools.ant.taskdefs.Jar"/>
  <task name="rmic" class="org.apache.tools.ant.taskdefs.Rmic"/>
  <task name="cvs" class="org.apache.tools.ant.taskdefs.Cvs"/>
  <task name="unzip" class="org.apache.tools.ant.taskdefs.Expand"/>
  <task name="unjar" class="org.apache.tools.ant.taskdefs.Expand"/>
  <task name="unwar" class="org.apache.tools.ant.taskdefs.Expand"/>
  <task name="echo" class="org.apache.tools.ant.taskdefs.Echo"/>
  <task name="javadoc" class="org.apache.tools.ant.taskdefs.Javadoc"/>
  <task name="zip" class="org.apache.tools.ant.taskdefs.Zip"/>
  <task name="gzip" class="org.apache.tools.ant.taskdefs.GZip"/>
  <task name="gunzip" class="org.apache.tools.ant.taskdefs.GUnzip"/>
  <task name="replace" class="org.apache.tools.ant.taskdefs.Replace"/>
  <task name="java" class="org.apache.tools.ant.taskdefs.Java"/>
  <task name="tstamp" class="org.apache.tools.ant.taskdefs.Tstamp"/>
  <task name="property" class="org.apache.tools.ant.taskdefs.Property"/>
  <task name="taskdef" class="org.apache.tools.ant.taskdefs.Taskdef"/>
  <task name="ant" class="org.apache.tools.ant.taskdefs.Ant"/>
  <task name="exec" class="org.apache.tools.ant.taskdefs.ExecTask"/>
  <task name="tar" class="org.apache.tools.ant.taskdefs.Tar"/>
  <task name="untar" class="org.apache.tools.ant.taskdefs.Untar"/>
  <task name="available" class="org.apache.tools.ant.taskdefs.Available"/>
  <task name="filter" class="org.apache.tools.ant.taskdefs.Filter"/>
  <task name="fixcrlf" class="org.apache.tools.ant.taskdefs.FixCRLF"/>
  <task name="patch" class="org.apache.tools.ant.taskdefs.Patch"/>
  <task name="style" class="org.apache.tools.ant.taskdefs.XSLTProcess"/>
  <task name="touch" class="org.apache.tools.ant.taskdefs.Touch"/>
  <task name="signjar" class="org.apache.tools.ant.taskdefs.SignJar"/>
  <task name="genkey" class="org.apache.tools.ant.taskdefs.GenerateKey"/>
  <task name="antstructure" class="org.apache.tools.ant.taskdefs.AntStructure"/>
  <task name="execon" class="org.apache.tools.ant.taskdefs.ExecuteOn"/>
  <task name="antcall" class="org.apache.tools.ant.taskdefs.CallTarget"/>
  <task name="sql" class="org.apache.tools.ant.taskdefs.SQLExec"/>
  <task name="mail" class="org.apache.tools.ant.taskdefs.email.EmailTask"/>
  <task name="fail" class="org.apache.tools.ant.taskdefs.Exit"/>
  <task name="war" class="org.apache.tools.ant.taskdefs.War"/>
  <task name="uptodate" class="org.apache.tools.ant.taskdefs.UpToDate"/>
  <task name="apply" class="org.apache.tools.ant.taskdefs.Transform"/>
  <task name="record" class="org.apache.tools.ant.taskdefs.Recorder"/>
  <task name="cvspass" class="org.apache.tools.ant.taskdefs.CVSPass"/>
  <task name="typedef" class="org.apache.tools.ant.taskdefs.Typedef"/>
  <task name="sleep" class="org.apache.tools.ant.taskdefs.Sleep"/>
  <task name="pathconvert" class="org.apache.tools.ant.taskdefs.PathConvert"/>
  <task name="ear" class="org.apache.tools.ant.taskdefs.Ear"/>
  <task name="parallel" class="org.apache.tools.ant.taskdefs.Parallel"/>
  <task name="sequential" class="org.apache.tools.ant.taskdefs.Sequential"/>
  <task name="condition" class="org.apache.tools.ant.taskdefs.ConditionTask"/>
  <task name="dependset" class="org.apache.tools.ant.taskdefs.DependSet"/>
  <task name="bzip2" class="org.apache.tools.ant.taskdefs.BZip2"/>
  <task name="bunzip2" class="org.apache.tools.ant.taskdefs.BUnzip2"/>
  <task name="checksum" class="org.apache.tools.ant.taskdefs.Checksum"/>
  <task name="waitfor" class="org.apache.tools.ant.taskdefs.WaitFor"/>
  <task name="input" class="org.apache.tools.ant.taskdefs.Input"/>
  <task name="loadfile" class="org.apache.tools.ant.taskdefs.LoadFile"/>
  <task name="manifest" class="org.apache.tools.ant.taskdefs.Manifest"/>
  <task name="antjar" class="org.apache.tools.ant.taskdefs.Antjar"/>
  <task name="antlib" class="org.apache.tools.ant.taskdefs.Antlib"/>

  <data-type name="path" class="org.apache.tools.ant.types.Path"/>
  <data-type name="fileset" class="org.apache.tools.ant.types.FileSet"/>
  <data-type name="filelist" class="org.apache.tools.ant.types.FileList"/>
  <data-type name="patternset" class="org.apache.tools.ant.types.PatternSet"/>
  <data-type name="mapper" class="org.apache.tools.ant.types.Mapper"/>
  <data-type name="filterset" class="org.apache.tools.ant.types.FilterSet"/>
  <data-type name="description" class="org.apache.tools.ant.types.Description"/>
  <data-type name="substitution" class="org.apache.tools.ant.types.Substitution"/>
  <data-type name="regexp" class="org.apache.tools.ant.types.RegularExpression"/>

  <!-- deprecated ant tasks (kept for back compatibility) -->

  <task name="javadoc2" class="org.apache.tools.ant.taskdefs.Javadoc"/>
  <task name="copydir" class="org.apache.tools.ant.taskdefs.Copydir"/>
  <task name="copyfile" class="org.apache.tools.ant.taskdefs.Copyfile"/>
  <task name="deltree" class="org.apache.tools.ant.taskdefs.Deltree"/>
  <task name="rename" class="org.apache.tools.ant.taskdefs.Rename"/>

</antlib>
