
YOU SHOULD CAREFULLY READ THE FOLLOWING END USER LICENSE AGREEMENT BEFORE
INSTALLING THIS VALVE PRIMARY SERVER, v.4.1.0.9 (WINDOWS) / v.3.1.0.9
(LINUX). BY INSTALLING OR OTHERWISE USING THIS SOFTWARE PROGRAM, YOU AGREE
TO BE BOUND BY THE TERMS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS
OF THIS AGREEMENT, CLICK THE CANCEL BUTTON BELOW AND DO NOT INSTALL THIS
SOFTWARE PROGRAM.

This Valve Primary Server, v.4.1.0.9 (Windows) / v.3.1.0.9 (Linux) software
program, including any electronic documentation (collectively, the
"Program"), any printed materials, and any and all copies of such Program
and materials are the copyrighted work of Valve, L.L.C. and/or its wholly
owned subsidiaries, or its suppliers or licensors.  All rights are reserved,
except as expressly stated below. Your use of the Program is governed by the
terms of the End User License Agreement provided below ("License
Agreement"). The Program is solely for use by end users according to the
terms of the License Agreement. Any use, reproduction or redistribution of
the Program not in accordance with the terms of the License Agreement is
expressly prohibited.
END USER LICENSE AGREEMENT

	1.  Limited Use License. Valve, L.L.C ("Valve") hereby grants, and
by installing the Program you thereby accept, a limited, non-exclusive
license and right to:
	(a) install and use the Program on an unlimited number of computers
for the purpose of hosting online multiplayer games of Half-Life and other
Valve computer games based on the Valve 1 Engine (as defined below); and
	(b) reproduce and distribute exact copies of the Program without
charge, in the same form and with all associated files that the Program is
received by Licensee pursuant to this Agreement, provided that Licensee
will: (1) distribute copies of the Program only in object code format; (2)
only distribute copies of the Program with this Agreement included and
subject to the receiving party agreeing to the terms of this Agreement; and
(3) preserve in all copies of the Program all copyright and legal notices
that are attached to the copy of the Program received by Licensee pursuant
to this Agreement.
The "Valve 1 Engine" means the computer game engine on which Half-Life is
based. The Program is licensed, not sold. Your license confers no title or
ownership in the Program.
	2.  Ownership. All title, ownership rights and intellectual property
rights in and to the Program and any and all copies thereof (including but
not limited to any titles, computer code, themes, objects, characters,
character names, stories, dialog, catch phrases, locations, concepts,
artwork, animations, sounds, musical compositions, audio-visual effects,
methods of operation, moral rights, any related documentation, and "applets"
incorporated into the Program) are owned by Valve or its licensors. The
Program is protected by the copyright laws of the United States,
international copyright treaties and conventions and other laws. All rights
are reserved. The Program contains certain licensed materials and Valve's
licensors may protect their rights in the event of any violation of this
Agreement.
	3.  Responsibilities of End User.
		A. Subject to the license grant above, you may not, in whole
or in part, copy, photocopy, reproduce, translate, reverse engineer, derive
source code, modify, disassemble, decompile, or create derivative works
based on the Program, or remove any proprietary notices or labels on the
Program without the prior consent, in writing, of Valve.
		B. The Program is licensed to you as a single product. Its
component parts may not be separated for use on more than one computer.
		C. You are entitled to use the Program for use in hosting
online multiplayer games of Half-Life and other Valve computer games based
on the Valve 1 Engine, but you are not entitled to sell, grant a security
interest in or transfer reproductions of the Program to other parties in any
way, nor to rent, lease or license the Program to others without the prior
written consent of Valve.
		D. If you wish to operate a game server using the Program,
you will be solely responsible for procuring any Internet access, bandwidth,
or hardware for such activities and will bear all costs associated
therewith.
	4.  No Transfer. You may not transfer or assign this License
Agreement or any of your rights or obligations under this License Agreement.
	5.  Termination. Any license agreement to which you may have
previously agreed that governs your use of prior versions of the Program is
hereby terminated.  This License Agreement is effective until the earlier of
(i) termination of this License Agreement by you or Valve or (ii) the public
release of a new version of the Program. You may terminate the License
Agreement at any time by destroying all copies of the Program in your
possession. Valve may, at its discretion, terminate this License at any time
upon notifying you of such termination. In such event, you must immediately
destroy the all copies of the Program in your possession. The provisions of
Sections 2, 5, and 8-12 will survive any termination of the Agreement.
	6.  Updates; New Versions. Valve may, in its sole discretion,
provide updates or new versions of the Program in the future. Valve may
provide such updates or future versions subject to a separate license, which
may by its terms terminate this license pursuant to Section 5.
	7.  Export Controls. You agree to comply with all applicable laws,
regulations, rulings and executive orders of any governmental authority
relating to the exportation or importation of Program, including but not
limited to the export and destination control regulations for U.S. goods.
The Program may not be re-exported, downloaded or otherwise exported into
(or to a national or resident of) any country to which the U.S. has
embargoed goods, including without limitation Cuba, Iran, Iraq, Libya, North
Korea, Sudan, and Syria, or to anyone on the U.S. Treasury Department's list
of Specially Designated Nationals or the U.S. Commerce Department's Table of
Denial Orders. By installing the Program, you are agreeing to the foregoing
and you are representing and warranting that you are not located in, under
the control of, or a national or resident of any such country or on any such
list.
	8.  No Warranties. The entire risk arising out of use or performance
of the Program remains with you.  THE PROGRAM IS PROVIDED "AS IS," WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, OR NONINFRINGEMENT. ANY WARRANTY AGAINST INFRINGEMENT
THAT MAY BE PROVIDED IN SECTION 2-312(3) OF THE UNIFORM COMMERCIAL CODE
AND/OR IN ANY OTHER COMPARABLE STATE STATUTE IS EXPRESSLY DISCLAIMED.  Some
states do not allow the exclusion or limitation of implied warranties, so
the above limitations may not apply to you.
	9.  Limitation of Liability. VALVE SHALL NOT BE LIABLE TO YOU, OR TO ANY
PERSON ACCESSING ONLINE GAMEPLAY HOSTED BY YOU, IN ANY WAY FOR LOSS OR
DAMAGE OF ANY KIND RESULTING FROM YOUR USE OF THE PROGRAM, (INCLUDING
WITHOUT LIMITATION, YOUR HOSTING OF ONLINE MULTIPLAYER GAMES OF HALF-LIFE OR
OTHER COMPUTER GAMES BASED ON THE VALVE 1 ENGINE), INCLUDING, BUT NOT
LIMITED TO, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES ARISING OUT
OF THE USE OF OR INABILITY TO USE THE PROGRAM, EVEN IF VALVE HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. FURTHER, VALVE SHALL NOT BE
LIABLE IN ANY WAY FOR THE LOSS OR DAMAGE TO ANY PLAYER CHARACTERS, ACCOUNTS,
STATISTICS OR USER PROFILE INFORMATION. YOU UNDERSTAND AND ACKNOWLEDGE THAT
VALVE CANNOT AND WILL NOT BE RESPONSIBLE FOR ANY INTERRUPTIONS OF ONLINE
GAMEPLAY THAT YOU HOST, INCLUDING, BUT NOT LIMITED TO ISP DISRUPTIONS,
SOFTWARE OR HARDWARE FAILURES OR ANY OTHER EVENT WHICH MAY RESULT IN A LOSS
OF DATA OR DISRUPTION OF ONLINE GAMEPLAY. Some states do not allow the
exclusion or limitation of incidental or consequential damages, so the above
limitations may not apply.
	10.  Equitable Remedies. You hereby agree that Valve would be
irreparably damaged if the terms of this License Agreement were not
specifically enforced, and therefore you agree that Valve shall be entitled,
without bond, other security, or proof of damages, to appropriate equitable
remedies with respect to breaches of this License Agreement, in addition to
such other remedies as Valve may otherwise have available to it under
applicable laws. In the event any litigation is brought by either party in
connection with this License Agreement, the prevailing party in such
litigation shall be entitled to recover from the other party all the costs,
attorneys' fees and other expenses incurred by such prevailing party in the
litigation.
	11.  Limitations on License.  Nothing in this License Agreement shall
preclude you from making or authorizing the making of another copy or
adaptation of the Program provided, however, that (1) such new copy or
adaptation is created as an essential step in your utilization of the
Program in accordance with the terms of this License Agreement and for NO
OTHER PURPOSE; or (2) such new copy or adaptation is for archival purposes
ONLY and all archival copies are destroyed in the event of your transfer of
the Program, the termination of this Agreement or other circumstances under
which your continued use of the Program ceases to be rightful.
	12.  Miscellaneous. This License Agreement shall be deemed to have
been made and executed in the State of Washington and any dispute arising
hereunder shall be resolved in accordance with the law of Washington. You
agree that any claim asserted in any legal proceeding by you against Valve
or its licensors shall be commenced and maintained in any state or federal
court located in King County, Washington having subject matter jurisdiction
with respect to the dispute between the parties. This License Agreement may
be amended, altered or modified only by an instrument in writing, specifying
such amendment, alteration or modification, executed by both parties. In the
event that any provision of this License Agreement shall be held by a court
or other tribunal of competent jurisdiction to be unenforceable, such
provision will be enforced to the maximum extent permissible and the
remaining portions of this License Agreement shall remain in full force and
effect. This License Agreement constitutes and contains the entire agreement
between the parties with respect to the subject matter hereof and supersedes
any prior oral or written agreements.
You hereby acknowledge that you have read and understand the foregoing
License Agreement and agree that the action of installing the Program is an
acknowledgment of your agreement to be bound by the terms and conditions of
the License Agreement contained herein. You also acknowledge and agree that
this License Agreement is the complete and exclusive statement of the
agreement between Valve and you with regard to the subject matter hereof and
that the License Agreement supersedes any prior or contemporaneous
agreement, either oral or written, and any other communications between
Valve and you regarding the subject matter hereof.
