Apache Kalumet
Copyright 2012 The Apache Software Foundation


I. Included Software

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

This product includes software developed at
SLF4J (http://www.slf4j.org/).
Licensed under the MIT License.

This product includes software developed at
Codehaus (http://www.codehaus.org/)
Licensed under the Apache License 2.0.

This product includes software developed at
Terracota (http://www.quartz-scheduler.org/)
Licensed under the Apache License 2.0.

II. License Summary
- Apache License 2.0
- MIT License
