#======== Leave alone the already obfuscated calldorado =======
-keep,includedescriptorclasses class c.**
-keep,includedescriptorclasses class com.calldorado.**

-keepattributes *Annotation*,InnerClasses,EnclosingMethod,Signature,SourceFile,LineNumberTable



# Keep for reflection used in adapters/loaders

#Loaders
-keep,includedescriptorclasses public class com.calldorado.ad.interfaces.AdControlCallback { *; }
-keepclassmembers class * extends com.calldorado.ad.AdLoader {
    public <init>(com.calldorado.ad.data_models.AdProfileModel);
}

#======== Unimplemented warnings removed with these =========
-dontwarn android.webkit.**
-dontwarn javax.xml.**

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

# Keep SafeParcelable value, needed for reflection. This is required to support backwards
# compatibility of some classes.
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keep class * implements android.os.Parcelable {
   public static final android.os.Parcelable$Creator *;
}

# Keep the class members for enums/should be in the proguard default rules, but some developers still had crashes without this rule
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-dontwarn org.droidparts.net.**
-dontwarn com.squareup.okhttp.**

# Support for Android Advertiser ID.
-keep class com.google.android.gms.common.GooglePlayServicesUtil {*;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {*;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {*;}
-keepclassmembers class com.google.android.gms.** { *; }
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.ads.**

-dontwarn android.util.FloatMath


# Umlaut
-keep interface android.telephony.** { *; }
-keep class android.telephony.** { *; }
-keep class com.android.internal.telephony.** { *; }
-dontwarn android.telephony.**
-keep class android.provider.Browser { *; }
-dontwarn android.provider.Browser

-keepattributes InnerClasses
-keepattributes EnclosingMethod


#Umlaut renamed to qualityinfo
-keep enum com.qualityinfo.insight.enums.** { *; }
-dontwarn com.qualityinfo.**
-keep class com.qualityinfo.** { *; }
-keep class com.qualityinfo.**$** { *; }
-keep public class com.qualityinfo.** { *; }
-keep interface com.qualityinfo.** { *; }
-keep enum com.qualityinfo.** { *; }
-keep,includedescriptorclasses class com.qualityinfo.** { *; }
-keep class com.umlaut.crowd.** { *; }

# Facebook
-dontwarn com.facebook.**
-keep class com.facebook.** { *; }
-keep interface com.facebook.** { *; }
-keep enum com.facebook.** { *; }

-dontwarn com.applovin.**
-keep class com.applovin.sdk.** { *; }
-keep interface com.applovin.sdk.** { *; }
-keep enum com.applovin.sdk.** { *; }

# Volley lib
-keep class com.android.volley.** { *; }
-dontwarn com.android.volley.**

-keep class com.luckycatlabs.sunrisesunset.SunriseSunsetCalculator { *; }
-dontwarn com.luckycatlabs.sunrisesunset.SunriseSunsetCalculator

# Tutela
-keep class com.calldorado.c1o.** { *; }
-keep class com.calldorado.c1o.**$** { *; }
-keep interface com.calldorado.c1o.** { *; }
-keep enum com.calldorado.c1o.** { *; }
-dontwarn com.calldorado.c1o.**
-dontwarn org.codeaurora.**
-keep class com.google.android.gms.location.LocationServices
-keep class com.google.android.exoplayer2.ExoPlayerLibraryInfo { *; }
-keep class com.google.android.exoplayer2.SimpleExoPlayer { *; }
-keep class com.google.android.exoplayer2.source.dash.DashMediaSource { *; }
-keep class com.google.android.exoplayer2.source.hls.HlsMediaSource { *; }
-keep class com.google.android.exoplayer2.analytics.AnalyticsListener { *; }

# Fixing - App Icon and Name Not Showing Properly in CDO Opt in
-keep class c.** { *; }
-dontwarn c.**

# Keeping the referral API
-keep public class com.android.installreferrer.** { *; }

-keep public class com.calldorado.util.third_party.CalldoradoThirdPartyCleaner {*;}
-keep public interface com.calldorado.util.third_party.ThirdPartyListener {*;}
-keep public class com.calldorado.ui.shared_wic_aftercall.viewpager.CalldoradoFeatureView {*;}
-keep public class com.calldorado.ui.shared_wic_aftercall.viewpager.CalldoradoStaticFeatureView {*;}
-keep public class com.calldorado.search.CallData {*;}


#Keep all Android X Room
-keep class androidx.room.** { *; }
-keep interface androidx.room.** { *; }
-keep enum androidx.room.** { *; }

-keepclassmembers enum  com.calldorado.network.* { *; }
-keep class com.google.gson.** { *; }
-keepclassmembers enum com.google.gson.** { *; }
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}

-keepclassmembers class kotlin.SafePublicationLazyImpl {
    java.lang.Object _value;
}


###### VIEW DATA BINDING consumer rules #######
-keep class * extends com.calldorado.ui.shared_wic_aftercall.viewpager.CalldoradoFeatureView  { *; }
-keepclassmembers class * extends com.calldorado.ui.shared_wic_aftercall.viewpager.CalldoradoFeatureView  { *; }

-keep class * extends com.calldorado.ui.shared_wic_aftercall.viewpager.pages.MoreViewPage { *; }
-keepclassmembers class * extends com.calldorado.ui.shared_wic_aftercall.viewpager.pages.MoreViewPage { *; }

-keep class * extends androidx.databinding.DataBinderMapper { *; }
-keepclassmembers class * extends androidx.databinding.DataBinderMapper { *; }
-keep class * extends androidx.databinding.ViewDataBinding { *; }
-keepclassmembers class * extends androidx.databinding.ViewDataBinding { *; }
-keep class androidx.databinding.** { *; }
-keepclassmembers class androidx.databinding.** { *; }

# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
-keep class * {
  @com.google.gson.annotations.SerializedName <fields>;
}

-keep class com.pollfish.** { *; }

-keepattributes SourceFile,LineNumberTable
-renamesourcefileattribute SourceFile
-repackageclasses

# Firebase  https://github.com/firebase/firebase-android-sdk/issues/4900
-keep public class com.google.firebase.** { *;}
-keep class com.google.android.gms.internal.** { *;}
-keepclasseswithmembers class com.google.firebase.FirebaseException


# https://github.com/square/retrofit/issues/3751#issuecomment-1564410089
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>

# https://github.com/google/gson/commit/43396e45fd1f03e408e0e83b168a72a0f3e0b84e#diff-5da161239475717e284b3a9a85e2f39256d739fb7564ae7fda7f79cee000c413
-keepclasseswithmembers,allowobfuscation,includedescriptorclasses class * {
    @com.google.gson.annotations.SerializedName <fields>;
}

#Ignoring classes from the Tutela SDK. If these classes are present in the apps, its all good.
#If not, the new AGP will fail the build. That's why we need to ignore it.
-dontwarn com.bytedance.**
-dontwarn com.bytedance.**$*
-dontwarn com.facebook.infer.annotation.Nullsafe$Mode
-dontwarn com.facebook.infer.annotation.Nullsafe
-dontwarn org.codeaurora.internal.**
-dontwarn org.codeaurora.internal.**$*

# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
-keep class * {
  @com.google.gson.annotations.SerializedName <fields>;
}
-keep class com.calldorado.ui.aftercall.fragments.AftercallFragment { *; }
