<?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.3.0</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>
