Copyright and Disclaimer
This software is copyright 2003-2004 by M. Wayne Davis.

All copies are not for redistribution and should be obtained from the author.
The author hereby grants permission to use, copy, and modify this software for any purpose. Modifications to this software may only be used by their authors and may not be re-distributed in any form. No written agreement, license, or royalty fee is required for any of the authorized uses.


IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTOR BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHOR AND DISTRIBUTOR SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHOR AND DISTRIBUTOR HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
