
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   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.


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

1 This projects includes modified/copied source files with the following licenses:

=========
1.1 Third party MIT license licenses
=========

1.1.1 inlong-tubemq/resources/assets/lib/jquery.min.js
 Source  : jquery 1.11.3
 License : https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt
| Copyright 2014 jQuery Foundation and other contributors
| http://jquery.com/
|
| Permission is hereby granted, free of charge, to any person obtaining
| a copy of this software and associated documentation files (the
| "Software"), to deal in the Software without restriction, including
| without limitation the rights to use, copy, modify, merge, publish,
| distribute, sublicense, and/or sell copies of the Software, and to
| permit persons to whom the Software is furnished to do so, subject to
| the following conditions:
|
| The above copyright notice and this permission notice shall be
| included in all copies or substantial portions of the Software.
|
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----

1.1.2 inlong-tubemq/resources/assets/lib/DataTables/*
 Source  : datatables  1.10.7
 License : https://github.com/DataTables/DataTables/blob/1.10.7/license.txt
| Copyright (c) 2008-2013 SpryMedia Limited
| http://datatables.net
|
| Permission is hereby granted, free of charge, to any person obtaining a copy
| of this software and associated documentation files (the "Software"), to deal
| in the Software without restriction, including without limitation the rights
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
| copies of the Software, and to permit persons to whom the Software is
| furnished to do so, subject to the following conditions:
|
| The above copyright notice and this permission notice shall be included in
| all copies or substantial portions of the Software.
|
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
| THE SOFTWARE.

----

1.1.3 inlong-tubemq/resources/assets/public/css/style.css
      inlong-tubemq/resources/assets/public/css/ie.css
 Source  : Compass
 License :  https://github.com/Compass/compass/blob/stable/LICENSE.markdown
 | Copyright (c) 2009-2014 Christopher M. Eppstein
 |
 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 |
 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. No attribution is required by products that make use of this software.
 |
 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 |
 | Except as contained in this notice, the name(s) of the above copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization.
 |
 | Contributors to this project agree to grant all rights to the copyright holder of the primary product. Attribution is maintained in the source control history of the product.

----

=========
1.2 Third party BSD 3-Clause license
=========

1.2.1 inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/any.h
      inlong-tubemq/tubemq-client-twins/tubemq-client-cpp/src/buffer.h
 Source  : https://github.com/Qihoo360/evpp/blob/master/evpp/any.h version c5038a6
           https://github.com/Qihoo360/evpp/blob/master/evpp/buffer.h version b2535d7
 License : https://github.com/Qihoo360/evpp/blob/master/LICENSE
 | BSD 3-Clause License
 |
 | Copyright (c) 2017, Qihoo 360
 | All rights reserved.
 |
 | Redistribution and use in source and binary forms, with or without
 | modification, are permitted provided that the following conditions are met:
 |
 | * Redistributions of source code must retain the above copyright notice, this
 |   list of conditions and the following disclaimer.
 |
 | * Redistributions in binary form must reproduce the above copyright notice,
 |   this list of conditions and the following disclaimer in the documentation
 |   and/or other materials provided with the distribution.
 |
 | * Neither the name of the copyright holder nor the names of its
 |   contributors may be used to endorse or promote products derived from
 |   this software without specific prior written permission.
 |
 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----

=========
1.3 Third party Apache 2.0 Licenses
=========

=======================================================================
Apache InLong Subcomponents:

The compiled Apache InLong distribution includes the following
sources/binaries. The use of these sources/binaries is subject to the
terms and conditions of their respective licenses.


========================================================================
Apache 2.0 License
========================================================================

The following components are provided under the Apache License. See project link for details.
The text of each license is the standard Apache 2.0 license.

  org.elasticsearch.plugin:aggs-matrix-stats-client:6.8.23 - aggs-matrix-stats (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  io.airlift:aircompressor:0.20 - aircompressor (https://github.com/airlift/aircompressor/tree/0.20), (Apache License 2.0)
  org.apache.directory.server:apacheds-i18n:2.0.0-M15 - ApacheDS I18n (https://directory.apache.org/apacheds/), (The Apache Software License, Version 2.0)
  org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15 - ApacheDS Protocol Kerberos Codec (https://directory.apache.org/apacheds/), (The Apache Software License, Version 2.0)
  org.apache.directory.api:api-asn1-api:1.0.0-M20 - Apache Directory API ASN.1 API (https://directory.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.directory.api:api-util:1.0.0-M20 - Apache Directory LDAP API Utilities (https://directory.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.arrow:arrow-format:0.8.0 - Arrow Format (https://arrow.apache.org/), (Apache License, Version 2.0)
  org.apache.arrow:arrow-memory:0.8.0 - Arrow Memory (https://arrow.apache.org/), (Apache License, Version 2.0)
  org.apache.arrow:arrow-vector:0.8.0 - Arrow Vectors (https://arrow.apache.org/), (Apache License, Version 2.0)
  org.apache.yetus:audience-annotations:0.5.0 - Apache Yetus - Audience Annotations (https://yetus.apache.org/), (Apache License, Version 2.0)
  org.apache.calcite.avatica:avatica-core:1.17.0 - Apache Calcite Avatica (https://calcite.apache.org/avatica), (The Apache License, Version 2.0)
  org.apache.avro:avro:1.10.1 - Apache Avro (https://avro.apache.org), (The Apache Software License, Version 2.0)
  org.apache.avro:avro-protobuf:1.10.2 - Apache Avro Protobuf Compatibility (https://avro.apache.org/avro-protobuf), (Apache License, Version 2.0)
  com.jolbox:bonecp:0.8.0.RELEASE - BoneCP (https://github.com/wwadge/bonecp/tree/bonecp-parent-0.8.0.RELEASE), (Apache 2.0)
  org.apache.pulsar:bouncy-castle-bc:pkg:2.8.1 - Apache Pulsar :: Bouncy Castle :: BC (https://github.com/apache/pulsar/tree/master/bouncy-castle/bc), (Apache License, Version 2.0)
  net.bytebuddy:byte-buddy-agent:1.11.13 - Byte Buddy agent (https://github.com/raphw/byte-buddy/tree/byte-buddy-1.11.13), (Apache License, Version 2.0)
  com.github.ben-manes.caffeine:caffeine:2.9.3 - Caffeine cache (https://github.com/ben-manes/caffeine), (Apache License, Version 2.0)
  com.twitter:chill_2.11:0.7.6 - chill (https://github.com/twitter/chill/tree/v0.7.6), (Apache 2)
  com.twitter:chill-java:0.7.6 - chill-java (https://github.com/twitter/chill/tree/v0.7.6), (Apache 2)
  ru.yandex.clickhouse:clickhouse-jdbc:0.3.1 - clickhouse-jdbc (https://github.com/ClickHouse/clickhouse-jdbc/tree/master/clickhouse-jdbc), (The Apache Software License, Version 2.0)
  commons-beanutils:commons-beanutils:1.9.4 - Apache Commons BeanUtils (https://commons.apache.org/proper/commons-beanutils/), (Apache License, Version 2.0)
  commons-cli:commons-cli:1.4 - Apache Commons CLI (http://commons.apache.org/proper/commons-cli), (The Apache Software License, Version 2.0)
  commons-codec:commons-codec:1.15 - Apache Commons Codec (https://commons.apache.org/proper/commons-codec), (Apache License, Version 2.0)
  commons-collections:commons-collections:3.2.2 - Apache Commons Collections (https://commons.apache.org/proper/commons-collections), (Apache License, Version 2.0)
  org.apache.commons:commons-collections4:4.3 - Apache Commons Collections (https://commons.apache.org/proper/commons-collections/), (Apache License, Version 2.0)
  org.apache.commons:commons-compress:1.19 - Apache Commons Compress (https://commons.apache.org/proper/commons-compress/), (Apache License, Version 2.0)
  commons-configuration:commons-configuration:1.6 - Commons Configuration (https://commons.apache.org/proper/commons-configuration/), (The Apache Software License, Version 2.0)
  org.apache.commons:commons-crypto:1.0.0 - Apache Commons Crypto (https://commons.apache.org/proper/commons-crypto/), (Apache License, Version 2.0)
  commons-daemon:commons-daemon:1.0.13 - Commons Daemon (https://commons.apache.org/proper/commons-daemon/), (The Apache Software License, Version 2.0)
  commons-digester:commons-digester:1.8 - Digester (https://commons.apache.org/proper/commons-digester/), (The Apache Software License, Version 2.0)
  commons-io:commons-io:2.11.0 - Apache Commons IO (https://commons.apache.org/proper/commons-io/), (The Apache Software License, Version 2.0)
  commons-lang:commons-lang:2.6 - Commons Lang (https://commons.apache.org/proper/commons-lang), (The Apache Software License, Version 2.0)
  org.apache.commons:commons-lang3:3.11 - Apache Commons Lang (https://commons.apache.org/proper/commons-lang), (The Apache Software License, Version 2.0)
  commons-logging:commons-logging:1.2 - Commons Logging (https://commons.apache.org/proper/commons-logging/), (The Apache Software License, Version 2.0)
  commons-net:commons-net:3.1 - Commons Net (https://commons.apache.org/proper/commons-net/), (The Apache Software License, Version 2.0)
  commons-pool:commons-pool:1.5.4 - Commons Pool (https://commons.apache.org/proper/commons-pool/), (The Apache Software License, Version 2.0)
  org.apache.commons:commons-text:1.9 - Apache Commons Text (https://commons.apache.org/proper/commons-text), (Apache License, Version 2.0)
  com.typesafe:config:1.3.3 - config (https://github.com/lightbend/config/tree/v1.3.3), (Apache License, Version 2.0)
  com.squareup.retrofit2:converter-jackson:2.9.0 - Retrofit (https://github.com/square/retrofit) (Apache License, Version 2.0)
  org.apache.curator:curator-client:2.13.0 - Curator Client (https://curator.apache.org/curator-client), (The Apache Software License, Version 2.0)
  org.apache.curator:curator-framework:2.12.0 - Curator Framework (https://curator.apache.org/curator-framework), (The Apache Software License, Version 2.0)
  org.apache.curator:curator-recipes:2.12.0 - Curator Recipes (https://curator.apache.org/curator-recipes), (The Apache Software License, Version 2.0)
  com.alibaba:druid:1.2.6 -  druid (https://github.com/alibaba/druid/tree/1.2.6), (Apache 2)
  com.alibaba:druid-spring-boot-starter:1.2.6 - druid-spring-boot-starter (https://github.com/alibaba/druid/tree/1.2.6/druid-spring-boot-starter), (Apache 2)
  org.elasticsearch:elasticsearch:6.8.23 - server (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch:elasticsearch-cli:6.8.23 - cli (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch:elasticsearch-core:6.8.23 - core (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch.client:elasticsearch-rest-client:6.8.23 - rest (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch.client:elasticsearch-rest-client-sniffer:6.8.23 - sniffer (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch.client:elasticsearch-rest-high-level-client:6.8.23 - rest-high-level (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch:elasticsearch-secure-sm:6.8.23 - secure-sm (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.elasticsearch:elasticsearch-x-content:6.8.23 - x-content (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  com.google.errorprone:error_prone_annotations:2.7.1 - error-prone annotations (https://github.com/google/error-prone/tree/v2.7.1/annotations), (Apache 2.0)
  com.google.guava:failureaccess:1.0.1 - Guava InternalFutureFailureAccess and InternalFutures (https://github.com/google/guava/tree/failureaccess-v1.0.1), (The Apache Software License, Version 2.0)
  it.unimi.dsi:fastutil:6.5.6 - fastutil (https://github.com/vigna/fastutil/tree/7.0.4), (Apache 2.0)
  com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1 - Findbugs Annotations under Apache License (https://github.com/stephenc/findbugs-annotations), (Apache License, Version 2.0)
  org.apache.flink:flink-annotations:1.13.5 - Flink : Annotations (https://github.com/apache/flink/tree/release-1.13.5/flink-annotations), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-clients_2.11:1.13.5 - Flink : Clients (https://github.com/apache/flink/tree/release-1.13.5/flink-clients), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-connector-base:1.13.5 - Flink : Connectors : Base (https://github.com/apache/flink/tree/release-1.13.5/flink-connectors/flink-connector-base), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-connector-files:1.13.5 - Flink : Connectors : Files (https://github.com/apache/flink/tree/release-1.13.5/flink-connectors/flink-connector-files), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-core:1.13.5 - Flink : Core (https://github.com/apache/flink/tree/release-1.13.5/flink-core), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-file-sink-common:1.13.5 - Flink : Connectors : File Sink Common (https://github.com/apache/flink/tree/release-1.13.5/flink-connectors/flink-file-sink-common), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-hadoop-fs:1.13.5 - Flink : FileSystems : Hadoop FS (https://github.com/apache/flink/tree/release-1.13.5/flink-filesystems/flink-hadoop-fs), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-java:1.13.5 - Flink : Java (https://github.com/apache/flink/tree/release-1.13.5/flink-java), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-metrics-core:1.13.5 - Flink : Metrics : Core (https://github.com/apache/flink/tree/release-1.13.5/flink-metrics/flink-metrics-core), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-optimizer_2.11:1.13.5 - Flink : Optimizer (https://github.com/apache/flink/tree/release-1.13.5/flink-optimizer), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-queryable-state-client-java:1.13.5 - Flink : Queryable state : Client Java (https://github.com/apache/flink/tree/release-1.13.5/flink-queryable-state/flink-queryable-state-client-java), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-runtime_2.11:1.13.5 - Flink : Runtime (https://github.com/apache/flink/tree/release-1.13.5/flink-runtime), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-scala_2.11:1.13.5 - Flink : Scala (https://flink.apache.org/flink-scala_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-shaded-asm-7:7.1-13.0 - flink-shaded-asm-7 (https://github.com/apache/flink-shaded/tree/release-13.0/flink-shaded-asm-7), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-shaded-guava:18.0-13.0 - flink-shaded-guava-18 (https://github.com/apache/flink-shaded/tree/release-13.0/flink-shaded-guava-18), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-shaded-jackson:2.12.1-13.0 - flink-shaded-jackson-2 (https://github.com/apache/flink-shaded/tree/release-13.0/flink-shaded-jackson-parent/flink-shaded-jackson-2), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-shaded-netty:4.1.49.Final-13.0 - flink-shaded-netty-4 (https://github.com/apache/flink-shaded/tree/release-13.0/flink-shaded-netty-4), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-shaded-zookeeper-3:3.4.14-13.0 - flink-shaded-zookeeper-3.4 (https://github.com/apache/flink-shaded/tree/release-13.0/flink-shaded-zookeeper-parent/flink-shaded-zookeeper-34), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-streaming-java_2.11:1.13.5 - Flink : Streaming Java (https://github.com/apache/flink/tree/release-1.13.5/flink-streaming-java), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-streaming-scala_2.11:1.13.5 - Flink : Streaming Scala (https://flink.apache.org/flink-streaming-scala_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-api-java:1.13.5 - Flink : Table : API Java (https://flink.apache.org/flink-table/flink-table-api-java), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-api-java-bridge_2.11:1.13.5 - Flink : Table : API Java bridge (https://flink.apache.org/flink-table/flink-table-api-java-bridge_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-api-scala_2.11:1.13.5 - Flink : Table : API Scala (https://flink.apache.org/flink-table/flink-table-api-scala_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-api-scala-bridge_2.11:1.13.5 - Flink : Table : API Scala bridge (https://flink.apache.org/flink-table/flink-table-api-scala-bridge_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-common:1.13.5 - Flink : Table : Common (https://flink.apache.org/flink-table/flink-table-common), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-planner-blink_2.11:1.13.5 - Flink : Table : Planner Blink (https://flink.apache.org/flink-table/flink-table-planner-blink_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:flink-table-runtime-blink_2.11:1.13.5 - Flink : Table : Runtime Blink (https://flink.apache.org/flink-table/flink-table-runtime-blink_2.11), (The Apache Software License, Version 2.0)
  org.apache.flink:force-shading:1.13.5 - Flink : Tools : Force Shading (https://github.com/apache/flink/tree/release-1.13.5/tools/force-shading), (The Apache Software License, Version 2.0)
  com.google.code.gson:gson:2.8.6 - Gson (https://github.com/google/gson/gson), (Apache 2.0)
  com.google.guava:guava:31.0.1-jre - Guava: Google Core Libraries for Java (https://github.com/google/guava), (Apache License, Version 2.0)
  com.google.inject:guice:3.0 - Google Guice - Core Library (https://github.com/google/guice), (The Apache Software License, Version 2.0)
  com.google.inject.extensions:guice-assistedinject:3.0 - Google Guice - Extensions - AssistedInject (https://github.com/google/guice/tree/3.0/extensions/assistedinject), (The Apache Software License, Version 2.0) 
  com.google.inject.extensions:guice-servlet:3.0 - Google Guice - Extensions - Servlet (https://github.com/google/guice), (The Apache Software License, Version 2.0)
  org.apache.hbase:hbase-client:2.4.12 - Apache HBase - Client (https://hbase.apache.org/), (Apache License, Version 2.0)
  org.apache.hbase:hbase-common:2.4.12 - Apache HBase - Common (https://hbase.apache.org/), (Apache License, Version 2.0)
  org.apache.hbase:hbase-hadoop-compat:2.4.12 - Apache HBase - Hadoop Compatibility (https://hbase.apache.org/hbase-build-configuration/hbase-hadoop-compat), (Apache License, Version 2.0)
  org.apache.hbase:hbase-hadoop2-compat:2.4.12 - Apache HBase - Hadoop Two Compatibility (https://hbase.apache.org/hbase-build-configuration/hbase-hadoop2-compat), (Apache License, Version 2.0)
  org.apache.hbase:hbase-logging:2.4.12 - Apache HBase - Logging (https://hbase.apache.org/hbase-build-configuration/hbase-logging), (Apache License, Version 2.0)
  org.apache.hbase:hbase-metrics:2.4.12 - Apache HBase - Metrics Implementation (https://hbase.apache.org/hbase-build-configuration/hbase-metrics), (Apache License, Version 2.0)
  org.apache.hbase:hbase-metrics-api:2.4.12 - Apache HBase - Metrics API (https://hbase.apache.org/hbase-build-configuration/hbase-metrics-api), (Apache License, Version 2.0)
  org.apache.hbase:hbase-protocol:2.4.12 - Apache HBase - Protocol (https://hbase.apache.org/hbase-build-configuration/hbase-protocol), (Apache License, Version 2.0)
  org.apache.hbase:hbase-protocol-shaded:2.4.12 - Apache HBase - Shaded Protocol (https://hbase.apache.org/hbase-build-configuration/hbase-protocol-shaded), (Apache License, Version 2.0)
  org.apache.hbase.thirdparty:hbase-shaded-gson:3.5.1 - Apache HBase Relocated (Shaded) GSON Libs (http://hbase.apache.org/hbase-shaded-gson), (Apache License, Version 2.0)
  org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.5.1 - Apache HBase Relocated (Shaded) Third-party Miscellaneous Libs (http://hbase.apache.org/hbase-shaded-miscellaneous), (Apache License, Version 2.0)
  org.apache.hbase.thirdparty:hbase-shaded-netty:3.5.1 - Apache HBase Relocated (Shaded) Netty Libs (http://hbase.apache.org/hbase-shaded-netty), (Apache License, Version 2.0)
  org.apache.hbase.thirdparty:hbase-shaded-protobuf:3.5.1 - Apache HBase Patched and Relocated (Shaded) Protobuf (http://hbase.apache.org/hbase-shaded-protobuf), (Apache License, Version 2.0)
  org.hibernate.validator:hibernate-validator:6.2.3.Final - Hibernate Validator Engine (https://github.com/hibernate/hibernate-validator/tree/6.2.3.Final), (Apache License 2.0)
  com.zaxxer:HikariCP:4.0.3 - HikariCP (https://github.com/brettwooldridge/HikariCP/tree/HikariCP-4.0.3), (The Apache Software License, Version 2.0)
  org.apache.hive:hive-common:3.1.2 - Hive Common (https://github.com/apache/hive/tree/rel/release-3.1.2/common), (Apache License, Version 2.0)
  org.apache.hive:hive-exec:3.1.2 - Hive Query Language (https://github.com/apache/hive/tree/rel/release-3.1.2/ql), (Apache License, Version 2.0)
  org.apache.hive:hive-jdbc:3.1.2 - Hive JDBC (https://github.com/apache/hive/tree/rel/release-3.1.2/jdbc), (Apache License, Version 2.0)
  org.apache.hive:hive-metastore:3.1.2 - Hive Metastore (https://github.com/apache/hive/tree/rel/release-3.1.2/metastore), (Apache License, Version 2.0)
  org.apache.hive:hive-serde:3.1.2 - Hive Serde (https://github.com/apache/hive/tree/rel/release-3.1.2/serde), (Apache License, Version 2.0)
  org.apache.hive:hive-service:3.1.2 - Hive Service (https://github.com/apache/hive/tree/rel/release-3.1.2/service), (Apache License, Version 2.0)
  org.apache.hive:hive-service-rpc:3.1.2 - Hive Service RPC (https://github.com/apache/hive/tree/rel/release-3.1.2/service-rpc), (Apache License, Version 2.0)
  org.apache.hive:hive-shims:3.1.2 - Hive Shims (https://github.com/apache/hive/tree/rel/release-3.1.2/shims), (Apache License, Version 2.0)
  org.apache.hive.shims:hive-shims-0.23:3.1.2 - Hive Shims 0.23 (https://github.com/apache/hive/tree/rel/release-3.1.2/shims/0.23), (Apache License, Version 2.0)
  org.apache.hive.shims:hive-shims-common:3.1.2 - Hive Shims Common (https://github.com/apache/hive/tree/rel/release-3.1.2/shims/common), (Apache License, Version 2.0)
  org.apache.hive.shims:hive-shims-scheduler:3.1.2 - Hive Shims Scheduler (https://github.com/apache/hive/tree/rel/release-3.1.2/shims/scheduler), (Apache License, Version 2.0)
  org.apache.hive:hive-standalone-metastore:3.1.2 - Hive Standalone Metastore (https://github.com/apache/hive/tree/rel/release-3.1.2/standalone-metastore), (Apache License, Version 2.0)
  org.apache.hive:hive-storage-api:2.7.0 - Hive Storage API (https://github.com/apache/hive/tree/rel/storage-release-2.7.0/storage-api), (Apache License, Version 2.0)
  org.apache.hive:hive-upgrade-acid:3.1.2 - Hive Upgrade Acid (https://github.com/apache/hive/tree/rel/release-3.1.2/upgrade-acid), (Apache License, Version 2.0)
  org.apache.htrace:htrace-core4:4.1.0-incubating - htrace-core4 (http://incubator.apache.org/projects/htrace.html), (The Apache Software License, Version 2.0)
  org.apache.httpcomponents:httpasyncclient:4.1.2 - Apache HttpAsyncClient (http://hc.apache.org/httpcomponents-asyncclient), (Apache License, Version 2.0)
  org.apache.httpcomponents:httpclient:4.5.13 - Apache HttpClient (http://hc.apache.org/httpcomponents-client), (Apache License, Version 2.0)
  org.apache.httpcomponents:httpcore:4.4.14 - Apache HttpCore (http://hc.apache.org/httpcomponents-core-ga), (Apache License, Version 2.0)
  org.apache.httpcomponents:httpcore-nio:4.4.5 - Apache HttpCore NIO (http://hc.apache.org/httpcomponents-core-ga), (Apache License, Version 2.0)
  org.apache.httpcomponents:httpmime:4.5.13 - Apache HttpClient Mime (http://hc.apache.org/httpcomponents-client), (Apache License, Version 2.0)
  com.google.j2objc:j2objc-annotations:1.3 - J2ObjC Annotations (https://github.com/google/j2objc/), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.core:jackson-annotations:2.13.2- Jackson-annotations (https://github.com/FasterXML/jackson-annotations/tree/jackson-annotations-2.13.2), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.core:jackson-core:2.13.2 - Jackson-core (https://github.com/FasterXML/jackson-core/tree/jackson-core-2.13.2), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.core:jackson-databind:2.13.2.2 - jackson-databind (https://github.com/FasterXML/jackson-databind/tree/jackson-databind-2.13.2.2), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.8.11 - Jackson dataformat: CBOR (https://github.com/FasterXML/jackson-dataformats-binary/tree/jackson-dataformats-binary-2.8.11/cbor), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.8.11 - Jackson dataformat: Smile (https://github.com/FasterXML/jackson-dataformats-binary/tree/jackson-dataformats-binary-2.8.11/smile), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.2 - Jackson datatype: jdk8 (https://github.com/FasterXML/jackson-modules-java8/tree/jackson-modules-java8-2.13.2), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.2 - Jackson-module-parameter-names (https://github.com/FasterXML/jackson-modules-java8/tree/jackson-modules-java8-2.13.2/parameter-names), (The Apache Software License, Version 2.0)
  jakarta.validation:jakarta.validation-api:2.0.2 - Jakarta Bean Validation API (https://github.com/eclipse-ee4j/beanvalidation-api/tree/2.0.2), (Apache License 2.0)
  javax.inject:javax.inject:1 - javax.inject (http://code.google.com/p/atinject/), (The Apache Software License, Version 2.0)
  com.jamesmurty.utils:java-xmlbuilder:0.4 - java-xmlbuilder (http://code.google.com/p/java-xmlbuilder/), (Apache License, Version 2.0)
  org.jboss.logging:jboss-logging:3.4.1.Final - JBoss Logging 3 (http://www.jboss.org), (Apache License, version 2.0)
  com.github.stephenc.jcip:jcip-annotations:1.0-1 - JCIP Annotations under Apache License (https://github.com/stephenc/jcip-annotations), (Apache License, Version 2.0)
  javax.jdo:jdo-api:3.0.1 - JDO API (http://db.apache.org/jdo), (Apache 2.0)
  net.java.dev.jets3t:jets3t:0.9.0 - An open source Java toolkit for Amazon S3 (http://www.jets3t.org), (Apache License, Version 2.0)
  joda-time:joda-time:2.10.10 - Joda-Time (http://www.joda.org/joda-time/), (Apache License, Version 2.0)
  com.github.jsqlparser:jsqlparser:4.2 - JSQLParser library (https://github.com/JSQLParser/JSqlParser), (The Apache Software License, Version 2.0;  GNU Library or Lesser General Public License (LGPL) V2.1)
  com.github.xiaoymin:knife4j-annotations:3.0.3 - Knife4j Annotations (https://gitee.com/xiaoym/knife4j/tree/v2.0.9/knife4j/knife4j-annotations), (The Apache Software License, Version 2.0)
  com.github.xiaoymin:knife4j-core:3.0.3 - knife4j-core (https://gitee.com/xiaoym/knife4j/tree/v2.0.9/knife4j/knife4j-core), (The Apache Software License, Version 2.0)
  com.github.xiaoymin:knife4j-spring:3.0.3 - Knife4j Spring (https://gitee.com/xiaoym/knife4j/tree/v2.0.9/knife4j/knife4j-spring), (The Apache Software License, Version 2.0)
  com.github.xiaoymin:knife4j-spring-boot-autoconfigure:3.0.3 - Knife4j Spring Boot AutoConfigure (https://gitee.com/xiaoym/knife4j/tree/v2.0.9/knife4j/knife4j-spring-boot-autoconfigure), (The Apache Software License, Version 2.0)
  com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3 - Knife4j Spring Boot Starter (https://gitee.com/xiaoym/knife4j/tree/v2.0.9/knife4j/knife4j-spring-boot-starter), (The Apache Software License, Version 2.0)
  com.github.xiaoymin:knife4j-spring-ui:3.0.3 - Knife4j Spring UI (https://gitee.com/xiaoym/knife4j/tree/v2.0.9/knife4j/knife4j-spring-ui), (The Apache Software License, Version 2.0)
  org.elasticsearch.plugin:lang-mustache-client:6.8.23 - lang-mustache (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.apache.logging.log4j:log4j-api:2.17.2 - Apache Log4j API (https://logging.apache.org/log4j/2.x/log4j-api/), (Apache License, Version 2.0)
  org.apache.logging.log4j:log4j-jul:2.17.2 - Apache Log4j JUL Adapter (https://logging.apache.org/log4j/2.x/log4j-jul/), (Apache License, Version 2.0)
  org.apache.logging.log4j:log4j-slf4j-impl:2.17.2 - Apache Log4j SLF4J Binding (https://logging.apache.org/log4j/2.x/log4j-slf4j-impl/), (Apache License, Version 2.0)
  org.lz4:lz4-java:1.6.0 - LZ4 and xxHash (https://github.com/lz4/lz4-java/tree/1.6.0), (The Apache Software License, Version 2.0)
  io.dropwizard.metrics:metrics-core:3.2.6 - Metrics Core (https://github.com/dropwizard/metrics/tree/v3.2.6), (Apache License 2.0)
  io.dropwizard.metrics:metrics-json:3.1.0 - Jackson Integration for Metrics (https://github.com/dropwizard/metrics/tree/v3.1.0), (Apache License 2.0)
  io.dropwizard.metrics:metrics-jvm:3.1.0 - JVM Integration for Metrics (https://github.com/dropwizard/metrics/tree/v3.1.0), (Apache License 2.0)
  org.mybatis:mybatis:3.5.9 - mybatis (https://mybatis.org/mybatis-3/), (The Apache Software License, Version 2.0)
  org.mybatis:mybatis-spring:2.0.5 - mybatis-spring (http://mybatis.org/spring/), (The Apache Software License, Version 2.0)
  io.netty:netty:3.10.6.Final - Netty (http://netty.io/), (Apache License, Version 2.0)
  io.netty:netty-all:4.1.50.Final - Netty/All-in-One (https://github.com/netty/netty/tree/netty-4.1.50.Final), (Apache License, Version 2.0)
  io.netty:netty-buffer:4.1.72.Final - Netty/Buffer (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-codec:4.1.72.Final - Netty/Codec (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-common:4.1.72.Final - Netty/Common (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-handler:4.1.72.Final - Netty/Handler (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-resolver:4.1.72.Final - Netty/Resolver (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-transport:4.1.72.Final - Netty/Transport (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-transport-classes-epoll:4.1.72.Final - Netty/Transport/Classes/Epoll (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-transport-native-epoll:4.1.72.Final - Netty/Transport/Native/Epoll (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-transport-native-unix-common:4.1.72.Final - Netty/Transport/Native/Unix/Common (https://github.com/netty/netty/tree/netty-4.1.72.Final), (Apache License, Version 2.0)
  io.netty:netty-tcnative-classes:2.0.46.Final - Netty/TomcatNative [OpenSSL - Classes] (https://github.com/netty/netty-tcnative/tree/netty-tcnative-parent-2.0.46.Final), (Apache 2.0)
  com.nimbusds:nimbus-jose-jwt:7.9 - Nimbus JOSE+JWT (https://bitbucket.org/connect2id/nimbus-jose-jwt), (The Apache Software License, Version 2.0)
  org.objenesis:objenesis:3.2 - Objenesis (http://objenesis.org/objenesis), (Apache License, Version 2.0)
  com.squareup.okhttp:okhttp:2.7.5 - OkHttp (https://github.com/square/okhttp/tree/parent-2.7.5/okhttp), (Apache 2.0)
  com.squareup.okhttp3:okhttp:3.14.9 - OkHttp (https://github.com/square/okhttp/tree/parent-3.14.9/okhttp), (Apache 2.0)
  com.squareup.okio:okio:1.17.2 - Okio (https://github.com/square/okio/tree/okio-parent-1.17.2/okio), (Apache 2.0)
  net.sf.opencsv:opencsv:2.3 - opencsv (http://opencsv.sf.net), (Apache 2)
  com.opencsv:opencsv:5.4 - opencsv (http://opencsv.sf.net), (Apache 2)
  org.apache.orc:orc-core:1.5.6 - ORC Core (http://orc.apache.org/orc-core), (Apache License, Version 2.0)
  org.apache.orc:orc-shims:1.5.6 - ORC Shims (http://orc.apache.org/orc-shims), (Apache License, Version 2.0)
  org.elasticsearch.plugin:parent-join-client:6.8.23 - parent-join (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.apache.pulsar:pulsar-client-admin:2.8.1 - Pulsar Client Admin (https://github.com/apache/pulsar/tree/v2.8.1), (Apache License, Version 2.0)
  org.apache.pulsar:pulsar-client-admin-api:2.8.1 - Pulsar Client Admin :: API (https://github.com/apache/pulsar/tree/v2.8.1), (Apache License, Version 2.0)
  org.apache.pulsar:pulsar-client-api:2.8.1 - Pulsar Client :: API (https://github.com/apache/pulsar/tree/v2.8.1), (Apache License, Version 2.0)
  org.apache.pulsar:pulsar-package-core:2.8.1 - Apache Pulsar :: Package Management :: Core (https://github.com/apache/pulsar/tree/v2.8.1/pulsar-package-management/core), (Apache License, Version 2.0)
  org.apache.pulsar:pulsar-transaction-common:2.8.1 - Pulsar Transaction :: Common (https://github.com/apache/pulsar/tree/v2.8.1/pulsar-transaction/common), (Apache License, Version 2.0)
  org.elasticsearch.plugin:rank-eval-client:6.8.23 - rank-eval (https://github.com/elastic/elasticsearch), (The Apache Software License, Version 2.0)
  org.reflections:reflections:0.10.2 - Reflections (https://github.com/ronmamo/reflections/tree/0.10.2), (The Apache Software License, Version 2.0;  WTFPL)
  com.squareup.retrofit2:retrofit:2.9.0 - Retrofit (https://github.com/square/retrofit) (Apache License, Version 2.0)
  org.apache.shiro:shiro-cache:1.8.0 - Apache Shiro Cache (https://shiro.apache.org/caching.html), (Apache License, Version 2.0)
  org.apache.shiro:shiro-config-core:1.8.0 - Apache Shiro :: Config :: Core (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-config-ogdl:1.8.0 - Apache Shiro :: Config :: Ogdl (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-core:1.8.0 - Apache Shiro Cache (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-crypto-hash:1.8.0 - Apache Shiro :: Cryptography :: Hashing (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-crypto-core:1.8.0 - Apache Shiro :: Cryptography :: Core (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-crypto-cipher:1.8.0 - Apache Shiro :: Cryptography :: Ciphers (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-event:1.8.0 - Apache Shiro :: Event (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-web:1.8.0 - Apache Shiro :: Web (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-lang:1.8.0 - Apache Shiro :: Lang (https://shiro.apache.org/), (Apache License, Version 2.0)
  org.apache.shiro:shiro-spring:1.8.0 - Apache Shiro :: Support :: Spring (https://shiro.apache.org/), (Apache License, Version 2.0)
  io.prometheus:simpleclient:0.14.1 - Prometheus Java Simpleclient (https://github.com/prometheus/client_java/tree/parent-0.14.1), (The Apache Software License, Version 2.0)
  io.prometheus:simpleclient_common:0.14.1 - Prometheus Java Simpleclient Common (https://github.com/prometheus/client_java/tree/parent-0.14.1), (The Apache Software License, Version 2.0)
  io.prometheus:simpleclient_httpserver:0.14.1 - Prometheus Java Simpleclient Httpserver (https://github.com/prometheus/client_java/tree/parent-0.14.1), (The Apache Software License, Version 2.0)
  io.prometheus:simpleclient_tracer_common:0.14.1 - Prometheus Java Span Context Supplier - Common (https://github.com/prometheus/client_java/tree/parent-0.14.1), (The Apache Software License, Version 2.0)
  io.prometheus:simpleclient_tracer_otel:0.14.1 - Prometheus Java Span Context Supplier - OpenTelemetry (https://github.com/prometheus/client_java/tree/parent-0.14.1), (The Apache Software License, Version 2.0)
  io.prometheus:simpleclient_tracer_otel_agent:0.14.1 - Prometheus Java Span Context Supplier - OpenTelemetry Agent (https://github.com/prometheus/client_java/tree/parent-0.14.1), (The Apache Software License, Version 2.0)
  org.yaml:snakeyaml:1.30 - SnakeYAML (https://bitbucket.org/snakeyaml/snakeyaml/src/snakeyaml-1.30/), (Apache License, Version 2.0)
  org.xerial.snappy:snappy-java:1.1.8.4 - snappy-java (https://github.com/xerial/snappy-java), (Apache-2.0)
  org.springframework.boot:spring-boot:2.6.6 - spring-boot (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-autoconfigure:2.6.6 - spring-boot-autoconfigure (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-configuration-processor:2.6.6 - spring-boot-configuration-processor (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter:2.6.6 - spring-boot-starter (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-aop:2.6.6 - spring-boot-starter-aop (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-cache:2.6.6 - spring-boot-starter-cache (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-jdbc:2.6.6 - spring-boot-starter-jdbc (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-json:2.6.6 - spring-boot-starter-json (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-log4j2:2.6.6 - spring-boot-starter-log4j2 (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-tomcat:2.6.6 - spring-boot-starter-tomcat (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-validation:2.6.6 - spring-boot-starter-validation (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  org.springframework.boot:spring-boot-starter-web:2.6.6 - spring-boot-starter-web (https://spring.io/projects/spring-boot), (Apache License, Version 2.0)
  io.springfox:springfox-bean-validators:3.0.0 - springfox-bean-validators (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-boot-starter:3.0.0 - springfox-boot-starter (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-core:3.0.0 - springfox-core (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-data-rest:3.0.0 - springfox-data-rest (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-oas:3.0.0 - springfox-oas (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-schema:3.0.0 - springfox-schema (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-spi:3.0.0 - springfox-spi (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-spring-web:3.0.0 - springfox-spring-web (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-spring-webflux:3.0.0 - springfox-spring-webflux (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-spring-webmvc:3.0.0 - springfox-spring-webmvc (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-swagger2:3.0.0  - springfox-swagger2 (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.springfox:springfox-swagger-common:3.0.0 - springfox-swagger-common (https://github.com/springfox/springfox/tree/3.0.0), (The Apache Software License, Version 2.0)
  io.swagger:swagger-annotations:1.6.2 - swagger-annotations (https://github.com/swagger-api/swagger-core/tree/v1.6.2/modules/swagger-annotations), (Apache License 2.0)
  io.swagger.core.v3:swagger-annotations:2.1.2 - swagger-annotations (https://github.com/swagger-api/swagger-core/tree/v2.1.2/modules/swagger-annotations), (Apache License 2.0)
  io.swagger:swagger-core:1.5.22 - swagger-core (https://github.com/swagger-api/swagger-core/tree/v1.5.22/modules/swagger-core), (Apache License 2.0)
  io.swagger:swagger-models:1.5.22 - swagger-models (https://github.com/swagger-api/swagger-core/tree/v1.5.22/modules/swagger-models), (Apache License 2.0)
  io.swagger.core.v3:swagger-models:2.1.2 - swagger-models (https://github.com/swagger-api/swagger-core/tree/v2.1.2/modules/swagger-models), (Apache License 2.0)
  com.tdunning:t-digest:3.2 - T-Digest (https://github.com/tdunning/t-digest/tree/t-digest-3.2), (The Apache Software License, Version 2.0)
  co.cask.tephra:tephra-api:0.6.0 - Tephra API (https://github.com/cdapio/tephra/tree/v0.6.0/tephra-api), (The Apache Software License, Version 2.0)
  co.cask.tephra:tephra-core:0.6.0 - Tephra Core (https://github.com/cdapio/tephra/tree/v0.6.0/tephra-core), (The Apache Software License, Version 2.0)
  org.apache.tomcat.embed:tomcat-embed-el:9.0.60 - tomcat-embed-el (https://tomcat.apache.org/), (Apache License, Version 2.0)
  org.apache.tomcat.embed:tomcat-embed-websocket:9.0.60 - tomcat-embed-websocket (https://tomcat.apache.org/), (Apache License, Version 2.0)
  org.apache.twill:twill-api:0.6.0-incubating - Apache Twill API (https://twill.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.twill:twill-common:0.6.0-incubating - Apache Twill common library (https://twill.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.twill:twill-core:0.6.0-incubating - Apache Twill core library (https://twill.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.twill:twill-discovery-api:0.6.0-incubating - Apache Twill discovery service API (https://twill.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.twill:twill-discovery-core:0.6.0-incubating - Apache Twill discovery service implementations (https://twill.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.twill:twill-zookeeper:0.6.0-incubating - Apache Twill ZooKeeper client library (https://twill.apache.org/), (The Apache Software License, Version 2.0)
  com.fasterxml.woodstox:woodstox-core:5.0.3 - Woodstox (https://github.com/FasterXML/woodstox/tree/woodstox-core-5.0.3), (The Apache License, Version 2.0)
  xerces:xercesImpl:2.12.0 - Xerces2 Java Parser (http://xerces.apache.org/xerces2-j), (The Apache License, Version 2.0)
  xml-apis:xml-apis:1.4.01 - XML Commons External Components XML APIs (http://xml.apache.org/commons/components/external/), (The Apache Software License, Version 2.0), (Apache 2.0, The SAX License, The W3C License)
  org.apache.zookeeper:zookeeper:3.6.3 - Apache ZooKeeper - Server (https://github.com/apache/zookeeper/tree/release-3.6.3/zookeeper-server), (Apache License, Version 2.0)
  org.apache.zookeeper:zookeeper-jute:3.6.3 - Apache ZooKeeper - Jute (https://github.com/apache/zookeeper/tree/release-3.6.3/zookeeper-jute), (Apache License, Version 2.0)


========================================================================
Apache 2.0 License
========================================================================
The following components are provided under the Apache License. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  com.typesafe.akka:akka-actor_2.11:2.5.21 - akka-actor (https://github.com/akka/akka/tree/v2.5.21), (Apache License, Version 2.0)
  com.typesafe.akka:akka-protobuf_2.11:2.5.21 - akka-protobuf (https://github.com/akka/akka/tree/v2.5.21), (Apache License, Version 2.0)
  com.typesafe.akka:akka-slf4j_2.11:2.5.21 - akka-slf4j (https://github.com/akka/akka/tree/v2.5.21), (Apache License, Version 2.0)
  com.typesafe.akka:akka-stream_2.11:2.5.21 - akka-stream (https://github.com/akka/akka/tree/v2.5.21), (Apache License, Version 2.0)
  org.apache.ant:ant:1.9.1 - Apache Ant Core (http://ant.apache.org/), (The Apache Software License, Version 2.0)
  org.apache.ant:ant-launcher:1.9.1 - Apache Ant Launcher (http://ant.apache.org/), (The Apache Software License, Version 2.0)
  net.bytebuddy:byte-buddy:1.12.9 - Byte Buddy (without dependencies) (https://github.com/raphw/byte-buddy/tree/byte-buddy-1.12.9), (Apache License, Version 2.0)
  com.fasterxml:classmate:1.5.1 - ClassMate (https://github.com/FasterXML/java-classmate), (Apache License, Version 2.0)
  org.apache.commons:commons-math3:3.1.1 - Commons Math (https://commons.apache.org/proper/commons-math/), (The Apache Software License, Version 2.0)
  com.github.spullara.mustache.java:compiler:0.9.3 - compiler (https://github.com/spullara/mustache.java/tree/mustache.java-0.9.3) (Apache License 2.0)
  org.datanucleus:datanucleus-api-jdo:4.2.4 - DataNucleus JDO API plugin (https://github.com/datanucleus/datanucleus-api-jdo/tree/datanucleus-api-jdo-4.2.4), (Apache License 2.0)
  org.datanucleus:datanucleus-core:4.1.17 - DataNucleus Core (https://github.com/datanucleus/datanucleus-core/tree/datanucleus-core-4.1.17), (Apache License 2.0)
  org.datanucleus:datanucleus-rdbms:4.1.19 - DataNucleus RDBMS plugin (https://github.com/datanucleus/datanucleus-rdbms/tree/datanucleus-rdbms-4.1.19), (Apache License 2.0)
  com.vlkan:flatbuffers:1.2.0-3f79e055 - FlatBuffers Java API (https://github.com/vy/flatbuffers), (Apache License (v2.0))
  org.apache.hadoop:hadoop-annotations:2.10.1 - Apache Hadoop Annotations (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-common-project/hadoop-annotations), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-auth:2.10.1 - Apache Hadoop Auth (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-common-project/hadoop-auth), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-common:2.10.1 - Apache Hadoop Common (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-common-project/hadoop-common), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-hdfs:2.10.1 - Apache Hadoop HDFS (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-hdfs-project/hadoop-hdfs), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-hdfs-client:2.10.1 - Apache Hadoop HDFS Client (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-hdfs-project/hadoop-hdfs-client), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-mapreduce-client-core:2.10.1 - Apache Hadoop MapReduce Client Core (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-yarn-api:2.10.1 - Apache Hadoop YARN API (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api), (Apache License, Version 2.0)
  org.apache.hadoop:hadoop-yarn-client:2.10.1 - Apache Hadoop YARN Client (https://github.com/apache/hadoop/tree/branch-2.10.1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client), (Apache License, Version 2.0)
  com.carrotsearch:hppc:0.7.2 - HPPC Collections (https://github.com/carrotsearch/hppc/tree/0.7.2), (The Apache Software License, Version 2.0)
  org.apache.iceberg:iceberg-api:0.13.1 - Apace Iceberg API (https://https://iceberg.apache.org/), (Apache License, Version 2.0)
  org.apache.iceberg:iceberg-bundled-guava:0.13.1 - Apache Iceberg Bundled-guava (https://iceberg.apache.org), (The Apache Software License, Version 2.0)
  org.apache.iceberg:iceberg-common:0.13.1 - Apache Iceberg Common (https://iceberg.apache.org), (The Apache Software License, Version 2.0)
  org.apache.iceberg:iceberg-core:0.13.1 - Apace Iceberg Core (https://https://iceberg.apache.org/), (Apache License, Version 2.0)
  org.apache.iceberg:iceberg-hive-metastore:0.13.1 - Apace Iceberg Hive Metastore (https://https://iceberg.apache.org/), (Apache License, Version 2.0)
  org.codehaus.jackson:jackson-core-asl:1.9.13 - Jackson (https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl/1.9.13), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.2 - Jackson-dataformat-YAML (https://github.com/FasterXML/jackson-dataformat-yaml/tree/jackson-dataformat-yaml-2.13.2), (The Apache Software License, Version 2.0)
  com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.2 - Jackson datatype: JSR310 (https://github.com/FasterXML/jackson-modules-java8/tree/jackson-modules-java8-2.13.2), (The Apache Software License, Version 2.0)
  org.codehaus.jackson:jackson-mapper-asl:1.9.13 - Data Mapper for Jackson (https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl/1.9.13), (The Apache Software License, Version 2.0)
  org.javassist:javassist:3.28.0-GA - Javassist (https://github.com/jboss-javassist/javassist/tree/rel_3_28_0_ga), (Apache License 2.0;  MPL 1.1;  LGPL 2.1)
  com.beust:jcommander:1.78 - jcommander (https://github.com/cbeust/jcommander/tree/1.78), (Apache License, Version 2.0)
  org.mortbay.jetty:jetty:6.1.26 - Jetty Server (http://www.eclipse.org/jetty/jetty-parent/project/modules/jetty), (Apache Software License - Version 2.0;  EPL 1.0)
  org.mortbay.jetty:jetty-sslengine:6.1.26 - Jetty SSLEngine (http://jetty.mortbay.org), (Apache License Version 2)
  org.mortbay.jetty:jetty-util:6.1.26 - Jetty Utilities (http://www.eclipse.org/jetty/jetty-parent/project/jetty-util), (Apache Software License - Version 2.0;  EPL 1.0)
  org.elasticsearch:jna:5.5.0 - Elastic JNA Distribution (https://github.com/java-native-access/jna), (Apache License, Version 2.0)
  net.sf.jpam:jpam:1.1 - JPam (http://jpam.sf.net), (The Apache Software License, Version 2.0)
  org.apache.kafka:kafka-clients:2.4.1 - Apache Kafka (https://kafka.apache.org), (The Apache Software License, Version 2.0)
  org.apache.thrift:libfb303:0.9.3 - Apache Thrift (https://github.com/apache/thrift/tree/0.9.3), (The Apache Software License, Version 2.0)
  org.apache.thrift:libthrift:0.9.3 - Apache Thrift (https://github.com/apache/thrift/tree/0.9.3), (The Apache Software License, Version 2.0)
  com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava - Guava ListenableFuture only (https://github.com/google/guava/listenablefuture), (The Apache Software License, Version 2.0)
  log4j:log4j:1.2.17 - Apache Log4j (http://logging.apache.org/log4j/1.2/), (The Apache Software License, Version 2.0)
  org.apache.logging.log4j:log4j-core:2.17.2 - Apache Log4j Core (https://logging.apache.org/log4j/2.x/log4j-core/), (Apache License, Version 2.0)
  org.apache.lucene:lucene-analyzers-common:7.7.3 - Lucene Common Analyzers (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-backward-codecs:7.7.3 - Lucene Memory (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-core:7.7.3 - Lucene Core (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-grouping:7.7.3 - Lucene Grouping (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-highlighter:7.7.3 - Lucene Highlighter (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-join:7.7.3 - Lucene Join (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-memory:7.7.3 - Lucene Memory (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-misc:7.7.3 - Lucene Miscellaneous (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-queries:7.7.3 - Lucene Queries (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-queryparser:7.7.3 - Lucene QueryParsers (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-sandbox:7.7.3 - Lucene Sandbox (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-spatial:7.7.3 - Lucene Spatial (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-spatial-extras:7.7.3 - Lucene Spatial Extras (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-spatial3d:7.7.3 - Lucene Spatial 3D (http://lucene.apache.org), (Apache 2)
  org.apache.lucene:lucene-suggest:7.7.3 - Lucene Suggest (http://lucene.apache.org), (Apache 2)
  org.mapstruct:mapstruct:1.3.1.Final - MapStruct Core (https://github.com/mapstruct/mapstruct/tree/1.3.1.Final), (The Apache Software License, Version 2.0)
  org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3 - mybatis-spring-boot-autoconfigure (https://github.com/mybatis/spring-boot-starter/tree/mybatis-spring-boot-2.1.3/mybatis-spring-boot-autoconfigure), (The Apache Software License, Version 2.0)
  org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3 - mybatis-spring-boot-starter (https://github.com/mybatis/spring-boot-starter/tree/mybatis-spring-boot-2.1.3/mybatis-spring-boot-starter), (The Apache Software License, Version 2.0)
  org.apache.parquet:parquet-hadoop-bundle:1.10.0 - Apache Parquet Hadoop Bundle (https://parquet.apache.org), (The Apache Software License, Version 2.0)
  org.apache.pulsar:pulsar-client:2.8.1 - Pulsar Client Java (https://github.com/apache/pulsar/tree/v2.8.1), (Apache License, Version 2.0)
  org.roaringbitmap:RoaringBitmap:0.9.22 - org.roaringbitmap:RoaringBitmap (https://github.com/RoaringBitmap/RoaringBitmap/tree/0.9.22), (Apache 2)
  org.roaringbitmap:shims:0.9.22 - org.roaringbitmap:shims (https://github.com/RoaringBitmap/RoaringBitmap/tree/0.9.22/shims), (Apache 2)
  org.springframework:spring-aop:5.3.18 - Spring AOP (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-beans:5.3.20 - Spring Beans (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-context:5.3.20 - Spring Context (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-context-support:5.3.18 - Spring Context Support (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-core:5.3.20 - Spring Core (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-expression:5.3.18 - Spring Expression Language (SpEL) (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-jcl:5.3.20 - Spring Commons Logging Bridge (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-jdbc:5.3.20 - Spring JDBC (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework.plugin:spring-plugin-core:2.0.0.RELEASE - Spring Plugin - Core (https://github.com/spring-projects/spring-plugin/tree/2.0.0.RELEASE), (Apache License, Version 2.0)
  org.springframework.plugin:spring-plugin-metadata:2.0.0.RELEASE - Spring Plugin - Metadata Extension (https://github.com/spring-projects/spring-plugin/tree/2.0.0.RELEASE), (Apache License, Version 2.0)
  org.springframework:spring-tx:5.3.20 - Spring Transaction (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-web:5.3.20 - Spring Web (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  org.springframework:spring-webmvc:5.3.18 - Spring Web MVC (https://github.com/spring-projects/spring-framework), (Apache License, Version 2.0)
  com.typesafe:ssl-config-core_2.11:0.3.7 - ssl-config-core (https://github.com/lightbend/ssl-config/tree/v0.3.7), (Apache-2.0)
  org.apache.tomcat.embed:tomcat-embed-core:9.0.60 - tomcat-embed-core (https://tomcat.apache.org/), (Apache License, Version 2.0)

========================================================================
BSD licenses
========================================================================
The following components are provided under BSD license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  org.antlr:antlr-runtime:3.5.2 - ANTLR 3 Runtime (https://github.com/antlr/antlr3/tree/3.5.2), (BSD licence)
  asm:asm:3.1 - ASM Core (https://gitlab.ow2.org/asm/asm/-/tree/ASM_3_1), (BSD)
  org.codehaus.janino:commons-compiler:3.0.11 - Commons Compiler (https://github.com/janino-compiler/janino), (New BSD License)
  org.owasp.encoder:encoder:1.2.2 - Java Encoder (https://github.com/OWASP/owasp-java-encoder/tree/v1.2.2), (The BSD 3-Clause License)
  org.clapper:grizzled-slf4j_2.11:1.3.2 - grizzled-slf4j (https://github.com/bmc/grizzled-slf4j/tree/release-1.3.2), (BSD)
  org.codehaus.janino:janino:3.0.11 - janino (http://janino-compiler.github.io/janino/), (New BSD License)
  javolution:javolution:5.5.1 - Javolution (http://javolution.org), (BSD License)
  jline:jline:2.12 - JLine (https://jline.github.io), (The BSD License)
  com.jcraft:jsch:0.1.55 - JSch (http://www.jcraft.com/jsch/), (Revised BSD)
  com.google.code.findbugs:jsr305:3.0.2 - FindBugs-jsr305 (http://findbugs.sourceforge.net/), (New BSD License)
  com.esotericsoftware.kryo:kryo:2.24.0 - Kryo (https://github.com/EsotericSoftware/kryo/tree/kryo-2.24.0), (New BSD License)
  org.fusesource.leveldbjni:leveldbjni-all:1.8 - leveldbjni-all (https://github.com/fusesource/leveldbjni/tree/leveldbjni-1.8), (The BSD 3-Clause License)
  com.esotericsoftware.minlog:minlog:1.2 - MinLog (https://github.com/EsotericSoftware/minlog/tree/1.2), (New BSD License)
  org.postgresql:postgresql:42.3.4 - PostgreSQL JDBC Driver (https://jdbc.postgresql.org), (BSD-2-Clause)
  com.google.protobuf:protobuf-java:3.19.4 - Protocol Buffers [Core] (https://github.com/protocolbuffers/protobuf/tree/v3.19.4), (3-Clause BSD License)
  org.scala-lang:scala-compiler:2.11.12 - Scala Compiler (http://www.scala-lang.org/), (BSD 3-Clause)
  org.scala-lang.modules:scala-java8-compat_2.11:0.7.0 - scala-java8-compat (https://github.com/scala/scala-java8-compat/tree/v0.7.0), (BSD 3-clause)
  org.scala-lang:scala-library:2.11.12 - Scala Library (http://www.scala-lang.org/), (BSD 3-Clause)
  org.scala-lang.modules:scala-parser-combinators_2.11:1.0.4 - scala-parser-combinators (http://www.scala-lang.org/), (BSD 3-clause)
  org.scala-lang:scala-reflect:2.11.12 - Scala Compiler (http://www.scala-lang.org/), (BSD 3-Clause)
  org.scala-lang.modules:scala-xml_2.11:1.0.5 - scala-xml (http://www.scala-lang.org/), (BSD 3-clause)
  sqlline:sqlline:1.3.0 - Sqlline (https://github.com/julianhyde/sqlline/tree/sqlline-1.3.0), (BSD-3-Clause)
  org.codehaus.woodstox:stax2-api:3.1.4 - Stax2 API (https://github.com/FasterXML/stax2-api), (The BSD License)
  xmlenc:xmlenc:0.52 - xmlenc Library (http://xmlenc.sourceforge.net), (The BSD License)
  com.github.luben:zstd-jni:1.4.3-1 - zstd-jni (https://github.com/luben/zstd-jni), (BSD 2-Clause License)


========================================================================
Public Domain License
========================================================================

The following components are provided under Public Domain license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  aopalliance:aopalliance:1.0 - AOP Alliance(http://aopalliance.sourceforge.net), (Public Domain)
  org.hdrhistogram:HdrHistogram:2.1.9 - HdrHistogram (http://hdrhistogram.github.io/HdrHistogram/), (Public Domain, per Creative Commons CC0)
  net.jcip:jcip-annotations:1.0 - "Java Concurrency in Practice" book annotations (http://jcip.net/), (Public Domain)
  org.reactivestreams:reactive-streams:1.0.2 - reactive-streams (http://www.reactive-streams.org/), (CC0)


========================================================================
EPL licenses
========================================================================

The following components are provided under EPL license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  org.aspectj:aspectjweaver:1.9.7 - AspectJ Weaver (https://www.eclipse.org/aspectj/), (Eclipse Public License - v 2.0)
  jakarta.annotation:jakarta.annotation-api:1.3.5 - Jakarta Annotations API (https://projects.eclipse.org/projects/ee4j.ca), (EPL 2.0;  GPL2 w/ CPE)
  jakarta.ws.rs:jakarta.ws.rs-api:2.1.6 - jakarta.ws.rs-api (https://github.com/jakartaee/rest/tree/2.1.6/jaxrs-api), (EPL 2.0;  GPL2 w/ CPE)


========================================================================
MIT licenses
========================================================================

The following components are provided under MIT license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  org.bouncycastle:bcpkix-jdk15on:1.69 - Bouncy Castle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs (https://www.bouncycastle.org/java.html), (MIT License)
  org.bouncycastle:bcprov-ext-jdk15on:1.69 - Bouncy Castle Provider (https://www.bouncycastle.org/java.html), (MIT License)
  org.bouncycastle:bcprov-jdk15on:1.69 - Bouncy Castle Provider (https://www.bouncycastle.org/java.html), (MIT License)
  org.bouncycastle:bcutil-jdk15on:1.69 - Bouncy Castle ASN.1 Extension and Utility APIs (https://www.bouncycastle.org/java.html), (MIT License)
  org.checkerframework:checker-qual:3.12.0 - Checker Qual (https://checkerframework.org), (The MIT License)
  io.github.classgraph:classgraph:4.8.83 - ClassGraph (https://github.com/classgraph/classgraph), (The MIT License (MIT))
  org.jruby.joni:joni:2.1.31 - Joni (https://github.com/jruby/joni/tree/joni-2.1.31), (MIT License)
  net.sf.jopt-simple:jopt-simple:5.0.2 - JOpt Simple (https://github.com/jopt-simple/jopt-simple/tree/jopt-simple-5.0.2), (The MIT License)
  org.slf4j:jul-to-slf4j:1.7.36 - JUL to SLF4J bridge (https://github.com/qos-ch/slf4j/tree/v_1.7.36), (MIT License)
  org.projectlombok:lombok:1.18.22 - Project Lombok (https://projectlombok.org), (The MIT License)
  org.mockito:mockito-core:3.12.4 - (https://github.com/mockito/mockito/tree/v3.12.4), (MIT License)
  com.github.pagehelper:pagehelper:5.3.0 - PageHelper 5 (https://github.com/pagehelper/Mybatis-PageHelper/tree/v5.3.0), (MIT License)
  com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.4.2 - PageHelper Spring Boot AutoConfigure (https://github.com/pagehelper/Mybatis-PageHelper/tree/v3.2.0), (MIT License)
  com.github.pagehelper:pagehelper-spring-boot-starter:1.4.2 - PageHelper Spring Boot Starter (https://github.com/pagehelper/Mybatis-PageHelper/tree/v3.2.0), (MIT License)
  com.github.scopt:scopt_2.11:3.5.0 - scopt (https://github.com/scopt/scopt/tree/v3.5.0), (MIT License)
  org.slf4j:slf4j-api:1.7.36 - SLF4J API Module (http://www.slf4j.org), (MIT License)
  

========================================================================
MPL licenses
========================================================================

The following components are provided under MPL license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  org.jamon:jamon-runtime:2.3.1 - jamon-runtime (https://www.jamon.org/), (Mozilla Public License Version 1.1)


========================================================================
EDL licenses
========================================================================

The following components are provided under EDL license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  jakarta.activation:jakarta.activation-api:1.2.2 - JavaBeans Activation Framework API jar (https://github.com/eclipse-ee4j/jaf/tree/1.2.2/activationapi), (EDL 1.0)
  jakarta.xml.bind:jakarta.xml.bind-api:2.3.3 - jakarta.xml.bind-api (https://github.com/eclipse-ee4j/jaxb-api/tree/2.3.3/jaxb-api), (Eclipse Distribution License - v 1.0)


========================================================================
CDDL licenses
========================================================================

The following components are provided under CDDL license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt.

  com.sun.activation:javax.activation:1.2.0 - JavaBeans Activation Framework (https://github.com/javaee/activation/tree/JAF-1_2_0), (CDDL/GPLv2+CE)
  javax.activation:javax.activation-api:1.2.0 - JavaBeans Activation Framework API jar (http://java.net/all/javax.activation-api/), (CDDL/GPLv2+CE)
  javax.ws.rs:javax.ws.rs-api:2.1 - javax.ws.rs-api (https://github.com/javaee/jax-rs-api/tree/2.1/jaxrs-api), (CDDL 1.1;  GPL2 w/ CPE)
  javax.xml.bind:jaxb-api:2.3.1 - jaxb-api (https://github.com/javaee/jaxb-spec/tree/2.3.1/jaxb-api), (CDDL 1.1;  GPL2 w/ CPE)
  com.sun.jersey:jersey-core:1.9 - jersey-core (https://github.com/javaee/jersey-1.x/tree/post-1.9/jersey-core), (CDDL 1.1;  GPL2 w/ CPE)
  com.sun.jersey:jersey-server:1.9 - jersey-server (https://github.com/javaee/jersey-1.x/tree/post-1.9/jersey-server), (CDDL 1.1;  GPL2 w/ CPE)
  javax.transaction:jta:1.1 - Java Transaction API (https://repo1.maven.org/maven2/javax/transaction/jta/1.1/), (CDDL 1.0)
  javax.transaction:transaction-api:1.1 - transaction-api (https://github.com/javaee/javax.transaction/tree/1.1-rev-1), (CDDL 1.0)

