{
  "name": "Reveal-iOS-SDK",
  "version": "1.5.1",
  "summary": "The Reveal SDK for iOS.",
  "homepage": "http://revealapp.com/",
  "authors": "Itty Bitty Apps Pty Ltd",
  "source": {
    "http": "http://download.revealapp.com/Reveal-Framework-1.5.1.zip"
  },
  "platforms": {
    "ios": "6.1"
  },
  "compiler_flags": "-ObjC",
  "frameworks": [
    "CoreGraphics",
    "CFNetwork",
    "QuartzCore"
  ],
  "libraries": "z",
  "vendored_frameworks": "Reveal-Framework-1.5.1/Reveal.framework",
  "requires_arc": false,
  "license": {
    "type": "Copyright",
    "text": "# REVEAL LICENSE AGREEMENT v1.1\n\n## NOTICE TO USER:\n\nThis is a legally enforceable agreement between you (__\"you\"__ or __\"yours\"__ and other grammatical equivalents) and Itty Bitty Apps Pty Ltd. (__\"the Company\"__), which covers your use of the Reveal software product that accompanies this Agreement and related software components, which may include associated media, printed materials, and \"online\" or electronic documentation. All such software and materials are referred to herein as the __\"Software\"__ or __\"the Reveal Software\"__. If you do not agree to the terms of this License Agreement, then do not install or use the Software. By explicitly accepting this License Agreement, or by installing, copying, downloading, accessing, or otherwise using the Software, you are acknowledging and agreeing to be bound by the following terms:\n\n## 1. DEFINITIONS\n\n__(a) \"Software\"__ shall mean the Reveal software including any Updates thereto, in object and source form, and the media and Documentation provided by the Company to you and for which you are granted a license pursuant to this Agreement.\n\n__(b) \"Documentation\"__ shall mean the printed or online written reference material furnished to you in conjunction with the Software, including, without limitation, instructions, guidelines, and end user guides.\n\n__(c) \"Intellectual Property Rights\"__ shall mean all intellectual property rights, including, without limitation, patent, copyright, trademark, and trade secret.\n\n__(d) \"Updates\"__ shall mean a modification, error correction, bug fix, new release, or other update to or for the Software.\n\n\n## 2. LICENSE GRANT\n\nThe Company may, at its sole discretion, grant you a Trial License, a Personal License, an Educational License, a Commercial Seat License, a Site License or an Enterprise License.\n\nIf you have not purchased or otherwise rightfully obtained a Personal License, an Educational License, a Commercial Seat License, a Site License or an Enterprise License for the Reveal Software, the Trial License Terms (2.1) are applicable to your use of the Reveal Software. The Trial License Terms are also applicable to any usage of the Reveal Software by you that is not covered under any other licenses you may have.\n\nThe Personal License Terms (2.2) apply if you have a Personal License. The Commercial Seat License Terms (2.3) apply if you have a Commercial Seat License. The Educational License Terms (2.4) apply if you have an Educational License. The Site License Terms (2.5) apply if you have a Site License. The Enterprise License Terms (2.6) apply if you have an Enterprise License.\n\nThe General Terms (3) apply in all cases.\n\n### 2.1 TRIAL LICENSE TERMS\n\nThe Company grants you a non-exclusive license to use the Software for time-limited evaluation purposes, only in accordance with the terms and conditions set forth herein. The Software may be used for a period of 30 calendar days from the first time you run the Software. Upon lapse of such trial period all of or part of the functionality of the Software will be disabled automatically.\n\nIf you wish to use the Software after the trial period, you must purchase a Personal License, a Commercial Seat License, an Educational License, a Site License or an Enterprise License. The Company may extend to you an expiring license key, in which event such a license key will be considered a means to extend the trial period under the Trial License Terms.\n\n\n### 2.2 PERSONAL LICENSE TERMS\n\nThe Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License grants you the right to activate and use the Software on no more than 2 computers primarily used by you. Use of the Software under this license may be for both commercial and non-commercial purposes. Personal licences are not available to companies, commercial institutions, government agencies or business entities.\n\n\n### 2.3 COMMERCIAL SEAT LICENSE TERMS\n\nThe Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities.\n\nThis License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. A Commercial Seat License must be purchased for every person employed by you or employed by any fully owned subsidiary of yours wishing to use the Software.\n\nThis license is granted exclusively on a per-employee basis within your organisation and is not transferable to another current employee without written permission.\n\nThis License does not allow the use of the Software other than for business purposes of your company. If entering into a Commercial Seat License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer.\n\n\n### 2.4 EDUCATIONAL LICENSE TERMS\n\nThe Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License grants you the right to activate and use the Software on no more than 2 computers primarily used by you.\n\nEducational Licenses are available only to individual students and teaching staff. Use of the Software under this license must be for non-commercial purposes only, including education and research.\n\n\n### 2.5 SITE LICENSE TERMS\n\nThe Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities.\n\nThis License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours.\n\nUnless otherwise specified, any Site License you acquire from the Company is valid only for use at the business locations listed on your sales invoice.\n\nThis License does not allow the use of the Software other than for business purposes of your company. If entering into a Site License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer.\n\n\n### 2.6 ENTERPRISE LICENSE TERMS\n\nThe Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities.\n\nThis License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours.\n\nThis License allows global use of the Software by all employees or employees of any fully owned subsidiary of the company, commercial institution, government agency or business entity listed in your sales invoice.\n\nThis License does not allow the use of the Software other than for business purposes of your company. If entering into an Enterprise License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer.\n\n\n## 3. GENERAL TERMS\n\n### 3.1 TITLE\n\n‘REVEAL’™ and ‘ITTY BITTY APPS’™ represent proprietary common law trademarks owned by the Company and must not be used without written permission.\n\nThe Company shall own and retain all right, title and interest in and to all Intellectual Property Rights related to the Software, the Documentation and all improvements to any of them however so created. You do not acquire any other rights, express or implied, in the Software. ALL RIGHTS NOT EXPRESSLY GRANTED HEREUNDER ARE RESERVED TO THE COMPANY.\n\n### 3.2 ARCHIVAL OR BACKUP COPIES\n\nYou may copy the Software for backup and archival purposes only, provided that the original and each copy is kept in your possession and that your installation and use of the Software does not exceed that allowed in the \"License Grant\" section above.\n\n### 3.3 THINGS YOU MUST NOT DO\n\nThe Software and Documentation are protected by Australian and international copyright law. You must treat the Software and Documentation like any other copyrighted material—for example, a book. You may not:\n\n* copy the Documentation,\n* copy the Software except to make archival or backup copies as provided above,\n* modify or adapt the Software or merge it into another program,\n* reverse engineer, disassemble, decompile or make any attempt to discover the source code of the Software,\n* place the Software onto a server so that it is accessible via a public network such as the Internet, or\n* sublicense, rent, lease, sublicense or lend any portion of the Software or Documentation.\n\n### 3.4 LIMITATION OF LICENSE VALIDITY\n\nAny License to use the Software granted to you under this License Agreement is limited to the current major release of the Software exclusively. The Company will at its sole discretion decide when a version of the Software will be considered a new major release. The Company reserves the right to change the terms of this agreement in any future major or minor release of the software.\n\n### 3.5 ADDITIONAL SERVICES\n\nFees may apply for additional services and products offered by the company and others, such as services that integrate with the Software or extend the functionality of the Software.\n\n### 3.6 TECHNICAL AND RELATED INFORMATION\n\nThe Company and its subsidiaries may collect and use technical and related information, such as technical information concerning your computer, system and application software. The Company does not collect (a) any information that identifies your work, (b) any file names or file contents of anything you work on using the Software. The Company and its subsidiaries are free to use the collected information in any form that does not personally identify you.\n\n### 3.7 PRIVACY\n\nThe Company will not sell or in any way license usage of your personal information to third parties. The Company will make reasonable efforts to keep your personal information secure.\n\n### 3.8 TRANSFERS\n\nWith prior notice to the Company, you may transfer all your rights to use the Software and Documentation only once and permanently to another person or legal entity provided you transfer this License Agreement, the Software and Documentation, including all copies, updates and prior versions to such person or entity and that you retain no copies, including copies stored on computer. The receiving person or legal entity must satisfy the conditions of the applicable license terms set out in section 2.\n\n### 3.9 LIMITED WARRANTY\n\nWe warrant that for a period of 14 days after delivery of this copy of the Software to you the Software will perform in substantial accordance with the Documentation.\n\nTo the extent permitted by applicable law, THE FOREGOING LIMITED WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES OR CONDITIONS, EXPRESS OR IMPLIED, AND WE DISCLAIM ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS, INCLUDING ANY IMPLIED WARRANTY OF TITLE, NONINFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, regardless of whether we know or had reason to know of your particular needs. No employee, agent, dealer or distributor of ours is authorized to modify this limited warranty, nor to make any additional warranties.\nSOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU.\n\n### 3.10 LIMITED REMEDY\n\nOur entire liability and your exclusive remedy for breach of the foregoing warranty shall be, at our option, to return the price you paid minus fees incurred to transfer those funds to you.\n\nIN NO EVENT WILL WE BE LIABLE TO YOU FOR ANY DIRECT OR INDIRECT DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM THE USE OR THE INABILITY TO USE THE SOFTWARE (EVEN IF WE OR AN AUTHORIZED DEALER OR DISTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF THESE DAMAGES), OR FOR ANY CLAIM BY ANY OTHER PARTY.\nSOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU.\n\n### 3.11 TERM AND TERMINATION\n\nThis license agreement takes effect upon your use of the software and remains effective until terminated. You may terminate it at any time by destroying all copies of the Software and Documentation in your possession. It will also automatically terminate if you fail to comply with any term or condition of this license agreement. You hereby agree that on termination of this license to permanently destroy all copies of the Software and Documentation in your possession.\n\n### 3.12 CONFIDENTIALITY\n\nThe Software contains trade secrets and proprietary know-how that belong to the Company and it is being made available to you in strict confidence. ANY USE OR DISCLOSURE OF THE SOFTWARE, OR OF ITS ALGORITHMS, PROTOCOLS OR INTERFACES, OTHER THAN IN STRICT ACCORDANCE WITH THIS LICENSE AGREEMENT, MAY BE ACTIONABLE AS A VIOLATION OF THE COMPANY'S TRADE SECRET RIGHTS.\n\n### 3.13 GENERAL PROVISIONS\n\n__3.13.1__ This written license agreement is the exclusive agreement between you and the Company concerning the Software and Documentation and supersedes any prior purchase order, communication, advertising or representation concerning the Software.\n\n__3.13.2__ This is the entire agreement between the parties relating to the subject matter hereof and all other terms are rejected. No waiver or modification of this Agreement shall be valid unless in writing signed by each party. The waiver of a breach of any term hereof shall in no way be construed as a waiver of any term or other breach hereof. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law the remaining provisions of this Agreement shall remain in full force and effect.\n\n__3.13.3__ In the event of litigation between you and the Company concerning the Software or Documentation, the prevailing party in the litigation will be entitled to recover attorney fees and expenses from the other party.\n\n__3.13.4__ This Agreement, and all disputes arising out of or related thereto, shall be governed by and construed under the laws of the State of Victoria, Australia, without reference to conflict of laws principles. All such disputes shall be subject to the exclusive jurisdiction of the state and federal courts located in Australia, and the parties agree and submit to the personal and exclusive jurisdiction and venue of these courts.\n\n\n## 4. CONTACT INFORMATION\n\nIf you have any questions about this License Agreement, or if you want to contact the Company for any reason, please direct all mail correspondence to: Itty Bitty Apps Pty. Ltd. Level 2, 27 Hardware Lane, Melbourne, Victoria, Australia, 3000, or electronic correspondence to info@ittybittyapps.com.\n\nDo you agree to be bound by the terms of this agreement?\n"
  }
}
