##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.cxense.cxensesdk.model.* { <fields>; }

# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}

##---------------End: proguard configuration for Gson  ----------

# Adapt information about Kotlin file facades.
-adaptresourcefilecontents **.kotlin_module

# Preserve Kotlin metadata.
-keep class kotlin.Metadata { *; }

# Temporarily disable optimization on Kotlin classes.
-keep,includecode,allowobfuscation,allowshrinking @kotlin.Metadata class ** { *; }

-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
    <fields>;
}
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
    static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}

-if class com.cxense.cxensesdk.model.WidgetResponse
-keepnames class com.cxense.cxensesdk.model.WidgetResponse
-if class com.cxense.cxensesdk.model.WidgetResponse
-keep class com.cxense.cxensesdk.model.WidgetResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.WidgetResponse
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.WidgetResponse
-keepclassmembers class com.cxense.cxensesdk.model.WidgetResponse {
    public synthetic <init>(java.util.List,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.UserProfileGroup
-keepnames class com.cxense.cxensesdk.model.UserProfileGroup
-if class com.cxense.cxensesdk.model.UserProfileGroup
-keep class com.cxense.cxensesdk.model.UserProfileGroupJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.UserDataRequest
-keepnames class com.cxense.cxensesdk.model.UserDataRequest
-if class com.cxense.cxensesdk.model.UserDataRequest
-keep class com.cxense.cxensesdk.model.UserDataRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.UserDataRequest
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.UserDataRequest
-keepclassmembers class com.cxense.cxensesdk.model.UserDataRequest {
    public synthetic <init>(java.lang.String,java.lang.String,java.util.List,java.lang.Boolean,java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.SegmentsResponse
-keepnames class com.cxense.cxensesdk.model.SegmentsResponse
-if class com.cxense.cxensesdk.model.SegmentsResponse
-keep class com.cxense.cxensesdk.model.SegmentsResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.SegmentsResponse
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.SegmentsResponse
-keepclassmembers class com.cxense.cxensesdk.model.SegmentsResponse {
    public synthetic <init>(java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.UserPreference
-keepnames class com.cxense.cxensesdk.model.UserPreference
-if class com.cxense.cxensesdk.model.UserPreference
-keep class com.cxense.cxensesdk.model.UserPreferenceJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.ContextParameter
-keepnames class com.cxense.cxensesdk.model.ContextParameter
-if class com.cxense.cxensesdk.model.ContextParameter
-keep class com.cxense.cxensesdk.model.ContextParameterJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.UserExternalData
-keepnames class com.cxense.cxensesdk.model.UserExternalData
-if class com.cxense.cxensesdk.model.UserExternalData
-keep class com.cxense.cxensesdk.model.UserExternalDataJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.WidgetVisibilityReport
-keepnames class com.cxense.cxensesdk.model.WidgetVisibilityReport
-if class com.cxense.cxensesdk.model.WidgetVisibilityReport
-keep class com.cxense.cxensesdk.model.WidgetVisibilityReportJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.User
-keepnames class com.cxense.cxensesdk.model.User
-if class com.cxense.cxensesdk.model.User
-keep class com.cxense.cxensesdk.model.UserJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.UserIdentityMappingRequest
-keepnames class com.cxense.cxensesdk.model.UserIdentityMappingRequest
-if class com.cxense.cxensesdk.model.UserIdentityMappingRequest
-keep class com.cxense.cxensesdk.model.UserIdentityMappingRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.UserIdentityMappingRequest
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.UserIdentityMappingRequest
-keepclassmembers class com.cxense.cxensesdk.model.UserIdentityMappingRequest {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.UserSegmentRequest
-keepnames class com.cxense.cxensesdk.model.UserSegmentRequest
-if class com.cxense.cxensesdk.model.UserSegmentRequest
-keep class com.cxense.cxensesdk.model.UserSegmentRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.WidgetContext
-keepnames class com.cxense.cxensesdk.model.WidgetContext
-if class com.cxense.cxensesdk.model.WidgetContext
-keep class com.cxense.cxensesdk.model.WidgetContextJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.UserProfile
-keepnames class com.cxense.cxensesdk.model.UserProfile
-if class com.cxense.cxensesdk.model.UserProfile
-keep class com.cxense.cxensesdk.model.UserProfileJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.CustomParameter
-keepnames class com.cxense.cxensesdk.model.CustomParameter
-if class com.cxense.cxensesdk.model.CustomParameter
-keep class com.cxense.cxensesdk.model.CustomParameterJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.UserExternalDataRequest
-keepnames class com.cxense.cxensesdk.model.UserExternalDataRequest
-if class com.cxense.cxensesdk.model.UserExternalDataRequest
-keep class com.cxense.cxensesdk.model.UserExternalDataRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.ExternalItem
-keepnames class com.cxense.cxensesdk.model.ExternalItem
-if class com.cxense.cxensesdk.model.ExternalItem
-keep class com.cxense.cxensesdk.model.ExternalItemJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.UserExternalDataResponse
-keepnames class com.cxense.cxensesdk.model.UserExternalDataResponse
-if class com.cxense.cxensesdk.model.UserExternalDataResponse
-keep class com.cxense.cxensesdk.model.UserExternalDataResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.UserExternalDataResponse
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.UserExternalDataResponse
-keepclassmembers class com.cxense.cxensesdk.model.UserExternalDataResponse {
    public synthetic <init>(java.util.List,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.WidgetRequest
-keepnames class com.cxense.cxensesdk.model.WidgetRequest
-if class com.cxense.cxensesdk.model.WidgetRequest
-keep class com.cxense.cxensesdk.model.WidgetRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.WidgetRequest
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.WidgetRequest
-keepclassmembers class com.cxense.cxensesdk.model.WidgetRequest {
    public synthetic <init>(java.lang.String,java.util.List,com.cxense.cxensesdk.model.WidgetContext,com.cxense.cxensesdk.model.ContentUser,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.UserIdentity
-keepnames class com.cxense.cxensesdk.model.UserIdentity
-if class com.cxense.cxensesdk.model.UserIdentity
-keep class com.cxense.cxensesdk.model.UserIdentityJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.ContentUser
-keepnames class com.cxense.cxensesdk.model.ContentUser
-if class com.cxense.cxensesdk.model.ContentUser
-keep class com.cxense.cxensesdk.model.ContentUserJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.ContentUser
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.ContentUser
-keepclassmembers class com.cxense.cxensesdk.model.ContentUser {
    public synthetic <init>(kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.PerformanceEvent
-keepnames class com.cxense.cxensesdk.model.PerformanceEvent
-if class com.cxense.cxensesdk.model.PerformanceEvent
-keep class com.cxense.cxensesdk.model.PerformanceEventJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.PerformanceEvent
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.PerformanceEvent
-keepclassmembers class com.cxense.cxensesdk.model.PerformanceEvent {
    public synthetic <init>(java.lang.String,java.util.List,java.lang.String,java.lang.String,java.lang.String,java.lang.String,long,java.util.List,java.util.List,java.util.List,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.Impression
-keepnames class com.cxense.cxensesdk.model.Impression
-if class com.cxense.cxensesdk.model.Impression
-keep class com.cxense.cxensesdk.model.ImpressionJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.cxense.cxensesdk.model.ConversionEvent
-keepnames class com.cxense.cxensesdk.model.ConversionEvent
-if class com.cxense.cxensesdk.model.ConversionEvent
-keep class com.cxense.cxensesdk.model.ConversionEventJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.ConversionEvent
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.ConversionEvent
-keepclassmembers class com.cxense.cxensesdk.model.ConversionEvent {
    public synthetic <init>(java.util.List,java.lang.String,java.util.List,java.lang.String,java.lang.String,java.lang.Double,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class com.cxense.cxensesdk.model.ApiError
-keepnames class com.cxense.cxensesdk.model.ApiError
-if class com.cxense.cxensesdk.model.ApiError
-keep class com.cxense.cxensesdk.model.ApiErrorJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class com.cxense.cxensesdk.model.ApiError
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class com.cxense.cxensesdk.model.ApiError
-keepclassmembers class com.cxense.cxensesdk.model.ApiError {
    public synthetic <init>(java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}


