# Keep all Fragments in this package, which are used by reflection.
-keep class org.lineageos.lineageparts.*Fragment
-keep class org.lineageos.lineageparts.*Picker
-keep class org.lineageos.lineageparts.*Settings

-keep class org.lineageos.lineageparts.lineagestats.*
-keep class org.lineageos.lineageparts.contributors.*
-keep class org.lineageos.lineageparts.hardware.*
-keep class org.lineageos.lineageparts.input.*
-keep class org.lineageos.lineageparts.livedisplay.*
-keep class org.lineageos.lineageparts.notificationlight.*
-keep class org.lineageos.lineageparts.power.*
-keep class org.lineageos.lineageparts.privacyguard.*
-keep class org.lineageos.lineageparts.profiles.*
-keep class org.lineageos.lineageparts.sounds.*

# Keep click responders
-keepclassmembers class com.android.settings.inputmethod.UserDictionaryAddWordActivity {
  *** onClick*(...);
}

-keep public class * extends android.support.v7.preference.* {
    public <init>(android.content.Context, android.util.AttributeSet);
}

