<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html DIR="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="icon" type="image/ico" href="/tools/dlpage/res/chrome/images/chrome-16.png"><title>Google Chrome Terms of Service</title>
<style>
body { font-family:Arial; font-size:13px; }
h2 { font-size:1em; margin-top:0 }
</style>
<script type="text/javascript">
function carry_tracking(obj) {
    var s = '(\\?.*)';
    var regex = new RegExp(s);
    var results = regex.exec(window.location.href);
  if (results != null) {
    obj.href = obj.href + results[1];
  } else {
    s2 = 'intl/([^/]*)';
    regex2 = new RegExp(s2);
    results2 = regex2.exec(window.location.href);
    if (results2 != null) {
      obj.href = obj.href + '?hl=' + results2[1];
    }
  }
}
</script></head>

<body>
<h2>Google Chrome Terms of Service</h2>
<p>These Terms of Service apply to the executable code version of Google Chrome. Source code for Google Chrome is available free of charge under open source software licence agreements at http://code.google.com/chromium/terms.html.</p>
<p><strong>1. Your relationship with Google</strong></p>
<p>1.1 Your use of Google’s products, software, services and websites (referred to collectively as the “Services” in this document and excluding any services provided to you by Google under a separate written agreement) is subject to the terms of a legal agreement between you and Google. “Google” means Google Inc., whose principal place of business is at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States. This document explains how the agreement is made up and sets out some of the terms of that agreement.</p>
<p>1.2 Unless otherwise agreed in writing with Google, your agreement with Google will always include, at a minimum, the terms and conditions set out in this document. These are referred to below as the “Universal Terms”. Open-source software licences for Google Chrome source code constitute separate written agreements. To the limited extent that the open-source software licences expressly supersede these Universal Terms, the open-source licences govern your agreement with Google for the use of Google Chrome or specific included components of Google Chrome.</p>
<p>1.3 Your agreement with Google will also include the terms set forth below in the Google Chrome Additional Terms of Service and terms of any Legal Notices applicable to the Services, in addition to the Universal Terms. All of these are referred to below as the “Additional Terms”. Where Additional Terms apply to a Service, these will be accessible for you to read either within or through your use of that Service.</p>
<p>1.4 The Universal Terms, together with the Additional Terms, form a legally binding agreement between you and Google in relation to your use of the Services. It is important that you take the time to read them carefully. Collectively, this legal agreement is referred to below as the “Terms”.</p>
<p>1.5 If there is any contradiction between what the Additional Terms say and what the Universal Terms say, then the Additional Terms shall take precedence in relation to that Service.</p>
<p><strong>2. Accepting the Terms</strong></p>
<p>2.1 In order to use the Services, you must first agree to the Terms. You may not use the Services if you do not accept the Terms.</p>
<p>2.2 You can accept the Terms by:</p>
<p>(A) clicking to accept or agree to the Terms, where this option is made available to you by Google in the user interface for any Service; or</p>
<p>(B) by actually using the Services. In this case, you understand and agree that Google will treat your use of the Services as acceptance of the Terms from that point onwards.</p>
<p><strong>3. Language of the Terms</strong></p>
<p>3.1 Where Google has provided you with a translation of the English-language version of the Terms, then you agree that the translation is provided for your convenience only and that the English-language versions of the Terms will govern your relationship with Google.</p>
<p>3.2 If there is any contradiction between what the English-language version of the Terms says and what a translation says, then the English-language version shall take precedence.</p>
<p><strong>4. Provision of the Services by Google</strong></p>
<p>4.1 Google has subsidiaries and affiliated legal entities around the world (“Subsidiaries and Affiliates”). Sometimes, these companies will be providing the Services to you on behalf of Google itself. You acknowledge and agree that Subsidiaries and Affiliates will be entitled to provide the Services to you.</p>
<p>4.2 Google is constantly innovating in order to provide the best possible experience for its users. You acknowledge and agree that the form and nature of the Services that Google provides may change from time to time, without prior notice to you.</p>
<p>4.3 As part of this continuing innovation, you acknowledge and agree that Google may stop (permanently or temporarily) providing the Services (or any features within the Services) to you or to users generally at Google’s sole discretion, without prior notice to you. You may stop using the Services at any time. You do not need to specifically inform Google when you stop using the Services.</p>
<p>4.4 You acknowledge and agree that if Google disables access to your account, you may be prevented from accessing the Services, your account details or any files or other content that is contained in your account.</p>
<p><strong>5. Use of the Services by you</strong></p>
<p>5.1 You agree to use the Services only for purposes that are permitted by (a) the Terms and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).</p>
<p>5.2 You agree that you will not engage in any activity that interferes with or disrupts the Services (or the servers and networks that are connected to the Services).</p>
<p>5.3 Unless you have been specifically permitted to do so in a separate agreement with Google, you agree that you will not reproduce, duplicate, copy, sell, trade or resell the Services for any purpose.</p>
<p>5.4 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the Terms and for the consequences (including any loss or damage that Google may suffer) of any such breach.</p>
<p><strong>6. Privacy and your personal information</strong></p>
<p>6.1 For information about Google’s data protection practices, please read Google’s privacy policy at http://www.google.com/privacy.html and at http://www.google.com/chrome/intl/en-GB/privacy.html. This policy explains how Google treats your personal information and protects your privacy when you use the Services.</p>
<p>6.2 You agree to the use of your data in accordance with Google’s privacy policies.</p>
<p><strong>7. Content in the Services</strong></p>
<p>7.1 You understand that all information (such as data files, written text, computer software, music, audio files or other sounds, photographs, videos or other images) that you may have access to as part of, or through your use of the Services are the sole responsibility of the person from which such content originated. All such information is referred to below as the “Content”.</p>
<p>7.2 You should be aware that Content presented to you as part of the Services, including, but not limited to advertisements in the Services and sponsored Content within the Services, may be protected by intellectual property rights that are owned by the sponsors or advertisers who provide that Content to Google (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this Content (either in whole or in part), unless you have been specifically told that you may do so by Google or by the owners of that Content, in a separate agreement.</p>
<p>7.3 Google reserves the right (but shall have no obligation) to prescreen, review, flag, filter, modify, refuse or remove any or all Content from any Service. For some of the Services, Google may provide tools to filter out explicit sexual content. These tools include the SafeSearch preference settings (see http://www.google.co.uk/help/customize.html#safe). In addition, there are commercially available services and software to limit access to material that you may find objectionable.</p>
<p>7.4 You understand that by using the Services, you may be exposed to Content that you may find offensive, indecent or objectionable and that, in this respect, you use the Services at your own risk.</p>
<p>7.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any Content that you create, transmit or display while using the Services, and for the consequences of your actions (including any loss or damage that Google may suffer) by doing so.</p>
<p><strong>8. Proprietary rights</strong></p>
<p>8.1 You acknowledge and agree that Google (or Google’s licensors) own all legal right, title and interest in and to the Services, including any intellectual property rights which subsist in the Services (whether those rights happen to be registered or not, and wherever in the world those rights may exist).</p>
<p>8.2 Unless you have agreed otherwise in writing with Google, nothing in the Terms gives you a right to use any of Google’s trade names, trade marks, service marks, logos, domain names and other distinctive brand features.</p>
<p>8.3 If you have been given an explicit right to use any of these brand features in a separate written agreement with Google, then you agree that your use of such features shall be in compliance with that agreement, any applicable provisions of the Terms and Google's brand-feature use guidelines, as updated from time to time. These guidelines can be viewed online at http://www.google.co.uk/permissions/guidelines.html (or such other URL as Google may provide for this purpose from time to time).</p>
<p>8.4 Google acknowledges and agrees that it obtains no right, title or interest from you (or your licensors) under these Terms in or to any Content that you submit, post, transmit or display on or through the Services, including any intellectual property rights which subsist in that Content (whether those rights happen to be registered or not, and wherever in the world those rights may exist). Unless you have agreed otherwise in writing with Google, you agree that you are responsible for protecting and enforcing those rights and that Google has no obligation to do so on your behalf.</p>
<p>8.5 You agree that you shall not remove, obscure or alter any proprietary rights notices (including copyright and trade-mark notices) that may be affixed to or contained within the Services.</p>
<p>8.6 Unless you have been expressly authorised to do so in writing by Google, you agree that in using the Services, you will not use any trade mark, service mark, trade name, logo of any company or organisation in a way that is likely or intended to cause confusion about the owner or authorised user of such marks, names or logos.</p>
<p><strong>9. Licence from Google</strong></p>
<p>9.1 Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive licence to use the software provided to you by Google as part of the Services provided to you by Google (referred to as the “Software” below). This licence is for the sole purpose of enabling you to use and enjoy the benefit of the Services as provided by Google, in the manner permitted by the Terms.</p>
<p>9.2 Subject to section 1.2, you may not (and you may not permit anyone else to) copy, modify, create a derivative work of, reverse-engineer, decompile or otherwise attempt to extract the source code of the Software or any part thereof, unless this is expressly permitted or required by law or unless you have been specifically told that you may do so by Google, in writing.</p>
<p>9.3 Subject to section 1.2, unless Google has given you specific written permission to do so, you may not assign (or grant a sub-licence of) your rights to use the Software, grant a security interest in or over your rights to use the Software, or otherwise transfer any part of your rights to use the Software.</p>
<p><strong>10. Content licence from you</strong></p>
<p>10.1 You retain copyright and any other rights that you already hold in Content which you submit, post or display on or through the Services.</p>
<p><strong>11. Software updates</strong></p>
<p>11.1 The Software that you use may download and install updates automatically, from time to time, from Google. These updates are designed to improve, enhance and further develop the Services and may take the form of bug fixes, enhanced functions, new software modules and completely new versions. You agree to receive such updates (and permit Google to deliver these to you) as part of your use of the Services.</p>
<p><strong>12. Ending your relationship with Google</strong></p>
<p>12.1 The Terms will continue to apply until terminated either by you or Google, as set out below.</p>
<p>12.2 Google may, at any time, terminate its legal agreement with you if:</p>
<p>(A) you have breached any provision of the Terms (or have acted in a manner that clearly shows that you do not intend to or are unable to comply with the provisions of the Terms); or</p>
<p>(B) Google is required to do so by law (for example, where the provision of the Services to you is or becomes unlawful); or</p>
<p>(C) the partner with whom Google offered the Services to you has terminated its relationship with Google or ceased to offer the Services to you; or</p>
<p>(D) Google is transitioning to no longer providing the Services to users in the country in which you are resident or from which you use the service; or</p>
<p>(E) the provision of the Services to you by Google is, in Google’s opinion, no longer commercially viable.</p>
<p>12.3 Nothing in this Section shall affect Google’s rights regarding provision of Services under Section 4 of the Terms.</p>
<p>12.4 When these Terms come to an end, all the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the Terms have been in force), or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 19.7 shall continue to apply to such rights, obligations and liabilities indefinitely.</p>
<p><strong>13. EXCLUSION OF WARRANTIES</strong></p>
<p>13.1 NOTHING IN THESE TERMS, INCLUDING SECTIONS 13 AND 14, SHALL EXCLUDE OR LIMIT GOOGLE’S WARRANTY OR LIABILITY FOR LOSSES THAT MAY NOT BE LAWFULLY EXCLUDED OR LIMITED BY APPLICABLE LAW. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR CONDITIONS, OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR LOSS OR DAMAGE CAUSED BY NEGLIGENCE, BREACH OF CONTRACT OR BREACH OF IMPLIED TERMS, OR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, ONLY THE LIMITATIONS THAT ARE LAWFUL IN YOUR JURISDICTION WILL APPLY TO YOU AND OUR LIABILITY WILL BE LIMITED TO THE MAXIMUM EXTENT PERMITTED BY LAW.</p>
<p>13.2 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SERVICES IS AT YOUR SOLE RISK AND THAT THE SERVICES ARE PROVIDED &quot;AS IS&quot; AND “AS AVAILABLE”.</p>
<p>13.3 IN PARTICULAR, GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS DO NOT REPRESENT OR WARRANT TO YOU THAT:</p>
<p>(A) YOUR USE OF THE SERVICES WILL MEET YOUR REQUIREMENTS,</p>
<p>(B) YOUR USE OF THE SERVICES WILL BE UNINTERRUPTED, TIMELY, SECURE OR FREE FROM ERROR,</p>
<p>(C) ANY INFORMATION OBTAINED BY YOU AS A RESULT OF YOUR USE OF THE SERVICES WILL BE ACCURATE OR RELIABLE, AND</p>
<p>(D) THAT DEFECTS IN THE OPERATION OR FUNCTIONALITY OF ANY SOFTWARE PROVIDED TO YOU AS PART OF THE SERVICES WILL BE CORRECTED.</p>
<p>13.4 ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SERVICES IS DONE AT YOUR OWN DISCRETION AND RISK, AND YOU WILL BE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE. OR LOSS OF DATA THAT RESULTS FROM THE DOWNLOAD OF ANY SUCH MATERIAL.</p>
<p>13.5 NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM GOOGLE, OR THROUGH OR FROM THE SERVICES, SHALL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN THE TERMS.</p>
<p>13.6 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.</p>
<p><strong>14. LIMITATION OF LIABILITY</strong></p>
<p>14.1 SUBJECT TO OVERALL PROVISION IN PARAGRAPH 13.1 ABOVE, YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU FOR:</p>
<p>(A) ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY. THIS SHALL INCLUDE, BUT NOT BE LIMITED TO ANY LOSS OF PROFIT (WHETHER INCURRED DIRECTLY OR INDIRECTLY), ANY LOSS OF GOODWILL OR BUSINESS REPUTATION, ANY LOSS OF DATA SUFFERED, COST OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR OTHER INTANGIBLE LOSS;</p>
<p>(B) ANY LOSS OR DAMAGE THAT MAY BE INCURRED BY YOU, INCLUDING BUT NOT LIMITED TO LOSS OR DAMAGE AS A RESULT OF:</p>
<p>(I) ANY RELIANCE PLACED BY YOU ON THE COMPLETENESS, ACCURACY OR EXISTENCE OF ANY ADVERTISING, OR AS A RESULT OF ANY RELATIONSHIP OR TRANSACTION BETWEEN YOU AND ANY ADVERTISER OR SPONSOR WHOSE ADVERTISING APPEARS ON THE SERVICES;</p>
<p>(II) ANY CHANGES THAT GOOGLE MAY MAKE TO THE SERVICES OR FOR ANY PERMANENT OR TEMPORARY CESSATION IN THE PROVISION OF THE SERVICES (OR ANY FEATURES WITHIN THE SERVICES);</p>
<p>(III) THE DELETION OF, CORRUPTION OF OR FAILURE TO STORE ANY CONTENT AND OTHER COMMUNICATIONS DATA MAINTAINED OR TRANSMITTED BY OR THROUGH YOUR USE OF THE SERVICES;</p>
<p>(IV) YOUR FAILURE TO PROVIDE GOOGLE WITH ACCURATE ACCOUNT INFORMATION;</p>
<p>(V) YOUR FAILURE TO KEEP YOUR PASSWORD OR ACCOUNT DETAILS SECURE AND CONFIDENTIAL;</p>
<p>14.2 THE LIMITATIONS ON GOOGLE’S LIABILITY TO YOU IN PARAGRAPH 14.1 ABOVE SHALL APPLY, WHETHER OR NOT GOOGLE HAS BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.</p>
<p><strong>15. Copyright and trade mark policies</strong></p>
<p>15.1 It is Google’s policy to respond to notices of alleged copyright infringement that comply with applicable international intellectual property law (including, in the United States, the Digital Millennium Copyright Act) and to terminate the accounts of repeated infringers. Details of Google’s policy can be found at http://www.google.co.uk/dmca.html.</p>
<p>15.2 Google operates a trade mark complaints procedure in respect of Google’s advertising business, details of which can be found at http://www.google.co.uk/tm_complaint.html.</p>
<p><strong>16. Advertisements</strong></p>
<p>16.1 Some of the Services are supported by advertising revenue and may display advertisements and promotions. These advertisements may be targeted to the content of information stored on the Services, queries made through the Services or other information.</p>
<p>16.2 The manner, mode and extent of advertising by Google on the Services are subject to change without specific notice to you.</p>
<p>16.3 In consideration for Google granting you access to and use of the Services, you agree that Google may place such advertising on the Services.</p>
<p><strong>17. Other content</strong></p>
<p>17.1 The Services may include hyperlinks to other websites, or content or resources. Google may have no control over any websites or resources that are provided by companies or persons other than Google.</p>
<p>17.2 You acknowledge and agree that Google is not responsible for the availability of any such external sites or resources and does not endorse any advertising, products or other materials on or available from such websites or resources.</p>
<p>17.3 You acknowledge and agree that Google is not liable for any loss or damage that may be incurred by you as a result of the availability of those external sites or resources, or as a result of any reliance placed by you on the completeness, accuracy or existence of any advertising, products or other materials on or available from such websites or resources.</p>
<p><strong>18. Changes to the Terms</strong></p>
<p>18.1 Google may make changes to the Universal Terms or Additional Terms from time to time. When these changes are made, Google will make a new copy of the Universal Terms available at http://www.google.com/chrome/intl/en-GB/eula_text.html and any new Additional Terms will be made available to you from within or through the affected Services.</p>
<p>18.2 You understand and agree that if you use the Services after the date on which the Universal Terms or Additional Terms have changed, Google will treat your use as acceptance of the updated Universal Terms or Additional Terms.</p>
<p><strong>19. General legal terms</strong></p>
<p>19.1 Sometimes, when you use the Services, you may (as a result of, or in connection with your use of the Services) use a service or download a piece of software, or purchase goods which are provided by another person or company. Your use of these other services, software or goods may be subject to separate terms between you and the company or person concerned. If so, the Terms do not affect your legal relationship with these other companies or individuals.</p>
<p>19.2 The Terms constitute the whole legal agreement between you and Google and govern your use of the Services (but exclude any services that Google may provide to you under a separate written agreement) and completely replace any prior agreements between you and Google in relation to the Services.</p>
<p>19.3 You agree that Google may provide you with notices, including those regarding changes to the Terms, by email, letter post or postings on the Services.</p>
<p>19.4 You agree that if Google does not exercise or enforce any legal right or remedy that is contained in the Terms (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google’s rights and that those rights or remedies will still be available to Google.</p>
<p>19.5 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of these Terms is invalid, then that provision will be removed from the Terms without affecting the rest of the Terms. The remaining provisions of the Terms will continue to be valid and enforceable.</p>
<p>19.6 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third-party beneficiaries to the Terms and that such other companies shall be entitled to directly enforce and rely upon any provision of the Terms that confers a benefit on (or rights in favour of) them. Other than this, no other person or company shall be third-party beneficiaries to the Terms.</p>
<p>19.7 The Terms and your relationship with Google under the Terms shall be governed by the laws of the State of California, without regard to its conflict-of-laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the Terms. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.</p>
<p><strong>20. Additional Terms for Extensions for Google Chrome</strong></p>
<p>20.1 These terms in this section apply if you install extensions on your copy of Google Chrome. Extensions are small software programmes, developed by Google or third parties that can modify and enhance the functionality of Google Chrome. Extensions may have greater privileges to access your browser or your computer than regular web pages, including the ability to read and modify your private data.</p>
<p>20.2 From time to time, Google Chrome may check with remote servers (hosted by Google or by third parties) for available updates to extensions, including, but not limited to bug fixes or enhanced functionality. You agree that such updates will be requested automatically, downloaded and installed without further notice to you.</p>
<p>20.3 From time to time, Google may discover an extension that violates Google developer terms or other legal agreements, laws, regulations or policies. Google Chrome will periodically download a list of such extensions from Google’s servers. You agree that Google may remotely disable or remove any such extension from user systems at its sole discretion. </p>
<p><strong>21. Additional Terms for Enterprise Use</strong></p>
<p>21.1 If you are a business entity, then the individual accepting on behalf of the entity (for the avoidance of doubt, for business entities, in these Terms, "you" means the entity) represents and warrants that he or she has the authority to act on your behalf, that you represent that you are duly authorised to do business in the country or countries where you operate and that your employees, officers, representatives and other agents accessing the Service are duly authorised to access Google Chrome and to legally bind you to these Terms.</p>
<p>21.2 Subject to the Terms and in addition to the licence grant in Section 9, Google grants you a non-exclusive, non-transferable licence to reproduce, distribute, install and use Google Chrome solely on machines intended for use by your employees, officers, representatives and agents in connection with your business entity, and provided that their use of Google Chrome will be subject to the Terms.</p>
<p>12 August 2010</p>
<br>
<hr>
<br>
<h2>Google Chrome Additional Terms of Service</h2>
<p><strong>MPEGLA</strong></p>
<p>THIS PRODUCT IS LICENSED UNDER THE AVC PATENT PORTFOLIO LICENCE FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD (“AVC VIDEO”) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PARTNER LICENSED TO PROVIDE AVC VIDEO. NO LICENCE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE HTTP://WWW.MPEGLA.COM.</p>
<p><strong>Adobe</strong></p>
<p>Google Chrome may include one or more components provided by Adobe Systems Incorporated and Adobe Software Ireland Limited (collectively, “Adobe”). Your use of the Adobe software, as provided by Google (“Adobe Software”), is subject to the following additional terms (the “Adobe Terms”). You, the entity receiving the Adobe Software, will be hereinafter referred to as “Sublicensee”.</p>
<p>1. Licensing Restrictions.</p>
<p>(a) Flash Player, Version 10.x is designed only as a browser plug-in. Sublicensee may not modify or distribute this Adobe Software for use as anything but a browser plug-in for playing back content on a web page. For example, Sublicensee will not modify this Adobe Software in order to allow interoperation with applications that run outside the browser (e.g. stand-alone applications, widgets, device UI).</p>  
<p>(b) Sublicensee will not expose any APIs of the Flash Player, Version 10.x through a browser plug-in interface in such a way that allows such extension to be used to play back content from a web page as a stand-alone application.</p>
<p>(c) The Chrome-Reader Software may not be used to render any PDF or EPUB documents that utilise digital-rights management protocols or systems other than Adobe DRM.</p>
<p>(d) Adobe DRM must be enabled in the Chrome-Reader Software for all Adobe DRM-protected PDF and EPUB documents.</p>
<p>(e) The Chrome-Reader Software may not, other than as explicitly permitted by the technical specifications, disable any capabilities provided by Adobe in the Adobe Software, including, but not limited to, support for PDF and EPUB formats and Adobe DRM.</p>
<p>2. Electronic Transmission. Sublicensee may allow the download of the Adobe Software from a website, the Internet, an intranet or similar technology (“Electronic Transmissions”), provided that Sublicensee agrees that any distributions of the Adobe Software by Sublicensee, including those on CD-ROM, DVD-ROM or other storage media and Electronic Transmissions, if expressly permitted, shall be subject to reasonable security measures to prevent unauthorised use. With relation to Electronic Transmissions approved hereunder, Sublicensee agrees to employ any reasonable usage restrictions set by Adobe, including those related to security and/or the restriction of distribution to end users of the Sublicensee's Product.</p>  
<p>3. EULA and Distribution Terms.</p>  
<p>(a) Sublicensee shall ensure that the Adobe Software is distributed to end users under an enforceable end-user licence agreement, in favour of Sublicensee and its suppliers, containing at least each of the following minimum terms (the “End-User Licence”): (i) a prohibition against distribution and copying, (ii) a prohibition against modifications and derivative works, (iii) a prohibition against decompiling, reverse-engineering, disassembling and otherwise reducing the Adobe Software to a human-perceivable form, (iv) a provision indicating ownership of Sublicensee's Product (as defined in Section 8) by Sublicensee and its licensors, (v) a disclaimer of indirect, special, incidental, punitive and consequential damages and (vi) other industry-standard disclaimers and limitations, including, as applicable: a disclaimer of all applicable statutory warranties, to the full extent allowed by law.</p>
<p>(b) Sublicensee shall ensure that the Adobe Software is distributed to Sublicensee’s distributors under an enforceable distribution licence agreement, in favour of Sublicensee and its suppliers, containing terms as protective of Adobe as the Adobe Terms.</p>  
<p>4. Open Source. Sublicensee will not directly or indirectly grant, or purport to grant, to any third party any rights or immunities under Adobe’s intellectual property or proprietary rights that will subject such intellectual property to an open-source licence or scheme in which there is, or could be interpreted to be, a requirement that as a condition of use, modification and/or distribution, the Adobe Software be: (i) disclosed or distributed in source code form; (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge. For clarification purposes, the foregoing restriction does not preclude Sublicensee from distributing, and Sublicensee will distribute the Adobe Software as bundled with the Google Software, without charge.</p>
<p>5. Additional Terms. With respect to any update, upgrade and new versions of the Adobe Software (collectively “Upgrades”) provided to Sublicenses, Adobe reserves the right to require additional terms and conditions applicable solely to the Upgrade and future versions thereof, and solely to the extent that such restrictions are imposed by Adobe on all licensees of such Upgrade. If Sublicensee does not agree to such additional terms or conditions, Sublicensee will have no licensing rights with respect to such Upgrade and Sublicensee’s licensing rights with respect to the Adobe Software will terminate automatically on the 90th day from the date that such additional terms are made available to Sublicensee.</p>  
<p>6. Proprietary Rights Notices. Sublicensee shall not, and shall require its distributors not to, delete or in any manner alter the copyright notices, trademarks, logos or related notices, or other proprietary rights notices of Adobe (and its licensors, if any) appearing on or within the Adobe Software or accompanying materials.</p>
<p>7. Technical Requirements. Sublicensee and its distributors may only distribute Adobe Software and/or Upgrade on devices that (i) meet the technical specifications posted on http://www.adobe.com/mobile/licensees, (or a successor website thereto) and (ii) have been verified by Adobe, as set forth below.</p>
<p>8. Verification and Update. Sublicensee must submit to Adobe each Sublicensee's product (and each version thereof) containing the Adobe Software and/or Upgrade (“Sublicensee's Product”) that do not meet the Device Verification exemption criteria to be communicated by Google, for Adobe to verify. Sublicensee shall pay for each submission made by Sublicensee by procuring verification packages under the Adobe terms applicable at the time set forth at http://flashmobile.adobe.com/. Sublicensee's Product that has not passed verification may not be distributed. Verification will be accomplished in accordance with the Adobe process applicable at the time described at http://flashmobile.adobe.com/ (“Verification”).</p>
<p>9. Profiles and Device Central. Sublicensee will be prompted to enter certain profile information about the Sublicensee's Products, either as part of the Verification process or some other method, and Sublicensee will provide such information to Adobe. Adobe may (i) use such profile information as reasonably necessary to verify the Sublicensee's Product (if such product is subject to Verification), and (ii) display such profile information in “Adobe Device Intelligence system”, located at https://devices.adobe.com/partnerportal/, and made available through Adobe’s authoring and development tools and services to enable developers and end users to see how content or applications are displayed in Sublicensee's Products (e.g. how video images appear in certain phones).</p>  
<p>10. Export. Sublicensee acknowledges that the laws and regulations of the United States restrict the export and re-export of commodities and technical data of United States origin, which may include the Adobe Software. Sublicensee agrees that it will not export or re-export the Adobe Software without the appropriate United States and foreign governmental clearances, if any.</p>
<p>11. Technology Pass-through Terms.</p>  
<p>(a) Except pursuant to applicable permissions or agreements therefore, from or with the applicable parties, Sublicensees shall not use, and shall not allow the use of, the Adobe Software for the encoding or decoding of MP3 audio-only (.MP3) data on any non-PC device (e.g. mobile phone or set-top box), nor may the MP3 encoders or decoders contained in the Adobe Software be used or accessed by any product other than the Adobe Software. The Adobe Software may be used for the encoding or decoding of MP3 data contained within an SWF or FLV file, which contains video, picture or other data. Sublicensee shall acknowledge that use of the Adobe Software for non-PC devices, as described in the prohibitions in this section, may require the payment of licensing royalties or other amounts to third parties who may hold intellectual property rights related to the MP3 technology, and that Adobe and Sublicensee have not paid any royalties or other amounts on account of third-party intellectual property rights for such use. If Sublicensee requires an MP3 encoder or decoder for such use, Sublicensee is responsible for obtaining the necessary intellectual property licence, including any applicable patent rights.</p>
<p>(b) Sublicensee will not use, copy, reproduce and modify (i) the On2 source code (provided hereunder as a component of the Source Code), as necessary, to enable the Adobe Software to decode video in the Flash video file format (.flv or .f4v) and (ii) the Sorenson Spark source code (provided hereunder as a component of the Source Code) for the limited purpose of making bug fixes and performance enhancements to the Adobe Software. All codecs provided with the Adobe Software may only be used and distributed as an integrated part of the Adobe Software and may not be accessed by any other application, including other Google applications.</p>  
<p>(c) The Source Code may be provided with an AAC codec and/or HE-AAC codec (“the AAC Codec”). Use of the AAC Codec is conditioned on Sublicensee obtaining a proper patent licence covering necessary patents, as provided by VIA Licensing, for end products on or in which the AAC Codec will be used. Sublicensee acknowledges and agrees that Adobe is not providing a patent licence for an AAC Codec under this Agreement to Sublicensee or its sublicensees.</p>
<p>(d) THE SOURCE CODE MAY CONTAIN CODE LICENSED UNDER THE AVC PATENT PORTFOLIO LICENCE FOR THE PERSONAL, NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD ("AVC VIDEO") AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL, NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC VIDEO. NO LICENCE IS GRANTED OR WILL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. See http://www.mpegla.com</p>
<p>12. Update. Sublicensee will not circumvent Google’s or Adobe’s efforts to update the Adobe Software in all Sublicensee’s products incorporating the Adobe Software as bundled with the Google Software (“Sublicensee's Products”).</p>  
<p>13. Attribution and Proprietary Notices. Sublicensee will list the Adobe Software in publicly available Sublicensee's Product specifications and include appropriate Adobe Software branding (specifically excluding the Adobe corporate logo) on the Sublicensee's Product packaging or marketing materials in a manner consistent with branding of other third-party products contained within the Sublicensee's Product.</p>
<p>14. No Warranty. THE ADOBE SOFTWARE IS MADE AVAILABLE TO SUBLICENSEE FOR USE AND REPRODUCTION “AS IS” AND ADOBE MAKES NO WARRANTY AS TO ITS USE OR PERFORMANCE. ADOBE AND ITS SUPPLIERS DO NOT AND CANNOT WARRANT THE PERFORMANCE OR RESULTS OBTAINED BY USING THE ADOBE SOFTWARE. EXCEPT FOR ANY WARRANTY, CONDITION, REPRESENTATION OR TERM, TO THE EXTENT TO WHICH THE SAME CANNOT OR MAY NOT BE EXCLUDED OR LIMITED BY LAW APPLICABLE TO SUBLICENSEE IN SUBLICENSEE’S JURISDICTION, ADOBE AND ITS SUPPLIERS MAKE NO WARRANTIES, CONDITIONS, REPRESENTATIONS OR TERMS (EXPRESS OR IMPLIED, WHETHER BY STATUTE, COMMON LAW, CUSTOM, USAGE OR OTHERWISE) AS TO ANY MATTER, INCLUDING, WITHOUT LIMITATION, NON-INFRINGEMENT OF THIRD-PARTY RIGHTS, MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY OR FITNESS FOR ANY PARTICULAR PURPOSE. SUBLICENSEE AGREES THAT SUBLICENSEE SHALL NOT MAKE ANY WARRANTY, EXPRESS OR IMPLIED, ON BEHALF OF ADOBE.</p>  
<p>15. Limitation of Liability. IN NO EVENT WILL ADOBE OR ITS SUPPLIERS BE LIABLE TO SUBLICENSEE FOR ANY DAMAGES, CLAIMS OR COSTS WHATSOEVER, OR ANY CONSEQUENTIAL, INDIRECT OR INCIDENTAL DAMAGES, OR ANY LOST PROFITS OR LOST SAVINGS, EVEN IF AN ADOBE REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS, OR FOR ANY CLAIM BY ANY THIRD PARTY. THE FOREGOING LIMITATIONS AND EXCLUSIONS APPLY TO THE EXTENT PERMITTED BY APPLICABLE LAW IN SUBLICENSEE’S JURISDICTION. ADOBE’S AGGREGATE LIABILITY AND THAT OF ITS SUPPLIERS UNDER OR IN CONNECTION WITH THIS AGREEMENT SHALL BE LIMITED TO ONE THOUSAND DOLLARS (US$1,000). Nothing contained in this Agreement limits Adobe’s liability to Sublicensee in the event of death or personal injury resulting from Adobe’s negligence or for the tort of deceit (fraud). Adobe is acting on behalf of its suppliers for the purpose of disclaiming, excluding and/or limiting obligations, warranties and liability, as provided in this Agreement, but in no other respects and for no other purpose.</p>
<p>16. Content Protection Terms</p>
<p>(a) Definitions.</p>
<p>“Compliance and Robustness Rules” means the document setting forth compliance and robustness rules for the Adobe Software, located at http://www.adobe.com/mobile/licensees or a successor website thereto.</p>
<p>“Content Protection Functions” means those aspects of the Adobe Software that are designed to ensure compliance with the Compliance and Robustness Rules, and to prevent playback, copying, modification, redistribution or other actions with respect to digital content distributed for consumption by users of the Adobe Software, when such actions are not authorised by the owners of such digital content or its licensed distributors.</p>
<p>“Content Protection Code” means code within certain designated versions of the Adobe Software that enables certain Content Protection Functions.</p>
<p>“Key” means a cryptographic value contained in the Adobe Software for use in decrypting digital content.</p>
<p>(b) Licensing Restrictions. Sublicensee’s right to exercise the licences with respect to the Adobe Software is subject to the following additional restrictions and obligations. Sublicensee will ensure that Sublicensee’s customers comply with these restrictions and obligations to the same extent imposed on Sublicensee with respect to the Adobe Software; any failure by Sublicensee’s customers to comply with these additional restrictions and obligations shall be treated as a material breach by Sublicensee.</p>
<p>b.1. Sublicensee and customers may only distribute the Adobe Software that meets the Robustness and Compliance Rules as so confirmed by Sublicensee during the verification process described above in the Adobe Terms.</p>   
<p>b.2. Sublicensee shall not (i) circumvent the Content Protection Functions of either the Adobe Software or any related Adobe Software that is used to encrypt or decrypt digital content for authorised consumption by users of the Adobe Software or (ii) develop or distribute products that are designed to circumvent the Content Protection Functions of either the Adobe Software or any Adobe Software that is used to encrypt or decrypt digital content for authorised consumption by users of the Adobe Software.</p>
<p>(c) The Keys are hereby designated as Adobe’s Confidential Information and Sublicensee will, with respect to the Keys, adhere to Adobe’s Source Code Handling Procedure (to be provided by Adobe upon request).</p>  
<p>(d) Injunctive Relief. Sublicensee agrees that a breach of this Agreement may compromise the Content Protection Functions of the Adobe Software and may cause unique and lasting harm to the interests of Adobe and owners of digital content who rely on such Content Protection Functions, and that monetary damages may be inadequate to compensate fully for such harm. Therefore, Sublicensee further agrees that Adobe may be entitled to seek injunctive relief to prevent or limit the harm caused by any such breach, in addition to monetary damages.</p>
<p>17. Intended Third-party Beneficiary. Adobe Systems Incorporated and Adobe Software Ireland Limited are the intended third-party beneficiaries of Google’s agreement with Sublicensee with respect to the Adobe Software, including, but not limited to, the Adobe Terms. Sublicensee agrees, notwithstanding anything to the contrary in its agreement with Google, that Google may disclose Sublicensee’s identity to Adobe and certify in writing that Sublicensee has entered into a licensing agreement with Google which includes the Adobe Terms. Sublicensee must have an agreement with each of its licensees and if such licensees are allowed to redistribute the Adobe Software, such agreement will include the Adobe Terms.</p>
</body>
</html>
