WebMO License Agreement
WebMO License Agreement 1.1
Definitions
The "SOFTWARE PRODUCT" is all files included with the WebMO distribution 
archive as well as all files produced as a result of the installation scripts. 
The "SOFTWARE PRODUCT" also includes the WebMO logo and the "look and feel" of 
any page produced via WebMO or included with the WebMO package. The provisions 
of this License Agreement applying to the "SOFTWARE PRODUCT" also apply to all 
derivative works of the "SOFTWARE PRODUCT."
The "LICENSEE" is the individual who downloads or receives the SOFTWARE PRODUCT 
unless the individual designates another to be the "LICENSEE".
"WEBMO" is WebMO, LLC of Holland, Michigan, which is the sole owner of the 
copyright and all other rights in and to the SOFTWARE PRODUCT.
"LICENSE FEES" are monies paid from the LICENSEE to WebMO for the right to 
invoke this License Agreement for a specific implementation of the SOFTWARE 
PRODUCT.
Application of License
By downloading or receiving the SOFTWARE PRODUCT, or by installing the SOFTWARE 
PRODUCT onto any machine, or by using the SOFTWARE PRODUCT or any portion of 
the SOFTWARE PRODUCT in any way, the LICENSEE agrees to be bound by the terms 
of this License Agreement.
The LICENSEE is responsible for ensuring that the terms of the License 
Agreement are upheld and the LICENSEE is responsible for any violations of the 
License Agreement whether or not the LICENSEE authorized the infringements of 
the License Agreement.
Permitted Uses
Provided that any required LICENSE FEES have been paid, this License Agreement 
allows the LICENSEE to download the SOFTWARE PRODUCT for the purpose of 
installing the SOFTWARE PRODUCT on the LICENSEE'S site or for the purpose of 
examining the source code of the SOFTWARE PRODUCT to evaluate its future use on 
the LICENSEE'S site. The LICENSEE may install the SOFTWARE PRODUCT one time 
onto a single WWW server. The LICENSEE may also retain one copy of the 
distribution of the SOFTWARE PRODUCT for archival purposes provided that this 
archive is not redistributed in any way.
License Fees
WebMO retains the right to charge license fees for its product. However, no 
retroactive fees for issued licenses will ever be applied. Licenses are issued 
for a particular WebMO version, and a fee may be charged for future WebMO 
upgrades.
Prohibited Uses
The LICENSEE agrees not to do any of the following unless previously authorized 
in writing by WebMO, as doing the following would violate this License 
Agreement and be grounds for the termination of this License Agreement and 
possible legal action as described in this License Agreement.
    * Making available for download or otherwise copying or redistributing the 
SOFTWARE PRODUCT
    * Selling, renting, or leasing the SOFTWARE PRODUCT to any individual or 
organization
    * Including on any distribution medium (such as a CD-ROM or bundled within 
a software package) the SOFTWARE PRODUCT
    * Installing the SOFTWARE PRODUCT on more than one WWW server or 
implementing the SOFTWARE PRODUCT more than one time on a WWW server, without a 
sufficient number of Licenses to do so
    * Using any portion of the SOFTWARE PRODUCT in any other application or 
redistributing the SOFTWARE PRODUCT under the same or another name 
Copyright Notices and Program Credits
Copyright notices included within the CGI scripts and source files of the 
SOFTWARE PRODUCT may never be modified, appended, or removed without the prior 
expressed written consent of WebMO, regardless of whether the LICENSEE has paid 
any LICENSE FEES for the implementation of the SOFTWARE PRODUCT.
The LICENSEE is not permitted to modify, append, or remove any copyright 
notices or program credits appearing within the visual interface of the 
SOFTWARE PRODUCT. This includes, but is not limited to, copyright notices on 
documentation pages and the "About WebMO" page. Removing links to such 
copyright notices and program credits is similarly prohibited.
Multiple Installations
Each distinct implementation of the SOFTWARE PRODUCT requires that a separate 
License be issued by WebMO to the LICENSEE. If no LICENSE FEES have been paid, 
a LICENSEE is limited to one active License and may install only one 
implementation of the SOFTWARE PRODUCT.
Modifications or Additions
WebMO strongly discourages the use or creation of any modifications or 
additions to the SOFTWARE PRODUCT. Any modifications or additions to the 
SOFTWARE PRODUCT are subject to the following provisions:
   1. The LICENSEE may modify in any way desired the SOFTWARE PRODUCT for the 
LICENSEE'S own use, except that copyright headers and credits cannot be removed 
except as otherwise provided in this License Agreement.
   2. Any modifications containing portions of the SOFTWARE PRODUCT or causing 
any portion of the SOFTWARE PRODUCT to be executed, evaluated, or otherwise 
used in any way, are considered derivative works of the SOFTWARE PRODUCT. 
Hence, these modifications are subject to all terms of this License Agreement, 
and consequently cannot be redistributed or sold. Thus, no person, 
organization, or entity shall distribute any modification or addition to the 
SOFTWARE PRODUCT that uses any portion of the SOFTWARE PRODUCT in any way.
   3. By making any modification or by otherwise installing any third-party 
modifications to the SOFTWARE PRODUCT, the LICENSEE voids the limited warranty 
and any obligation of support on behalf of WebMO, whether express or implied. 
WebMO specifically disclaims all warranties, express or implied, if any portion 
of the SOFTWARE PRODUCT has been modified except as documented in the SOFTWARE 
PRODUCT'S accompanying documentation.
   4. WebMO makes no guarantee that the underlying code or data structure will 
be maintained in future upgrades to the SOFTWARE PRODUCT. The LICENSEE agrees 
that WebMO retains the absolute right to modify future versions of the SOFTWARE 
PRODUCT as WebMO sees fit, whether or not such modifications are compatible 
with any modifications made by the LICENSEE. WebMO retains this right in all 
circumstances, even if the LICENSEE has the right under arrangements with WebMO 
to download and install future upgrades of the SOFTWARE PRODUCT. WebMO is under 
no obligation whatsoever to modify the SOFTWARE PRODUCT or to instruct the 
LICENSEE or anyone else how to modify the SOFTWARE PRODUCT. 
Limited Warranty
Provided that LICENSE FEES have been paid by the LICENSEE, WebMO warrants that 
the SOFTWARE PRODUCT will perform according to its documentation on a system 
meeting the minimum specified requirements for a period of 30 days commencing 
upon timely payment of such LICENSE FEES. Should WebMO breach the limited 
warranty agreement, WebMO will, at its discretion, repair, replace, or provide 
instructions for repair of the SOFTWARE PRODUCT, or return any LICENSE FEES to 
the LICENSEE. In this sense, WebMO offers 30 days of free technical support to 
the LICENSEE for the sole purpose of causing the SOFTWARE PRODUCT to perform 
according to its documentation. In no case shall the liability of WebMO exceed 
the LICENSE FEES paid by the LICENSEE. This limited warranty is not offered if 
LICENSE FEES have not been paid by the LICENSEE.
This is the only warranty of any kind guaranteed by WebMO. Except for this 
limited warranty, the SOFTWARE PRODUCT is provided on an "as is" basis, and the 
LICENSEE accepts the SOFTWARE PRODUCT "with all faults." Should the SOFTWARE 
PRODUCT prove defective, the LICENSEE and not WebMO assumes the entire cost of 
service and repair. In addition, the security mechanisms implemented in 
SOFTWARE PRODUCT have inherent limitations, and WebMO does not warrant that the 
SOFTWARE PRODUCT will withstand all attacks. To the maximum extent permitted by 
applicable law, WebMO disclaims all other warranties, either express or 
implied. Particularly, WebMO makes no warranty of title, no warranty against 
infringement, no warranty of merchantability, and no warranty of fitness for a 
particular purpose. This warranty gives you specific legal rights, and you may 
have other legal rights that vary by jurisdiction.
The SOFTWARE PRODUCT is not fault-tolerant and is not designed for use in 
high-risk activities in any environment where the SOFTWARE PRODUCT could lead 
to injury or death. WebMO specifically disclaims any warranties, express 
implied, of fitness for high-risk activities.
In no event shall WebMO be liable for any damages in excess of LICENSE FEES 
paid (including without limitation, special, direct, incidental, consequential, 
or indirect damages for personal injury, loss of business profits, business 
interruption, loss of information, loss of data, and any other pecuniary loss) 
arising from the installation or any use of this SOFTWARE PRODUCT.
The LICENSEE voids this limited warranty by performing any of the following 
actions:
   1. Modifying any part of the SOFTWARE PRODUCT except as documented in the 
documentation that accompanies the SOFTWARE PRODUCT. This includes, but is not 
limited to, the CGI scripts, and any configuration files generated by the 
program or required for installation. Should any other person or any automatic 
process (including but not limited to web site publishing software or 
third-party scripts which directly or indirectly access or write any of the 
files constituting part of the SOFTWARE PRODUCT) perform such modifications, 
the LICENSEE is deemed to have performed such modifications and thus the 
limited warranty is void.
   2. Breaching any portion of this License Agreement.
   3. Failing to promptly register the implementation of the SOFTWARE PRODUCT 
with WebMO following its implementation the LICENSEE'S site.
   4. Deleting or moving (intentionally or inadvertently) any file provided 
with, created by, or used by the SOFTWARE PRODUCT.
   5. Failing to meet the system requirements for the LICENSEE'S server as 
stated on the WebMO download page for the version of the SOFTWARE PRODUCT that 
the LICENSEE is attempting to install.
   6. Failing to pay required LICENSE FEES in a timely manner for the 
LICENSEE'S implementation of the SOFTWARE PRODUCT, in which case the LICENSEE 
not only voids the limited warranty, but also breaches this License Agreement 
and is also subject to other provisions of this License Agreement. 
Site Content
The LICENSEE alone, not WebMO, bears the entire responsibility for the content 
of any internet site, even if the LICENSEE is using the SOFTWARE PRODUCT as 
part of that internet site. In no way shall WebMO be liable or responsible for 
the content of any LICENSEE'S site, including but not limited to any data 
created by users of the SOFTWARE PRODUCT.
Title and Copyright
The SOFTWARE PRODUCT remains the property of WebMO. The SOFTWARE PRODUCT is 
licensed, not sold. By paying LICENSE FEES, the LICENSEE is granted the right 
to use the SOFTWARE PRODUCT as described in this License Agreement, but the 
LICENSEE does not assume any rights of ownership or other rights in and to the 
SOFTWARE PRODUCT.
The SOFTWARE PRODUCT is copyright � 2000 by WebMO, all rights reserved. The 
LICENSEE of this SOFTWARE PRODUCT gains the right to use the copyrighted 
software but does not gain ownership of the copyright or of the SOFTWARE 
PRODUCT.
Consequences of License Violations
Should the LICENSEE use unlicensed copies of the SOFTWARE PRODUCT without the 
expressed written consent of WebMO, the LICENSEE is in violation of this 
License Agreement. If the LICENSEE was using any portions of the SOFTWARE 
PRODUCT which ordinarily require the payment of LICENSE FEES, the LICENSEE 
agrees to pay to WebMO the LICENSE FEES necessary to license the unlicensed 
implementation according to the schedule of LICENSE FEES available at the time 
from the WebMO web site. Additionally, WebMO may require that the LICENSEE 
immediately and entirely remove any implementation of the SOFTWARE PRODUCT that 
is in breach of this License Agreement. In addition, the LICENSEE shall be 
liable for the payment to WebMO of attorney's fees, court costs, punitive 
damages, and any other legal remedy appropriate for the situation.
Should the LICENSEE distribute, sell, or otherwise make available any portion 
of the SOFTWARE PRODUCT or any modification which is determined to be the 
SOFTWARE PRODUCT according to any other sections of this License Agreement, the 
LICENSEE shall be liable for the payment to WebMO of the equivalent cost of 
LICENSE FEES for the SOFTWARE PRODUCT or for all monies collected by the 
LICENSEE in violation of this License Agreement, whichever is more. In 
addition, the LICENSEE shall be liable for the payment to WebMO of attorney's 
fees, court costs, punitive damages, and any other legal remedy appropriate for 
the situation.
Termination
WebMO may, at any time, terminate the License Agreement if WebMO determines 
that the License Agreement has been breached. If the termination of License 
Agreement occurs as a result of a violation by the LICENSEE or another person, 
the LICENSEE must immediately remove all files from his or her implementation 
of the SOFTWARE PRODUCT and all links to the same.
In no case shall WebMO be responsible for paying to the LICENSEE or anyone else 
any amount of money, even if the termination of the license diminishes or 
eliminates revenue raised by the implementation of the SOFTWARE PRODUCT. In no 
case shall WebMO be responsible for refunding any LICENSE FEES, regardless of 
the reason for termination of this License Agreement, except as provided in the 
limited warranty section of this License Agreement.
Transfer of License
The LICENSEE is not permitted to transfer a License to any other individual or 
institution without the expressed written consent of WebMO.
Without prior written consent of WebMO, the LICENSEE may not act as a reseller 
who sells or otherwise distributes Licenses for the SOFTWARE PRODUCT. Under 
this License Agreement, WebMO reserves the right to develop a separate 
agreement applying to such reselling activities, and such an agreement, if 
entered into by WebMO and the LICENSEE, would supercede this License Agreement 
as defined in the separate agreement.
Jurisdiction
This License Agreement is governed by the laws of the State of Michigan. Both 
the LICENSEE and WebMO submit to the jurisdiction of the courts of the State of 
Michigan. Both the LICENSEE and WebMO agree to commence any litigation that may 
arise hereunder in the courts located in the Judicial District of Ottawa County 
in the State of Michigan.
