End User License Agreement
The SOFTWARE PRODUCT (StarUML) is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
LICENSES
StarUML is licensed as follows:
Installation and Usage.

Licenses are per user and valid for use on all supported operating systems. License keys may be used on multiple computers and operating systems, provided the license key holder is the primary user. Businesses must purchase at least as many licenses as the number of people using StarUML.
Backup Copies.

You may make copies of the license key and or StarUML for backup and archival purposes.
DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS
Maintenance of Copyright Notices.

You must not remove or alter any copyright notices on any copy of StarUML.
Distribution.

You may not distribute or sell license keys or StarUML to third parties. Licenses will be revoked if distributed or sold to third parties.
Rental.

You may not rent, lease, or lend the license key or StarUML.
COPYRIGHT
All title, including but not limited to copyrights, in and to StarUML and any copies thereof are owned by MKLab.
NO WARRANTIES
MKLab expressly disclaims any warranty for StarUML, which is provided 'as is' without any express or implied warranty of any kind, including but not limited to any warranties of merchantability, non-infringement, or fitness of a particular purpose.
LIMITATION OF LIABILITY
In no event shall MKLab be liable for any damages due to use of StarUML, to the maximum extent permitted by law. This includes without limitation, lost profits, business interruption, or lost information. In no event will MKLab be liable for loss of data or for indirect, special, incidental, consequential (including lost profit), or other damages. MKLab shall have no liability with respect to the content of StarUML or any part thereof, including but not limited to errors or omissions contained therein, libel, trademark rights, business interruption, loss of privacy or the disclosure of confidential information.
