{
  "name": "Dynatrace",
  "version": "7.0.11.1009",
  "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.11.1009/dynatrace-mobile-agent-ios-7.0.11.1009.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"
      },
      "source_files": "iOS/agent/*.{h,m}",
      "public_header_files": "iOS/agent/*.h"
    },
    {
      "name": "framework",
      "ios": {
        "vendored_frameworks": "iOS/agent/Dynatrace.framework"
      }
    }
  ]
}
