<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
   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.    
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<title>${title} | Apache Ivy&#153; @version@ Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style/style.css" />
  <script src="js/jquery.pack.js" type="text/javascript"></script>
  <script src="js/jquery.treeview.js" type="text/javascript"></script>
  <script type="text/javascript">
  $(document).ready(function(){$("#treemenu").Treeview({speed: "fast",store: true});});
  </script>
</head>

<body>

<div id="body">
<table id="header" summary="Navigation elements." border="0"
	cellpadding="0" cellspacing="0" width="100%">
	<tr>
		<td id="home" width="30%"><a href="http://ant.apache.org/"
			title="Apache Ant"><img src="images/ant-group-logo.gif" alt="Apache Ant"
			border="0" /></a></td>

		<td class="product" width="70%" align="right" valign="middle"><img
			src="images/logo.png" alt="ivy" border="0" /></td>
	</tr>
</table>

<table id="top-menu" summary="Navigation elements." border="0"
	cellpadding="0" cellspacing="0" width="100%">
	<tr>
		<td>

		<div id="navcontainer">
		<a href="http://www.apache.org/">Apache&#153;</a> &gt; <a href="http://ant.apache.org/">Apache Ant&#153;</a> &gt; <a href="http://ant.apache.org/ivy/">Apache Ivy&#153;</a> &gt; ${breadCrumb}
		</div>
		</td>
	</tr>

</table>

<table id="content" border="0" cellpadding="0" cellspacing="0"
	width="100%">
	<tr>
		<td id="sidebar-left">
		<div class="block block-book" id="block-book-0">
		<h2>Apache Ivy&#153;</h2>

		<div class="content">${menu}</div>

		<center><iframe src="http://www.apache.org/ads/buttonbar.html"
                         style="border-width:0;" frameborder="0" scrolling="no"
                         width="135" height="265"></iframe>
                </center>

		</div>

		</td>
		
		<td valign="top">
		<div id="main">

		<h1 class="title">${title}</h1>
            ${body}
 		</div><!-- main -->
		</td>
	</tr>
</table>

<table id="footer-menu" summary="Navigation elements." border="0"
	cellpadding="0" cellspacing="0" width="100%">
	<tr>
		<td align="center" valign="middle">
		<div class="primary-links">:: 
			<a href="index.html">Home</a> ::
			<a href="reference.html">Reference</a> ::
			<a href="tutorial.html">Tutorials</a> ::
			<a href="dev.html">Developer's doc</a> ::
		</div>
		</td>
	</tr>
</table>



<div id="footer-message" class="footer">
    <hr />
    <i>Copyright &#169; 2015 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>.</i><br />
    <i>Apache Ivy, Apache Ant, Ivy, Ant, Apache, the Apache Ivy logo, the Apache Ant logo and the Apache feather logo are trademarks of The Apache Software Foundation.</i><br />
    <i>All other marks mentioned may be trademarks or registered trademarks of their respective owners. </i>
</div>



</div><!-- body -->
</body>
</html>
