#ycloud
-keep class com.ycloud.mediacodec.videocodec.**{*;}
-keep class com.ycloud.utils.** { *; }
-keep class com.ycloud.mediarecord.** { *; }
-keep class com.ycloud.mediarecord2.** { *; }
-keep class com.ycloud.common.CPUMemUtils
-keep class com.ycloud.common.CPUMemUtils.CPUInfo
-keep class com.ycloud.mrlog.MRLog
-keep class com.ycloud.player.** { *; }
-keep class com.ycloud.player.ffmpeg.** { *; }
-keep class com.ycloud.yuv.YUV{ *; }
-keep class com.ycloud.gpufilter.LibGpuFilter{ *; }
#ycloud end


##----- CIMSDK begin -----
-keep class com.hummer.im.** { *; }
-keepclassmembers class com.hummer.im.** {
    public *;
}
##----- CIMSDK end -----


##--yyvideolib begin----
-keep class com.yy.mediaframework.** { *; }
##---yyvideolib end----
##---videoplayer start----
-keep class com.yy.videoplayer.decoder.** { *; }
-keep class com.yy.videoplayer.render.** { *; }
##---videoplayer end----

##---audioenginesdk start----
-keep class org.webrtc.audioengine.** { *; }
-keep class com.yy.android.medialibrary.audiocodec.** { *; }
##---audioenginesdk end----


-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
-dontwarn okhttp3.**
-dontwarn javax.annotation.**


#阿里云
-keep class com.alibaba.sdk.android.oss.** { *; }
-dontwarn org.apache.commons.codec.binary.**


##GCM混淆 start
-keep class com.google.firebase.**{*;}
-keep class com.google.android.**{*;}
##GCM混淆 end


##----- begin yyruntime sdk ------
-keep class com.yy.webgame.** {*;}
-keep class org.cocos2dx.lib.** {*;}
##----- end yyruntime sdk ------


##keep game modle
-keep class com.yy.hiyo.game.base.** {*;}

-keep class com.yy.game.model.EmojiBean {*;}

##keep voice modle
-keep class com.yy.hiyo.voice.base.bean.MicStatusMsg {*;}

-keep class org.msgpack.core.buffer.* {*;}


##--FlexBoxLayout
-keep class com.google.android.flexbox.* {*;}

-keep class * extends com.yy.im.module.room.holder.ChatBaseHolder {*;}


-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
 public static ** getDefaultInstance();
}

#-keep class * extends com.google.protobuf.GeneratedMessageLite$Builder {*;}
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite$Builder {
 public ** setHeader(***);
}

#klog
-keep public interface tv.athena.*.api.**{*;}
-keep public class tv.athena.*.api.**{*;}
-keep public class **.*$$AxisBinder{*;}
-keep class com.jobase.** { *; }


##keep 一些crash报的转换
-keep class com.yy.game.module.streakwin.ui.StreakWinShareView {*;}
-keep class com.yy.game.module.streakwin.ui.StreakWinShareView {*;}
-keep class com.yy.appbase.ui.widget.ViewPagerMoveSpotLayout {*;}
-keep class com.yy.appbase.ui.widget.FocusTouchRecyclerView {*;}
-keep class com.yy.im.ui.SuggestFriendsRecyclerView {*;}
-keep class com.yy.hiyo.user.profile.ProfileInfoPage {*;}
##
#-keep class com.yy.framework.core.ControllerCenter
-keepclassmembers class * extends com.yy.framework.core.AbstractController{
 public <init>(com.yy.framework.core.Environment);
}

#尝试fix crash http://crash.yypm.com/static/issue.html?appId=yym-hago-and&appVersion=1.6.8&startDateString=2018-10-30&endDateString=2018-10-30&verRange=all&curpage=1&keyword=objectbox&issueStatus=ALL&filterFirstAppVersion=ALL&crashType=ALL&relatedBug=ALL&relatedMe=ALL&sha1=d1659e39aa6a4f2930eec6790447f80e91e3a37f
-keep class io.objectbox.internal.NativeLibraryLoader {*;}



-keep class com.yy.hiyo.proto.Rmgr$** { *; }

# gson
-keep class com.google.gson.internal.$Gson$Types { *;}

-keep class com.yy.appbase.http.** {*;}


#ai denoise
-keep class com.yy.audiodenoise.AudioDenoiseWrap {*;}
-keep interface com.yy.platform.baseservice.**
-keepclassmembers interface com.yy.platform.baseservice.** { *; }

-keep class com.yy.platform.baseservice.Channel
-keepclassmembers class com.yy.platform.baseservice.Channel {
   *;
}
-keep class com.yy.platform.baseservice.YYServiceCore
-keepclassmembers class com.yy.platform.baseservice.YYServiceCore {
   public *;
}

-keep class com.yy.platform.baseservice.YYServiceCore.BroadcastReceiverImpl
-keepclassmembers class com.yy.platform.baseservice.YYServiceCore.BroadcastReceiverImpl {
   public *;
}

-keep class com.yy.platform.baseservice.task.*
-keepclassmembers class com.yy.platform.baseservice.task.* {
   public *;
}
-keep class com.yy.platform.baseservice.ConstCode$*
-keepclassmembers class com.yy.platform.baseservice.ConstCode$* {
   public *;
}
-keep class com.yy.platform.baseservice.utils.*
# keep 内部类
-keepclassmembers class com.yy.platform.baseservice.utils.* {
   public *;
}


#rn
-keep class com.facebook.react.devsupport.DevSupportManagerImpl
-keep class com.facebook.react.devsupport.** { *; }
-dontwarn com.facebook.react.devsupport.**
-keep class * extends com.facebook.react.devsupport.interfaces.DevSupportManager
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
    @com.facebook.proguard.annotations.DoNotStrip *;
    @com.facebook.common.internal.DoNotStrip *;
}
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
  void set*(***);
  *** get*();
}
-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
-keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
-dontwarn com.facebook.react.**
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
-keepattributes Signature

-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**

################### ------------------ chromium start  ------------------ ###################
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Contains flags that can be safely shared with Cronet, and thus would be
# appropriate for third-party apps to include.

# Keep all annotation related attributes that can affect runtime
-keepattributes RuntimeVisible*Annotations
-keepattributes AnnotationDefault

# Keep the annotations, because if we don't, the ProGuard rules that use them
# will not be respected. These classes then show up in our final dex, which we
# do not want - see crbug.com/628226.
-keep @interface org.chromium.base.annotations.AccessedByNative
-keep @interface org.chromium.base.annotations.CalledByNative
-keep @interface org.chromium.base.annotations.CalledByNativeUnchecked
-keep @interface org.chromium.base.annotations.DoNotInline
-keep @interface org.chromium.base.annotations.RemovableInRelease
-keep @interface org.chromium.base.annotations.UsedByReflection

# Keeps for class level annotations.
-keep @org.chromium.base.annotations.UsedByReflection class * {}

# Keeps for method level annotations.
-keepclasseswithmembers class * {
  @org.chromium.base.annotations.AccessedByNative <fields>;
}
-keepclasseswithmembers,includedescriptorclasses class * {
  @org.chromium.base.annotations.CalledByNative <methods>;
}
-keepclasseswithmembers,includedescriptorclasses class * {
  @org.chromium.base.annotations.CalledByNativeUnchecked <methods>;
}
-keepclasseswithmembers class * {
  @org.chromium.base.annotations.UsedByReflection <methods>;
}
-keepclasseswithmembers class * {
  @org.chromium.base.annotations.UsedByReflection <fields>;
}
-keepclasseswithmembers,includedescriptorclasses class * {
  native <methods>;
}

# Remove methods annotated with this if their return value is unused.
-assumenosideeffects class ** {
  @org.chromium.base.annotations.RemovableInRelease <methods>;
}

# Never inline classes or methods with this annotation, but allow shrinking and
# obfuscation.
-keepnames,allowobfuscation @org.chromium.base.annotations.DoNotInline class * {
  *;
}
-keepclassmembernames,allowobfuscation class * {
  @org.chromium.base.annotations.DoNotInline <methods>;
}

# Keep all CREATOR fields within Parcelable that are kept.
-keepclassmembers class org.chromium.** implements android.os.Parcelable {
  public static *** CREATOR;
}

# Don't obfuscate Parcelables as they might be marshalled outside Chrome.
# If we annotated all Parcelables that get put into Bundles other than
# for saveInstanceState (e.g. PendingIntents), then we could actually keep the
# names of just those ones. For now, we'll just keep them all.
-keepnames class org.chromium.** implements android.os.Parcelable

# Keep all enum values and valueOf methods. See
# http://proguard.sourceforge.net/index.html#manual/examples.html
# for the reason for this. Also, see http://crbug.com/248037.
-keepclassmembers enum org.chromium.** {
    public static **[] values();
}
# Proguard config for apps that depend on cronet_impl_native_java.jar.

# This constructor is called using the reflection from Cronet API (cronet_api.jar).
-keep class org.chromium.net.impl.NativeCronetProvider {
    public <init>(android.content.Context);
}

# Suppress unnecessary warnings.
-dontnote org.chromium.net.ProxyChangeListener$ProxyReceiver
-dontnote org.chromium.net.AndroidKeyStore
# Needs 'void setTextAppearance(int)' (API level 23).
-dontwarn org.chromium.base.ApiCompatibilityUtils
# Needs 'boolean onSearchRequested(android.view.SearchEvent)' (API level 23).
-dontwarn org.chromium.base.WindowCallbackWrapper

# Generated for chrome apk and not included into cronet.
-dontwarn org.chromium.base.library_loader.NativeLibraries
-dontwarn org.chromium.base.multidex.ChromiumMultiDexInstaller
-dontwarn org.chromium.base.metrics.CachedMetrics
-dontwarn org.chromium.base.library_loader.LibraryLoader
-dontwarn org.chromium.base.SysUtils

# Objects of this type are passed around by native code, but the class
# is never used directly by native code. Since the class is not loaded, it does
# not need to be preserved as an entry point.
-dontnote org.chromium.net.UrlRequest$ResponseHeadersMap
# https://android.googlesource.com/platform/sdk/+/marshmallow-mr1-release/files/proguard-android.txt#54
-dontwarn android.support.**

# This class should be explicitly kept to avoid failure if
# class/merging/horizontal proguard optimization is enabled.
-keep class org.chromium.base.CollectionUtil

################### ------------------ chromium end  ------------------ ###################



##----- begin mediarecord ------
-keep class com.ycloud.ymrmodel.** { *; }
-keep class com.ycloud.mediacodec.** {*;}
-keep class com.ycloud.mediafilters.** {*;}
-keep class com.ycloud.utils.** { *; }
-keep class com.ycloud.mediarecord.** { *; }
-keep class com.ycloud.mediarecord2.** { *; }
-keep class com.ycloud.common.CPUMemUtils
-keep class com.ycloud.common.CPUMemUtils.CPUInfo
-keep class com.ycloud.mrlog.MRLog
-keep class com.ycloud.player.** { *; }
-keep class com.ycloud.player.IjkMediaPlayer
-keep class com.ycloud.player.IjkMediaPlayer.** { *; }
-keep class com.ycloud.player.ffmpeg.** { *; }
-keep class com.ycloud.svplayer.** { *; }
-keep class com.ycloud.yuv.YUV{ *; }
-keep class com.ycloud.gpufilter.LibGpuFilter{ *; }
-keep class com.ycloud.gpuimagefilter.utils.RhythmInfo{ *; }
-keep class com.ycloud.gpuimagefilter.utils.RhythmInfo$* { *; }
-keep class com.ycloud.gpuimagefilter.param.DecodedVideoFilterParameter{ *; }
-keep class com.ycloud.gpuimagefilter.param.DecodedVideoFilterParameter$*{ *; }
-keep class com.ycloud.gpuimagefilter.param.OFEditStickerEffectFilterParameter{ *; }
-keep class com.ycloud.gpuimagefilter.param.OFEditStickerEffectFilterParameter$*{ *; }
-keep class com.venus.** { *;}
-keep class com.yy.mediaframework.** { *; }
-keep class com.sun.jna.** { *; }
##----- end mediarecord ------

# ------------ 视频推荐 ----------
-keep class com.yy.transvod.**{*;}
-keep class com.chromium.custom.**{*;}
-keep class org.chromium.custom.**{*;}

#------------ 加固 start ----------
-keep class com.yysec.YYSec {*;}
-keep class com.yysec.N {*;}
-keep class com.yy.hiyo.home.base.startup.LoadSecurityHardeningSo {*;}
#------------ 加固 end   ----------



-keep class tv.athena.live.api.**{*;}
-keep public class * extends tv.athena.live.base.mvvmImpl.MvvmComponent
-keep class com.yy.liveplatform.proto.nano.**{*;}

-keep class * implements tv.athena.core.mvp.PresenterBinder{*;}
-keep class * implements tv.athena.core.sly.SlyBridge.IMessageHandler{*;}
-keep class * implements tv.athena.core.axis.AxisProvider{*;}

# protobuf gen code wire
-keep class com.squareup.wire.** { *; }
-keep class * extends com.squareup.wire.AndroidMessage { *; }
-keep class * extends com.squareup.wire.WireEnum { *; }
-keep class * extends com.squareup.wire.Message$Builder { *; }

-keep class com.blitz.livesdk.** {*;}
-keep class org.webrtc.audioenginelite.** {*;}
-keep class com.yy.audioengine.** {*;}

-keep class org.webrtc.audioengine.** { *; }
-keep class com.yy.yyvideolib.** { *; }
-keep class com.yy.yyvideoplayer.** { *; }
-keep class com.yy.android.medialibrary.audiocodec.** { *; }

-keepclasseswithmembers class * {
@tv.athena.annotation.MessageBinding public <methods>;
}

#貌似kotlin中定义的内部类接口keep不住，只能先用类名通配符来keep
-keep public class **.*$$SlyBinder{*;}

-keep @tv.athena.annotation.ProguardKeepClass class * { *; }
-keepclassmembers class * {
@tv.athena.annotation.ProguardKeepMethod <methods>;
}
-keep class com.liulishuo.okdownload.core.breakpoint.BreakpointStoreOnSQLite {
        public com.liulishuo.okdownload.core.breakpoint.DownloadStore createRemitSelf();
        public com.liulishuo.okdownload.core.breakpoint.BreakpointStoreOnSQLite(android.content.Context);
}

-keep class org.libjpegturbo.turbojpeg.**{*;}
-keepclassmembers class org.libjpegturbo.turbojpeg.** {
   *;
}

-keepclassmembers class androidx.viewpager.widget.ViewPager.LayoutParams {
    int position;
}

# 不对snapchat 混淆
-keep class com.snapchat.kit.sdk.** { *; }

# 清掉 礼物 sdk 中没必要的缓存
-keepclassmembers class com.yy.mobile.framework.revenuesdk.gift.GiftServiceImpl {
    ** mGiftCache;
}
-keepclassmembers class com.yy.mobile.framework.revenuesdk.gift.GiftCache {
    ** cacheGiftMap;
    ** allGiftInfos;
    ** giftInfoMap;
    ** giftCacheInfoMap;
}
-keepclassmembers class com.yy.mobile.framework.revenuesdk.gift.GiftCacheInfo {
    ** compressData;
}

# 营收sdk
-keep class * implements com.yy.mobile.framework.revenuesdk.payapi.payservice.IPayMethod {
    *;
}


-keepclassmembers class * extends android.webkit.WebChromeClient{
    public void openFileChooser(...);
}

-keep class * extends com.yy.appbase.core.AbsModuleLoader{
    *;
}


# 增长相关的混淆
#-keep class * extends com.yy.appbase.growth.AbsExperiment
-keep class com.yy.appbase.growth.GrowthBusinessRegistry
-keep class * implements com.yy.appbase.growth.IGrowthFilter
-keep class * extends com.yy.appbase.growth.AbsExperimentCreator