1
EXHIBIT 10.12
LICENSE AGREEMENT
THIS LICENSE AGREEMENT (the "Agreement") is made and entered into this
16th day of February, 1996("Effective Date"), by and between MICROSOFT
CORPORATION, a Washington corporation ("Microsoft"), with its principal offices
located at Xxx Xxxxxxxxx Xxx, Xxxxxxx, Xxxxxxxxxx 00000 and STAC,INC., a
California corporation ("Stac"), with its principle offices located at 00000
Xxxx Xxxxx Xxxxx, Xxxxx 000, Xxx Xxxxx, Xxxxxxxxxx 00000-0000.
RECITALS
WHEREAS, Stac is the owner of certain patents relating to lossless data
compression and decompression;
WHEREAS, pursuant to a License Agreement dated June 20, 1994 (the
"Patent Agreement"), Stac has previously granted Microsoft certain license
rights to make, use and sell Microsoft computer software products which embody
certain patents owned by Stac;
WHEREAS, Microsoft has developed a data compression and decompression
format known as "Microsoft Point-to-Point Compression" products;
WHEREAS, Microsoft has developed certain software that performs data
compression and decompression in accordance with MPPC;
WHEREAS, Stac desires to license to third parties Microsoft's MPPC-based
software or Stac software based on MPPC;
NOW, THEREFORE, in consideration of the mutual covenants and agreements
contained herein, the parties hereby agree as follows:
AGREEMENT
1. DEFINITIONS. For purposes of this Agreement, the following terms,
whenever initially capitalized, shall have the following meanings;
(a) "SPECIFICATION" shall mean the specification developed by
Microsoft for the "Microsoft Point-to-Point Compression"
technology attached hereto as Exhibit A (entitled "Microsoft PPP
Data Compression"), and any modifications and additions to the
specification. The Specification includes a description of the
mechanism for negotiating and transporting compressed data
packets using the MPPC Compression Format (defined below).
2
(b) "MICROSOFT MPPC SOFTWARE" shall mean the Microsoft developed
compression software which implements the MPPC Compression Format
(defined below) and which is more fully described in the Exhibit
B. "OPTIMIZED MICROSOFT MPPC SOFTWARE" shall mean the Microsoft
MPPC Software which has been modified and optimized by Microsoft
to run more efficiently, while Microsoft "UN-OPTIMIZED MICROSOFT
MPPC SOFTWARE" shall mean the Microsoft MPPC Software as
delivered to Stac by Microsoft on September 28, 1995 which has
not been so modified and optimized.
(c) "STAC MPPC SOFTWARE" shall mean the Stac developed compression
software that performs data compression in accordance with the
MPPC Compression Format.
(d) "MPPC COMPRESSION FORMAT" shall mean the compression encoding
format defined in the Specification as the encoding format for
MPPC.
(e) "LZS SOFTWARE" shall mean that certain Stac developed software
known as "LZS221-C" software as more fully described in Exhibit C
attached hereto.
(f) "INTELLECTUAL PROPERTY RIGHTS" shall mean copyrights, patents,
trade secrets, inventions, processes, know-how, or any other
intellectual property rights.
(g) "OBJECT CODE" shall mean machine executable code in binary
format.
(h) "SOURCE CODE" shall mean software in human-readable, high-level
language or assembly language form, from which Object Code can be
generated when compiled or assembled.
2. LICENSE GRANT TO STAC FOR MPPC SOFTWARE.
(a) DELIVERY AND LICENSE GRANT FOR MICROSOFT MPPC SOFTWARE. On or
before the Effective Date, Microsoft shall deliver to Stac one
(1) copy of the Optimized Microsoft MPPC Software in both Source
Code and Object Code forms. Stac acknowledges Microsoft delivered
the Un-optimized Microsoft MPPC Software on September 28, 1995 in
Source and Object Code forms. Effective upon such delivery and
for the remainder of the term of this Agreement, Microsoft hereby
grants to Stac, under all applicable Intellectual Property
Rights, the following royalty-free, non-exclusive,
non-transferable, worldwide license rights:
(i) To use, copy, modify, and create derivative works of the
Microsoft MPPC Software (including any updates or upgrades
delivered to Stac hereunder) in order to create the Stac
MPPC Software;
2
3
(ii) To grant third parties the right to integrate into their
products ("MPPC Enabled Products") either (A) any Microsoft MPPC Software
(including any updates or upgrades delivered to Stac hereunder) which is
incorporated into Stac MPPC Software, or (B) Microsoft MPPC Software (including
any updates or upgrades delivered to Stac hereunder), or (C) Stac MPPC Software;
(iii) To grant third parties the right to make, use copy,
distribute (directly or indirectly), license or sell, rent, or lease copies of
MPPC Enabled Products for the purpose of exchanging compressed data with any
product that implements the MPPC Compression Format.
(iv) Microsoft hereby grants to Stac the right, under applicable
Microsoft patents, to perform data compression in the Stac MPPC Software in
accordance with the MPPC Compression Format.
All rights not expressly granted are expressly reserved by Microsoft.
(b) DELIVERY AND LICENSE GRANT FOR TESTING TOOL. As soon as possible
after the Effective Date, Microsoft shall deliver the most current version (in
Object Code form) of the software tool described in the attached Exhibit D
("Test Tool") which will be used to verify and test the compliance of the Stac
MPPC Software with the Performance and Compatibility Standards required by
Section 3 of this Agreement. Microsoft will also provide Stac with any updated
versions of the Tool used by Microsoft during the term of this Agreement to
verify and test compliance of the Stac MPPC Software with the Performance and
Compatibility Standards. Microsoft hereby grants Stac a license to use the Test
Tool, in Object Code form, for the sole purpose of verifying and testing the
Stac MPPC Software for compliance with the Performance and Compatibility
Standards.
All rights not expressly granted are expressly reserved by Microsoft.
(c) LICENSE RESTRICTIONS AND CONDITIONS.
(i) Stac shall market, distribute, and license the Un-optimized
MPPC Software on the same terms and conditions as it licenses it un-optimized
LZS Software, including without limitation, price. In connection with the
foregoing, Stac shall distribute and license the Un-optimized Microsoft MPPC
Software pursuant to distributor and end user license agreements which shall
conform substantially to the license agreements under which it licenses its LZS
Software.
(ii) Stac will not remove any copyright, trademark or patent
notices that appear on, or are contained in, the Microsoft MPPC Software as
delivered to Stac. Stac shall cause to appear on the title page of each volume
of the Microsoft MPPC Software documentation distributed by Stac (if any), and
at any other location where any copyright, patent or trademark notice appears,
the Microsoft and third party copyright, patent or trademark notices that appear
in the release of the Microsft MPPC Software provided by
3
4
Microsoft. Stac shall contractually obligate any third parties to which it
grants rights to distribute the Microsoft MPPC Software to comply with the
foregoing.
(iii) Stac may use third party contractors or consultants to
exercise the rights granted hereunder. In the event Stac utilizes a contractor
or consultant as described above. Stac shall execute written agreements with
such contractor or consultant sufficient to enable Stac and the contractor or
consultant to comply with the terms of this Agreement.
3. STAC MPPC SOFTWARE.
(a) INITIAL DEVELOPMENT OF STAC MPPC SOFTWARE. Stac shall develop and
deliver a beta version of the Stac MPPC Software to Microsoft within thirty (30)
days of Microsoft's delivery of the Optimized Microsoft MPPC Software to Stac.
Microsoft shall evaluate the Stac MPPC Software to determine whether it meets
the Performance Standards and Compatibility Standards described in the attached
Exhibit E. Microsoft shall notify Stac in writing of any failure(s) of the Stac
MPPC Software to meet the Performance Standards and Compatibility Standards,
within thirty (30) days of Microsoft's receipt of the beta version of the Stac
MPPC Software. Stac shall correct any such failure(s) and resubmit the Software
to Microsoft for re-evaluation within sixty (60) days of the end of Microsoft's
thirty day notification period. In the event the corrected version of the Stac
MPPC Software does not meet the Performance Standards and Compatibility
Standards or Stac does not deliver the corrected version within the sixty (60)
day period, Microsoft shall automatically have the rights set forth in Section
3(f), subject to paragraph (b) below.
(b) ONE-TIME PERFORMANCE EXCEPTION. In the event the initial version of
Stac MPPC Software (including any corrections made during a permitted correction
period as provided in paragraph (a) above) delivered to Microsoft fails to meet
the Performance Standards by twenty percent or less, Stac shall have the right
to distribute that version of the Stac MPPC Software as permitted in Section 2.
Stac shall use reasonable efforts to improve the performance of such initial
version in the event Stac distributes it to third parties. However, in the event
Microsoft makes any updates or upgrades to the MPPC Compression Format and/or
Microsoft MPPC Software, Stac shall achieve complete compliance with the
Performance Standards (as well as the Compatibility Standards). If Stac fails to
do so, Microsoft shall automatically have the rights set forth in Section 3(f)
below.
(c) FURTHER DEVELOPMENT OF STAC MPPC SOFTWARE. Following Microsoft's
confirmation that the initial Stac MPPC Software meets the Performance Standards
and Compatibility Standards as set forth in (a) above and subject to (b) above,
Stac shall maintain such Performance Standards and Compatibility Standards with
any updates or upgrades Microsoft makes to the MPPC Compression Format and/or
Microsoft MPPC Software. Microsoft will provide the applicable updated or
upgraded Source Code and Object Code of Microsoft MPPC Software (in beta (and
pre-beta if the code is sufficiently complete and stable) and final forms) and
any other materials reasonably
4
5
necessary to assist Stac in achieving such Standards, as soon as such software
and materials are available. Stac shall deliver the updated Source and Object
Code of Stac MPPC Software to Microsoft in beta and final release forms as soon
as possible upon completion of such releases. Stac shall use commercially
reasonable efforts to release the updated Stac MPPC Software in final form
simultaneously with Microsoft's release of the corresponding version of Windows
NT. In the event Stac does not release the final version of Stac.
5
6
MPPC Software compatible with an update or upgrade to Windows NT or such version
of Stac MPPC Software does not meet the Performance and Compatibility Standards
by the later of (i) four (4) months from Microsoft's initial beta release of an
update or upgrade or (ii) the commercial release of such Windows NT update or
upgrade, Microsoft shall automatically have the rights set forth in Section
3(f).
(d) DISTRIBUTION LICENSE. Upon completion Stac shall provide Microsoft
with Stac MPPC Software, in Source and Object Code forms including accompanying
documentation for Microsoft's distribution to third parties for use by third
parties in creating products compatible with the MPPC Compression Format.
Microsoft shall license the Stac MPPC Software under terms and conditions
described in the attached Exhibit E (Microsoft will provide Stac with a copy of
any such agreements in their final, fully executed form within a reasonable time
following execution). In the event Microsoft desires to materially change any of
the terms and conditions in Exhibit F, Microsoft shall notify Stac of the
requested change and Stac shall have ten (10) business days to approve or
disapprove the change, provided Stac shall not unreasonably withhold its
acceptance. If Stac fails to approve or disapprove a given change within the ten
day period, the change shall be deemed approved. In the event Microsoft enters
into an agreement with a third party that contains a material change to a term
in Exhibit F which Stac has not accepted, such change shall not be binding on
Stac.
(e) SPECIFICATION. Stac and Microsoft hereby agree and acknowledge that
each party shall have the right to reproduce and distribute the Specification to
any third party. Stac may submit the Specification to the Internet Engineering
Task Force (IETF) for adoption as a standard, provided Microsoft has approved in
advance the terms and conditions under which the IETF would adopt the
Specification, including the licensing of any intellectual property rights.
(f) CONTINGENT LICENSE TO MICROSOFT MPPC SOFTWARE AND STAC MPPC
SOFTWARE. In the event (i) Stac fails to meet the Performance and Compatibility
Standards as set forth in (a) or (b) above, or (ii) no longer offers or
announces its intent to discontinue offering Microsoft MPPC Software or Stac
MPPC Software to third parties, or (iii) Stac is in material breach of any
provision of this Agreement (and fails to cure such breach within 30 days of
notice), then Stac shall be deemed to have granted to Microsoft, under all
applicable Stac Intellectual Property Rights, a perpetual, irrevocable,
royalty-free (as to Microsoft), non-exclusive, worldwide license to: (1) make,
use, modify, and create derivative works of the Stac MPPC Software for the
purpose of enhancing the compression functionality of the MPPC Compression
Format of the Stac MPPC Software and maintaining compatibility between the Stac
MPPC Software and Windows and Windows NT (hereafter, "Microsoft Modifications"),
but not to add any new functionality to the MPPC Compression Format that is
covered by a Stac patent, (2) licensing third parties to make, have made, use,
and sell the Microsoft MPPC Software in conjunction with their products under
the terms and conditions described in the attached Exhibit F (Microsoft will
provide Stac with a copy of any such agreements in their final, fully executed
form within a reasonable time following execution), (3) license and distribute
the Stac MPPC Software (including Microsoft Modifications) under terms and
6
7
conditions described in the attached Exhibit F (Microsoft will provide Stac with
a copy of any such agreements in their final, fully executed form within a
reasonable time following execution). In the event Microsoft desires to
materially change any of the terms and conditions in Exhibit F, Microsoft shall
notify Stac of the requested change and Stac shall have ten (10) business days
to approve or disapprove the change, provided Stac shall not unreasonably
withhold its acceptance. If Stac fails to approve or disapprove a given change
within the ten day period, the change shall be deemed approved. In the event
Microsoft enters into an agreement with a third party that contains a material
change to a term in Exhibit F which Stac has not accepted, such change shall not
be binding on Stac.
Microsoft may use third party contractors or consultants to exercise the rights
granted hereunder. In the event Microsoft utilizes a contractor or consultant as
described above, Microsoft shall execute written agreements with such contractor
or consultant sufficient to enable Microsoft and the contractor or consultant to
comply with the terms of this Agreement. All rights not expressly granted are
expressly reserved by Stac.
(g) CONTINGENT LICENSE BACK TO STAC. In the event the license to
Microsoft set forth in paragraph 3(f) above becomes effective, Microsoft shall
be deemed to have granted to Stac, under all applicable Intellectual Property
Rights, a perpetual, irrevocable, royalty free, non-exclusive, worldwide license
to make, use, reproduce, distribute (directly or indirectly), and sell, rent or
lease copies of the Microsoft Modifications in conjunction with Stac MPPC
Software. Microsoft shall deliver all Microsoft Modifications to Stac, in Source
and Object Code forms, as soon as it delivers such Modifications to other third
parties. All rights not expressly granted are expressly reserved by Microsoft.
(h) INCORPORATION OF LZS. Upon Stac's request, Microsoft will evaluate
the possibility of integrating LZS into Windows NT. If, in Microsoft's judgment,
it is commercially reasonable to include LZS support in Windows NT, the parties
shall negotiate in good faith the terms and conditions for distribution of LZS
in Windows NT.
4. REPRESENTATIONS AND WARRANTIES.
(a) CORPORATE POWER. Each party hereby represents and warrants that it
is duly organized and validly existing under the laws of the state of its
incorporation and has full corporate power and authority to enter into this
Agreement and to carry out the provisions hereof.
(b) DUE AUTHORIZATION. Each party hereby represents and warrants that it
is duly authorized to execute and deliver this Agreement and to perform its
obligations hereunder.
7
8
(c) BINDING AGREEMENT. Each party hereby represents and warrants that
this Agreement is a legal and valid obligation binding upon it and enforceable
with its terms. The execution, delivery and performance of this Agreement by
such party does not conflict with any agreement, instrument or understanding,
oral or written, to which it is a party or by which it may be bound, nor violate
any law or regulation of any court, governmental body or administrative or other
agency having jurisdiction over it.
(d) MICROSOFT MPPC SOFTWARE. Microsoft hereby represents and warrants
that the Microsoft MPPC Software and Microsoft Modifications as developed by
Microsoft do not infringe the copyright or trademark rights of any third parties
and, to the best of Microsoft's knowledge, do not infringe the patent rights of
any third party.
(e) STAC MPPC SOFTWARE. Stac hereby represents and warrants that the
Stac MPPC Software as developed by Stac does not infringe the copyright or
trademark rights of any third parties and, to the best of Stac's knowledge, does
not infringe the patent rights of any third party.
5. INDEMNIFICATION. The parties agree to indemnify, defend, and hold each
other and their successors, officers, directors and employees harmless from any
and all actions, causes of action, claims, demands, costs, liabilities, expenses
(including, without limitation, attorneys' fees) and damages arising out of or
in connection with any claim which, if true, would be a breach of the
representations set forth in Section 4 of this Agreement. If any action shall be
brought against either party (the "Claimant") in respect to which indemnity may
be sought from the other party (the "Non-Claiming Party") pursuant to the
provisions of this Section, the Claimant shall promptly notify the Non-Claiming
Party in writing, specifying the nature of the action and the total monetary
amount sought or other such relief as is sought therein. The Claimant shall
cooperate with the Non-Claiming Party at the Non-Claiming Party's expense in all
reasonable respects in connection with the defense of any such action. The
Non-Claiming Party may, upon written notice thereof to Claimant, undertake to
conduct all proceedings or negotiations in connection therewith, assume the
defense thereof, and if it so undertakes, it shall also undertake all other
required steps or proceedings to settle or defend any such action; including the
employment of counsel which shall be reasonably satisfactory to Claimant, and
payment of all expenses. Claimant, at its own expense, shall have the right to
employ separate counsel and participate in the defense thereof. The Non-Claiming
Party shall reimburse Claimant upon demand for any payments made or loss
suffered by it at any time after the date hereof, based upon (i) the final
judgment of any court of competent jurisdiction, or (ii) pursuant to a bona fide
compromise or settlement of claims, demands, or actions as agreed to by the
Non-Claiming Party, in respect to any damages to which the foregoing relates.
6. DISCLAIMER; LIMITATION OF LIABILITY. EXCEPT AS OTHERWISE PROVIDED UNDER
THIS AGREEMENT, THE SOFTWARE LICENSED BY EACH PARTY TO THE OTHER PURSUANT TO
THIS AGREEMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY
REPRESENTATIONS OR WARRANTIES MADE BY EITHER PARTY TO ITS CUSTOMERS, EXPRESS OR
8
9
IMPLIED BY LAW OR OTHERWISE, REGARDING INTELLECTUAL PROPERTY ARE THE SOLE
RESPONSIBILITY OF SUCH PARTY. EACH DISCLAIMS ALL OTHER WARRANTIES, EITHER
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL EITHER
PARTY BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING WITHOUT LIMITATION,
CONSEQUENTIAL, INCIDENTAL, INDIRECT, DIRECT, ECONOMIC, PUNITIVE, LOSS OF
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER
PECUNIARY LOSS) EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
7. TERM AND TERMINATION.
(a) TERM. This Agreement shall be effective as of the Effective Date and
shall continue in force until the last to expire of any Stac patent rights
applicable to MPPC Compression Format, or until earlier terminated in accordance
with Section 7(b).
(b) TERMINATION. In the event that a party commits any of the following
events of default, the non-defaulting party may terminate this Agreement:
(i) if either party materially fails to perform or comply with
this Agreement or any provision hereof, including without limitation failure to
promptly file required reports or pay any amount(s) due hereunder;
(ii) if either party admits in writing its inability to pay its
debts as they mature, or makes an assignment for the benefit of creditors; or
(iii) if a petition under any bankruptcy act, receivership
statute, or the like, as they now exist, or as they may be amended, is filed by
either party; or if such a petition is filed by any third party, or an
application for a receiver of either party is made by anyone and such petition
or application is not resolved favorably to such party within sixty (60) days.
Termination shall be effective thirty (30) days after written notice of
termination to either party if such party's defaults have not been cured within
such thirty (30) day period. The rights and remedies of the defaulting party
provided in this Section shall not be exclusive and are in addition to any other
rights and remedies provided by law or this Agreement.
(c) RIGHTS AND OBLIGATIONS FOLLOWING TERMINATION.
(i) BY MICROSOFT. In the event that Microsoft terminates this
Agreement pursuant to Section 7(b) above, Stac shall immediately: (A) cease all
reproduction, distribution and use of the Microsoft MPPC Software (except as
licensed by Stac from Microsoft as part of and pursuant to an end user license
agreement for the Windows NT product that is available via Microsoft's normal
distribution channels), (B) return all
9
10
copies of Microsoft MPPC software which have been delivered to it by Microsoft
under this Agreement, and (C) deliver a list of every third party to whom Stac
owes a support obligation who has licensed the Microsoft MPPC Software and/or
Stac MPPC Software as of the date of termination. From and after such
termination, Stac shall not use internally nor employ the Microsoft MPPC
Software. Existing license agreements with third parties for the MPPC Software
entered into by Stac prior to the termination of this Agreement shall not be
affected by such termination.
(ii) SURVIVAL. Sections 1, 3(d), 3(f), 3(g), 5, 6, 7(c), 8, 9,
and 10 shall survive any termination or expiration of this Agreement. In the
event Stac terminates this Agreement pursuant to Section 7(b) above, Section 2
shall also survive for the balance of the term of the Agreement.
8. CONFIDENTIALITY.
(a) Each party expressly undertakes to retain in confidence the terms
and conditions of this Agreement, and all other non-public information and
know-how disclosed to the each other that has been designated as proprietary
and/or confidential or that, by the nature of the circumstances surrounding the
disclosure, ought in good faith to be treated as proprietary and/or confidential
(the "Confidential Information"), and will make no use of such information and
know-how except under the terms and during the existence of this Agreement;
provided that each party may disclose the terms and conditions of this Agreement
to its immediate legal and financial consultants as required in the ordinary
course of that party's business. Each party shall use its best efforts to
protect the Confidential Information, which precautions shall be at least as
great as the precautions it takes to protect its own confidential information.
Each party may disclose Confidential Information only to its employees on a
"need-to-know" basis. Each party may disclose Confidential Information as
required by government or judicial order, provided each party gives the other
party prompt notice of such order and complies with any protective order (or
equivalent) imposed on such disclosure. Each party shall notify the other party
promptly upon the discovery of any unauthorized use or disclosure of
Confidential Information, and will cooperate with the other party in every
reasonable way to assist the other party in regaining possession of such
Confidential Information and to prevent future unauthorized use or disclosures.
(b) Confidential Information shall not include that information defined
as Confidential Information above which: (i) entered the public domain without
the receiving party's breach of any obligation owed to the disclosing party
under this Agreement by the disclosing party, (ii) became known to the receiving
party prior to the disclosure of such information, (iii) became known to the
receiving party from a source other than the disclosing party other than by the
breach of an obligation of confidentially owed under this Agreement, (iv) was
disclosed to a thirty party without any obligation of confidence, or (v) was
independently developed by the receiving party.
10
11
(c) Each party acknowledges that monetary damages may not be a
sufficient remedy for unauthorized disclosure or use of Confidential Information
and that each party may seek, without waiving any other rights or remedies, such
injunctive or equitable relief as may be deemed proper by a court of competent
jurisdiction.
(d) The terms of confidentiality under this Agreement shall not be
construed to limit either party's right to independently develop or acquire
products without use of the other party's Confidential Information. Further,
either party shall be free to use for any purpose the residuals resulting from
access to or work with such Confidential Information, provided that such party
shall maintain the confidentiality of the Confidential Information as provided
herein, except to the extent that disclosure is inherent from selling, licensing
or otherwise disposing of a product using or incorporating such residuals. The
term "residuals" means information in non-tangible form, which may be retained
by persons who have had access to the Confidential Information, including ideas,
concepts, know-how or techniques contained therein. Neither party shall have any
obligation to limit or restrict the assignment of such persons or to pay
royalties for any work resulting from the use of residuals or the sale of
products using or incorporating residuals. However, the foregoing shall not be
deemed to grant to either party a license under the other party's copyrights or
patents.
9. ATTORNEYS' FEES. If either party employs attorneys to enforce any rights
arising out of or relating to this Agreement, the prevailing party shall be
entitled to recover its reasonable attorneys' fees, costs and other expenses.
10. NO FRANCHISE. Neither this Agreement, nor any terms and conditions
contained herein, shall be construed as creating a partnership, joint venture or
agency relationship or as granting a franchise as defined in the Washington
Franchise Investment Protection Act, RCW 19.100, as amended, or 16 CFR Section
436.2(a).
11. NOTICES AND REQUESTS. All notices, authorizations, and requests in
connection with this Agreement shall be in writing and will be deemed given if
delivered personally or by facsimile transmission (receipt verified), telexed,
sent by U.S. mails, postage prepaid, certified or registered, return receipt
requested, or sent by express courier service, to the parties at the following
addresses (or to such other address as the party to receive the notice or
request so designates by written notice to the other):
STAC (TWO COPIES): STAC, INC.
00000 Xxxx Xxxxx Xxxxx, Xxxxx 000
Xxx Xxxxx, Xxxxxxxxxx 00000-0000
Fax: (000) 000-0000
One copy marked "Attention: President" and the other
marked "Attention: Vice President, Finance"
MICROSOFT (TWO COPIES): MICROSOFT CORPORATION
Xxx Xxxxxxxxx Xxx
00
00
Xxxxxxx, XX 00000-0000
One copy marked "Attention: Sr. Vice President,
Business Systems" (Fax: (000) 000-0000) and the other
marked "Attention: Law and Corporate Affairs" (Fax:
(000) 000-0000).
12. ASSIGNMENT. Except as provided in this Section 12, the rights and
licenses granted herein are non-assignable. Any attempted assignment of the
rights or delegation of the obligations under this Agreement shall be void
without the prior written consent of the non-assigning or non-delegating party
(which may be withheld in the sole discretion of such party), except in
connection with the sale of all or substantially all of a party's assets (by
merger or otherwise). In the case of any permitted assignment under this Section
12, this Agreement and the relevant provisions hereof shall be binding upon, and
inure to the benefit of, the successors, executors, representatives,
administrators and assigns of the parties hereto. Notwithstanding the foregoing,
Stac may "spin off" a Stac business unit into a separate corporate entity
("NewCo"), and provided NewCo assumes all the Stac obligations and has all
necessary rights and authority to (including all necessary rights under present
and future Stac patents) provide to Microsoft all the rights described in this
Agreement, Stac may assign all of its rights and obligations relating to this
Agreement to such NewCo.
12
13
13. SEVERABILITY. Whenever possible, each provision of this Agreement will
be interpreted in such manner as to be effective and valid under applicable law,
but if any provision of the Agreement is held to be prohibited by or invalid
under applicable law, such provision will be ineffective only to the extent of
such prohibition or invalidity, without invalidating the remainder of the
Agreement.
14. ENTIRE AGREEMENT. This Agreement does not constitute an offer by either
party and it shall not be effective until signed by both parties. Upon execution
by both parties, this Agreement, together with the Patent Agreement, shall
constitute the entire agreement between the parties with respect to the subject
matter thereof and merge all prior and contemporaneous communications. They
shall not be modified except by a written agreement signed on behalf of Stac and
Microsoft by their respective duly authorized representatives. Unless agreed to
in a separate writing signed by both parties, any statement appearing as a
restrictive endorsement on a check or other document which purports to modify a
right, obligation or liability of either party shall be of no force and effect.
15. WAIVER. No waiver of any breach of any provision of this Agreement shall
constitute a waiver of any prior, concurrent or subsequent breach of the same or
any other provisions hereof, and no waiver shall be effective unless made in
writing and signed by an authorized representative of the waiving party.
13
14
16. SECTION HEADINGS. The section headings used in this Agreement and the
attached Exhibits are intended for convenience only and shall not be deemed to
supersede or modify any provisions.
IN WITNESS WHEREOF, the parties have executed this Agreement as of the
date set forth above. All signed copies of this Agreement shall be deemed
originals.
MICROSOFT CORPORATION STAC, INC.
/s/ [SIG] /s/ XXXX X. XXXXXX
--------------------------- -----------------------------
By By
/s/ Xxxx Balgunas Xxxx X. Xxxxxx
--------------------------- -----------------------------
Name (Print) Name (Print)
Business Manager Vice President, Finance
--------------------------- -----------------------------
Title Title
2/19/96 Feb 16, 1996
--------------------------- -----------------------------
Date Date
14
15
EXHIBIT A
MICROSOFT PPP DATA COMPRESSION
JUNE 22, 1995
15
16
Introduction........................................................................
Microsoft PPC Compression Protocol..................................................
Introduction................................................................
Configuration Option Format.................................................
Description..........................................................
MPPC Packets................................................................
Padding..............................................................
Reliability and Sequencing...........................................
Data Expansion.......................................................
Packet Format........................................................
Description of Compressor and Encoding......................................
Literal Encoding.....................................................
Copy Tuple Encoding..................................................
Synchronization.............................................................
Microsoft Implementation of Stac LZS Compression over a Point-to-Point Link.........
Introduction................................................................
Microsoft Windows Implementation of Configuration Option Negotiation........
Modifications to Stac LZS Configuration Option..............................
Microsoft Coherency.........................................................
Synchronization.............................................................
References..................................................................
16
17
INTRODUCTION
This document describes Microsoft PPP Data Compression related specifications.
There are two main parts to this document.
1. Microsoft Point-to-Point Compression (MPPC) Protocol. This is supported
by Windows 95 and Windows NT family of products.
2. Microsoft Implementation of Stac LZS Compression over a Point-to-Point
link. This is supported by Windows 95 product.
17
18
MICROSOFT PPC COMPRESSION PROTOCOL
INTRODUCTION
The Point-to-Point Protocol (PPP) [1] provides a standard method for
transporting multi-protocol datagrams over point-to-point links. The PPP
Compression Control Protocol [2] provides a method to negotiate and utilize
compression protocols over PPP encapsulated links. This document describes the
use of the Microsoft Point to Point Compression protocol (also referred to as
MPPC in the document) for compressing PPP encapsulated packets.
The Microsoft Point to Point Compression scheme is a means of representing
arbitrary Point to Point Protocol (PPP) packets in a compressed form. MPPC is
lossless, because translating into and out of MPPC causes no loss of
information. MPPC is real-time because it favors speed of compression and
decompression over achieving maximum compression, and it has the ability to
compress on-the-fly.
The MPPC scheme uses an LZ based algorithm with a sliding window history buffer.
The MPPC scheme keeps a continuous history so that after 8K of data has been
transmitted compressed there is always 8K of history to use for compressing,
except when the history is flushed.
The MPPC scheme requires only 8+8=16K of space for send and receive channels.
This makes the scheme suitable for servers supporting large number of PPP
clients.
The MPPC scheme allows for encryption to be incorporated within the same packet
encapsulation. Detailed information of encryption over PPP links is not
available at this time.
18
19
CONFIGURATION OPTION FORMAT
DESCRIPTION
The CCP Configuration Option negotiates the use of MCCP on the link. By default
or ultimate disagreement, no compression is used.
A summary of the MCCP Configuration Option format is shown below. The fields are
transmitted from left to right.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
----------------------------------------------------------------
Type Length Supported Bits
----------------------------------------------------------------
Supported Bits
----------------------------------------------------------------
Type
18
Length
6
Supported Bits
This field is 4 octets, most significant octet first. The sixth bit in the least
significant octet set to 1 indicates desire to negotiate MPPC. The fifth bit in
the least significant octet set to 1 indicates desire to negotiate encryption.
The lower 2 octets of this field are reserved.
19
20
MPPC PACKETS
Before any MPPC packets may be communicated, PPP must reach the Network-Layer
Protocol phase, and the CCP Control Protocol must reach the Opened state.
Exactly one MPPC datagram is encapsulated in the PPP Information field, where
the PPP Protocol field indicates type hex 00FD (compressed datagram).
The maximum length of the MPPC datagram transmitted over a PPP link is the same
as the maximum length of the Information field of a PPP encapsulated packet.
Only packets with PPP Protocol numbers in the range hex 0021 to hex 00FA are
compressed. Other PPP packets are always sent uncompressed.
PADDING
The MPPC packets require the negotiation of the Self-Describing-Padding
Configuration Option [3] at LCP Link Establishment.
RELIABILITY AND SEQUENCING
The MPPC scheme does not require a reliable link. Instead, it relies on a 12 bit
coherency count in each packet to keep the history buffers synchronized. If the
history buffers do not remain synchronized a Compress-Reject packet will be sent
to resynchronize the history buffer.
MPPC expects the packets to be delivered in sequence, otherwise history buffer
re-synchronization will not occur.
MPPC MAY be used over a reliable link, as described in "PPP Reliable
Transmission" [4], but this typically just adds unnecessary overhead since the
coherency count is all that is needed.
DATA EXPANSION
Any packet which is expanded is sent uncompressed.
20
21
PACKET FORMAT
0 1 2 3
----------------------------------------------------------------
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
----------------------------------------------------------------
PPP Protocol A B C D Coherency Count
----------------------------------------------------------------
Compressed Data...
----------------------------------------------------------------
PPP Protocol
The PPP Protocol field is described in the Point-to-Point Protocol Encapsulation
[1].
When the MPPC compression protocol is successfully negotiated by the PPP
Compression Control Protocol [2], the value is hex OOFD. This value MAY be
compressed when Protocol-Field Compression is negotiated.
Bit A
This bit indicates that the history buffer has just been flushed before this
packet was generated. Thus, this packet can ALWAYS be decompressed because it is
not based on any previous history. This bit is typically sent to inform the peer
that it has flushed it's history buffer and that the peer can accept this packet
and resynchronize. This bit is referred to as FLUSHED bit in this document.
Bit B
This bit indicates that the packet was moved to the front of the history buffer
typically because there was no room at the end of the history buffer. This bit
is used to tell the decompressor to set it's current position in the history
buffer back to the beginning.
Bit C
This bit is used to indicate that the packet is compressed. Packets may be
compressed, encrypted, or both compressed and encrypted.
Bit D
This bit is used to indicate that the packet is encrypted.
Coherency Count
The coherency count is used to assure that the packets are sent in proper order
and that no packet has been dropped. This count is always increased by 1 and
NEVER decreases or goes back. When all bits are 1, the count returns to 0.
Compressed Data
The compressed data begins with the protocol field. For example, an IP packet
may contain 0021 followed by an IP header. The compressor will first try to
compress the 0021 protocol field and then move on to the IP header.
21
22
If the packet contains header compression, the MPPC compressor is applied AFTER
header compression is performed and MUST be applied to the compressed header as
well. For example, if a packet contained the protocl 002d for a compressed
TCP/IP header, the compressor would first attempt to compress hex 002d and then
it would attempt to compress the compressed Xxx-Xxxxxxxx TCP/IP header.
DESCRIPTION OF COMPRESSOR AND ENCODING
The compressor runs through the length of the frame producing as output a
Literal (byte to be sent uncompressed) or a [Offset, Length of Match] Copy
tuple, where Offset is the number of bytes before in the history where the match
lies and Length of Match is the number of bytes to copy form the location
indicated by Offset.
For example, consider the following string:
0 1 2 3 4
012345678901234568790123456789012345678901234567890
for whom the xxxx tolls, the xxxx tolls for thee.
The compressor would produce:
For whom the xxxx tolls, [16,15] [40,4] [36,4]e.
The Literal and Copy tuple tokens are then encoded according to the MPPC
encoding scheme. 22
22
23
LITERAL ENCODING
Literals are bytes sent uncompressed. If the value of the Literal is below hex
80, it is encoded with its value itself. If the Literal has value greater than
hex 7F it is sent as bits 10 followed by the lower 7 bits of the Literal.
Examples:
Literal hex 56 is shipped as 01010110
Literal hex E7 is shipped as 101100111
COPY TUPLE ENCODING
Copy tuples represent compressed data. A tuple has two elements, the Offset and
Length of match. The Offset is encoded before the Length of Match.
OFFSET ENCODING
Offset values less than 64 are encoded as bits 1111 followed by the lower 6 bits
of the value.
Offset values between 64 and 320 are encoded as bits 1110 followed by the lower
8 bits of the computation (value - 64).
Offset values 320 or greater are encoded as bits 110 followed by the lower 13
bits of the computation (value - 320).
Examples
Offset value of 3 is encoded as: 1111 000011
Offset value of 128 is encoded as: 1110 01000000
Offset value of 1024 is encoded as: 110 0001011000000
LENGTH OF MATCH ENCODING
Length of 3 is encoded with bit 0.
Length values from 4 to 7 are encoded as 10 followed by lower 2 bits of the
value.
Length values from 8 to 15 are encoded as 110 followed by lower 3 bits of the
value.
Length values from 16 to 31 are encoded as 1110 followed by lower 4 bits of the
value.
Length values from 32 to 63 are encoded as 11110 followed by lower 5 bits of the
value.
Length values from 64 to 127 are encoded as 111110 followed by lower 6 bits of
the value.
Length values from 128 to 255 are encoded as 1111110 followed by lower 7 bits of
the value.
Length values from 256 to 511 are encoded as 11111110 followed by lower 8 bits
of the value.
Length values from 512 to 1023 are encoded as 111111110 followed by lower 9 bits
of the value.
23
24
Length values from 1024 to 2047 are encoded as 1111111110 followed by lower 10
bits of the value.
Length values from 2048 to 4095 are encoded as 11111111110 followed by lower 11
bits of the value.
Length values from 4096 to 8191 are encoded as 111111111110 followed by lower 12
bits of the value.
The largest Length value that can be encoded is 8191.
Examples
Length of 15 is encoded as: 110 111
Length of 120 is encoded as: 111110 111000
Length of 4097 is encoded as: 111111111110 000000000001
SYNCHRONIZATION
Packets may be lost during transfer. If the decompressor maintained coherency
count does not match the coherency count received in the compressed packet, the
decompressor drops the packet and sends a CCP Reset-Request packet. The
compressor on receiving this packet flushes the history buffer and sets the
FLUSHED bit in the next frame it sends. The decompressor on receiving a packet
with its FLUSHED bit set, flushes its history buffer and sets its coherency
count to the one shipped by the compressor in that packet. Thus synchronization
is acheived without a Reset-Ack packet.
24
25
MICROSOFT IMPLEMENTATION OF STAC LZS COMPRESSION OVER A POINT-TO-POINT LINK
INTRODUCTION
The Windows 95 Point-to-Point Protocol (PPP) [1] driver supports two compression
algorithms: Microsoft Point-to-Point Compression (Microsoft PPC) and Stac(R)
LZS(TM) compression.
The compression algorithms are negotiated using the PPP Compression Control
Protocol (CCP) [2] which provides a method to negotiate and utilize compression
protocols over PPP encapsulated links.
The Stac LZS data compression algorithm for PPP links is described in a draft
IETF RFC [5]
This document describes the implementation and use of the Stac LZS compression
protocol in Microsoft Windows 95. It is provided to allow vendors to
interoperate with Windows 95 so it focuses on the differences between the
existing Stac RFC and the Windows 95 implementation. The reader is encouraged to
reference the Stac RFC before reading this document.
Microsoft uses the compression algorithm described in the Stac RFC but uses a
different coherency mechanism for guaranteeing that the compressor and
decompressor are synchronized.
Microsoft Point-to-Point Compression protocol is described earlier in this
document.
25
26
MICROSOFT WINDOWS IMPLEMENTATION OF CONFIGURATION OPTION NEGOTIATION
CCP Configuration Options allow negotiation of compression algorithms and their
parameters. CCP uses the same Configuration Option format defined for LCP [1],
with a separate set of Options.
Configuration Options, in this protocol, indicate algorithms that the receiver
is willing or able to use to decompress data sent by the sender. Microsoft
Windows 95 will offer to decompress option 18 (Microsoft PPC) and option 17
(Stac LZS). Microsoft Windows NT 3.5x will offer to decompress option 18 only.
If multiple options are offered, Windows will send a Configure-Reject to reject
all but the first supported option - Microsoft PPC or Stac LZS - offered by the
peer. Windows will not validate the values in the option until a new
Configure-Request with only the single preferred option is received.
When a Configure-Request with a single recognized option is received, Windows
will validate the values in the request. If the values in the request are not
acceptable, a Configure-NAK will be sent with the option modified appropriately.
The Configure-NAK will contain only those options that will be acceptable. A new
Configure-Request should be sent with only the single preferred option, adjusted
as specified in the Configure-Nak.
Windows 95 can negotiate different compression options for compression and
decompression. However, Windows 95 will terminate the compression protocol if it
fails to negotiate either compression or decompression. For example: it is
acceptable to have Stac LZS in one direction and Microsoft PPC in the other
direction but it is not acceptable to have Stac LZS in one direction and no
compression in the other direction.
26
27
MODIFICATIONS TO STAC LZS CONFIGURATION OPTION
The CCP Stac LZS Configuration Option negotiates the use of Stac LZS on the
link. By default or ultimate disagreement, no compression is used.
A summary of the Stac LZS Configuration Option format is shown below. The fields
are transmitted from left to right.
0 1 2 3
---------------------------------------------------------------
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
---------------------------------------------------------------
Type Length History Count
---------------------------------------------------------------
Check Mode
--------------------
Type
17
Length
5
History Count
The History Count field is two octets, most significant octet first, and
specifies the maximum number of Compression Histories.
The value 0 indicates that the implementation expects the peer to reset the
Compression History at the beginning of every packet.
The value 1 is used to indicate that only one history is maintained.
Other valid values range from 2 to 65535. The peer is not required to send as
many histories as the implementation indicates that it can accept.
Windows 95 uses a history count of 1.
Check Mode
The Check Mode indicates support of LCB, CRC, Sequence checking or Microsoft
coherency
0 None (default)
1 LCB
2 CRC
3 Sequence Number
4 Microsoft Coherency (Microsoft implementations only support this
option)
27
28
MICROSOFT COHERENCY
When Check Mode 4 (Microsoft Coherency) is negotiated, the packet format is
different from the format described in the Stac RFC [5]. The format is described
below.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
---------------------------------------------------------------
PPP Protocol A B C D Coherency Count
---------------------------------------------------------------
Compressed Data...
---------------------------------------------------------------
PPP Protocol
The PPP Protocol field is described in the Point-to-Point Protocol Encapsulation
[1].
When a compression protocol is successfully negotiated by the PPP Compression
Control Protocol [2], the value is hex 00FD. This value MAY be compressed when
Protocol-Field-Compression is negotiated.
Bit A - PACKET_FLUSHED
This bit indicates that the history buffer has just been flushed before this
packet was generated. Thus, this packet can ALWAYS be decompressed because it is
not based on any previous history. This bit is typically sent to inform the peer
that it has flushed it's history buffer and that the peer can accept this packet
and resynchronize.
Bit B
This bit is not used with Stac LZS compression.
Bit C - PACKET_COMPRESSED
This bit is used to indicate that the packet is compressed.
Bit D
This bit is not used with Stac LZS compression.
Coherency Count
The coherency count is used to assure that the packets are sent in proper order
and that no packet has been dropped. This count is always increased by 1 and
NEVER decreases or goes back. When all bits are 1, the count returns to 0.
The coherency count is 12 bits so the decompressor must handle the rollover
case.
Compressed Data
The compressed data begins with the protocol field. For example, an IP packet
may contain 0021 followed by an IP header. The compressor will first try to
compress the 0021 protocol field and then move on to the IP header.
28
29
SYNCHRONIZATION
Packets may be lost during transfer. If the decompressor maintained coherency
count does not match the coherency count received in the compressed packet or if
the decompressor detects that a received packet is corrupted, the decompressor
drops the packet and sends a CCP Reset-Request packet. The compressor on
receiving this packet flushes the history buffer and sets the PACKET_FLUSHED bit
in the next frame it sends. The decompressor on receiving a packet with its
PACKET_FLUSHED bit set, flushes its history buffer and sets its coherency count
to the one shipped by the compressor in that packet. Thus synchronization is
achieved without a Reset-Ack packet.
29
30
REFERENCES
[1] Xxxxxxx, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51, XXX 0000,
Daydreamer, July 1994.
[2] Rand. D "The PPP Compression Control Protocol (CCP)" work in progress.
[3] Xxxxxxx. W.A., "PPPLCP Extensions", work in progress.
[4] Rand, D., "PPP Reliable Transmission", XXX 0000, Novell, July 1994.
[5] Xxxx, R., "Stac LZS Compression", Stac Electronics, Sept 1994.
30
31
EXHIBIT B
MPPC SOFTWARE
There are two files of interest: compress.h and compress.c
There are five functions in the compression library:
//* compress()
//
// Function: Main compression function.
//
// Parameters:
//
// IN CurrentBuffer -> points to NDIS_WAN_PACKET with data to compress
// OUT CompOutBuffer -> points to NDIS_WAN_PACKET to compress data to
// IN CurrentLength -> points to Length of data to compress
// IN context ->connection compress context
//
// Returns: Compression result bits one or more of PACKET_FLUSHED,
// PACKET_AT_FRONT, PACKET_COMPRESSED
//
// UCHAR
compress (
UCHAR *CurrentBuffer,
UCHAR *CompOutBuffer,
ULONG *CurrentLength,
SendContext *context);
//* decompress()
//
// Function: de-compression function.
//
// Parameters: IN inbuf -> points to data to be uncompressed
// IN inlen ->length of data
// IN start -> flag indicating whether to start with a clean history buffer
// OUT output->decompressed data
// OUT outlen->length of decompressed data
// IN context->connection decompress context
//
// Returns: TRUE if decompress was successful
// FALSE if it wasnt
//
int
decompress(
UCHAR *inbuf,
int inlen,
int start,
UCHAR **output,
int *outlen,
RecvContext *context);
//*getcontextsizes()
31
32
//
32
33
// Function: Returns size of send and receive context blocks
//
// Parameters: OUT send -> sizeof(SendContext)
// OUT recv -> sizeof(RecvContext) //
//
// Returns: Nothing
//
void
getcontextsizes (long *, long *);
//* initsendcontext()
//
// Function: Initialize SendContext block
//
// Parameters: IN context -> connection compress context
//
// Returns: Nothing
//
void
initsendcontext (SendContext *);
//* initrecvcontext()
//
// Function: Initialize RecvContext block
//
// Parameters: IN context -> connection decompress context
//
// Returns: Nothing
//
void initrecvcontext (RecvContext *);
33
34
EXHIBIT C
LZS SOFTWARE
The following files comprise the Stac LZS221-C version 4 software library:
Example.C
LZS.H
LZSC.C
LZSD.C
LZSMEM.C
34
35
EXHIBIT D
TEST TOOL
THE TEST TOOL DELIVERED BY MICROSOFT TO STAC ON FEBRUARY 2, 1996
35
36
EXHIBIT E
PERFORMANCE AND COMPATIBILITY STANDARDS
---------------------------------------
For the purposes of the performance and compatibility standards set forth below,
the "CORPUS SUITE" is defined as the following set of files, which exist at
Internet address "xxx.xxxx.xxxxxxxx.xx/xxx/xxxxxxxx/xxxx.xxxxxxxxxxx.xxxxxx" as
of January 12, 1996:
Filename Size in KB
(1024 bytes)
-------- ------------
bib 109
book1 751
book2 597
geo 100
news 369
obj1 21
obj2 242
paper1 52
paper2 81
paper3 46
paper4 13
paper5 12
paper6 38
pic 502
progc 39
prog1 70
progp 49
trans 92
All files are dated May 8, 1990.
With respect to the performance and compatibility standards set forth below, the
standards shall be evaluated on an Intel Pentium processor running in 32-bit
mode. Both the Stac MPPC Software and the Microsoft MPPC Software shall be
compiled using Microsoft's most current version of its commercially released C
compiler.
PERFORMANCE
Stac MPPC Software shall compress and decompress the data in ninety percent
(90%) of the files in the Corpus Suite as fast as or faster than Microsoft MPPC
Software compresses or decompresses the same files.
36
37
COMPATIBILITY
Stac MPPC Software shall compress the data in each of the files in the Corpus
Suite such that the Microsoft MPPC Software, when used for decompression of the
compressed file, produces the same original data in the file. Furthermore, such
Stac MPPC Software shall decompress the data in each of the files in the Corpus
Suite compressed by the Microsoft MPPC Software to produce the same original
data in the file.
37
38
EXHIBIT F
DISTRIBUTION AGREEMENT TERMS (PRICING MAY BE ADJUSTED FROM
TIME TO TIME BY STAC, UPON NOTICE TO MICROSOFT)
LICENSE AGREEMENT
This License Agreement (the "Agreement") is made and entered into as of
_________, 199 _____, a ________ corporation, with its principal place of
business at ____________________
A. Stac, Inc., a California corporation, with its principal place of
business at 00000 Xxxx Xxxxx Xxxxx, Xxx Xxxxx, Xxxxxxxxxx 00000 ("Stac"), has
developed certain software programs (as defined below, the "Software"); Licensee
desires to license such Software for integration with its products (as defined
below the "Licensee's Products") which are to be resold by Licensee; Microsoft
has the right from Stac to grant the certain limited license rights granted
below to Licensee on the terms and conditions of this Agreement;
B. Therefore, Microsoft desires to grant certain limited license rights
to Licensee to reproduce and distribute such Software on the terms and
conditions contained in this Agreement.
NOW THEREFORE, based on the above premises and in consideration of the
mutual covenants and agreements contained herein, the parties agree as follows:
1. Definitions. As used herein, the following terms shall have the respective
meanings set forth below:
1.1 "Software" shall mean the software and documentation described in
Exhibit A together with any released Corrections (as defined below) of
such version.
1.2 "Corrections" shall mean subsequently commercially released versions
of the Software that Stac or Microsoft, in their sole discretion, has
released with its version number designation increased by hundredths,
but not tenths or greater.
1.3 "End User" shall mean a person, entity, or group of entities under
common control that licenses Software integrated with Licensee's
Products solely for its own internal use without any right to further
distribute or sublicense the Software.
1.4 "IP Rights" shall mean only those intellectual property rights,
including copyrights, patents, trade secrets, trademarks, and other
proprietary rights owned by Stac or Microsoft and that are specifically
embodied in the Software.
1.5 "Licensee's Products" shall mean only those products listed on
Exhibit B hereto.
1.6 "Upgrade" shall mean subsequently commercially released versions of
the Software that Stac or Microsoft, in their sole discretion, has
released with its version number designation increased by tenths right
of the decimal point, but not whole integers left of the decimal point.
38
39
1.7 "Unit" is one Licensee's Product that includes one copy of the
Software.
2. Grant of License and Deliverable Items
2.1 License to Licensee. Microsoft hereby grants to Licensee for the
term of this Agreement a non-exclusive, non-transferable, limited
license to the IP Rights for the sole purpose of reproducing and having
reproduced and distributing and having distributed object code only
compilations of the Software for pre-sale integration with Licensee's
Products by Licensee.
2.2 Restrictions. Licensee acknowledges and agrees that this Agreement
in no way shall be construed to provide to Licensee (a) an express or
implied license to modify, alter, improve, decompile, disassemble or
reverse engineer the Software except to change the names of functions
within the Software, as necessary, to integrate with Licensee's
Products, or (b) an express or implied license to any of the IP Rights
other than as expressly set forth in this Agreement, or (c) an express
or implied license to create any hardware implementations of the IP
Rights. The limited modifications allowed in 2.2 (a) above expressly
exclude changes to the compression format and changes for speed
optimization of the Software compression and/or decompression.
2.3. Deliverable Items. Upon execution of this Agreement, Microsoft
shall deliver to Licensee the Software and items listed as Other
Deliverable Items in Exhibit A hereto. Further, Stac or Microsoft shall
deliver to Licensee, for no additional License Fee, any Corrections and
Upgrades that are made commercially available during the term of this
Agreement.
3. License Fee and License Fee Verification
3.1 Amount of License Fee. In consideration for the license granted
pursuant to this Agreement, Licensee agrees and hereby undertakes to pay
to Stac a non-refundable License Fee according to the License Fee
schedule in Exhibit C.
3.2 Miscellaneous Charges. The License Fees payable under this Agreement
do not include any taxes that are now or hereafter enacted which are
applicable to the Software sold under this Agreement, or shipping and
other charges associated with disseminating the Software, excluding,
however, income taxes on profits which may be levied against Stac. All
applicable taxes, shipping and other charges are the responsibility of
Licensee and Licensee agrees to pay Stac where Stac is obligated to
collect or pay same.
3.3 Payment of License Fee. Payments of License Fees are due according
to the License Fee Payment Schedule in Exhibit C hereto. All License Fee
payments specified in Section 3.1 shall be paid in United States dollars
by wire transfer of immediately available funds within as directed by
Stac or by Licensee's check which shall be drawn upon a United States
bank.
39
40
3.4 License Fee Reports. Within thirty (30) days after the end of each
annual term of this Agreement, Licensee shall furnish to Stac an
accounting of all sales of Licensee's Products, including total amounts
of Units sold and Average Selling Price for each of Licensee's Products.
Licensee shall also pay Stac any additional amount of License Fees owed
for the annual term just ended, beyond the amount of License Fees paid
at the beginning of the annual term just ended, based on the actual
Units sold and the actual Average Selling Price for Licensee's Products
during the term, as calculated in accordance with the Current License
Fees Schedule set forth in Exhibit C for the annual term just ended.
Such payment of an additional amount of License Fees, if any, shall be
provided within the thirty (30) days after the end of the annual term
just ended, together with a written statement of the accounting of all
sales of Licensee's Products, certified by an authorized representative
of Licensee, and concerning the computation of License Fees payable to
Stac with respect to such accounting. Such written statement shall be
provided whether or not any additional amount of Licensee Fees is owed,
and shall include the actual total Units sold and actual Average Selling
Price for each of Licensee's Products. Each such certified statement
shall contain information in sufficient detail to verify the accuracy of
each License Fee payment due, or to verify the accuracy of the fact that
no additional License Fees payment is due.
3.5 License Fee Verification. Upon the reasonable request of Stac,
Licensee shall permit access to its books and records by an independent
accounting firm selected by Stac and approved by Licensee, which
approval shall not be unreasonably withheld, for the sole purpose of
verifying and reporting to Stac regarding the calculation of License
Fees payable hereunder ("Audit"). The cost for such Audit shall be paid
by Stac unless a discrepancy of five percent (5%) or more is uncovered,
in which case Licensee shall pay the cost for the Audit. Such audits
shall not occur more than once in any twelve month period.
4. Injunctive Relief. License agrees that in the event of a breach or alleged
breach of Section 2 that Stac shall not have an adequate remedy at law,
including monetary damages, and that Stac shall consequently be entitled to seek
a temporary restraining order, injunction, or other form of equitable relief
against the continuance of such breach, in addition to any and all remedies to
which Stac shall be entitled.
5. Export. Licensee acknowledges that any export of products, and all technical
data related thereto, is subject to regulation under United States laws,
including but not limited to the Export Administration Act of 1979 and
regulations issued thereunder. Licensee therefore agrees to: (a) comply with
applicable export or asset control laws of the United States and regulations
applicable to such exports; (b) comply, and take all permissible measures to
insure its customers' compliance with, the provisions of said license(s),
including record keeping requirements; and (c) refrain from selling or otherwise
distributing products or related data in violation of such laws, regulations, or
licenses.
6. Product Marking, In addition to the consideration in Section 3.1 above, when
referring to the Software integrated with Licensee's Product, Licensee must use
the trademark(s) and logo(s) in Exhibit D (the "Trademarks"), in accordance with
Microsoft's current trademark use guidelines (referenced in Exhibit D), in
Licensee's marketing and sales literature, advertising, product documentation
and other communications. Neither Stac nor Microsoft shall be responsible or
liable for the accuracy of Licensee's statements in such communications. In
order
40
41
to properly maintain Microsoft's goodwill in the Trademarks, prior to marketing
Licensee's Product(s), Licensee agrees to provide Microsoft with a reasonable
opportunity to verify that Licensee's Product(s) marketing and sales literature,
advertising, product documentation and other communications where Microsoft's
trademark(s) or logo(s) are used meets Microsoft's compatibility and quality
standards.
7. Technical Support. Licensee shall be responsible for all technical support,
including End User technical support, related to the Software integrated with
Licensee's Products.
8. Proprietary Rights
8.1 Title. All right, title, and interest to the IP Rights shall remain
with Stac or Microsoft, as applicable, and Licensee obtains only a
limited license to reproduce the Software and documentation subject to
all of the terms and conditions hereof. Licensee hereby acknowledges
that the Software contains valuable proprietary and confidential
information developed or acquired by Stac and/or Microsoft through the
expenditure and investment of a great deal of time and resources,
including without limitation valuable algorithms, concepts and
innovations.
8.2 IP Rights Notices. Licensee shall ensure that Stac's and Microsoft's
copyright, trademark, and patent notices, which may be updated from time
to time, are prominently displayed on all copies of the Software and
documentation. All notices of Stac's and Microsoft's patents shall be
made in accordance with 35 U.S.C. Sec 287. Licensee shall not remove or
obscure any copyright, trademark, patent or other proprietary rights
notice already present on any of the Software or documentation.
9. Patents and Copyrights Indemnification
9.1 Subject to Section 9.4 below, Stac will defend or settle at its
expense and will pay the costs and damages awarded against Licensee in
any action brought against Licensee on the basis that the Software
infringes a United States patent or copyright, provided that Licensee
(i) promptly notifies Stac in writing of such action, (ii) provides Stac
with all reasonable assistance for the defense or settlement of such
action, (iii) grants to Stac sole authority and control for the defense
or settlement of such action, and (iv) fully observes all the terms and
conditions of this Agreement.
9.2 If a final injunction is obtained against Licensee in such action on
the basis that the Software infringes a United States patent or
copyright, Stac will, at Stac's option and expense, either (i) procure
for Licensee the right to continue using the Software, (ii) replace or
modify the infringing portion of the Software so that it becomes
non-infringing, or (iii) refund any License Fees paid by Licensee to
Stac with respect to Units against which the injunction is obtained.
41
42
9.3 Stac shall not have any liability to Licensee for, and Licensee
shall defend and hold Stac harmless against any expense, judgment or
loss arising from any claim of patent or copyright infringement based on
(i) the reproduction, manufacture, use, sale or offer for sale of
anything other than a current unaltered release of the Software, (ii)
any modifications made to the Software, or (iii) combinations of the
Software by Licensee with any product or technology which, without such
combination, such claim would not have been brought.
9.4 In no event shall Stac's total liability to Licensee under this
paragraph exceed the License Fees paid to Stac by Licensee during the
term of the agreement.
9.5 The use of this Software may require a license from Motorola. A
license agreement for the right to use Motorola patents may be obtained
through Stac or directly from Motorola.
10. WARRANTIES AND LIMITATIONS OF LIABILITY
10.1 Warranty of Title. Stac warrants that it has good title to the
Software and has the right to license the use of the Software free of
any known proprietary rights of any other party or any other known
encumbrance whatsoever.
10.2 DISCLAIMER OF WARRANTY. THE ITEMS AND SERVICES FURNISHED UNDER OR
IN CONNECTION WITH THIS AGREEMENT ARE PROVIDED, IN THEIR CURRENT STATE,
AND NEITHER MICROSOFT NOR STAC MAKE ANY WARRANTIES OR COVENANTS, OTHER
THAN THOSE SET OUT ABOVE, EXPRESS OR IMPLIED BY OPERATION OF LAW OR
OTHERWISE, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. ANY ADDITIONAL OR OTHER
CLAIMS, REPRESENTATIONS OR WARRANTIES BY LICENSEE TO ITS CUSTOMERS
(EXPRESS OR IMPLIED BY LAW OR OTHERWISE) ARE THE RESPONSIBILITY OF
LICENSEE. LICENSEE HAS NO RIGHT OR AUTHORITY TO MAKE ANY AGREEMENT,
STATEMENT, REPRESENTATION, WARRANTY OR OTHER COMMITMENT ON BEHALF OF
MICROSOFT OR STAC NOR TO INCUR ANY LIABILITY OR OBLIGATION, EXPRESS OR
IMPLIED, ON BEHALF OF MICROSOFT OR STAC.
10.3 LIMITATION OF LIABILITY. EXCEPT AS PROVIDED IN SECTION 9 ABOVE,
IN NO EVENT SHALL MICROSOFT OR STAC OR THEIR SUPPLIERS BE LIABLE FOR ANY
DAMAGES WHATSOEVER (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
OTHER PECUNIARY LOSS, OR CONSEQUENTIAL DAMAGES) ARISING OUT OF THE USE
OF OR INABILITY TO USE THE SOFTWARE, EVEN IF MICROSOFT OR STAC HAVE BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
11. TERM AND TERMINATION
11.1 Term. This Agreement shall become effective as of the Effective
Date hereof and shall continue in force for the term specified in
Exhibit E, unless earlier terminated in accordance with this Section 11.
42
43
11.2 Termination. The license granted by this Agreement shall be
terminated, immediately and without notice, except as specifically
provided herein, upon the occurrence of any of the following:
(a) Expiration of the term specified herein, in accordance with
the terms of this Agreement.
(b) At Stac's or Microsoft's option, upon thirty (30) days
written notice of termination, in the event of Licensee's
commission of an event of default as defined in section 11.3
hereof. Such termination shall become effective unless the
defaulting party shall cure all aspects of the default and so
notify the terminating party of the cure in writing within said
thirty (30) day period.
11.3 Events of Default. Licensee shall be considered to have committed
an event of default by any of the following, giving rise to a right on
the part of either Stac or Microsoft to terminate the License in
accordance with the provisions of this Section 11:
(a) Licensee attempts to use, modify, copy, license, or convey
the Software in any manner contrary to the terms of this
Agreement or in any manner which impairs, alters, or lessens
Stac's proprietary rights in the Software in any way.
(b) Licensee fails or neglects to perform or observe any of its
existing or future obligations under this agreement, including,
without limitation, the timely payment of any sums due Stac.
(c) A petition in bankruptcy is filed by or against Licensee,
which is not released within 90 days of filing; if a receiver,
trustee in bankruptcy, or similar officer is appointed to take
charge of all or part of Licensee's property; or Licensee is
adjudicated a bankrupt.
(d) If an audit pursuant to Section 3.5 above reveals that
Licensee has underpaid License Fees due Stac under this
Agreement, Licensee shall within considered in default pursuant
to Section 11.2 and Licensee shall within twenty (20) days pay to
Stac the amount of the underpaid License Fees and the costs, if
due, of the License Fee audit.
11.4 Effect of Termination. Licensee agrees that immediately upon the
termination of this Agreement, pursuant to any of the provisions of
Section 11 herein, it shall immediately destroy all copies of the
Software not then incorporated in Licensee's Product(s) and certify that
fact to Stac. Licensee further agrees that in the event of termination
through its default, all fees or charges due Stac shall immediately
become due and payable. Upon termination of the license granted under
this Agreement, Stac's obligations hereunder shall cease, however, End
Users with valid licenses to the Software integrated with Licensee's
Products entered into prior to the effective date of termination shall
retain their rights to use the Software.
12. General Provisions
43
44
12.1 Assignment. Licensee shall not assign any of its rights under this
Agreement nor delegate its duties hereunder to another person or legal
entity without the prior written consent of Microsoft and Stac, which
consent may be withheld for any reason. This Agreement shall inure to
the benefit of and be binding upon the parties hereto, their respective
trustees, successors, permitted assigns and legal representatives.
12.2 Non-Waiver. A failure of any party hereto to exercise any right
given to it hereunder, or to insist upon strict compliance by another
party of any obligation hereunder, shall not constitute a waiver of the
first party's right to exercise such a right, or to exact compliance
with the terms hereof. Moreover, waiver by any party of a particular
default by another party shall not be deemed a continuing waiver so as
to impair the aggrieved party's rights in respect to any subsequent
default of the same or a different nature.
12.3 Survival. Upon the termination of this Agreement for any reason,
the following Sections shall remain in full force and effect: 1, 2.2, 3,
4, 5, 7, 8, 9, 10, 11 and Section 12 except for 12.1 and 12.5.
12.4 Governing Law. The parties agree that the laws of the State of
California shall govern the interpretation and enforcement of this
Agreement, without giving effect to that State's choice of law rules.
12.5 Notices. All notices or other communications that shall or may be
given pursuant to this Agreement, shall be in writing, in English, shall
be sent by certified or registered mail with postage prepaid, return
receipt requested, by facsimile, telex or cable communication, or by
hand delivery. Such communications shall be deemed given and received
upon dispatch, if sent by facsimile, telex, or cable communication; or
upon delivery if hand delivered; or within five (5) days of mailing, if
sent by certified or registered mail, and shall be addressed to the
parties as set forth above on the first page of this Agreement, or to
such other addresses as the parties may designate in writing from time
to time.
12.6 Attorney's Fees to Prevailing Party. In the event of any litigation
or other proceedings (including proceedings in bankruptcy) concerning or
related to this Agreement, the prevailing party, solely as between Stac
or Microsoft and Licensee, shall be entitled to recover its actual
attorneys' fees and expenses incurred in connection with such
proceedings.
12.7 Entire Agreement. This Agreement contains the full understanding of
the parties and supersedes all prior agreements and understandings,
written or oral, between the parties with respect to the subject matter
hereof; and there are no representations, warranties, agreements or
understandings other than those expressly contained herein. No
alteration, modification, variation or waiver of this Agreement, or any
of the provisions hereof shall be effective unless executed by both
parties in writing. All exhibits attached hereto and referred to herein
are hereby incorporated by reference and made a part hereof.
12.8 Confidentiality. Except as required by regulatory agencies or as
ordered disclosed pursuant to judicial or other lawful governmental
action, and then only to the extent so required or ordered, the terms
of, but not the existence of, this Agreement and the required
information disclosed in Section 3 herein shall be held in confidence by
Stac, Microsoft and Licensee.
44
45
12.9 Captions. The captions that head certain sections and paragraphs in
this Agreement are inserted only as a matter of convenience, and in no
way define, limit, or extend or interpret the scope of this Agreement or
of any particular Section.
IN WITNESS WHEREOF, the parties hereto have caused this Agreement to be
duly executed on the dates indicated below.
MICROSOFT CORPORATION ________________________
("LICENSEE")
By: ___________________________________ By:
________________________________
Its: ___________________________ Its: ______________________
Dated: ______, 199_ Dated: _____, 199_.
45
46
EXHIBIT A
SOFTWARE
Product Name: ________________________
The files listed below comprise the Software:
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
OTHER DELIVERABLE ITEMS
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
46
47
EXHIBIT B
LICENSEE'S PRODUCTS
Licensee's license to reproduce, use and distribute the Software is only in
conjunction with the products and equipment listed below which are made, used,
sold and distributed by Licensee:
Average Annual Units
Selling Price
---------------------------- ---------------------------------
Product Name
< $50 < $250 < $1000 > $1000 < 1K < 10K < 100K < 1000K > 1000K
------------------------------------------- ---------------------------------
Total Volume all Products
Average ASP all Products
47
48
EXHIBIT C
LICENSE FEE
License Fees shall be payable for Units according to the following Current
License Fee Schedule:
Total Average Selling Price (ASP)
Units < $50 < $250 < $1,000 > $1,000
----- ----- ------ -------- --------
< 1K $ 5K $10K $15K $20K
< 10K $12K $25K $37K $50K
< 100K $25K $45K $60K $75K
< 1000K $50K $70K $90K $95K
> 1000K $80K $85K -- --
The Average Selling Price (ASP) of Licensee's Products is the average forecasted
selling price for all Units of Licensee's Product during the period of this
Agreement.
The Total Units is the volume of Units forecasted for shipment during the period
of this Agreement.
If multiple products are listed in Exhibit B, then the License Fee payable shall
be calculated as follows: The Units are the sum of the Units for each of
Licensee's Products; the ASP is the average of the ASP for each Licensee's
Product listed.
In the case that compression is an option for Licensee's Products, the ASP is
the ASP of the option together with its host platform.
The Current License Fee Schedule above shall be updated annually at the time of
renewal of this Agreement by Stac's then current License Fee schedule, which
shall not have an amount of increase in License Fees of more than 10 percent
from the Current License Fee Schedule. Such updated License Fee Schedule shall
become the Current License Fee Schedule for the subsequent renewal term of this
Agreement.
LICENSE FEE PAYMENT SCHEDULE
Payment of the License Fee for the initial term of this Agreement shall be made
within thirty (30) days of the Effective Date of this Agreement. Payment of
License Fees for renewal periods of this Agreement as provided for in Exhibit E
shall be made within thirty (30) days following each subsequent annual renewal
date of this Agreement.
48
49
EXHIBIT D
Microsoft's MPPC logo is shown below. The Microsoft MPPC Logo Use Guidelines are
contained in a separate manual provided with this Agreement.
49
50
EXHIBIT E
TERM
THE TERM OF THIS AGREEMENT SHALL BE FOR ONE YEAR FROM ITS EFFECTIVE DATE AND
SHALL BE RENEWABLE FOR SUBSEQUENT ONE YEAR PERIODS UPON PAYMENT OF THE LICENSE
FEE FOR THE RENEWED TERM ACCORDING TO EXHIBIT C OF THIS AGREEMENT, AND WRITTEN
SUBMISSION OF A CURRENT EXHIBIT B. ANY CHANGES TO THE CURRENT EXHIBIT B MUST BE
AGREED TO BY STAC IN WRITING.
50