/*
 * Oceanengine Open Api
 * 巨量引擎开放平台 Open Api
 *
 * The version of the OpenAPI document: 1.1.19
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.bytedance.ads.model;

import java.util.Objects;
import java.util.Arrays;
import com.bytedance.ads.model.ProjectUpdateV30AudienceAc;
import com.bytedance.ads.model.ProjectUpdateV30AudienceActionScene;
import com.bytedance.ads.model.ProjectUpdateV30AudienceAndroidOsv;
import com.bytedance.ads.model.ProjectUpdateV30AudienceAutoExtendTargets;
import com.bytedance.ads.model.ProjectUpdateV30AudienceAwemeFanBehaviors;
import com.bytedance.ads.model.ProjectUpdateV30AudienceAwemeFanTimeScope;
import com.bytedance.ads.model.ProjectUpdateV30AudienceCarrier;
import com.bytedance.ads.model.ProjectUpdateV30AudienceCarrierRegionOptimize;
import com.bytedance.ads.model.ProjectUpdateV30AudienceConvertedTimeDuration;
import com.bytedance.ads.model.ProjectUpdateV30AudienceDeviceBrand;
import com.bytedance.ads.model.ProjectUpdateV30AudienceDeviceType;
import com.bytedance.ads.model.ProjectUpdateV30AudienceDistrict;
import com.bytedance.ads.model.ProjectUpdateV30AudienceDpaCity;
import com.bytedance.ads.model.ProjectUpdateV30AudienceDpaLbs;
import com.bytedance.ads.model.ProjectUpdateV30AudienceFilterAwemeAbnormalActive;
import com.bytedance.ads.model.ProjectUpdateV30AudienceFilterAwemeFansCount;
import com.bytedance.ads.model.ProjectUpdateV30AudienceFilterOwnAwemeFans;
import com.bytedance.ads.model.ProjectUpdateV30AudienceGender;
import com.bytedance.ads.model.ProjectUpdateV30AudienceHideIfConverted;
import com.bytedance.ads.model.ProjectUpdateV30AudienceHideIfExists;
import com.bytedance.ads.model.ProjectUpdateV30AudienceInterestActionMode;
import com.bytedance.ads.model.ProjectUpdateV30AudienceIosOsv;
import com.bytedance.ads.model.ProjectUpdateV30AudienceLocationType;
import com.bytedance.ads.model.ProjectUpdateV30AudiencePlatform;
import com.bytedance.ads.model.ProjectUpdateV30AudienceRegionRecommend;
import com.bytedance.ads.model.ProjectUpdateV30AudienceSuperiorPopularityType;
import com.bytedance.ads.model.ProjectUpdateV30RequestAudienceGeolocationInner;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.bytedance.ads.JSON;

/**
 * 
 */
@javax.annotation.Generated(value = "com.org.bytedance.ad_open_sdk.JavacusGenerator", date = "2024-09-10T15:29:00.246104612+08:00[Asia/Shanghai]")
public class ProjectUpdateV30RequestAudience {
  public static final String SERIALIZED_NAME_AC = "ac";
  @SerializedName(SERIALIZED_NAME_AC)
  private List<ProjectUpdateV30AudienceAc> ac = null;

  public static final String SERIALIZED_NAME_ACTION_CATEGORIES = "action_categories";
  @SerializedName(SERIALIZED_NAME_ACTION_CATEGORIES)
  private List<Long> actionCategories = null;

  public static final String SERIALIZED_NAME_ACTION_DAYS = "action_days";
  @SerializedName(SERIALIZED_NAME_ACTION_DAYS)
  private Long actionDays = null;

  public static final String SERIALIZED_NAME_ACTION_SCENE = "action_scene";
  @SerializedName(SERIALIZED_NAME_ACTION_SCENE)
  private List<ProjectUpdateV30AudienceActionScene> actionScene = null;

  public static final String SERIALIZED_NAME_ACTION_WORDS = "action_words";
  @SerializedName(SERIALIZED_NAME_ACTION_WORDS)
  private List<Long> actionWords = null;

  public static final String SERIALIZED_NAME_AGE = "age";
  @SerializedName(SERIALIZED_NAME_AGE)
  private List<String> age = null;

  public static final String SERIALIZED_NAME_ANDROID_OSV = "android_osv";
  @SerializedName(SERIALIZED_NAME_ANDROID_OSV)
  private ProjectUpdateV30AudienceAndroidOsv androidOsv = null;

  public static final String SERIALIZED_NAME_AUDIENCE_PACKAGE_ID = "audience_package_id";
  @SerializedName(SERIALIZED_NAME_AUDIENCE_PACKAGE_ID)
  private Long audiencePackageId = null;

  public static final String SERIALIZED_NAME_AUTO_EXTEND_TARGETS = "auto_extend_targets";
  @SerializedName(SERIALIZED_NAME_AUTO_EXTEND_TARGETS)
  private List<ProjectUpdateV30AudienceAutoExtendTargets> autoExtendTargets = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_ACCOUNTS = "aweme_fan_accounts";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_ACCOUNTS)
  private List<Long> awemeFanAccounts = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_BEHAVIORS = "aweme_fan_behaviors";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_BEHAVIORS)
  private List<ProjectUpdateV30AudienceAwemeFanBehaviors> awemeFanBehaviors = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_CATEGORIES = "aweme_fan_categories";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_CATEGORIES)
  private List<Long> awemeFanCategories = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_TIME_SCOPE = "aweme_fan_time_scope";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_TIME_SCOPE)
  private ProjectUpdateV30AudienceAwemeFanTimeScope awemeFanTimeScope = null;

  public static final String SERIALIZED_NAME_CARRIER = "carrier";
  @SerializedName(SERIALIZED_NAME_CARRIER)
  private List<ProjectUpdateV30AudienceCarrier> carrier = null;

  public static final String SERIALIZED_NAME_CARRIER_REGION_OPTIMIZE = "carrier_region_optimize";
  @SerializedName(SERIALIZED_NAME_CARRIER_REGION_OPTIMIZE)
  private ProjectUpdateV30AudienceCarrierRegionOptimize carrierRegionOptimize = null;

  public static final String SERIALIZED_NAME_CITY = "city";
  @SerializedName(SERIALIZED_NAME_CITY)
  private List<Long> city = null;

  public static final String SERIALIZED_NAME_CONVERTED_TIME_DURATION = "converted_time_duration";
  @SerializedName(SERIALIZED_NAME_CONVERTED_TIME_DURATION)
  private ProjectUpdateV30AudienceConvertedTimeDuration convertedTimeDuration = null;

  public static final String SERIALIZED_NAME_DEVICE_BRAND = "device_brand";
  @SerializedName(SERIALIZED_NAME_DEVICE_BRAND)
  private List<ProjectUpdateV30AudienceDeviceBrand> deviceBrand = null;

  public static final String SERIALIZED_NAME_DEVICE_TYPE = "device_type";
  @SerializedName(SERIALIZED_NAME_DEVICE_TYPE)
  private List<ProjectUpdateV30AudienceDeviceType> deviceType = null;

  public static final String SERIALIZED_NAME_DISTRICT = "district";
  @SerializedName(SERIALIZED_NAME_DISTRICT)
  private ProjectUpdateV30AudienceDistrict district = null;

  public static final String SERIALIZED_NAME_DPA_CITY = "dpa_city";
  @SerializedName(SERIALIZED_NAME_DPA_CITY)
  private ProjectUpdateV30AudienceDpaCity dpaCity = null;

  public static final String SERIALIZED_NAME_DPA_LBS = "dpa_lbs";
  @SerializedName(SERIALIZED_NAME_DPA_LBS)
  private ProjectUpdateV30AudienceDpaLbs dpaLbs = null;

  public static final String SERIALIZED_NAME_EXCLUDE_FLOW_PACKAGE = "exclude_flow_package";
  @SerializedName(SERIALIZED_NAME_EXCLUDE_FLOW_PACKAGE)
  private List<Long> excludeFlowPackage = null;

  public static final String SERIALIZED_NAME_FILTER_AWEME_ABNORMAL_ACTIVE = "filter_aweme_abnormal_active";
  @SerializedName(SERIALIZED_NAME_FILTER_AWEME_ABNORMAL_ACTIVE)
  private ProjectUpdateV30AudienceFilterAwemeAbnormalActive filterAwemeAbnormalActive = null;

  public static final String SERIALIZED_NAME_FILTER_AWEME_FANS_COUNT = "filter_aweme_fans_count";
  @SerializedName(SERIALIZED_NAME_FILTER_AWEME_FANS_COUNT)
  private ProjectUpdateV30AudienceFilterAwemeFansCount filterAwemeFansCount = null;

  public static final String SERIALIZED_NAME_FILTER_OWN_AWEME_FANS = "filter_own_aweme_fans";
  @SerializedName(SERIALIZED_NAME_FILTER_OWN_AWEME_FANS)
  private ProjectUpdateV30AudienceFilterOwnAwemeFans filterOwnAwemeFans = null;

  public static final String SERIALIZED_NAME_FLOW_PACKAGE = "flow_package";
  @SerializedName(SERIALIZED_NAME_FLOW_PACKAGE)
  private List<Long> flowPackage = null;

  public static final String SERIALIZED_NAME_GENDER = "gender";
  @SerializedName(SERIALIZED_NAME_GENDER)
  private ProjectUpdateV30AudienceGender gender = null;

  public static final String SERIALIZED_NAME_GEOLOCATION = "geolocation";
  @SerializedName(SERIALIZED_NAME_GEOLOCATION)
  private List<ProjectUpdateV30RequestAudienceGeolocationInner> geolocation = null;

  public static final String SERIALIZED_NAME_HIDE_IF_CONVERTED = "hide_if_converted";
  @SerializedName(SERIALIZED_NAME_HIDE_IF_CONVERTED)
  private ProjectUpdateV30AudienceHideIfConverted hideIfConverted = null;

  public static final String SERIALIZED_NAME_HIDE_IF_EXISTS = "hide_if_exists";
  @SerializedName(SERIALIZED_NAME_HIDE_IF_EXISTS)
  private ProjectUpdateV30AudienceHideIfExists hideIfExists = null;

  public static final String SERIALIZED_NAME_INTEREST_ACTION_MODE = "interest_action_mode";
  @SerializedName(SERIALIZED_NAME_INTEREST_ACTION_MODE)
  private ProjectUpdateV30AudienceInterestActionMode interestActionMode = null;

  public static final String SERIALIZED_NAME_INTEREST_CATEGORIES = "interest_categories";
  @SerializedName(SERIALIZED_NAME_INTEREST_CATEGORIES)
  private List<Long> interestCategories = null;

  public static final String SERIALIZED_NAME_INTEREST_WORDS = "interest_words";
  @SerializedName(SERIALIZED_NAME_INTEREST_WORDS)
  private List<Long> interestWords = null;

  public static final String SERIALIZED_NAME_IOS_OSV = "ios_osv";
  @SerializedName(SERIALIZED_NAME_IOS_OSV)
  private ProjectUpdateV30AudienceIosOsv iosOsv = null;

  public static final String SERIALIZED_NAME_LAUNCH_PRICE = "launch_price";
  @SerializedName(SERIALIZED_NAME_LAUNCH_PRICE)
  private List<Long> launchPrice = null;

  public static final String SERIALIZED_NAME_LOCATION_TYPE = "location_type";
  @SerializedName(SERIALIZED_NAME_LOCATION_TYPE)
  private ProjectUpdateV30AudienceLocationType locationType = null;

  public static final String SERIALIZED_NAME_PLATFORM = "platform";
  @SerializedName(SERIALIZED_NAME_PLATFORM)
  private List<ProjectUpdateV30AudiencePlatform> platform = null;

  public static final String SERIALIZED_NAME_REGION_RECOMMEND = "region_recommend";
  @SerializedName(SERIALIZED_NAME_REGION_RECOMMEND)
  private ProjectUpdateV30AudienceRegionRecommend regionRecommend = null;

  public static final String SERIALIZED_NAME_REGION_VERSION = "region_version";
  @SerializedName(SERIALIZED_NAME_REGION_VERSION)
  private String regionVersion = null;

  public static final String SERIALIZED_NAME_RETARGETING_TAGS_EXCLUDE = "retargeting_tags_exclude";
  @SerializedName(SERIALIZED_NAME_RETARGETING_TAGS_EXCLUDE)
  private List<Long> retargetingTagsExclude = null;

  public static final String SERIALIZED_NAME_RETARGETING_TAGS_INCLUDE = "retargeting_tags_include";
  @SerializedName(SERIALIZED_NAME_RETARGETING_TAGS_INCLUDE)
  private List<Long> retargetingTagsInclude = null;

  public static final String SERIALIZED_NAME_SUPERIOR_POPULARITY_TYPE = "superior_popularity_type";
  @SerializedName(SERIALIZED_NAME_SUPERIOR_POPULARITY_TYPE)
  private ProjectUpdateV30AudienceSuperiorPopularityType superiorPopularityType = null;

  public ProjectUpdateV30RequestAudience() {
  }

  public ProjectUpdateV30RequestAudience ac(List<ProjectUpdateV30AudienceAc> ac) {
    
    this.ac = ac;
    return this;
  }

  public ProjectUpdateV30RequestAudience addAcItem(ProjectUpdateV30AudienceAc acItem) {
    if (this.ac == null) {
      this.ac = new ArrayList<>();
    }
    this.ac.add(acItem);
    return this;
  }

   /**
   * 
   * @return ac
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceAc> getAc() {
    return ac;
  }


  public void setAc(List<ProjectUpdateV30AudienceAc> ac) {
    this.ac = ac;
  }


  public ProjectUpdateV30RequestAudience actionCategories(List<Long> actionCategories) {
    
    this.actionCategories = actionCategories;
    return this;
  }

  public ProjectUpdateV30RequestAudience addActionCategoriesItem(Long actionCategoriesItem) {
    if (this.actionCategories == null) {
      this.actionCategories = new ArrayList<>();
    }
    this.actionCategories.add(actionCategoriesItem);
    return this;
  }

   /**
   * 
   * @return actionCategories
  **/
  @javax.annotation.Nullable
  public List<Long> getActionCategories() {
    return actionCategories;
  }


  public void setActionCategories(List<Long> actionCategories) {
    this.actionCategories = actionCategories;
  }


  public ProjectUpdateV30RequestAudience actionDays(Long actionDays) {
    
    this.actionDays = actionDays;
    return this;
  }

   /**
   * 
   * @return actionDays
  **/
  @javax.annotation.Nullable
  public Long getActionDays() {
    return actionDays;
  }


  public void setActionDays(Long actionDays) {
    this.actionDays = actionDays;
  }


  public ProjectUpdateV30RequestAudience actionScene(List<ProjectUpdateV30AudienceActionScene> actionScene) {
    
    this.actionScene = actionScene;
    return this;
  }

  public ProjectUpdateV30RequestAudience addActionSceneItem(ProjectUpdateV30AudienceActionScene actionSceneItem) {
    if (this.actionScene == null) {
      this.actionScene = new ArrayList<>();
    }
    this.actionScene.add(actionSceneItem);
    return this;
  }

   /**
   * 
   * @return actionScene
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceActionScene> getActionScene() {
    return actionScene;
  }


  public void setActionScene(List<ProjectUpdateV30AudienceActionScene> actionScene) {
    this.actionScene = actionScene;
  }


  public ProjectUpdateV30RequestAudience actionWords(List<Long> actionWords) {
    
    this.actionWords = actionWords;
    return this;
  }

  public ProjectUpdateV30RequestAudience addActionWordsItem(Long actionWordsItem) {
    if (this.actionWords == null) {
      this.actionWords = new ArrayList<>();
    }
    this.actionWords.add(actionWordsItem);
    return this;
  }

   /**
   * 
   * @return actionWords
  **/
  @javax.annotation.Nullable
  public List<Long> getActionWords() {
    return actionWords;
  }


  public void setActionWords(List<Long> actionWords) {
    this.actionWords = actionWords;
  }


  public ProjectUpdateV30RequestAudience age(List<String> age) {
    
    this.age = age;
    return this;
  }

  public ProjectUpdateV30RequestAudience addAgeItem(String ageItem) {
    if (this.age == null) {
      this.age = new ArrayList<>();
    }
    this.age.add(ageItem);
    return this;
  }

   /**
   * 
   * @return age
  **/
  @javax.annotation.Nullable
  public List<String> getAge() {
    return age;
  }


  public void setAge(List<String> age) {
    this.age = age;
  }


  public ProjectUpdateV30RequestAudience androidOsv(ProjectUpdateV30AudienceAndroidOsv androidOsv) {
    
    this.androidOsv = androidOsv;
    return this;
  }

   /**
   * Get androidOsv
   * @return androidOsv
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceAndroidOsv getAndroidOsv() {
    return androidOsv;
  }


  public void setAndroidOsv(ProjectUpdateV30AudienceAndroidOsv androidOsv) {
    this.androidOsv = androidOsv;
  }


  public ProjectUpdateV30RequestAudience audiencePackageId(Long audiencePackageId) {
    
    this.audiencePackageId = audiencePackageId;
    return this;
  }

   /**
   * 
   * @return audiencePackageId
  **/
  @javax.annotation.Nullable
  public Long getAudiencePackageId() {
    return audiencePackageId;
  }


  public void setAudiencePackageId(Long audiencePackageId) {
    this.audiencePackageId = audiencePackageId;
  }


  public ProjectUpdateV30RequestAudience autoExtendTargets(List<ProjectUpdateV30AudienceAutoExtendTargets> autoExtendTargets) {
    
    this.autoExtendTargets = autoExtendTargets;
    return this;
  }

  public ProjectUpdateV30RequestAudience addAutoExtendTargetsItem(ProjectUpdateV30AudienceAutoExtendTargets autoExtendTargetsItem) {
    if (this.autoExtendTargets == null) {
      this.autoExtendTargets = new ArrayList<>();
    }
    this.autoExtendTargets.add(autoExtendTargetsItem);
    return this;
  }

   /**
   * 
   * @return autoExtendTargets
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceAutoExtendTargets> getAutoExtendTargets() {
    return autoExtendTargets;
  }


  public void setAutoExtendTargets(List<ProjectUpdateV30AudienceAutoExtendTargets> autoExtendTargets) {
    this.autoExtendTargets = autoExtendTargets;
  }


  public ProjectUpdateV30RequestAudience awemeFanAccounts(List<Long> awemeFanAccounts) {
    
    this.awemeFanAccounts = awemeFanAccounts;
    return this;
  }

  public ProjectUpdateV30RequestAudience addAwemeFanAccountsItem(Long awemeFanAccountsItem) {
    if (this.awemeFanAccounts == null) {
      this.awemeFanAccounts = new ArrayList<>();
    }
    this.awemeFanAccounts.add(awemeFanAccountsItem);
    return this;
  }

   /**
   * 
   * @return awemeFanAccounts
  **/
  @javax.annotation.Nullable
  public List<Long> getAwemeFanAccounts() {
    return awemeFanAccounts;
  }


  public void setAwemeFanAccounts(List<Long> awemeFanAccounts) {
    this.awemeFanAccounts = awemeFanAccounts;
  }


  public ProjectUpdateV30RequestAudience awemeFanBehaviors(List<ProjectUpdateV30AudienceAwemeFanBehaviors> awemeFanBehaviors) {
    
    this.awemeFanBehaviors = awemeFanBehaviors;
    return this;
  }

  public ProjectUpdateV30RequestAudience addAwemeFanBehaviorsItem(ProjectUpdateV30AudienceAwemeFanBehaviors awemeFanBehaviorsItem) {
    if (this.awemeFanBehaviors == null) {
      this.awemeFanBehaviors = new ArrayList<>();
    }
    this.awemeFanBehaviors.add(awemeFanBehaviorsItem);
    return this;
  }

   /**
   * 
   * @return awemeFanBehaviors
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceAwemeFanBehaviors> getAwemeFanBehaviors() {
    return awemeFanBehaviors;
  }


  public void setAwemeFanBehaviors(List<ProjectUpdateV30AudienceAwemeFanBehaviors> awemeFanBehaviors) {
    this.awemeFanBehaviors = awemeFanBehaviors;
  }


  public ProjectUpdateV30RequestAudience awemeFanCategories(List<Long> awemeFanCategories) {
    
    this.awemeFanCategories = awemeFanCategories;
    return this;
  }

  public ProjectUpdateV30RequestAudience addAwemeFanCategoriesItem(Long awemeFanCategoriesItem) {
    if (this.awemeFanCategories == null) {
      this.awemeFanCategories = new ArrayList<>();
    }
    this.awemeFanCategories.add(awemeFanCategoriesItem);
    return this;
  }

   /**
   * 
   * @return awemeFanCategories
  **/
  @javax.annotation.Nullable
  public List<Long> getAwemeFanCategories() {
    return awemeFanCategories;
  }


  public void setAwemeFanCategories(List<Long> awemeFanCategories) {
    this.awemeFanCategories = awemeFanCategories;
  }


  public ProjectUpdateV30RequestAudience awemeFanTimeScope(ProjectUpdateV30AudienceAwemeFanTimeScope awemeFanTimeScope) {
    
    this.awemeFanTimeScope = awemeFanTimeScope;
    return this;
  }

   /**
   * Get awemeFanTimeScope
   * @return awemeFanTimeScope
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceAwemeFanTimeScope getAwemeFanTimeScope() {
    return awemeFanTimeScope;
  }


  public void setAwemeFanTimeScope(ProjectUpdateV30AudienceAwemeFanTimeScope awemeFanTimeScope) {
    this.awemeFanTimeScope = awemeFanTimeScope;
  }


  public ProjectUpdateV30RequestAudience carrier(List<ProjectUpdateV30AudienceCarrier> carrier) {
    
    this.carrier = carrier;
    return this;
  }

  public ProjectUpdateV30RequestAudience addCarrierItem(ProjectUpdateV30AudienceCarrier carrierItem) {
    if (this.carrier == null) {
      this.carrier = new ArrayList<>();
    }
    this.carrier.add(carrierItem);
    return this;
  }

   /**
   * 
   * @return carrier
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceCarrier> getCarrier() {
    return carrier;
  }


  public void setCarrier(List<ProjectUpdateV30AudienceCarrier> carrier) {
    this.carrier = carrier;
  }


  public ProjectUpdateV30RequestAudience carrierRegionOptimize(ProjectUpdateV30AudienceCarrierRegionOptimize carrierRegionOptimize) {
    
    this.carrierRegionOptimize = carrierRegionOptimize;
    return this;
  }

   /**
   * Get carrierRegionOptimize
   * @return carrierRegionOptimize
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceCarrierRegionOptimize getCarrierRegionOptimize() {
    return carrierRegionOptimize;
  }


  public void setCarrierRegionOptimize(ProjectUpdateV30AudienceCarrierRegionOptimize carrierRegionOptimize) {
    this.carrierRegionOptimize = carrierRegionOptimize;
  }


  public ProjectUpdateV30RequestAudience city(List<Long> city) {
    
    this.city = city;
    return this;
  }

  public ProjectUpdateV30RequestAudience addCityItem(Long cityItem) {
    if (this.city == null) {
      this.city = new ArrayList<>();
    }
    this.city.add(cityItem);
    return this;
  }

   /**
   * 
   * @return city
  **/
  @javax.annotation.Nullable
  public List<Long> getCity() {
    return city;
  }


  public void setCity(List<Long> city) {
    this.city = city;
  }


  public ProjectUpdateV30RequestAudience convertedTimeDuration(ProjectUpdateV30AudienceConvertedTimeDuration convertedTimeDuration) {
    
    this.convertedTimeDuration = convertedTimeDuration;
    return this;
  }

   /**
   * Get convertedTimeDuration
   * @return convertedTimeDuration
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceConvertedTimeDuration getConvertedTimeDuration() {
    return convertedTimeDuration;
  }


  public void setConvertedTimeDuration(ProjectUpdateV30AudienceConvertedTimeDuration convertedTimeDuration) {
    this.convertedTimeDuration = convertedTimeDuration;
  }


  public ProjectUpdateV30RequestAudience deviceBrand(List<ProjectUpdateV30AudienceDeviceBrand> deviceBrand) {
    
    this.deviceBrand = deviceBrand;
    return this;
  }

  public ProjectUpdateV30RequestAudience addDeviceBrandItem(ProjectUpdateV30AudienceDeviceBrand deviceBrandItem) {
    if (this.deviceBrand == null) {
      this.deviceBrand = new ArrayList<>();
    }
    this.deviceBrand.add(deviceBrandItem);
    return this;
  }

   /**
   * 
   * @return deviceBrand
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceDeviceBrand> getDeviceBrand() {
    return deviceBrand;
  }


  public void setDeviceBrand(List<ProjectUpdateV30AudienceDeviceBrand> deviceBrand) {
    this.deviceBrand = deviceBrand;
  }


  public ProjectUpdateV30RequestAudience deviceType(List<ProjectUpdateV30AudienceDeviceType> deviceType) {
    
    this.deviceType = deviceType;
    return this;
  }

  public ProjectUpdateV30RequestAudience addDeviceTypeItem(ProjectUpdateV30AudienceDeviceType deviceTypeItem) {
    if (this.deviceType == null) {
      this.deviceType = new ArrayList<>();
    }
    this.deviceType.add(deviceTypeItem);
    return this;
  }

   /**
   * 
   * @return deviceType
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudienceDeviceType> getDeviceType() {
    return deviceType;
  }


  public void setDeviceType(List<ProjectUpdateV30AudienceDeviceType> deviceType) {
    this.deviceType = deviceType;
  }


  public ProjectUpdateV30RequestAudience district(ProjectUpdateV30AudienceDistrict district) {
    
    this.district = district;
    return this;
  }

   /**
   * Get district
   * @return district
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceDistrict getDistrict() {
    return district;
  }


  public void setDistrict(ProjectUpdateV30AudienceDistrict district) {
    this.district = district;
  }


  public ProjectUpdateV30RequestAudience dpaCity(ProjectUpdateV30AudienceDpaCity dpaCity) {
    
    this.dpaCity = dpaCity;
    return this;
  }

   /**
   * Get dpaCity
   * @return dpaCity
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceDpaCity getDpaCity() {
    return dpaCity;
  }


  public void setDpaCity(ProjectUpdateV30AudienceDpaCity dpaCity) {
    this.dpaCity = dpaCity;
  }


  public ProjectUpdateV30RequestAudience dpaLbs(ProjectUpdateV30AudienceDpaLbs dpaLbs) {
    
    this.dpaLbs = dpaLbs;
    return this;
  }

   /**
   * Get dpaLbs
   * @return dpaLbs
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceDpaLbs getDpaLbs() {
    return dpaLbs;
  }


  public void setDpaLbs(ProjectUpdateV30AudienceDpaLbs dpaLbs) {
    this.dpaLbs = dpaLbs;
  }


  public ProjectUpdateV30RequestAudience excludeFlowPackage(List<Long> excludeFlowPackage) {
    
    this.excludeFlowPackage = excludeFlowPackage;
    return this;
  }

  public ProjectUpdateV30RequestAudience addExcludeFlowPackageItem(Long excludeFlowPackageItem) {
    if (this.excludeFlowPackage == null) {
      this.excludeFlowPackage = new ArrayList<>();
    }
    this.excludeFlowPackage.add(excludeFlowPackageItem);
    return this;
  }

   /**
   * 
   * @return excludeFlowPackage
  **/
  @javax.annotation.Nullable
  public List<Long> getExcludeFlowPackage() {
    return excludeFlowPackage;
  }


  public void setExcludeFlowPackage(List<Long> excludeFlowPackage) {
    this.excludeFlowPackage = excludeFlowPackage;
  }


  public ProjectUpdateV30RequestAudience filterAwemeAbnormalActive(ProjectUpdateV30AudienceFilterAwemeAbnormalActive filterAwemeAbnormalActive) {
    
    this.filterAwemeAbnormalActive = filterAwemeAbnormalActive;
    return this;
  }

   /**
   * Get filterAwemeAbnormalActive
   * @return filterAwemeAbnormalActive
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceFilterAwemeAbnormalActive getFilterAwemeAbnormalActive() {
    return filterAwemeAbnormalActive;
  }


  public void setFilterAwemeAbnormalActive(ProjectUpdateV30AudienceFilterAwemeAbnormalActive filterAwemeAbnormalActive) {
    this.filterAwemeAbnormalActive = filterAwemeAbnormalActive;
  }


  public ProjectUpdateV30RequestAudience filterAwemeFansCount(ProjectUpdateV30AudienceFilterAwemeFansCount filterAwemeFansCount) {
    
    this.filterAwemeFansCount = filterAwemeFansCount;
    return this;
  }

   /**
   * Get filterAwemeFansCount
   * @return filterAwemeFansCount
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceFilterAwemeFansCount getFilterAwemeFansCount() {
    return filterAwemeFansCount;
  }


  public void setFilterAwemeFansCount(ProjectUpdateV30AudienceFilterAwemeFansCount filterAwemeFansCount) {
    this.filterAwemeFansCount = filterAwemeFansCount;
  }


  public ProjectUpdateV30RequestAudience filterOwnAwemeFans(ProjectUpdateV30AudienceFilterOwnAwemeFans filterOwnAwemeFans) {
    
    this.filterOwnAwemeFans = filterOwnAwemeFans;
    return this;
  }

   /**
   * Get filterOwnAwemeFans
   * @return filterOwnAwemeFans
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceFilterOwnAwemeFans getFilterOwnAwemeFans() {
    return filterOwnAwemeFans;
  }


  public void setFilterOwnAwemeFans(ProjectUpdateV30AudienceFilterOwnAwemeFans filterOwnAwemeFans) {
    this.filterOwnAwemeFans = filterOwnAwemeFans;
  }


  public ProjectUpdateV30RequestAudience flowPackage(List<Long> flowPackage) {
    
    this.flowPackage = flowPackage;
    return this;
  }

  public ProjectUpdateV30RequestAudience addFlowPackageItem(Long flowPackageItem) {
    if (this.flowPackage == null) {
      this.flowPackage = new ArrayList<>();
    }
    this.flowPackage.add(flowPackageItem);
    return this;
  }

   /**
   * 
   * @return flowPackage
  **/
  @javax.annotation.Nullable
  public List<Long> getFlowPackage() {
    return flowPackage;
  }


  public void setFlowPackage(List<Long> flowPackage) {
    this.flowPackage = flowPackage;
  }


  public ProjectUpdateV30RequestAudience gender(ProjectUpdateV30AudienceGender gender) {
    
    this.gender = gender;
    return this;
  }

   /**
   * Get gender
   * @return gender
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceGender getGender() {
    return gender;
  }


  public void setGender(ProjectUpdateV30AudienceGender gender) {
    this.gender = gender;
  }


  public ProjectUpdateV30RequestAudience geolocation(List<ProjectUpdateV30RequestAudienceGeolocationInner> geolocation) {
    
    this.geolocation = geolocation;
    return this;
  }

  public ProjectUpdateV30RequestAudience addGeolocationItem(ProjectUpdateV30RequestAudienceGeolocationInner geolocationItem) {
    if (this.geolocation == null) {
      this.geolocation = new ArrayList<>();
    }
    this.geolocation.add(geolocationItem);
    return this;
  }

   /**
   * 
   * @return geolocation
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30RequestAudienceGeolocationInner> getGeolocation() {
    return geolocation;
  }


  public void setGeolocation(List<ProjectUpdateV30RequestAudienceGeolocationInner> geolocation) {
    this.geolocation = geolocation;
  }


  public ProjectUpdateV30RequestAudience hideIfConverted(ProjectUpdateV30AudienceHideIfConverted hideIfConverted) {
    
    this.hideIfConverted = hideIfConverted;
    return this;
  }

   /**
   * Get hideIfConverted
   * @return hideIfConverted
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceHideIfConverted getHideIfConverted() {
    return hideIfConverted;
  }


  public void setHideIfConverted(ProjectUpdateV30AudienceHideIfConverted hideIfConverted) {
    this.hideIfConverted = hideIfConverted;
  }


  public ProjectUpdateV30RequestAudience hideIfExists(ProjectUpdateV30AudienceHideIfExists hideIfExists) {
    
    this.hideIfExists = hideIfExists;
    return this;
  }

   /**
   * Get hideIfExists
   * @return hideIfExists
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceHideIfExists getHideIfExists() {
    return hideIfExists;
  }


  public void setHideIfExists(ProjectUpdateV30AudienceHideIfExists hideIfExists) {
    this.hideIfExists = hideIfExists;
  }


  public ProjectUpdateV30RequestAudience interestActionMode(ProjectUpdateV30AudienceInterestActionMode interestActionMode) {
    
    this.interestActionMode = interestActionMode;
    return this;
  }

   /**
   * Get interestActionMode
   * @return interestActionMode
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceInterestActionMode getInterestActionMode() {
    return interestActionMode;
  }


  public void setInterestActionMode(ProjectUpdateV30AudienceInterestActionMode interestActionMode) {
    this.interestActionMode = interestActionMode;
  }


  public ProjectUpdateV30RequestAudience interestCategories(List<Long> interestCategories) {
    
    this.interestCategories = interestCategories;
    return this;
  }

  public ProjectUpdateV30RequestAudience addInterestCategoriesItem(Long interestCategoriesItem) {
    if (this.interestCategories == null) {
      this.interestCategories = new ArrayList<>();
    }
    this.interestCategories.add(interestCategoriesItem);
    return this;
  }

   /**
   * 
   * @return interestCategories
  **/
  @javax.annotation.Nullable
  public List<Long> getInterestCategories() {
    return interestCategories;
  }


  public void setInterestCategories(List<Long> interestCategories) {
    this.interestCategories = interestCategories;
  }


  public ProjectUpdateV30RequestAudience interestWords(List<Long> interestWords) {
    
    this.interestWords = interestWords;
    return this;
  }

  public ProjectUpdateV30RequestAudience addInterestWordsItem(Long interestWordsItem) {
    if (this.interestWords == null) {
      this.interestWords = new ArrayList<>();
    }
    this.interestWords.add(interestWordsItem);
    return this;
  }

   /**
   * 
   * @return interestWords
  **/
  @javax.annotation.Nullable
  public List<Long> getInterestWords() {
    return interestWords;
  }


  public void setInterestWords(List<Long> interestWords) {
    this.interestWords = interestWords;
  }


  public ProjectUpdateV30RequestAudience iosOsv(ProjectUpdateV30AudienceIosOsv iosOsv) {
    
    this.iosOsv = iosOsv;
    return this;
  }

   /**
   * Get iosOsv
   * @return iosOsv
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceIosOsv getIosOsv() {
    return iosOsv;
  }


  public void setIosOsv(ProjectUpdateV30AudienceIosOsv iosOsv) {
    this.iosOsv = iosOsv;
  }


  public ProjectUpdateV30RequestAudience launchPrice(List<Long> launchPrice) {
    
    this.launchPrice = launchPrice;
    return this;
  }

  public ProjectUpdateV30RequestAudience addLaunchPriceItem(Long launchPriceItem) {
    if (this.launchPrice == null) {
      this.launchPrice = new ArrayList<>();
    }
    this.launchPrice.add(launchPriceItem);
    return this;
  }

   /**
   * 
   * @return launchPrice
  **/
  @javax.annotation.Nullable
  public List<Long> getLaunchPrice() {
    return launchPrice;
  }


  public void setLaunchPrice(List<Long> launchPrice) {
    this.launchPrice = launchPrice;
  }


  public ProjectUpdateV30RequestAudience locationType(ProjectUpdateV30AudienceLocationType locationType) {
    
    this.locationType = locationType;
    return this;
  }

   /**
   * Get locationType
   * @return locationType
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceLocationType getLocationType() {
    return locationType;
  }


  public void setLocationType(ProjectUpdateV30AudienceLocationType locationType) {
    this.locationType = locationType;
  }


  public ProjectUpdateV30RequestAudience platform(List<ProjectUpdateV30AudiencePlatform> platform) {
    
    this.platform = platform;
    return this;
  }

  public ProjectUpdateV30RequestAudience addPlatformItem(ProjectUpdateV30AudiencePlatform platformItem) {
    if (this.platform == null) {
      this.platform = new ArrayList<>();
    }
    this.platform.add(platformItem);
    return this;
  }

   /**
   * 
   * @return platform
  **/
  @javax.annotation.Nullable
  public List<ProjectUpdateV30AudiencePlatform> getPlatform() {
    return platform;
  }


  public void setPlatform(List<ProjectUpdateV30AudiencePlatform> platform) {
    this.platform = platform;
  }


  public ProjectUpdateV30RequestAudience regionRecommend(ProjectUpdateV30AudienceRegionRecommend regionRecommend) {
    
    this.regionRecommend = regionRecommend;
    return this;
  }

   /**
   * Get regionRecommend
   * @return regionRecommend
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceRegionRecommend getRegionRecommend() {
    return regionRecommend;
  }


  public void setRegionRecommend(ProjectUpdateV30AudienceRegionRecommend regionRecommend) {
    this.regionRecommend = regionRecommend;
  }


  public ProjectUpdateV30RequestAudience regionVersion(String regionVersion) {
    
    this.regionVersion = regionVersion;
    return this;
  }

   /**
   * 
   * @return regionVersion
  **/
  @javax.annotation.Nullable
  public String getRegionVersion() {
    return regionVersion;
  }


  public void setRegionVersion(String regionVersion) {
    this.regionVersion = regionVersion;
  }


  public ProjectUpdateV30RequestAudience retargetingTagsExclude(List<Long> retargetingTagsExclude) {
    
    this.retargetingTagsExclude = retargetingTagsExclude;
    return this;
  }

  public ProjectUpdateV30RequestAudience addRetargetingTagsExcludeItem(Long retargetingTagsExcludeItem) {
    if (this.retargetingTagsExclude == null) {
      this.retargetingTagsExclude = new ArrayList<>();
    }
    this.retargetingTagsExclude.add(retargetingTagsExcludeItem);
    return this;
  }

   /**
   * 
   * @return retargetingTagsExclude
  **/
  @javax.annotation.Nullable
  public List<Long> getRetargetingTagsExclude() {
    return retargetingTagsExclude;
  }


  public void setRetargetingTagsExclude(List<Long> retargetingTagsExclude) {
    this.retargetingTagsExclude = retargetingTagsExclude;
  }


  public ProjectUpdateV30RequestAudience retargetingTagsInclude(List<Long> retargetingTagsInclude) {
    
    this.retargetingTagsInclude = retargetingTagsInclude;
    return this;
  }

  public ProjectUpdateV30RequestAudience addRetargetingTagsIncludeItem(Long retargetingTagsIncludeItem) {
    if (this.retargetingTagsInclude == null) {
      this.retargetingTagsInclude = new ArrayList<>();
    }
    this.retargetingTagsInclude.add(retargetingTagsIncludeItem);
    return this;
  }

   /**
   * 
   * @return retargetingTagsInclude
  **/
  @javax.annotation.Nullable
  public List<Long> getRetargetingTagsInclude() {
    return retargetingTagsInclude;
  }


  public void setRetargetingTagsInclude(List<Long> retargetingTagsInclude) {
    this.retargetingTagsInclude = retargetingTagsInclude;
  }


  public ProjectUpdateV30RequestAudience superiorPopularityType(ProjectUpdateV30AudienceSuperiorPopularityType superiorPopularityType) {
    
    this.superiorPopularityType = superiorPopularityType;
    return this;
  }

   /**
   * Get superiorPopularityType
   * @return superiorPopularityType
  **/
  @javax.annotation.Nullable
  public ProjectUpdateV30AudienceSuperiorPopularityType getSuperiorPopularityType() {
    return superiorPopularityType;
  }


  public void setSuperiorPopularityType(ProjectUpdateV30AudienceSuperiorPopularityType superiorPopularityType) {
    this.superiorPopularityType = superiorPopularityType;
  }



  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ProjectUpdateV30RequestAudience projectUpdateV30RequestAudience = (ProjectUpdateV30RequestAudience) o;
    return Objects.equals(this.ac, projectUpdateV30RequestAudience.ac) &&
        Objects.equals(this.actionCategories, projectUpdateV30RequestAudience.actionCategories) &&
        Objects.equals(this.actionDays, projectUpdateV30RequestAudience.actionDays) &&
        Objects.equals(this.actionScene, projectUpdateV30RequestAudience.actionScene) &&
        Objects.equals(this.actionWords, projectUpdateV30RequestAudience.actionWords) &&
        Objects.equals(this.age, projectUpdateV30RequestAudience.age) &&
        Objects.equals(this.androidOsv, projectUpdateV30RequestAudience.androidOsv) &&
        Objects.equals(this.audiencePackageId, projectUpdateV30RequestAudience.audiencePackageId) &&
        Objects.equals(this.autoExtendTargets, projectUpdateV30RequestAudience.autoExtendTargets) &&
        Objects.equals(this.awemeFanAccounts, projectUpdateV30RequestAudience.awemeFanAccounts) &&
        Objects.equals(this.awemeFanBehaviors, projectUpdateV30RequestAudience.awemeFanBehaviors) &&
        Objects.equals(this.awemeFanCategories, projectUpdateV30RequestAudience.awemeFanCategories) &&
        Objects.equals(this.awemeFanTimeScope, projectUpdateV30RequestAudience.awemeFanTimeScope) &&
        Objects.equals(this.carrier, projectUpdateV30RequestAudience.carrier) &&
        Objects.equals(this.carrierRegionOptimize, projectUpdateV30RequestAudience.carrierRegionOptimize) &&
        Objects.equals(this.city, projectUpdateV30RequestAudience.city) &&
        Objects.equals(this.convertedTimeDuration, projectUpdateV30RequestAudience.convertedTimeDuration) &&
        Objects.equals(this.deviceBrand, projectUpdateV30RequestAudience.deviceBrand) &&
        Objects.equals(this.deviceType, projectUpdateV30RequestAudience.deviceType) &&
        Objects.equals(this.district, projectUpdateV30RequestAudience.district) &&
        Objects.equals(this.dpaCity, projectUpdateV30RequestAudience.dpaCity) &&
        Objects.equals(this.dpaLbs, projectUpdateV30RequestAudience.dpaLbs) &&
        Objects.equals(this.excludeFlowPackage, projectUpdateV30RequestAudience.excludeFlowPackage) &&
        Objects.equals(this.filterAwemeAbnormalActive, projectUpdateV30RequestAudience.filterAwemeAbnormalActive) &&
        Objects.equals(this.filterAwemeFansCount, projectUpdateV30RequestAudience.filterAwemeFansCount) &&
        Objects.equals(this.filterOwnAwemeFans, projectUpdateV30RequestAudience.filterOwnAwemeFans) &&
        Objects.equals(this.flowPackage, projectUpdateV30RequestAudience.flowPackage) &&
        Objects.equals(this.gender, projectUpdateV30RequestAudience.gender) &&
        Objects.equals(this.geolocation, projectUpdateV30RequestAudience.geolocation) &&
        Objects.equals(this.hideIfConverted, projectUpdateV30RequestAudience.hideIfConverted) &&
        Objects.equals(this.hideIfExists, projectUpdateV30RequestAudience.hideIfExists) &&
        Objects.equals(this.interestActionMode, projectUpdateV30RequestAudience.interestActionMode) &&
        Objects.equals(this.interestCategories, projectUpdateV30RequestAudience.interestCategories) &&
        Objects.equals(this.interestWords, projectUpdateV30RequestAudience.interestWords) &&
        Objects.equals(this.iosOsv, projectUpdateV30RequestAudience.iosOsv) &&
        Objects.equals(this.launchPrice, projectUpdateV30RequestAudience.launchPrice) &&
        Objects.equals(this.locationType, projectUpdateV30RequestAudience.locationType) &&
        Objects.equals(this.platform, projectUpdateV30RequestAudience.platform) &&
        Objects.equals(this.regionRecommend, projectUpdateV30RequestAudience.regionRecommend) &&
        Objects.equals(this.regionVersion, projectUpdateV30RequestAudience.regionVersion) &&
        Objects.equals(this.retargetingTagsExclude, projectUpdateV30RequestAudience.retargetingTagsExclude) &&
        Objects.equals(this.retargetingTagsInclude, projectUpdateV30RequestAudience.retargetingTagsInclude) &&
        Objects.equals(this.superiorPopularityType, projectUpdateV30RequestAudience.superiorPopularityType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(ac, actionCategories, actionDays, actionScene, actionWords, age, androidOsv, audiencePackageId, autoExtendTargets, awemeFanAccounts, awemeFanBehaviors, awemeFanCategories, awemeFanTimeScope, carrier, carrierRegionOptimize, city, convertedTimeDuration, deviceBrand, deviceType, district, dpaCity, dpaLbs, excludeFlowPackage, filterAwemeAbnormalActive, filterAwemeFansCount, filterOwnAwemeFans, flowPackage, gender, geolocation, hideIfConverted, hideIfExists, interestActionMode, interestCategories, interestWords, iosOsv, launchPrice, locationType, platform, regionRecommend, regionVersion, retargetingTagsExclude, retargetingTagsInclude, superiorPopularityType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ProjectUpdateV30RequestAudience {\n");
    sb.append("    ac: ").append(toIndentedString(ac)).append("\n");
    sb.append("    actionCategories: ").append(toIndentedString(actionCategories)).append("\n");
    sb.append("    actionDays: ").append(toIndentedString(actionDays)).append("\n");
    sb.append("    actionScene: ").append(toIndentedString(actionScene)).append("\n");
    sb.append("    actionWords: ").append(toIndentedString(actionWords)).append("\n");
    sb.append("    age: ").append(toIndentedString(age)).append("\n");
    sb.append("    androidOsv: ").append(toIndentedString(androidOsv)).append("\n");
    sb.append("    audiencePackageId: ").append(toIndentedString(audiencePackageId)).append("\n");
    sb.append("    autoExtendTargets: ").append(toIndentedString(autoExtendTargets)).append("\n");
    sb.append("    awemeFanAccounts: ").append(toIndentedString(awemeFanAccounts)).append("\n");
    sb.append("    awemeFanBehaviors: ").append(toIndentedString(awemeFanBehaviors)).append("\n");
    sb.append("    awemeFanCategories: ").append(toIndentedString(awemeFanCategories)).append("\n");
    sb.append("    awemeFanTimeScope: ").append(toIndentedString(awemeFanTimeScope)).append("\n");
    sb.append("    carrier: ").append(toIndentedString(carrier)).append("\n");
    sb.append("    carrierRegionOptimize: ").append(toIndentedString(carrierRegionOptimize)).append("\n");
    sb.append("    city: ").append(toIndentedString(city)).append("\n");
    sb.append("    convertedTimeDuration: ").append(toIndentedString(convertedTimeDuration)).append("\n");
    sb.append("    deviceBrand: ").append(toIndentedString(deviceBrand)).append("\n");
    sb.append("    deviceType: ").append(toIndentedString(deviceType)).append("\n");
    sb.append("    district: ").append(toIndentedString(district)).append("\n");
    sb.append("    dpaCity: ").append(toIndentedString(dpaCity)).append("\n");
    sb.append("    dpaLbs: ").append(toIndentedString(dpaLbs)).append("\n");
    sb.append("    excludeFlowPackage: ").append(toIndentedString(excludeFlowPackage)).append("\n");
    sb.append("    filterAwemeAbnormalActive: ").append(toIndentedString(filterAwemeAbnormalActive)).append("\n");
    sb.append("    filterAwemeFansCount: ").append(toIndentedString(filterAwemeFansCount)).append("\n");
    sb.append("    filterOwnAwemeFans: ").append(toIndentedString(filterOwnAwemeFans)).append("\n");
    sb.append("    flowPackage: ").append(toIndentedString(flowPackage)).append("\n");
    sb.append("    gender: ").append(toIndentedString(gender)).append("\n");
    sb.append("    geolocation: ").append(toIndentedString(geolocation)).append("\n");
    sb.append("    hideIfConverted: ").append(toIndentedString(hideIfConverted)).append("\n");
    sb.append("    hideIfExists: ").append(toIndentedString(hideIfExists)).append("\n");
    sb.append("    interestActionMode: ").append(toIndentedString(interestActionMode)).append("\n");
    sb.append("    interestCategories: ").append(toIndentedString(interestCategories)).append("\n");
    sb.append("    interestWords: ").append(toIndentedString(interestWords)).append("\n");
    sb.append("    iosOsv: ").append(toIndentedString(iosOsv)).append("\n");
    sb.append("    launchPrice: ").append(toIndentedString(launchPrice)).append("\n");
    sb.append("    locationType: ").append(toIndentedString(locationType)).append("\n");
    sb.append("    platform: ").append(toIndentedString(platform)).append("\n");
    sb.append("    regionRecommend: ").append(toIndentedString(regionRecommend)).append("\n");
    sb.append("    regionVersion: ").append(toIndentedString(regionVersion)).append("\n");
    sb.append("    retargetingTagsExclude: ").append(toIndentedString(retargetingTagsExclude)).append("\n");
    sb.append("    retargetingTagsInclude: ").append(toIndentedString(retargetingTagsInclude)).append("\n");
    sb.append("    superiorPopularityType: ").append(toIndentedString(superiorPopularityType)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet<String> openapiFields;
  public static HashSet<String> openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet<String>();
    openapiFields.add("ac");
    openapiFields.add("action_categories");
    openapiFields.add("action_days");
    openapiFields.add("action_scene");
    openapiFields.add("action_words");
    openapiFields.add("age");
    openapiFields.add("android_osv");
    openapiFields.add("audience_package_id");
    openapiFields.add("auto_extend_targets");
    openapiFields.add("aweme_fan_accounts");
    openapiFields.add("aweme_fan_behaviors");
    openapiFields.add("aweme_fan_categories");
    openapiFields.add("aweme_fan_time_scope");
    openapiFields.add("carrier");
    openapiFields.add("carrier_region_optimize");
    openapiFields.add("city");
    openapiFields.add("converted_time_duration");
    openapiFields.add("device_brand");
    openapiFields.add("device_type");
    openapiFields.add("district");
    openapiFields.add("dpa_city");
    openapiFields.add("dpa_lbs");
    openapiFields.add("exclude_flow_package");
    openapiFields.add("filter_aweme_abnormal_active");
    openapiFields.add("filter_aweme_fans_count");
    openapiFields.add("filter_own_aweme_fans");
    openapiFields.add("flow_package");
    openapiFields.add("gender");
    openapiFields.add("geolocation");
    openapiFields.add("hide_if_converted");
    openapiFields.add("hide_if_exists");
    openapiFields.add("interest_action_mode");
    openapiFields.add("interest_categories");
    openapiFields.add("interest_words");
    openapiFields.add("ios_osv");
    openapiFields.add("launch_price");
    openapiFields.add("location_type");
    openapiFields.add("platform");
    openapiFields.add("region_recommend");
    openapiFields.add("region_version");
    openapiFields.add("retargeting_tags_exclude");
    openapiFields.add("retargeting_tags_include");
    openapiFields.add("superior_popularity_type");

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet<String>();
  }


  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!ProjectUpdateV30RequestAudience.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'ProjectUpdateV30RequestAudience' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<ProjectUpdateV30RequestAudience> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(ProjectUpdateV30RequestAudience.class));

       return (TypeAdapter<T>) new TypeAdapter<ProjectUpdateV30RequestAudience>() {
           @Override
           public void write(JsonWriter out, ProjectUpdateV30RequestAudience value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             elementAdapter.write(out, obj);
           }

           @Override
           public ProjectUpdateV30RequestAudience read(JsonReader in) throws IOException {
             JsonElement jsonElement = elementAdapter.read(in);
             return thisAdapter.fromJsonTree(jsonElement);
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of ProjectUpdateV30RequestAudience given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of ProjectUpdateV30RequestAudience
  * @throws IOException if the JSON string is invalid with respect to ProjectUpdateV30RequestAudience
  */
  public static ProjectUpdateV30RequestAudience fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, ProjectUpdateV30RequestAudience.class);
  }

 /**
  * Convert an instance of ProjectUpdateV30RequestAudience to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

