Apache InLong
Copyright 2019-2022 The Apache Software Foundation.

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

The initial codebase was donated to the ASF by Tencent, copyright 2012-2019.

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

Apache HBase
Copyright 2007-2020 The Apache Software Foundation

Apache Avro
Copyright 2010-2019 The Apache Software Foundation

Apache Pulsar
Copyright 2017-2019 The Apache Software Foundation

flink-cdc-connectors
Copyright 2022 Ververica Inc.
Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.

Apache Flink
Copyright 2014-2021 The Apache Software Foundation



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

Apache Ant Core NOTICE
------------------------------------------------------
Apache Ant Launcher NOTICE
========================================================================

   Apache Ant
   Copyright 1999-2013 The Apache Software Foundation

   The <sync> task is based on code Copyright (c) 2002, Landmark
   Graphics Corp that has been kindly donated to the Apache Software
   Foundation.



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

ApacheDS I18n NOTICE
========================================================================

ApacheDS I18n
Copyright 2003-2013 The Apache Software Foundation

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



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

ApacheDS Protocol Kerberos Codec NOTICE
========================================================================

ApacheDS Protocol Kerberos Codec
Copyright 2003-2013 The Apache Software Foundation

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



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

Apache Directory API ASN.1 API NOTICE
========================================================================

Apache Directory API ASN.1 API
Copyright 2003-2013 The Apache Software Foundation

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



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

Apache Directory LDAP API Utilities NOTICE
========================================================================

Apache Directory LDAP API Utilities
Copyright 2003-2013 The Apache Software Foundation

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



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

Arrow Format NOTICE
========================================================================

Arrow Format
Copyright 2017 The Apache Software Foundation

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



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

Arrow Memory NOTICE
========================================================================

Arrow Memory
Copyright 2017 The Apache Software Foundation

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



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

Arrow Vectors NOTICE
========================================================================

Arrow Vectors
Copyright 2017 The Apache Software Foundation

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



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

Apache Yetus - Audience Annotations NOTICE
========================================================================

Apache Yetus - Audience Annotations
Copyright 2015-2017 The Apache Software Foundation

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



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

Apache Avro NOTICE
========================================================================

Apache Avro
Copyright 2009-2020 The Apache Software Foundation

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



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

Apache Avro IPC NOTICE
========================================================================

Apache Avro IPC
Copyright 2009-2020 The Apache Software Foundation

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



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

Apache Pulsar :: Bouncy Castle :: BC NOTICE
========================================================================

Apache Pulsar :: Bouncy Castle :: BC
Copyright 2017-2020 Apache Software Foundation

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



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

Apache Commons BeanUtils NOTICE
========================================================================

Apache Commons BeanUtils
Copyright 2000-2019 The Apache Software Foundation

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



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

Apache Commons CLI NOTICE
========================================================================

Apache Commons CLI
Copyright 2001-2017 The Apache Software Foundation

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



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

Apache Commons Codec NOTICE
========================================================================

Apache Commons Codec
Copyright 2002-2020 The Apache Software Foundation

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

src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java
contains test data from http://aspell.net/test/orig/batch0.tab.
Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org)

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

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



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

Apache Commons Collections NOTICE
========================================================================

Apache Commons Collections
Copyright 2001-2015 The Apache Software Foundation

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



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

Apache Commons Compress NOTICE
========================================================================

Apache Commons Compress
Copyright 2002-2019 The Apache Software Foundation

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

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

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



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

Commons Configuration NOTICE
========================================================================

Apache Commons Configuration
Copyright 2001-2008 The Apache Software Foundation

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



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

Commons Daemon NOTICE
========================================================================

Apache Commons Daemon
Copyright 1999-2013 The Apache Software Foundation

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



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

Apache Commons DBCP NOTICE
========================================================================

Apache Commons DBCP
Copyright 2001-2010 The Apache Software Foundation

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



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

Digester NOTICE
========================================================================

Apache Jakarta Commons Digester
Copyright 2001-2006 The Apache Software Foundation

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



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

Apache Commons IO NOTICE
========================================================================

Apache Commons IO
Copyright 2002-2021 The Apache Software Foundation

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



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

Commons Lang NOTICE
========================================================================

Apache Commons Lang
Copyright 2001-2011 The Apache Software Foundation

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



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

Apache Commons Lang3 NOTICE
========================================================================

Apache Commons Lang
Copyright 2001-2020 The Apache Software Foundation

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



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

Commons Logging NOTICE
========================================================================

Apache Commons Logging
Copyright 2003-2013 The Apache Software Foundation

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



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

Commons Net NOTICE
========================================================================

Apache Commons Net
Copyright 2001-2012 The Apache Software Foundation

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



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

Commons Pool NOTICE
========================================================================

Apache Commons Pool
Copyright 1999-2009 The Apache Software Foundation

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


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

Curator Client NOTICE
========================================================================

Curator Client
Copyright 2011-2018 The Apache Software Foundation

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



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

Curator Framework NOTICE
========================================================================

Curator Framework
Copyright 2011-2017 The Apache Software Foundation

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



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

Curator Recipes NOTICE
========================================================================

Curator Recipes
Copyright 2011-2017 The Apache Software Foundation

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



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

Hadoop Metrics2 Reporter for Dropwizard Metrics NOTICE
========================================================================

Copyright 2016 Josh Elser



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

Ehcache NOTICE
========================================================================

Ehcache V3
Copyright 2014-2016 Terracotta, Inc.

The product includes software from the Apache Commons Lang project,
under the Apache License 2.0 (see: org.ehcache.impl.internal.classes.commonslang)



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

server NOTICE
------------------------------------------------------
cli NOTICE
------------------------------------------------------
core NOTICE
------------------------------------------------------
rest NOTICE
------------------------------------------------------
rest-high-level NOTICE
------------------------------------------------------
secure-sm NOTICE
------------------------------------------------------
x-content NOTICE
------------------------------------------------------
lang-mustache NOTICE
------------------------------------------------------
parent-join NOTICE
------------------------------------------------------
rank-eval NOTICE
========================================================================

Elasticsearch
Copyright 2009-2018 Elasticsearch

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



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

fastjson NOTICE
========================================================================

/*
 * Copyright 1999-2017 Alibaba Group.
 *
 * 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.
 */



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

Flume NG file-based channel NOTICE
========================================================================

Flume NG file-based channel
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG HDFS Sink NOTICE
========================================================================

Flume NG HDFS Sink
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG IRC Sink NOTICE
========================================================================

Flume NG IRC Sink
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG JDBC channel NOTICE
========================================================================

Flume NG JDBC channel
Copyright 2009-2018 Apache Software Foundation

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



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

Flume Auth NOTICE
========================================================================

Flume Auth
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG Config Filters API NOTICE
========================================================================

Flume NG Config Filters API
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG Configuration NOTICE
========================================================================

Flume NG Configuration
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG Core NOTICE
========================================================================

Flume NG Core
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG Node NOTICE
========================================================================

Flume NG Node
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG SDK NOTICE
========================================================================

Flume NG SDK
Copyright 2009-2018 Apache Software Foundation

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



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

Flume NG Spillable Memory channel NOTICE
========================================================================

Flume NG Spillable Memory channel
Copyright 2009-2018 Apache Software Foundation

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



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

Apache Geronimo JCache Spec 1.0 NOTICE
========================================================================

Apache Geronimo JCache Spec 1.0
Copyright 2003-2014 The Apache Software Foundation

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



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

Google Guice - Core Library NOTICE
========================================================================

Google Guice - Core Library
Copyright 2006-2011 Google, Inc.

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



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

Google Guice - Extensions - Servlet NOTICE
========================================================================

Google Guice - Extensions - Servlet
Copyright 2006-2015 Google, Inc.

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



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

Hive Classifications NOTICE
========================================================================

Hive Classifications
Copyright 2019 The Apache Software Foundation

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



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

Hive Common NOTICE
========================================================================

Hive Common
Copyright 2019 The Apache Software Foundation

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



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

Hive JDBC NOTICE
========================================================================

Hive JDBC
Copyright 2019 The Apache Software Foundation

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



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

Hive Llap Client NOTICE
========================================================================

Hive Llap Client
Copyright 2019 The Apache Software Foundation

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



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

Hive Llap Common NOTICE
========================================================================

Hive Llap Common
Copyright 2019 The Apache Software Foundation

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



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

Hive Llap Server NOTICE
========================================================================

Hive Llap Server
Copyright 2019 The Apache Software Foundation

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



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

Hive Llap Tez NOTICE
========================================================================

Hive Llap Tez
Copyright 2019 The Apache Software Foundation

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



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

Hive Serde NOTICE
========================================================================

Hive Serde
Copyright 2019 The Apache Software Foundation

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



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

Hive Service NOTICE
========================================================================

Hive Service
Copyright 2019 The Apache Software Foundation

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



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

Hive Service RPC NOTICE
========================================================================

Hive Service RPC
Copyright 2019 The Apache Software Foundation

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



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

Hive Shims NOTICE
========================================================================

Hive Shims
Copyright 2019 The Apache Software Foundation

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



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

Hive Storage API NOTICE
========================================================================

Hive Storage API
Copyright 2018 The Apache Software Foundation

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



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

Hive Upgrade Acid NOTICE
========================================================================

Hive Upgrade Acid
Copyright 2019 The Apache Software Foundation

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



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

Hive Shims 0.23 NOTICE
========================================================================

Hive Shims 0.23
Copyright 2019 The Apache Software Foundation

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



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

Hive Shims Common NOTICE
========================================================================

Hive Shims Common
Copyright 2019 The Apache Software Foundation

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



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

Hive Shims Scheduler NOTICE
========================================================================

Hive Shims Scheduler
Copyright 2019 The Apache Software Foundation

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



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

HPPC Collections NOTICE
========================================================================

ACKNOWLEDGEMENT
===============

HPPC borrowed code, ideas or both from:

 * Apache Lucene, http://lucene.apache.org/
   (Apache license)
 * Fastutil, http://fastutil.di.unimi.it/
   (Apache license)
 * Koloboke, https://github.com/OpenHFT/Koloboke
   (Apache license)



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

htrace-core4 NOTICE
========================================================================

htrace-core4
Copyright 2016 The Apache Software Foundation

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



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

Apache HttpAsyncClient NOTICE
========================================================================

Apache HttpAsyncClient
Copyright 2010-2016 The Apache Software Foundation

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



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

Apache HttpClient NOTICE
========================================================================

Apache HttpClient
Copyright 1999-2020 The Apache Software Foundation

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



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

Apache HttpCore NOTICE
========================================================================

Apache HttpCore
Copyright 2005-2020 The Apache Software Foundation

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



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

Apache HttpCore NIO NOTICE
========================================================================

Apache HttpCore NIO
Copyright 2005-2016 The Apache Software Foundation

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



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

Jackson-core NOTICE
------------------------------------------------------
jackson-databind NOTICE
========================================================================

# Jackson JSON processor

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

## Licensing

Jackson 2.x core and extension components are licensed under Apache License 2.0
To find the details that apply to this artifact see the accompanying LICENSE file.

## Credits

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



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

Jackson NOTICE
------------------------------------------------------
JAX-RS provider for JSON content type NOTICE
------------------------------------------------------
Data Mapper for Jackson NOTICE
------------------------------------------------------
Xml Compatibility extensions for Jackson NOTICE
========================================================================

This product currently only contains code developed by authors
of specific components, as identified by the source code files;
if such notes are missing files have been created by
Tatu Saloranta.

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



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

Jackson-dataformat-YAML NOTICE
------------------------------------------------------
Jackson-JAXRS-JSON NOTICE
------------------------------------------------------
Jackson-module-JAXB-annotations NOTICE
========================================================================

# Jackson JSON processor

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

## Licensing

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

## Credits

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



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

An open source Java toolkit for Amazon S3 NOTICE
========================================================================

   =========================================================================
   ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
   ==  Version 2.0, in this case for the distribution of jets3t.          ==
   =========================================================================

   This product includes software developed by:

   The Apache Software Foundation (http://www.apache.org/).
   
   The ExoLab Project (http://www.exolab.org/)

   Sun Microsystems (http://www.sun.com/)
   
   Codehaus (http://castor.codehaus.org)
   
   Tatu Saloranta (http://wiki.fasterxml.com/TatuSaloranta)



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

Joda-Time NOTICE
========================================================================

=============================================================================
= NOTICE file corresponding to section 4d of the Apache License Version 2.0 =
=============================================================================
This product includes software developed by
Joda.org (http://www.joda.org/).



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

Open JSON NOTICE
========================================================================

Android JSON library
Copyright (C) 2010 The Android Open Source Project

This product includes software developed by
The Android Open Source Project



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

Apache Kafka NOTICE
========================================================================

Apache Kafka
Copyright 2020 The Apache Software Foundation.

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

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



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

Apache Thrift  NOTICE
========================================================================

Apache Thrift
Copyright 2006-2010 The Apache Software Foundation.

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



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

Apache Log4j NOTICE
========================================================================

Apache log4j
Copyright 2007 The Apache Software Foundation

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



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

Apache Log4j API NOTICE
========================================================================

Apache Log4j API
Copyright 1999-2022 The Apache Software Foundation

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



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

Apache Log4j Core NOTICE
========================================================================

Apache Log4j Core
Copyright 1999-2012 Apache Software Foundation

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

ResolverUtil.java
Copyright 2005-2006 Tim Fennell



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

Apache Log4j SLF4J Binding NOTICE
========================================================================

Apache Log4j SLF4J Binding
Copyright 1999-2022 The Apache Software Foundation

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



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

Metrics Core NOTICE
------------------------------------------------------
Jackson Integration for Metrics NOTICE
------------------------------------------------------
JVM Integration for Metrics NOTICE
========================================================================

Metrics
Copyright 2010-2013 Coda Hale and Yammer, Inc.

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

This product includes code derived from the JSR-166 project (ThreadLocalRandom, Striped64,
LongAdder), which was released with the following comments:

    Written by Doug Lea with assistance from members of JCP JSR-166
    Expert Group and released to the public domain, as explained at
    http://creativecommons.org/publicdomain/zero/1.0/



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

Apache MINA Core NOTICE
========================================================================

Apache MINA Core
Copyright 2004-2011 Apache MINA Project

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



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

ORC Core NOTICE
========================================================================

ORC Core
Copyright 2013-2019 The Apache Software Foundation

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



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

ORC Shims NOTICE
========================================================================

ORC Shims
Copyright 2013-2019 The Apache Software Foundation

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



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

Apache Parquet Hadoop Bundle NOTICE
========================================================================

Apache Parquet Format
Copyright 2017 The Apache Software Foundation

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



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

Pulsar Client Java NOTICE
========================================================================

Pulsar Client Java
Copyright 2017-2020 Apache Software Foundation

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



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

Pulsar Client Admin :: API NOTICE
========================================================================

Pulsar Client Admin :: API
Copyright 2017-2020 Apache Software Foundation

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



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

Pulsar Client :: API NOTICE
========================================================================

Pulsar Client :: API
Copyright 2017-2020 Apache Software Foundation

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



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

Prometheus Java Simpleclient NOTICE
------------------------------------------------------
Prometheus Java Simpleclient Common NOTICE
------------------------------------------------------
Prometheus Java Simpleclient Httpserver NOTICE
------------------------------------------------------
Prometheus Java Span Context Supplier - Common NOTICE
------------------------------------------------------
Prometheus Java Span Context Supplier - OpenTelemetry NOTICE
------------------------------------------------------
Prometheus Java Span Context Supplier - OpenTelemetry Agent NOTICE
========================================================================

Prometheus instrumentation library for JVM applications
Copyright 2012-2015 The Prometheus Authors

This product includes software developed at
Boxever Ltd. (http://www.boxever.com/).

This product includes software developed at
SoundCloud Ltd. (http://soundcloud.com/).

This product includes software developed as part of the
Ocelli project by Netflix Inc. (https://github.com/Netflix/ocelli/).



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

snappy-java NOTICE
========================================================================

This product includes software developed by Google
 Snappy: http://code.google.com/p/snappy/ (New BSD License)

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

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

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



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

T-Digest NOTICE
========================================================================

The code for the t-digest was originally authored by Ted Dunning

A number of small but very helpful changes have been contributed by Adrien Grand (https://github.com/jpountz)



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

Bean Validation API NOTICE

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

Apache BVal project
Copyright 2010-2012 The Apache Software Foundation.

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


The following copyright notice(s) were affixed to portions of this code
with which this file is now or was at one time distributed.

This product includes software developed by Agimatec GmbH.
Copyright 2007-2010 Agimatec GmbH. All rights reserved.



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

Apache Velocity - Engine NOTICE
========================================================================

Apache Velocity - Engine
Copyright 2000-2020 The Apache Software Foundation

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



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

Xerces2 Java Parser NOTICE
========================================================================

   =========================================================================
   ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
   ==  Version 2.0, in this case for the Apache Xerces Java distribution. ==
   =========================================================================

   Apache Xerces Java
   Copyright 1999-2018 The Apache Software Foundation

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

   Portions of this software were originally based on the following:
     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
     - voluntary contributions made by Paul Eng on behalf of the 
       Apache Software Foundation that were originally developed at iClick, Inc.,
       software copyright (c) 1999.



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

XML Commons External Components XML APIs NOTICE
========================================================================

   =========================================================================
   ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
   ==  Version 2.0, in this case for the Apache xml-commons xml-apis      ==
   ==  distribution.                                                      ==
   =========================================================================

   Apache XML Commons XML APIs
   Copyright 1999-2009 The Apache Software Foundation.

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

   Portions of this software were originally based on the following:
     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
     - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org



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

Apache ZooKeeper - Server NOTICE
------------------------------------------------------
Apache ZooKeeper - Jute NOTICE
========================================================================

Apache ZooKeeper
Copyright 2009-2021 The Apache Software Foundation

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

This product includes software components originally
developed for Airlift (https://github.com/airlift/airlift),
licensed under the Apache 2.0 license. The licensing terms
for Airlift code can be found at:
https://github.com/airlift/airlift/blob/master/LICENSE



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

aircompressor NOTICE
------------------------------------------------------
Commons Math3 NOTICE
------------------------------------------------------
Apache Derby Database Engine and Embedded JDBC Driver NOTICE
------------------------------------------------------
Apache Hadoop Annotations NOTICE
------------------------------------------------------
Apache Hadoop Auth NOTICE
------------------------------------------------------
Apache Hadoop Common NOTICE
------------------------------------------------------
Apache Hadoop HDFS NOTICE
------------------------------------------------------
Apache Hadoop HDFS Client NOTICE
------------------------------------------------------
Apache Hadoop YARN API NOTICE
------------------------------------------------------
Apache Hadoop YARN Common NOTICE
------------------------------------------------------
Apache Hadoop YARN Registry NOTICE
------------------------------------------------------
Apache Hadoop YARN ApplicationHistoryService NOTICE
------------------------------------------------------
Apache Hadoop YARN Server Common NOTICE
------------------------------------------------------
Apache Hadoop YARN ResourceManager NOTICE
------------------------------------------------------
Apache Hadoop YARN Web Proxy NOTICE
------------------------------------------------------
javax.ws.rs-api NOTICE
------------------------------------------------------
Jetty :: Asynchronous HTTP Client NOTICE
------------------------------------------------------
Jetty :: Http Utility NOTICE
------------------------------------------------------
Jetty :: IO Utility NOTICE
------------------------------------------------------
Jetty :: JMX Management NOTICE
------------------------------------------------------
Jetty :: Rewrite Handler NOTICE
------------------------------------------------------
Jetty :: Security NOTICE
------------------------------------------------------
Jetty :: Server Core NOTICE
------------------------------------------------------
Jetty :: Servlet Handling NOTICE
------------------------------------------------------
Jetty :: Utilities NOTICE
------------------------------------------------------
Jetty :: Utilities :: Ajax(JSON) NOTICE
------------------------------------------------------
Jetty :: Webapp Application Support NOTICE
------------------------------------------------------
Jetty :: XML utilities NOTICE
------------------------------------------------------
Lucene Common Analyzers NOTICE
------------------------------------------------------
Lucene Memory NOTICE
------------------------------------------------------
Lucene Core NOTICE
------------------------------------------------------
Lucene Grouping NOTICE
------------------------------------------------------
Lucene Highlighter NOTICE
------------------------------------------------------
Lucene Join NOTICE
------------------------------------------------------
Lucene Memory NOTICE
------------------------------------------------------
Lucene Miscellaneous NOTICE
------------------------------------------------------
Lucene Queries NOTICE
------------------------------------------------------
Lucene QueryParsers NOTICE
------------------------------------------------------
Lucene Sandbox NOTICE
------------------------------------------------------
Lucene Spatial NOTICE
------------------------------------------------------
Lucene Spatial Extras NOTICE
------------------------------------------------------
Lucene Spatial 3D NOTICE
------------------------------------------------------
Lucene Suggest NOTICE
------------------------------------------------------
Netty NOTICE
------------------------------------------------------
Netty/All-in-One NOTICE
------------------------------------------------------
Netty/Buffer NOTICE
------------------------------------------------------
Netty/Codec NOTICE
------------------------------------------------------
Netty/Common NOTICE
------------------------------------------------------
Netty/Handler NOTICE
------------------------------------------------------
Netty/Resolver NOTICE
------------------------------------------------------
Netty/Transport NOTICE
------------------------------------------------------
Netty/Transport/Classes/Epoll NOTICE
------------------------------------------------------
Netty/Transport/Native/Epoll NOTICE
------------------------------------------------------
Netty/Transport/Native/Unix/Common NOTICE
------------------------------------------------------
Netty/TomcatNative [OpenSSL - Classes] NOTICE
========================================================================

The NOTICE content is too long  and is included at notices/NOTICE-[project].txt






