Apache OFBiz
Copyright 2001-2017 The Apache Software Foundation

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

This product bundles the "Quicksand font", which is available
under the "SIL OFL License 1.1" license.
For details, see themes/rainbowstone/webapp/rainbowstone/fonts/quicksand
