SEIKO EPSON CORPORATION
SOFTWARE LICENSE AGREEMENT

IMPORTANT! READ THIS SOFTWARE LICENSE AGREEMENT CAREFULLY.  The
computer software product, fontware, typefaces and/or data, including
any accompanying explanatory written materials (the "Software") should
only be installed or used by the Licensee ("you") on the condition you
agree with SEIKO EPSON CORPORATION ("EPSON") to the terms and
conditions set forth in this Agreement.  By installing or using the
Software, you are representing to agree all the terms and conditions
set forth in this Agreement.  You should read this Agreement carefully
before installing or using the Software.  If you do not agree with the
terms and conditions of this Agreement, you are not permitted to
install or use the Software.

1. License.  EPSON and its suppliers grant you a personal,
   nonexclusive, royalty-free limited license to install, copy, use
   and redistribute the Software, provided that the copyright notice
   is reproduced in its entirety on the copy.  The term "Software"
   shall include the software components, media, all copies made by
   you and any upgrades, modified versions, updates, additions and
   copies of the Software licensed to you by EPSON or its suppliers.
   EPSON and its suppliers reserve all rights not granted herein.

2. Other Rights and Limitations.  You agree not to modify, adapt or
   translate the Software.  You also agree not to attempt to reverse
   engineer, decompile, disassemble or otherwise attempt to discover
   the source code of the Software.  You may not rent, lease, encumber
   or lend the Software.  You may, however, transfer all your rights
   to use the Software to another person or legal entity provided that
   you transfer this Agreement, the Software, including all copies,
   updates and prior versions, to such person or entity, and that you
   retain no copies, including copies stored on a computer. Some
   states or jurisdictions, however, do not allow the restriction or
   limitation on transfer of the Software, so the above limitations
   may not apply to you.

3. Ownership.  Title, ownership rights, and intellectual property
   rights in and to the Software and any copies thereof shall remain
   with EPSON or its suppliers.  There is no transfer to you of any
   title to or ownership of the Software and this License shall not be
   construed as a sale of any rights in the Software.  The Software is
   protected by Japanese Copyright Law and international copyright
   treaties, as well as other intellectual property laws and treaties.
   You also agree not to remove or alter any copyright and other
   proprietary notices on any copies of the Software.

4. Protection and Security.  You agree to use your best efforts and
   take all reasonable steps to safeguard the Software to ensure that
   no unauthorized person has access to them and that no unauthorized
   copy, publication, disclosure or distribution of any of the
   Software is made.  You acknowledge that the Software contains
   valuable, confidential information and trade secrets, that
   unauthorized use and copying are harmful to EPSON and its
   suppliers, and that you have a confidentiality obligation as to
   such valuable information and trade secrets.

5. Limited Warranty.  You acknowledge and agree that the use of the
   Software is at your sole risk.  THE SOFTWARE IS PROVIDED "AS IS"
   AND WITHOUT ANY WARRANTY OF ANY KIND.  EPSON AND ITS SUPPLIERS DO
   NOT AND CANNOT WARRANT THE PERFORMANCE OR RESULTS YOU MAY OBTAIN BY
   USING THE SOFTWARE.  THE FOREGOING STATES THE SOLE AND EXCLUSIVE
   REMEDIES FOR EPSON'S AND ITS SUPPLIERS' BREACH OF WARRANTY.  EXCEPT
   FOR THE FOREGOING LIMITED WARRANTY, EPSON AND ITS SUPPLIERS MAKE NO
   WARRANTIES, EXPRESS OR IMPLIED, AS TO NON-INFRINGEMENT,
   MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE.  Some states
   or jurisdictions do not allow the exclusion of implied warranties
   or limitations on how long an implied warranty may last, so the
   above limitations may not apply to you.  This warranty gives you
   specific legal rights.  You may have other rights which vary from
   state to state or jurisdiction to jurisdiction.

   IN NO EVENT WILL EPSON OR ITS SUPPLIERS BE LIABLE TO YOU, WHETHER
   ARISING UNDER CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT
   LIABILITY, BREACH OR WARRANTY, MISREPRESENTATION OR OTHERWISE, FOR
   ANY DIRECT, CONSEQUENTIAL, INCIDENTAL OR SPECIAL DAMAGES, INCLUDING
   ANY LOST PROFITS OR LOST SAVINGS, EVEN IF EPSON, ITS SUPPLIERS OR
   ANY REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
   DAMAGES, OR FOR ANY CLAIM BY ANY THIRD PARTY.  IN NO EVENT SHALL
   EPSON'S OR ITS SUPPLIERS' LIABILITY UNDER THIS AGREEMENT EXCEED
   THE AMOUNT THAT EPSON RECEIVED FROM YOU UNDER THIS AGREEMENT.  Some
   states or jurisdictions, however, do not allow the exclusion or
   limitation of incidental, consequential or special damages, so the
   above limitations may not apply to you.

6. Termination.  Without prejudice to any other rights EPSON has, this
   Agreement shall automatically terminate upon failure by you to
   comply with its terms.  You may also terminate this Agreement at
   any time by uninstalling and destroying the Software and all copies
   thereof.

7. Governing Law and General Provisions.  This Agreement shall be
   governed and construed under by the laws of Japan without regard to
   its conflicts of law rules.  This Agreement is the entire agreement
   between the parties with respect to the Software, and supersedes
   any purchase order, communication, advertisement, or representation
   concerning the Software.  This Agreement shall be binding upon, and
   inure to the benefit of, the parties hereto and their respective
   successors, assigns and legal representatives.  If any provision
   herein is found void or unenforceable, it will not affect the
   validity of the balance of the Agreement, which shall remain valid
   and enforceable according to its terms.  This Agreement may only be
   modified in writing signed by an authorized officer of EPSON.

8. U.S. Government End Users.  If you are acquiring the Software on
   behalf of any unit or agency of the United States Government, the
   following provisions apply.  The Government agrees: (i) if the
   Software is supplied to the Department of Defense (DoD), the
   Software is classified as "Commercial Computer Software" and the
   Government is acquiring only "restricted rights" in the Software
   and its documentation as that term is defined in Clause
   252.227-7013(c)(1) of the DFARS; and (ii) if the Software is
   supplied to any unit or agency of the United States Government
   other than DoD, the Government's rights in the Software and its
   documentation will be as defined in Clause 52.227-19(c)(2) of the
   FAR or, in the case of NASA, in Clause 18-52.227-86(d) of the NASA
   Supplement to the FAR.


EPSON EULA 07/01/2001
