
                                 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.

------------------------------------------------------------------------------------
The following bundled 3rd party jars are distributed under the
Apache Software License, Version 2.

- lib/com.fasterxml.jackson.core-jackson-annotations-2.11.0.jar [1]
- lib/com.fasterxml.jackson.core-jackson-core-2.11.0.jar [2]
- lib/com.fasterxml.jackson.core-jackson-databind-2.11.0.jar [3]
- lib/com.google.guava-guava-30.0-jre.jar [4]
- lib/com.google.guava-failureaccess-1.0.1.jar [4]
- lib/com.google.guava-listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar [4]
- lib/commons-cli-commons-cli-1.2.jar [5]
- lib/commons-codec-commons-codec-1.6.jar [6]
- lib/commons-configuration-commons-configuration-1.10.jar [7]
- lib/commons-io-commons-io-2.4.jar [8]
- lib/commons-lang-commons-lang-2.6.jar [9]
- lib/commons-logging-commons-logging-1.1.1.jar [10]
- lib/io.netty-netty-buffer-4.1.63.Final.jar [11]
- lib/io.netty-netty-codec-4.1.63.Final.jar [11]
- lib/io.netty-netty-codec-dns-4.1.63.Final.jar [11]
- lib/io.netty-netty-codec-http-4.1.63.Final.jar [11]
- lib/io.netty-netty-codec-http2-4.1.63.Final.jar [11]
- lib/io.netty-netty-codec-socks-4.1.63.Final.jar [11]
- lib/io.netty-netty-common-4.1.63.Final.jar [11]
- lib/io.netty-netty-handler-4.1.63.Final.jar [11]
- lib/io.netty-netty-handler-proxy-4.1.63.Final.jar [11]
- lib/io.netty-netty-resolver-4.1.63.Final.jar [11]
- lib/io.netty-netty-resolver-dns-4.1.63.Final.jar [11]
- lib/io.netty-netty-tcnative-boringssl-static-2.0.38.Final.jar [11]
- lib/io.netty-netty-transport-4.1.63.Final.jar [11]
- lib/io.netty-netty-transport-native-epoll-4.1.63.Final-linux-x86_64.jar [11]
- lib/io.netty-netty-transport-native-unix-common-4.1.63.Final.jar [11]
- lib/io.prometheus-simpleclient-0.8.1.jar [12]
- lib/io.prometheus-simpleclient_common-0.8.1.jar [12]
- lib/io.prometheus-simpleclient_hotspot-0.8.1.jar [12]
- lib/io.prometheus-simpleclient_servlet-0.8.1.jar [12]
- lib/io.vertx-vertx-auth-common-3.9.8.jar [13]
- lib/io.vertx-vertx-bridge-common-3.9.8.jar [14]
- lib/io.vertx-vertx-core-3.9.8.jar [15]
- lib/io.vertx-vertx-web-3.9.8.jar [16]
- lib/io.vertx-vertx-web-common-3.9.8.jar [16]
- lib/log4j-log4j-1.2.17.jar [17]
- lib/net.java.dev.jna-jna-3.2.7.jar [18]
- lib/org.apache.commons-commons-collections4-4.1.jar [19]
- lib/org.apache.commons-commons-lang3-3.6.jar [20]
- lib/org.apache.zookeeper-zookeeper-3.6.2.jar [21]
- lib/org.apache.zookeeper-zookeeper-jute-3.6.2.jar [21]
- lib/org.apache.zookeeper-zookeeper-3.6.2-tests.jar [21]
- lib/org.eclipse.jetty-jetty-http-9.4.33.v20201020.jar [22]
- lib/org.eclipse.jetty-jetty-io-9.4.33.v20201020.jar [22]
- lib/org.eclipse.jetty-jetty-security-9.4.33.v20201020.jar [22]
- lib/org.eclipse.jetty-jetty-server-9.4.33.v20201020.jar [22]
- lib/org.eclipse.jetty-jetty-servlet-9.4.33.v20201020.jar [22]
- lib/org.eclipse.jetty-jetty-util-9.4.33.v20201020.jar [22]
- lib/org.rocksdb-rocksdbjni-6.16.4.jar [23]
- lib/com.beust-jcommander-1.78.jar [24]
- lib/com.yahoo.datasketches-memory-0.8.3.jar [25]
- lib/com.yahoo.datasketches-sketches-core-0.8.3.jar [25]
- lib/net.jpountz.lz4-lz4-1.3.0.jar [26]
- lib/com.google.api.grpc-proto-google-common-protos-1.17.0.jar [28]
- lib/com.google.code.gson-gson-2.8.6.jar [29]
- lib/io.opencensus-opencensus-api-0.24.0.jar [30]
- lib/io.opencensus-opencensus-contrib-http-util-0.24.0.jar [30]
- lib/io.opencensus-opencensus-proto-0.2.0.jar [30]
- lib/io.grpc-grpc-all-1.33.0.jar [33]
- lib/io.grpc-grpc-alts-1.33.0.jar [33]
- lib/io.grpc-grpc-api-1.33.0.jar [33]
- lib/io.grpc-grpc-auth-1.33.0.jar [33]
- lib/io.grpc-grpc-context-1.33.0.jar [33]
- lib/io.grpc-grpc-core-1.33.0.jar [33]
- lib/io.grpc-grpc-grpclb-1.33.0.jar [33]
- lib/io.grpc-grpc-netty-1.33.0.jar [33]
- lib/io.grpc-grpc-protobuf-1.33.0.jar [33]
- lib/io.grpc-grpc-protobuf-lite-1.33.0.jar [33]
- lib/io.grpc-grpc-services-1.33.0.jar [33]
- lib/io.grpc-grpc-stub-1.33.0.jar [33]
- lib/io.grpc-grpc-testing-1.33.0.jar [33]
- lib/io.grpc-grpc-xds-1.33.0.jar [33]
- lib/org.apache.curator-curator-client-5.1.0.jar [34]
- lib/org.apache.curator-curator-framework-5.1.0.jar [34]
- lib/org.apache.curator-curator-recipes-5.1.0.jar [34]
- lib/org.inferred-freebuilder-1.14.9.jar [35]
- lib/com.google.errorprone-error_prone_annotations-2.4.0.jar [36]
- lib/org.apache.yetus-audience-annotations-0.5.0.jar [37]
- lib/org.jctools-jctools-core-2.1.2.jar [38]
- lib/org.apache.httpcomponents-httpclient-4.5.5.jar [39]
- lib/org.apache.httpcomponents-httpcore-4.4.9.jar [40]
- lib/org.apache.thrift-libthrift-0.12.0.jar [41]
- lib/com.google.android-annotations-4.1.1.4.jar [42]
- lib/com.google.http-client-google-http-client-1.34.0.jar [43]
- lib/com.google.http-client-google-http-client-jackson2-1.34.0.jar [43]
- lib/com.google.auto.value-auto-value-annotations-1.7.jar [44]
- lib/com.google.j2objc-j2objc-annotations-1.3.jar [45]
- lib/com.google.re2j-re2j-1.2.jar [46]
- lib/io.dropwizard.metrics-metrics-core-3.2.5.jar [47]
- lib/io.perfmark-perfmark-api-0.19.0.jar [48]
- lib/org.conscrypt-conscrypt-openjdk-uber-2.5.1.jar [49]
- lib/org.xerial.snappy-snappy-java-1.1.7.jar [50]

[1] Source available at https://github.com/FasterXML/jackson-annotations/tree/jackson-annotations-2.11.0
[2] Source available at https://github.com/FasterXML/jackson-core/tree/jackson-core-2.11.0
[3] Source available at https://github.com/FasterXML/jackson-databind/tree/jackson-databind-2.11.0
[4] Source available at https://github.com/google/guava/tree/v30.0
[5] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-cli.git;a=tag;h=bc8f0e
[6] Source available at http://svn.apache.org/viewvc/commons/proper/codec/tags/1_6/
[7] Source available at http://svn.apache.org/viewvc/commons/proper/configuration/tags/CONFIGURATION_1_10/
[8] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-io.git;a=tag;h=603579
[9] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=tag;h=375459
[10] Source available at http://svn.apache.org/viewvc/commons/proper/logging/tags/commons-logging-1.1.1/
[11] Source available at https://github.com/netty/netty/tree/netty-4.1.63.Final
[12] Source available at https://github.com/prometheus/client_java/tree/parent-0.8.1
[13] Source available at https://github.com/vert-x3/vertx-auth/tree/3.9.8
[14] Source available at https://github.com/vert-x3/vertx-bridge-common/tree/3.9.8
[15] Source available at https://github.com/eclipse/vert.x/tree/3.9.8
[16] Source available at https://github.com/vert-x3/vertx-web/tree/3.9.8
[17] Source available at http://logging.apache.org/log4j/1.2/download.html
[18] Source available at https://github.com/java-native-access/jna/tree/3.2.7
[19] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-collections.git;a=tag;h=a3a5ad
[20] Source available at https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=shortlog;h=refs/tags/LANG_3_6
[21] Source available at https://github.com/apache/zookeeper/tree/release-3.6.2
[22] Source available at https://github.com/eclipse/jetty.project/tree/jetty-9.4.33.v20201020
[23] Source available at https://github.com/facebook/rocksdb/tree/v6.16.4
[24] Source available at https://github.com/cbeust/jcommander/tree/1.78
[25] Source available at https://github.com/DataSketches/sketches-core/tree/sketches-0.8.3
[26] Source available at https://github.com/lz4/lz4-java/tree/1.3.0
[28] Source available at https://github.com/googleapis/googleapis
[29] Source available at https://github.com/google/gson/tree/gson-parent-2.8.6
[30] Source available at https://github.com/census-instrumentation/opencensus-java/tree/v0.24.0
[33] Source available at https://github.com/grpc/grpc-java/tree/v1.33.0
[34] Source available at https://github.com/apache/curator/releases/tag/apache.curator-5.1.0
[35] Source available at https://github.com/inferred/FreeBuilder/tree/v1.14.9
[36] Source available at https://github.com/google/error-prone/tree/v2.4.0
[37] Source available at https://github.com/apache/yetus/tree/rel/0.5.0
[38] Source available at https://github.com/JCTools/JCTools/tree/v2.1.2
[39] Source available at https://github.com/apache/httpcomponents-client/tree/rel/v4.4.1
[40] Source available at https://github.com/apache/httpcomponents-core/tree/rel/v4.4.1
[41] Source available at https://github.com/apache/thrift/tree/0.12.0
[42] Source available at https://source.android.com/
[43] Source available at https://github.com/googleapis/google-http-java-client/releases/tag/v1.34.0
[44] Source available at https://github.com/google/auto/releases/tag/auto-value-1.7
[45] Source available at https://github.com/google/j2objc/releases/tag/1.3
[46] Source available at https://github.com/google/re2j/releases/tag/re2j-1.2
[47] Source available at https://github.com/dropwizard/metrics/releases/tag/v3.2.5
[48] Source available at https://github.com/perfmark/perfmark/releases/tag/v0.19.0
[49] Source available at https://github.com/google/conscrypt/releases/tag/2.5.1
[50] Source available at https://github.com/google/snappy/releases/tag/1.1.7

------------------------------------------------------------------------------------
lib/io.netty-netty-codec-4.1.63.Final.jar bundles some 3rd party dependencies

lib/io.netty-netty-codec-4.1.63.Final.jar 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:
    * deps/netty-4.1.63.Final/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/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified version of Robert Harder's Public Domain
Base64 Encoder and Decoder, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.base64.txt (Public Domain)
  * HOMEPAGE:
    * http://iharder.sourceforge.net/current/java/base64/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of 'Webbit', an event based
WebSocket and HTTP server, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.webbit.txt (BSD License)
  * HOMEPAGE:
    * https://github.com/joewalnes/webbit

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of 'SLF4J', a simple logging
facade for Java, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.slf4j.txt (MIT License)
  * HOMEPAGE:
    * http://www.slf4j.org/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of 'Apache Harmony', an open source
Java SE, which can be obtained at:

  * NOTICE:
    * deps/netty-4.1.63.Final/NOTICE.harmony.txt
  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.harmony.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://archive.apache.org/dist/harmony/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of 'jbzip2', a Java bzip2 compression
and decompression library written by Matthew J. Francis. It can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.jbzip2.txt (MIT License)
  * HOMEPAGE:
    * https://code.google.com/p/jbzip2/

lib/io.netty-netty-codec-4.1.63.Final.jar 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:
    * deps/netty-4.1.63.Final/LICENSE.libdivsufsort.txt (MIT License)
  * HOMEPAGE:
    * https://github.com/y-256/libdivsufsort

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of Nitsan Wakart's 'JCTools',
Java Concurrency Tools for the JVM, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.jctools.txt (ASL2 License)
  * HOMEPAGE:
    * https://github.com/JCTools/JCTools

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'JZlib', a re-implementation of zlib in
pure Java, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.jzlib.txt (BSD style License)
  * HOMEPAGE:
    * http://www.jcraft.com/jzlib/

lib/io.netty-netty-codec-4.1.63.Final.jar 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:
    * deps/netty-4.1.63.Final/LICENSE.compress-lzf.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/ning/compress

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'lz4', a LZ4 Java compression
and decompression library written by Adrien Grand. It can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.lz4.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/jpountz/lz4-java

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'lzma-java', a LZMA Java compression
and decompression library, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.lzma-java.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/jponge/lzma-java

lib/io.netty-netty-codec-4.1.63.Final.jar 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:
    * deps/netty-4.1.63.Final/LICENSE.jfastlz.txt (MIT License)
  * HOMEPAGE:
    * https://code.google.com/p/jfastlz/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of and optionally depends on 'Protocol Buffers',
Google's data interchange format, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.protobuf.txt (New BSD License)
  * HOMEPAGE:
    * https://github.com/google/protobuf

lib/io.netty-netty-codec-4.1.63.Final.jar 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:
    * deps/netty-4.1.63.Final/LICENSE.bouncycastle.txt (MIT License)
  * HOMEPAGE:
    * http://www.bouncycastle.org/

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'Snappy', a compression library produced
by Google Inc, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.snappy.txt (New BSD License)
  * HOMEPAGE:
    * https://github.com/google/snappy

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'JBoss Marshalling', an alternative Java
serialization API, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.jboss-marshalling.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/jboss-remoting/jboss-marshalling

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'Caliper', Google's micro-
benchmarking framework, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.caliper.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/google/caliper

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'Apache Commons Logging', a logging
framework, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.commons-logging.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://commons.apache.org/logging/

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'Apache Log4J', a logging framework, which
can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.log4j.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://logging.apache.org/log4j/

lib/io.netty-netty-codec-4.1.63.Final.jar optionally depends on 'Aalto XML', an ultra-high performance
non-blocking XML processor, which can be obtained at:

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

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified version of 'HPACK', a Java implementation of
the HTTP/2 HPACK algorithm written by Twitter. It can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.hpack.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/twitter/hpack

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified version of 'HPACK', a Java implementation of
the HTTP/2 HPACK algorithm written by Cory Benfield. It can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.hyper-hpack.txt (MIT License)
  * HOMEPAGE:
    * https://github.com/python-hyper/hpack/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified version of 'HPACK', a Java implementation of
the HTTP/2 HPACK algorithm written by Tatsuhiro Tsujikawa. It can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.nghttp2-hpack.txt (MIT License)
  * HOMEPAGE:
    * https://github.com/nghttp2/nghttp2/

lib/io.netty-netty-codec-4.1.63.Final.jar contains a modified portion of 'Apache Commons Lang', a Java library
provides utilities for the java.lang API, which can be obtained at:

  * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.commons-lang.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://commons.apache.org/proper/commons-lang/


lib/io.netty-netty-codec-4.1.63.Final.jar 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:
    * deps/netty-4.1.63.Final/LICENSE.mvn-wrapper.txt (Apache License 2.0)
  * HOMEPAGE:
    * https://github.com/takari/maven-wrapper

lib/io.netty-netty-codec-4.1.63.Final.jar contains the dnsinfo.h header file,
that provides a way to retrieve the system DNS configuration on MacOS.
This private header is also used by Apple's open source
 mDNSResponder (https://opensource.apple.com/tarballs/mDNSResponder/).

 * LICENSE:
    * deps/netty-4.1.63.Final/LICENSE.dnsinfo.txt (Apache License 2.0)
  * HOMEPAGE:
    * http://www.opensource.apple.com/source/configd/configd-453.19/dnsinfo/dnsinfo.h

------------------------------------------------------------------------------------
lib/org.rocksdb-rocksdbjni-6.16.4.jar is derived from leveldb, which is under the following license.

Copyright (c) 2011 The LevelDB Authors. 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 Google Inc. 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
OWNER 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.

------------------------------------------------------------------------------------
This product bundles Google Protocol Buffers, which is available under a "3-clause BSD"
license.

Bundled as
  - lib/com.google.protobuf-protobuf-java-3.14.0.jar
Source available at https://github.com/google/protobuf/tree/v3.14.0
For details, see deps/protobuf-3.14.0/LICENSE.

Bundled as
  - lib/com.google.protobuf-protobuf-java-util-3.12.0.jar
Source available at https://github.com/protocolbuffers/protobuf/tree/v3.12.0
For details, see deps/protobuf-3.12.0/LICENSE.
------------------------------------------------------------------------------------
This product bundles the JCP Standard Java Servlet API, which is available under a
CDDL 1.1 license. For details, see deps/javax.servlet-api-4.0.0/CDDL+GPL-1.1.

Bundled as lib/javax.servlet-javax.servlet-api-4.0.0.jar
Source available at https://github.com/javaee/servlet-spec/tree/4.0.0
------------------------------------------------------------------------------------
This product bundles Simple Logging Facade for Java, which is available under a
MIT license. For details, see deps/slf4j-1.7.25/LICENSE.txt.

Bundled as
  - lib/org.slf4j-slf4j-api-1.7.25.jar
  - lib/org.slf4j-slf4j-log4j12-1.7.25.jar
Source available at https://github.com/qos-ch/slf4j/tree/v_1.7.25
------------------------------------------------------------------------------------
This product bundles the Google Auth Library, which is available under a "3-clause BSD"
license. For details, see deps/google-auth-library-credentials-0.20.0/LICENSE

Bundled as
  - lib/com.google.auth-google-auth-library-credentials-0.20.0.jar
  - lib/com.google.auth-google-auth-library-oauth2-http-0.20.0.jar
Source available at https://github.com/googleapis/google-auth-library-java/releases/tag/v0.20.0
------------------------------------------------------------------------------------
This product bundles the bouncycastle Library.
For license details, see deps/bouncycastle-1.0.2/LICENSE.html

Bundled as
  - lib/org.bouncycastle-bc-fips-1.0.2.jar
------------------------------------------------------------------------------------
This product uses the annotations from The Checker Framework, which are licensed under
MIT License. For details, see deps/checker-qual-3.5.0/LICENSE

Bundles as
  - lib/org.checkerframework-checker-qual-3.5.0.jar
