2D BOY, LLC
End User License Agreement

THIS END USER LICENSE AGREEMENT ("EULA") IS A BINDING LEGAL AGREEMENT BETWEEN 2D BOY, LLC ("2D BOY") AND YOU AND, IF APPLICABLE, THE COMPANY OR OTHER LEGAL ENTITY YOU REPRESENT (COLLECTIVELY, "YOU" AND "YOUR") REGARDING THE GAME SOFTWARE THAT YOU ARE INSTALLING, INCLUDING ANY ACCOMPANYING MANUAL OR OTHER RELATED MATERIAL PROVIDED BY 2D BOY AS PART OF, OR IN CONNECTION, THEREWITH (COLLECTIVELY, THE "GAME").

BY CLICKING THE "I AGREE" BUTTON BELOW, OR BY OTHERWISE CONTINUING TO INSTALL, DOWNLOAD, COPY, ACCESS OR USE THE GAME, YOU ACKNOWLEDGE THAT YOU UNDERSTAND AND AGREE TO BE BOUND BY THE TERMS OF THIS EULA.  IF YOU DO NOT AGREE, YOU MUST SELECT THE "I DON'T AGREE" BUTTON AND YOU MAY NOT CONTINUE TO INSTALL, DOWNLOAD, COPY, ACCESS OR USE THE GAME.

1. 	LICENSE GRANT AND RESTRICTIONS.

	1.1	License Grant. 2D BOY hereby grants to you a non-exclusive license to use a single copy of the object code version of the Game for your personal, non-commercial home entertainment use on one personal computer or other compatible electronic device.  You may sell or transfer your copy of the Game to another person along with, and subject to, your rights under this EULA, only if you do not retain any copies.

	1.2	Restrictions. You may not (i) decompile, disassemble or reverse engineer the Game or otherwise attempt to gain access to its source code, except to the extent that such restrictions are expressly prohibited by law; (ii) copy, offer for public display or create derivative works thereof, except to the extent that such restrictions are expressly prohibited by law; (iii) rent, lease, loan, sublicense or distribute the Game, or offer it on a pay-per-play, coin-op or other for charge (or free) basis; (iv) use the Game to infringe the copyrights or other intellectual property rights of others in any way; (v) modify or delete the copyright and other proprietary rights notices on or in the Game.

	1.3  	Additional Restrictions for Trial Versions. If the Game was provided to you for trial use for a limited period of time and/or number of uses, you agree not to use the Game beyond the expiration or termination of the trial period.  You acknowledge and agree that the Game may include code designed to prevent you from exceeding these limits, and that such code may remain on your computer or device after deletion of the Game to prevent you from installing another copy of the Game and repeating the trial.

	1.4  	Game Specific Terms and Conditions. For additional terms and conditions that may apply to the Game, such as third-party copyright notices and license information, please review the Readme file included with the Game.  The ReadMe file for the Game is hereby incorporated into this EULA by this reference.

2.  	TERMINATION. This EULA is effective until terminated. You may terminate this EULA at any time by uninstalling the Game and destroying all copies of the Game in your possession or control.  2D BOY may terminate this EULA immediately upon notice to you if you breach any of its terms or conditions.  Upon termination of this EULA, you agree to immediately uninstall the Game and destroy all copies of the Game.

3.  	GAME OWNERSHIP. The Game is the copyrighted proprietary material of 2D BOY and/or its third-party licensors and is subject to copyright protection under U.S. copyright law and international copyright treaties, as well as other intellectual property laws and treaties. 2D BOY and/or its third-party licensors retain all right, title, and interest in the Game (and any copies thereof) and specifically reserve all rights not expressly granted under this EULA.

4.  LIMITED WARRANTIES BY 2D BOY.

	4.1 	Limited Warranty. 2D BOY WARRANTS TO YOU, THE ORIGINAL PURCHASER OF THE GAME, THAT THE GAME WILL BE FREE FROM DEFECTS IN MATERIALS AND WORKMANSHIP FOR A PERIOD OF NINETY (90) DAYS FROM THE DATE OF PURCHASE (THE "WARRANTY PERIOD").  THIS LIMITED WARRANTY IS VOID IF THE GAME HAS BEEN SUBJECT TO MISUSE, DAMAGE OR IF YOU HAVE VIOLATED THIS EULA. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, OR WARRANTIES THAT THE GAME WILL BE ERROR-FREE, SECURE OR VIRUS-FREE, ARE HEREBY EXPRESSLY DISCLAIMED.

	4.2 	Additional Warranty for Retail Product. IF YOU PURCHASED THE GAME ON A DISC OR OTHER RECORDING MEDIUM, THEN YOU MUST MAKE ANY WARRANTY CLAIM TO THE RETAILER FROM WHICH YOU PURCHASED THE GAME BY PROVIDING A COPY OF YOUR ORIGINAL SALES RECEIPT AND ANY OTHER DETAILS REQUIRED BY THE RETAILER. THE RETAILER, AT ITS OPTION, MAY REFUND YOUR PURCHASE PRICE, REPAIR OR REPLACE THE DISC OR OTHER MEDIA CONTAINING THE GAME. ANY REPLACEMENT WILL BE WARRANTED FOR THE REMAINDER OF THE ORIGINAL WARRANTY PERIOD OR THIRTY (30) DAYS, WHICHEVER IS LONGER. YOUR EXCLUSIVE REMEDY, AND THE ENTIRE LIABILITY OF 2D BOY, ITS AFFILIATES, LICENSORS AND SUPPLIERS (COLLECTIVELY, "THE 2D BOY PARTIES"), FOR BREACH OF THIS WARRANTY, SHALL BE THE REFUND, REPAIR OR REPLACEMENT DESCRIBED ABOVE.

5. LIMITATION OF LIABILITY. NO PROVISIONS OF THIS EULA SHALL APPLY TO LIMIT LIABILITY ARISING FROM DEATH OR PERSONAL INJURY CAUSED BY NEGLIGENCE OR FOR FRAUD. OTHERWISE, IN NO EVENT WILL THE 2D BOY PARTIES' TOTAL AGGREGATE LIABILITY TO YOU FOR DIRECT DAMAGES, LOSSES, AND CAUSES OF ACTION ARISING OUT OF OR RELATING TO THIS EULA AND/OR YOUR USE OF THE GAME EXCEED THE AMOUNT PAID BY YOU FOR THE GAME.  IN NO EVENT WILL THE 2D BOY PARTIES BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR ANY OTHER TYPE OF DAMAGES (INCLUDING WITHOUT LIMITATION DAMAGES RELATING TO LOST PROFITS, LOSS OF DATA, PRIVACY, NEGLIGENCE OR OTHER DUTY OF CARE), EVEN IF ONE OR MORE OF THE 2D BOY PARTIES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

6. BASIS OF THE BARGAIN; EXCLUSIONS. The disclaimers of warranties and limitations of liability set forth above are fundamental elements of the basis of the agreement between you and 2D BOY.  You understand and agree that 2D BOY would not be able to economically or reasonably provide the Game to you without these limitations. HOWEVER, SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES AND/OR THE LIMITATION OF INDIRECT DAMAGES AS SET FORTH IN SECTIONS 4 AND 5 ABOVE, SO THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

7. INDEMNIFICATION.  You agree to indemnify, defend and hold harmless the 2D BOY Parties, including their respective employees, officers, directors and personnel from any claims, losses, damages, liabilities, including attorneys' fees, arising out of your violation of this EULA and/or your use or misuse of the Game.

8. EXPORT CONTROL.  The Game originates in the United States and is subject to United States export laws and regulations. You may not export or re-export, in whole or in part, the Game to certain countries, persons or entities prohibited from receiving exports from the United States.  Additionally, the Game may be subject to the import and export laws of other countries, and you agree that you will comply with any such foreign import and export laws, as applicable.

9. MISCELLANEOUS.  You agree to comply with all United States and foreign laws related to your use of the Game.  This is the entire agreement between you and 2D BOY relating to the subject matter herein and replaces any and all previous representations, agreements, understandings or communications, whether written or oral.  This EULA may not be modified except in writing, signed by both parties. If a court of competent jurisdiction declares any provision of this EULA to be void or unenforceable, then such provision will be interpreted, construed or reformed to the extent reasonably required to render it valid, enforceable and consistent with the original intent underlying such provision, and such invalidity or unenforceability will not affect any other provision of this EULA.   The English language version of this EULA will control its interpretation.

10.  GOVERNING LAW AND VENUE.

This EULA will be governed by and construed in accordance with the laws of the State of California, USA, excluding its conflicts of law rules and specifically excluding the United Nations Convention on Contracts for the International Sale of Goods.  Venue for any action hereunder shall lie exclusively in the state and federal courts located in San Francisco County, California USA and you hereby consent and submit to the personal jurisdiction of such courts.

11.  NOTICES; HOW TO CONTACT 2D BOY.  The Game is made available to you by 2D BOY, LLC.  2D BOY may be contacted via its website (http://2dboy.com).
