Software End User License Agreement


PLEASE READ CAREFULLY THE LICENSE AGREEMENT BELOW BEFORE OPENING THE PACKAGE OF
THIS SOFTWARE ("SOFTWARE"), DOWNLOADING, INSTALLING OR USING THE SOFTWARE.
OPENING THE PACKAGE, OR DOWNLOADING, INSTALLING OR USING THE SOFTWARE SHALL BE
DEEMED YOUR LAWFUL ACCEPTANCE OF THE TERMS AND CONDITIONS BELOW. IF YOU DO NOT
AGREE TO THEM, DO NOT DOWNLOAD, INSTALL, USE THE SOFTWARE, NOR OPEN THE PACKAGE.


1. COPYRIGHT AND INTELLECTUAL PROPERTY RIGHTS This is a license agreement and
not an agreement for sale. KONICA MINOLTA, INC. ("KONICA MINOLTA") owns, or has
been licensed from other owners ("KONICA MINOLTA Licensor"), copyrights and
other intellectual property rights of the Software, and any and all rights and
title to the Software and any copy made from it are retained by KONICA MINOLTA
or KONICA MINOLTA Licensor. In no event, this Agreement shall be deemed to
assign any copyright and/or any intellectual property rights of the Software
from KONICA MINOLTA or KONICA MINOLTA Licensor to you. The Software is protected
by copyright laws and international treaty provisions.

2. LICENSE KONICA MINOLTA hereby grants to you a non-exclusive and limited
license, and you may: (i) install and use the Software only on your computer(s)
connected with a product for which this Software is designed; (ii) allow users
of the computers described above to use the Software, provided that you assure
that all such users comply with the terms of this Agreement; (iii) use the
Software only for your own customary business or personal purpose; (iv) make one
copy of the Software only for backup purpose in the support of the normal and
intended use of the Software; (v) transfer the Software to other party by
transferring a copy of this Agreement and all documentation along with the
Software, provided that (a) you must, at the same time, either transfer to such
other party or destroy all your other copies of the Software, (b) such transfer
of possession terminates your license from KONICA MINOLTA, and (c) you must
assure that such other party has agreed to accept the terms and conditions of
this Agreement. If such other party does not accept such terms and conditions
then you shall not transfer any copy of the Software.

3. RESTRICTIONS (1) You shall not without the written consent of KONICA MINOLTA:
(i)  use, copy, modify, merge or transfer copies of the Software except as
provided herein; (ii)  reverse engineer, reverse assemble, reverse compile or
any other way analyze the Software; (iii)  sublicense, rent, lease or distribute
the Software or any copy thereof; or (iv)  remove, use, or alter any trademark,
logo, copyright or other proprietary notices, legends, symbols or labels in the
Software.  (2) You agree that you will not export the Software in any form in
violation of any applicable laws and regulations regarding export control of any
country.

4. DISCLAIMER OF WARRANTIES (1) If the Software is furnished on CD-ROM(s) or
other tangible object that is used for storage of digital data (hereinafter
collectively "Storage Medium"), KONICA MINOLTA warrants the Storage Medium to be
free from the defects in material and workmanship under normal use, for a period
of ninety (90) days from the date of delivery to you. WITH THE EXCEPTION OF THE
FOREGOING EXPRESS WARRANTIES APPLICABLE TO STORAGE MEDIUM ONLY, THE SOFTWARE IS
PROVIDED TO YOU "AS IS" WITHOUT ANY WARRANTIES WHATSOEVER. KONICA MINOLTA, ITS
AFFILIATE COMPANIES AND KONICA MINOLTA LICENSOR DISCLAIM ALL WARRANTIES WITH
REGARD TO THE SOFTWARE, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NON-INFRINGEMENT OF THIRD PARTY RIGHTS.  (2) IN NO EVENT WILL KONICA MINOLTA,
ITS AFFILIATE COMPANIES NOR KONICA MINOLTA LICENSOR BE LIABLE FOR ANY LOST
PROFITS, LOST DATA, OR ANY OTHER INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR
CONSEQUENTIAL DAMAGES THAT RESULT FROM USE OR INABILITY TO USE THE SOFTWARE
INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, COMPUTER FAILURE OR
MALFUNCTION OR ANY AND ALL OTHER COMMERCIAL OR OTHER DAMAGES OR LOSSES, EVEN IF
KONICA MINOLTA, ITS AFFILIATE COMPANIES OR KONICA MINOLTA LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR FOR ANY CLAIM BY YOU BASED ON A
THIRD PARTY CLAIM.  (3) The disclaimer of warranty hereunder does not affect
your statutory rights. In case of the disclaimer is not allowed by applicable
law, the disclaimer shall only apply to you to the maximum extent permitted by
the law.

5. TERMINATION You may terminate this license at any time by destroying the
Software and all your copies of it. This Agreement shall also terminate if you
fail to comply with any terms hereof. Upon such termination, you must
immediately destroy all copies of the Software in your possession.

6. GOVERNING LAW This Agreement shall be governed by the laws of Japan.

7. SEVERABILITY In the event that any part or parts of this agreement shall be
held illegal or null and void by any court or administrative body of competent
jurisdiction, such determination shall not effect the remaining parts of this
agreement and they shall remain in full force and effect as if such part or
parts determined illegal or void had not been included.

8. NOTICE TO US GOVERNMENT END USERS The Software is a "commercial item," as
that term is defined at 48 C.F.R. 2.101 (October 1995), consisting of
"commercial computer software" and "commercial computer software documentation,"
as such terms are used in 48 C.F.R. 12.212 (September 1995).  Consistent with 48
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
Government End Users shall acquire the Software with only those rights set forth
herein.


YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, UNDERSTAND IT, AND AGREE TO
BE BOUND BY ITS TERMS AND CONDITIONS. NEITHER PARTY SHALL BE BOUND BY ANY OTHER
STATEMENTS OR REPRESENTATIONS THAT ARE INCONSISTENT WITH THE TERMS AND
CONDITIONS OF THIS AGREEMENT.  NO AMENDMENT TO THIS AGREEMENT IS EFFECTIVE
UNLESS WRITTEN AND SIGNED BY PROPERLY AUTHORIZED REPRESENTATIVES OF EACH PARTY.
BY OPENING THE PACKAGE, DOWNLOADING, INSTALLING OR USING THE SOFTWARE YOU AGREE
TO ACCEPT THE TERMS OF THIS AGREEMENT.
