-keep class com.android.systemui.statusbar.policy.KeyButtonView {
  public float getDrawingAlpha();
  public void setDrawingAlpha(float);
}

-keep class com.android.systemui.statusbar.policy.KeyButtonRipple {
  public float getGlowAlpha();
  public float getGlowScale();
  public void setGlowAlpha(float);
  public void setGlowScale(float);
}

-keep class com.android.systemui.statusbar.car.CarStatusBar
-keep class com.android.systemui.statusbar.phone.StatusBar
-keep class com.android.systemui.statusbar.tv.TvStatusBar
-keep class com.android.systemui.car.CarSystemUIFactory
-keep class com.android.systemui.SystemUIFactory

-keepclassmembers class ** {
    public void onBusEvent(**);
    public void onInterprocessBusEvent(**);
}
-keepclassmembers class ** extends **.EventBus$InterprocessEvent {
    public <init>(android.os.Bundle);
}

-keep class com.android.systemui.recents.views.TaskView {
    public int getDim();
    public void setDim(int);
    public float getTaskProgress();
    public void setTaskProgress(float);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keep class ** extends android.support.v14.preference.PreferenceFragment
-keep class com.android.systemui.tuner.*
-keep class com.android.systemui.plugins.** {
    public protected *;
}
