{
  "name": "Dynatrace",
  "version": "7.0.1.1005",
  "summary": "Dynatrace collects app performance and usage data in real-time",
  "description": "Dynatrace provides the next generation intelligent application, service and infrastructure monitoring\nplatform.",
  "homepage": "https://www.dynatrace.com",
  "documentation_url": "https://www.dynatrace.com",
  "license": {
    "type": "Commercial",
    "text": "Terms of Service\n\n\t\t\t\t\t  1.0 Introduction.\n\t\t\t\t\t  These Terms of Service constitute the agreement between You and Dynatrace, a division of Dynatrace LLC, a Delaware company (together hereinafter referred to as 'Dynatrace'). BY USING THE SERVICE, YOU ACKNOWLEDGE THAT YOU HAVE REVIEWED AND ACCEPT THIS AGREEMENT AND ARE AUTHORIZED TO ACT ON BEHALF OF, AND BIND YOUR ENTITY ('CLIENT') TO THIS AGREEMENT.\n\t\t\t\t\t  Dynatrace reserves the right to change or modify these Terms of Service at our sole discretion at any time by posting updated Terms of Service on the Dynatrace website. Any change or modification to the Terms of Service will be effective immediately upon posting. In all cases, your continued use of the Services after publication of such modifications constitutes binding acceptance of the modified Terms of Service.\n\n\t\t\t\t\t  2.0 Scope of the Dynatrace Service; Restrictions.\n\t\t\t\t\t  The 'Service' shall be defined as the hosted services, electronic reports, analyses, documentation or Auxiliary Programs provided by Dynatrace under this Agreement which are necessary to deploy the service. Client shall have the right to use the Service ordered and made available to Client by Dynatrace hereunder for their internal use. 'Auxiliary Program'. means any software, agent or equipment that Dynatrace makes available to Client as part of the Service for purposes of facilitating access to, operation of, and/or use with, the Service.\n\t\t\t\t\t  Client shall not: (a) reverse engineer, decompile, decode, decrypt, disassemble, or in any way derive source code from the Service and/or Auxiliary Programs; (b) modify, translate, adapt, alter, or create derivative works from the Service and/or Auxiliary Programs; (c) copy, distribute, publicly display, transmit, make available in any 'public' area or accessible on the World Wide Web; (d) sublicense, sell, rent, or lease the Service and/or Auxiliary Programs; or (e) use the Service and/or Auxiliary Programs for the purposes of competing with Dynatrace, including without limitation competitive intelligence or analysis.\n\n\t\t\t\t\t  3.0 Pricing & Payment Terms.\n\t\t\t\t\t  Prices for the Service are set forth on the Dynatrace website. Payment may be made either immediately by credit card, or invoiced as provided herein. If payment is made by invoice, Dynatrace will invoice the full invoice and Client shall remit payment within thirty (30) days of the invoice date. Overdue invoices shall bear interest at 1.5% per month or such lower rate as shall be the then highest rate permitted by law. Client shall pay all applicable taxes due under this Agreement, except taxes based on Dynatrace's net income unless Client provides Dynatrace with a properly completed exemption certificate. All prices are exclusive of all taxes, duties, VAT, withholdings and other governmental assessments. Dynatrace reserves the right to suspend Services and delete all Client date held by Dynatrace, if Client fails to pay as provided herein.\n\n\t\t\t\t\t  4.0 Intellectual Property.\n\t\t\t\t\t  Client acknowledges and agrees that all ownership and proprietary rights to the Service, Auxiliary Programs and the contents thereof and all related intellectual property are and shall remain the property exclusively of Dynatrace. Dynatrace retains full rights of ownership and use in: (a) any programs, products, materials or methodologies or materials of Dynatrace created and/or developed by Dynatrace prior to or independently of the Services contemplated herein ('Pre-existing Works'); and (b) all materials, methodologies, processes, techniques, ideas, concepts, trade secrets, and know-how, which may be created or developed in connection with the Services and are modifications and/or derivatives of Compuware's Pre-existing Works.\n\n\t\t\t\t\t  5.0 Confidentiality.\n\t\t\t\t\t  Each party agrees: (a) that it will not disclose to any third party or use any confidential or proprietary information disclosed to it by the other party (collectively, 'Confidential Information') except as expressly permitted in this Agreement; and (b) that it will take all commercially reasonable measures to maintain the confidentiality of all Confidential Information of the other party in its possession or control, which will in no event be less than the measures it uses to maintain the confidentiality of its own information of similar importance. Confidential Information will not include information that: (i) is in or enters the public domain without breach of this Agreement; (ii) the receiving party lawfully receives from a third party without restriction on disclosure and without breach of a nondisclosure obligation; or (iii) the receiving party develops independently.\n\n\t\t\t\t\t  Client agrees that the Service: i) is Confidential Information; and ii) constitutes valuable assets and confidential trade secrets of Dynatrace. Client therefore agrees to keep in confidence and protect the Service, including but not limited to screenshots, ideas, concepts, designs, specifications, computer programs and strategies from disclosure to third parties and restrict its use as provided in this Agreement\n\n\t\t\t\t\t  6.0 Term and Termination.\n\t\t\t\t\t  The term ('Term') of the Service shall be specified as specified on the Dynatrace website.\n\n\t\t\t\t\t  7.0 Warranty.\n\t\t\t\t\t  Dynatrace warrants that the Service will function in substantial compliance with their specifications published by Compuware (available at help.dynatrace.com). Client acknowledges that changes by Client to its monitoring profile or corrupted, incomplete and/or interrupted data received by Dynatrace from Client's site(s), may have a material impact on the accuracy, reliability and/or timeliness of Service results, and Dynatrace shall not be responsible for any such factors beyond its reasonable control. THE ABOVE WARRANTIES ARE COMPUWARE'S ONLY WARRANTIES AND NO OTHER WARRANTY, EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WILL APPLY.\n\n\t\t\t\t\t  Client represents and warrants that Client shall; (i) abide by all laws, rules and regulations; and (ii) be responsible for all content or materials originating from its Web site(s) (its 'Content').\n\n\t\t\t\t\t  8.0 Limitation of Liability.\n\t\t\t\t\t  THE ENTIRE LIABILITY OF RUXIT AND CLIENT'S EXCLUSIVE REMEDY FOR DAMAGES FROM ANY CAUSE RELATED TO OR ARISING OUT OF THIS AGREEMENT, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT, OR OTHERWISE, WILL NOT EXCEED ANY FEES PAID, IF ANY, BY CLIENT UNDER THIS AGREEMENT FOR THE SERVICES GIVING RISE TO THE CLAIM OVER THE IMMEDIATELY PRECEDING TWELVE (12) MONTH PERIOD.\n\n\t\t\t\t\t  9.0 Limitation of Damages.\n\t\t\t\t\t  IN NO EVENT WILL RUXIT BE LIABLE FOR: (I) INCIDENTAL, INDIRECT, SPECIAL, PUNITIVE, EXEMPLARY OR CONSEQUENTIAL DAMAGES; OR (II) LOSS OF OR DAMAGE TO CLIENT'S DATA FROM ANY CAUSE, INCLUDING WITHOUT LIMITATION LOSS OF USE, REVENUES, PROFITS, SAVINGS, EVEN IF RUXIT KNEW OR SHOULD HAVE KNOWN OF THE POSSIBILITY OF SUCH DAMAGES.\n\n\t\t\t\t\t  10.0 Indemnification.\n\t\t\t\t\t  Each party (the 'Indemnifying Party') shall indemnify, defend and hold harmless the other party and such other party's officers, directors, employees and agents (each, an 'Indemnified Party') from and against any and all damages, liabilities, costs and expenses (including reasonable attorneys' fees) incurred by an Indemnifying Party's breach (i) of any obligation set forth in sections 2.0 (Scope of the Service; Restrictions) or 5.0 (Confidentiality).\n\n\t\t\t\t\t  11.0 Trial Service.\n\t\t\t\t\t  This section shall only apply if the Service has been provided for Client's trial and evaluation ('Trial Service'). The Trial Service is provided AS IS, with no warranties, express or implied, for the sole and exclusive purpose of enabling Client to evaluate the Subscription Service. The Trial Subscription Service shall automatically time-out at the end of the evaluation period.\n\n\t\t\t\t\t  12.0 Early Access Program.\n\t\t\t\t\t  This section shall only apply if the Subscription Service has been provided to Client for participation in the 'Early Access Program' for a new release of Dynatrace. During the Early Access Program Dynatrace will be in the stage of 'Early Adoption' and is provisioned for test purposes only. The Client acknowledges that the Service and Auxiliary Programs are in a stage of 'Early Adoption'. Therefore, Auxiliary Programs shall only be installed on computers which are regularly used by the Client for test purposes and are the property of or are permanently owned by the Client ('Designated Computers'). The use of Auxiliary Programs in a productive environment without any additional testing or adaptation to the specific requirements of an individual system environment may cause severe system failure.\n\n\t\t\t\t\t  The Early Adoption Program Services are provided AS IS, with no warranties, express or implied. Client agrees that due to the nature of the Early Adoption Program, Client may receive non-public technology, know-how and trade secrets, including, without limitation, ideas, concepts, designs, specifications, computer programs and strategies. Client agrees that the foregoing shall be treated as Confidential Information as specified in section 5.0 (Confidentiality).\n\n\t\t\t\t\t  13.0 Support for the Services.\n\t\t\t\t\t  Premium support for the Services is available on a subscription basis. Such support is provided AS IS, with no warranty, express or implied. Expert services are available on demand, on an hourly bases, at the Dynatrace then-current rates.\n\n\t\t\t\t\t  14.0 General Provisions.\n\t\t\t\t\t  14.1 Assignment.\n\t\t\t\t\t  Any attempt to assign this Agreement, without written consent, will be null and void.\n\n\t\t\t\t\t  14.2 Force Majeure.\n\t\t\t\t\t  Neither party will be responsible for any failure to perform due to causes beyond its reasonable control, including, but not limited to, acts of God, war, acts of terrorism, riot, failure of electrical, Internet, co-location or telecommunications service, acts of civil or military authorities, fire, floods, earthquakes, accidents, strikes, or fuel crises.\n\n\t\t\t\t\t  14.3 Governing Law.\n\t\t\t\t\t  This Agreement will be governed by and construed in accordance with the laws of the State of Michigan without regard to its conflicts of law principles. If the entity selling the Service is a wholly owned affiliate of Compuware Corporation, this Agreement will be governed by the laws of the country in which such affiliate is situated.\n\n\t\t\t\t\t  14.4 Notice.\n\t\t\t\t\t  Any notice required by this Agreement must be given in writing and shall be deemed delivered upon receipt when delivered personally or upon confirmation of receipt following delivery by internationally recognized overnight courier service.\n\n\t\t\t\t\t  14.5 Waiver.\n\t\t\t\t\t  No failure or delay by any party in exercising any right, power, or remedy under this Agreement, except as specifically provided herein, shall operate as any waiver of any such right, power, or remedy.\n\n\t\t\t\t\t  14.6 Severability.\n\t\t\t\t\t  If any provision of this Agreement is held by a court to be invalid or unenforceable for any reason, the remaining provisions will continue in full force and effect without being impaired or invalidated in any way.\n\n\t\t\t\t\t  14.7 Entire Agreement.\n\t\t\t\t\t  These Terms of Service constitute the complete and exclusive agreement between the parties with respect to the subject matter hereof, superseding any prior agreements and communications (both written and oral). The terms and conditions contained in any purchase order shall be of no force or effect, even if the order is accepted by Compuware. This Agreement may only be modified, or any rights under it waived, by a written document executed by both parties.\n\n\t\t\t\t\t  14.8 Survival.\n\t\t\t\t\t  Sections 5, 7, 8, 9, 10 and 12 shall survive expiration or termination of this Agreement.\n\t\t\t\t\t"
  },
  "authors": {
    "Dynatrace": "support.mobile@dynatrace.com"
  },
  "social_media_url": "http://twitter.com/dynatrace",
  "platforms": {
    "ios": "8.0"
  },
  "source": {
    "http": "https://files.dynatrace.com/mobileagent/7.0.1.1005/dynatrace-mobile-agent-ios-7.0.1.1005.zip"
  },
  "default_subspecs": "framework",
  "source_files": "iOS/agent/*.{h,m}",
  "public_header_files": "iOS/agent/*.h",
  "frameworks": [
    "CoreLocation",
    "CoreTelephony",
    "Security",
    "SystemConfiguration",
    "MessageUI",
    "WebKit"
  ],
  "libraries": [
    "sqlite3",
    "z",
    "c++"
  ],
  "requires_arc": true,
  "compiler_flags": "-DOS_OBJECT_USE_OBJC=1",
  "subspecs": [
    {
      "name": "lib",
      "ios": {
        "vendored_libraries": "iOS/agent/libDynatrace.a"
      }
    },
    {
      "name": "framework",
      "ios": {
        "vendored_frameworks": "iOS/agent/Dynatrace.framework"
      }
    }
  ]
}
