Copied from https://lastpass.com/terms-of-service/ as of 2014/10/08; 
note that license page itself is explicitly licensed under Creative Commons
Share-Alike, but LastPass itself is not.
===

The following terms and conditions govern all use of the LastPass.com and other LastPass websites and all content, services and products available at or through the website (taken together, the Website). The Website is owned and operated by LastPass. The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies and procedures that may be published from time to time on this Site by LastPass (collectively, the ‘Agreement’).

Please read this Agreement carefully before accessing or using the web site. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the website or use any services. If these terms and conditions are considered an offer by LastPass, acceptance is expressly limited to these terms.

Your Account.
You are responsible for maintaining the security of your account, and you are fully responsible for all activities that occur under the account and any other actions taken in connection with it. You must not use your account in a misleading or unlawful manner, including in a manner intended to trade on the name or reputation of others, and LastPass may change or remove any description or keyword that it considers inappropriate or unlawful, or otherwise likely to cause LastPass liability. You must immediately notify LastPass of any unauthorized uses of your account or any other breaches of security. LastPass will not be liable for any acts or omissions by You, including any damages of any kind incurred as a result of such acts or omissions.

Without limiting any of those representations or warranties, LastPass has the right (though not the obligation) to, in LastPass’ sole discretion (i) refuse or remove any content that, in LastPass’ reasonable opinion, violates any LastPass policy or is in any way harmful or objectionable, or (ii) terminate or deny access to and use of the Website to any individual or entity for any reason, in LastPass’ sole discretion. LastPass will have no obligation to provide a refund of any amounts previously paid.

LastPass Standard (free edition) is intended for personal, non-commercial use only. The unauthorized commercial use of LastPass Standard is prohibited. LastPass reserves all its rights in the event of a violation of this policy, which may include discontinuation of the subscription itself, suspension of your privileges as a user, and enforcement of LastPass’ rights under law and equity.

Responsibility of Website Visitors.
LastPass has not reviewed, and cannot review, all of the material, including computer software that is not cryptographically signed by LastPass, posted to the Website, and cannot therefore be responsible for that material’s content, use or effects. By operating the Website, LastPass does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions, stated or unstated. LastPass disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted.

Content Posted on Other Websites.
We have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which LastPass.com links, and that link to LastPass.com. LastPass does not have any control over those non-LastPass.com websites and webpages, and is not responsible for their contents or their use. By linking to a non-LastPass.com website or webpage, LastPass does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. LastPass disclaims any responsibility for any harm resulting from your use of non-LastPass websites and webpages.

Copyright Infringement and DMCA Policy.
As LastPass asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by LastPass.com violates your copyright, you are encouraged to notify LastPass in accordance with LastPass’ Digital Millennium Copyright Act (‘DMCA’) Policy. LastPass will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. In the case of a visitor who may infringe or repeatedly infringes the copyrights or other intellectual property rights of LastPass or others, LastPass may, in its discretion, terminate or deny access to and use of the Website. In the case of such termination, LastPass will have no obligation to provide a refund of any amounts previously paid to LastPass.

Intellectual Property.
This Agreement does not transfer from LastPass to you any LastPass or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with LastPass. LastPass, LastPass.com, and all other trademarks, service marks, graphics and logos used in connection with LastPass.com, or the Website are trademarks or registered trademarks of LastPass or LastPass’ licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any LastPass or third-party trademarks.

Changes.
LastPass reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. LastPass may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement.

Termination.
LastPass may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your account (if you have one), you may simply discontinue using the Website. Notwithstanding the foregoing, if you have a Services account, such account can only be terminated by LastPass if you materially breach this Agreement and fail to cure such breach within thirty (30) days from LastPass’ notice to you thereof; provided that, LastPass can terminate the Website immediately as part of a general shut down of our service. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.

Disclaimer of Warranties.
The Website is provided ‘as is’. LastPass and its suppliers, licensors and affiliate companies hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither LastPass nor its suppliers and licensors, makes any warranty that the Website will be error free or that access thereto will be continuous or uninterrupted. You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk.

Limitation of Liability.
In no event will LastPass, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement or substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that increase the fees paid by you to LastPass under this agreement during the twelve (12) month period prior to the date the cause of the action accrues. LastPass shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law.

General Representation and Warranty.
You represent and warrant that (i) your use of the Website will be in strict accordance with the LastPass Privacy Statement, with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the United States or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party.

Indemnification.
You agree to indemnify and hold harmless LastPass, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys’ fees, arising out of your use of the Website, including but not limited to out of your violation this Agreement.

Use of LastPass by Kids
LastPass can be used by kids, however LastPass is not currently developed for children specifically and any use by children should be done with the guidance, supervision and consent of their parents, guardians and/or authorized school officials. It is also the parents’ or guardian’s responsibility to understand our Terms and our Privacy Policy.

If you are an educational organization or an educator like a school, district or teacher in the United States and want your students who to create LastPass accounts, including any use of a LastPass Enterprise account for the schools or a group of students at the school, you agree that you are responsible for complying with the U.S. Children’s Online Privacy Protection Act (“COPPA”) and, to the extent applicable, The Family Educational Rights and Privacy Act (“FERPA”). Students’ parents/guardians must be notified of the use of LastPass, of the personally identifiable information that LastPass will collect, and of the LastPass Terms and Privacy Policy and you must obtain parental/guardian consent before your students establish accounts or use the Service. Copies of any communication should be kept for LastPass’ review if needed. For more information on complying with COPPA, see the Federal Trade Commission’s website at http://www.ftc.gov/privacy/coppafaqs.shtm. If you are located outside of the United States, we will rely upon you to obtain any required consent or approval from the parent or guardian of any student covered by similar laws and, as a condition to your and your students’ use of the Service, you agree that you will be responsible for complying with such laws.

Miscellaneous.
This Agreement constitutes the entire agreement between LastPass and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of LastPass, or by the posting by LastPass of a revised version. Except to the extent applicable law, if any, provides otherwise, this Agreement, any access to or use of the Website will be governed by the laws of the state of Virginia, excluding its conflict of law provisions, and the proper venue for any disputes arising out of or relating to any of the same will be the state and federal courts located in Fairfax, VA.

The prevailing party in any action or proceeding to enforce this Agreement shall be entitled to costs and attorneys’ fees. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties’ original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; LastPass may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns.

Marvasol Inc. DBA LastPass

These terms are licensed under Creative Commons Share-Alike.
