# 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.

Apache-2.0:
  - apache.org/licenses/license-2.0
  - apache.org/licenses/license-2.0.txt
  - apache.org/license/license-2.0
  - apache.org/license/license-2.0.txt
  - www.apache.org/licenses/license-2.0.txt
  - opensource.org/licenses/apache-2.0
  - www.apache.org/license/LICENSE-2.0.txt

MIT:
  - bouncycastle.org/licence
  - opensource.org/licenses/mit-license.php
  - opensource.org/licenses/mit
  - www.bouncycastle.org/licence.html
  - www.opensource.org/licenses/mit-license.php

LGPL-2.1:
  - gnu.org/licenses/old-licenses/lgpl-2.1
  - www.gnu.org/licenses/old-licenses/lgpl-2.1.html
  - www.gnu.org/licenses/lgpl-2.1.html

GPL-2.0-with-classpath-exception:
  - gnu.org/software/classpath/license
  - www.gnu.org/software/classpath/license.html

EPL-1.0:
  - eclipse.org/legal/epl-v10
  - www.eclipse.org/legal/epl-v10.html

BSD-2-Clause:
  - opensource.org/licenses/BSD-2-Clause

BSD-3-Clause:
  - opensource.org/licenses/BSD-3-Clause

CC0-1.0:
  - creativecommons.org/publicdomain/zero/1.0/

MPL-1.1:
  - www.mozilla.org/MPL/MPL-1.1.html
