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

name: conjunctive normal form conversion code, a variance aggregator algorithm, and Bloom filter adapted from Apache Hive
version:
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - processing/src/main/java/org/apache/druid/segment/filter/cnf/HiveCnfHelper.java
  - extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorCollector.java
  - extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/filter/BloomKFilter.java

---

name: variable length long deserialization code adapted from Apache Lucene
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - processing/src/main/java/org/apache/druid/segment/data/VSizeLongSerde.java

---

name: SQL query planning code adapted from Apache Calcite
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - sql/src/main/java/org/apache/druid/sql/calcite/
  - processing/src/main/java/org/apache/druid/segment/filter/cnf/CalciteCnfHelper.java

---

name: Kerberos authentication code adapted from Apache Hadoop
license_category: source
module: java-core
license_name: Apache License version 2.0
source_paths:
  - extensions-core/druid-kerberos/src/main/java/org/apache/druid/security/kerberos/

---

name: a modified version of the java-alphanum library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Andrew Duffy (https://github.com/amjjd/java-alphanum)
source_paths:
  - processing/src/main/java/org/apache/druid/query/ordering/StringComparators.java

---

name: a modified version of the Metamarkets java-util library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Metamarkets Group Inc. (https://github.com/metamx/java-util)
source_paths:
  - java-util/

---

name: a modified version of the Metamarkets bytebuffer-collections library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Metamarkets Group Inc. (https://github.com/metamx/bytebuffer-collections)
source_paths:
  - processing/src/main/java/org/apache/druid/collections/

---

name: a modified version of the Metamarkets extendedset library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Metamarkets Group Inc. (https://github.com/metamx/extendedset)
source_paths:
  - extendedset/

---

name: a modified version of the CONCISE (COmpressed 'N' Composable Integer SEt) library
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Alessandro Colantonio (https://sourceforge.net/projects/concise/)
source_paths:
  - extendedset/src/main/java/org/apache/druid/extendedset/intset/

---

name: modified portions of the Guava library
license_category: source
license_name: Apache License version 2.0
module: java-core
copyright: The Guava Authors (https://github.com/google/guava)
source_paths:
  - Closer class: core/src/main/java/org/apache/druid/java/util/common/io/Closer.java
  - Splitter.splitToList() method: core/src/main/java/org/apache/druid/java/util/common/parsers/DelimitedParser.java
  - DirectExecutorService class: core/src/main/java/org/apache/druid/java/util/common/concurrent/DirectExecutorService.java

---

name: modified versions of the Dockerfile and related configuration files
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: SequenceIQ's Hadoop Docker image, copyright SequenceIQ, Inc. (https://github.com/sequenceiq/hadoop-docker/)
source_paths:
  - examples/quickstart/tutorial/hadoop/docker/

---

name: fixed bins histogram percentile computation code adapted from Netflix Spectator
license_category: source
module: java-core
license_name: Apache License version 2.0
copyright: Netflix, Inc. (https://github.com/Netflix/spectator)
source_paths:
  - extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogram.java

---

name: code adapted from Apache Knox KnoxSessionStore and ConfigurableEncryptor
license_category: source
module: extensions/druid-pac4j
license_name: Apache License version 2.0
source_paths:
  - extensions-core/druid-pac4j/src/main/java/org/apache/druid/security/pac4j/Pac4jSessionStore.java
  - core/src/main/java/org/apache/druid/crypto/CryptoService.java

---

name: Code adopted from org.apache.commons.dbcp2.BasicDataSource
license_category: source
module: server
license_name: Apache License version 2.0
version: 2.0.1
source_paths:
  - server/src/main/java/org/apache/druid/metadata/BasicDataSourceExt.java
notice: |
  Apache Commons DBCP
  Copyright 2001-2020 The Apache Software Foundation

  This product includes software developed at
  The Apache Software Foundation (https://www.apache.org/).

---

name: LDAP string encoding function from OWASP ESAPI
license_category: source
module: extensions/druid-basic-security
license_name: BSD-3-Clause License
copyright: The OWASP Foundation (https://github.com/ESAPI/esapi-java-legacy)
license_file_path: licenses/src/esapi.BSD3
source_paths:
  - extensions-core/druid-basic-security/src/main/java/org/apache/druid/security/basic/authentication/validator/LDAPCredentialsValidator.java

---

name: AWS SDK for Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.12.37
libraries:
  - com.amazonaws: aws-java-sdk-core
  - com.amazonaws: aws-java-sdk-ec2
  - com.amazonaws: aws-java-sdk-kms
  - com.amazonaws: aws-java-sdk-s3
  - com.amazonaws: aws-java-sdk-kinesis
  - com.amazonaws: aws-java-sdk-sts
  - com.amazonaws: aws-java-sdk-rds
  - com.amazonaws: jmespath-java
notice: |
  AWS SDK for Java
  Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.

  This product includes software developed by
  Amazon Technologies, Inc (http://www.amazon.com/).

  **********************
  THIRD PARTY COMPONENTS
  **********************
  This software includes third party software subject to the following copyrights:
  - XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty.
  - PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc.

  The licenses for these third party components are included in LICENSE.txt

---

name: Esri Geometry API for Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.2.0
libraries:
  - com.esri.geometry: esri-geometry-api

---

name: ClassMate
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.1.0
libraries:
  - com.fasterxml: classmate
notices:
  - classmate: |
      Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi)

      Other developers who have contributed code are:

      * Brian Langel

---

name: Jackson
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.10.5
libraries:
  - com.fasterxml.jackson.core: jackson-annotations
  - com.fasterxml.jackson.core: jackson-core
  - com.fasterxml.jackson.dataformat: jackson-dataformat-cbor
  - com.fasterxml.jackson.dataformat: jackson-dataformat-smile
  - com.fasterxml.jackson.datatype: jackson-datatype-guava
  - com.fasterxml.jackson.datatype: jackson-datatype-joda
  - com.fasterxml.jackson.jaxrs: jackson-jaxrs-base
  - com.fasterxml.jackson.jaxrs: jackson-jaxrs-json-provider
  - com.fasterxml.jackson.jaxrs: jackson-jaxrs-smile-provider
  - com.fasterxml.jackson.module: jackson-module-jaxb-annotations
  - com.fasterxml.jackson.module: jackson-module-guice
notice: |
  # Jackson JSON processor

  Jackson is a high-performance, Free/Open Source JSON processing library.
  It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
  been in development since 2007.
  It is currently developed by a community of developers, as well as supported
  commercially by FasterXML.com.

  ## Licensing

  Jackson core and extension components may licensed under different licenses.
  To find the details that apply to this artifact see the accompanying LICENSE file.
  For more information, including possible other licensing options, contact
  FasterXML.com (http://fasterxml.com).

  ## Credits

  A list of contributors may be found from CREDITS file, which is included
  in some artifacts (usually source distributions); but is always available
  from the source code management (SCM) system project uses.

---

name: Jackson
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.10.5.1
libraries:
  - com.fasterxml.jackson.core: jackson-databind
notice: |
  # Jackson JSON processor

  Jackson is a high-performance, Free/Open Source JSON processing library.
  It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
  been in development since 2007.
  It is currently developed by a community of developers, as well as supported
  commercially by FasterXML.com.

  ## Licensing

  Jackson core and extension components may licensed under different licenses.
  To find the details that apply to this artifact see the accompanying LICENSE file.
  For more information, including possible other licensing options, contact
  FasterXML.com (http://fasterxml.com).

  ## Credits

  A list of contributors may be found from CREDITS file, which is included
  in some artifacts (usually source distributions); but is always available
  from the source code management (SCM) system project uses.

---

name: JavaBeans Activation Framework API JAR
license_category: binary
module: java-core
license_name: Eclipse Distribution License 1.0
version: 1.2.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jakarta.EDL1
libraries:
  - jakarta.activation: jakarta.activation-api

---

name: Jakarta XML Bind API
license_category: binary
module: java-core
license_name: Eclipse Distribution License 1.0
version: 2.3.2
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jakarta.EDL1
libraries:
  - jakarta.xml.bind: jakarta.xml.bind-api

---

name: Caffeine
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.8.0
libraries:
  - com.github.ben-manes.caffeine: caffeine

---

name: Error Prone Annotations
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.8.0
libraries:
  - com.google.errorprone: error_prone_annotations

---

name: Guava
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 16.0.1
libraries:
  - com.google.guava: guava

---

name: Guice
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.1.0
libraries:
  - com.google.inject: guice
  - com.google.inject.extensions: guice-multibindings
  - com.google.inject.extensions: guice-servlet
  - com.google.inject.extensions: guice-assistedinject
notices:
  - guice: |
      Google Guice - Core Library
      Copyright 2006-2016 Google, Inc.
  - guice-multibindings: |
      Google Guice - Extensions - MultiBindings
      Copyright 2006-2016 Google, Inc.
  - guice-servlet: |
      Google Guice - Extensions - Servlet
      Copyright 2006-2016 Google, Inc.
  - guice-assistedinject: |
      Google Guice - Extensions - AssistedInject
      Copyright 2006-2016 Google, Inc.

---

name: JsonPath
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.3.0
libraries:
  - com.jayway.jsonpath: json-path

---

name: CronScheduler
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.1
libraries:
  - io.timeandspace: cron-scheduler

---

name: LMAX Disruptor
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.3.6
libraries:
  - com.lmax: disruptor

---

name: LZF Compressor
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.4
libraries:
  - com.ning: compress-lzf
notices:
  - compress-lzf: |
      # Compress LZF

      This library contains efficient implementation of LZF compression format,
      as well as additional helper classes that build on JDK-provided gzip (deflat)
      codec.

      ## Licensing

      Library is licensed under Apache License 2.0, as per accompanying LICENSE file.

      ## Credit

      Library has been written by Tatu Saloranta (tatu.saloranta@iki.fi).
      It was started at Ning, inc., as an official Open Source process used by
      platform backend, but after initial versions has been developed outside of
      Ning by supporting community.

      Other contributors include:

      * Jon Hartlaub (first versions of streaming reader/writer; unit tests)
      * Cedrik Lime: parallel LZF implementation

      Various community members have contributed bug reports, and suggested minor
      fixes; these can be found from file "VERSION.txt" in SCM.

---

name: OpenCSV
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.6
libraries:
  - com.opencsv: opencsv

---

name: OkHttp
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.2
libraries:
  - com.squareup.okhttp: okhttp

---

name: Netty Reactive Streams
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.0.0
libraries:
  - com.typesafe.netty: netty-reactive-streams

---

name: Apache Commons BeanUtils
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.9.4
libraries:
  - commons-beanutils: commons-beanutils
notices:
  - commons-beanutils: |
      Apache Commons BeanUtils
      Copyright 2000-2016 The Apache Software Foundation

---

name: Apache Commons Codec
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.13
libraries:
  - commons-codec: commons-codec
notices:
  - commons-codec: |
      Apache Commons Codec
      Copyright 2002-2017 The Apache Software Foundation


      Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org)

      ===============================================================================

      The content of package org.apache.commons.codec.language.bm has been translated
      from the original php source code available at http://stevemorse.org/phoneticinfo.htm
      with permission from the original authors.
      Original source copyright:
      Copyright (c) 2008 Alexander Beider & Stephen P. Morse.

---

name: Apache Commons Collections
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.2.2
libraries:
  - commons-collections: commons-collections
notices:
  - commons-collections: |
      Apache Commons Collections
      Copyright 2001-2015 The Apache Software Foundation

---

name: Apache Commons IO
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.11.0
libraries:
  - commons-io: commons-io
notices:
  - commons-io: |
      Apache Commons IO
      Copyright 2002-2021 The Apache Software Foundation

---

name: Apache Commons Lang
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.6
libraries:
  - commons-lang: commons-lang
notices:
  - commons-lang: |
      Apache Commons Lang
      Copyright 2001-2011 The Apache Software Foundation

---

name: Apache Commons Logging
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.1.1
libraries:
  - commons-logging: commons-logging
notices:
  - commons-logging: |
      // ------------------------------------------------------------------
      // NOTICE file corresponding to the section 4d of The Apache License,
      // Version 2.0, in this case for Commons Logging
      // ------------------------------------------------------------------

      Commons Logging
      Copyright 2001-2007 The Apache Software Foundation

      This product includes/uses software(s) developed by 'an unknown organization'
        - Unnamed - avalon-framework:avalon-framework:jar:4.1.3
        - Unnamed - log4j:log4j:jar:1.2.12
        - Unnamed - logkit:logkit:jar:1.0.1

---

name: Apache Commons Net
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.6
libraries:
  - commons-net: commons-net

---

name: Apache Commons Collections
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.2
libraries:
  - org.apache.commons: commons-collections4
notices:
  - commons-collections4: |
      Apache Commons Collections
      Copyright 2001-2018 The Apache Software Foundation

---

name: Apache Commons Compress
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.21
libraries:
  - org.apache.commons: commons-compress
notices:
  - commons-compress: |
      Apache Commons Compress
      Copyright 2002-2018 The Apache Software Foundation

      The files in the package org.apache.commons.compress.archivers.sevenz
      were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/),
      which has been placed in the public domain:

      "LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html)

---

name: Apache Commons DBCP
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.0.1
libraries:
  - org.apache.commons: commons-dbcp2
notices:
  - commons-dbcp2: |
      Apache Commons DBCP
      Copyright 2001-2014 The Apache Software Foundation

---

name: Apache Commons Lang
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.8.1
libraries:
  - org.apache.commons: commons-lang3
notices:
  - commons-lang3: |
      Apache Commons Lang
      Copyright 2001-2018 The Apache Software Foundation

---

name: Apache Commons Math
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.6.1
libraries:
  - org.apache.commons: commons-math3
notices:
  - commons-math3: |
      Apache Commons Math
      Copyright 2001-2016 The Apache Software Foundation

      This product includes software developed for Orekit by
      CS Systèmes d'Information (http://www.c-s.fr/)
      Copyright 2010-2012 CS Systèmes d'Information

---

name: Apache Commons Pool
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.2
libraries:
  - org.apache.commons: commons-pool2
notices:
  - commons-pool2: |
      Apache Commons Pool
      Copyright 2001-2014 The Apache Software Foundation

      The LinkedBlockingDeque implementation is based on an implementation written by
      Doug Lea with assistance from members of JCP JSR-166 Expert Group and released
      to the public domain, as explained at
      http://creativecommons.org/licenses/publicdomain

---

name: Apache Commons Text
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.3
libraries:
  - org.apache.commons: commons-text
notices:
  - commons-text: |
      Apache Commons Text
      Copyright 2001-2018 The Apache Software Foundation

---

name: Airline
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.7
libraries:
  - io.airlift: airline
notices:
  - airline: |
      Copyright Notices
      =================

      Copyright 2011 Dain Sundstrom <dain@iq80.com>
      Copyright 2010 Cedric Beust <cedric@beust.com>

---

name: DropWizard Metrics Core
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.0.0
libraries:
  - io.dropwizard.metrics: metrics-core

---

name: pac4j-oidc java security library
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 3.8.3
libraries:
  - org.pac4j: pac4j-oidc

---

name: pac4j-core java security library
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 3.8.3
libraries:
  - org.pac4j: pac4j-core

---

name: org.objenesis objenesis
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 3.0.1
libraries:
  - org.objenesis: objenesis

---

name: com.nimbusds lang-tag
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 1.5
libraries:
  - com.nimbusds: lang-tag

---

name: com.nimbusds nimbus-jose-jwt
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 7.9
libraries:
  - com.nimbusds: nimbus-jose-jwt

---

name: com.nimbusds oauth2-oidc-sdk
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 6.5
libraries:
  - com.nimbusds: oauth2-oidc-sdk

---

name: net.bytebuddy byte-buddy
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 1.9.10
libraries:
  - net.bytebuddy: byte-buddy

---

name: net.bytebuddy byte-buddy-agent
license_category: binary
module: extensions/druid-pac4j
license_name: Apache License version 2.0
version: 1.9.10
libraries:
  - net.bytebuddy: byte-buddy-agent

---

name: org.mockito mockito-core
license_category: binary
module: extensions/druid-pac4j
license_name: MIT License
version: 2.28.2
libraries:
  - org.mockito: mockito-core

---

name: javax.activation activation
license_category: binary
module: extensions/druid-pac4j
license_name: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
version: 1.1.1
libraries:
  - javax.activation: activation

---

name: com.sun.mail javax.mail
license_category: binary
module: extensions/druid-pac4j
license_name: CDDL 1.1
version: 1.6.1
libraries:
  - com.sun.mail: javax.mail

---

name: kubernetes official java client
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java

---

name: kubernetes official java client api
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java-api

---

name: kubernetes official java client extended
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java-extended

---

name: io.prometheus simpleclient_common
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - io.prometheus: simpleclient_common

---

name: org.apache.commons commons-collections4
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 4.4
libraries:
  - org.apache.commons: commons-collections4

---

name: io.sundr builder-annotations
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: builder-annotations

---

name: com.squareup.okio okio
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.17.2
libraries:
  - com.squareup.okio: okio

---

name: io.gsonfire gson-fire
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.8.4
libraries:
  - io.gsonfire: gson-fire

---

name: io.swagger swagger-annotations
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.6.2
libraries:
  - io.swagger: swagger-annotations

---

name: io.prometheus simpleclient_httpserver
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - io.prometheus: simpleclient_httpserver

---

name: org.bitbucket.b_c jose4j
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.7.2
libraries:
  - org.bitbucket.b_c: jose4j

---

name: org.joda joda-convert
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 2.2.1
libraries:
  - org.joda: joda-convert

---

name: com.squareup.okhttp3 okhttp
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 3.14.9
libraries:
  - com.squareup.okhttp3: okhttp

---

name: io.prometheus simpleclient
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - io.prometheus: simpleclient

---

name: io.kubernetes client-java-proto
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 10.0.1
libraries:
  - io.kubernetes: client-java-proto

---

name: org.yaml snakeyaml
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 1.27
libraries:
  - org.yaml: snakeyaml

---

name: com.flipkart.zjsonpatch zjsonpatch
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.4.11
libraries:
  - com.flipkart.zjsonpatch: zjsonpatch

---

name: org.bouncycastle bcprov-jdk15on
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: MIT License
version: 1.68
libraries:
  - org.bouncycastle: bcprov-jdk15on

---

name: io.sundr resourcecify-annotations
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: resourcecify-annotations

---

name: io.sundr sundr-codegen
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: sundr-codegen

---

name: org.bouncycastle bcprov-ext-jdk15on
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: MIT License
version: 1.68
libraries:
  - org.bouncycastle: bcprov-ext-jdk15on

---

name: io.sundr sundr-core
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 0.22.0
libraries:
  - io.sundr: sundr-core

---

name: com.squareup.okhttp3 logging-interceptor
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 3.14.9
libraries:
  - com.squareup.okhttp3: logging-interceptor

---

name: org.bouncycastle bcpkix-jdk15on
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: MIT License
version: 1.66
libraries:
  - org.bouncycastle: bcpkix-jdk15on

---

name: com.github.vladimir-bukhtoyarov bucket4j-core
license_category: binary
module: extensions/druid-kubernetes-extensions
license_name: Apache License version 2.0
version: 4.10.0
libraries:
  - com.github.vladimir-bukhtoyarov: bucket4j-core

---

name: Netty
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.10.6.Final
libraries:
  - io.netty: netty
notices:
  - netty: |
      ==
                                  The Netty Project
                                  =================

      Please visit the Netty web site for more information:

        * http://netty.io/

      Copyright 2011 The Netty Project

      The Netty Project 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.

      Also, please refer to each LICENSE.<component>.txt file, which is located in
      the 'license' directory of the distribution file, for the license terms of the
      components that this product depends on.

      -------------------------------------------------------------------------------
      This product contains the extensions to Java Collections Framework which has
      been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

        * LICENSE:
          * license/LICENSE.jsr166y.txt (Public Domain)
        * HOMEPAGE:
          * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
          * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

      This product contains a modified version of Robert Harder's Public Domain
      Base64 Encoder and Decoder, which can be obtained at:

        * LICENSE:
          * license/LICENSE.base64.txt (Public Domain)
        * HOMEPAGE:
          * http://iharder.sourceforge.net/current/java/base64/

      This product contains a modified version of 'JZlib', a re-implementation of
      zlib in pure Java, which can be obtained at:

        * LICENSE:
          * license/LICENSE.jzlib.txt (BSD Style License)
        * HOMEPAGE:
          * http://www.jcraft.com/jzlib/

      This product contains a modified version of 'Webbit', a Java event based
      WebSocket and HTTP server:

        * LICENSE:
          * license/LICENSE.webbit.txt (BSD License)
        * HOMEPAGE:
          * https://github.com/joewalnes/webbit

      This product optionally depends on 'Protocol Buffers', Google's data
      interchange format, which can be obtained at:

        * LICENSE:
          * license/LICENSE.protobuf.txt (New BSD License)
        * HOMEPAGE:
          * http://code.google.com/p/protobuf/

      This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
      a temporary self-signed X.509 certificate when the JVM does not provide the
      equivalent functionality.  It can be obtained at:

        * LICENSE:
          * license/LICENSE.bouncycastle.txt (MIT License)
        * HOMEPAGE:
          * http://www.bouncycastle.org/

      This product optionally depends on 'SLF4J', a simple logging facade for Java,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.slf4j.txt (MIT License)
        * HOMEPAGE:
          * http://www.slf4j.org/

      This product optionally depends on 'Apache Commons Logging', a logging
      framework, which can be obtained at:

        * LICENSE:
          * license/LICENSE.commons-logging.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://commons.apache.org/logging/

      This product optionally depends on 'Apache Log4J', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.log4j.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://logging.apache.org/log4j/

      This product optionally depends on 'JBoss Logging', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1)
        * HOMEPAGE:
          * http://anonsvn.jboss.org/repos/common/common-logging-spi/

      This product optionally depends on 'Apache Felix', an open source OSGi
      framework implementation, which can be obtained at:

        * LICENSE:
          * license/LICENSE.felix.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://felix.apache.org/

---

name: Netty
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.1.68.Final
libraries:
  - io.netty: netty-buffer
  - io.netty: netty-codec
  - io.netty: netty-codec-dns
  - io.netty: netty-codec-http
  - io.netty: netty-codec-socks
  - io.netty: netty-common
  - io.netty: netty-handler
  - io.netty: netty-handler-proxy
  - io.netty: netty-resolver
  - io.netty: netty-resolver-dns
  - io.netty: netty-transport
  - io.netty: netty-transport-native-epoll
  - io.netty: netty-transport-native-unix-common
notice: |
  ==
                              The Netty Project
                              =================

  Please visit the Netty web site for more information:

    * http://netty.io/

  Copyright 2014 The Netty Project

  The Netty Project 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.

  Also, please refer to each LICENSE.<component>.txt file, which is located in
  the 'license' directory of the distribution file, for the license terms of the
  components that this product depends on.

  -------------------------------------------------------------------------------
  This product contains the extensions to Java Collections Framework which has
  been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

    * LICENSE:
      * license/LICENSE.jsr166y.txt (Public Domain)
    * HOMEPAGE:
      * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
      * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

  This product contains a modified version of Robert Harder's Public Domain
  Base64 Encoder and Decoder, which can be obtained at:

    * LICENSE:
      * license/LICENSE.base64.txt (Public Domain)
    * HOMEPAGE:
      * http://iharder.sourceforge.net/current/java/base64/

  This product contains a modified portion of 'Webbit', an event based
  WebSocket and HTTP server, which can be obtained at:

    * LICENSE:
      * license/LICENSE.webbit.txt (BSD License)
    * HOMEPAGE:
      * https://github.com/joewalnes/webbit

  This product contains a modified portion of 'SLF4J', a simple logging
  facade for Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.slf4j.txt (MIT License)
    * HOMEPAGE:
      * http://www.slf4j.org/

  This product contains a modified portion of 'Apache Harmony', an open source
  Java SE, which can be obtained at:

    * NOTICE:
      * license/NOTICE.harmony.txt
    * LICENSE:
      * license/LICENSE.harmony.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://archive.apache.org/dist/harmony/

  This product contains a modified portion of 'jbzip2', a Java bzip2 compression
  and decompression library written by Matthew J. Francis. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jbzip2.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jbzip2/

  This product contains a modified portion of 'libdivsufsort', a C API library to construct
  the suffix array and the Burrows-Wheeler transformed string for any input string of
  a constant-size alphabet written by Yuta Mori. It can be obtained at:

    * LICENSE:
      * license/LICENSE.libdivsufsort.txt (MIT License)
    * HOMEPAGE:
      * https://github.com/y-256/libdivsufsort

  This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM,
   which can be obtained at:

    * LICENSE:
      * license/LICENSE.jctools.txt (ASL2 License)
    * HOMEPAGE:
      * https://github.com/JCTools/JCTools

  This product optionally depends on 'JZlib', a re-implementation of zlib in
  pure Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jzlib.txt (BSD style License)
    * HOMEPAGE:
      * http://www.jcraft.com/jzlib/

  This product optionally depends on 'Compress-LZF', a Java library for encoding and
  decoding data in LZF format, written by Tatu Saloranta. It can be obtained at:

    * LICENSE:
      * license/LICENSE.compress-lzf.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/ning/compress

  This product optionally depends on 'lz4', a LZ4 Java compression
  and decompression library written by Adrien Grand. It can be obtained at:

    * LICENSE:
      * license/LICENSE.lz4.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jpountz/lz4-java

  This product optionally depends on 'lzma-java', a LZMA Java compression
  and decompression library, which can be obtained at:

    * LICENSE:
      * license/LICENSE.lzma-java.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jponge/lzma-java

  This product contains a modified portion of 'jfastlz', a Java port of FastLZ compression
  and decompression library written by William Kinney. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jfastlz.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jfastlz/

  This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data
  interchange format, which can be obtained at:

    * LICENSE:
      * license/LICENSE.protobuf.txt (New BSD License)
    * HOMEPAGE:
      * https://github.com/google/protobuf

  This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
  a temporary self-signed X.509 certificate when the JVM does not provide the
  equivalent functionality.  It can be obtained at:

    * LICENSE:
      * license/LICENSE.bouncycastle.txt (MIT License)
    * HOMEPAGE:
      * http://www.bouncycastle.org/

  This product optionally depends on 'Snappy', a compression library produced
  by Google Inc, which can be obtained at:

    * LICENSE:
      * license/LICENSE.snappy.txt (New BSD License)
    * HOMEPAGE:
      * https://github.com/google/snappy

  This product optionally depends on 'JBoss Marshalling', an alternative Java
  serialization API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jboss-marshalling.txt (GNU LGPL 2.1)
    * HOMEPAGE:
      * http://www.jboss.org/jbossmarshalling

  This product optionally depends on 'Caliper', Google's micro-
  benchmarking framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.caliper.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/google/caliper

  This product optionally depends on 'Apache Commons Logging', a logging
  framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-logging.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://commons.apache.org/logging/

  This product optionally depends on 'Apache Log4J', a logging framework, which
  can be obtained at:

    * LICENSE:
      * license/LICENSE.log4j.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://logging.apache.org/log4j/

  This product optionally depends on 'Aalto XML', an ultra-high performance
  non-blocking XML processor, which can be obtained at:

    * LICENSE:
      * license/LICENSE.aalto-xml.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://wiki.fasterxml.com/AaltoHome

  This product contains a modified version of 'HPACK', a Java implementation of
  the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:

    * LICENSE:
      * license/LICENSE.hpack.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/twitter/hpack

  This product contains a modified portion of 'Apache Commons Lang', a Java library
  provides utilities for the java.lang API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-lang.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://commons.apache.org/proper/commons-lang/


  This product contains the Maven wrapper scripts from 'Maven Wrapper', that provides an easy way to ensure a user has everything necessary to run the Maven build.

    * LICENSE:
      * license/LICENSE.mvn-wrapper.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/takari/maven-wrapper

---

name: fastutil
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 8.5.4
libraries:
  - it.unimi.dsi: fastutil
  - it.unimi.dsi: fastutil-core
  - it.unimi.dsi: fastutil-extra

---

name: Javax Inject
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1
libraries:
  - javax.inject: javax.inject

---

name: Bean Validation API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.1.0.Final
libraries:
  - javax.validation: validation-api

---

name: Joda-Time
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.10.5
libraries:
  - joda-time: joda-time
notices:
  - joda-time: |
      =============================================================================
      = NOTICE file corresponding to section 4d of the Apache License Version 2.0 =
      =============================================================================
      This product includes software developed by
      Joda.org (http://www.joda.org/).

---

name: Aggregate Designer Algorithm
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 6.0
libraries:
  - net.hydromatic: aggdesigner-algorithm
notices:
  - aggdesigner-algorithm: |
      Aggregate Designer

      Copyright 2006 - 2013 Pentaho Corporation.  All rights reserved.
      Copyright 2000-2005, 2014-2016 Julian Hyde

---

name: Java Native Access (JNA)
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.5.1
libraries:
  - net.java.dev.jna: jna

---

name: ASM Based Accessors Helper Used By JSON Smart
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.2
libraries:
  - net.minidev: accessors-smart

---

name: JSON Small and Fast Parser
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.3
libraries:
  - net.minidev: json-smart

---

name: Spymemcached
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.12.3
libraries:
  - net.spy: spymemcached

---

name: jackson-jq
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.0.10
libraries:
  - net.thisptr: jackson-jq

---

name: Apache Calcite
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.21.0
libraries:
  - org.apache.calcite: calcite-core
  - org.apache.calcite: calcite-linq4j
notices:
  - calcite-core: |
      Calcite Core
      Copyright 2012-2019 The Apache Software Foundation
  - calcite-linq4j: |
      Calcite Linq4j
      Copyright 2012-2019 The Apache Software Foundation

---

name: Apache Calcite Avatica
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.17.0
libraries:
  - org.apache.calcite.avatica: avatica-core
  - org.apache.calcite.avatica: avatica-metrics
  - org.apache.calcite.avatica: avatica-server
notices:
  - avatica-core: |
      Apache Calcite Avatica
      Copyright 2012-2020 The Apache Software Foundation
  - avatica-metrics: |
      Apache Calcite Avatica Metrics
      Copyright 2012-2020 The Apache Software Foundation
  - avatica-server: |
      Apache Calcite Avatica Server
      Copyright 2012-2020 The Apache Software Foundation
---

name: Apache Curator
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.3.0
libraries:
  - org.apache.curator: curator-client
  - org.apache.curator: curator-framework
  - org.apache.curator: curator-recipes
  - org.apache.curator: curator-x-discovery
notices:
  - curator-client: |
      Curator Client
      Copyright 2011-2018 The Apache Software Foundation
  - curator-framework: |
      Curator Framework
      Copyright 2011-2018 The Apache Software Foundation
  - curator-recipes: |
      Curator Recipes
      Copyright 2011-2018 The Apache Software Foundation
  - curator-x-discovery: |
      Curator Service Discovery
      Copyright 2011-2018 The Apache Software Foundation

---

name: Apache Derby
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 10.14.2.0
libraries:
  - org.apache.derby: derby
  - org.apache.derby: derbyclient
  - org.apache.derby: derbynet
notice: |
  =========================================================================
  ==  NOTICE file corresponding to section 4(d) of the Apache License,
  ==  Version 2.0, in this case for the Apache Derby distribution.
  ==
  ==  DO NOT EDIT THIS FILE DIRECTLY. IT IS GENERATED
  ==  BY THE buildnotice TARGET IN THE TOP LEVEL build.xml FILE.
  ==
  =========================================================================

  Apache Derby
  Copyright 2004-2018 The Apache Software Foundation

  This product includes software developed by
  The Apache Software Foundation (http://www.apache.org/).


  =========================================================================

  Portions of Derby were originally developed by
  International Business Machines Corporation and are
  licensed to the Apache Software Foundation under the
  "Software Grant and Corporate Contribution License Agreement",
  informally known as the "Derby CLA".
  The following copyright notice(s) were affixed to portions of the code
  with which this file is now or was at one time distributed
  and are placed here unaltered.

  (C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.

  (C) Copyright IBM Corp. 2003.


  =========================================================================


  The portion of the functionTests under 'nist' was originally
  developed by the National Institute of Standards and Technology (NIST),
  an agency of the United States Department of Commerce, and adapted by
  International Business Machines Corporation in accordance with the NIST
  Software Acknowledgment and Redistribution document at
  http://www.itl.nist.gov/div897/ctg/sql_form.htm



  =========================================================================


  The Derby build relies on source files supplied by the Apache Felix
  project. The following notice covers the Felix files:

    Apache Felix Main
    Copyright 2008 The Apache Software Foundation


    I. Included Software

    This product includes software developed at
    The Apache Software Foundation (http://www.apache.org/).
    Licensed under the Apache License 2.0.

    This product includes software developed at
    The OSGi Alliance (http://www.osgi.org/).
    Copyright (c) OSGi Alliance (2000, 2007).
    Licensed under the Apache License 2.0.

    This product includes software from http://kxml.sourceforge.net.
    Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany.
    Licensed under BSD License.

    II. Used Software

    This product uses software developed at
    The OSGi Alliance (http://www.osgi.org/).
    Copyright (c) OSGi Alliance (2000, 2007).
    Licensed under the Apache License 2.0.


    III. License Summary
    - Apache License 2.0
    - BSD License

---

name: Apache HttpClient
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.5.10
libraries:
  - org.apache.httpcomponents: httpclient
notices:
  - httpclient: |
      Apache HttpClient
      Copyright 1999-2017 The Apache Software Foundation

---

name: Apache HttpClient
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 4.5.2
libraries:
  - org.apache.httpcomponents: httpclient
notices:
  - httpclient: |
      Apache HttpClient
      Copyright 1999-2016 The Apache Software Foundation

---

name: Apache HttpCore
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 4.4.11
libraries:
  - org.apache.httpcomponents: httpcore
notices:
  - httpcore: |
      Apache HttpCore
      Copyright 2005-2019 The Apache Software Foundation

---

name: Apache Log4j
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.15.0
libraries:
  - org.apache.logging.log4j: log4j-1.2-api
  - org.apache.logging.log4j: log4j-api
  - org.apache.logging.log4j: log4j-core
  - org.apache.logging.log4j: log4j-jul
  - org.apache.logging.log4j: log4j-slf4j-impl
notices:
  - log4j-1.2-api: |
      Apache Log4j 1.x Compatibility API
      Copyright 1999-2015 Apache Software Foundation
  - log4j-api: |
      Apache Log4j API
      Copyright 1999-2015 Apache Software Foundation
  - log4j-core: |
      Apache Log4j Core
      Copyright 1999-2012 Apache Software Foundation

      ResolverUtil.java
      Copyright 2005-2006 Tim Fennell

      TypeUtil.java
      Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams
  - log4j-jul: |
      Apache Log4j JUL Adapter
      Copyright 1999-2015 Apache Software Foundation
  - log4j-slf4j-impl: |
      Apache Log4j SLF4J Binding
      Copyright 1999-2015 Apache Software Foundation

---

name: Apache Maven
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.1.1
libraries:
  - org.apache.maven: maven-aether-provider
  - org.apache.maven: maven-model
  - org.apache.maven: maven-model-builder
  - org.apache.maven: maven-repository-metadata
  - org.apache.maven: maven-settings
  - org.apache.maven: maven-settings-builder
notices:
  - maven-aether-provider: |
      Maven Aether Provider
      Copyright 2001-2013 The Apache Software Foundation
  - maven-model: |
      Maven Model
      Copyright 2001-2013 The Apache Software Foundation
  - maven-model-builder: |
      Maven Model Builder
      Copyright 2001-2013 The Apache Software Foundation
  - maven-repository-metadata: |
      Maven Repository Metadata Model
      Copyright 2001-2013 The Apache Software Foundation
  - maven-settings: |
      Maven Settings
      Copyright 2001-2013 The Apache Software Foundation
  - maven-settings-builder: |
      Maven Settings Builder
      Copyright 2001-2013 The Apache Software Foundation
---

name: Apache Maven Artifact
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.6.0
libraries:
  - org.apache.maven: maven-artifact
notices:
  - maven-artifact: |
      Maven Artifact
      Copyright 2001-2018 The Apache Software Foundation
---

name: Apache Maven Wagon API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.4
libraries:
  - org.apache.maven.wagon: wagon-provider-api
notices:
  - wagon-provider-api: |
      Apache Maven Wagon :: API
      Copyright 2003-2013 The Apache Software Foundation
---

name: Apache Yetus Audience Annotations Component
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.5.0
libraries:
  - org.apache.yetus: audience-annotations
notices:
  - audience-annotations: |
      Apache Yetus - Audience Annotations
      Copyright 2015-2017 The Apache Software Foundation
---

name: Apache Zookeeper
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.5.9
libraries:
  - org.apache.zookeeper: zookeeper
  - org.apache.zookeeper: zookeeper-jute
notices:
  - zookeeper: |
      Apache ZooKeeper
      Copyright 2009-2019 The Apache Software Foundation

---

name: AsyncHttpClient asynchttpclient
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.5.3
libraries:
  - org.asynchttpclient: async-http-client
  - org.asynchttpclient: async-http-client-netty-utils

---

name: components from Jackson
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.9.13
libraries:
  - org.codehaus.jackson: jackson-core-asl
  - org.codehaus.jackson: jackson-mapper-asl
notice: |
  This product currently only contains code developed by authors
  of specific components, as identified by the source code files;
  if such notes are missing files have been created by
  Tatu Saloranta.

  For additional credits (generally to people who reported problems)
  see CREDITS file.

---

name: Plexus Interpolation API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.19
libraries:
  - org.codehaus.plexus: plexus-interpolation

---

name: Plexus Common Utilities
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.0.24
libraries:
  - org.codehaus.plexus: plexus-utils
notices:
  - plexus-utils: |
      This product includes software developed by the Indiana University
        Extreme! Lab (http://www.extreme.indiana.edu/).

      This product includes software developed by
      ThoughtWorks (http://www.thoughtworks.com).

      This product includes software developed by
      javolution (http://javolution.org/).

      This product includes software developed by
      Rome (https://rome.dev.java.net/).
---

name: Jetty
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 9.4.40.v20210413
libraries:
  - org.eclipse.jetty: jetty-client
  - org.eclipse.jetty: jetty-continuation
  - org.eclipse.jetty: jetty-http
  - org.eclipse.jetty: jetty-io
  - org.eclipse.jetty: jetty-proxy
  - org.eclipse.jetty: jetty-rewrite
  - org.eclipse.jetty: jetty-security
  - org.eclipse.jetty: jetty-server
  - org.eclipse.jetty: jetty-servlet
  - org.eclipse.jetty: jetty-servlets
  - org.eclipse.jetty: jetty-util
  - org.eclipse.jetty: jetty-util-ajax
notice: |
  ==============================================================
   Jetty Web Container
   Copyright 1995-2018 Mort Bay Consulting Pty Ltd.
  ==============================================================

  The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
  unless otherwise noted.

  Jetty is dual licensed under both

    * The Apache 2.0 License
      http://www.apache.org/licenses/LICENSE-2.0.html

        and

    * The Eclipse Public 1.0 License
      http://www.eclipse.org/legal/epl-v10.html

  Jetty may be distributed under either license.

  ------
  Eclipse

  The following artifacts are EPL.
   * org.eclipse.jetty.orbit:org.eclipse.jdt.core

  The following artifacts are EPL and ASL2.
   * org.eclipse.jetty.orbit:javax.security.auth.message


  The following artifacts are EPL and CDDL 1.0.
   * org.eclipse.jetty.orbit:javax.mail.glassfish


  ------
  Oracle

  The following artifacts are CDDL + GPLv2 with classpath exception.
  https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

   * javax.servlet:javax.servlet-api
   * javax.annotation:javax.annotation-api
   * javax.transaction:javax.transaction-api
   * javax.websocket:javax.websocket-api

  ------
  Oracle OpenJDK

  If ALPN is used to negotiate HTTP/2 connections, then the following
  artifacts may be included in the distribution or downloaded when ALPN
  module is selected.

   * java.sun.security.ssl

  These artifacts replace/modify OpenJDK classes.  The modififications
  are hosted at github and both modified and original are under GPL v2 with
  classpath exceptions.
  http://openjdk.java.net/legal/gplv2+ce.html


  ------
  OW2

  The following artifacts are licensed by the OW2 Foundation according to the
  terms of http://asm.ow2.org/license.html

  org.ow2.asm:asm-commons
  org.ow2.asm:asm


  ------
  Apache

  The following artifacts are ASL2 licensed.

  org.apache.taglibs:taglibs-standard-spec
  org.apache.taglibs:taglibs-standard-impl


  ------
  MortBay

  The following artifacts are ASL2 licensed.  Based on selected classes from
  following Apache Tomcat jars, all ASL2 licensed.

  org.mortbay.jasper:apache-jsp
    org.apache.tomcat:tomcat-jasper
    org.apache.tomcat:tomcat-juli
    org.apache.tomcat:tomcat-jsp-api
    org.apache.tomcat:tomcat-el-api
    org.apache.tomcat:tomcat-jasper-el
    org.apache.tomcat:tomcat-api
    org.apache.tomcat:tomcat-util-scan
    org.apache.tomcat:tomcat-util

  org.mortbay.jasper:apache-el
    org.apache.tomcat:tomcat-jasper-el
    org.apache.tomcat:tomcat-el-api


  ------
  Mortbay

  The following artifacts are CDDL + GPLv2 with classpath exception.

  https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

  org.eclipse.jetty.toolchain:jetty-schemas

  ------
  Assorted

  The UnixCrypt.java code implements the one way cryptography used by
  Unix systems for simple password protection.  Copyright 1996 Aki Yoshida,
  modified April 2001  by Iris Van den Broeke, Daniel Deville.
  Permission to use, copy, modify and distribute UnixCrypt
  for non-commercial or commercial purposes and without fee is
  granted provided that the copyright notice appears in all copies.

---

name: JVM Attach API
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.5
libraries:
  - org.gridkit.lab: jvm-attach-api

---

name: Hibernate Validator Engine
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 5.2.5.Final
libraries:
  - org.hibernate: hibernate-validator

---

name: SIGAR
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.6.5.132
libraries:
  - org.hyperic: sigar
notices:
  - sigar: |
      Copyright (c) 2004-2011 VMware, Inc.

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

      ADDITIONAL LICENSE INFORMATION:

      Hyperic SIGAR includes some third-party open source components
      in its distribution. The list below identifies the community or
      organization and links to their appropriate license terms.

      The Hyperic team would like to thank all the communities
      of the projects listed below for their contributions.

      ----------------------------------------------------------
      Components under the Apache License 2.0:
      ----------------------------------------------------------

      The following components are included without modification:

      - log4j -
      Information: http://logging.apache.org/
      License: http://www.apache.org/licenses/LICENSE-2.0

      The following components are included with modification:

      - cpptasks -
      Information: http://ant-contrib.sourceforge.net/
      License: http://www.apache.org/licenses/LICENSE-2.0

      - (portions of) APR -
      Information: http://apr.apache.org/
      License: http://www.apache.org/licenses/LICENSE-2.0

      ----------------------------------------------------------
      Components under BSD/MIT Style Licenses:
      ----------------------------------------------------------

      The following components are included with modification:

      - solaris get_mib2 -
      Information: ftp://vic.cc.purdue.edu/pub/tools/unix/solaris/get_mib2/
      License: within src/os/solaris/get_mib2.[ch]

      Copyright 1995 Purdue Research Foundation, West Lafayette, Indiana
      47907.  All rights reserved.

      Written by Victor A. Abell <abe@cc.purdue.edu>

      This software is not subject to any license of the American Telephone
      and Telegraph Company or the Regents of the University of California.

      Permission is granted to anyone to use this software for any purpose on
      any computer system, and to alter it and redistribute it freely, subject
      to the following restrictions:

      1. Neither Victor A  Abell nor Purdue University are responsible for
         any consequences of the use of this software.

      2. The origin of this software must not be misrepresented, either by
         explicit claim or by omission.  Credit to Victor A. Abell and Purdue
         University must appear in documentation and sources.

      3. Altered versions must be plainly marked as such, and must not be
         misrepresented as being the original software.

      4. This notice may not be removed or altered.

      - getline by Chris Thewalt -
      Information: http://tinyurl.com/r438r
      License: within src/sigar_getline.c

      Copyright (C) 1991, 1992 by Chris Thewalt (thewalt@ce.berkeley.edu)

      Permission to use, copy, modify, and distribute this software
      for any purpose and without fee is hereby granted, provided
      that the above copyright notices appear in all copies and that both the
      copyright notice and this permission notice appear in supporting
      documentation.  This software is provided "as is" without express or
      implied warranty.

      - PrintfFormat.java -
      Information: http://java.sun.com/developer/technicalArticles/Programming/sprintf/PrintfFormat.java
      License: within bindings/java/src/org/hyperic/sigar/util/PrintfFormat.java

      (c) 2000 Sun Microsystems, Inc.
      ALL RIGHTS RESERVED

      License Grant-

      Permission to use, copy, modify, and distribute this Software and its
      documentation for NON-COMMERCIAL or COMMERCIAL purposes and without fee is
      hereby granted.

      This Software is provided "AS IS".  All express warranties, including any
      implied warranty of merchantability, satisfactory quality, fitness for a
      particular purpose, or non-infringement, are disclaimed, except to the extent
      that such disclaimers are held to be legally invalid.

      You acknowledge that Software is not designed, licensed or intended for use in
      the design, construction, operation or maintenance of any nuclear facility
      ("High Risk Activities").  Sun disclaims any express or implied warranty of
      fitness for such uses.

      Please refer to the file http://www.sun.com/policies/trademarks/ for further
      important trademark information and to
      http://java.sun.com/nav/business/index.html for further important licensing
      information for the Java Technology.

---

name: JBoss Logging 3
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 3.2.1.Final
libraries:
  - org.jboss.logging: jboss-logging

---

name: JDBI
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.63.1
libraries:
  - org.jdbi: jdbi
notices:
  - jdbi: |
      Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi)

      Other developers who have contributed code are:

      * Brian Langel
---

name: LZ4 Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.7.1
libraries:
  - org.lz4: lz4-java

---

name: MapDB
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.8
libraries:
  - org.mapdb: mapdb

---

name: Objenesis
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.6
libraries:
  - org.objenesis: objenesis

---

name: Resilience4j
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.3.1
libraries:
  - io.github.resilience4j: resilience4j-core
  - io.github.resilience4j: resilience4j-bulkhead

---

name: RoaringBitmap
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.9.0
libraries:
  - org.roaringbitmap: RoaringBitmap
  - org.roaringbitmap: shims

---

name: vavr
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.10.2
libraries:
  - io.vavr: vavr
  - io.vavr: vavr-match

---

name: Config Magic
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 0.9
libraries:
  - org.skife.config: config-magic

---

name: Ion Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.0.2
libraries:
  - software.amazon.ion: ion-java
notices:
  - ion-java: |
      Amazon Ion Java
      Copyright 2007-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.

---

name: Apache Hadoop
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.8.5
libraries:
  - org.apache.hadoop: hadoop-annotations
  - org.apache.hadoop: hadoop-auth
  - org.apache.hadoop: hadoop-client
  - org.apache.hadoop: hadoop-common
  - org.apache.hadoop: hadoop-hdfs-client
  - org.apache.hadoop: hadoop-mapreduce-client-app
  - org.apache.hadoop: hadoop-mapreduce-client-common
  - org.apache.hadoop: hadoop-mapreduce-client-core
  - org.apache.hadoop: hadoop-mapreduce-client-jobclient
  - org.apache.hadoop: hadoop-mapreduce-client-shuffle
  - org.apache.hadoop: hadoop-yarn-api
  - org.apache.hadoop: hadoop-yarn-client
  - org.apache.hadoop: hadoop-yarn-common
  - org.apache.hadoop: hadoop-yarn-server-common
notice: |
  The binary distribution of this product bundles binaries of
  org.iq80.leveldb:leveldb-api (https://github.com/dain/leveldb), which has the
  following notices:
  * Copyright 2011 Dain Sundstrom <dain@iq80.com>
  * Copyright 2011 FuseSource Corp. http://fusesource.com

  The binary distribution of this product bundles binaries of
  org.fusesource.hawtjni:hawtjni-runtime (https://github.com/fusesource/hawtjni),
  which has the following notices:
  * This product includes software developed by FuseSource Corp.
    http://fusesource.com
  * This product includes software developed at
    Progress Software Corporation and/or its  subsidiaries or affiliates.
  * This product includes software developed by IBM Corporation and others.

  The binary distribution of this product bundles binaries of
  AWS Java SDK 1.10.6,
  which has the following notices:
   * This software includes third party software subject to the following
   copyrights: - XML parsing and utility functions from JetS3t - Copyright
   2006-2009 James Murty. - JSON parsing and utility functions from JSON.org -
   Copyright 2002 JSON.org. - PKCS#1 PEM encoded private key parsing and utility
   functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc.

  The binary distribution of this product bundles binaries of
  Gson 2.2.4,
  which has the following notices:

                              The Netty Project
                              =================

  Please visit the Netty web site for more information:

    * http://netty.io/

  Copyright 2014 The Netty Project

  The Netty Project 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.

  Also, please refer to each LICENSE.<component>.txt file, which is located in
  the 'license' directory of the distribution file, for the license terms of the
  components that this product depends on.

  -------------------------------------------------------------------------------
  This product contains the extensions to Java Collections Framework which has
  been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

    * LICENSE:
      * license/LICENSE.jsr166y.txt (Public Domain)
    * HOMEPAGE:
      * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
      * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

  This product contains a modified version of Robert Harder's Public Domain
  Base64 Encoder and Decoder, which can be obtained at:

    * LICENSE:
      * license/LICENSE.base64.txt (Public Domain)
    * HOMEPAGE:
      * http://iharder.sourceforge.net/current/java/base64/

  This product contains a modified portion of 'Webbit', an event based
  WebSocket and HTTP server, which can be obtained at:

    * LICENSE:
      * license/LICENSE.webbit.txt (BSD License)
    * HOMEPAGE:
      * https://github.com/joewalnes/webbit

  This product contains a modified portion of 'SLF4J', a simple logging
  facade for Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.slf4j.txt (MIT License)
    * HOMEPAGE:
      * http://www.slf4j.org/

  This product contains a modified portion of 'ArrayDeque', written by Josh
  Bloch of Google, Inc:

    * LICENSE:
      * license/LICENSE.deque.txt (Public Domain)

  This product contains a modified portion of 'Apache Harmony', an open source
  Java SE, which can be obtained at:

    * LICENSE:
      * license/LICENSE.harmony.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://archive.apache.org/dist/harmony/

  This product contains a modified version of Roland Kuhn's ASL2
  AbstractNodeQueue, which is based on Dmitriy Vyukov's non-intrusive MPSC queue.
  It can be obtained at:

    * LICENSE:
      * license/LICENSE.abstractnodequeue.txt (Public Domain)
    * HOMEPAGE:
      * https://github.com/akka/akka/blob/wip-2.2.3-for-scala-2.11/akka-actor/src/main/java/akka/dispatch/AbstractNodeQueue.java

  This product contains a modified portion of 'jbzip2', a Java bzip2 compression
  and decompression library written by Matthew J. Francis. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jbzip2.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jbzip2/

  This product contains a modified portion of 'libdivsufsort', a C API library to construct
  the suffix array and the Burrows-Wheeler transformed string for any input string of
  a constant-size alphabet written by Yuta Mori. It can be obtained at:

    * LICENSE:
      * license/LICENSE.libdivsufsort.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/libdivsufsort/

  This product contains a modified portion of Nitsan Wakart's 'JCTools', Java Concurrency Tools for the JVM,
   which can be obtained at:

    * LICENSE:
      * license/LICENSE.jctools.txt (ASL2 License)
    * HOMEPAGE:
      * https://github.com/JCTools/JCTools

  This product optionally depends on 'JZlib', a re-implementation of zlib in
  pure Java, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jzlib.txt (BSD style License)
    * HOMEPAGE:
      * http://www.jcraft.com/jzlib/

  This product optionally depends on 'Compress-LZF', a Java library for encoding and
  decoding data in LZF format, written by Tatu Saloranta. It can be obtained at:

    * LICENSE:
      * license/LICENSE.compress-lzf.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/ning/compress

  This product optionally depends on 'lz4', a LZ4 Java compression
  and decompression library written by Adrien Grand. It can be obtained at:

    * LICENSE:
      * license/LICENSE.lz4.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jpountz/lz4-java

  This product optionally depends on 'lzma-java', a LZMA Java compression
  and decompression library, which can be obtained at:

    * LICENSE:
      * license/LICENSE.lzma-java.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/jponge/lzma-java

  This product contains a modified portion of 'jfastlz', a Java port of FastLZ compression
  and decompression library written by William Kinney. It can be obtained at:

    * LICENSE:
      * license/LICENSE.jfastlz.txt (MIT License)
    * HOMEPAGE:
      * https://code.google.com/p/jfastlz/

  This product contains a modified portion of and optionally depends on 'Protocol Buffers', Google's data
  interchange format, which can be obtained at:

    * LICENSE:
      * license/LICENSE.protobuf.txt (New BSD License)
    * HOMEPAGE:
      * http://code.google.com/p/protobuf/

  This product optionally depends on 'Bouncy Castle Crypto APIs' to generate
  a temporary self-signed X.509 certificate when the JVM does not provide the
  equivalent functionality.  It can be obtained at:

    * LICENSE:
      * license/LICENSE.bouncycastle.txt (MIT License)
    * HOMEPAGE:
      * http://www.bouncycastle.org/

  This product optionally depends on 'Snappy', a compression library produced
  by Google Inc, which can be obtained at:

    * LICENSE:
      * license/LICENSE.snappy.txt (New BSD License)
    * HOMEPAGE:
      * http://code.google.com/p/snappy/

  This product optionally depends on 'JBoss Marshalling', an alternative Java
  serialization API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.jboss-marshalling.txt (GNU LGPL 2.1)
    * HOMEPAGE:
      * http://www.jboss.org/jbossmarshalling

  This product optionally depends on 'Caliper', Google's micro-
  benchmarking framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.caliper.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://code.google.com/p/caliper/

  This product optionally depends on 'Apache Commons Logging', a logging
  framework, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-logging.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://commons.apache.org/logging/

  This product optionally depends on 'Apache Log4J', a logging framework, which
  can be obtained at:

    * LICENSE:
      * license/LICENSE.log4j.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://logging.apache.org/log4j/

  This product optionally depends on 'Aalto XML', an ultra-high performance
  non-blocking XML processor, which can be obtained at:

    * LICENSE:
      * license/LICENSE.aalto-xml.txt (Apache License 2.0)
    * HOMEPAGE:
      * http://wiki.fasterxml.com/AaltoHome

  This product contains a modified version of 'HPACK', a Java implementation of
  the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:

    * LICENSE:
      * license/LICENSE.hpack.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://github.com/twitter/hpack

  This product contains a modified portion of 'Apache Commons Lang', a Java library
  provides utilities for the java.lang API, which can be obtained at:

    * LICENSE:
      * license/LICENSE.commons-lang.txt (Apache License 2.0)
    * HOMEPAGE:
      * https://commons.apache.org/proper/commons-lang/

  The binary distribution of this product bundles binaries of
  Commons Codec 1.4,
  which has the following notices:
   * src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.javacontains test data from http://aspell.net/test/orig/batch0.tab.Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org)
    ===============================================================================
    The content of package org.apache.commons.codec.language.bm has been translated
    from the original php source code available at http://stevemorse.org/phoneticinfo.htm
    with permission from the original authors.
    Original source copyright:Copyright (c) 2008 Alexander Beider & Stephen P. Morse.

  The binary distribution of this product bundles binaries of
  Commons Lang 2.6,
  which has the following notices:
   * This product includes software from the Spring Framework,under the Apache License 2.0 (see: StringUtils.containsWhitespace())

  The binary distribution of this product bundles binaries of
  Apache Log4j 1.2.17,
  which has the following notices:
   * ResolverUtil.java
      Copyright 2005-2006 Tim Fennell
    Dumbster SMTP test server
      Copyright 2004 Jason Paul Kitchen
    TypeUtil.java
      Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams

  The binary distribution of this product bundles binaries of
  Java Concurrency in Practice book annotations 1.0,
  which has the following notices:
   * Copyright (c) 2005 Brian Goetz and Tim Peierls Released under the Creative
    Commons Attribution License (http://creativecommons.org/licenses/by/2.5)
    Official home: http://www.jcip.net Any republication or derived work
    distributed in source code form must include this copyright and license
    notice.

  The binary distribution of this product bundles binaries of
  Jetty 6.1.26,
  which has the following notices:
   * ==============================================================
      Jetty Web Container
      Copyright 1995-2016 Mort Bay Consulting Pty Ltd.
     ==============================================================

     The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
     unless otherwise noted.

     Jetty is dual licensed under both

       * The Apache 2.0 License
         http://www.apache.org/licenses/LICENSE-2.0.html

           and

       * The Eclipse Public 1.0 License
         http://www.eclipse.org/legal/epl-v10.html

     Jetty may be distributed under either license.

     ------
     Eclipse

     The following artifacts are EPL.
      * org.eclipse.jetty.orbit:org.eclipse.jdt.core

     The following artifacts are EPL and ASL2.
      * org.eclipse.jetty.orbit:javax.security.auth.message


     The following artifacts are EPL and CDDL 1.0.
      * org.eclipse.jetty.orbit:javax.mail.glassfish


     ------
     Oracle

     The following artifacts are CDDL + GPLv2 with classpath exception.
     https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

      * javax.servlet:javax.servlet-api
      * javax.annotation:javax.annotation-api
      * javax.transaction:javax.transaction-api
      * javax.websocket:javax.websocket-api

     ------
     Oracle OpenJDK

     If ALPN is used to negotiate HTTP/2 connections, then the following
     artifacts may be included in the distribution or downloaded when ALPN
     module is selected.

      * java.sun.security.ssl

     These artifacts replace/modify OpenJDK classes.  The modififications
     are hosted at github and both modified and original are under GPL v2 with
     classpath exceptions.
     http://openjdk.java.net/legal/gplv2+ce.html


     ------
     OW2

     The following artifacts are licensed by the OW2 Foundation according to the
     terms of http://asm.ow2.org/license.html

     org.ow2.asm:asm-commons
     org.ow2.asm:asm


     ------
     Apache

     The following artifacts are ASL2 licensed.

     org.apache.taglibs:taglibs-standard-spec
     org.apache.taglibs:taglibs-standard-impl


     ------
     MortBay

     The following artifacts are ASL2 licensed.  Based on selected classes from
     following Apache Tomcat jars, all ASL2 licensed.

     org.mortbay.jasper:apache-jsp
       org.apache.tomcat:tomcat-jasper
       org.apache.tomcat:tomcat-juli
       org.apache.tomcat:tomcat-jsp-api
       org.apache.tomcat:tomcat-el-api
       org.apache.tomcat:tomcat-jasper-el
       org.apache.tomcat:tomcat-api
       org.apache.tomcat:tomcat-util-scan
       org.apache.tomcat:tomcat-util

     org.mortbay.jasper:apache-el
       org.apache.tomcat:tomcat-jasper-el
       org.apache.tomcat:tomcat-el-api


     ------
     Mortbay

     The following artifacts are CDDL + GPLv2 with classpath exception.

     https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

     org.eclipse.jetty.toolchain:jetty-schemas

     ------
     Assorted

     The UnixCrypt.java code implements the one way cryptography used by
     Unix systems for simple password protection.  Copyright 1996 Aki Yoshida,
     modified April 2001  by Iris Van den Broeke, Daniel Deville.
     Permission to use, copy, modify and distribute UnixCrypt
     for non-commercial or commercial purposes and without fee is
     granted provided that the copyright notice appears in all copies./

  The binary distribution of this product bundles binaries of
  Snappy for Java 1.0.4.1,
  which has the following notices:
   * This product includes software developed by Google
      Snappy: http://code.google.com/p/snappy/ (New BSD License)

     This product includes software developed by Apache
      PureJavaCrc32C from apache-hadoop-common http://hadoop.apache.org/
      (Apache 2.0 license)

     This library containd statically linked libstdc++. This inclusion is allowed by
     "GCC RUntime Library Exception"
     http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

     == Contributors ==
       * Tatu Saloranta
         * Providing benchmark suite
       * Alec Wysoker
         * Performance and memory usage improvement

---

name: Gson
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.2.4
libraries:
  - com.google.code.gson: gson

---

name: Guava
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 11.0.2
libraries:
  - com.google.guava: guava

---

name: Nimbus JOSE+JWT
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 4.41.1
libraries:
  - com.nimbusds: nimbus-jose-jwt

---

name: OkHttp
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.4.0
libraries:
  - com.squareup.okhttp: okhttp

---

name: Okio
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.4.0
libraries:
  - com.squareup.okio: okio

---

name: Apache Commons BeanUtils
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.7.0
libraries:
  - commons-beanutils: commons-beanutils
notices:
  - commons-beanutils: |
      This product includes software developed by
      The Apache Software Foundation (http://www.apache.org/).

---

name: Apache Commons BeanUtils
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.8.0
libraries:
  - commons-beanutils: commons-beanutils-core
notices:
  - common-beanutils-core: |
      Apache Commons BeanUtils
      Copyright 2000-2008 The Apache Software Foundation

---

name: Apache Commons Codec
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.4
libraries:
  - commons-codec: commons-codec
notices:
  - commons-codec: |
      Apache Commons Codec
      Copyright 2002-2009 The Apache Software Foundation

      --------------------------------------------------------------------------------
      Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying
      and distribution of this entire article is permitted in any medium,
      provided this notice is preserved.
      --------------------------------------------------------------------------------

---

name: Apache Commons Configuration
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.6
libraries:
  - commons-configuration: commons-configuration
notices:
  - commons-configuration: |
      Apache Commons Configuration
      Copyright 2001-2008 The Apache Software Foundation

---

name: Apache Commons Digester
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.8
libraries:
  - commons-digester: commons-digester
notices:
  - commons-digester: |
      Apache Jakarta Commons Digester
      Copyright 2001-2006 The Apache Software Foundation

---

name: Apache Commons IO
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.4
libraries:
  - commons-io: commons-io
notices:
  - commons-io: |
      Apache Commons IO
      Copyright 2002-2012 The Apache Software Foundation

---

name: Apache Commons Logging
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.1.3
libraries:
  - commons-logging: commons-logging
notices:
  - commons-logging: |
      Apache Commons Logging
      Copyright 2003-2013 The Apache Software Foundation

---

name: Apache Commons Net
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.1
libraries:
  - commons-net: commons-net
notices:
  - commons-net: |
      Apache Commons Net
      Copyright 2001-2012 The Apache Software Foundation

---

name: Apache Commons Math
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.1.1
libraries:
  - org.apache.commons: commons-math3
notices:
  - commons-math3: |
      Apache Commons Math
      Copyright 2001-2012 The Apache Software Foundation

      ===============================================================================

      The BracketFinder (package org.apache.commons.math3.optimization.univariate)
      and PowellOptimizer (package org.apache.commons.math3.optimization.general)
      classes are based on the Python code in module "optimize.py" (version 0.5)
      developed by Travis E. Oliphant for the SciPy library (http://www.scipy.org/)
      Copyright © 2003-2009 SciPy Developers.
      ===============================================================================

      The LinearConstraint, LinearObjectiveFunction, LinearOptimizer,
      SimplexSolver and SimplexTableau classes in package
      org.apache.commons.math3.optimization.linear include software developed by
      Benjamin McCann (http://www.benmccann.com) and distributed with
      the following copyright: Copyright 2009 Google Inc.
      ===============================================================================

      This product includes software developed by the
      University of Chicago, as Operator of Argonne National
      Laboratory.
      The LevenbergMarquardtOptimizer class in package
      org.apache.commons.math3.optimization.general includes software
      translated from the lmder, lmpar and qrsolv Fortran routines
      from the Minpack package
      Minpack Copyright Notice (1999) University of Chicago.  All rights reserved
      ===============================================================================

      The GraggBulirschStoerIntegrator class in package
      org.apache.commons.math3.ode.nonstiff includes software translated
      from the odex Fortran routine developed by E. Hairer and G. Wanner.
      Original source copyright:
      Copyright (c) 2004, Ernst Hairer
      ===============================================================================

      The MersenneTwister class in package org.apache.commons.math3.random
      includes software translated from the 2002-01-26 version of
      the Mersenne-Twister generator written in C by Makoto Matsumoto and Takuji
      Nishimura. Original source copyright:
      Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
      All rights reserved
      ===============================================================================

      The HermiteInterpolator class and its corresponding test have been imported from
      the orekit library distributed under the terms of the Apache 2 licence. Original
      source copyright:
      Copyright 2010-2012 CS Systèmes d'Information
      ===============================================================================

      The creation of the package "o.a.c.m.analysis.integration.gauss" was inspired
      by an original code donated by Sébastien Brisard.
      ===============================================================================


      The complete text of licenses and disclaimers associated with the the original
      sources enumerated above at the time of code translation are in the LICENSE.txt
      file.
---

name: Netty
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.6.2.Final
libraries:
  - io.netty: netty
notices:
  - netty: |
      ==
                                  The Netty Project
                                  =================

      Please visit the Netty web site for more information:

        * http://netty.io/

      Copyright 2011 The Netty Project

      The Netty Project 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.

      Also, please refer to each LICENSE.<component>.txt file, which is located in
      the 'license' directory of the distribution file, for the license terms of the
      components that this product depends on.

      -------------------------------------------------------------------------------
      This product contains the extensions to Java Collections Framework which has
      been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:

        * LICENSE:
          * license/LICENSE.jsr166y.txt (Public Domain)
        * HOMEPAGE:
          * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
          * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/

      This product contains a modified version of Robert Harder's Public Domain
      Base64 Encoder and Decoder, which can be obtained at:

        * LICENSE:
          * license/LICENSE.base64.txt (Public Domain)
        * HOMEPAGE:
          * http://iharder.sourceforge.net/current/java/base64/

      This product contains a modified version of 'JZlib', a re-implementation of
      zlib in pure Java, which can be obtained at:

        * LICENSE:
          * license/LICENSE.jzlib.txt (BSD Style License)
        * HOMEPAGE:
          * http://www.jcraft.com/jzlib/

      This product optionally depends on 'Protocol Buffers', Google's data
      interchange format, which can be obtained at:

        * LICENSE:
          * license/LICENSE.protobuf.txt (New BSD License)
        * HOMEPAGE:
          * http://code.google.com/p/protobuf/

      This product optionally depends on 'SLF4J', a simple logging facade for Java,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.slf4j.txt (MIT License)
        * HOMEPAGE:
          * http://www.slf4j.org/

      This product optionally depends on 'Apache Commons Logging', a logging
      framework, which can be obtained at:

        * LICENSE:
          * license/LICENSE.commons-logging.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://commons.apache.org/logging/

      This product optionally depends on 'Apache Log4J', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.log4j.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://logging.apache.org/log4j/

      This product optionally depends on 'JBoss Logging', a logging framework,
      which can be obtained at:

        * LICENSE:
          * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1)
        * HOMEPAGE:
          * http://anonsvn.jboss.org/repos/common/common-logging-spi/

      This product optionally depends on 'Apache Felix', an open source OSGi
      framework implementation, which can be obtained at:

        * LICENSE:
          * license/LICENSE.felix.txt (Apache License 2.0)
        * HOMEPAGE:
          * http://felix.apache.org/

      This product optionally depends on 'Webbit', a Java event based
      WebSocket and HTTP server:

        * LICENSE:
          * license/LICENSE.webbit.txt (BSD License)
        * HOMEPAGE:
          * https://github.com/joewalnes/webbit

---

name: Apache Log4j
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.2.17
libraries:
  - log4j: log4j
notices:
  - log4j: |
      Apache log4j
      Copyright 2007 The Apache Software Foundation
---

name: JSON Small and Fast Parser
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.1.1
libraries:
  - net.minidev: json-smart

---

name: Apache Avro
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.7.4
libraries:
  - org.apache.avro: avro
notices:
  - avro: |
      Apache Avro
      Copyright 2009-2013 The Apache Software Foundation
---

name: Apache Directory
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.0.0-M20
libraries:
  - org.apache.directory.api: api-asn1-api

---

name: Apache Directory
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.0.3
libraries:
  - org.apache.directory.api: api-util
notices:
  - api-util: |
      Apache Directory LDAP API Utilities
      Copyright 2003-2013 The Apache Software Foundation

---

name: Apache Directory Server
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.0.0-M15
libraries:
  - org.apache.directory.server: apacheds-i18n
  - org.apache.directory.server: apacheds-kerberos-codec
notices:
  - apacheds-i18n: |
      ApacheDS I18n
      Copyright 2003-2013 The Apache Software Foundation
  - apacheds-kerberos-codec: |
      ApacheDS Protocol Kerberos Codec
      Copyright 2003-2013 The Apache Software Foundation

---

name: Apache HTrace
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 4.0.1-incubating
libraries:
  - org.apache.htrace: htrace-core4
notices:
  - htrace-core4: |
      htrace-core4
      Copyright 2015 The Apache Software Foundation

---

name: Apache Zookeeper
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 3.4.6
libraries:
  - org.apache.zookeeper: zookeeper
notices:
  - zookeeper: |
      Apache ZooKeeper
      Copyright 2009-2012 The Apache Software Foundation

---

name: Apache Curator
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - org.apache.curator: curator-client
  - org.apache.curator: curator-framework
  - org.apache.curator: curator-recipes
notices:
  - curator-client: |
      Curator Client
      Copyright 2011-2015 The Apache Software Foundation
  - curator-framework: |
      Curator Framework
      Copyright 2011-2015 The Apache Software Foundation
  - curator-recipes: |
      Curator Recipes
      Copyright 2011-2015 The Apache Software Foundation

---

name: components from Jackson
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.9.13
libraries:
  - org.codehaus.jackson: jackson-jaxrs
  - org.codehaus.jackson: jackson-xc
notice: |
  This product currently only contains code developed by authors
  of specific components, as identified by the source code files;
  if such notes are missing files have been created by
  Tatu Saloranta.

  For additional credits (generally to people who reported problems)
  see CREDITS file.

---

name: Jetty
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 6.1.26
libraries:
  - org.mortbay.jetty: jetty-sslengine
  - org.mortbay.jetty: jetty-util
notice: |
  ==============================================================
   Jetty Web Container
   Copyright 1995-2009 Mort Bay Consulting Pty Ltd
  ==============================================================

  The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
  unless otherwise noted. It is dual licensed under the apache 2.0
  license and eclipse 1.0 license. Jetty may be distributed under
  either license.

  The javax.servlet package used was sourced from the Apache
  Software Foundation and is distributed under the apache 2.0
  license.

---

name: snappy-java
license_category: binary
module: hadoop-client
license_name: Apache License version 2.0
version: 1.0.4.1
libraries:
  - org.xerial.snappy: snappy-java
notices:
  - snappy-java: |
      This product includes software developed by Google
       Snappy: http://code.google.com/p/snappy/ (New BSD License)


      This library containd statically linked libstdc++. This inclusion is allowed by
      "GCC RUntime Library Exception"
      http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

      == Contributors ==
        * Tatu Saloranta
          * Providing benchmark suite
        * Alec Wysoker
          * Performance and memory usage improvement

---

name: Kafka Schema Registry Client
version: 5.5.1
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - io.confluent: kafka-schema-registry-client
  - io.confluent: common-config
  - io.confluent: common-utils

---

name: Kafka Client
version: 5.5.1-ccs
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients

---

name: swagger-annotations
version: 1.6.0
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - io.swagger: swagger-annotations

---

name: jersey-common
version: '2.30'
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - org.glassfish.jersey.core: jersey-common

---

name: osgi-resource-locator
version: 1.0.3
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - org.glassfish.hk2: osgi-resource-locator
  
---

name: jakarta.inject
version: 2.6.1
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - org.glassfish.hk2.external: jakarta.inject
  
---

name: jakarta.annotation
version: 1.3.5
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - jakarta.annotation: jakarta.annotation-api
    
---

name: javax.ws.rs-api
version: 2.1.1
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - javax.ws.rs: javax.ws.rs-api
  
---

name: jakarta.ws.rs-api
version: 2.1.6
license_category: binary
module: extensions/druid-avro-extensions
license_name: Eclipse Public License 2.0
libraries:
  - jakarta.ws.rs: jakarta.ws.rs-api
        
---

name: Kafka Schema Registry Client 6.0.1
version: 6.0.1
license_category: binary
module: extensions/druid-protobuf-extensions
license_name: Apache License version 2.0
libraries:
  - io.confluent: kafka-schema-registry-client
  - io.confluent: common-utils

---

name: Confluent Kafka Client
version: 6.0.1-ccs
license_category: binary
module: extensions/druid-protobuf-extensions
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients

---

name: Apache Velocity Engine
version: 2.2
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
libraries:
  - org.apache.velocity: velocity-engine-core
notices:
  - velocity-engine-core: |
      Apache Velocity

      Copyright (C) 2000-2007 The Apache Software Foundation

---

name: Apache Avro
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
version: 1.9.2
libraries:
  - org.apache.avro: avro
  - org.apache.avro: avro-mapred
  - org.apache.avro: avro-ipc
  - org.apache.avro: avro-ipc-jetty
notices:
  - avro: |
      Apache Avro
      Copyright 2010-2019 The Apache Software Foundation
  - avro-ipc: |
      Apache Avro IPC
      Copyright 2010-2019 The Apache Software Foundation
  - avro-ipc-jetty: |
      Apache Avro IPC Jetty
      Copyright 2009-2019 The Apache Software Foundation
  - avro-mapred: |
      Apache Avro
      Copyright 2010-2019 The Apache Software Foundation

      Based upon the representations of upstream licensors, it is understood that
      portions of the mapreduce API included in the Java implementation are licensed
      from various contributors under one or more contributor license agreements to
      Odiago, Inc. and were then contributed by Odiago to Apache Avro, which has now
      made them available under the Apache 2.0 license. The original file header text
      is:

      | Licensed to Odiago, Inc. under one or more contributor license
      | agreements.  See the NOTICE file distributed with this work for
      | additional information regarding copyright ownership.  Odiago, Inc.
      | 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.

      The Odiago NOTICE at the time of the contribution:

      | This product includes software developed by Odiago, Inc.
      | (http://www.wibidata.com).

---

name: Javax Annotation API
license_category: binary
module: extensions/druid-avro-extensions
license_name: CDDL 1.1
version: 1.3.2
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/javax.annotation-api.CDDL11
libraries:
  - javax.annotation: javax.annotation-api

---

name: Schema Repository
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
version: 0.1.3
libraries:
  - org.schemarepo: schema-repo-api
  - org.schemarepo: schema-repo-avro
  - org.schemarepo: schema-repo-client
  - org.schemarepo: schema-repo-common

---

name: Gson
license_category: binary
module: extensions/druid-avro-extensions
license_name: Apache License version 2.0
version: 2.3.1
libraries:
  - com.google.code.gson: gson

---

name: Apache Hive
license_category: binary
module: extensions/druid-bloom-filter
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - org.apache.hive: hive-storage-api
notices:
  - hive-storage-api: |
      Hive Storage API
      Copyright 2018 The Apache Software Foundation

---

name: DataSketches
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 2.0.0
libraries:
  - org.apache.datasketches: datasketches-java

---

name: DataSketches
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.3.0
libraries:
  - org.apache.datasketches: datasketches-memory

---

name: Jackson
license_category: binary
module: extensions/druid-hdfs-storage
license_name: Apache License version 2.0
version: 1.9.2
libraries:
  - org.codehaus.jackson: jackson-jaxrs
  - org.codehaus.jackson: jackson-xc

---

name: xmlenc
license_category: binary
module: extensions/druid-hdfs-storage
license_name: BSD-3-Clause License
version: 0.52
copyright: Ernst de Haan
license_file_path: licenses/bin/xmlenc.BSD3
libraries:
  - xmlenc: xmlenc

---

name: Apache Kafka
version: 2.8.0
license_category: binary
module: extensions/druid-kafka-indexing-service
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients
notices:
  - kafka-clients: |
      Apache Kafka
      Copyright 2020 The Apache Software Foundation.

      This distribution has a binary dependency on jersey, which is available under the CDDL
      License. The source code of jersey can be found at https://github.com/jersey/jersey/.

---

name: snappy-java
license_category: binary
module: extensions/druid-kafka-indexing-service
license_name: Apache License version 2.0
version: 1.1.2.6
libraries:
  - org.xerial.snappy: snappy-java

---

name: Apache Parquet
license_category: binary
module: extensions/druid-parquet-extensions
license_name: Apache License version 2.0
version: 1.12.0
libraries:
  - org.apache.parquet: parquet-avro
  - org.apache.parquet: parquet-column
  - org.apache.parquet: parquet-common
  - org.apache.parquet: parquet-encoding
  - org.apache.parquet: parquet-hadoop
  - org.apache.parquet: parquet-jackson
  - org.apache.parquet: parquet-format-structures
notices:
  - parquet-avro: |
      Apache Parquet MR
      Copyright 2014 The Apache Software Foundation


      --------------------------------------------------------------------------------

      This product includes code from Apache Avro, which includes the following in
      its NOTICE file:

        Apache Avro
        Copyright 2010-2015 The Apache Software Foundation
  - parquet-jackson: |
      This product currently only contains code developed by authors
      of specific components, as identified by the source code files;
      if such notes are missing files have been created by
      Tatu Saloranta.

      For additional credits (generally to people who reported problems)
      see CREDITS file.

---

name: Apache Parquet Format
license_category: binary
module: extensions/druid-parquet-extensions
license_name: Apache License version 2.0
version: 2.4.0
libraries:
  - org.apache.parquet: parquet-format
notices:
  - parquet-format: |
      Apache Parquet Format
      Copyright 2017 The Apache Software Foundation

---

name: Protocol Buffers Dynamic Schema
license_category: binary
module: extensions/protobuf-extensions
license_name: Apache License version 2.0
version: 0.9.3
libraries:
  - com.github.os72: protobuf-dynamic

---

name: Gson
license_category: binary
module: extensions/protobuf-extensions
license_name: Apache License version 2.0
version: 2.8.6
libraries:
  - com.google.code.gson: gson

---

name: Checker Qual
license_category: binary
module: java-core
license_name: MIT License
version: 2.5.7
copyright: the Checker Framework developers
license_file_path: licenses/bin/checker-qual.MIT
libraries:
  - org.checkerframework: checker-qual

---

name: JCodings
license_category: binary
module: java-core
license_name: MIT License
version: 1.0.43
copyright: JRuby Team
license_file_path: licenses/bin/jcodings.MIT
libraries:
  - org.jruby.jcodings: jcodings

---

name: Joni
license_category: binary
module: java-core
license_name: MIT License
version: 2.1.27
copyright: JRuby Team
license_file_path: licenses/bin/joni.MIT
libraries:
  - org.jruby.joni: joni

---

name: JCL 1.2 Implemented Over SLF4J
license_category: binary
module: java-core
license_name: MIT License
version: 1.7.12
copyright: QOS.ch
license_file_path: licenses/bin/jcl-over-slf4j.MIT
libraries:
  - org.slf4j: jcl-over-slf4j

---

name: SLF4J API
license_category: binary
module: java-core
license_name: MIT License
version: 1.7.25
copyright: QOS.ch
license_file_path: licenses/bin/slf4j.MIT
libraries:
  - org.slf4j: slf4j-api

---

name: SLF4J API
version: 1.7.10
license_category: binary
module: hadoop-client
license_name: MIT License
copyright: QOS.ch
license_file_path: licenses/bin/slf4j.MIT
libraries:
  - org.slf4j: slf4j-api
  - org.slf4j: slf4j-log4j12

---

name: JNI binding for Zstd
license_category: binary
module: java-core
license_name: BSD-2-Clause License
version: 1.3.3-1
copyright: Luben Karavelov
license_file_path: licenses/bin/zstd-jni.BSD2
libraries:
  - com.github.luben: zstd-jni

---

name: Zstandard
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 1.3.3
copyright: Facebook, Inc.
license_file_path: licenses/bin/zstandard.BSD3

---

name: FindBugs JSR305
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 2.0.1
copyright: FindBugs
license_file_path: licenses/bin/jsr305.BSD3
libraries:
  - com.google.code.findbugs: jsr305
skip_dependency_report_check: true

---

name: Protocol Buffers
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 3.11.0
copyright: Google, Inc.
license_file_path:
  - licenses/bin/protobuf-java.BSD3
  - licenses/bin/protobuf-java-redhat.BSD3
  - licenses/bin/protobuf-java-bloomberg.BSD3
libraries:
  - com.google.protobuf: protobuf-java
additional_license_statement: except src/google/protobuf/stubs/atomicops_internals_generic_gcc.h and src/google/protobuf/stubs/atomicops_internals_power.h files which are copyrighted by Red Hat Inc and Bloomberg Finance LP, respectively, and available under a BSD-3-Clause

---

name: JLine
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 0.9.94
copyright: Marc Prud'hommeaux
license_file_path: licenses/bin/jline.BSD3
libraries:
  - jline: jline

---

name: ANTLR 4 Runtime
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 4.5.1
copyright: The ANTLR Project
license_file_path: licenses/bin/antlr4-runtime.BSD3
libraries:
  - org.antlr: antlr4-runtime

---

name: Janino and Commons Compiler
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 3.0.11
copyright: Arno Unkrig and TIBCO Software Inc.
license_file_path: licenses/bin/janino.BSD3
libraries:
  - org.codehaus.janino: janino
  - org.codehaus.janino: commons-compiler

---

name: ASM
license_category: binary
module: java-core
license_name: BSD-3-Clause License
version: 7.1
copyright: INRIA, France Telecom
license_file_path: licenses/bin/asm.BSD3
libraries:
  - org.ow2.asm: asm
  - org.ow2.asm: asm-commons
  - org.ow2.asm: asm-tree
  - org.ow2.asm: asm-analysis

---

name: FindBugs JSR305
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 3.0.0
copyright: FindBugs
license_file_path: licenses/bin/jsr305.BSD3
libraries:
  - com.google.code.findbugs: jsr305
skip_dependency_report_check: true

---

name: Protocol Buffers
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 2.5.0
copyright: Google, Inc.
license_file_path: licenses/bin/protobuf-java.BSD3
libraries:
  - com.google.protobuf: protobuf-java

---

name: Paranamer
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 2.3
copyright: Paul Hammant & ThoughtWorks Inc
license_file_path: licenses/bin/paranamer.BSD3
libraries:
  - com.thoughtworks.paranamer: paranamer

---

name: LevelDB JNI
license_category: binary
module: hadoop-client
license_name: BSD-3-Clause License
version: 1.8
copyright: FuseSource Corp.
license_file_path: licenses/bin/leveldb-jni.BSD3
libraries:
  - org.fusesource.leveldbjni: leveldbjni-all

---

name: Paranamer
license_category: binary
module: extensions/druid-avro-extensions
license_name: BSD-3-Clause License
version: 2.7
copyright: Paul Hammant & ThoughtWorks Inc
license_file_path: licenses/bin/paranamer.BSD3
libraries:
  - com.thoughtworks.paranamer: paranamer

---

name: StringTemplate
license_category: binary
module: extensions/druid-lookups-cached-single
license_name: BSD-3-Clause License
version: 3.2
copyright: Terrence Parr
license_file_path: licenses/bin/antlr-stringtemplate.BSD3
libraries:
  - org.antlr: stringtemplate

---

name: ANTLR
license_category: binary
module: extensions/druid-lookups-cached-single
license_name: BSD-3-Clause License
version: 2.7.7
copyright: The ANTLR Project
license_file_path: licenses/bin/antlr.BSD3
libraries:
  - antlr: antlr

---

name: PostgreSQL JDBC Driver
license_category: binary
module: extensions/druid-lookups-cached-single
license_name: BSD-2-Clause License
version: 42.2.14
copyright: PostgreSQL Global Development Group
license_file_path: licenses/bin/postgresql.BSD2
libraries:
  - org.postgresql: postgresql

---

name: PostgreSQL JDBC Driver
license_category: binary
module: extensions/druid-lookups-cached-global
license_name: BSD-2-Clause License
version: 42.2.14
copyright: PostgreSQL Global Development Group
license_file_path: licenses/bin/postgresql.BSD2
libraries:
  - org.postgresql: postgresql

---

name: PostgreSQL JDBC Driver
license_category: binary
module: extensions/postgresql-metadata-storage
license_name: BSD-2-Clause License
version: 42.2.14
copyright: PostgreSQL Global Development Group
license_file_path: licenses/bin/postgresql.BSD2
libraries:
  - org.postgresql: postgresql

---

name: Protocol Buffers
license_category: binary
module: extensions/druid-protobuf-extensions
license_name: BSD-3-Clause License
version: 3.11.0
copyright: Google, Inc.
license_file_path: licenses/bin/protobuf-java.BSD3
libraries:
  - com.google.protobuf: protobuf-java
  - com.google.protobuf: protobuf-java-util

---

name: ICU4J
license_category: binary
module: java-core
license_name: ICU License
version: 55.1
copyright: International Business Machines Corporation and others
license_file_path: licenses/bin/icu4j.ICU
libraries:
  - com.ibm.icu: icu4j

---

name: JavaBeans Activation Framework
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.2.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.activation.CDDL11
libraries:
  - com.sun.activation: javax.activation

---

name: Jersey
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.19.3
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jersey.CDDL11
libraries:
  - com.sun.jersey: jersey-core
  - com.sun.jersey: jersey-server
  - com.sun.jersey: jersey-servlet
  - com.sun.jersey: contribs
  - com.sun.jersey.contribs: jersey-guice

---

name: Expression Language 3.0 API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.0.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.el: javax.el-api

---

name: Java Servlet API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.1.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.servlet: javax.servlet-api

---

name: JSR311 API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.1.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jsr311-api.CDDL11
libraries:
  - javax.ws.rs: jsr311-api

---

name: Expression Language 3.0
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.0.0
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - org.glassfish: javax.el

---

name: JAXB Runtime
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 2.3.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - org.glassfish.jaxb: jaxb-runtime

---

name: TXW2 Runtime
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 2.3.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - org.glassfish.jaxb: txw2

---

name: Extended StAX API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.8
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - org.jvnet.staxex: stax-ex

---

name: Istack Common Utility Code Runtime
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 3.0.7
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/jaxb-runtime.CDDL11
libraries:
  - com.sun.istack: istack-commons-runtime

---

name: FastInfoset
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.2.15
libraries:
  - com.sun.xml.fastinfoset: FastInfoset

---
name: Jersey
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 1.9
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jersey.CDDL11
libraries:
  - com.sun.jersey: jersey-client
  - com.sun.jersey: jersey-core

---

name: JavaBeans Activation Framework
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 1.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.activation: activation

---

name: Java Servlet API
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 2.5
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.servlet: javax.servlet-api

---

name: JAXB
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 2.2.2
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.xml.bind: jaxb-api

---

name: JAXB
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 2.3.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.xml.bind: jaxb-api

---

name: stax-api
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 1.0-2
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.xml.stream: stax-api

---

name: jsp-api
license_category: binary
module: hadoop-client
license_name: CDDL 1.1
version: 2.1
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/javax.CDDL11
libraries:
  - javax.servlet.jsp: jsp-api

---

name: Jersey
license_category: binary
module: extensions/druid-avro-extensions
license_name: CDDL 1.1
version: 1.19.3
copyright: Oracle and/or its affiliates.
license_file_path: licenses/bin/jersey.CDDL11
libraries:
  - com.sun.jersey: jersey-client

---

name: OkHttp Aether Connector
license_category: binary
module: java-core
license_name: Eclipse Public License 1.0
version: 0.0.9
copyright: to original author or authors
license_file_path: licenses/bin/aether-connector-okhttp.EPL1
libraries:
  - io.tesla.aether: aether-connector-okhttp

---

name: Tesla Aether
license_category: binary
module: java-core
license_name: Eclipse Public License 1.0
version: 0.0.5
copyright: to original author or authors
license_file_path: licenses/bin/tesla-aether.EPL1
libraries:
  - io.tesla.aether: tesla-aether

---

name: Eclipse Aether libraries
license_category: binary
module: java-core
license_name: Eclipse Public License 1.0
version: 0.9.0.M2
copyright: Sonatype, Inc.
license_file_path: licenses/bin/aether-core.EPL1
libraries:
  - org.eclipse.aether: aether-api
  - org.eclipse.aether: aether-connector-file
  - org.eclipse.aether: aether-impl
  - org.eclipse.aether: aether-spi
  - org.eclipse.aether: aether-util

---

name: Rhino
license_category: binary
module: java-core
license_name: Mozilla Public License Version 2.0
version: 1.7.11
copyright: Mozilla and individual contributors.
license_file_path: licenses/bin/rhino.MPL2
libraries:
  - org.mozilla: rhino

---

name: JCIP Annotations Under Apache License
license_category: binary
module: extensions/druid-hdfs-storage
license_name: Apache License version 2.0
version: 1.0-1
libraries:
  - com.github.stephenc.jcip: jcip-annotations

---

name: Reactive Streams
license_category: binary
module: java-core
license_name: Creative Commons CC0
version: 1.0.2
license_file_path: licenses/bin/reactive-streams.CC0
libraries:
  - org.reactivestreams: reactive-streams

---

name: a smear function adapted from MurmurHash3
license_category: source
module: java-core
license_name: Public Domain
copyright: Austin Appleby who has placed MurmurHash3 in the public domain (https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp)
source_paths:
  - processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/Groupers.java

---

name: example data collected from the Wikipedia edit stream API (this content is NOT part of the source code and is only used for example and tutorial purposes)
license_category: source
module: java-core
license_name: Creative Commons Attribution-ShareAlike 3.0 Unported License
copyright: Wikipedia editors and contributors for the text content
license_file_path: licenses/src/CC-BY-SA.txt
source_paths:
  - examples/quickstart/tutorial/wikiticker-2015-09-12-sampled.json.gz

---

name: AOP Alliance
license_category: binary
module: java-core
license_name: Public Domain
version: 1.0
libraries:
  - aopalliance: aopalliance

---

name: XZ
license_category: binary
module: java-core
license_name: Public Domain
version: 1.8
libraries:
  - org.tukaani: xz

---

name: XZ
license_category: binary
module: hadoop-client
license_name: Public Domain
version: 1.0
libraries:
  - org.tukaani: xz

---

name: Apache ORC libraries
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: 1.6.9
libraries:
  - org.apache.orc: orc-mapreduce
  - org.apache.orc: orc-core
  - org.apache.orc: orc-shims
notices:
  - orc-mapreduce: |
      ORC MapReduce
      Copyright 2013-2021 The Apache Software Foundation
  - orc-core: |
      ORC Core
      Copyright 2013-2021 The Apache Software Foundation
  - orc-shims: |
      ORC Shims
      Copyright 2013-2021 The Apache Software Foundation

---

name: ThreeTen
license_category: binary
module: extensions/druid-orc-extensions
license_name: BSD-3-Clause License
version: 1.5.0
libraries:
  - org.threeten: threeten-extra
notices:
  - threeten-extra: |
      ThreeTen-Extra
      Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos.

---

name: aircompressor
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: "0.19"
libraries:
  - io.airlift: aircompressor

---

name: Hive storage API
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: 2.7.1
libraries:
  - org.apache.hive: hive-storage-api
notices:
  - hive-storage-api: |
      Hive Storage API
      Copyright 2018 The Apache Software Foundation

---

name: Jetbrains Annotations
license_category: binary
module: extensions/druid-orc-extensions
license_name: Apache License version 2.0
version: 17.0.0
libraries:
  - org.jetbrains: annotations

---

name: Google Cloud Storage JSON API
license_category: binary
module: extensions/druid-google-extensions
license_name: Apache License version 2.0
version: v1-rev20190523-1.26.0
libraries:
  - com.google.apis: google-api-services-storage

---

name: Google Compute Engine API
license_category: binary
module: extensions/gce-extensions
license_name: Apache License version 2.0
version: v1-rev20190607-1.26.0
libraries:
  - com.google.apis: google-api-services-compute

---

name: Google APIs Client Library For Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.26.0
libraries:
  - com.google.api-client: google-api-client

---

name: Google HTTP Client Library For Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.26.0
libraries:
  - com.google.http-client: google-http-client
  - com.google.http-client: google-http-client-jackson2

---

name: Google OAuth Client Library For Java
license_category: binary
module: java-core
license_name: Apache License version 2.0
version: 1.22.0
libraries:
  - com.google.oauth-client: google-oauth-client

---

name: JavaBeans Activation Framework API
license_category: binary
module: java-core
license_name: CDDL 1.1
version: 1.2.0
copyright: Oracle and/or its affiliates
license_file_path: licenses/bin/javax.activation-api.CDDL11
libraries:
  - javax.activation: javax.activation-api

---

name: Apache Kafka
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: Apache License version 2.0
version: 2.8.0
libraries:
  - org.apache.kafka: kafka-clients
notices:
  - kafka-clients:
      Apache Kafka
      Copyright 2020 The Apache Software Foundation.

      This distribution has a binary dependency on jersey, which is available under the CDDL
      License. The source code of jersey can be found at https://github.com/jersey/jersey/.

---

name: Metrics Core Library
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: Apache License version 2.0
version: 2.2.0
libraries:
  - com.yammer.metrics: metrics-core
notices:
  - metrics-core: |
      Metrics
      Copyright 2010-2013 Coda Hale and Yammer, Inc., 2014-2017 Dropwizard Team

      This product includes software developed by Coda Hale and Yammer, Inc.
---

name: JOpt Simple
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: MIT License
copyright: Paul R. Holser, Jr.
version: 3.2
license_file_path: licenses/bin/jopt-simple.MIT
libraries:
  - net.sf.jopt-simple: jopt-simple

---

name: Scala Library
license_category: binary
module: extensions/kafka-extraction-namespace
license_name: Apache License version 2.0
copyright: LAMP/EPFL and Lightbend, Inc.
version: 2.12.7
libraries:
  - org.scala-lang: scala-library

---

name: Microsoft Azure SDK For Key Vault Core
license_category: binary
module: extensions/druid-azure-extensions
license_name: MIT License
copyright: Microsoft
version: 1.0.0
libraries:
  - com.microsoft.azure: azure-keyvault-core

---

name: Microsoft Azure Storage Client SDK
license_category: binary
module: extensions/druid-azure-extensions
license_name: Apache License version 2.0
copyright: Microsoft
version: 8.6.0
libraries:
  - com.microsoft.azure: azure-storage

---

name: org.apache.ranger ranger-plugins-audit
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.ranger: ranger-plugins-audit

---

name: org.apache.ranger ranger-plugins-common
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.ranger: ranger-plugins-common

---

name: com.101tec zkclient
license_category: binary
version: '0.10'
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - com.101tec: zkclient

---

name: com.kstruct gethostname4j
license_category: binary
version: 0.0.2
module: druid-ranger-security
license_name: MIT License
libraries:
  - com.kstruct: gethostname4j

---

name: com.sun.jersey jersey-bundle
license_category: binary
version: 1.19.3
module: druid-ranger-security
license_name: CDDL 1.1
libraries:
  - com.sun.jersey: jersey-bundle

---

name: net.java.dev.jna jna-platform
license_category: binary
version: 5.2.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - net.java.dev.jna: jna-platform

---

name: JOpt Simple
license_category: binary
version: 5.0.4
module: druid-ranger-security
license_name: MIT License
libraries:
  - net.sf.jopt-simple: jopt-simple
copyright: Paul R. Holser, Jr.

---

name: org.apache.httpcomponents httpmime
license_category: binary
version: 4.5.3
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.httpcomponents: httpmime

---

name: Apache Kafka
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka-clients
notices:
  - kafka-clients: 'Apache Kafka Copyright 2019 The Apache Software Foundation.

This distribution has a binary dependency on jersey, which is available under
the CDDL License. The source code of jersey can be found at https://github.com/jersey/jersey/.'

---

name: org.apache.kafka kafka_2.11
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.kafka: kafka_2.11

---

name: org.apache.ranger ranger-plugins-cred
license_category: binary
version: 2.0.0
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.ranger: ranger-plugins-cred

---

name: org.apache.solr solr-solrj
license_category: binary
version: 7.7.1
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.apache.solr: solr-solrj

---

name: org.codehaus.woodstox stax2-api
license_category: binary
version: 3.1.4
module: druid-ranger-security
license_name: BSD-3-Clause License
libraries:
  - org.codehaus.woodstox: stax2-api

---

name: org.codehaus.woodstox woodstox-core-asl
license_category: binary
version: 4.4.1
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.codehaus.woodstox: woodstox-core-asl

---

name: org.eclipse.persistence commonj.sdo
license_category: binary
version: 2.1.1
module: druid-ranger-security
license_name: Eclipse Distribution License 1.0
libraries:
  - org.eclipse.persistence: commonj.sdo

---

name: org.eclipse.persistence eclipselink
license_category: binary
version: 2.5.2
module: druid-ranger-security
license_name: Eclipse Distribution License 1.0
libraries:
  - org.eclipse.persistence: eclipselink

---

name: org.eclipse.persistence javax.persistence
license_category: binary
version: 2.1.0
module: druid-ranger-security
license_name: Eclipse Distribution License 1.0
libraries:
  - org.eclipse.persistence: javax.persistence

---

name: org.noggit noggit
license_category: binary
version: '0.8'
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.noggit: noggit

---

name: Scala Library
license_category: binary
version: 2.11.12
module: druid-ranger-security
license_name: BSD-3-Clause License
libraries:
  - org.scala-lang: scala-library
copyright: LAMP/EPFL and Lightbend, Inc.

---

name: org.scala-lang scala-reflect
license_category: binary
version: 2.11.12
module: druid-ranger-security
license_name: BSD-3-Clause License
libraries:
  - org.scala-lang: scala-reflect

---

name: snappy-java
license_category: binary
version: 1.1.7.1
module: druid-ranger-security
license_name: Apache License version 2.0
libraries:
  - org.xerial.snappy: snappy-java
notices:
  - snappy-java: |
      This product includes software developed by Google
       Snappy: http://code.google.com/p/snappy/ (New BSD License)


      This library containd statically linked libstdc++. This inclusion is allowed by
      "GCC RUntime Library Exception"
      http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

      == Contributors ==
        * Tatu Saloranta
          * Providing benchmark suite
        * Alec Wysoker
          * Performance and memory usage improvement

---

# Web console modules start
name: "@babel/runtime"
license_category: binary
module: web-console
license_name: MIT License
copyright: Sebastian McKenzie
version: 7.5.5
license_file_path: licenses/bin/@babel-runtime.MIT

---

name: "@blueprintjs/core"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 3.45.0

---

name: "@blueprintjs/datetime"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 3.23.4

---

name: "@blueprintjs/icons"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 3.26.1

---

name: "@blueprintjs/popover2"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Palantir Technologies
version: 0.10.1

---

name: "@hypnosphi/create-react-context"
license_category: binary
module: web-console
license_name: MIT License
copyright: James Kyle
version: 0.3.1
license_file_path: licenses/bin/@hypnosphi-create-react-context.MIT

---

name: "@popperjs/core"
license_category: binary
module: web-console
license_name: MIT License
copyright: Federico Zivolo
version: 2.9.2
license_file_path: licenses/bin/@popperjs-core.MIT

---

name: "@types/dom4"
license_category: binary
module: web-console
license_name: MIT License
copyright: Microsoft Corporation.
version: 2.0.1
license_file_path: licenses/bin/@types-dom4.MIT

---

name: "axios"
license_category: binary
module: web-console
license_name: MIT License
copyright: Matt Zabriskie
version: 0.21.1
license_file_path: licenses/bin/axios.MIT

---

name: "brace"
license_category: binary
module: web-console
license_name: MIT License
copyright: Thorsten Lorenz
version: 0.11.1
license_file_path: licenses/bin/brace.MIT

---

name: "classnames"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jed Watson
version: 2.2.6
license_file_path: licenses/bin/classnames.MIT

---

name: "copy-to-clipboard"
license_category: binary
module: web-console
license_name: MIT License
copyright: sudodoki
version: 3.2.0
license_file_path: licenses/bin/copy-to-clipboard.MIT

---

name: "core-js"
license_category: binary
module: web-console
license_name: MIT License
copyright: Denis Pushkarev
version: 3.10.1
license_file_path: licenses/bin/core-js.MIT

---

name: "d3-array"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 2.3.3
license_file_path: licenses/bin/d3-array.BSD3

---

name: "d3-axis"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.0.12
license_file_path: licenses/bin/d3-axis.BSD3

---

name: "d3-color"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.4.0
license_file_path: licenses/bin/d3-color.BSD3

---

name: "d3-format"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.4.1
license_file_path: licenses/bin/d3-format.BSD3

---

name: "d3-interpolate"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.3.2
license_file_path: licenses/bin/d3-interpolate.BSD3

---

name: "d3-scale"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 3.2.0
license_file_path: licenses/bin/d3-scale.BSD3

---

name: "d3-selection"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.4.0
license_file_path: licenses/bin/d3-selection.BSD3

---

name: "d3-time-format"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 2.2.1
license_file_path: licenses/bin/d3-time-format.BSD3

---

name: "d3-time"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Mike Bostock
version: 1.1.0
license_file_path: licenses/bin/d3-time.BSD3

---

name: "deep-equal"
license_category: binary
module: web-console
license_name: MIT License
copyright: James Halliday
version: 1.1.1
license_file_path: licenses/bin/deep-equal.MIT

---

name: "define-properties"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.1.3
license_file_path: licenses/bin/define-properties.MIT

---

name: "diff-match-patch"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Google
version: 1.0.4

---

name: "dom-helpers"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jason Quense
version: 3.4.0
license_file_path: licenses/bin/dom-helpers.MIT

---

name: "dom4"
license_category: binary
module: web-console
license_name: MIT License
copyright: Andrea Giammarchi
version: 2.1.6
license_file_path: licenses/bin/dom4.MIT

---

name: "druid-query-toolkit"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Imply Data
version: 0.11.10

---

name: "file-saver"
license_category: binary
module: web-console
license_name: MIT License
copyright: Eli Grey
version: 2.0.2
license_file_path: licenses/bin/file-saver.MIT

---

name: "follow-redirects"
license_category: binary
module: web-console
license_name: MIT License
copyright: Ruben Verborgh
version: 1.13.3
license_file_path: licenses/bin/follow-redirects.MIT

---

name: "fontsource-open-sans"
license_category: binary
module: web-console
license_name: MIT License
copyright: Lotus
version: 3.0.9
license_file_path: licenses/bin/fontsource-open-sans.MIT

---

name: "function-bind"
license_category: binary
module: web-console
license_name: MIT License
copyright: Raynos
version: 1.1.1
license_file_path: licenses/bin/function-bind.MIT

---

name: "gud"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jamie Kyle
version: 1.0.0
license_file_path: licenses/bin/gud.MIT

---

name: "has-own-prop"
license_category: binary
module: web-console
license_name: MIT License
copyright: Sindre Sorhus
version: 2.0.0
license_file_path: licenses/bin/has-own-prop.MIT

---

name: "has"
license_category: binary
module: web-console
license_name: MIT License
copyright: Thiago de Arruda
version: 1.0.3
license_file_path: licenses/bin/has.MIT

---

name: "history"
license_category: binary
module: web-console
license_name: MIT License
copyright: Michael Jackson
version: 4.10.1
license_file_path: licenses/bin/history.MIT

---

name: "hjson"
license_category: binary
module: web-console
license_name: MIT License
copyright: Christian Zangl
version: 3.2.1
license_file_path: licenses/bin/hjson.MIT

---

name: "hoist-non-react-statics"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: Michael Ridgway
version: 3.3.0
license_file_path: licenses/bin/hoist-non-react-statics.BSD3

---

name: "is-arguments"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.4
license_file_path: licenses/bin/is-arguments.MIT

---

name: "is-date-object"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.1
license_file_path: licenses/bin/is-date-object.MIT

---

name: "is-regex"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.4
license_file_path: licenses/bin/is-regex.MIT

---

name: "isarray"
license_category: binary
module: web-console
license_name: MIT License
copyright: Julian Gruber
version: 0.0.1
license_file_path: licenses/bin/isarray.MIT

---

name: "js-tokens"
license_category: binary
module: web-console
license_name: MIT License
copyright: Simon Lydell
version: 4.0.0
license_file_path: licenses/bin/js-tokens.MIT

---

name: "json-bigint-native"
license_category: binary
module: web-console
license_name: MIT License
copyright: Vadim Ogievetsky, Andrey Sidorov
version: 1.1.0
license_file_path: licenses/bin/json-bigint-native.MIT

---

name: "lodash.debounce"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.0.8
license_file_path: licenses/bin/lodash.debounce.MIT

---

name: "lodash.escape"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.0.1
license_file_path: licenses/bin/lodash.escape.MIT

---

name: "lodash.get"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.4.2
license_file_path: licenses/bin/lodash.get.MIT

---

name: "lodash.isequal"
license_category: binary
module: web-console
license_name: MIT License
copyright: John-David Dalton
version: 4.5.0
license_file_path: licenses/bin/lodash.isequal.MIT

---

name: "loose-envify"
license_category: binary
module: web-console
license_name: MIT License
copyright: Andres Suarez
version: 1.4.0
license_file_path: licenses/bin/loose-envify.MIT

---

name: "memoize-one"
license_category: binary
module: web-console
license_name: MIT License
copyright: Alex Reardon
version: 5.1.1
license_file_path: licenses/bin/memoize-one.MIT

---

name: "mini-create-react-context"
license_category: binary
module: web-console
license_name: MIT License
copyright: StringEpsilon
version: 0.3.2
license_file_path: licenses/bin/mini-create-react-context.MIT

---

name: "normalize.css"
license_category: binary
module: web-console
license_name: MIT License
copyright: Nicolas Gallagher and Jonathan Neal
version: 8.0.1
license_file_path: licenses/bin/normalize.css.MIT

---

name: "numeral"
license_category: binary
module: web-console
license_name: MIT License
copyright: Adam Draper
version: 2.0.6
license_file_path: licenses/bin/numeral.MIT

---

name: "object-assign"
license_category: binary
module: web-console
license_name: MIT License
copyright: Sindre Sorhus
version: 4.1.1
license_file_path: licenses/bin/object-assign.MIT

---

name: "object-is"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.0.1
license_file_path: licenses/bin/object-is.MIT

---

name: "object-keys"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.1.1
license_file_path: licenses/bin/object-keys.MIT

---

name: "opensans"
license_category: binary
module: web-console
license_name: Apache License version 2.0
copyright: Google
version: 1.101.0

---

name: "path-to-regexp"
license_category: binary
module: web-console
license_name: MIT License
copyright: Blake Embrey (hello@blakeembrey.com)
version: 1.7.0
license_file_path: licenses/bin/path-to-regexp.MIT

---

name: "popper.js"
license_category: binary
module: web-console
license_name: MIT License
copyright: Federico Zivolo
version: 1.16.1
license_file_path: licenses/bin/popper.js.MIT

---

name: "prop-types"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc.
version: 15.7.2
license_file_path: licenses/bin/prop-types.MIT

---

name: "react-ace"
license_category: binary
module: web-console
license_name: MIT License
copyright: James Hrisho
version: 7.0.5
license_file_path: licenses/bin/react-ace.MIT

---

name: "react-day-picker"
license_category: binary
module: web-console
license_name: MIT License
copyright: Giampaolo Bellavite
version: 7.4.9
license_file_path: licenses/bin/react-day-picker.MIT

---

name: "react-dom"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 16.14.0
license_file_path: licenses/bin/react-dom.MIT

---

name: "react-fast-compare"
license_category: binary
module: web-console
license_name: MIT License
copyright: Chris Bolin
version: 3.2.0
license_file_path: licenses/bin/react-fast-compare.MIT

---

name: "react-is"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 16.8.6
license_file_path: licenses/bin/react-is.MIT

---

name: "react-lifecycles-compat"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc.
version: 3.0.4
license_file_path: licenses/bin/react-lifecycles-compat.MIT

---

name: "react-popper"
license_category: binary
module: web-console
license_name: MIT License
copyright: Travis Arnold
version: 1.3.11
license_file_path: licenses/bin/react-popper.MIT

---

name: "react-router-dom"
license_category: binary
module: web-console
license_name: MIT License
copyright: React Training
version: 5.1.2
license_file_path: licenses/bin/react-router-dom.MIT

---

name: "react-router"
license_category: binary
module: web-console
license_name: MIT License
copyright: React Training
version: 5.1.2
license_file_path: licenses/bin/react-router.MIT

---

name: "react-splitter-layout"
license_category: binary
module: web-console
license_name: MIT License
copyright: Yang Liu
version: 4.0.0
license_file_path: licenses/bin/react-splitter-layout.MIT

---

name: "react-table"
license_category: binary
module: web-console
license_name: MIT License
copyright: Tanner Linsley
version: 6.10.3
license_file_path: licenses/bin/react-table.MIT

---

name: "react-transition-group"
license_category: binary
module: web-console
license_name: BSD-3-Clause License
copyright: React Community
version: 2.9.0
license_file_path: licenses/bin/react-transition-group.BSD3

---

name: "react"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 16.14.0
license_file_path: licenses/bin/react.MIT

---

name: "regenerator-runtime"
license_category: binary
module: web-console
license_name: MIT License
copyright: Ben Newman
version: 0.13.7
license_file_path: licenses/bin/regenerator-runtime.MIT

---

name: "regexp.prototype.flags"
license_category: binary
module: web-console
license_name: MIT License
copyright: Jordan Harband
version: 1.2.0
license_file_path: licenses/bin/regexp.prototype.flags.MIT

---

name: "resize-observer-polyfill"
license_category: binary
module: web-console
license_name: MIT License
copyright: Denis Rul
version: 1.5.1
license_file_path: licenses/bin/resize-observer-polyfill.MIT

---

name: "resolve-pathname"
license_category: binary
module: web-console
license_name: MIT License
copyright: Michael Jackson
version: 3.0.0
license_file_path: licenses/bin/resolve-pathname.MIT

---

name: "scheduler"
license_category: binary
module: web-console
license_name: MIT License
copyright: Facebook, Inc. and its affiliates.
version: 0.19.1
license_file_path: licenses/bin/scheduler.MIT

---

name: "tiny-invariant"
license_category: binary
module: web-console
license_name: MIT License
copyright: Alex Reardon
version: 1.0.6
license_file_path: licenses/bin/tiny-invariant.MIT

---

name: "tiny-warning"
license_category: binary
module: web-console
license_name: MIT License
copyright: Alex Reardon
version: 1.0.3
license_file_path: licenses/bin/tiny-warning.MIT

---

name: "toggle-selection"
license_category: binary
module: web-console
license_name: MIT License
copyright: sudodoki
version: 1.0.6
license_file_path: licenses/bin/toggle-selection.MIT

---

name: "tslib"
license_category: binary
module: web-console
license_name: Zero-Clause BSD
copyright: Microsoft Corp.
version: 1.13.0
license_file_path: licenses/bin/tslib.0BSD

---

name: "typed-styles"
license_category: binary
module: web-console
license_name: MIT License
copyright: lttb
version: 0.0.7
license_file_path: licenses/bin/typed-styles.MIT

---

name: "value-equal"
license_category: binary
module: web-console
license_name: MIT License
copyright: Michael Jackson
version: 1.0.1
license_file_path: licenses/bin/value-equal.MIT

---

name: "warning"
license_category: binary
module: web-console
license_name: MIT License
copyright: Berkeley Martinez
version: 4.0.3
license_file_path: licenses/bin/warning.MIT
# Web console modules end
