<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0040)http://www.openafs.org/dl/license10.html -->
<HTML><HEAD><TITLE>IBM Public License Version 1.0</TITLE>
<META content="IBM Public License Version 1.0" name=ABSTRACT>
<META content="IBM Public License Version 1.0" name=DESCRIPTION>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1491" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=2 topMargin=2 marginheight="2" 
marginwidth="2">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD width=5 rowSpan=2><SPACER width="5" type="block"></TD>
    <TD vAlign=top><BR><FONT face="HELVETICA, HELV, ARIAL" size=+1>IBM Public 
      License Version 1.0</FONT> <FONT face="HELVETICA, HELV, ARIAL" size=-1>
      <P><FONT size=2>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF 
      THIS IBM PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR 
      DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS 
      AGREEMENT.</FONT> 
      <P><FONT size=2></FONT>
      <P><FONT size=2><B>1. DEFINITIONS</B></FONT> 
      <P><FONT size=2>"Contribution" means: </FONT>
      <UL><FONT size=2>a) in the case of International Business Machines 
        Corporation ("IBM"), the Original Program, and </FONT></UL>
      <UL><FONT size=2>b) in the case of each Contributor, </FONT></UL>
      <UL><FONT size=2>i) changes to the Program, and</FONT></UL>
      <UL><FONT size=2>ii) additions to the Program;</FONT></UL>
      <UL><FONT size=2>where such changes and/or additions to the Program 
        originate from and are distributed by that particular Contributor. 
        </FONT><FONT size=2>A Contribution 'originates' from a Contributor if it 
        was added to the Program by such Contributor itself or anyone acting on 
        such Contributor's behalf. </FONT><FONT size=2>Contributions do not 
        include additions to the Program which: (i) are separate modules of 
        software distributed in conjunction with the Program under their own 
        license agreement, and (ii) are not derivative works of the 
        Program.</FONT></UL>
      <P><FONT size=2></FONT>
      <P><FONT size=2>"Contributor" means IBM and any other entity that 
      distributes the Program.</FONT> 
      <P><FONT size=2></FONT><FONT size=2></FONT>
      <P><FONT size=2>"Licensed Patents " mean patent claims licensable by a 
      Contributor which are necessarily infringed by the use or sale of its 
      Contribution alone or when combined with the Program. </FONT>
      <P><FONT size=2></FONT><FONT size=2></FONT>
      <P><FONT size=2>"Original Program" means the original version of the 
      software accompanying this Agreement as released by IBM, including source 
      code, object code and documentation, if any.</FONT> 
      <P><FONT size=2></FONT>
      <P><FONT size=2></FONT><FONT size=2>"Program" means the Original Program 
      and Contributions.</FONT> 
      <P><FONT size=2></FONT>
      <P><FONT size=2>"Recipient" means anyone who receives the Program under 
      this Agreement, including all Contributors.</FONT> 
      <P><FONT size=2><B></B></FONT>
      <P><FONT size=2><B>2. GRANT OF RIGHTS</B></FONT> 
      <UL><FONT size=2></FONT><FONT size=2>a) </FONT><FONT size=2>Subject to 
        the terms of this Agreement, each Contributor hereby grants</FONT><FONT 
        size=2> Recipient a non-exclusive, worldwide, royalty-free copyright 
        license to<FONT color=#ff0000> </FONT></FONT><FONT size=2>reproduce, 
        prepare derivative works of, publicly display, publicly perform, 
        distribute and sublicense the Contribution of such Contributor, if any, 
        and such derivative works, in source code and object code 
form.</FONT></UL>
      <UL><FONT size=2></FONT></UL>
      <UL><FONT size=2></FONT><FONT size=2>b) Subject to the terms of this 
        Agreement, each Contributor hereby grants </FONT><FONT size=2>Recipient 
        a non-exclusive, worldwide,<FONT color=#008000> </FONT></FONT><FONT 
        size=2>royalty-free patent license under Licensed Patents to make, use, 
        sell, offer to sell, import and otherwise transfer the Contribution of 
        such Contributor, if any, in source code and object code form. This 
        patent license shall apply to the combination of the Contribution and 
        the Program if, at the time the Contribution is added by the 
        Contributor, such addition of the Contribution causes such combination 
        to be covered by the Licensed Patents. The patent license shall not 
        apply to any other combinations which include the Contribution. No 
        hardware per se is licensed hereunder. </FONT></UL>
      <UL><FONT size=2></FONT></UL>
      <UL><FONT size=2>c) Recipient understands that although each Contributor 
        grants the licenses to its Contributions set forth herein, no assurances 
        are provided by any Contributor that the Program does not infringe the 
        patent or other intellectual property rights of any other entity. Each 
        Contributor disclaims any liability to Recipient for claims brought by 
        any other entity based on infringement of intellectual property rights 
        or otherwise. As a condition to exercising the rights and licenses 
        granted hereunder, each Recipient hereby assumes sole responsibility to 
        secure any other intellectual property rights needed, if any. For 
        example, if a third party patent license is required to allow Recipient 
        to distribute the Program, it is Recipient's responsibility to acquire 
        that license before distributing the Program.</FONT></UL>
      <UL><FONT size=2></FONT></UL>
      <UL><FONT size=2>d) Each Contributor represents that to its knowledge it 
        has sufficient copyright rights in its Contribution, if any, to grant 
        the copyright license set forth in this Agreement. </FONT></UL>
      <UL><FONT size=2></FONT></UL>
      <P><FONT size=2><B>3. REQUIREMENTS</B></FONT> 
      <P><FONT size=2><B></B>A Contributor may choose to distribute the Program 
      in object code form under its own license agreement, provided that:</FONT> 

      <UL><FONT size=2>a) it complies with the terms and conditions of this 
        Agreement; and</FONT></UL>
      <UL><FONT size=2>b) its license agreement:</FONT></UL>
      <UL><FONT size=2>i) effectively disclaims on behalf of all Contributors 
        all warranties and conditions, express and implied, including warranties 
        or conditions of title and non-infringement, and implied warranties or 
        conditions of merchantability and fitness for a particular purpose; 
        </FONT></UL>
      <UL><FONT size=2>ii) effectively excludes on behalf of all Contributors 
        all liability for damages, including direct, indirect, special, 
        incidental and consequential damages, such as lost profits; </FONT></UL>
      <UL><FONT size=2>iii) states that any provisions which differ from this 
        Agreement are offered by that Contributor alone and not by any other 
        party; and</FONT></UL>
      <UL><FONT size=2>iv) states that source code for the Program is 
        available from such Contributor, and informs licensees how to obtain it 
        in a reasonable manner on or through a medium customarily used for 
        software exchange.<FONT color=#0000ff> </FONT><FONT 
        color=#ff0000></FONT></FONT></UL>
      <UL><FONT size=2><FONT color=#ff0000></FONT></FONT><FONT 
      size=2></FONT></UL>
      <P><FONT size=2>When the Program is made available in source code 
      form:</FONT> 
      <UL><FONT size=2>a) it must be made available under this Agreement; and 
        </FONT></UL>
      <UL><FONT size=2>b) a copy of this Agreement must be included with each 
        copy of the Program. </FONT></UL>
      <P><FONT size=2><FONT color=#0000ff></FONT></FONT>
      <P><FONT size=2><FONT color=#0000ff></FONT></FONT><FONT size=2>Each 
      Contributor must include the following in a conspicuous location in the 
      Program: </FONT>
      <P><FONT size=2></FONT>
      <UL><FONT size=2>Copyright ©<FONT color=#ff0000> </FONT><FONT 
        color=green>{date here}</FONT></FONT><FONT size=2>, International 
        Business Machines Corporation and others. All Rights Reserved. 
</FONT></UL>
      <P><FONT size=2></FONT>
      <P><FONT size=2>In addition, each Contributor must identify itself as the 
      originator of its Contribution, if any, in a manner that reasonably allows 
      subsequent Recipients to identify the originator of the Contribution. 
      </FONT>
      <P><FONT size=2></FONT>
      <P><FONT size=2><B>4. COMMERCIAL DISTRIBUTION</B></FONT> 
      <P><FONT size=2>Commercial distributors of software may accept certain 
      responsibilities with respect to end users, business partners and the 
      like. While this license is intended to facilitate the commercial use of 
      the Program, the Contributor who includes the Program in a commercial 
      product offering should do so in a manner which does not create potential 
      liability for other Contributors. Therefore, if a Contributor includes the 
      Program in a commercial product offering, such Contributor ("Commercial 
      Contributor") hereby agrees to defend and indemnify every other 
      Contributor ("Indemnified Contributor") against any losses, damages and 
      costs (collectively "Losses") arising from claims, lawsuits and other 
      legal actions brought by a third party against the Indemnified Contributor 
      to the extent caused by the acts or omissions of such Commercial 
      Contributor in connection with its distribution of the Program in a 
      commercial product offering. The obligations in this section do not apply 
      to any claims or Losses relating to any actual or alleged intellectual 
      property infringement. In order to qualify, an Indemnified Contributor 
      must: a) promptly notify the Commercial Contributor in writing of such 
      claim, and b) allow the Commercial Contributor to control, and cooperate 
      with the Commercial Contributor in, the defense and any related settlement 
      negotiations. The Indemnified Contributor may participate in any such 
      claim at its own expense.</FONT> 
      <P><FONT size=2></FONT>
      <P><FONT size=2>For example, a Contributor might include the Program in a 
      commercial product offering, Product X. That Contributor is then a 
      Commercial Contributor. If that Commercial Contributor then makes 
      performance claims, or offers warranties related to Product X, those 
      performance claims and warranties are such Commercial Contributor's 
      responsibility alone. Under this section, the Commercial Contributor would 
      have to defend claims against the other Contributors related to those 
      performance claims and warranties, and if a court requires any other 
      Contributor to pay any damages as a result, the Commercial Contributor 
      must pay those damages.</FONT> 
      <P><FONT size=2><FONT color=#0000ff></FONT></FONT>
      <P><FONT size=2><FONT color=#0000ff></FONT></FONT><FONT size=2><B>5. NO 
      WARRANTY</B></FONT> 
      <P><FONT size=2>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE 
      PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
      OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY 
      WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR 
      FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is</FONT><FONT size=2> 
      solely responsible for determining the appropriateness of using and 
      distributing </FONT><FONT size=2>the Program</FONT><FONT size=2> and 
      assumes all risks associated with its exercise of rights under this 
      Agreement</FONT><FONT size=2>, including but not limited to the risks and 
      costs of program errors, compliance with applicable laws, damage to or 
      loss of data, </FONT><FONT size=2>programs or equipment, and 
      unavailability or interruption of operations</FONT><FONT size=2>. 
      </FONT><FONT size=2></FONT>
      <P><FONT size=2></FONT>
      <P><FONT size=2></FONT><FONT size=2><B>6. DISCLAIMER OF 
      LIABILITY</B></FONT> 
      <P><FONT size=2></FONT><FONT size=2>EXCEPT AS EXPRESSLY SET FORTH IN THIS 
      AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY 
      FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
      DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON 
      ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR 
      DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 
      HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</FONT> 
      <P><FONT size=2></FONT><FONT size=2></FONT>
      <P><FONT size=2><B>7. GENERAL</B></FONT> 
      <P><FONT size=2></FONT><FONT size=2>If any provision of this Agreement is 
      invalid or unenforceable under applicable law, it shall not affect the 
      validity or enforceability of the remainder of the terms of this 
      Agreement, and without further action by the parties hereto, such 
      provision shall be reformed to the minimum extent necessary to make such 
      provision valid and enforceable.</FONT> 
      <P><FONT size=2></FONT>
      <P><FONT size=2>If Recipient institutes patent litigation against a 
      Contributor with respect to a patent applicable to software (including a 
      cross-claim or counterclaim in a lawsuit), then any patent licenses 
      granted by that Contributor to such Recipient under this Agreement shall 
      terminate as of the date such litigation is filed. In addition, If 
      Recipient institutes patent litigation against any entity (including a 
      cross-claim or counterclaim in a lawsuit) alleging that the Program itself 
      (excluding combinations of the Program with other software or hardware) 
      infringes such Recipient's patent(s), then such Recipient's rights granted 
      under Section 2(b) shall terminate as of the date such litigation is 
      filed. </FONT><FONT size=2></FONT>
      <P><FONT size=2></FONT>
      <P><FONT size=2>All Recipient's rights under this Agreement shall 
      terminate if it fails to comply with any of the material terms or 
      conditions of this Agreement and does not cure such failure in a 
      reasonable period of time after becoming aware of such noncompliance. If 
      all Recipient's rights under this Agreement terminate, Recipient agrees to 
      cease use and distribution of the Program as soon as reasonably 
      practicable. However, Recipient's obligations under this Agreement and any 
      licenses granted by Recipient relating to the Program shall continue and 
      survive. </FONT><FONT size=2></FONT>
      <P><FONT size=2></FONT>
      <P><FONT size=2></FONT><FONT size=2>IBM may publish new versions 
      (including revisions) of this Agreement from time to time. Each new 
      version of the Agreement will be given a distinguishing version number. 
      The Program (including Contributions) may always be distributed subject to 
      the version of the Agreement under which it was received. In addition, 
      after a new version of the Agreement is published, Contributor may elect 
      to distribute the Program (including its Contributions) under the new 
      version. No one other than IBM has the right to modify this 
      Agreement</FONT><FONT size=2>. </FONT><FONT size=2>Except as expressly 
      stated in Sections 2(a) and 2(b) above, Recipient receives no rights or 
      licenses to the intellectual property of any Contributor under this 
      Agreement, whether expressly, </FONT><FONT size=2>by implication, estoppel 
      or otherwise</FONT><FONT size=2>.</FONT><FONT size=2> All rights in the 
      Program not expressly granted under this Agreement are reserved.</FONT> 
      <P><FONT size=2></FONT>
      <P><FONT size=2>This Agreement is governed by the laws of the State of New 
      York and the intellectual property laws of the United States of America. 
      No party to this Agreement will bring a legal action under this Agreement 
      more than one year after the cause of action arose.</FONT><FONT size=2> 
      Each party waives its rights to a jury trial in any resulting litigation. 
      </FONT></P></FONT></TD></TR></TBODY></TABLE></BODY></HTML>
