# Notices for Eclipse Packaging Project

This content is produced and maintained by the Eclipse Packaging Project
project.

* Project home: https://projects.eclipse.org/projects/technology.packaging

## Trademarks

 Eclipse Packaging Project is a trademark of the Eclipse Foundation.

## Copyright

All content is the property of the respective authors or their employers. For
more information regarding authorship of content, please consult the listed
source code repository logs.

## Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Eclipse Public License v. 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

## Source Code

The project maintains the following source code repositories:

* https://git.eclipse.org/r/plugins/gitiles/epp/org.eclipse.epp.packages

## Third-party Content

This project leverages the following third party content.

Apache Commons Codec (1.6)

* License: Apache License, 2.0

Apache Commons IO (2.2)

* License: Apache License 2.0

Apache Commons Lang (3.1.0)

* License: Apache License, 2.0

Apache Commons Logging Jar (1.1.1)

* License: Apache License, 2.0

Apache HttpComponents Client 4.3.6 (4.3.6)

* License: Apache License, 2.0

Apache HttpComponents Client 4.3.6 (4.3.6)

* License: Apache License, 2.0

Apache HttpComponents Client 4.3.6 (4.3.6)

* License: Apache License, 2.0

Apache HttpComponents HttpClient (4.5.6)

* License: Apache-2.0

Apache HttpComponents HttpCore (4.4.10)

* License: Apache-2.0

Apache Lucene analyzers-common (8.0.0)

* License: Apache-2.0 AND BSD-3-Clause AND BSD-2-Clause

Apache Lucene Core (8.0.0)

* License: Apache-2.0 AND MIT AND BSD-3-Clause

atinject (Package javax.inject) (1.0)

* License: Apache License, 2.0

Google Gson (2.2.4)

* License: Apache License 2.0

Google Roboto Fonts (0.4.3)

* License: Apache License, 2.0

Guava (15.0)

* License: Apache License, 2.0

hamcrest-core (1.3)

* License: New BSD license

JUnit (4.11)

* License: Common Public License 1.0

log4j 1.2.13 (1.2.13)

* License: Apache License, 2.0

Logback Classic (1.0.7)

* License: Eclipse Public License

Logback Core (1.0.7)

* License: Eclipse Public License

Lucene Core (3.5.0)

* License: Apache License, 2.0

lucene-analyzers-common (6.1.0)

* License: Apache License, 2.0, New BSD license, W3C License

lucene-core (6.1.0)

* License: Apache License, 2.0, BSD Style, MIT License

mockito (1.9.5)

* License: Apache License, 2.0, New BSD license, MIT license

Objenesis (1.0)

* License: MIT license

org.apache.commons.codec (1.3.0)

* License: Apache License, 2.0
* Project: http://commons.apache.org/codec/

org.apache.commons.httpclient (3.0.1)

* License: Apache License, 2.0

org.apache.commons.logging (1.0.4)

* License: Apache License, 2.0

registry (3.1.3)

* License: Public Domain 

SLF4J API (1.7.2)

* License: MIT License

## Cryptography

Content may contain encryption software. The country in which you are currently
may have restrictions on the import, possession, and use, and/or re-export to
another country, of encryption software. BEFORE using any encryption software,
please check the country's laws, regulations and policies concerning the import,
possession, or use, and re-export of encryption software, to see if this is
permitted.
