<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.android.tools.lint</groupId>
  <artifactId>lint-checks</artifactId>
  <version>30.3.0-alpha08</version>
  <name>com.android.tools.lint.lint-checks</name>
  <description>Checks for Android Lint</description>
  <url>http://tools.android.com/</url>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>The Android Open Source Project</name>
    </developer>
  </developers>
  <dependencies>
    <dependency>
      <groupId>com.android.tools.lint</groupId>
      <artifactId>lint-api</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib-jdk8</artifactId>
      <version>1.5.31</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools.external.com-intellij</groupId>
      <artifactId>intellij-core</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools.external.com-intellij</groupId>
      <artifactId>kotlin-compiler</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools.external.org-jetbrains</groupId>
      <artifactId>uast</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools</groupId>
      <artifactId>common</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools.layoutlib</groupId>
      <artifactId>layoutlib-api</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools</groupId>
      <artifactId>play-sdk-proto</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools</groupId>
      <artifactId>sdk-common</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.android.tools</groupId>
      <artifactId>sdklib</artifactId>
      <version>30.3.0-alpha08</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.6</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>30.1-jre</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>net.sf.kxml</groupId>
      <artifactId>kxml2</artifactId>
      <version>2.3.0</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.jetbrains.intellij.deps</groupId>
      <artifactId>trove4j</artifactId>
      <version>1.0.20181211</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm-analysis</artifactId>
      <version>9.1</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>
