content: # IMPORTANT: After changing a dependency, please run:
  # ./gradlew --write-verification-metadata sha256 qa --rerun-tasks
  
  [versions]
  androidx-appcompat = "1.7.0"
  androidx-activity = "1.9.3"
  androidx-camera = "1.3.4"
  androidx-fragment = "1.8.5"
  androidx-lifecycle = "2.8.7"
  androidx-media3 = "1.5.1"
  androidx-navigation = "2.8.5"
  androidx-window = "1.3.0"
  glide = "4.15.1"
  gradle = "8.9.0"
  kotlin = "2.1.0"
  libsignal-client = "0.80.2-1"
  mp4parser = "1.9.39"
  android-gradle-plugin = "8.7.2"
  accompanist = "0.28.0"
  nanohttpd = "2.3.1"
  navigation-safe-args-gradle-plugin = "2.8.5"
  protobuf-gradle-plugin = "0.9.0"
  
  [plugins]
  android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
  android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" }
  jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
  jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
  androidx-navigation-safe-args = { id = "androidx.navigation.safeargs", version.ref = "navigation-safe-args-gradle-plugin" }
  compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
  
  [libraries]
  # Android Plugins
  gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
  android-library = { module = "com.android.library:com.android.library.gradle.plugin", version.ref = "android-gradle-plugin" }
  android-application = { module = "com.android.application:com.android.application.gradle.plugin", version.ref = "android-gradle-plugin" }
  androidx-benchmark-gradle-plugin = "androidx.benchmark:benchmark-gradle-plugin:1.3.3"
  
  # Compose
  androidx-compose-bom = "androidx.compose:compose-bom:2025.08.00"
  androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
  androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive"}
  androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout"}
  androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation"}
  androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
  androidx-compose-ui-tooling-core = { module = "androidx.compose.ui:ui-tooling" }
  androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" }
  androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" }
  androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
  androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.7.8"
  
  # Accompanist
  accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
  accompanist-drawablepainter = "com.google.accompanist:accompanist-drawablepainter:0.36.0"
  
  # Desugaring
  android-tools-desugar = "com.android.tools:desugar_jdk_libs:2.1.3"
  
  # Kotlin
  kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
  kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }
  kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
  kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0"
  kotlinx-coroutines-core-jvm = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0"
  kotlinx-coroutines-play-services = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0"
  kotlinx-coroutines-rx3 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.9.0"
  
  # Android X
  androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
  androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
  androidx-core-ktx = "androidx.core:core-ktx:1.15.0"
  androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" }
  androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidx-fragment" }
  androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidx-fragment" }
  androidx-fragment = { module = "androidx.fragment:fragment", version.ref = "androidx-fragment" }
  androidx-annotation = "androidx.annotation:annotation:1.9.1"
  androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.0"
  androidx-window-window = { module = "androidx.window:window", version.ref = "androidx-window" }
  androidx-window-java = { module = "androidx.window:window-java", version.ref = "androidx-window" }
  androidx-recyclerview = "androidx.recyclerview:recyclerview:1.4.0"
  androidx-legacy-support = "androidx.legacy:legacy-support-v13:1.0.0"
  androidx-legacy-preference = "androidx.legacy:legacy-preference-v14:1.0.0"
  androidx-preference = "androidx.preference:preference:1.2.1"
  androidx-gridlayout = "androidx.gridlayout:gridlayout:1.0.0"
  androidx-exifinterface = "androidx.exifinterface:exifinterface:1.3.7"
  androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" }
  androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "androidx-media3" }
  androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" }
  androidx-navigation-fragment-ktx = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" }
  androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" }
  androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" }
  androidx-navigation-safe-args-gradle-plugin = { module = "androidx.navigation:navigation-safe-args-gradle-plugin", version.ref = "navigation-safe-args-gradle-plugin" }
  androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-livedata-core = { module = "androidx.lifecycle:lifecycle-livedata", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-reactivestreams-ktx = { module = "androidx.lifecycle:lifecycle-reactivestreams-ktx", version.ref = "androidx-lifecycle" }
  androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
  androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "androidx-camera" }
  androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidx-camera" }
  androidx-camera-extensions = { module = "androidx.camera:camera-extensions", version.ref = "androidx-camera" }
  androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "androidx-camera" }
  androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidx-camera" }
  androidx-concurrent-futures = "androidx.concurrent:concurrent-futures:1.2.0"
  androidx-autofill = "androidx.autofill:autofill:1.1.0"
  androidx-biometric = "androidx.biometric:biometric:1.1.0"
  androidx-sharetarget = "androidx.sharetarget:sharetarget:1.2.0"
  androidx-sqlite = "androidx.sqlite:sqlite:2.4.0"
  androidx-sqlite-framework = "androidx.sqlite:sqlite-framework:2.4.0"
  androidx-profileinstaller = "androidx.profileinstaller:profileinstaller:1.4.1"
  androidx-asynclayoutinflater = "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01"
  androidx-asynclayoutinflater-appcompat = "androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0-alpha01"
  androidx-emoji2 = "androidx.emoji2:emoji2:1.5.0"
  androidx-documentfile = "androidx.documentfile:documentfile:1.0.1"
  androidx-credentials = "androidx.credentials:credentials:1.5.0"
  androidx-credentials-compat = "androidx.credentials:credentials-play-services-auth:1.5.0"
  androidx-splashscreen = "androidx.core:core-splashscreen:1.0.1"
  androidx-webkit = "androidx.webkit:webkit:1.4.0"
  android-billing = "com.android.billingclient:billing-ktx:7.1.1"
  
  # Billing
  material-material = "com.google.android.material:material:1.12.0"
  
  # Google
  google-libphonenumber = "com.googlecode.libphonenumber:libphonenumber:8.13.50"
  google-play-services-maps = "com.google.android.gms:play-services-maps:19.0.0"
  google-play-services-auth = "com.google.android.gms:play-services-auth:21.3.0"
  google-play-services-wallet = "com.google.android.gms:play-services-wallet:19.4.0"
  google-zxing-android-integration = "com.google.zxing:android-integration:3.3.0"
  google-zxing-core = "com.google.zxing:core:3.4.1"
  google-ez-vcard = "com.googlecode.ez-vcard:ez-vcard:0.9.11"
  google-jsr305 = "com.google.code.findbugs:jsr305:3.0.2"
  google-guava-android = "com.google.guava:guava:33.3.1-android"
  google-flexbox = "com.google.android.flexbox:flexbox:3.0.0"
  com-google-devtools-ksp-gradle-plugin = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:2.1.0-1.0.29"
  
  # Firebase
  firebase-messaging = "com.google.firebase:firebase-messaging:24.1.0"
  
  # 1st Party
  libsignal-client = { module = "im.molly:libsignal-client", version.ref = "libsignal-client" }
  libsignal-android = { module = "im.molly:libsignal-android", version.ref = "libsignal-client" }
  protobuf-gradle-plugin = { module = "com.google.protobuf:protobuf-gradle-plugin", version.ref = "protobuf-gradle-plugin" }
  signal-aesgcmprovider = "org.signal:aesgcmprovider:0.0.4"
  molly-ringrtc = "im.molly:ringrtc-android:2.57.0-1"
  signal-android-database-sqlcipher = "org.signal:sqlcipher-android:4.6.0-S1"
  
  # MOLLY
  gosimple-nbvcxz = "me.gosimple:nbvcxz:1.5.0"
  molly-native-utils = "im.molly:native-utils:1.0.0"
  molly-argon2 = "im.molly:argon2:13.1-1"
  unifiedpush-connector = "org.unifiedpush.android:connector:3.0.0-rc2"
  unifiedpush-connector-ui = "org.unifiedpush.android:connector-ui:1.1.0-rc3"
  osmdroid-android = "org.osmdroid:osmdroid-android:6.1.20"
  
  # Third Party
  greenrobot-eventbus = "org.greenrobot:eventbus:3.0.0"
  jackson-core = "com.fasterxml.jackson.core:jackson-databind:2.17.3"
  jackson-module-kotlin = "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.0"
  square-okhttp3 = "com.squareup.okhttp3:okhttp:5.0.0-alpha.16"
  square-okhttp3-dnsoverhttps = "com.squareup.okhttp3:okhttp-dnsoverhttps:5.0.0-alpha.16"
  square-okio = "com.squareup.okio:okio:3.12.0"
  square-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.7"
  rxjava3-rxjava = "io.reactivex.rxjava3:rxjava:3.0.13"
  rxjava3-rxandroid = "io.reactivex.rxjava3:rxandroid:3.0.0"
  rxjava3-rxkotlin = "io.reactivex.rxjava3:rxkotlin:3.0.1"
  rxdogtag = "com.uber.rxdogtag2:rxdogtag:2.0.1"
  conscrypt-android = "org.conscrypt:conscrypt-android:2.5.3"
  leolin-shortcutbadger = "me.leolin:ShortcutBadger:1.1.22"
  emilsjolander-stickylistheaders = "se.emilsjolander:stickylistheaders:2.7.0"
  glide-glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
  glide-ksp = { module = "com.github.bumptech.glide:ksp", version.ref = "glide" }
  roundedimageview = "com.makeramen:roundedimageview:2.1.0"
  materialish-progress = "com.pnikosis:materialish-progress:1.7"
  subsampling-scale-image-view = "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0"
  android-tooltips = "com.tomergoldst.android:tooltips:1.0.6"
  stream = "com.annimon:stream:1.1.8"
  lottie = "com.airbnb.android:lottie:6.4.0"
  lottie-compose = "com.airbnb.android:lottie-compose:6.4.0"
  dnsjava = "dnsjava:dnsjava:2.1.9"
  nanohttpd-webserver = { module = "org.nanohttpd:nanohttpd-webserver", version.ref = "nanohttpd" }
  nanohttpd-websocket = { module = "org.nanohttpd:nanohttpd-websocket", version.ref = "nanohttpd" }
  kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5"
  
  # Can't use the newest version because it hits some weird NoClassDefFoundException
  jknack-handlebars = "com.github.jknack:handlebars:4.0.7"
  
  # Mp4Parser
  mp4parser-isoparser = { module = "org.mp4parser:isoparser", version.ref = "mp4parser" }
  mp4parser-streaming = { module = "org.mp4parser:streaming", version.ref = "mp4parser" }
  mp4parser-muxer = { module = "org.mp4parser:muxer", version.ref = "mp4parser" }
  
  [bundles]
  media3 = ["androidx-media3-exoplayer", "androidx-media3-session", "androidx-media3-ui"]
  mp4parser = ["mp4parser-isoparser", "mp4parser-streaming", "mp4parser-muxer"]
  