-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt
-dump Chabok.puml
-printseeds seeds.txt
-printusage unused.txt
#-printmapping mapping.txt
#-optimizations !code/simplification/arithmetic,!field/removal/writeonly,!field/marking/private,!class/merging/*,!code/allocation/variable
#-optimizationpasses 5
#-keeppackagenames io.chabok.**
#-flattenpackagehierarchy
#-allowaccessmodification
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes Signature,MethodParameters,LocalVariableTable,LocalVariableTypeTable
-keepattributes SourceFile,LineNumberTable
-keepattributes Exceptions,InnerClasses
#-adaptresourcefilenames **.properties

-keep class kotlin.** { *; }
-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
    <fields>;
}
-keepclassmembers class kotlin.Metadata {
    public <fields>;
    public <methods>;
}

-keepclassmembers class * {
    static final % *;
    static final java.lang.String *;
}

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-keep class android.os.Bundle { *; }


#-keep class io.chabok.Chabok { *; }
# -keep class io.chabok.Chabok*
# -keepclasseswithmembernames class io.chabok.Chabok** {
#    public <methods>;
#    public static <methods>;
#    public <fields>;
#    public static <fields>;
# }


-keep class io.chabok.Chabok { *; }
-keep class io.chabok.UserAction { *; }
-keep class io.chabok.AnalyticsAction { *; }
-keep class io.chabok.Callback { *; }
-keep class io.chabok.user.Gender { *; }
-keep class io.chabok.user.LoginKey { *; }
-keep class io.chabok.user.Profile { *; }
-keep class io.chabok.utils.log.LogLevel { *; }
#-keep class io.chabok.repository.local.DBManager { *; }
#-keep enum io.chabok.utils.log.LogLevel
#-keepclassmembers enum io.chabok.utils.log.LogLevel { *;}
#-keep public enum io.chabok.** { *; }

#-keepclassmembernames class io.chabok.location.GeofenceParams {
#    public <methods>;
#    public <fields>;
#}


#-keepclassmembers class io.chabok.Chabok.** { *; }
-keepclassmembers class io.chabok.UserAction.** { *; }
-keepclassmembers class io.chabok.AnalyticsAction.** { *; }
#-keepclassmembers class io.chabok.repository.local.DBManager { *; }

#-keepnames class io.chabok.Chabok
#-keep class io.chabok.Chabok.*
#-keep class io.chabok.Chabok$*
#
#-keepclassmembers class io.chabok.Chabok.* {
#    public ** Companion;
#    <fields>;
#    <methods>;
#}

#-keepclassmembers class io.chabok.Chabok {
#    public static ** Companion;
#}

#-keepclassmembers class io.chabok.Chabok {
#    public static ** Companion;
##    public <methods>;
##    public static <methods>;
##    public static final <methods>;
##    public <fields>;
##    public static <fields>;
##    public static final <fields>;
#}

#-keepclasseswithmembers class io.chabok.user.Profile.*$* {
#    public <methods>;
#     public <fields>;
#        *;
#}

#-keepattributes InnerClasses
 -keep class io.chabok.user.Profile**
 -keepclassmembers class io.chabok.user.Profile** {
    *;
 }


#-keepclassmembernames class io.chabok.AnalyticsAction {
#    public <methods>;
#    public <fields>;
#}
#
#
#-keepclassmembernames class io.chabok.UserAction {
#    public <methods>;
#    public <fields>;
#}

#-keep public class io.chabok.location.* {
#  public protected *;
#  public void onEvent;
#}

#-keepclassmembers class * {
##    public protected *;
#    public void onEvent;
##    private static class *;
#}

-dontoptimize
-dontpreverify


## Preserve the special static methods that are required in all enumeration classes.
#-keepclassmembers,allowoptimization enum * {
#      public static **[] values();
#      public static ** valueOf(java.lang.String);
#}

#-keepclassmembers class * extends java.lang.Enum {
#    <fields>;
#    public static **[] values();
#    public static ** valueOf(java.lang.String);
#}

# keep ChabokFirebaseMessaging class public methods and fields
#-keepnames class io.chabok.ChabokFirebaseMessaging
#-keepclassmembernames class io.chabok.ChabokFirebaseMessaging {
#    public <methods>;
#    public <fields>;
#}

# keep ChabokBackupAgent class public methods and fields
#-keepnames class io.chabok.service.ChabokBackupAgent
#-keepclassmembernames class io.chabok.service.ChabokBackupAgent {
#    public static ** <methods>;
#}

## Remove Logging statements
#-assumenosideeffects class io.chabok.Logger {
#    public static boolean isLoggable(java.lang.String, int);
#    public static *** d(...);
#    public static *** v(...);
#    public static *** w(...);
#    public static *** e(...);
#    public static *** i(...);
#}

#-assumenosideeffects class android.util.Log {
#    public static boolean isLoggable(java.lang.String, int);
#    public static int d(...);
#    public static int w(...);
#    public static int v(...);
#    public static int i(...);
#}


#not sure if this is neccassary
# pulled from https://github.com/leolin310148/ShortcutBadger/blob/master/ShortcutBadger/proguard-rules.pro
#-keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.ApexHomeBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.AsusHomeLauncher { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.DefaultBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.NewHtcHomeBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.NovaHomeBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.SolidHomeBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { <init>(...); }
#-keep class me.leolin.shortcutbadger.impl.XiaomiHomeBadger { <init>(...); }


#Eventbus
#-keepclassmembers,includedescriptorclasses class ** { public void onEvent*(**); }