<?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.
  -->
<project xmlns="http://maven.apache.org/DECORATION/1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 http://maven.apache.org/xsd/decoration-1.3.0.xsd">
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.6</version>
    </skin>
    <bannerRight>
        <src>http://ws.apache.org/images/project-logo.jpg</src>
        <href>http://ws.apache.org/</href>
    </bannerRight>
    <publishDate format="yyyy-MM-dd" position="right" />
    <version position="right" />
    <body>
        <!-- Breadcrumbs that every project will inherit -->
        <breadcrumbs>
            <item name="Apache" href="http://www.apache.org/"/>
            <item name="Web Services" href="http://ws.apache.org/"/>
        </breadcrumbs>
        <menu name="Apache" inherit="bottom">
            <item name="License" href="http://www.apache.org/licenses/LICENSE-2.0.html" />
            <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
            <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
            <item name="Security" href="http://www.apache.org/security/"/>
        </menu>
    </body>
</project>
