<!--
  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.
-->
<?xml version="1.0" encoding="UTF-8"?>
<supplementalDataModels>
  <supplement>
    <project>
      <groupId>ognl</groupId>
      <artifactId>ognl</artifactId>
      <name>OGNL :: Object-Graph Notation Language</name>
      <organization>
        <name>The OpenSymphony Group</name>
        <url>http://www.opensymphony.com</url>
      </organization>
      <licenses>
        <license>
          <name>The OpenSymphony Software License, Version 1.1</name>
          <url>http://www.opensymphony.com/ognl/license.action</url>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <name>SLF4J API Module</name>
      <organization>
        <name>QOS.ch</name>
        <url>http://www.qos.ch</url>
      </organization>
      <licenses>
        <license>
          <name>MIT style</name>
          <url>http://www.slf4j.org/license.html</url>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
      <name>SLF4J JDK14 Binding</name>
      <organization>
        <name>QOS.ch</name>
        <url>http://www.qos.ch</url>
      </organization>
      <licenses>
        <license>
          <name>MIT style</name>
          <url>http://www.slf4j.org/license.html</url>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <name>SLF4J JDK14 Binding</name>
      <organization>
        <name>QOS.ch</name>
        <url>http://www.qos.ch</url>
      </organization>
      <licenses>
        <license>
          <name>MIT style</name>
          <url>http://www.slf4j.org/license.html</url>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <name>SLF4J JDK14 Binding</name>
      <organization>
        <name>QOS.ch</name>
        <url>http://www.qos.ch</url>
      </organization>
      <licenses>
        <license>
          <name>MIT style</name>
          <url>http://www.slf4j.org/license.html</url>
        </license>
      </licenses>
    </project>
  </supplement>
</supplementalDataModels>
