END-USER LICENSE AGREEMENT
 
 PLEASE READ CAREFULLY.  BY USING OR INSTALLING THIS SOFTWARE, OR BY
PLACING OR COPYING THIS SOFTWARE ON YOUR COMPUTER HARDWARE, COMPUTER RAM
OR OTHER STORAGE MEDIUM, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF
THIS LICENSE.  IF YOU DO NOT AGREE TO THESE TERMS, PROMPTLY DISCONTINUE
THE INSTALLATION PROCESS AND CEASE ALL USE OF THIS SOFTWARE.
 
 1. Thanks.  Congratulations and thank you for licensing our software. 
We're sorry to cramp your style, but our lawyers tell us that if we want
to keep control and ownership of the cool stuff we're developing, we
have to make sure you understand and agree that you are just getting a
right to use it and that that right is limited in certain ways.  So
here's what follows is what you need to know and agree to.  
 
 2. License.  The demonstration version of the software accompanying
this license and the related documentation (the "Demo Software") are
licensed for your use and gaming enjoyment, subject to terms and
limitations in this license agreement.	This is not a full fledged
version of the software; it is a demonstration version.      
 
 3. Use Restrictions.  We want you to enjoy our products for years to
come, and we want to be able to continue to send you awesome games, so
you need to be aware that there are some things you cannot do with the
Demo Software.	The Demo Software contains copyrighted material, trade
secrets and other proprietary material.  You may not decompile, modify,
reverse engineer, prepare derivative works based on the Demo Software,
or disassemble the Demo Software.  You may not rent, sell, lease,
barter, or sublicense the Demo Software.  You may not delete the
copyright notices or any other proprietary legends on the original copy
of the Demo Software.  You may not offer the Demo Software on a
pay-per-play basis or otherwise commercially exploit the Demo Software
or use the Demo Software for any commercial purpose.  You may, however,
exchange the Demo Software at no charge among other end-users and
distribute them to others over the Internet, on magazine cover disks, or
otherwise for free.  You may not ship or export the Demo Software to any
country other than where you bought it, in violation of the U.S. Export
Administration Act (or any other law governing such matters) and you
will not utilize and will not authorize anyone to utilize the Demo
Software in violation of any applicable law.  The Demo Software may not
be downloaded or otherwise exported into (or to a national or resident
of) any country to which the U.S. has embargoed goods or to anyone or
into any country who/which are prohibited by applicable law, from
receiving it.
 
 4. Termination.  This license is effective until one of us terminate
it.  You may terminate this license at any time by destroying the Demo
Software and related documentation.  In the unlikely event that you are
naughty and fail to comply with any provision of this license, this
license will terminate immediately without notice from us.  Upon
termination, you must destroy the Demo Software and related
documentation.	Please don't wait for us to come after you; it would not
be pleasant for either of us.  If we do have to come after you, we're
going to expect you to pay us for our troubles, including the cost of
our lawyers.
 
 5. Disclaimer of Warranty on Software.  You are aware and agree that
use of the Demo Software and the media on which it is recorded at your
sole risk.  The Demo Software, related documentation and the media are
provided "AS IS".  INFOGRAMES (OUR PUBLISHER) AND EPIC GAMES, INC.
("EPIC") EXPRESSLY DISCLAIM ALL OTHER WARRANTIES. EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE.  WE DO NOT WARRANT THAT THE
FUNCTIONS CONTAINED IN THE DEMO SOFTWARE WILL MEET YOUR REQUIREMENTS. 
NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY US OR ANY OF OUR
AUTHORIZED REPRESENTATIVES SHALL CREATE A WARRANTY OR IN ANY WAY
INCREASE THE SCOPE OF THIS WARRANTY.  SOME JURISDICTIONS DO NOT ALLOW
THE EXCLUSION OF IMPLIED WARRANTIES, S0 THE ABOVE EXCLUSIONS MAY NOT
APPLY TO YOU.
 
 6. Limitation of Liability.  UNDER NO CIRCUMSTANCES, INCLUDING WITHOUT
LIMITATION, NEGLIGENCE, SHALL INFOGRAMES, EPIC OR ANY OF THEIR
RESPECTIVE OFFICERS, EMPLOYEES, DIRECTORS, AGENTS, LICENSEES,
SUBLICENSEE OR ASSIGNS BE LIABLE FOR ANY INCIDENTAL, SPECIAL OR
CONSEQUENTIAL DAMAGES THAT RESULT FROM THE USE OR INABILITY TO USE THE
DEMO SOFTWARE OR RELATED DOCUMENTATION, EVEN IF SUCH PARTIES HAVE BEEN
ADVISED OF THE POSSIBILITY OF THOSE 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.  In no event shall our total liability to you for all damages,
losses, and causes of action (whether in contract, tort or otherwise)
exceed the amount paid by you for the Software.
 
 7. Controlling Law and Severability.  This license is governed by and
construed in accordance with the laws of the State of North Carolina,
USA.  Exclusive venue for all litigation shall be in Wake County, North
Carolina.  If any provision of this license is unenforceable, the rest
of it shall remain in effect.
 
 8. Complete Agreement.  This license constitutes the entire agreement
between the parties with respect to the use of the Demo Software and the
related documentation.	However, Infogrames and Epic reserve the right
to modify the terms of this license from time to time and will post
notice of material changes somewhere within www.epicgames.com.	
 
 9. Copyright.	The Demo Software and all copyrights, trademarks and all
other conceivable intellectual property rights related to the Demo
Software are owned by Infogrames, Epic or such parties' licensors and
are protected by United States copyrights laws, international treaty
provisions, an army of clones, and all applicable law, such as the
Lanham Act.  You must treat the Demo Software like any other copyrighted
material, as required by 17 U.S.C. section 101 et seq. and other
applicable law.  This program you've licensed was produced through the
efforts of many people who earn their livelihood from its lawful use. 
These people like to eat, so please feel free to make as many copies of
only this Demo Software for your friends and acquaintances to enjoy it
as well............and maybe they'll license full versions like we know
you will.
 
 10. Enjoyment Requirements.  We are aware that there are rumblings and
grumblings within the gaming community about heavy handed, legally
onerous license agreements.  You have our word that this one is as fair
and even handed as it gets and, as you have read this far, you know it
to be true.  Now, be gone from this screen and enjoy the Demo Software,
and if you like it, be sure to tell all your friends how great it is and
make sure they try it, too!
 
