SOFTWARE LICENSE AND LIMITED WARRANTY 

PLEASE READ THIS LICENSE CAREFULLY BEFORE INSTALLING OR USING 
THE SOFTWARE.  BY USING THE SOFTWARE, YOU ARE AGREEING TO BE 
BOUND BY THE TERMS OF THIS LICENSE.  IF YOU DO NOT AGREE TO THE
TERMS OF THIS LICENSE, DO NOT INSTALL OR USE THE SOFTWARE, 
DELETE THE SOFTWARE AND ALL RELATED FILES FROM YOUR COMPUTER, 
AND PROMPTLY RETURN THIS PACKAGE AND ITS CONTENTS TO THE PLACE 
OF PURCHASE FOR REFUND OF THE AMOUNT YOU PAID.

The software, artwork, music, and other components included in 
this computer program (the "Software") are the copyrighted 
property of LucasArts Entertainment Company LLC and its 
licensors (collectively referred to as "LEC"). The Software is 
licensed (not sold) to you, and LEC owns all copyright, trade 
secret, patent and other proprietary rights in the Software. 
You may use the Software on a single computer. You may not: 
(1) copy (other than once for back-up purposes), distribute, 
rent, lease or sublicense all or any portion of the Software; 
(2) modify or prepare derivative works of the Software; 
(3) transmit the Software over a network, by telephone, or 
electronically using any means, except in the course of your 
network multi-player play of the Software; or (4) reverse 
engineer, decompile or disassemble the Software. You may 
transfer the Software, but only if the recipient agrees to 
accept the terms and conditions of this Agreement.  If you 
transfer the Software, you must transfer all components and 
documentation and erase any copies residing on computer equip-
ment. Your license is automatically terminated if you transfer 
the Software.

LEC warrants to the original consumer purchaser that the media 
furnished in this product will be free from defects in 
materials and workmanship under normal use for a period of 
ninety (90) days from the date of purchase (as evidenced by 
your receipt). If the media supplied as part of this product 
proves to be defective, and provided that the consumer 
purchaser returns the media to LEC in accordance with the 
instructions in this paragraph, LEC will replace the defective 
media: (a) free of charge to the consumer purchaser, if the 
media proves to be defective within the ninety (90) day period 
following the date of purchase, and (b) if the media proves to 
be defective after the expiration of the ninety (90) day 
warranty period, LEC will replace the defective media for a fee
of $5.00 per Compact Disc.  To obtain a replacement CD, please 
return the CD only, postage prepaid, to LEC, at the address 
below, accompanied by proof of date of purchase, a description 
of the defect, and your name and return address. To replace 
defective media after expiration of the warranty period, send 
the CD only, postage prepaid, to LEC at the address below, 
enclosing proof of purchase, a description of the defect, your 
name and return address, and a check for $5.00 per Compact 
Disc. LEC will mail a replacement to you.

You expressly acknowledge and agree that use of the Software is
 at your sole risk.  Except for the limited ninety (90) day 
warranty on the media set forth above, the Software and any 
related documentation or materials are provided "AS IS" and 
without warranty of any kind.  LEC EXPRESSLY DISCLAIMS ALL 
WARRANTIES, EXPRESS AND IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
PARTICULAR PURPOSE AND NONINFRINGEMENT.  LEC DOES NOT WARRANT 
THAT THE FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET YOUR 
REQUIREMENTS, OR THAT THE OPERATION OF THE SOFTWARE WILL BE 
UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE SOFTWARE 
WILL BE CORRECTED.  THE ENTIRE RISK AS TO THE RESULTS AND 
PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU.  SOME 
JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES,
SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU. 

UNDER NO CIRCUMSTANCES INCLUDING NEGLIGENCE SHALL LEC, OR ITS 
DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS, BE LIABLE TO YOU FOR 
ANY INCIDENTAL, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES 
(INCLUDING DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS 
INTERRUPTION, LOSS OF BUSINESS INFORMATION, AND THE LIKE) 
ARISING OUT OF THE POSSESSION, USE, OR MALFUNCTION OF THIS 
PRODUCT, INCLUDING WITHOUT LIMITATION, DAMAGE TO PROPERTY AND, 
TO THE EXTENT PERMITTED BY LAW, DAMAGES FOR PERSONAL INJURY, 
EVEN IF LEC HAS BEEN ADVISED OF THE POSSIBILITY OF ANY SUCH 
DAMAGES OR LOSS, AND EVEN IF LEC OR AN LEC AUTHORIZED 
REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
DAMAGES.  SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR 
EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES,
SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY TO YOU.  

THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS, AND YOU MAY HAVE
OTHER RIGHTS DEPENDING ON THE LAWS IN YOUR STATE. YOU AGREE 
THAT THE LIABILITY OF LEC ARISING OUT OF ANY KIND OF LEGAL 
CLAIM (WHETHER IN CONTRACT, TORT, OR OTHERWISE) WILL NOT EXCEED
THE AMOUNT YOU ORIGINALLY PAID FOR THE USE OF THIS PRODUCT.

© LucasArts Entertainment Company LLC.  All rights reserved.  
iMUSE U.S. Patent number 5,315,057.
