End-user Software Download License Agreement

Please read this document carefully before proceeding. This Software License
Agreement (the Agreement) licenses the software to you and contains warranty
and liability disclaimers. By opening the package or installing or using the
software, you are confirming your acceptance of the software and agreeing to
become bound by the terms of this Agreement.

1. Definitions.

(a) Open Source Software is defined in Section 5 below.
(b) 3ware Software means the software program covered by this Agreement, and
    all related updates supplied by 3ware.
(c) 3ware Product means the 3ware Software and any related documentation,
	models and multimedia content (such as animation, sound and graphics), and
	all related updates supplied by 3ware.

2. License. This Agreement allows you to:

(a) Use the 3ware Product on a single computer.

(b) Make one copy of the 3ware Product in machine-readable form solely for
	backup purposes. You must reproduce on any such copy all copyright notices
	and any other proprietary legends found on the original.

(c) Certain rights are not granted under this Agreement, but may be
	available under a separate agreement. If you would like to enter into a
	Site or Network License, please contact 3ware.

3. Restrictions.

You may not make or distribute copies of the 3ware Product, or electronically
transfer the software from one computer to another over a network. You may not
use the software from multiple locations of a multi-user or networked system at
any one time. The software contains trade secrets and in order to protect them,
you may not de-compile, reverse engineer, disassemble, or otherwise reduce the
3ware Software to a human-perceivable form. You may not modify, sell, rent,
transfer, sublicense, resell for profit, network, distribute or create
derivative works based upon the 3ware Product or any part thereof. You will not
export or re-export, directly or indirectly, the 3ware Product into any country
prohibited by the United States Export Administration Act and the regulations
thereunder.

4. Ownership.

The foregoing license gives you limited rights to use the 3ware Product. You do
not become the owner of, and 3ware and, if applicable, any licensors, retain
title to, the 3ware Product, and all copies, regardless of form or media,
thereof. All rights not specifically granted in this Agreement, including
Federal and International Copyrights, are reserved by 3ware.

5. Open Source Software.

Notwithstanding anything to the contrary, the licenses set forth in this
Agreement do not extend to software or materials which may be made available by
3ware, or otherwise obtained or used by you, subject to a General Public
License (GPL), Library General Public License (LGPL) (copies of which are
available on the world wide web at http://www.gnu.org/copyleft/gpl.html) or
other open source terms (collectively, Open Source Software). You agree that
all Open Source Software (if any) shall be and shall remain subject to the
terms and conditions under which it is provided. It is understood that such
terms and conditions may require the source code (including derivative works
and collective works) to be made available to the public for use in accordance
with the applicable open source terms and conditions.  You agree not to use or
combine the Open Source Software with the 3ware Software or Product or other
items in any manner that would subject the 3ware Software or Product or 3wares
confidential information to open source terms and conditions.

6. Term.

This license is effective until terminated. You may terminate it at any time by
destroying the Software and documentation together with all copies and merged
portions in any form. It will also terminate immediately if you fail to comply
with any term or condition of this License Agreement. Upon such termination you
agree to destroy the Software and documentation, together with all copies and
merged portions in any form.

7. Disclaimer of warranties and of technical support.

THE 3WARE PRODUCT IS PROVIDED TO YOU FREE OF CHARGE, AND ON AN "AS IS" BASIS,
WITHOUT ANY TECHNICAL SUPPORT OR WARRANTY OF ANY KIND FROM 3WARE INCLUDING,
WITHOUT LIMITATION, A WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NON-INFRINGEMENT. SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED
WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE
OTHER LEGAL RIGHTS WHICH VARY FROM STATE TO STATE. THESE LIMITATIONS OR
EXCLUSIONS OF WARRANTIES AND LIABILITY DO NOT AFFECT OR PREJUDICE THE STATUTORY
RIGHTS OF A CONSUMER; I.E., A PERSON ACQUIRING GOODS OTHERWISE THAN IN THE
COURSE OF A BUSINESS.

8. Limitation of damages.

NEITHER 3WARE NOR ITS SUPPLIERS SHALL BE LIABLE FOR ANY INDIRECT, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES OR LOSS (INCLUDING DAMAGES FOR LOSS OF
BUSINESS, LOSS OF PROFITS, OR THE LIKE), WHETHER BASED ON BREACH OF CONTRACT,
TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, EVEN IF 3WARE OR
ITS REPRESENTATIVES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME
STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION OR EXCLUSION MAY NOT APPLY TO YOU.
THE LIMITED WARRANTY, EXCLUSIVE REMEDIES AND LIMITED LIABILITY SET FORTH ABOVE
ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN 3WARE AND YOU. YOU
AGREE THAT 3WARE WOULD NOT BE ABLE TO PROVIDE THE 3WARE SOFTWARE ON AN ECONOMIC
BASIS WITHOUT SUCH LIMITATIONS.

9. Export.

You acknowledge that the laws and regulations of the United States restrict the
export and re-export of Software. You agree that you will not export or
re-export the Software or media in any form without the appropriate United
States and foreign government approval.

10.Government end users (USA only).

RESTRICTED RIGHTS LEGEND The 3ware Software is "Restricted Computer Software."
Use, duplication, or disclosure by the U.S. Government is subject to
restrictions as set forth in this Agreement and as provided in DFARS
227.7202-1(a) and 227.7202-3(a) (1995), DFARS 252.227-7013 (OCT 1988), FAR
12.212(a)(1995), FAR 52.227-19, or FAR 52.227-14, as applicable." Manufacturer:
3ware, Inc., 455 West Maude Avenue, Sunnyvale, California 94085.

11. General.

This Agreement shall be governed by the internal laws of the State of
California. This Agreement contains the complete agreement between the parties
with respect to the subject matter hereof, and supersedes all prior or
contemporaneous agreements or understandings, whether oral or written. This
Agreement may be amended only in writing, signed by both parties. Any attempted
oral modification shall be void and without any effect. All questions
concerning this Agreement shall be directed to: 3ware, Inc., 455 West Maude
Avenue, Sunnyvale, California 94085. Attention: General Counsel.  DiskSwitch
End-User Software Download License Agreement 6/14/02
