============================================================================
The xReporter License, based on the Apache Software License 1.1
============================================================================

Copyright (C) 2002 Outerthought bvba and Schaubroeck nv. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must
   include the following acknowledgment: "This product includes software developed
   by Outerthought and Schaubroeck http://xreporter.cocoondev.org/" This
   acknowledgment must also appear in the software itself, if and wherever such
   third-party acknowledgments normally appear: an accompanying README or LICENSE
   file and/or startup splash screen.

4. The names xReporter, Outerthought and Schaubroeck must not be used to
   endorse or promote products derived from this software without prior written
   permission. For written permission, please contact
   xreporter-license@outerthought.org.

5. Products derived from this software may not be called xReporter,
   Outerthought or Schaubroeck, nor may xReporter, Outerthought or Schaubroeck
   appear in their name, without prior written permission of Outerthought and
   Schaubroeck.

6. Outerthought and Schaubroeck reserve the right to change the terms and
   conditions of this license at any time without any prior notice, including the
   donation of this software to an Open Source Community or Foundation.


THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
OUTERTHOUGHT, SCHAUBROECK OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
