-keeppackagenames

#Retrofit
-keepattributes Signature, InnerClasses, EnclosingMethod
-keepattributes SourceFile,LineNumberTable
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations

# Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
    @retrofit2.http.* <methods>;
}

# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**

# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
-dontwarn kotlin.Unit

# Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions
-dontwarn retrofit2.KotlinExtensions$*

-dontwarn okhttp3.**
-dontwarn okio.**

# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>

-keep class com.authme.lib.ocr.template.** { *; }
-keep class com.authme.lib.ocr.repository.** { *; }
-keep class com.authme.lib.ocr.data.** { *; }
-keep class com.authme.lib.ocr.OCRImageCacheType { *; }
-keep class com.authme.lib.ocr.OCRImageCache { *; }
-keep class com.authme.lib.ocr.step_flow.** { *; }
-keep class com.authme.lib.ocr.flow.** { *; }
-keep interface com.authme.lib.ocr.OCRService { public <methods>; }
-keep class com.authme.lib.ocr.extension.AuthmeExtKt { *; }
-keep class com.authme.lib.ocr.extension.StringExtKt { *; }
-keep class com.authme.lib.ocr.extension.LocaleExtKt { *; }
-keep class com.authme.lib.ocr.extension.OCRStepTypeExtKt { *; }
-keep class com.authme.lib.ocr.repository.OCRFrameworkMode { *; }
