This file lists license and version information of all code we did not
author, but ship together with the source so building Bazel requires
a minimal set of extra dependencies.


## [aether](http://eclipse.org/aether/)

* Version: 1.0.0 v20140518
* License: Eclipse Public License


## [android_common](http://mvnrepository.com/artifact/com.android.tools/sdk-common)

* Version: 25.0.0
* License: Apache License 2.0.


## [apache_commons_codec](http://commons.apache.org/proper/commons-codec/)

* Version: 1.9
* License: Apache License 2.0.


## [apache_commons_collections](http://commons.apache.org/proper/commons-collections/)

* Version: 3.2.2
* License: Apache License 2.0.


## [apache_commons_compress](http://commons.apache.org/proper/commons-compress/)

* Version: 1.9
* License: Apache License 2.0.


## [apache_commons_logging](http://commons.apache.org/proper/commons-logging/)

* Version: 1.1.1
* License: Apache License 2.0.

## [apache_commons_pool2](https://commons.apache.org/proper/commons-pool/)

* Version: 2.3
* License: Apache License 2.0.


## [apache_httpclient](http://hc.apache.org/httpclient-3.x/)

* Version: 4.2.5
* License: Apache License 2.0


## [apache_httpcore](https://hc.apache.org/httpcomponents-core-ga/)

* Version: 4.2.4
* License: Apache License 2.0


## [apache_velocity](http://velocity.apache.org/)

* Version: 1.7
* License: Apache License 2.0.


## apkbuilder

* [apkbuilder](http://search.maven.org/remotecontent?filepath=com/android/tools/sdklib/25.0.0/sdklib-25.0.0-sources.jar)
* [android common](http://search.maven.org/remotecontent?filepath=com/android/tools/sdk-common/25.0.0/sdk-common-25.0.0-sources.jar)
* Version: 25.0.0
* License: Apache License 2.0.


## [asm](https://asm.ow2.org)

* Version: 5.1
* License: 3-clause revised BSD


## [auto](https://github.com/google/auto)

* [auto_common](https://github.com/google/auto/tree/master/common) (version 0.3)
* [auto_service](https://github.com/google/auto/tree/master/service) (version 1.0-rc2)
* [auto_value](https://github.com/google/auto/tree/master/value) (version 1.0)
* License: Apache License 2.0


## [bytebuddy](https://github.com/raphw/byte-buddy)

* Version: 0.7-rc6
* License: Apache License 2.0


## [Google's Dagger](https://github.com/google/dagger)

* Version: 2.5
* License: Apache License 2.0

## [Error Prone](https://github.com/google/error-prone)

* Version: 2.0.18
* License: Apache License 2.0


## [JCIP Annotations](https://github.com/stephenc/jcip-annotations/)

* Version: 1.0-1
* License: Apache License 2.0


## [PCollections](https://github.com/pcollections/pcollections/)

* Version: 2.1.2
* License: MIT


## [jFormatString](https://code.google.com/p/j-format-string/)

* Version: 3.0.0
* License: GNU GPL v2 with Classpath exception

## [Checker Framework Dataflow](http://code.google.com/p/checker-framework/)

* Version: 1.8.10
* License: GNU GPL v2 with Classpath exception, portions MIT

## [Checker Framework Javacutil](http://code.google.com/p/checker-framework/)

* Version: 1.8.10
* License: GNU GPL v2 with Classpath exception, portions MIT

## [Buck (iOS support)](http://facebook.github.io/buck/)

* Version: commit id 2ff4f45a971776afcfbe88333d78c4ca6bf03df9
* License: Apache License 2.0


## [dd_plist](http://plist.googlecode.com/svn-history/r111/trunk/)

* Version: r111
* License: MIT license


## [protobuf](https://code.google.com/p/protobuf/)

* Version: 3.0.0
* License: New BSD License


## [gtest](https://code.google.com/p/googletest/)

* Version: 1.7.0
* License: New BSD License


## [gson](https://code.google.com/p/google-gson/)

* Version: 2.2.4
* License: Apache License 2.0


## [guava](https://github.com/google/guava)

* Version: 21.0
* License: Apache License 2.0


## [javac](https://github.com/google/error-prone-javac)

* Version: 9-dev-r3297-4 (javac-9-dev-r3297-4.jar)
* License: GNU GPL v2 with Classpath exception (plus other licenses, see third_party/java/jdk/langtools/LICENSE file).

## [jarjar](https://code.google.com/p/jarjar/)

* Version: 1.4
* License: Apache License 2.0


## [jgit](https://eclipse.org/jgit/)

* Version: 4.0.1.201506240215-r
* License: Eclipse Distribution License 1.0


## [joda_time](http://www.joda.org/joda-time/)

* Version: 2.3
* License: Apache License 2.0


## [jsr250](https://repository.apache.org/content/repositories/orgapachetomcat-002)

* Version: 8.0.5
* License: Apache License 2.0


## [jsch](http://www.jcraft.com/jsch/)

* Version: 0.1.51
* License: BSD-style license


## [jsr305](https://code.google.com/p/jsr-305/)

* Version: latest as of 2014-05-07
* License: New BSD License


## [jsr330_inject](https://code.google.com/p/atinject/)

* Version: 1
* License: Apache License 2.0


## [maven](http://mvnrepository.com/artifact/org.apache.maven)

* Version: 3.3.3
* License: Apache License 2.0


## [maven_model](http://maven.apache.org/ref/3.2.3/maven-model/)

* Version: 3.2.3
* License: Apache License 2.0


## [plexus_component_annotations](http://mvnrepository.com/artifact/org.codehaus.plexus/plexus-component-annotations)

* Version: 1.6
* License: Apache License 2.0

## [plexus_interpolation](http://mvnrepository.com/artifact/org.codehaus.plexus/plexus-interpolation)

* Version: 1.22
* License: Apache License 2.0


## [plexus_utils](http://mvnrepository.com/artifact/org.codehaus.plexus/plexus-utils)

* Version: 3.0.21
* License: Apache License 2.0


## [slf4j](http://www.slf4j.org/)

* Version: 1.7.7
* License: MIT license


## [hazelcast](http://hazelcast.org/)

* Version: 3.6.4
* License: Apache License 2.0

## [turbine](https://github.com/google/turbine)

* Version: 0.1-20170104
* License: Apache License 2.0


# Testing

## [hamcrest](https://code.google.com/p/hamcrest/)

* Version: 1.3
* License: New BSD License


## [iossim](https://code.google.com/p/chromium/codesearch#chromium/src/testing/iossim/)

* Version: latest as of 2015-10-09
* License: 3-clause BSD


## [junit](http://junit.org/)

* Version: 4.11
* License: Eclipse Public License Version 1.0


## [truth](http://google.github.io/truth/)

* Version: 0.31
* License: Apache License 2.0

## [xz](http://tukaani.org/xz/java.html)

* Version: 1.5
* License: Public Domain

## [netty](http://netty.io/)

* Version: 4.1.0.CR4
* License: Apache License 2.0

