<?xml version="1.0"?>
<!--
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.
-->
<document>
  <properties>
    <title>Downloads</title>
  </properties>
  <body>
    <section name="Download ${project.name}">
      <subsection name="Using a Mirror">
        <p>
          We recommend you use a mirror to download our release
          builds, but you <strong>must</strong> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
          the downloaded files using signatures downloaded from our main
          distribution directories. Recent releases (48 hours) may not yet
          be available from the mirrors.
        </p>

        <p>
          You are currently using <b>[preferred]</b>.  If you
          encounter a problem with this mirror, please select another
          mirror.  If all mirrors are failing, there are <i>backup</i>
          mirrors (at the end of the mirrors list) that should be
          available.
          <br></br>
          [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
        </p>

        <form action="[location]" method="get" id="SelectMirror">
          <p>
            Other mirrors:
            <select name="Preferred">
              [if-any http]
              [for http]<option value="[http]">[http]</option>[end]
              [end]
              [if-any ftp]
              [for ftp]<option value="[ftp]">[ftp]</option>[end]
              [end]
              [if-any backup]
              [for backup]<option value="[backup]">[backup] (backup)</option>[end]
              [end]
            </select>
            <input type="submit" value="Change"></input>
          </p>
        </form>

        <p>
          The <a
          href="https://www.apache.org/dist/creadur/KEYS">KEYS</a>
          link links to the code signing keys used to sign the
          product.  The <code>PGP</code> link downloads the OpenPGP
          compatible signature from our main site.  The
          <code>SHA1</code> and <code>MD5</code> links download the
          checksum from the main site.
        </p>
      </subsection>
    </section>
    <section name="${project.name} ${project.version}">
      <subsection name="Binaries">
        <table>
          <tr>
              <td><a href="[preferred]/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.bz2">apache-rat-${project.version}-bin.tar.bz2</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.bz2.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.bz2.sha1">sha1</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.bz2.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.gz">apache-rat-${project.version}-bin.tar.gz</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.gz.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.gz.sha1">sha1</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.tar.gz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.zip">apache-rat-${project.version}-bin.zip</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.zip.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.zip.sha1">sha1</a></td>
              <td><a href="http://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-bin.zip.asc">pgp</a></td>
          </tr>
        </table>
      </subsection>
      <subsection name="Source">
        <table>
          <tr>
              <td><a href="[preferred]/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.bz2">apache-rat-${project.version}-src.tar.bz2</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.bz2.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.bz2.sha1">sha1</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.bz2.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.gz">apache-rat-${project.version}-src.tar.gz</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.gz.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.gz.sha1">sha1</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.tar.gz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.zip">apache-rat-${project.version}-src.zip</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.zip.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.zip.sha1">sha1</a></td>
              <td><a href="https://www.apache.org/dist/creadur/apache-rat-${project.version}/apache-rat-${project.version}-src.zip.asc">pgp</a></td>
          </tr>
        </table>
      </subsection>
    </section>
    <section name="Archives">
        <p>
          Older releases can be obtained from the archives.
        </p>
        <ul>
          <li class="download"><a href="[preferred]/creadur/">browse download area</a></li>
          <li><a href="https://archive.apache.org/dist/creadur/">archives...</a></li>
          <li><a href="https://archive.apache.org/dist/incubator/rat/">Incubator archives...</a></li>
        </ul>
    </section>
  </body>
</document>
