# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - 3-Clause BSD License
# - Apache 2
# - Apache 2.0
# - Apache 2.0 License
# - Apache License
# - Apache License (v2.0)
# - Apache License 2.0
# - Apache License, Version 2.0
# - Apache Software License - Version 2.0
# - Apache-2.0
# - BSD
# - BSD 2-Clause License
# - BSD 3-Clause
# - BSD 3-clause
# - CDDL + GPLv2 with classpath exception
# - CDDL 1.1
# - CDDL+GPL License
# - CDDL/GPLv2+CE
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - EDL 1.0
# - Eclipse Distribution License - v 1.0
# - Eclipse Public License - Version 1.0
# - Eclipse Public License - v 1.0
# - Eclipse Public License 1.0
# - GNU Lesser General Public License
# - GNU Lesser General Public License (LGPL), Version 2.1
# - GPL2 w/ CPE
# - LGPL 2.1
# - MIT License
# - MPL 1.1
# - New BSD License
# - New BSD license
# - Public Domain
# - The Apache License, Version 2.0
# - The Apache Software License, Version 2.0
# - The BSD 3-Clause License
# - The BSD License
# - The MIT License
# - The New BSD License
# - http://asm.ow2.org/license.html
# - http://www.apache.org/licenses/LICENSE-2.0.txt
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Fri Jul 08 14:50:19 CST 2022
io.netty--netty-tcnative-classes--2.0.46.Final=
javax.servlet.jsp--jsp-api--2.1=
org.apache.zookeeper--zookeeper--3.4.6=
oro--oro--2.0.8=
